// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: cube.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_cube_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_cube_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3012000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3012004 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/inlined_string_field.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include "messages.pb.h"
#include "response_status.pb.h"

// Begin code inserted by Anki plugin.
#include "cubeTags.pb.h"
// End code inserted by Anki plugin.

// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_cube_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_cube_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[32]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_cube_2eproto;
namespace Anki {
namespace Vector {
namespace external_interface {
class ConnectCubeRequest;
class ConnectCubeRequestDefaultTypeInternal;
extern ConnectCubeRequestDefaultTypeInternal _ConnectCubeRequest_default_instance_;
class ConnectCubeResponse;
class ConnectCubeResponseDefaultTypeInternal;
extern ConnectCubeResponseDefaultTypeInternal _ConnectCubeResponse_default_instance_;
class CreateFixedCustomObjectRequest;
class CreateFixedCustomObjectRequestDefaultTypeInternal;
extern CreateFixedCustomObjectRequestDefaultTypeInternal _CreateFixedCustomObjectRequest_default_instance_;
class CreateFixedCustomObjectResponse;
class CreateFixedCustomObjectResponseDefaultTypeInternal;
extern CreateFixedCustomObjectResponseDefaultTypeInternal _CreateFixedCustomObjectResponse_default_instance_;
class CubeConnectionLost;
class CubeConnectionLostDefaultTypeInternal;
extern CubeConnectionLostDefaultTypeInternal _CubeConnectionLost_default_instance_;
class CubesAvailableRequest;
class CubesAvailableRequestDefaultTypeInternal;
extern CubesAvailableRequestDefaultTypeInternal _CubesAvailableRequest_default_instance_;
class CubesAvailableResponse;
class CubesAvailableResponseDefaultTypeInternal;
extern CubesAvailableResponseDefaultTypeInternal _CubesAvailableResponse_default_instance_;
class CustomBoxDefinition;
class CustomBoxDefinitionDefaultTypeInternal;
extern CustomBoxDefinitionDefaultTypeInternal _CustomBoxDefinition_default_instance_;
class CustomCubeDefinition;
class CustomCubeDefinitionDefaultTypeInternal;
extern CustomCubeDefinitionDefaultTypeInternal _CustomCubeDefinition_default_instance_;
class CustomWallDefinition;
class CustomWallDefinitionDefaultTypeInternal;
extern CustomWallDefinitionDefaultTypeInternal _CustomWallDefinition_default_instance_;
class DefineCustomObjectRequest;
class DefineCustomObjectRequestDefaultTypeInternal;
extern DefineCustomObjectRequestDefaultTypeInternal _DefineCustomObjectRequest_default_instance_;
class DefineCustomObjectResponse;
class DefineCustomObjectResponseDefaultTypeInternal;
extern DefineCustomObjectResponseDefaultTypeInternal _DefineCustomObjectResponse_default_instance_;
class DeleteCustomObjectsRequest;
class DeleteCustomObjectsRequestDefaultTypeInternal;
extern DeleteCustomObjectsRequestDefaultTypeInternal _DeleteCustomObjectsRequest_default_instance_;
class DeleteCustomObjectsResponse;
class DeleteCustomObjectsResponseDefaultTypeInternal;
extern DeleteCustomObjectsResponseDefaultTypeInternal _DeleteCustomObjectsResponse_default_instance_;
class DisconnectCubeRequest;
class DisconnectCubeRequestDefaultTypeInternal;
extern DisconnectCubeRequestDefaultTypeInternal _DisconnectCubeRequest_default_instance_;
class DisconnectCubeResponse;
class DisconnectCubeResponseDefaultTypeInternal;
extern DisconnectCubeResponseDefaultTypeInternal _DisconnectCubeResponse_default_instance_;
class FlashCubeLightsRequest;
class FlashCubeLightsRequestDefaultTypeInternal;
extern FlashCubeLightsRequestDefaultTypeInternal _FlashCubeLightsRequest_default_instance_;
class FlashCubeLightsResponse;
class FlashCubeLightsResponseDefaultTypeInternal;
extern FlashCubeLightsResponseDefaultTypeInternal _FlashCubeLightsResponse_default_instance_;
class ForgetPreferredCubeRequest;
class ForgetPreferredCubeRequestDefaultTypeInternal;
extern ForgetPreferredCubeRequestDefaultTypeInternal _ForgetPreferredCubeRequest_default_instance_;
class ForgetPreferredCubeResponse;
class ForgetPreferredCubeResponseDefaultTypeInternal;
extern ForgetPreferredCubeResponseDefaultTypeInternal _ForgetPreferredCubeResponse_default_instance_;
class ObjectAvailable;
class ObjectAvailableDefaultTypeInternal;
extern ObjectAvailableDefaultTypeInternal _ObjectAvailable_default_instance_;
class ObjectConnectionState;
class ObjectConnectionStateDefaultTypeInternal;
extern ObjectConnectionStateDefaultTypeInternal _ObjectConnectionState_default_instance_;
class ObjectEvent;
class ObjectEventDefaultTypeInternal;
extern ObjectEventDefaultTypeInternal _ObjectEvent_default_instance_;
class ObjectMoved;
class ObjectMovedDefaultTypeInternal;
extern ObjectMovedDefaultTypeInternal _ObjectMoved_default_instance_;
class ObjectStoppedMoving;
class ObjectStoppedMovingDefaultTypeInternal;
extern ObjectStoppedMovingDefaultTypeInternal _ObjectStoppedMoving_default_instance_;
class ObjectTapped;
class ObjectTappedDefaultTypeInternal;
extern ObjectTappedDefaultTypeInternal _ObjectTapped_default_instance_;
class ObjectUpAxisChanged;
class ObjectUpAxisChangedDefaultTypeInternal;
extern ObjectUpAxisChangedDefaultTypeInternal _ObjectUpAxisChanged_default_instance_;
class RobotObservedObject;
class RobotObservedObjectDefaultTypeInternal;
extern RobotObservedObjectDefaultTypeInternal _RobotObservedObject_default_instance_;
class SetCubeLightsRequest;
class SetCubeLightsRequestDefaultTypeInternal;
extern SetCubeLightsRequestDefaultTypeInternal _SetCubeLightsRequest_default_instance_;
class SetCubeLightsResponse;
class SetCubeLightsResponseDefaultTypeInternal;
extern SetCubeLightsResponseDefaultTypeInternal _SetCubeLightsResponse_default_instance_;
class SetPreferredCubeRequest;
class SetPreferredCubeRequestDefaultTypeInternal;
extern SetPreferredCubeRequestDefaultTypeInternal _SetPreferredCubeRequest_default_instance_;
class SetPreferredCubeResponse;
class SetPreferredCubeResponseDefaultTypeInternal;
extern SetPreferredCubeResponseDefaultTypeInternal _SetPreferredCubeResponse_default_instance_;
}  // namespace external_interface
}  // namespace Vector
}  // namespace Anki
PROTOBUF_NAMESPACE_OPEN
template<> ::Anki::Vector::external_interface::ConnectCubeRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ConnectCubeRequest>(Arena*);
template<> ::Anki::Vector::external_interface::ConnectCubeResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ConnectCubeResponse>(Arena*);
template<> ::Anki::Vector::external_interface::CreateFixedCustomObjectRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CreateFixedCustomObjectRequest>(Arena*);
template<> ::Anki::Vector::external_interface::CreateFixedCustomObjectResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CreateFixedCustomObjectResponse>(Arena*);
template<> ::Anki::Vector::external_interface::CubeConnectionLost* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CubeConnectionLost>(Arena*);
template<> ::Anki::Vector::external_interface::CubesAvailableRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CubesAvailableRequest>(Arena*);
template<> ::Anki::Vector::external_interface::CubesAvailableResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CubesAvailableResponse>(Arena*);
template<> ::Anki::Vector::external_interface::CustomBoxDefinition* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CustomBoxDefinition>(Arena*);
template<> ::Anki::Vector::external_interface::CustomCubeDefinition* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CustomCubeDefinition>(Arena*);
template<> ::Anki::Vector::external_interface::CustomWallDefinition* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::CustomWallDefinition>(Arena*);
template<> ::Anki::Vector::external_interface::DefineCustomObjectRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::DefineCustomObjectRequest>(Arena*);
template<> ::Anki::Vector::external_interface::DefineCustomObjectResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::DefineCustomObjectResponse>(Arena*);
template<> ::Anki::Vector::external_interface::DeleteCustomObjectsRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::DeleteCustomObjectsRequest>(Arena*);
template<> ::Anki::Vector::external_interface::DeleteCustomObjectsResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::DeleteCustomObjectsResponse>(Arena*);
template<> ::Anki::Vector::external_interface::DisconnectCubeRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::DisconnectCubeRequest>(Arena*);
template<> ::Anki::Vector::external_interface::DisconnectCubeResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::DisconnectCubeResponse>(Arena*);
template<> ::Anki::Vector::external_interface::FlashCubeLightsRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::FlashCubeLightsRequest>(Arena*);
template<> ::Anki::Vector::external_interface::FlashCubeLightsResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::FlashCubeLightsResponse>(Arena*);
template<> ::Anki::Vector::external_interface::ForgetPreferredCubeRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ForgetPreferredCubeRequest>(Arena*);
template<> ::Anki::Vector::external_interface::ForgetPreferredCubeResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ForgetPreferredCubeResponse>(Arena*);
template<> ::Anki::Vector::external_interface::ObjectAvailable* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ObjectAvailable>(Arena*);
template<> ::Anki::Vector::external_interface::ObjectConnectionState* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ObjectConnectionState>(Arena*);
template<> ::Anki::Vector::external_interface::ObjectEvent* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ObjectEvent>(Arena*);
template<> ::Anki::Vector::external_interface::ObjectMoved* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ObjectMoved>(Arena*);
template<> ::Anki::Vector::external_interface::ObjectStoppedMoving* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ObjectStoppedMoving>(Arena*);
template<> ::Anki::Vector::external_interface::ObjectTapped* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ObjectTapped>(Arena*);
template<> ::Anki::Vector::external_interface::ObjectUpAxisChanged* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::ObjectUpAxisChanged>(Arena*);
template<> ::Anki::Vector::external_interface::RobotObservedObject* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::RobotObservedObject>(Arena*);
template<> ::Anki::Vector::external_interface::SetCubeLightsRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::SetCubeLightsRequest>(Arena*);
template<> ::Anki::Vector::external_interface::SetCubeLightsResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::SetCubeLightsResponse>(Arena*);
template<> ::Anki::Vector::external_interface::SetPreferredCubeRequest* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::SetPreferredCubeRequest>(Arena*);
template<> ::Anki::Vector::external_interface::SetPreferredCubeResponse* Arena::CreateMaybeMessage<::Anki::Vector::external_interface::SetPreferredCubeResponse>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace Anki {
namespace Vector {
namespace external_interface {

enum SetCubeLightsRequest_MakeRelativeMode : int {
  SetCubeLightsRequest_MakeRelativeMode_UNKNOWN = 0,
  SetCubeLightsRequest_MakeRelativeMode_OFF = 1,
  SetCubeLightsRequest_MakeRelativeMode_BY_CORNER = 2,
  SetCubeLightsRequest_MakeRelativeMode_BY_SIDE = 3,
  SetCubeLightsRequest_MakeRelativeMode_SetCubeLightsRequest_MakeRelativeMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  SetCubeLightsRequest_MakeRelativeMode_SetCubeLightsRequest_MakeRelativeMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool SetCubeLightsRequest_MakeRelativeMode_IsValid(int value);
constexpr SetCubeLightsRequest_MakeRelativeMode SetCubeLightsRequest_MakeRelativeMode_MakeRelativeMode_MIN = SetCubeLightsRequest_MakeRelativeMode_UNKNOWN;
constexpr SetCubeLightsRequest_MakeRelativeMode SetCubeLightsRequest_MakeRelativeMode_MakeRelativeMode_MAX = SetCubeLightsRequest_MakeRelativeMode_BY_SIDE;
constexpr int SetCubeLightsRequest_MakeRelativeMode_MakeRelativeMode_ARRAYSIZE = SetCubeLightsRequest_MakeRelativeMode_MakeRelativeMode_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetCubeLightsRequest_MakeRelativeMode_descriptor();
template<typename T>
inline const std::string& SetCubeLightsRequest_MakeRelativeMode_Name(T enum_t_value) {
  static_assert(::std::is_same<T, SetCubeLightsRequest_MakeRelativeMode>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function SetCubeLightsRequest_MakeRelativeMode_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    SetCubeLightsRequest_MakeRelativeMode_descriptor(), enum_t_value);
}
inline bool SetCubeLightsRequest_MakeRelativeMode_Parse(
    const std::string& name, SetCubeLightsRequest_MakeRelativeMode* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<SetCubeLightsRequest_MakeRelativeMode>(
    SetCubeLightsRequest_MakeRelativeMode_descriptor(), name, value);
}
enum ObjectType : int {
  INVALID_OBJECT = 0,
  UNKNOWN_OBJECT = 1,
  BLOCK_LIGHTCUBE1 = 2,
  CHARGER_BASIC = 6,
  FIRST_CUSTOM_OBJECT_TYPE = 15,
  ObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  ObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool ObjectType_IsValid(int value);
constexpr ObjectType ObjectType_MIN = INVALID_OBJECT;
constexpr ObjectType ObjectType_MAX = FIRST_CUSTOM_OBJECT_TYPE;
constexpr int ObjectType_ARRAYSIZE = ObjectType_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectType_descriptor();
template<typename T>
inline const std::string& ObjectType_Name(T enum_t_value) {
  static_assert(::std::is_same<T, ObjectType>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function ObjectType_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    ObjectType_descriptor(), enum_t_value);
}
inline bool ObjectType_Parse(
    const std::string& name, ObjectType* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ObjectType>(
    ObjectType_descriptor(), name, value);
}
enum CustomType : int {
  INVALID_CUSTOM_TYPE = 0,
  CUSTOM_TYPE_00 = 1,
  CUSTOM_TYPE_01 = 2,
  CUSTOM_TYPE_02 = 3,
  CUSTOM_TYPE_03 = 4,
  CUSTOM_TYPE_04 = 5,
  CUSTOM_TYPE_05 = 6,
  CUSTOM_TYPE_06 = 7,
  CUSTOM_TYPE_07 = 8,
  CUSTOM_TYPE_08 = 9,
  CUSTOM_TYPE_09 = 10,
  CUSTOM_TYPE_10 = 11,
  CUSTOM_TYPE_11 = 12,
  CUSTOM_TYPE_12 = 13,
  CUSTOM_TYPE_13 = 14,
  CUSTOM_TYPE_14 = 15,
  CUSTOM_TYPE_15 = 16,
  CUSTOM_TYPE_16 = 17,
  CUSTOM_TYPE_17 = 18,
  CUSTOM_TYPE_18 = 19,
  CUSTOM_TYPE_19 = 20,
  CUSTOM_TYPE_COUNT = 20,
  CustomType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  CustomType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool CustomType_IsValid(int value);
constexpr CustomType CustomType_MIN = INVALID_CUSTOM_TYPE;
constexpr CustomType CustomType_MAX = CUSTOM_TYPE_19;
constexpr int CustomType_ARRAYSIZE = CustomType_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CustomType_descriptor();
template<typename T>
inline const std::string& CustomType_Name(T enum_t_value) {
  static_assert(::std::is_same<T, CustomType>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function CustomType_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    CustomType_descriptor(), enum_t_value);
}
inline bool CustomType_Parse(
    const std::string& name, CustomType* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<CustomType>(
    CustomType_descriptor(), name, value);
}
enum ObjectFamily : int {
  INVALID_FAMILY = 0,
  UNKNOWN_FAMILY = 1,
  BLOCK = 2,
  LIGHT_CUBE = 3,
  CHARGER = 4,
  CUSTOM_OBJECT = 7,
  OBJECT_FAMILY_COUNT = 7,
  ObjectFamily_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  ObjectFamily_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool ObjectFamily_IsValid(int value);
constexpr ObjectFamily ObjectFamily_MIN = INVALID_FAMILY;
constexpr ObjectFamily ObjectFamily_MAX = CUSTOM_OBJECT;
constexpr int ObjectFamily_ARRAYSIZE = ObjectFamily_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectFamily_descriptor();
template<typename T>
inline const std::string& ObjectFamily_Name(T enum_t_value) {
  static_assert(::std::is_same<T, ObjectFamily>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function ObjectFamily_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    ObjectFamily_descriptor(), enum_t_value);
}
inline bool ObjectFamily_Parse(
    const std::string& name, ObjectFamily* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ObjectFamily>(
    ObjectFamily_descriptor(), name, value);
}
enum UpAxis : int {
  INVALID_AXIS = 0,
  X_NEGATIVE = 1,
  X_POSITIVE = 2,
  Y_NEGATIVE = 3,
  Y_POSITIVE = 4,
  Z_NEGATIVE = 5,
  Z_POSITIVE = 6,
  NUM_AXES = 7,
  UpAxis_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  UpAxis_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool UpAxis_IsValid(int value);
constexpr UpAxis UpAxis_MIN = INVALID_AXIS;
constexpr UpAxis UpAxis_MAX = NUM_AXES;
constexpr int UpAxis_ARRAYSIZE = UpAxis_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* UpAxis_descriptor();
template<typename T>
inline const std::string& UpAxis_Name(T enum_t_value) {
  static_assert(::std::is_same<T, UpAxis>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function UpAxis_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    UpAxis_descriptor(), enum_t_value);
}
inline bool UpAxis_Parse(
    const std::string& name, UpAxis* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<UpAxis>(
    UpAxis_descriptor(), name, value);
}
enum ObjectConstants : int {
  OBJECT_CONSTANTS_NULL = 0,
  FIXED_CUSTOM_WALL_THICKNESS_MM = 10,
  ObjectConstants_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  ObjectConstants_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool ObjectConstants_IsValid(int value);
constexpr ObjectConstants ObjectConstants_MIN = OBJECT_CONSTANTS_NULL;
constexpr ObjectConstants ObjectConstants_MAX = FIXED_CUSTOM_WALL_THICKNESS_MM;
constexpr int ObjectConstants_ARRAYSIZE = ObjectConstants_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectConstants_descriptor();
template<typename T>
inline const std::string& ObjectConstants_Name(T enum_t_value) {
  static_assert(::std::is_same<T, ObjectConstants>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function ObjectConstants_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    ObjectConstants_descriptor(), enum_t_value);
}
inline bool ObjectConstants_Parse(
    const std::string& name, ObjectConstants* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ObjectConstants>(
    ObjectConstants_descriptor(), name, value);
}
enum CustomObjectMarker : int {
  CUSTOM_MARKER_UNKNOWN = 0,
  CUSTOM_MARKER_CIRCLES_2 = 1,
  CUSTOM_MARKER_CIRCLES_3 = 2,
  CUSTOM_MARKER_CIRCLES_4 = 3,
  CUSTOM_MARKER_CIRCLES_5 = 4,
  CUSTOM_MARKER_DIAMONDS_2 = 5,
  CUSTOM_MARKER_DIAMONDS_3 = 6,
  CUSTOM_MARKER_DIAMONDS_4 = 7,
  CUSTOM_MARKER_DIAMONDS_5 = 8,
  CUSTOM_MARKER_HEXAGONS_2 = 9,
  CUSTOM_MARKER_HEXAGONS_3 = 10,
  CUSTOM_MARKER_HEXAGONS_4 = 11,
  CUSTOM_MARKER_HEXAGONS_5 = 12,
  CUSTOM_MARKER_TRIANGLES_2 = 13,
  CUSTOM_MARKER_TRIANGLES_3 = 14,
  CUSTOM_MARKER_TRIANGLES_4 = 15,
  CUSTOM_MARKER_TRIANGLES_5 = 16,
  CUSTOM_MARKER_COUNT = 16,
  CustomObjectMarker_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  CustomObjectMarker_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool CustomObjectMarker_IsValid(int value);
constexpr CustomObjectMarker CustomObjectMarker_MIN = CUSTOM_MARKER_UNKNOWN;
constexpr CustomObjectMarker CustomObjectMarker_MAX = CUSTOM_MARKER_TRIANGLES_5;
constexpr int CustomObjectMarker_ARRAYSIZE = CustomObjectMarker_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CustomObjectMarker_descriptor();
template<typename T>
inline const std::string& CustomObjectMarker_Name(T enum_t_value) {
  static_assert(::std::is_same<T, CustomObjectMarker>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function CustomObjectMarker_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    CustomObjectMarker_descriptor(), enum_t_value);
}
inline bool CustomObjectMarker_Parse(
    const std::string& name, CustomObjectMarker* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<CustomObjectMarker>(
    CustomObjectMarker_descriptor(), name, value);
}
enum CustomObjectDeletionMode : int {
  DELETION_MASK_UNKNOWN = 0,
  DELETION_MASK_FIXED_CUSTOM_OBJECTS = 1,
  DELETION_MASK_CUSTOM_MARKER_OBJECTS = 2,
  DELETION_MASK_ARCHETYPES = 3,
  CustomObjectDeletionMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  CustomObjectDeletionMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool CustomObjectDeletionMode_IsValid(int value);
constexpr CustomObjectDeletionMode CustomObjectDeletionMode_MIN = DELETION_MASK_UNKNOWN;
constexpr CustomObjectDeletionMode CustomObjectDeletionMode_MAX = DELETION_MASK_ARCHETYPES;
constexpr int CustomObjectDeletionMode_ARRAYSIZE = CustomObjectDeletionMode_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CustomObjectDeletionMode_descriptor();
template<typename T>
inline const std::string& CustomObjectDeletionMode_Name(T enum_t_value) {
  static_assert(::std::is_same<T, CustomObjectDeletionMode>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function CustomObjectDeletionMode_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    CustomObjectDeletionMode_descriptor(), enum_t_value);
}
inline bool CustomObjectDeletionMode_Parse(
    const std::string& name, CustomObjectDeletionMode* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<CustomObjectDeletionMode>(
    CustomObjectDeletionMode_descriptor(), name, value);
}
// ===================================================================

class ConnectCubeRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ConnectCubeRequest) */ {
 public:
  inline ConnectCubeRequest() : ConnectCubeRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ConnectCubeRequest();

  ConnectCubeRequest(const ConnectCubeRequest& from);
  ConnectCubeRequest(ConnectCubeRequest&& from) noexcept
    : ConnectCubeRequest() {
    *this = ::std::move(from);
  }

  inline ConnectCubeRequest& operator=(const ConnectCubeRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline ConnectCubeRequest& operator=(ConnectCubeRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ConnectCubeRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ConnectCubeRequest* internal_default_instance() {
    return reinterpret_cast<const ConnectCubeRequest*>(
               &_ConnectCubeRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(ConnectCubeRequest& a, ConnectCubeRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(ConnectCubeRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ConnectCubeRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ConnectCubeRequest* New() const final {
    return CreateMaybeMessage<ConnectCubeRequest>(nullptr);
  }

  ConnectCubeRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ConnectCubeRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ConnectCubeRequest& from);
  void MergeFrom(const ConnectCubeRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ConnectCubeRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ConnectCubeRequest";
  }
  protected:
  explicit ConnectCubeRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ConnectCubeRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ConnectCubeResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ConnectCubeResponse) */ {
 public:
  inline ConnectCubeResponse() : ConnectCubeResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ConnectCubeResponse();

  ConnectCubeResponse(const ConnectCubeResponse& from);
  ConnectCubeResponse(ConnectCubeResponse&& from) noexcept
    : ConnectCubeResponse() {
    *this = ::std::move(from);
  }

  inline ConnectCubeResponse& operator=(const ConnectCubeResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline ConnectCubeResponse& operator=(ConnectCubeResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ConnectCubeResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ConnectCubeResponse* internal_default_instance() {
    return reinterpret_cast<const ConnectCubeResponse*>(
               &_ConnectCubeResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(ConnectCubeResponse& a, ConnectCubeResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(ConnectCubeResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ConnectCubeResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ConnectCubeResponse* New() const final {
    return CreateMaybeMessage<ConnectCubeResponse>(nullptr);
  }

  ConnectCubeResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ConnectCubeResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ConnectCubeResponse& from);
  void MergeFrom(const ConnectCubeResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ConnectCubeResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ConnectCubeResponse";
  }
  protected:
  explicit ConnectCubeResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kFactoryIdFieldNumber = 4,
    kStatusFieldNumber = 1,
    kSuccessFieldNumber = 2,
    kObjectIdFieldNumber = 3,
  };
  // string factory_id = 4;
  void clear_factory_id();
  const std::string& factory_id() const;
  void set_factory_id(const std::string& value);
  void set_factory_id(std::string&& value);
  void set_factory_id(const char* value);
  void set_factory_id(const char* value, size_t size);
  std::string* mutable_factory_id();
  std::string* release_factory_id();
  void set_allocated_factory_id(std::string* factory_id);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  std::string* unsafe_arena_release_factory_id();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_factory_id(
      std::string* factory_id);
  private:
  const std::string& _internal_factory_id() const;
  void _internal_set_factory_id(const std::string& value);
  std::string* _internal_mutable_factory_id();
  public:

  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  // bool success = 2;
  void clear_success();
  bool success() const;
  void set_success(bool value);
  private:
  bool _internal_success() const;
  void _internal_set_success(bool value);
  public:

  // uint32 object_id = 3;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  
  // Begin code inserted by Anki plugin.
  ConnectCubeResponse( ResponseStatus* status, bool success, ::google::protobuf::uint32 object_id, const std::string& factory_id );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ConnectCubeResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr factory_id_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  bool success_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CubesAvailableRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CubesAvailableRequest) */ {
 public:
  inline CubesAvailableRequest() : CubesAvailableRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CubesAvailableRequest();

  CubesAvailableRequest(const CubesAvailableRequest& from);
  CubesAvailableRequest(CubesAvailableRequest&& from) noexcept
    : CubesAvailableRequest() {
    *this = ::std::move(from);
  }

  inline CubesAvailableRequest& operator=(const CubesAvailableRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline CubesAvailableRequest& operator=(CubesAvailableRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CubesAvailableRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CubesAvailableRequest* internal_default_instance() {
    return reinterpret_cast<const CubesAvailableRequest*>(
               &_CubesAvailableRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(CubesAvailableRequest& a, CubesAvailableRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(CubesAvailableRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CubesAvailableRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CubesAvailableRequest* New() const final {
    return CreateMaybeMessage<CubesAvailableRequest>(nullptr);
  }

  CubesAvailableRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CubesAvailableRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CubesAvailableRequest& from);
  void MergeFrom(const CubesAvailableRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CubesAvailableRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CubesAvailableRequest";
  }
  protected:
  explicit CubesAvailableRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CubesAvailableRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CubesAvailableResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CubesAvailableResponse) */ {
 public:
  inline CubesAvailableResponse() : CubesAvailableResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CubesAvailableResponse();

  CubesAvailableResponse(const CubesAvailableResponse& from);
  CubesAvailableResponse(CubesAvailableResponse&& from) noexcept
    : CubesAvailableResponse() {
    *this = ::std::move(from);
  }

  inline CubesAvailableResponse& operator=(const CubesAvailableResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline CubesAvailableResponse& operator=(CubesAvailableResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CubesAvailableResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CubesAvailableResponse* internal_default_instance() {
    return reinterpret_cast<const CubesAvailableResponse*>(
               &_CubesAvailableResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(CubesAvailableResponse& a, CubesAvailableResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(CubesAvailableResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CubesAvailableResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CubesAvailableResponse* New() const final {
    return CreateMaybeMessage<CubesAvailableResponse>(nullptr);
  }

  CubesAvailableResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CubesAvailableResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CubesAvailableResponse& from);
  void MergeFrom(const CubesAvailableResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CubesAvailableResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CubesAvailableResponse";
  }
  protected:
  explicit CubesAvailableResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kFactoryIdsFieldNumber = 2,
    kStatusFieldNumber = 1,
  };
  // repeated string factory_ids = 2;
  int factory_ids_size() const;
  private:
  int _internal_factory_ids_size() const;
  public:
  void clear_factory_ids();
  const std::string& factory_ids(int index) const;
  std::string* mutable_factory_ids(int index);
  void set_factory_ids(int index, const std::string& value);
  void set_factory_ids(int index, std::string&& value);
  void set_factory_ids(int index, const char* value);
  void set_factory_ids(int index, const char* value, size_t size);
  std::string* add_factory_ids();
  void add_factory_ids(const std::string& value);
  void add_factory_ids(std::string&& value);
  void add_factory_ids(const char* value);
  void add_factory_ids(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& factory_ids() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_factory_ids();
  private:
  const std::string& _internal_factory_ids(int index) const;
  std::string* _internal_add_factory_ids();
  public:

  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CubesAvailableResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> factory_ids_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class DisconnectCubeRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.DisconnectCubeRequest) */ {
 public:
  inline DisconnectCubeRequest() : DisconnectCubeRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~DisconnectCubeRequest();

  DisconnectCubeRequest(const DisconnectCubeRequest& from);
  DisconnectCubeRequest(DisconnectCubeRequest&& from) noexcept
    : DisconnectCubeRequest() {
    *this = ::std::move(from);
  }

  inline DisconnectCubeRequest& operator=(const DisconnectCubeRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline DisconnectCubeRequest& operator=(DisconnectCubeRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const DisconnectCubeRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const DisconnectCubeRequest* internal_default_instance() {
    return reinterpret_cast<const DisconnectCubeRequest*>(
               &_DisconnectCubeRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(DisconnectCubeRequest& a, DisconnectCubeRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(DisconnectCubeRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DisconnectCubeRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline DisconnectCubeRequest* New() const final {
    return CreateMaybeMessage<DisconnectCubeRequest>(nullptr);
  }

  DisconnectCubeRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<DisconnectCubeRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const DisconnectCubeRequest& from);
  void MergeFrom(const DisconnectCubeRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(DisconnectCubeRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.DisconnectCubeRequest";
  }
  protected:
  explicit DisconnectCubeRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.DisconnectCubeRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class DisconnectCubeResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.DisconnectCubeResponse) */ {
 public:
  inline DisconnectCubeResponse() : DisconnectCubeResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~DisconnectCubeResponse();

  DisconnectCubeResponse(const DisconnectCubeResponse& from);
  DisconnectCubeResponse(DisconnectCubeResponse&& from) noexcept
    : DisconnectCubeResponse() {
    *this = ::std::move(from);
  }

  inline DisconnectCubeResponse& operator=(const DisconnectCubeResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline DisconnectCubeResponse& operator=(DisconnectCubeResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const DisconnectCubeResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const DisconnectCubeResponse* internal_default_instance() {
    return reinterpret_cast<const DisconnectCubeResponse*>(
               &_DisconnectCubeResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(DisconnectCubeResponse& a, DisconnectCubeResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(DisconnectCubeResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DisconnectCubeResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline DisconnectCubeResponse* New() const final {
    return CreateMaybeMessage<DisconnectCubeResponse>(nullptr);
  }

  DisconnectCubeResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<DisconnectCubeResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const DisconnectCubeResponse& from);
  void MergeFrom(const DisconnectCubeResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(DisconnectCubeResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.DisconnectCubeResponse";
  }
  protected:
  explicit DisconnectCubeResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  
  // Begin code inserted by Anki plugin.
  explicit DisconnectCubeResponse( ResponseStatus* status );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.DisconnectCubeResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class FlashCubeLightsRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.FlashCubeLightsRequest) */ {
 public:
  inline FlashCubeLightsRequest() : FlashCubeLightsRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~FlashCubeLightsRequest();

  FlashCubeLightsRequest(const FlashCubeLightsRequest& from);
  FlashCubeLightsRequest(FlashCubeLightsRequest&& from) noexcept
    : FlashCubeLightsRequest() {
    *this = ::std::move(from);
  }

  inline FlashCubeLightsRequest& operator=(const FlashCubeLightsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline FlashCubeLightsRequest& operator=(FlashCubeLightsRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const FlashCubeLightsRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const FlashCubeLightsRequest* internal_default_instance() {
    return reinterpret_cast<const FlashCubeLightsRequest*>(
               &_FlashCubeLightsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(FlashCubeLightsRequest& a, FlashCubeLightsRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(FlashCubeLightsRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FlashCubeLightsRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline FlashCubeLightsRequest* New() const final {
    return CreateMaybeMessage<FlashCubeLightsRequest>(nullptr);
  }

  FlashCubeLightsRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<FlashCubeLightsRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const FlashCubeLightsRequest& from);
  void MergeFrom(const FlashCubeLightsRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FlashCubeLightsRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.FlashCubeLightsRequest";
  }
  protected:
  explicit FlashCubeLightsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.FlashCubeLightsRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class FlashCubeLightsResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.FlashCubeLightsResponse) */ {
 public:
  inline FlashCubeLightsResponse() : FlashCubeLightsResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~FlashCubeLightsResponse();

  FlashCubeLightsResponse(const FlashCubeLightsResponse& from);
  FlashCubeLightsResponse(FlashCubeLightsResponse&& from) noexcept
    : FlashCubeLightsResponse() {
    *this = ::std::move(from);
  }

  inline FlashCubeLightsResponse& operator=(const FlashCubeLightsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline FlashCubeLightsResponse& operator=(FlashCubeLightsResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const FlashCubeLightsResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const FlashCubeLightsResponse* internal_default_instance() {
    return reinterpret_cast<const FlashCubeLightsResponse*>(
               &_FlashCubeLightsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(FlashCubeLightsResponse& a, FlashCubeLightsResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(FlashCubeLightsResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FlashCubeLightsResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline FlashCubeLightsResponse* New() const final {
    return CreateMaybeMessage<FlashCubeLightsResponse>(nullptr);
  }

  FlashCubeLightsResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<FlashCubeLightsResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const FlashCubeLightsResponse& from);
  void MergeFrom(const FlashCubeLightsResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FlashCubeLightsResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.FlashCubeLightsResponse";
  }
  protected:
  explicit FlashCubeLightsResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  
  // Begin code inserted by Anki plugin.
  explicit FlashCubeLightsResponse( ResponseStatus* status );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.FlashCubeLightsResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ForgetPreferredCubeRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ForgetPreferredCubeRequest) */ {
 public:
  inline ForgetPreferredCubeRequest() : ForgetPreferredCubeRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ForgetPreferredCubeRequest();

  ForgetPreferredCubeRequest(const ForgetPreferredCubeRequest& from);
  ForgetPreferredCubeRequest(ForgetPreferredCubeRequest&& from) noexcept
    : ForgetPreferredCubeRequest() {
    *this = ::std::move(from);
  }

  inline ForgetPreferredCubeRequest& operator=(const ForgetPreferredCubeRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline ForgetPreferredCubeRequest& operator=(ForgetPreferredCubeRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ForgetPreferredCubeRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ForgetPreferredCubeRequest* internal_default_instance() {
    return reinterpret_cast<const ForgetPreferredCubeRequest*>(
               &_ForgetPreferredCubeRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(ForgetPreferredCubeRequest& a, ForgetPreferredCubeRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(ForgetPreferredCubeRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ForgetPreferredCubeRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ForgetPreferredCubeRequest* New() const final {
    return CreateMaybeMessage<ForgetPreferredCubeRequest>(nullptr);
  }

  ForgetPreferredCubeRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ForgetPreferredCubeRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ForgetPreferredCubeRequest& from);
  void MergeFrom(const ForgetPreferredCubeRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ForgetPreferredCubeRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ForgetPreferredCubeRequest";
  }
  protected:
  explicit ForgetPreferredCubeRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ForgetPreferredCubeRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ForgetPreferredCubeResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ForgetPreferredCubeResponse) */ {
 public:
  inline ForgetPreferredCubeResponse() : ForgetPreferredCubeResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ForgetPreferredCubeResponse();

  ForgetPreferredCubeResponse(const ForgetPreferredCubeResponse& from);
  ForgetPreferredCubeResponse(ForgetPreferredCubeResponse&& from) noexcept
    : ForgetPreferredCubeResponse() {
    *this = ::std::move(from);
  }

  inline ForgetPreferredCubeResponse& operator=(const ForgetPreferredCubeResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline ForgetPreferredCubeResponse& operator=(ForgetPreferredCubeResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ForgetPreferredCubeResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ForgetPreferredCubeResponse* internal_default_instance() {
    return reinterpret_cast<const ForgetPreferredCubeResponse*>(
               &_ForgetPreferredCubeResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(ForgetPreferredCubeResponse& a, ForgetPreferredCubeResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(ForgetPreferredCubeResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ForgetPreferredCubeResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ForgetPreferredCubeResponse* New() const final {
    return CreateMaybeMessage<ForgetPreferredCubeResponse>(nullptr);
  }

  ForgetPreferredCubeResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ForgetPreferredCubeResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ForgetPreferredCubeResponse& from);
  void MergeFrom(const ForgetPreferredCubeResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ForgetPreferredCubeResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ForgetPreferredCubeResponse";
  }
  protected:
  explicit ForgetPreferredCubeResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  
  // Begin code inserted by Anki plugin.
  explicit ForgetPreferredCubeResponse( ResponseStatus* status );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ForgetPreferredCubeResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class SetPreferredCubeRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.SetPreferredCubeRequest) */ {
 public:
  inline SetPreferredCubeRequest() : SetPreferredCubeRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~SetPreferredCubeRequest();

  SetPreferredCubeRequest(const SetPreferredCubeRequest& from);
  SetPreferredCubeRequest(SetPreferredCubeRequest&& from) noexcept
    : SetPreferredCubeRequest() {
    *this = ::std::move(from);
  }

  inline SetPreferredCubeRequest& operator=(const SetPreferredCubeRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline SetPreferredCubeRequest& operator=(SetPreferredCubeRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const SetPreferredCubeRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const SetPreferredCubeRequest* internal_default_instance() {
    return reinterpret_cast<const SetPreferredCubeRequest*>(
               &_SetPreferredCubeRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(SetPreferredCubeRequest& a, SetPreferredCubeRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(SetPreferredCubeRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SetPreferredCubeRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline SetPreferredCubeRequest* New() const final {
    return CreateMaybeMessage<SetPreferredCubeRequest>(nullptr);
  }

  SetPreferredCubeRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<SetPreferredCubeRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const SetPreferredCubeRequest& from);
  void MergeFrom(const SetPreferredCubeRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SetPreferredCubeRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.SetPreferredCubeRequest";
  }
  protected:
  explicit SetPreferredCubeRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kFactoryIdFieldNumber = 1,
  };
  // string factory_id = 1;
  void clear_factory_id();
  const std::string& factory_id() const;
  void set_factory_id(const std::string& value);
  void set_factory_id(std::string&& value);
  void set_factory_id(const char* value);
  void set_factory_id(const char* value, size_t size);
  std::string* mutable_factory_id();
  std::string* release_factory_id();
  void set_allocated_factory_id(std::string* factory_id);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  std::string* unsafe_arena_release_factory_id();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_factory_id(
      std::string* factory_id);
  private:
  const std::string& _internal_factory_id() const;
  void _internal_set_factory_id(const std::string& value);
  std::string* _internal_mutable_factory_id();
  public:

  
  // Begin code inserted by Anki plugin.
  explicit SetPreferredCubeRequest( const std::string& factory_id );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.SetPreferredCubeRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr factory_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class SetPreferredCubeResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.SetPreferredCubeResponse) */ {
 public:
  inline SetPreferredCubeResponse() : SetPreferredCubeResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~SetPreferredCubeResponse();

  SetPreferredCubeResponse(const SetPreferredCubeResponse& from);
  SetPreferredCubeResponse(SetPreferredCubeResponse&& from) noexcept
    : SetPreferredCubeResponse() {
    *this = ::std::move(from);
  }

  inline SetPreferredCubeResponse& operator=(const SetPreferredCubeResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline SetPreferredCubeResponse& operator=(SetPreferredCubeResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const SetPreferredCubeResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const SetPreferredCubeResponse* internal_default_instance() {
    return reinterpret_cast<const SetPreferredCubeResponse*>(
               &_SetPreferredCubeResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

  friend void swap(SetPreferredCubeResponse& a, SetPreferredCubeResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(SetPreferredCubeResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SetPreferredCubeResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline SetPreferredCubeResponse* New() const final {
    return CreateMaybeMessage<SetPreferredCubeResponse>(nullptr);
  }

  SetPreferredCubeResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<SetPreferredCubeResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const SetPreferredCubeResponse& from);
  void MergeFrom(const SetPreferredCubeResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SetPreferredCubeResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.SetPreferredCubeResponse";
  }
  protected:
  explicit SetPreferredCubeResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  
  // Begin code inserted by Anki plugin.
  explicit SetPreferredCubeResponse( ResponseStatus* status );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.SetPreferredCubeResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class SetCubeLightsRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.SetCubeLightsRequest) */ {
 public:
  inline SetCubeLightsRequest() : SetCubeLightsRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~SetCubeLightsRequest();

  SetCubeLightsRequest(const SetCubeLightsRequest& from);
  SetCubeLightsRequest(SetCubeLightsRequest&& from) noexcept
    : SetCubeLightsRequest() {
    *this = ::std::move(from);
  }

  inline SetCubeLightsRequest& operator=(const SetCubeLightsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline SetCubeLightsRequest& operator=(SetCubeLightsRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const SetCubeLightsRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const SetCubeLightsRequest* internal_default_instance() {
    return reinterpret_cast<const SetCubeLightsRequest*>(
               &_SetCubeLightsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

  friend void swap(SetCubeLightsRequest& a, SetCubeLightsRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(SetCubeLightsRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SetCubeLightsRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline SetCubeLightsRequest* New() const final {
    return CreateMaybeMessage<SetCubeLightsRequest>(nullptr);
  }

  SetCubeLightsRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<SetCubeLightsRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const SetCubeLightsRequest& from);
  void MergeFrom(const SetCubeLightsRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SetCubeLightsRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.SetCubeLightsRequest";
  }
  protected:
  explicit SetCubeLightsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  typedef SetCubeLightsRequest_MakeRelativeMode MakeRelativeMode;
  static constexpr MakeRelativeMode UNKNOWN =
    SetCubeLightsRequest_MakeRelativeMode_UNKNOWN;
  static constexpr MakeRelativeMode OFF =
    SetCubeLightsRequest_MakeRelativeMode_OFF;
  static constexpr MakeRelativeMode BY_CORNER =
    SetCubeLightsRequest_MakeRelativeMode_BY_CORNER;
  static constexpr MakeRelativeMode BY_SIDE =
    SetCubeLightsRequest_MakeRelativeMode_BY_SIDE;
  static inline bool MakeRelativeMode_IsValid(int value) {
    return SetCubeLightsRequest_MakeRelativeMode_IsValid(value);
  }
  static constexpr MakeRelativeMode MakeRelativeMode_MIN =
    SetCubeLightsRequest_MakeRelativeMode_MakeRelativeMode_MIN;
  static constexpr MakeRelativeMode MakeRelativeMode_MAX =
    SetCubeLightsRequest_MakeRelativeMode_MakeRelativeMode_MAX;
  static constexpr int MakeRelativeMode_ARRAYSIZE =
    SetCubeLightsRequest_MakeRelativeMode_MakeRelativeMode_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  MakeRelativeMode_descriptor() {
    return SetCubeLightsRequest_MakeRelativeMode_descriptor();
  }
  template<typename T>
  static inline const std::string& MakeRelativeMode_Name(T enum_t_value) {
    static_assert(::std::is_same<T, MakeRelativeMode>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function MakeRelativeMode_Name.");
    return SetCubeLightsRequest_MakeRelativeMode_Name(enum_t_value);
  }
  static inline bool MakeRelativeMode_Parse(const std::string& name,
      MakeRelativeMode* value) {
    return SetCubeLightsRequest_MakeRelativeMode_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kOnColorFieldNumber = 2,
    kOffColorFieldNumber = 3,
    kOnPeriodMsFieldNumber = 4,
    kOffPeriodMsFieldNumber = 5,
    kTransitionOnPeriodMsFieldNumber = 6,
    kTransitionOffPeriodMsFieldNumber = 7,
    kOffsetFieldNumber = 8,
    kObjectIdFieldNumber = 1,
    kRelativeToXFieldNumber = 9,
    kRelativeToYFieldNumber = 10,
    kRotateFieldNumber = 11,
    kMakeRelativeFieldNumber = 12,
  };
  // repeated uint32 on_color = 2;
  int on_color_size() const;
  private:
  int _internal_on_color_size() const;
  public:
  void clear_on_color();
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_on_color(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      _internal_on_color() const;
  void _internal_add_on_color(::PROTOBUF_NAMESPACE_ID::uint32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      _internal_mutable_on_color();
  public:
  ::PROTOBUF_NAMESPACE_ID::uint32 on_color(int index) const;
  void set_on_color(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value);
  void add_on_color(::PROTOBUF_NAMESPACE_ID::uint32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      on_color() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      mutable_on_color();

  // repeated uint32 off_color = 3;
  int off_color_size() const;
  private:
  int _internal_off_color_size() const;
  public:
  void clear_off_color();
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_off_color(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      _internal_off_color() const;
  void _internal_add_off_color(::PROTOBUF_NAMESPACE_ID::uint32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      _internal_mutable_off_color();
  public:
  ::PROTOBUF_NAMESPACE_ID::uint32 off_color(int index) const;
  void set_off_color(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value);
  void add_off_color(::PROTOBUF_NAMESPACE_ID::uint32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      off_color() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      mutable_off_color();

  // repeated uint32 on_period_ms = 4;
  int on_period_ms_size() const;
  private:
  int _internal_on_period_ms_size() const;
  public:
  void clear_on_period_ms();
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_on_period_ms(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      _internal_on_period_ms() const;
  void _internal_add_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      _internal_mutable_on_period_ms();
  public:
  ::PROTOBUF_NAMESPACE_ID::uint32 on_period_ms(int index) const;
  void set_on_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value);
  void add_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      on_period_ms() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      mutable_on_period_ms();

  // repeated uint32 off_period_ms = 5;
  int off_period_ms_size() const;
  private:
  int _internal_off_period_ms_size() const;
  public:
  void clear_off_period_ms();
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_off_period_ms(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      _internal_off_period_ms() const;
  void _internal_add_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      _internal_mutable_off_period_ms();
  public:
  ::PROTOBUF_NAMESPACE_ID::uint32 off_period_ms(int index) const;
  void set_off_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value);
  void add_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      off_period_ms() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      mutable_off_period_ms();

  // repeated uint32 transition_on_period_ms = 6;
  int transition_on_period_ms_size() const;
  private:
  int _internal_transition_on_period_ms_size() const;
  public:
  void clear_transition_on_period_ms();
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_transition_on_period_ms(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      _internal_transition_on_period_ms() const;
  void _internal_add_transition_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      _internal_mutable_transition_on_period_ms();
  public:
  ::PROTOBUF_NAMESPACE_ID::uint32 transition_on_period_ms(int index) const;
  void set_transition_on_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value);
  void add_transition_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      transition_on_period_ms() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      mutable_transition_on_period_ms();

  // repeated uint32 transition_off_period_ms = 7;
  int transition_off_period_ms_size() const;
  private:
  int _internal_transition_off_period_ms_size() const;
  public:
  void clear_transition_off_period_ms();
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_transition_off_period_ms(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      _internal_transition_off_period_ms() const;
  void _internal_add_transition_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      _internal_mutable_transition_off_period_ms();
  public:
  ::PROTOBUF_NAMESPACE_ID::uint32 transition_off_period_ms(int index) const;
  void set_transition_off_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value);
  void add_transition_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
      transition_off_period_ms() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
      mutable_transition_off_period_ms();

  // repeated int32 offset = 8;
  int offset_size() const;
  private:
  int _internal_offset_size() const;
  public:
  void clear_offset();
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_offset(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      _internal_offset() const;
  void _internal_add_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      _internal_mutable_offset();
  public:
  ::PROTOBUF_NAMESPACE_ID::int32 offset(int index) const;
  void set_offset(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
  void add_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      offset() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      mutable_offset();

  // uint32 object_id = 1;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // float relative_to_x = 9;
  void clear_relative_to_x();
  float relative_to_x() const;
  void set_relative_to_x(float value);
  private:
  float _internal_relative_to_x() const;
  void _internal_set_relative_to_x(float value);
  public:

  // float relative_to_y = 10;
  void clear_relative_to_y();
  float relative_to_y() const;
  void set_relative_to_y(float value);
  private:
  float _internal_relative_to_y() const;
  void _internal_set_relative_to_y(float value);
  public:

  // bool rotate = 11;
  void clear_rotate();
  bool rotate() const;
  void set_rotate(bool value);
  private:
  bool _internal_rotate() const;
  void _internal_set_rotate(bool value);
  public:

  // .Anki.Vector.external_interface.SetCubeLightsRequest.MakeRelativeMode make_relative = 12;
  void clear_make_relative();
  ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode make_relative() const;
  void set_make_relative(::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode value);
  private:
  ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode _internal_make_relative() const;
  void _internal_set_make_relative(::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode value);
  public:

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.SetCubeLightsRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 > on_color_;
  mutable std::atomic<int> _on_color_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 > off_color_;
  mutable std::atomic<int> _off_color_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 > on_period_ms_;
  mutable std::atomic<int> _on_period_ms_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 > off_period_ms_;
  mutable std::atomic<int> _off_period_ms_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 > transition_on_period_ms_;
  mutable std::atomic<int> _transition_on_period_ms_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 > transition_off_period_ms_;
  mutable std::atomic<int> _transition_off_period_ms_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > offset_;
  mutable std::atomic<int> _offset_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  float relative_to_x_;
  float relative_to_y_;
  bool rotate_;
  int make_relative_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class SetCubeLightsResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.SetCubeLightsResponse) */ {
 public:
  inline SetCubeLightsResponse() : SetCubeLightsResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~SetCubeLightsResponse();

  SetCubeLightsResponse(const SetCubeLightsResponse& from);
  SetCubeLightsResponse(SetCubeLightsResponse&& from) noexcept
    : SetCubeLightsResponse() {
    *this = ::std::move(from);
  }

  inline SetCubeLightsResponse& operator=(const SetCubeLightsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline SetCubeLightsResponse& operator=(SetCubeLightsResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const SetCubeLightsResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const SetCubeLightsResponse* internal_default_instance() {
    return reinterpret_cast<const SetCubeLightsResponse*>(
               &_SetCubeLightsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    13;

  friend void swap(SetCubeLightsResponse& a, SetCubeLightsResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(SetCubeLightsResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SetCubeLightsResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline SetCubeLightsResponse* New() const final {
    return CreateMaybeMessage<SetCubeLightsResponse>(nullptr);
  }

  SetCubeLightsResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<SetCubeLightsResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const SetCubeLightsResponse& from);
  void MergeFrom(const SetCubeLightsResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SetCubeLightsResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.SetCubeLightsResponse";
  }
  protected:
  explicit SetCubeLightsResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  
  // Begin code inserted by Anki plugin.
  explicit SetCubeLightsResponse( ResponseStatus* status );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.SetCubeLightsResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ObjectAvailable PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ObjectAvailable) */ {
 public:
  inline ObjectAvailable() : ObjectAvailable(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ObjectAvailable();

  ObjectAvailable(const ObjectAvailable& from);
  ObjectAvailable(ObjectAvailable&& from) noexcept
    : ObjectAvailable() {
    *this = ::std::move(from);
  }

  inline ObjectAvailable& operator=(const ObjectAvailable& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObjectAvailable& operator=(ObjectAvailable&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObjectAvailable& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObjectAvailable* internal_default_instance() {
    return reinterpret_cast<const ObjectAvailable*>(
               &_ObjectAvailable_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    14;

  friend void swap(ObjectAvailable& a, ObjectAvailable& b) {
    a.Swap(&b);
  }
  inline void Swap(ObjectAvailable* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ObjectAvailable* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ObjectAvailable* New() const final {
    return CreateMaybeMessage<ObjectAvailable>(nullptr);
  }

  ObjectAvailable* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObjectAvailable>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObjectAvailable& from);
  void MergeFrom(const ObjectAvailable& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObjectAvailable* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ObjectAvailable";
  }
  protected:
  explicit ObjectAvailable(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kFactoryIdFieldNumber = 1,
  };
  // string factory_id = 1;
  void clear_factory_id();
  const std::string& factory_id() const;
  void set_factory_id(const std::string& value);
  void set_factory_id(std::string&& value);
  void set_factory_id(const char* value);
  void set_factory_id(const char* value, size_t size);
  std::string* mutable_factory_id();
  std::string* release_factory_id();
  void set_allocated_factory_id(std::string* factory_id);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  std::string* unsafe_arena_release_factory_id();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_factory_id(
      std::string* factory_id);
  private:
  const std::string& _internal_factory_id() const;
  void _internal_set_factory_id(const std::string& value);
  std::string* _internal_mutable_factory_id();
  public:

  
  // Begin code inserted by Anki plugin.
  explicit ObjectAvailable( const std::string& factory_id );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ObjectAvailable)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr factory_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ObjectConnectionState PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ObjectConnectionState) */ {
 public:
  inline ObjectConnectionState() : ObjectConnectionState(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ObjectConnectionState();

  ObjectConnectionState(const ObjectConnectionState& from);
  ObjectConnectionState(ObjectConnectionState&& from) noexcept
    : ObjectConnectionState() {
    *this = ::std::move(from);
  }

  inline ObjectConnectionState& operator=(const ObjectConnectionState& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObjectConnectionState& operator=(ObjectConnectionState&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObjectConnectionState& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObjectConnectionState* internal_default_instance() {
    return reinterpret_cast<const ObjectConnectionState*>(
               &_ObjectConnectionState_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    15;

  friend void swap(ObjectConnectionState& a, ObjectConnectionState& b) {
    a.Swap(&b);
  }
  inline void Swap(ObjectConnectionState* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ObjectConnectionState* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ObjectConnectionState* New() const final {
    return CreateMaybeMessage<ObjectConnectionState>(nullptr);
  }

  ObjectConnectionState* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObjectConnectionState>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObjectConnectionState& from);
  void MergeFrom(const ObjectConnectionState& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObjectConnectionState* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ObjectConnectionState";
  }
  protected:
  explicit ObjectConnectionState(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kFactoryIdFieldNumber = 2,
    kObjectIdFieldNumber = 1,
    kObjectTypeFieldNumber = 3,
    kConnectedFieldNumber = 4,
  };
  // string factory_id = 2;
  void clear_factory_id();
  const std::string& factory_id() const;
  void set_factory_id(const std::string& value);
  void set_factory_id(std::string&& value);
  void set_factory_id(const char* value);
  void set_factory_id(const char* value, size_t size);
  std::string* mutable_factory_id();
  std::string* release_factory_id();
  void set_allocated_factory_id(std::string* factory_id);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  std::string* unsafe_arena_release_factory_id();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_factory_id(
      std::string* factory_id);
  private:
  const std::string& _internal_factory_id() const;
  void _internal_set_factory_id(const std::string& value);
  std::string* _internal_mutable_factory_id();
  public:

  // uint32 object_id = 1;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // .Anki.Vector.external_interface.ObjectType object_type = 3;
  void clear_object_type();
  ::Anki::Vector::external_interface::ObjectType object_type() const;
  void set_object_type(::Anki::Vector::external_interface::ObjectType value);
  private:
  ::Anki::Vector::external_interface::ObjectType _internal_object_type() const;
  void _internal_set_object_type(::Anki::Vector::external_interface::ObjectType value);
  public:

  // bool connected = 4;
  void clear_connected();
  bool connected() const;
  void set_connected(bool value);
  private:
  bool _internal_connected() const;
  void _internal_set_connected(bool value);
  public:

  
  // Begin code inserted by Anki plugin.
  ObjectConnectionState( ::google::protobuf::uint32 object_id, const std::string& factory_id, ::Anki::Vector::external_interface::ObjectType object_type, bool connected );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ObjectConnectionState)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr factory_id_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  int object_type_;
  bool connected_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ObjectMoved PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ObjectMoved) */ {
 public:
  inline ObjectMoved() : ObjectMoved(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ObjectMoved();

  ObjectMoved(const ObjectMoved& from);
  ObjectMoved(ObjectMoved&& from) noexcept
    : ObjectMoved() {
    *this = ::std::move(from);
  }

  inline ObjectMoved& operator=(const ObjectMoved& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObjectMoved& operator=(ObjectMoved&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObjectMoved& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObjectMoved* internal_default_instance() {
    return reinterpret_cast<const ObjectMoved*>(
               &_ObjectMoved_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    16;

  friend void swap(ObjectMoved& a, ObjectMoved& b) {
    a.Swap(&b);
  }
  inline void Swap(ObjectMoved* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ObjectMoved* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ObjectMoved* New() const final {
    return CreateMaybeMessage<ObjectMoved>(nullptr);
  }

  ObjectMoved* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObjectMoved>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObjectMoved& from);
  void MergeFrom(const ObjectMoved& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObjectMoved* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ObjectMoved";
  }
  protected:
  explicit ObjectMoved(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTimestampFieldNumber = 1,
    kObjectIdFieldNumber = 2,
  };
  // uint32 timestamp = 1;
  void clear_timestamp();
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp() const;
  void set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_timestamp() const;
  void _internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // uint32 object_id = 2;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  
  // Begin code inserted by Anki plugin.
  ObjectMoved( ::google::protobuf::uint32 timestamp, ::google::protobuf::uint32 object_id );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ObjectMoved)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ObjectStoppedMoving PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ObjectStoppedMoving) */ {
 public:
  inline ObjectStoppedMoving() : ObjectStoppedMoving(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ObjectStoppedMoving();

  ObjectStoppedMoving(const ObjectStoppedMoving& from);
  ObjectStoppedMoving(ObjectStoppedMoving&& from) noexcept
    : ObjectStoppedMoving() {
    *this = ::std::move(from);
  }

  inline ObjectStoppedMoving& operator=(const ObjectStoppedMoving& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObjectStoppedMoving& operator=(ObjectStoppedMoving&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObjectStoppedMoving& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObjectStoppedMoving* internal_default_instance() {
    return reinterpret_cast<const ObjectStoppedMoving*>(
               &_ObjectStoppedMoving_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    17;

  friend void swap(ObjectStoppedMoving& a, ObjectStoppedMoving& b) {
    a.Swap(&b);
  }
  inline void Swap(ObjectStoppedMoving* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ObjectStoppedMoving* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ObjectStoppedMoving* New() const final {
    return CreateMaybeMessage<ObjectStoppedMoving>(nullptr);
  }

  ObjectStoppedMoving* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObjectStoppedMoving>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObjectStoppedMoving& from);
  void MergeFrom(const ObjectStoppedMoving& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObjectStoppedMoving* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ObjectStoppedMoving";
  }
  protected:
  explicit ObjectStoppedMoving(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTimestampFieldNumber = 1,
    kObjectIdFieldNumber = 2,
  };
  // uint32 timestamp = 1;
  void clear_timestamp();
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp() const;
  void set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_timestamp() const;
  void _internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // uint32 object_id = 2;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  
  // Begin code inserted by Anki plugin.
  ObjectStoppedMoving( ::google::protobuf::uint32 timestamp, ::google::protobuf::uint32 object_id );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ObjectStoppedMoving)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ObjectUpAxisChanged PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ObjectUpAxisChanged) */ {
 public:
  inline ObjectUpAxisChanged() : ObjectUpAxisChanged(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ObjectUpAxisChanged();

  ObjectUpAxisChanged(const ObjectUpAxisChanged& from);
  ObjectUpAxisChanged(ObjectUpAxisChanged&& from) noexcept
    : ObjectUpAxisChanged() {
    *this = ::std::move(from);
  }

  inline ObjectUpAxisChanged& operator=(const ObjectUpAxisChanged& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObjectUpAxisChanged& operator=(ObjectUpAxisChanged&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObjectUpAxisChanged& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObjectUpAxisChanged* internal_default_instance() {
    return reinterpret_cast<const ObjectUpAxisChanged*>(
               &_ObjectUpAxisChanged_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    18;

  friend void swap(ObjectUpAxisChanged& a, ObjectUpAxisChanged& b) {
    a.Swap(&b);
  }
  inline void Swap(ObjectUpAxisChanged* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ObjectUpAxisChanged* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ObjectUpAxisChanged* New() const final {
    return CreateMaybeMessage<ObjectUpAxisChanged>(nullptr);
  }

  ObjectUpAxisChanged* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObjectUpAxisChanged>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObjectUpAxisChanged& from);
  void MergeFrom(const ObjectUpAxisChanged& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObjectUpAxisChanged* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ObjectUpAxisChanged";
  }
  protected:
  explicit ObjectUpAxisChanged(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTimestampFieldNumber = 1,
    kObjectIdFieldNumber = 2,
    kUpAxisFieldNumber = 3,
  };
  // uint32 timestamp = 1;
  void clear_timestamp();
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp() const;
  void set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_timestamp() const;
  void _internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // uint32 object_id = 2;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // .Anki.Vector.external_interface.UpAxis up_axis = 3;
  void clear_up_axis();
  ::Anki::Vector::external_interface::UpAxis up_axis() const;
  void set_up_axis(::Anki::Vector::external_interface::UpAxis value);
  private:
  ::Anki::Vector::external_interface::UpAxis _internal_up_axis() const;
  void _internal_set_up_axis(::Anki::Vector::external_interface::UpAxis value);
  public:

  
  // Begin code inserted by Anki plugin.
  ObjectUpAxisChanged( ::google::protobuf::uint32 timestamp, ::google::protobuf::uint32 object_id, ::Anki::Vector::external_interface::UpAxis up_axis );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ObjectUpAxisChanged)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  int up_axis_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ObjectTapped PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ObjectTapped) */ {
 public:
  inline ObjectTapped() : ObjectTapped(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ObjectTapped();

  ObjectTapped(const ObjectTapped& from);
  ObjectTapped(ObjectTapped&& from) noexcept
    : ObjectTapped() {
    *this = ::std::move(from);
  }

  inline ObjectTapped& operator=(const ObjectTapped& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObjectTapped& operator=(ObjectTapped&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObjectTapped& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObjectTapped* internal_default_instance() {
    return reinterpret_cast<const ObjectTapped*>(
               &_ObjectTapped_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    19;

  friend void swap(ObjectTapped& a, ObjectTapped& b) {
    a.Swap(&b);
  }
  inline void Swap(ObjectTapped* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ObjectTapped* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ObjectTapped* New() const final {
    return CreateMaybeMessage<ObjectTapped>(nullptr);
  }

  ObjectTapped* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObjectTapped>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObjectTapped& from);
  void MergeFrom(const ObjectTapped& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObjectTapped* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ObjectTapped";
  }
  protected:
  explicit ObjectTapped(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTimestampFieldNumber = 1,
    kObjectIdFieldNumber = 2,
  };
  // uint32 timestamp = 1;
  void clear_timestamp();
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp() const;
  void set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_timestamp() const;
  void _internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // uint32 object_id = 2;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  
  // Begin code inserted by Anki plugin.
  ObjectTapped( ::google::protobuf::uint32 timestamp, ::google::protobuf::uint32 object_id );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ObjectTapped)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class RobotObservedObject PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.RobotObservedObject) */ {
 public:
  inline RobotObservedObject() : RobotObservedObject(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~RobotObservedObject();

  RobotObservedObject(const RobotObservedObject& from);
  RobotObservedObject(RobotObservedObject&& from) noexcept
    : RobotObservedObject() {
    *this = ::std::move(from);
  }

  inline RobotObservedObject& operator=(const RobotObservedObject& from) {
    CopyFrom(from);
    return *this;
  }
  inline RobotObservedObject& operator=(RobotObservedObject&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RobotObservedObject& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RobotObservedObject* internal_default_instance() {
    return reinterpret_cast<const RobotObservedObject*>(
               &_RobotObservedObject_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    20;

  friend void swap(RobotObservedObject& a, RobotObservedObject& b) {
    a.Swap(&b);
  }
  inline void Swap(RobotObservedObject* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RobotObservedObject* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline RobotObservedObject* New() const final {
    return CreateMaybeMessage<RobotObservedObject>(nullptr);
  }

  RobotObservedObject* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RobotObservedObject>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RobotObservedObject& from);
  void MergeFrom(const RobotObservedObject& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RobotObservedObject* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.RobotObservedObject";
  }
  protected:
  explicit RobotObservedObject(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kImgRectFieldNumber = 5,
    kPoseFieldNumber = 6,
    kTimestampFieldNumber = 1,
    kObjectFamilyFieldNumber = 2,
    kObjectTypeFieldNumber = 3,
    kObjectIdFieldNumber = 4,
    kTopFaceOrientationRadFieldNumber = 7,
    kIsActiveFieldNumber = 8,
  };
  // .Anki.Vector.external_interface.CladRect img_rect = 5;
  bool has_img_rect() const;
  private:
  bool _internal_has_img_rect() const;
  public:
  void clear_img_rect();
  const ::Anki::Vector::external_interface::CladRect& img_rect() const;
  ::Anki::Vector::external_interface::CladRect* release_img_rect();
  ::Anki::Vector::external_interface::CladRect* mutable_img_rect();
  void set_allocated_img_rect(::Anki::Vector::external_interface::CladRect* img_rect);
  private:
  const ::Anki::Vector::external_interface::CladRect& _internal_img_rect() const;
  ::Anki::Vector::external_interface::CladRect* _internal_mutable_img_rect();
  public:
  void unsafe_arena_set_allocated_img_rect(
      ::Anki::Vector::external_interface::CladRect* img_rect);
  ::Anki::Vector::external_interface::CladRect* unsafe_arena_release_img_rect();

  // .Anki.Vector.external_interface.PoseStruct pose = 6;
  bool has_pose() const;
  private:
  bool _internal_has_pose() const;
  public:
  void clear_pose();
  const ::Anki::Vector::external_interface::PoseStruct& pose() const;
  ::Anki::Vector::external_interface::PoseStruct* release_pose();
  ::Anki::Vector::external_interface::PoseStruct* mutable_pose();
  void set_allocated_pose(::Anki::Vector::external_interface::PoseStruct* pose);
  private:
  const ::Anki::Vector::external_interface::PoseStruct& _internal_pose() const;
  ::Anki::Vector::external_interface::PoseStruct* _internal_mutable_pose();
  public:
  void unsafe_arena_set_allocated_pose(
      ::Anki::Vector::external_interface::PoseStruct* pose);
  ::Anki::Vector::external_interface::PoseStruct* unsafe_arena_release_pose();

  // uint32 timestamp = 1;
  void clear_timestamp();
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp() const;
  void set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_timestamp() const;
  void _internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // .Anki.Vector.external_interface.ObjectFamily object_family = 2;
  void clear_object_family();
  ::Anki::Vector::external_interface::ObjectFamily object_family() const;
  void set_object_family(::Anki::Vector::external_interface::ObjectFamily value);
  private:
  ::Anki::Vector::external_interface::ObjectFamily _internal_object_family() const;
  void _internal_set_object_family(::Anki::Vector::external_interface::ObjectFamily value);
  public:

  // .Anki.Vector.external_interface.ObjectType object_type = 3;
  void clear_object_type();
  ::Anki::Vector::external_interface::ObjectType object_type() const;
  void set_object_type(::Anki::Vector::external_interface::ObjectType value);
  private:
  ::Anki::Vector::external_interface::ObjectType _internal_object_type() const;
  void _internal_set_object_type(::Anki::Vector::external_interface::ObjectType value);
  public:

  // int32 object_id = 4;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::int32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // float top_face_orientation_rad = 7;
  void clear_top_face_orientation_rad();
  float top_face_orientation_rad() const;
  void set_top_face_orientation_rad(float value);
  private:
  float _internal_top_face_orientation_rad() const;
  void _internal_set_top_face_orientation_rad(float value);
  public:

  // uint32 is_active = 8;
  void clear_is_active();
  ::PROTOBUF_NAMESPACE_ID::uint32 is_active() const;
  void set_is_active(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_is_active() const;
  void _internal_set_is_active(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  
  // Begin code inserted by Anki plugin.
  RobotObservedObject( ::google::protobuf::uint32 timestamp, ::Anki::Vector::external_interface::ObjectFamily object_family, ::Anki::Vector::external_interface::ObjectType object_type, ::google::protobuf::int32 object_id, CladRect* img_rect, PoseStruct* pose, float top_face_orientation_rad, ::google::protobuf::uint32 is_active );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.RobotObservedObject)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::CladRect* img_rect_;
  ::Anki::Vector::external_interface::PoseStruct* pose_;
  ::PROTOBUF_NAMESPACE_ID::uint32 timestamp_;
  int object_family_;
  int object_type_;
  ::PROTOBUF_NAMESPACE_ID::int32 object_id_;
  float top_face_orientation_rad_;
  ::PROTOBUF_NAMESPACE_ID::uint32 is_active_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CubeConnectionLost PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CubeConnectionLost) */ {
 public:
  inline CubeConnectionLost() : CubeConnectionLost(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CubeConnectionLost();

  CubeConnectionLost(const CubeConnectionLost& from);
  CubeConnectionLost(CubeConnectionLost&& from) noexcept
    : CubeConnectionLost() {
    *this = ::std::move(from);
  }

  inline CubeConnectionLost& operator=(const CubeConnectionLost& from) {
    CopyFrom(from);
    return *this;
  }
  inline CubeConnectionLost& operator=(CubeConnectionLost&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CubeConnectionLost& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CubeConnectionLost* internal_default_instance() {
    return reinterpret_cast<const CubeConnectionLost*>(
               &_CubeConnectionLost_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    21;

  friend void swap(CubeConnectionLost& a, CubeConnectionLost& b) {
    a.Swap(&b);
  }
  inline void Swap(CubeConnectionLost* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CubeConnectionLost* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CubeConnectionLost* New() const final {
    return CreateMaybeMessage<CubeConnectionLost>(nullptr);
  }

  CubeConnectionLost* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CubeConnectionLost>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CubeConnectionLost& from);
  void MergeFrom(const CubeConnectionLost& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CubeConnectionLost* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CubeConnectionLost";
  }
  protected:
  explicit CubeConnectionLost(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CubeConnectionLost)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class DeleteCustomObjectsRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.DeleteCustomObjectsRequest) */ {
 public:
  inline DeleteCustomObjectsRequest() : DeleteCustomObjectsRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~DeleteCustomObjectsRequest();

  DeleteCustomObjectsRequest(const DeleteCustomObjectsRequest& from);
  DeleteCustomObjectsRequest(DeleteCustomObjectsRequest&& from) noexcept
    : DeleteCustomObjectsRequest() {
    *this = ::std::move(from);
  }

  inline DeleteCustomObjectsRequest& operator=(const DeleteCustomObjectsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline DeleteCustomObjectsRequest& operator=(DeleteCustomObjectsRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const DeleteCustomObjectsRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const DeleteCustomObjectsRequest* internal_default_instance() {
    return reinterpret_cast<const DeleteCustomObjectsRequest*>(
               &_DeleteCustomObjectsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    22;

  friend void swap(DeleteCustomObjectsRequest& a, DeleteCustomObjectsRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(DeleteCustomObjectsRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DeleteCustomObjectsRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline DeleteCustomObjectsRequest* New() const final {
    return CreateMaybeMessage<DeleteCustomObjectsRequest>(nullptr);
  }

  DeleteCustomObjectsRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<DeleteCustomObjectsRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const DeleteCustomObjectsRequest& from);
  void MergeFrom(const DeleteCustomObjectsRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(DeleteCustomObjectsRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.DeleteCustomObjectsRequest";
  }
  protected:
  explicit DeleteCustomObjectsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kModeFieldNumber = 1,
  };
  // .Anki.Vector.external_interface.CustomObjectDeletionMode mode = 1;
  void clear_mode();
  ::Anki::Vector::external_interface::CustomObjectDeletionMode mode() const;
  void set_mode(::Anki::Vector::external_interface::CustomObjectDeletionMode value);
  private:
  ::Anki::Vector::external_interface::CustomObjectDeletionMode _internal_mode() const;
  void _internal_set_mode(::Anki::Vector::external_interface::CustomObjectDeletionMode value);
  public:

  
  // Begin code inserted by Anki plugin.
  explicit DeleteCustomObjectsRequest( ::Anki::Vector::external_interface::CustomObjectDeletionMode mode );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.DeleteCustomObjectsRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int mode_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class DeleteCustomObjectsResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.DeleteCustomObjectsResponse) */ {
 public:
  inline DeleteCustomObjectsResponse() : DeleteCustomObjectsResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~DeleteCustomObjectsResponse();

  DeleteCustomObjectsResponse(const DeleteCustomObjectsResponse& from);
  DeleteCustomObjectsResponse(DeleteCustomObjectsResponse&& from) noexcept
    : DeleteCustomObjectsResponse() {
    *this = ::std::move(from);
  }

  inline DeleteCustomObjectsResponse& operator=(const DeleteCustomObjectsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline DeleteCustomObjectsResponse& operator=(DeleteCustomObjectsResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const DeleteCustomObjectsResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const DeleteCustomObjectsResponse* internal_default_instance() {
    return reinterpret_cast<const DeleteCustomObjectsResponse*>(
               &_DeleteCustomObjectsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    23;

  friend void swap(DeleteCustomObjectsResponse& a, DeleteCustomObjectsResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(DeleteCustomObjectsResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DeleteCustomObjectsResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline DeleteCustomObjectsResponse* New() const final {
    return CreateMaybeMessage<DeleteCustomObjectsResponse>(nullptr);
  }

  DeleteCustomObjectsResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<DeleteCustomObjectsResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const DeleteCustomObjectsResponse& from);
  void MergeFrom(const DeleteCustomObjectsResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(DeleteCustomObjectsResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.DeleteCustomObjectsResponse";
  }
  protected:
  explicit DeleteCustomObjectsResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  
  // Begin code inserted by Anki plugin.
  explicit DeleteCustomObjectsResponse( ResponseStatus* status );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.DeleteCustomObjectsResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CreateFixedCustomObjectRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CreateFixedCustomObjectRequest) */ {
 public:
  inline CreateFixedCustomObjectRequest() : CreateFixedCustomObjectRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CreateFixedCustomObjectRequest();

  CreateFixedCustomObjectRequest(const CreateFixedCustomObjectRequest& from);
  CreateFixedCustomObjectRequest(CreateFixedCustomObjectRequest&& from) noexcept
    : CreateFixedCustomObjectRequest() {
    *this = ::std::move(from);
  }

  inline CreateFixedCustomObjectRequest& operator=(const CreateFixedCustomObjectRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline CreateFixedCustomObjectRequest& operator=(CreateFixedCustomObjectRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CreateFixedCustomObjectRequest& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CreateFixedCustomObjectRequest* internal_default_instance() {
    return reinterpret_cast<const CreateFixedCustomObjectRequest*>(
               &_CreateFixedCustomObjectRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    24;

  friend void swap(CreateFixedCustomObjectRequest& a, CreateFixedCustomObjectRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(CreateFixedCustomObjectRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CreateFixedCustomObjectRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CreateFixedCustomObjectRequest* New() const final {
    return CreateMaybeMessage<CreateFixedCustomObjectRequest>(nullptr);
  }

  CreateFixedCustomObjectRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CreateFixedCustomObjectRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CreateFixedCustomObjectRequest& from);
  void MergeFrom(const CreateFixedCustomObjectRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CreateFixedCustomObjectRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CreateFixedCustomObjectRequest";
  }
  protected:
  explicit CreateFixedCustomObjectRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kPoseFieldNumber = 1,
    kXSizeMmFieldNumber = 2,
    kYSizeMmFieldNumber = 3,
    kZSizeMmFieldNumber = 4,
  };
  // .Anki.Vector.external_interface.PoseStruct pose = 1;
  bool has_pose() const;
  private:
  bool _internal_has_pose() const;
  public:
  void clear_pose();
  const ::Anki::Vector::external_interface::PoseStruct& pose() const;
  ::Anki::Vector::external_interface::PoseStruct* release_pose();
  ::Anki::Vector::external_interface::PoseStruct* mutable_pose();
  void set_allocated_pose(::Anki::Vector::external_interface::PoseStruct* pose);
  private:
  const ::Anki::Vector::external_interface::PoseStruct& _internal_pose() const;
  ::Anki::Vector::external_interface::PoseStruct* _internal_mutable_pose();
  public:
  void unsafe_arena_set_allocated_pose(
      ::Anki::Vector::external_interface::PoseStruct* pose);
  ::Anki::Vector::external_interface::PoseStruct* unsafe_arena_release_pose();

  // float x_size_mm = 2;
  void clear_x_size_mm();
  float x_size_mm() const;
  void set_x_size_mm(float value);
  private:
  float _internal_x_size_mm() const;
  void _internal_set_x_size_mm(float value);
  public:

  // float y_size_mm = 3;
  void clear_y_size_mm();
  float y_size_mm() const;
  void set_y_size_mm(float value);
  private:
  float _internal_y_size_mm() const;
  void _internal_set_y_size_mm(float value);
  public:

  // float z_size_mm = 4;
  void clear_z_size_mm();
  float z_size_mm() const;
  void set_z_size_mm(float value);
  private:
  float _internal_z_size_mm() const;
  void _internal_set_z_size_mm(float value);
  public:

  
  // Begin code inserted by Anki plugin.
  CreateFixedCustomObjectRequest( PoseStruct* pose, float x_size_mm, float y_size_mm, float z_size_mm );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CreateFixedCustomObjectRequest)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::PoseStruct* pose_;
  float x_size_mm_;
  float y_size_mm_;
  float z_size_mm_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CreateFixedCustomObjectResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CreateFixedCustomObjectResponse) */ {
 public:
  inline CreateFixedCustomObjectResponse() : CreateFixedCustomObjectResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CreateFixedCustomObjectResponse();

  CreateFixedCustomObjectResponse(const CreateFixedCustomObjectResponse& from);
  CreateFixedCustomObjectResponse(CreateFixedCustomObjectResponse&& from) noexcept
    : CreateFixedCustomObjectResponse() {
    *this = ::std::move(from);
  }

  inline CreateFixedCustomObjectResponse& operator=(const CreateFixedCustomObjectResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline CreateFixedCustomObjectResponse& operator=(CreateFixedCustomObjectResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CreateFixedCustomObjectResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CreateFixedCustomObjectResponse* internal_default_instance() {
    return reinterpret_cast<const CreateFixedCustomObjectResponse*>(
               &_CreateFixedCustomObjectResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    25;

  friend void swap(CreateFixedCustomObjectResponse& a, CreateFixedCustomObjectResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(CreateFixedCustomObjectResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CreateFixedCustomObjectResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CreateFixedCustomObjectResponse* New() const final {
    return CreateMaybeMessage<CreateFixedCustomObjectResponse>(nullptr);
  }

  CreateFixedCustomObjectResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CreateFixedCustomObjectResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CreateFixedCustomObjectResponse& from);
  void MergeFrom(const CreateFixedCustomObjectResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CreateFixedCustomObjectResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CreateFixedCustomObjectResponse";
  }
  protected:
  explicit CreateFixedCustomObjectResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
    kObjectIdFieldNumber = 2,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  // uint32 object_id = 2;
  void clear_object_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id() const;
  void set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_object_id() const;
  void _internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  
  // Begin code inserted by Anki plugin.
  CreateFixedCustomObjectResponse( ResponseStatus* status, ::google::protobuf::uint32 object_id );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CreateFixedCustomObjectResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  ::PROTOBUF_NAMESPACE_ID::uint32 object_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CustomBoxDefinition PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CustomBoxDefinition) */ {
 public:
  inline CustomBoxDefinition() : CustomBoxDefinition(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CustomBoxDefinition();

  CustomBoxDefinition(const CustomBoxDefinition& from);
  CustomBoxDefinition(CustomBoxDefinition&& from) noexcept
    : CustomBoxDefinition() {
    *this = ::std::move(from);
  }

  inline CustomBoxDefinition& operator=(const CustomBoxDefinition& from) {
    CopyFrom(from);
    return *this;
  }
  inline CustomBoxDefinition& operator=(CustomBoxDefinition&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CustomBoxDefinition& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CustomBoxDefinition* internal_default_instance() {
    return reinterpret_cast<const CustomBoxDefinition*>(
               &_CustomBoxDefinition_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    26;

  friend void swap(CustomBoxDefinition& a, CustomBoxDefinition& b) {
    a.Swap(&b);
  }
  inline void Swap(CustomBoxDefinition* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CustomBoxDefinition* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CustomBoxDefinition* New() const final {
    return CreateMaybeMessage<CustomBoxDefinition>(nullptr);
  }

  CustomBoxDefinition* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CustomBoxDefinition>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CustomBoxDefinition& from);
  void MergeFrom(const CustomBoxDefinition& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CustomBoxDefinition* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CustomBoxDefinition";
  }
  protected:
  explicit CustomBoxDefinition(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kMarkerFrontFieldNumber = 1,
    kMarkerBackFieldNumber = 2,
    kMarkerTopFieldNumber = 3,
    kMarkerBottomFieldNumber = 4,
    kMarkerLeftFieldNumber = 5,
    kMarkerRightFieldNumber = 6,
    kXSizeMmFieldNumber = 7,
    kYSizeMmFieldNumber = 8,
    kZSizeMmFieldNumber = 9,
    kMarkerWidthMmFieldNumber = 10,
    kMarkerHeightMmFieldNumber = 11,
  };
  // .Anki.Vector.external_interface.CustomObjectMarker marker_front = 1;
  void clear_marker_front();
  ::Anki::Vector::external_interface::CustomObjectMarker marker_front() const;
  void set_marker_front(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker_front() const;
  void _internal_set_marker_front(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // .Anki.Vector.external_interface.CustomObjectMarker marker_back = 2;
  void clear_marker_back();
  ::Anki::Vector::external_interface::CustomObjectMarker marker_back() const;
  void set_marker_back(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker_back() const;
  void _internal_set_marker_back(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // .Anki.Vector.external_interface.CustomObjectMarker marker_top = 3;
  void clear_marker_top();
  ::Anki::Vector::external_interface::CustomObjectMarker marker_top() const;
  void set_marker_top(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker_top() const;
  void _internal_set_marker_top(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // .Anki.Vector.external_interface.CustomObjectMarker marker_bottom = 4;
  void clear_marker_bottom();
  ::Anki::Vector::external_interface::CustomObjectMarker marker_bottom() const;
  void set_marker_bottom(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker_bottom() const;
  void _internal_set_marker_bottom(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // .Anki.Vector.external_interface.CustomObjectMarker marker_left = 5;
  void clear_marker_left();
  ::Anki::Vector::external_interface::CustomObjectMarker marker_left() const;
  void set_marker_left(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker_left() const;
  void _internal_set_marker_left(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // .Anki.Vector.external_interface.CustomObjectMarker marker_right = 6;
  void clear_marker_right();
  ::Anki::Vector::external_interface::CustomObjectMarker marker_right() const;
  void set_marker_right(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker_right() const;
  void _internal_set_marker_right(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // float x_size_mm = 7;
  void clear_x_size_mm();
  float x_size_mm() const;
  void set_x_size_mm(float value);
  private:
  float _internal_x_size_mm() const;
  void _internal_set_x_size_mm(float value);
  public:

  // float y_size_mm = 8;
  void clear_y_size_mm();
  float y_size_mm() const;
  void set_y_size_mm(float value);
  private:
  float _internal_y_size_mm() const;
  void _internal_set_y_size_mm(float value);
  public:

  // float z_size_mm = 9;
  void clear_z_size_mm();
  float z_size_mm() const;
  void set_z_size_mm(float value);
  private:
  float _internal_z_size_mm() const;
  void _internal_set_z_size_mm(float value);
  public:

  // float marker_width_mm = 10;
  void clear_marker_width_mm();
  float marker_width_mm() const;
  void set_marker_width_mm(float value);
  private:
  float _internal_marker_width_mm() const;
  void _internal_set_marker_width_mm(float value);
  public:

  // float marker_height_mm = 11;
  void clear_marker_height_mm();
  float marker_height_mm() const;
  void set_marker_height_mm(float value);
  private:
  float _internal_marker_height_mm() const;
  void _internal_set_marker_height_mm(float value);
  public:

  
  // Begin code inserted by Anki plugin.
  CustomBoxDefinition( ::Anki::Vector::external_interface::CustomObjectMarker marker_front, ::Anki::Vector::external_interface::CustomObjectMarker marker_back, ::Anki::Vector::external_interface::CustomObjectMarker marker_top, ::Anki::Vector::external_interface::CustomObjectMarker marker_bottom, ::Anki::Vector::external_interface::CustomObjectMarker marker_left, ::Anki::Vector::external_interface::CustomObjectMarker marker_right, float x_size_mm, float y_size_mm, float z_size_mm, float marker_width_mm, float marker_height_mm );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CustomBoxDefinition)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int marker_front_;
  int marker_back_;
  int marker_top_;
  int marker_bottom_;
  int marker_left_;
  int marker_right_;
  float x_size_mm_;
  float y_size_mm_;
  float z_size_mm_;
  float marker_width_mm_;
  float marker_height_mm_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CustomCubeDefinition PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CustomCubeDefinition) */ {
 public:
  inline CustomCubeDefinition() : CustomCubeDefinition(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CustomCubeDefinition();

  CustomCubeDefinition(const CustomCubeDefinition& from);
  CustomCubeDefinition(CustomCubeDefinition&& from) noexcept
    : CustomCubeDefinition() {
    *this = ::std::move(from);
  }

  inline CustomCubeDefinition& operator=(const CustomCubeDefinition& from) {
    CopyFrom(from);
    return *this;
  }
  inline CustomCubeDefinition& operator=(CustomCubeDefinition&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CustomCubeDefinition& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CustomCubeDefinition* internal_default_instance() {
    return reinterpret_cast<const CustomCubeDefinition*>(
               &_CustomCubeDefinition_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    27;

  friend void swap(CustomCubeDefinition& a, CustomCubeDefinition& b) {
    a.Swap(&b);
  }
  inline void Swap(CustomCubeDefinition* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CustomCubeDefinition* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CustomCubeDefinition* New() const final {
    return CreateMaybeMessage<CustomCubeDefinition>(nullptr);
  }

  CustomCubeDefinition* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CustomCubeDefinition>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CustomCubeDefinition& from);
  void MergeFrom(const CustomCubeDefinition& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CustomCubeDefinition* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CustomCubeDefinition";
  }
  protected:
  explicit CustomCubeDefinition(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kMarkerFieldNumber = 1,
    kSizeMmFieldNumber = 2,
    kMarkerWidthMmFieldNumber = 3,
    kMarkerHeightMmFieldNumber = 4,
  };
  // .Anki.Vector.external_interface.CustomObjectMarker marker = 1;
  void clear_marker();
  ::Anki::Vector::external_interface::CustomObjectMarker marker() const;
  void set_marker(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker() const;
  void _internal_set_marker(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // float size_mm = 2;
  void clear_size_mm();
  float size_mm() const;
  void set_size_mm(float value);
  private:
  float _internal_size_mm() const;
  void _internal_set_size_mm(float value);
  public:

  // float marker_width_mm = 3;
  void clear_marker_width_mm();
  float marker_width_mm() const;
  void set_marker_width_mm(float value);
  private:
  float _internal_marker_width_mm() const;
  void _internal_set_marker_width_mm(float value);
  public:

  // float marker_height_mm = 4;
  void clear_marker_height_mm();
  float marker_height_mm() const;
  void set_marker_height_mm(float value);
  private:
  float _internal_marker_height_mm() const;
  void _internal_set_marker_height_mm(float value);
  public:

  
  // Begin code inserted by Anki plugin.
  CustomCubeDefinition( ::Anki::Vector::external_interface::CustomObjectMarker marker, float size_mm, float marker_width_mm, float marker_height_mm );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CustomCubeDefinition)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int marker_;
  float size_mm_;
  float marker_width_mm_;
  float marker_height_mm_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class CustomWallDefinition PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.CustomWallDefinition) */ {
 public:
  inline CustomWallDefinition() : CustomWallDefinition(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~CustomWallDefinition();

  CustomWallDefinition(const CustomWallDefinition& from);
  CustomWallDefinition(CustomWallDefinition&& from) noexcept
    : CustomWallDefinition() {
    *this = ::std::move(from);
  }

  inline CustomWallDefinition& operator=(const CustomWallDefinition& from) {
    CopyFrom(from);
    return *this;
  }
  inline CustomWallDefinition& operator=(CustomWallDefinition&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CustomWallDefinition& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CustomWallDefinition* internal_default_instance() {
    return reinterpret_cast<const CustomWallDefinition*>(
               &_CustomWallDefinition_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    28;

  friend void swap(CustomWallDefinition& a, CustomWallDefinition& b) {
    a.Swap(&b);
  }
  inline void Swap(CustomWallDefinition* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CustomWallDefinition* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline CustomWallDefinition* New() const final {
    return CreateMaybeMessage<CustomWallDefinition>(nullptr);
  }

  CustomWallDefinition* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CustomWallDefinition>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CustomWallDefinition& from);
  void MergeFrom(const CustomWallDefinition& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CustomWallDefinition* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.CustomWallDefinition";
  }
  protected:
  explicit CustomWallDefinition(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kMarkerFieldNumber = 1,
    kWidthMmFieldNumber = 2,
    kHeightMmFieldNumber = 3,
    kMarkerWidthMmFieldNumber = 4,
    kMarkerHeightMmFieldNumber = 5,
  };
  // .Anki.Vector.external_interface.CustomObjectMarker marker = 1;
  void clear_marker();
  ::Anki::Vector::external_interface::CustomObjectMarker marker() const;
  void set_marker(::Anki::Vector::external_interface::CustomObjectMarker value);
  private:
  ::Anki::Vector::external_interface::CustomObjectMarker _internal_marker() const;
  void _internal_set_marker(::Anki::Vector::external_interface::CustomObjectMarker value);
  public:

  // float width_mm = 2;
  void clear_width_mm();
  float width_mm() const;
  void set_width_mm(float value);
  private:
  float _internal_width_mm() const;
  void _internal_set_width_mm(float value);
  public:

  // float height_mm = 3;
  void clear_height_mm();
  float height_mm() const;
  void set_height_mm(float value);
  private:
  float _internal_height_mm() const;
  void _internal_set_height_mm(float value);
  public:

  // float marker_width_mm = 4;
  void clear_marker_width_mm();
  float marker_width_mm() const;
  void set_marker_width_mm(float value);
  private:
  float _internal_marker_width_mm() const;
  void _internal_set_marker_width_mm(float value);
  public:

  // float marker_height_mm = 5;
  void clear_marker_height_mm();
  float marker_height_mm() const;
  void set_marker_height_mm(float value);
  private:
  float _internal_marker_height_mm() const;
  void _internal_set_marker_height_mm(float value);
  public:

  
  // Begin code inserted by Anki plugin.
  CustomWallDefinition( ::Anki::Vector::external_interface::CustomObjectMarker marker, float width_mm, float height_mm, float marker_width_mm, float marker_height_mm );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.CustomWallDefinition)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int marker_;
  float width_mm_;
  float height_mm_;
  float marker_width_mm_;
  float marker_height_mm_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class DefineCustomObjectRequest PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.DefineCustomObjectRequest) */ {
 public:
  inline DefineCustomObjectRequest() : DefineCustomObjectRequest(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~DefineCustomObjectRequest();

  DefineCustomObjectRequest(const DefineCustomObjectRequest& from);
  DefineCustomObjectRequest(DefineCustomObjectRequest&& from) noexcept
    : DefineCustomObjectRequest() {
    *this = ::std::move(from);
  }

  inline DefineCustomObjectRequest& operator=(const DefineCustomObjectRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline DefineCustomObjectRequest& operator=(DefineCustomObjectRequest&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const DefineCustomObjectRequest& default_instance();

  enum CustomObjectDefinitionCase {
    kCustomBox = 3,
    kCustomCube = 4,
    kCustomWall = 5,
    CUSTOM_OBJECT_DEFINITION_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const DefineCustomObjectRequest* internal_default_instance() {
    return reinterpret_cast<const DefineCustomObjectRequest*>(
               &_DefineCustomObjectRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    29;

  friend void swap(DefineCustomObjectRequest& a, DefineCustomObjectRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(DefineCustomObjectRequest* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DefineCustomObjectRequest* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline DefineCustomObjectRequest* New() const final {
    return CreateMaybeMessage<DefineCustomObjectRequest>(nullptr);
  }

  DefineCustomObjectRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<DefineCustomObjectRequest>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const DefineCustomObjectRequest& from);
  void MergeFrom(const DefineCustomObjectRequest& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(DefineCustomObjectRequest* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.DefineCustomObjectRequest";
  }
  protected:
  explicit DefineCustomObjectRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kCustomTypeFieldNumber = 1,
    kIsUniqueFieldNumber = 2,
    kCustomBoxFieldNumber = 3,
    kCustomCubeFieldNumber = 4,
    kCustomWallFieldNumber = 5,
  };
  // .Anki.Vector.external_interface.CustomType custom_type = 1;
  void clear_custom_type();
  ::Anki::Vector::external_interface::CustomType custom_type() const;
  void set_custom_type(::Anki::Vector::external_interface::CustomType value);
  private:
  ::Anki::Vector::external_interface::CustomType _internal_custom_type() const;
  void _internal_set_custom_type(::Anki::Vector::external_interface::CustomType value);
  public:

  // bool is_unique = 2;
  void clear_is_unique();
  bool is_unique() const;
  void set_is_unique(bool value);
  private:
  bool _internal_is_unique() const;
  void _internal_set_is_unique(bool value);
  public:

  // .Anki.Vector.external_interface.CustomBoxDefinition custom_box = 3;
  bool has_custom_box() const;
  private:
  bool _internal_has_custom_box() const;
  public:
  void clear_custom_box();
  const ::Anki::Vector::external_interface::CustomBoxDefinition& custom_box() const;
  ::Anki::Vector::external_interface::CustomBoxDefinition* release_custom_box();
  ::Anki::Vector::external_interface::CustomBoxDefinition* mutable_custom_box();
  void set_allocated_custom_box(::Anki::Vector::external_interface::CustomBoxDefinition* custom_box);
  private:
  const ::Anki::Vector::external_interface::CustomBoxDefinition& _internal_custom_box() const;
  ::Anki::Vector::external_interface::CustomBoxDefinition* _internal_mutable_custom_box();
  public:
  void unsafe_arena_set_allocated_custom_box(
      ::Anki::Vector::external_interface::CustomBoxDefinition* custom_box);
  ::Anki::Vector::external_interface::CustomBoxDefinition* unsafe_arena_release_custom_box();

  // .Anki.Vector.external_interface.CustomCubeDefinition custom_cube = 4;
  bool has_custom_cube() const;
  private:
  bool _internal_has_custom_cube() const;
  public:
  void clear_custom_cube();
  const ::Anki::Vector::external_interface::CustomCubeDefinition& custom_cube() const;
  ::Anki::Vector::external_interface::CustomCubeDefinition* release_custom_cube();
  ::Anki::Vector::external_interface::CustomCubeDefinition* mutable_custom_cube();
  void set_allocated_custom_cube(::Anki::Vector::external_interface::CustomCubeDefinition* custom_cube);
  private:
  const ::Anki::Vector::external_interface::CustomCubeDefinition& _internal_custom_cube() const;
  ::Anki::Vector::external_interface::CustomCubeDefinition* _internal_mutable_custom_cube();
  public:
  void unsafe_arena_set_allocated_custom_cube(
      ::Anki::Vector::external_interface::CustomCubeDefinition* custom_cube);
  ::Anki::Vector::external_interface::CustomCubeDefinition* unsafe_arena_release_custom_cube();

  // .Anki.Vector.external_interface.CustomWallDefinition custom_wall = 5;
  bool has_custom_wall() const;
  private:
  bool _internal_has_custom_wall() const;
  public:
  void clear_custom_wall();
  const ::Anki::Vector::external_interface::CustomWallDefinition& custom_wall() const;
  ::Anki::Vector::external_interface::CustomWallDefinition* release_custom_wall();
  ::Anki::Vector::external_interface::CustomWallDefinition* mutable_custom_wall();
  void set_allocated_custom_wall(::Anki::Vector::external_interface::CustomWallDefinition* custom_wall);
  private:
  const ::Anki::Vector::external_interface::CustomWallDefinition& _internal_custom_wall() const;
  ::Anki::Vector::external_interface::CustomWallDefinition* _internal_mutable_custom_wall();
  public:
  void unsafe_arena_set_allocated_custom_wall(
      ::Anki::Vector::external_interface::CustomWallDefinition* custom_wall);
  ::Anki::Vector::external_interface::CustomWallDefinition* unsafe_arena_release_custom_wall();

  void clear_custom_object_definition();
  CustomObjectDefinitionCase custom_object_definition_case() const;
  
  // Begin code inserted by Anki plugin.
  explicit DefineCustomObjectRequest( ::Anki::Vector::external_interface::CustomType custom_type );
  explicit DefineCustomObjectRequest( bool is_unique );
  explicit DefineCustomObjectRequest( CustomBoxDefinition* custom_box );
  explicit DefineCustomObjectRequest( CustomCubeDefinition* custom_cube );
  explicit DefineCustomObjectRequest( CustomWallDefinition* custom_wall );
  // End code inserted by Anki plugin.
  
  
  // Begin code inserted by Anki plugin.
  inline ::Anki::Vector::external_interface::DefineCustomObjectRequestTag GetTag() const {
    return static_cast<::Anki::Vector::external_interface::DefineCustomObjectRequestTag>( _oneof_case_[0] );
  }
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.DefineCustomObjectRequest)
 private:
  class _Internal;
  void set_has_custom_box();
  void set_has_custom_cube();
  void set_has_custom_wall();

  inline bool has_custom_object_definition() const;
  inline void clear_has_custom_object_definition();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int custom_type_;
  bool is_unique_;
  union CustomObjectDefinitionUnion {
    CustomObjectDefinitionUnion() {}
    ::Anki::Vector::external_interface::CustomBoxDefinition* custom_box_;
    ::Anki::Vector::external_interface::CustomCubeDefinition* custom_cube_;
    ::Anki::Vector::external_interface::CustomWallDefinition* custom_wall_;
  } custom_object_definition_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class DefineCustomObjectResponse PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.DefineCustomObjectResponse) */ {
 public:
  inline DefineCustomObjectResponse() : DefineCustomObjectResponse(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~DefineCustomObjectResponse();

  DefineCustomObjectResponse(const DefineCustomObjectResponse& from);
  DefineCustomObjectResponse(DefineCustomObjectResponse&& from) noexcept
    : DefineCustomObjectResponse() {
    *this = ::std::move(from);
  }

  inline DefineCustomObjectResponse& operator=(const DefineCustomObjectResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline DefineCustomObjectResponse& operator=(DefineCustomObjectResponse&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const DefineCustomObjectResponse& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const DefineCustomObjectResponse* internal_default_instance() {
    return reinterpret_cast<const DefineCustomObjectResponse*>(
               &_DefineCustomObjectResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    30;

  friend void swap(DefineCustomObjectResponse& a, DefineCustomObjectResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(DefineCustomObjectResponse* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DefineCustomObjectResponse* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline DefineCustomObjectResponse* New() const final {
    return CreateMaybeMessage<DefineCustomObjectResponse>(nullptr);
  }

  DefineCustomObjectResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<DefineCustomObjectResponse>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const DefineCustomObjectResponse& from);
  void MergeFrom(const DefineCustomObjectResponse& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(DefineCustomObjectResponse* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.DefineCustomObjectResponse";
  }
  protected:
  explicit DefineCustomObjectResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStatusFieldNumber = 1,
    kSuccessFieldNumber = 2,
  };
  // .Anki.Vector.external_interface.ResponseStatus status = 1;
  bool has_status() const;
  private:
  bool _internal_has_status() const;
  public:
  void clear_status();
  const ::Anki::Vector::external_interface::ResponseStatus& status() const;
  ::Anki::Vector::external_interface::ResponseStatus* release_status();
  ::Anki::Vector::external_interface::ResponseStatus* mutable_status();
  void set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status);
  private:
  const ::Anki::Vector::external_interface::ResponseStatus& _internal_status() const;
  ::Anki::Vector::external_interface::ResponseStatus* _internal_mutable_status();
  public:
  void unsafe_arena_set_allocated_status(
      ::Anki::Vector::external_interface::ResponseStatus* status);
  ::Anki::Vector::external_interface::ResponseStatus* unsafe_arena_release_status();

  // bool success = 2;
  void clear_success();
  bool success() const;
  void set_success(bool value);
  private:
  bool _internal_success() const;
  void _internal_set_success(bool value);
  public:

  
  // Begin code inserted by Anki plugin.
  DefineCustomObjectResponse( ResponseStatus* status, bool success );
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.DefineCustomObjectResponse)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Anki::Vector::external_interface::ResponseStatus* status_;
  bool success_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_cube_2eproto;
};
// -------------------------------------------------------------------

class ObjectEvent PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Anki.Vector.external_interface.ObjectEvent) */ {
 public:
  inline ObjectEvent() : ObjectEvent(static_cast<::PROTOBUF_NAMESPACE_ID::Arena*>(nullptr)) {}
  virtual ~ObjectEvent();

  ObjectEvent(const ObjectEvent& from);
  ObjectEvent(ObjectEvent&& from) noexcept
    : ObjectEvent() {
    *this = ::std::move(from);
  }

  inline ObjectEvent& operator=(const ObjectEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObjectEvent& operator=(ObjectEvent&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObjectEvent& default_instance();

  enum ObjectEventTypeCase {
    kObjectAvailable = 1,
    kObjectConnectionState = 2,
    kObjectMoved = 3,
    kObjectStoppedMoving = 4,
    kObjectUpAxisChanged = 5,
    kObjectTapped = 6,
    kRobotObservedObject = 7,
    kCubeConnectionLost = 8,
    OBJECT_EVENT_TYPE_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObjectEvent* internal_default_instance() {
    return reinterpret_cast<const ObjectEvent*>(
               &_ObjectEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    31;

  friend void swap(ObjectEvent& a, ObjectEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(ObjectEvent* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ObjectEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline ObjectEvent* New() const final {
    return CreateMaybeMessage<ObjectEvent>(nullptr);
  }

  ObjectEvent* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObjectEvent>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObjectEvent& from);
  void MergeFrom(const ObjectEvent& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObjectEvent* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Anki.Vector.external_interface.ObjectEvent";
  }
  protected:
  explicit ObjectEvent(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_cube_2eproto);
    return ::descriptor_table_cube_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kObjectAvailableFieldNumber = 1,
    kObjectConnectionStateFieldNumber = 2,
    kObjectMovedFieldNumber = 3,
    kObjectStoppedMovingFieldNumber = 4,
    kObjectUpAxisChangedFieldNumber = 5,
    kObjectTappedFieldNumber = 6,
    kRobotObservedObjectFieldNumber = 7,
    kCubeConnectionLostFieldNumber = 8,
  };
  // .Anki.Vector.external_interface.ObjectAvailable object_available = 1;
  bool has_object_available() const;
  private:
  bool _internal_has_object_available() const;
  public:
  void clear_object_available();
  const ::Anki::Vector::external_interface::ObjectAvailable& object_available() const;
  ::Anki::Vector::external_interface::ObjectAvailable* release_object_available();
  ::Anki::Vector::external_interface::ObjectAvailable* mutable_object_available();
  void set_allocated_object_available(::Anki::Vector::external_interface::ObjectAvailable* object_available);
  private:
  const ::Anki::Vector::external_interface::ObjectAvailable& _internal_object_available() const;
  ::Anki::Vector::external_interface::ObjectAvailable* _internal_mutable_object_available();
  public:
  void unsafe_arena_set_allocated_object_available(
      ::Anki::Vector::external_interface::ObjectAvailable* object_available);
  ::Anki::Vector::external_interface::ObjectAvailable* unsafe_arena_release_object_available();

  // .Anki.Vector.external_interface.ObjectConnectionState object_connection_state = 2;
  bool has_object_connection_state() const;
  private:
  bool _internal_has_object_connection_state() const;
  public:
  void clear_object_connection_state();
  const ::Anki::Vector::external_interface::ObjectConnectionState& object_connection_state() const;
  ::Anki::Vector::external_interface::ObjectConnectionState* release_object_connection_state();
  ::Anki::Vector::external_interface::ObjectConnectionState* mutable_object_connection_state();
  void set_allocated_object_connection_state(::Anki::Vector::external_interface::ObjectConnectionState* object_connection_state);
  private:
  const ::Anki::Vector::external_interface::ObjectConnectionState& _internal_object_connection_state() const;
  ::Anki::Vector::external_interface::ObjectConnectionState* _internal_mutable_object_connection_state();
  public:
  void unsafe_arena_set_allocated_object_connection_state(
      ::Anki::Vector::external_interface::ObjectConnectionState* object_connection_state);
  ::Anki::Vector::external_interface::ObjectConnectionState* unsafe_arena_release_object_connection_state();

  // .Anki.Vector.external_interface.ObjectMoved object_moved = 3;
  bool has_object_moved() const;
  private:
  bool _internal_has_object_moved() const;
  public:
  void clear_object_moved();
  const ::Anki::Vector::external_interface::ObjectMoved& object_moved() const;
  ::Anki::Vector::external_interface::ObjectMoved* release_object_moved();
  ::Anki::Vector::external_interface::ObjectMoved* mutable_object_moved();
  void set_allocated_object_moved(::Anki::Vector::external_interface::ObjectMoved* object_moved);
  private:
  const ::Anki::Vector::external_interface::ObjectMoved& _internal_object_moved() const;
  ::Anki::Vector::external_interface::ObjectMoved* _internal_mutable_object_moved();
  public:
  void unsafe_arena_set_allocated_object_moved(
      ::Anki::Vector::external_interface::ObjectMoved* object_moved);
  ::Anki::Vector::external_interface::ObjectMoved* unsafe_arena_release_object_moved();

  // .Anki.Vector.external_interface.ObjectStoppedMoving object_stopped_moving = 4;
  bool has_object_stopped_moving() const;
  private:
  bool _internal_has_object_stopped_moving() const;
  public:
  void clear_object_stopped_moving();
  const ::Anki::Vector::external_interface::ObjectStoppedMoving& object_stopped_moving() const;
  ::Anki::Vector::external_interface::ObjectStoppedMoving* release_object_stopped_moving();
  ::Anki::Vector::external_interface::ObjectStoppedMoving* mutable_object_stopped_moving();
  void set_allocated_object_stopped_moving(::Anki::Vector::external_interface::ObjectStoppedMoving* object_stopped_moving);
  private:
  const ::Anki::Vector::external_interface::ObjectStoppedMoving& _internal_object_stopped_moving() const;
  ::Anki::Vector::external_interface::ObjectStoppedMoving* _internal_mutable_object_stopped_moving();
  public:
  void unsafe_arena_set_allocated_object_stopped_moving(
      ::Anki::Vector::external_interface::ObjectStoppedMoving* object_stopped_moving);
  ::Anki::Vector::external_interface::ObjectStoppedMoving* unsafe_arena_release_object_stopped_moving();

  // .Anki.Vector.external_interface.ObjectUpAxisChanged object_up_axis_changed = 5;
  bool has_object_up_axis_changed() const;
  private:
  bool _internal_has_object_up_axis_changed() const;
  public:
  void clear_object_up_axis_changed();
  const ::Anki::Vector::external_interface::ObjectUpAxisChanged& object_up_axis_changed() const;
  ::Anki::Vector::external_interface::ObjectUpAxisChanged* release_object_up_axis_changed();
  ::Anki::Vector::external_interface::ObjectUpAxisChanged* mutable_object_up_axis_changed();
  void set_allocated_object_up_axis_changed(::Anki::Vector::external_interface::ObjectUpAxisChanged* object_up_axis_changed);
  private:
  const ::Anki::Vector::external_interface::ObjectUpAxisChanged& _internal_object_up_axis_changed() const;
  ::Anki::Vector::external_interface::ObjectUpAxisChanged* _internal_mutable_object_up_axis_changed();
  public:
  void unsafe_arena_set_allocated_object_up_axis_changed(
      ::Anki::Vector::external_interface::ObjectUpAxisChanged* object_up_axis_changed);
  ::Anki::Vector::external_interface::ObjectUpAxisChanged* unsafe_arena_release_object_up_axis_changed();

  // .Anki.Vector.external_interface.ObjectTapped object_tapped = 6;
  bool has_object_tapped() const;
  private:
  bool _internal_has_object_tapped() const;
  public:
  void clear_object_tapped();
  const ::Anki::Vector::external_interface::ObjectTapped& object_tapped() const;
  ::Anki::Vector::external_interface::ObjectTapped* release_object_tapped();
  ::Anki::Vector::external_interface::ObjectTapped* mutable_object_tapped();
  void set_allocated_object_tapped(::Anki::Vector::external_interface::ObjectTapped* object_tapped);
  private:
  const ::Anki::Vector::external_interface::ObjectTapped& _internal_object_tapped() const;
  ::Anki::Vector::external_interface::ObjectTapped* _internal_mutable_object_tapped();
  public:
  void unsafe_arena_set_allocated_object_tapped(
      ::Anki::Vector::external_interface::ObjectTapped* object_tapped);
  ::Anki::Vector::external_interface::ObjectTapped* unsafe_arena_release_object_tapped();

  // .Anki.Vector.external_interface.RobotObservedObject robot_observed_object = 7;
  bool has_robot_observed_object() const;
  private:
  bool _internal_has_robot_observed_object() const;
  public:
  void clear_robot_observed_object();
  const ::Anki::Vector::external_interface::RobotObservedObject& robot_observed_object() const;
  ::Anki::Vector::external_interface::RobotObservedObject* release_robot_observed_object();
  ::Anki::Vector::external_interface::RobotObservedObject* mutable_robot_observed_object();
  void set_allocated_robot_observed_object(::Anki::Vector::external_interface::RobotObservedObject* robot_observed_object);
  private:
  const ::Anki::Vector::external_interface::RobotObservedObject& _internal_robot_observed_object() const;
  ::Anki::Vector::external_interface::RobotObservedObject* _internal_mutable_robot_observed_object();
  public:
  void unsafe_arena_set_allocated_robot_observed_object(
      ::Anki::Vector::external_interface::RobotObservedObject* robot_observed_object);
  ::Anki::Vector::external_interface::RobotObservedObject* unsafe_arena_release_robot_observed_object();

  // .Anki.Vector.external_interface.CubeConnectionLost cube_connection_lost = 8;
  bool has_cube_connection_lost() const;
  private:
  bool _internal_has_cube_connection_lost() const;
  public:
  void clear_cube_connection_lost();
  const ::Anki::Vector::external_interface::CubeConnectionLost& cube_connection_lost() const;
  ::Anki::Vector::external_interface::CubeConnectionLost* release_cube_connection_lost();
  ::Anki::Vector::external_interface::CubeConnectionLost* mutable_cube_connection_lost();
  void set_allocated_cube_connection_lost(::Anki::Vector::external_interface::CubeConnectionLost* cube_connection_lost);
  private:
  const ::Anki::Vector::external_interface::CubeConnectionLost& _internal_cube_connection_lost() const;
  ::Anki::Vector::external_interface::CubeConnectionLost* _internal_mutable_cube_connection_lost();
  public:
  void unsafe_arena_set_allocated_cube_connection_lost(
      ::Anki::Vector::external_interface::CubeConnectionLost* cube_connection_lost);
  ::Anki::Vector::external_interface::CubeConnectionLost* unsafe_arena_release_cube_connection_lost();

  void clear_object_event_type();
  ObjectEventTypeCase object_event_type_case() const;
  
  // Begin code inserted by Anki plugin.
  explicit ObjectEvent( ObjectAvailable* object_available );
  explicit ObjectEvent( ObjectConnectionState* object_connection_state );
  explicit ObjectEvent( ObjectMoved* object_moved );
  explicit ObjectEvent( ObjectStoppedMoving* object_stopped_moving );
  explicit ObjectEvent( ObjectUpAxisChanged* object_up_axis_changed );
  explicit ObjectEvent( ObjectTapped* object_tapped );
  explicit ObjectEvent( RobotObservedObject* robot_observed_object );
  explicit ObjectEvent( CubeConnectionLost* cube_connection_lost );
  // End code inserted by Anki plugin.
  
  
  // Begin code inserted by Anki plugin.
  inline ::Anki::Vector::external_interface::ObjectEventTag GetTag() const {
    return static_cast<::Anki::Vector::external_interface::ObjectEventTag>( _oneof_case_[0] );
  }
  // End code inserted by Anki plugin.
  
  // @@protoc_insertion_point(class_scope:Anki.Vector.external_interface.ObjectEvent)
 private:
  class _Internal;
  void set_has_object_available();
  void set_has_object_connection_state();
  void set_has_object_moved();
  void set_has_object_stopped_moving();
  void set_has_object_up_axis_changed();
  void set_has_object_tapped();
  void set_has_robot_observed_object();
  void set_has_cube_connection_lost();

  inline bool has_object_event_type() const;
  inline void clear_has_object_event_type();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  union ObjectEventTypeUnion {
    ObjectEventTypeUnion() {}
    ::Anki::Vector::external_interface::ObjectAvailable* object_available_;
    ::Anki::Vector::external_interface::ObjectConnectionState* object_connection_state_;
    ::Anki::Vector::external_interface::ObjectMoved* object_moved_;
    ::Anki::Vector::external_interface::ObjectStoppedMoving* object_stopped_moving_;
    ::Anki::Vector::external_interface::ObjectUpAxisChanged* object_up_axis_changed_;
    ::Anki::Vector::external_interface::ObjectTapped* object_tapped_;
    ::Anki::Vector::external_interface::RobotObservedObject* robot_observed_object_;
    ::Anki::Vector::external_interface::CubeConnectionLost* cube_connection_lost_;
  } object_event_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_cube_2eproto;
};
// ===================================================================


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

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// ConnectCubeRequest

// -------------------------------------------------------------------

// ConnectCubeResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool ConnectCubeResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool ConnectCubeResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& ConnectCubeResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& ConnectCubeResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ConnectCubeResponse.status)
  return _internal_status();
}
inline void ConnectCubeResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ConnectCubeResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* ConnectCubeResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* ConnectCubeResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ConnectCubeResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* ConnectCubeResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* ConnectCubeResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ConnectCubeResponse.status)
  return _internal_mutable_status();
}
inline void ConnectCubeResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.ConnectCubeResponse.status)
}

// bool success = 2;
inline void ConnectCubeResponse::clear_success() {
  success_ = false;
}
inline bool ConnectCubeResponse::_internal_success() const {
  return success_;
}
inline bool ConnectCubeResponse::success() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ConnectCubeResponse.success)
  return _internal_success();
}
inline void ConnectCubeResponse::_internal_set_success(bool value) {
  
  success_ = value;
}
inline void ConnectCubeResponse::set_success(bool value) {
  _internal_set_success(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ConnectCubeResponse.success)
}

// uint32 object_id = 3;
inline void ConnectCubeResponse::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ConnectCubeResponse::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ConnectCubeResponse::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ConnectCubeResponse.object_id)
  return _internal_object_id();
}
inline void ConnectCubeResponse::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void ConnectCubeResponse::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ConnectCubeResponse.object_id)
}

// string factory_id = 4;
inline void ConnectCubeResponse::clear_factory_id() {
  factory_id_.ClearToEmpty(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline const std::string& ConnectCubeResponse::factory_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
  return _internal_factory_id();
}
inline void ConnectCubeResponse::set_factory_id(const std::string& value) {
  _internal_set_factory_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
}
inline std::string* ConnectCubeResponse::mutable_factory_id() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
  return _internal_mutable_factory_id();
}
inline const std::string& ConnectCubeResponse::_internal_factory_id() const {
  return factory_id_.Get();
}
inline void ConnectCubeResponse::_internal_set_factory_id(const std::string& value) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value, GetArena());
}
inline void ConnectCubeResponse::set_factory_id(std::string&& value) {
  
  factory_id_.Set(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
}
inline void ConnectCubeResponse::set_factory_id(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArena());
  // @@protoc_insertion_point(field_set_char:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
}
inline void ConnectCubeResponse::set_factory_id(const char* value,
    size_t size) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
}
inline std::string* ConnectCubeResponse::_internal_mutable_factory_id() {
  
  return factory_id_.Mutable(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline std::string* ConnectCubeResponse::release_factory_id() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
  return factory_id_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void ConnectCubeResponse::set_allocated_factory_id(std::string* factory_id) {
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), factory_id,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
}
inline std::string* ConnectCubeResponse::unsafe_arena_release_factory_id() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
  GOOGLE_DCHECK(GetArena() != nullptr);
  
  return factory_id_.UnsafeArenaRelease(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArena());
}
inline void ConnectCubeResponse::unsafe_arena_set_allocated_factory_id(
    std::string* factory_id) {
  GOOGLE_DCHECK(GetArena() != nullptr);
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.UnsafeArenaSetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      factory_id, GetArena());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ConnectCubeResponse.factory_id)
}

// -------------------------------------------------------------------

// CubesAvailableRequest

// -------------------------------------------------------------------

// CubesAvailableResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool CubesAvailableResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool CubesAvailableResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& CubesAvailableResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& CubesAvailableResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CubesAvailableResponse.status)
  return _internal_status();
}
inline void CubesAvailableResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.CubesAvailableResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* CubesAvailableResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* CubesAvailableResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.CubesAvailableResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* CubesAvailableResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* CubesAvailableResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.CubesAvailableResponse.status)
  return _internal_mutable_status();
}
inline void CubesAvailableResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.CubesAvailableResponse.status)
}

// repeated string factory_ids = 2;
inline int CubesAvailableResponse::_internal_factory_ids_size() const {
  return factory_ids_.size();
}
inline int CubesAvailableResponse::factory_ids_size() const {
  return _internal_factory_ids_size();
}
inline void CubesAvailableResponse::clear_factory_ids() {
  factory_ids_.Clear();
}
inline std::string* CubesAvailableResponse::add_factory_ids() {
  // @@protoc_insertion_point(field_add_mutable:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
  return _internal_add_factory_ids();
}
inline const std::string& CubesAvailableResponse::_internal_factory_ids(int index) const {
  return factory_ids_.Get(index);
}
inline const std::string& CubesAvailableResponse::factory_ids(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
  return _internal_factory_ids(index);
}
inline std::string* CubesAvailableResponse::mutable_factory_ids(int index) {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
  return factory_ids_.Mutable(index);
}
inline void CubesAvailableResponse::set_factory_ids(int index, const std::string& value) {
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
  factory_ids_.Mutable(index)->assign(value);
}
inline void CubesAvailableResponse::set_factory_ids(int index, std::string&& value) {
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
  factory_ids_.Mutable(index)->assign(std::move(value));
}
inline void CubesAvailableResponse::set_factory_ids(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  factory_ids_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
}
inline void CubesAvailableResponse::set_factory_ids(int index, const char* value, size_t size) {
  factory_ids_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
}
inline std::string* CubesAvailableResponse::_internal_add_factory_ids() {
  return factory_ids_.Add();
}
inline void CubesAvailableResponse::add_factory_ids(const std::string& value) {
  factory_ids_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
}
inline void CubesAvailableResponse::add_factory_ids(std::string&& value) {
  factory_ids_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
}
inline void CubesAvailableResponse::add_factory_ids(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  factory_ids_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
}
inline void CubesAvailableResponse::add_factory_ids(const char* value, size_t size) {
  factory_ids_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
CubesAvailableResponse::factory_ids() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
  return factory_ids_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
CubesAvailableResponse::mutable_factory_ids() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.CubesAvailableResponse.factory_ids)
  return &factory_ids_;
}

// -------------------------------------------------------------------

// DisconnectCubeRequest

// -------------------------------------------------------------------

// DisconnectCubeResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool DisconnectCubeResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool DisconnectCubeResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& DisconnectCubeResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& DisconnectCubeResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DisconnectCubeResponse.status)
  return _internal_status();
}
inline void DisconnectCubeResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.DisconnectCubeResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* DisconnectCubeResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DisconnectCubeResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.DisconnectCubeResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DisconnectCubeResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DisconnectCubeResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.DisconnectCubeResponse.status)
  return _internal_mutable_status();
}
inline void DisconnectCubeResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.DisconnectCubeResponse.status)
}

// -------------------------------------------------------------------

// FlashCubeLightsRequest

// -------------------------------------------------------------------

// FlashCubeLightsResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool FlashCubeLightsResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool FlashCubeLightsResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& FlashCubeLightsResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& FlashCubeLightsResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.FlashCubeLightsResponse.status)
  return _internal_status();
}
inline void FlashCubeLightsResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.FlashCubeLightsResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* FlashCubeLightsResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* FlashCubeLightsResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.FlashCubeLightsResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* FlashCubeLightsResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* FlashCubeLightsResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.FlashCubeLightsResponse.status)
  return _internal_mutable_status();
}
inline void FlashCubeLightsResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.FlashCubeLightsResponse.status)
}

// -------------------------------------------------------------------

// ForgetPreferredCubeRequest

// -------------------------------------------------------------------

// ForgetPreferredCubeResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool ForgetPreferredCubeResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool ForgetPreferredCubeResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& ForgetPreferredCubeResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& ForgetPreferredCubeResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ForgetPreferredCubeResponse.status)
  return _internal_status();
}
inline void ForgetPreferredCubeResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ForgetPreferredCubeResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* ForgetPreferredCubeResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* ForgetPreferredCubeResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ForgetPreferredCubeResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* ForgetPreferredCubeResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* ForgetPreferredCubeResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ForgetPreferredCubeResponse.status)
  return _internal_mutable_status();
}
inline void ForgetPreferredCubeResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.ForgetPreferredCubeResponse.status)
}

// -------------------------------------------------------------------

// SetPreferredCubeRequest

// string factory_id = 1;
inline void SetPreferredCubeRequest::clear_factory_id() {
  factory_id_.ClearToEmpty(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline const std::string& SetPreferredCubeRequest::factory_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
  return _internal_factory_id();
}
inline void SetPreferredCubeRequest::set_factory_id(const std::string& value) {
  _internal_set_factory_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
}
inline std::string* SetPreferredCubeRequest::mutable_factory_id() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
  return _internal_mutable_factory_id();
}
inline const std::string& SetPreferredCubeRequest::_internal_factory_id() const {
  return factory_id_.Get();
}
inline void SetPreferredCubeRequest::_internal_set_factory_id(const std::string& value) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value, GetArena());
}
inline void SetPreferredCubeRequest::set_factory_id(std::string&& value) {
  
  factory_id_.Set(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
}
inline void SetPreferredCubeRequest::set_factory_id(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArena());
  // @@protoc_insertion_point(field_set_char:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
}
inline void SetPreferredCubeRequest::set_factory_id(const char* value,
    size_t size) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
}
inline std::string* SetPreferredCubeRequest::_internal_mutable_factory_id() {
  
  return factory_id_.Mutable(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline std::string* SetPreferredCubeRequest::release_factory_id() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
  return factory_id_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void SetPreferredCubeRequest::set_allocated_factory_id(std::string* factory_id) {
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), factory_id,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
}
inline std::string* SetPreferredCubeRequest::unsafe_arena_release_factory_id() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
  GOOGLE_DCHECK(GetArena() != nullptr);
  
  return factory_id_.UnsafeArenaRelease(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArena());
}
inline void SetPreferredCubeRequest::unsafe_arena_set_allocated_factory_id(
    std::string* factory_id) {
  GOOGLE_DCHECK(GetArena() != nullptr);
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.UnsafeArenaSetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      factory_id, GetArena());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.SetPreferredCubeRequest.factory_id)
}

// -------------------------------------------------------------------

// SetPreferredCubeResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool SetPreferredCubeResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool SetPreferredCubeResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& SetPreferredCubeResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& SetPreferredCubeResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetPreferredCubeResponse.status)
  return _internal_status();
}
inline void SetPreferredCubeResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.SetPreferredCubeResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetPreferredCubeResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetPreferredCubeResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.SetPreferredCubeResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetPreferredCubeResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetPreferredCubeResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.SetPreferredCubeResponse.status)
  return _internal_mutable_status();
}
inline void SetPreferredCubeResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.SetPreferredCubeResponse.status)
}

// -------------------------------------------------------------------

// SetCubeLightsRequest

// uint32 object_id = 1;
inline void SetCubeLightsRequest::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.object_id)
  return _internal_object_id();
}
inline void SetCubeLightsRequest::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void SetCubeLightsRequest::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.object_id)
}

// repeated uint32 on_color = 2;
inline int SetCubeLightsRequest::_internal_on_color_size() const {
  return on_color_.size();
}
inline int SetCubeLightsRequest::on_color_size() const {
  return _internal_on_color_size();
}
inline void SetCubeLightsRequest::clear_on_color() {
  on_color_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::_internal_on_color(int index) const {
  return on_color_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::on_color(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.on_color)
  return _internal_on_color(index);
}
inline void SetCubeLightsRequest::set_on_color(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value) {
  on_color_.Set(index, value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.on_color)
}
inline void SetCubeLightsRequest::_internal_add_on_color(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  on_color_.Add(value);
}
inline void SetCubeLightsRequest::add_on_color(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_add_on_color(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.SetCubeLightsRequest.on_color)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::_internal_on_color() const {
  return on_color_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::on_color() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.SetCubeLightsRequest.on_color)
  return _internal_on_color();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::_internal_mutable_on_color() {
  return &on_color_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::mutable_on_color() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.SetCubeLightsRequest.on_color)
  return _internal_mutable_on_color();
}

// repeated uint32 off_color = 3;
inline int SetCubeLightsRequest::_internal_off_color_size() const {
  return off_color_.size();
}
inline int SetCubeLightsRequest::off_color_size() const {
  return _internal_off_color_size();
}
inline void SetCubeLightsRequest::clear_off_color() {
  off_color_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::_internal_off_color(int index) const {
  return off_color_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::off_color(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.off_color)
  return _internal_off_color(index);
}
inline void SetCubeLightsRequest::set_off_color(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value) {
  off_color_.Set(index, value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.off_color)
}
inline void SetCubeLightsRequest::_internal_add_off_color(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  off_color_.Add(value);
}
inline void SetCubeLightsRequest::add_off_color(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_add_off_color(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.SetCubeLightsRequest.off_color)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::_internal_off_color() const {
  return off_color_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::off_color() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.SetCubeLightsRequest.off_color)
  return _internal_off_color();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::_internal_mutable_off_color() {
  return &off_color_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::mutable_off_color() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.SetCubeLightsRequest.off_color)
  return _internal_mutable_off_color();
}

// repeated uint32 on_period_ms = 4;
inline int SetCubeLightsRequest::_internal_on_period_ms_size() const {
  return on_period_ms_.size();
}
inline int SetCubeLightsRequest::on_period_ms_size() const {
  return _internal_on_period_ms_size();
}
inline void SetCubeLightsRequest::clear_on_period_ms() {
  on_period_ms_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::_internal_on_period_ms(int index) const {
  return on_period_ms_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::on_period_ms(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.on_period_ms)
  return _internal_on_period_ms(index);
}
inline void SetCubeLightsRequest::set_on_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value) {
  on_period_ms_.Set(index, value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.on_period_ms)
}
inline void SetCubeLightsRequest::_internal_add_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  on_period_ms_.Add(value);
}
inline void SetCubeLightsRequest::add_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_add_on_period_ms(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.SetCubeLightsRequest.on_period_ms)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::_internal_on_period_ms() const {
  return on_period_ms_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::on_period_ms() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.SetCubeLightsRequest.on_period_ms)
  return _internal_on_period_ms();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::_internal_mutable_on_period_ms() {
  return &on_period_ms_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::mutable_on_period_ms() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.SetCubeLightsRequest.on_period_ms)
  return _internal_mutable_on_period_ms();
}

// repeated uint32 off_period_ms = 5;
inline int SetCubeLightsRequest::_internal_off_period_ms_size() const {
  return off_period_ms_.size();
}
inline int SetCubeLightsRequest::off_period_ms_size() const {
  return _internal_off_period_ms_size();
}
inline void SetCubeLightsRequest::clear_off_period_ms() {
  off_period_ms_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::_internal_off_period_ms(int index) const {
  return off_period_ms_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::off_period_ms(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.off_period_ms)
  return _internal_off_period_ms(index);
}
inline void SetCubeLightsRequest::set_off_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value) {
  off_period_ms_.Set(index, value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.off_period_ms)
}
inline void SetCubeLightsRequest::_internal_add_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  off_period_ms_.Add(value);
}
inline void SetCubeLightsRequest::add_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_add_off_period_ms(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.SetCubeLightsRequest.off_period_ms)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::_internal_off_period_ms() const {
  return off_period_ms_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::off_period_ms() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.SetCubeLightsRequest.off_period_ms)
  return _internal_off_period_ms();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::_internal_mutable_off_period_ms() {
  return &off_period_ms_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::mutable_off_period_ms() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.SetCubeLightsRequest.off_period_ms)
  return _internal_mutable_off_period_ms();
}

// repeated uint32 transition_on_period_ms = 6;
inline int SetCubeLightsRequest::_internal_transition_on_period_ms_size() const {
  return transition_on_period_ms_.size();
}
inline int SetCubeLightsRequest::transition_on_period_ms_size() const {
  return _internal_transition_on_period_ms_size();
}
inline void SetCubeLightsRequest::clear_transition_on_period_ms() {
  transition_on_period_ms_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::_internal_transition_on_period_ms(int index) const {
  return transition_on_period_ms_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::transition_on_period_ms(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.transition_on_period_ms)
  return _internal_transition_on_period_ms(index);
}
inline void SetCubeLightsRequest::set_transition_on_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value) {
  transition_on_period_ms_.Set(index, value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.transition_on_period_ms)
}
inline void SetCubeLightsRequest::_internal_add_transition_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  transition_on_period_ms_.Add(value);
}
inline void SetCubeLightsRequest::add_transition_on_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_add_transition_on_period_ms(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.SetCubeLightsRequest.transition_on_period_ms)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::_internal_transition_on_period_ms() const {
  return transition_on_period_ms_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::transition_on_period_ms() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.SetCubeLightsRequest.transition_on_period_ms)
  return _internal_transition_on_period_ms();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::_internal_mutable_transition_on_period_ms() {
  return &transition_on_period_ms_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::mutable_transition_on_period_ms() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.SetCubeLightsRequest.transition_on_period_ms)
  return _internal_mutable_transition_on_period_ms();
}

// repeated uint32 transition_off_period_ms = 7;
inline int SetCubeLightsRequest::_internal_transition_off_period_ms_size() const {
  return transition_off_period_ms_.size();
}
inline int SetCubeLightsRequest::transition_off_period_ms_size() const {
  return _internal_transition_off_period_ms_size();
}
inline void SetCubeLightsRequest::clear_transition_off_period_ms() {
  transition_off_period_ms_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::_internal_transition_off_period_ms(int index) const {
  return transition_off_period_ms_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 SetCubeLightsRequest::transition_off_period_ms(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.transition_off_period_ms)
  return _internal_transition_off_period_ms(index);
}
inline void SetCubeLightsRequest::set_transition_off_period_ms(int index, ::PROTOBUF_NAMESPACE_ID::uint32 value) {
  transition_off_period_ms_.Set(index, value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.transition_off_period_ms)
}
inline void SetCubeLightsRequest::_internal_add_transition_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  transition_off_period_ms_.Add(value);
}
inline void SetCubeLightsRequest::add_transition_off_period_ms(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_add_transition_off_period_ms(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.SetCubeLightsRequest.transition_off_period_ms)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::_internal_transition_off_period_ms() const {
  return transition_off_period_ms_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >&
SetCubeLightsRequest::transition_off_period_ms() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.SetCubeLightsRequest.transition_off_period_ms)
  return _internal_transition_off_period_ms();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::_internal_mutable_transition_off_period_ms() {
  return &transition_off_period_ms_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint32 >*
SetCubeLightsRequest::mutable_transition_off_period_ms() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.SetCubeLightsRequest.transition_off_period_ms)
  return _internal_mutable_transition_off_period_ms();
}

// repeated int32 offset = 8;
inline int SetCubeLightsRequest::_internal_offset_size() const {
  return offset_.size();
}
inline int SetCubeLightsRequest::offset_size() const {
  return _internal_offset_size();
}
inline void SetCubeLightsRequest::clear_offset() {
  offset_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SetCubeLightsRequest::_internal_offset(int index) const {
  return offset_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SetCubeLightsRequest::offset(int index) const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.offset)
  return _internal_offset(index);
}
inline void SetCubeLightsRequest::set_offset(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
  offset_.Set(index, value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.offset)
}
inline void SetCubeLightsRequest::_internal_add_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
  offset_.Add(value);
}
inline void SetCubeLightsRequest::add_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_add_offset(value);
  // @@protoc_insertion_point(field_add:Anki.Vector.external_interface.SetCubeLightsRequest.offset)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
SetCubeLightsRequest::_internal_offset() const {
  return offset_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
SetCubeLightsRequest::offset() const {
  // @@protoc_insertion_point(field_list:Anki.Vector.external_interface.SetCubeLightsRequest.offset)
  return _internal_offset();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
SetCubeLightsRequest::_internal_mutable_offset() {
  return &offset_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
SetCubeLightsRequest::mutable_offset() {
  // @@protoc_insertion_point(field_mutable_list:Anki.Vector.external_interface.SetCubeLightsRequest.offset)
  return _internal_mutable_offset();
}

// float relative_to_x = 9;
inline void SetCubeLightsRequest::clear_relative_to_x() {
  relative_to_x_ = 0;
}
inline float SetCubeLightsRequest::_internal_relative_to_x() const {
  return relative_to_x_;
}
inline float SetCubeLightsRequest::relative_to_x() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.relative_to_x)
  return _internal_relative_to_x();
}
inline void SetCubeLightsRequest::_internal_set_relative_to_x(float value) {
  
  relative_to_x_ = value;
}
inline void SetCubeLightsRequest::set_relative_to_x(float value) {
  _internal_set_relative_to_x(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.relative_to_x)
}

// float relative_to_y = 10;
inline void SetCubeLightsRequest::clear_relative_to_y() {
  relative_to_y_ = 0;
}
inline float SetCubeLightsRequest::_internal_relative_to_y() const {
  return relative_to_y_;
}
inline float SetCubeLightsRequest::relative_to_y() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.relative_to_y)
  return _internal_relative_to_y();
}
inline void SetCubeLightsRequest::_internal_set_relative_to_y(float value) {
  
  relative_to_y_ = value;
}
inline void SetCubeLightsRequest::set_relative_to_y(float value) {
  _internal_set_relative_to_y(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.relative_to_y)
}

// bool rotate = 11;
inline void SetCubeLightsRequest::clear_rotate() {
  rotate_ = false;
}
inline bool SetCubeLightsRequest::_internal_rotate() const {
  return rotate_;
}
inline bool SetCubeLightsRequest::rotate() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.rotate)
  return _internal_rotate();
}
inline void SetCubeLightsRequest::_internal_set_rotate(bool value) {
  
  rotate_ = value;
}
inline void SetCubeLightsRequest::set_rotate(bool value) {
  _internal_set_rotate(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.rotate)
}

// .Anki.Vector.external_interface.SetCubeLightsRequest.MakeRelativeMode make_relative = 12;
inline void SetCubeLightsRequest::clear_make_relative() {
  make_relative_ = 0;
}
inline ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode SetCubeLightsRequest::_internal_make_relative() const {
  return static_cast< ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode >(make_relative_);
}
inline ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode SetCubeLightsRequest::make_relative() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsRequest.make_relative)
  return _internal_make_relative();
}
inline void SetCubeLightsRequest::_internal_set_make_relative(::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode value) {
  
  make_relative_ = value;
}
inline void SetCubeLightsRequest::set_make_relative(::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode value) {
  _internal_set_make_relative(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.SetCubeLightsRequest.make_relative)
}

// -------------------------------------------------------------------

// SetCubeLightsResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool SetCubeLightsResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool SetCubeLightsResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& SetCubeLightsResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& SetCubeLightsResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.SetCubeLightsResponse.status)
  return _internal_status();
}
inline void SetCubeLightsResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.SetCubeLightsResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetCubeLightsResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetCubeLightsResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.SetCubeLightsResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetCubeLightsResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* SetCubeLightsResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.SetCubeLightsResponse.status)
  return _internal_mutable_status();
}
inline void SetCubeLightsResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.SetCubeLightsResponse.status)
}

// -------------------------------------------------------------------

// ObjectAvailable

// string factory_id = 1;
inline void ObjectAvailable::clear_factory_id() {
  factory_id_.ClearToEmpty(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline const std::string& ObjectAvailable::factory_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectAvailable.factory_id)
  return _internal_factory_id();
}
inline void ObjectAvailable::set_factory_id(const std::string& value) {
  _internal_set_factory_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectAvailable.factory_id)
}
inline std::string* ObjectAvailable::mutable_factory_id() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectAvailable.factory_id)
  return _internal_mutable_factory_id();
}
inline const std::string& ObjectAvailable::_internal_factory_id() const {
  return factory_id_.Get();
}
inline void ObjectAvailable::_internal_set_factory_id(const std::string& value) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value, GetArena());
}
inline void ObjectAvailable::set_factory_id(std::string&& value) {
  
  factory_id_.Set(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:Anki.Vector.external_interface.ObjectAvailable.factory_id)
}
inline void ObjectAvailable::set_factory_id(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArena());
  // @@protoc_insertion_point(field_set_char:Anki.Vector.external_interface.ObjectAvailable.factory_id)
}
inline void ObjectAvailable::set_factory_id(const char* value,
    size_t size) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:Anki.Vector.external_interface.ObjectAvailable.factory_id)
}
inline std::string* ObjectAvailable::_internal_mutable_factory_id() {
  
  return factory_id_.Mutable(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline std::string* ObjectAvailable::release_factory_id() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectAvailable.factory_id)
  return factory_id_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void ObjectAvailable::set_allocated_factory_id(std::string* factory_id) {
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), factory_id,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.ObjectAvailable.factory_id)
}
inline std::string* ObjectAvailable::unsafe_arena_release_factory_id() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectAvailable.factory_id)
  GOOGLE_DCHECK(GetArena() != nullptr);
  
  return factory_id_.UnsafeArenaRelease(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArena());
}
inline void ObjectAvailable::unsafe_arena_set_allocated_factory_id(
    std::string* factory_id) {
  GOOGLE_DCHECK(GetArena() != nullptr);
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.UnsafeArenaSetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      factory_id, GetArena());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectAvailable.factory_id)
}

// -------------------------------------------------------------------

// ObjectConnectionState

// uint32 object_id = 1;
inline void ObjectConnectionState::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectConnectionState::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectConnectionState::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectConnectionState.object_id)
  return _internal_object_id();
}
inline void ObjectConnectionState::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void ObjectConnectionState::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectConnectionState.object_id)
}

// string factory_id = 2;
inline void ObjectConnectionState::clear_factory_id() {
  factory_id_.ClearToEmpty(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline const std::string& ObjectConnectionState::factory_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
  return _internal_factory_id();
}
inline void ObjectConnectionState::set_factory_id(const std::string& value) {
  _internal_set_factory_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
}
inline std::string* ObjectConnectionState::mutable_factory_id() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
  return _internal_mutable_factory_id();
}
inline const std::string& ObjectConnectionState::_internal_factory_id() const {
  return factory_id_.Get();
}
inline void ObjectConnectionState::_internal_set_factory_id(const std::string& value) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value, GetArena());
}
inline void ObjectConnectionState::set_factory_id(std::string&& value) {
  
  factory_id_.Set(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
}
inline void ObjectConnectionState::set_factory_id(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArena());
  // @@protoc_insertion_point(field_set_char:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
}
inline void ObjectConnectionState::set_factory_id(const char* value,
    size_t size) {
  
  factory_id_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
}
inline std::string* ObjectConnectionState::_internal_mutable_factory_id() {
  
  return factory_id_.Mutable(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline std::string* ObjectConnectionState::release_factory_id() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
  return factory_id_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void ObjectConnectionState::set_allocated_factory_id(std::string* factory_id) {
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), factory_id,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
}
inline std::string* ObjectConnectionState::unsafe_arena_release_factory_id() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
  GOOGLE_DCHECK(GetArena() != nullptr);
  
  return factory_id_.UnsafeArenaRelease(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArena());
}
inline void ObjectConnectionState::unsafe_arena_set_allocated_factory_id(
    std::string* factory_id) {
  GOOGLE_DCHECK(GetArena() != nullptr);
  if (factory_id != nullptr) {
    
  } else {
    
  }
  factory_id_.UnsafeArenaSetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      factory_id, GetArena());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectConnectionState.factory_id)
}

// .Anki.Vector.external_interface.ObjectType object_type = 3;
inline void ObjectConnectionState::clear_object_type() {
  object_type_ = 0;
}
inline ::Anki::Vector::external_interface::ObjectType ObjectConnectionState::_internal_object_type() const {
  return static_cast< ::Anki::Vector::external_interface::ObjectType >(object_type_);
}
inline ::Anki::Vector::external_interface::ObjectType ObjectConnectionState::object_type() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectConnectionState.object_type)
  return _internal_object_type();
}
inline void ObjectConnectionState::_internal_set_object_type(::Anki::Vector::external_interface::ObjectType value) {
  
  object_type_ = value;
}
inline void ObjectConnectionState::set_object_type(::Anki::Vector::external_interface::ObjectType value) {
  _internal_set_object_type(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectConnectionState.object_type)
}

// bool connected = 4;
inline void ObjectConnectionState::clear_connected() {
  connected_ = false;
}
inline bool ObjectConnectionState::_internal_connected() const {
  return connected_;
}
inline bool ObjectConnectionState::connected() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectConnectionState.connected)
  return _internal_connected();
}
inline void ObjectConnectionState::_internal_set_connected(bool value) {
  
  connected_ = value;
}
inline void ObjectConnectionState::set_connected(bool value) {
  _internal_set_connected(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectConnectionState.connected)
}

// -------------------------------------------------------------------

// ObjectMoved

// uint32 timestamp = 1;
inline void ObjectMoved::clear_timestamp() {
  timestamp_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectMoved::_internal_timestamp() const {
  return timestamp_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectMoved::timestamp() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectMoved.timestamp)
  return _internal_timestamp();
}
inline void ObjectMoved::_internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  timestamp_ = value;
}
inline void ObjectMoved::set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_timestamp(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectMoved.timestamp)
}

// uint32 object_id = 2;
inline void ObjectMoved::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectMoved::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectMoved::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectMoved.object_id)
  return _internal_object_id();
}
inline void ObjectMoved::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void ObjectMoved::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectMoved.object_id)
}

// -------------------------------------------------------------------

// ObjectStoppedMoving

// uint32 timestamp = 1;
inline void ObjectStoppedMoving::clear_timestamp() {
  timestamp_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectStoppedMoving::_internal_timestamp() const {
  return timestamp_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectStoppedMoving::timestamp() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectStoppedMoving.timestamp)
  return _internal_timestamp();
}
inline void ObjectStoppedMoving::_internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  timestamp_ = value;
}
inline void ObjectStoppedMoving::set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_timestamp(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectStoppedMoving.timestamp)
}

// uint32 object_id = 2;
inline void ObjectStoppedMoving::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectStoppedMoving::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectStoppedMoving::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectStoppedMoving.object_id)
  return _internal_object_id();
}
inline void ObjectStoppedMoving::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void ObjectStoppedMoving::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectStoppedMoving.object_id)
}

// -------------------------------------------------------------------

// ObjectUpAxisChanged

// uint32 timestamp = 1;
inline void ObjectUpAxisChanged::clear_timestamp() {
  timestamp_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectUpAxisChanged::_internal_timestamp() const {
  return timestamp_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectUpAxisChanged::timestamp() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectUpAxisChanged.timestamp)
  return _internal_timestamp();
}
inline void ObjectUpAxisChanged::_internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  timestamp_ = value;
}
inline void ObjectUpAxisChanged::set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_timestamp(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectUpAxisChanged.timestamp)
}

// uint32 object_id = 2;
inline void ObjectUpAxisChanged::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectUpAxisChanged::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectUpAxisChanged::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectUpAxisChanged.object_id)
  return _internal_object_id();
}
inline void ObjectUpAxisChanged::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void ObjectUpAxisChanged::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectUpAxisChanged.object_id)
}

// .Anki.Vector.external_interface.UpAxis up_axis = 3;
inline void ObjectUpAxisChanged::clear_up_axis() {
  up_axis_ = 0;
}
inline ::Anki::Vector::external_interface::UpAxis ObjectUpAxisChanged::_internal_up_axis() const {
  return static_cast< ::Anki::Vector::external_interface::UpAxis >(up_axis_);
}
inline ::Anki::Vector::external_interface::UpAxis ObjectUpAxisChanged::up_axis() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectUpAxisChanged.up_axis)
  return _internal_up_axis();
}
inline void ObjectUpAxisChanged::_internal_set_up_axis(::Anki::Vector::external_interface::UpAxis value) {
  
  up_axis_ = value;
}
inline void ObjectUpAxisChanged::set_up_axis(::Anki::Vector::external_interface::UpAxis value) {
  _internal_set_up_axis(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectUpAxisChanged.up_axis)
}

// -------------------------------------------------------------------

// ObjectTapped

// uint32 timestamp = 1;
inline void ObjectTapped::clear_timestamp() {
  timestamp_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectTapped::_internal_timestamp() const {
  return timestamp_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectTapped::timestamp() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectTapped.timestamp)
  return _internal_timestamp();
}
inline void ObjectTapped::_internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  timestamp_ = value;
}
inline void ObjectTapped::set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_timestamp(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectTapped.timestamp)
}

// uint32 object_id = 2;
inline void ObjectTapped::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectTapped::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ObjectTapped::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectTapped.object_id)
  return _internal_object_id();
}
inline void ObjectTapped::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void ObjectTapped::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.ObjectTapped.object_id)
}

// -------------------------------------------------------------------

// RobotObservedObject

// uint32 timestamp = 1;
inline void RobotObservedObject::clear_timestamp() {
  timestamp_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 RobotObservedObject::_internal_timestamp() const {
  return timestamp_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 RobotObservedObject::timestamp() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.timestamp)
  return _internal_timestamp();
}
inline void RobotObservedObject::_internal_set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  timestamp_ = value;
}
inline void RobotObservedObject::set_timestamp(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_timestamp(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.RobotObservedObject.timestamp)
}

// .Anki.Vector.external_interface.ObjectFamily object_family = 2;
inline void RobotObservedObject::clear_object_family() {
  object_family_ = 0;
}
inline ::Anki::Vector::external_interface::ObjectFamily RobotObservedObject::_internal_object_family() const {
  return static_cast< ::Anki::Vector::external_interface::ObjectFamily >(object_family_);
}
inline ::Anki::Vector::external_interface::ObjectFamily RobotObservedObject::object_family() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.object_family)
  return _internal_object_family();
}
inline void RobotObservedObject::_internal_set_object_family(::Anki::Vector::external_interface::ObjectFamily value) {
  
  object_family_ = value;
}
inline void RobotObservedObject::set_object_family(::Anki::Vector::external_interface::ObjectFamily value) {
  _internal_set_object_family(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.RobotObservedObject.object_family)
}

// .Anki.Vector.external_interface.ObjectType object_type = 3;
inline void RobotObservedObject::clear_object_type() {
  object_type_ = 0;
}
inline ::Anki::Vector::external_interface::ObjectType RobotObservedObject::_internal_object_type() const {
  return static_cast< ::Anki::Vector::external_interface::ObjectType >(object_type_);
}
inline ::Anki::Vector::external_interface::ObjectType RobotObservedObject::object_type() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.object_type)
  return _internal_object_type();
}
inline void RobotObservedObject::_internal_set_object_type(::Anki::Vector::external_interface::ObjectType value) {
  
  object_type_ = value;
}
inline void RobotObservedObject::set_object_type(::Anki::Vector::external_interface::ObjectType value) {
  _internal_set_object_type(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.RobotObservedObject.object_type)
}

// int32 object_id = 4;
inline void RobotObservedObject::clear_object_id() {
  object_id_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RobotObservedObject::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RobotObservedObject::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.object_id)
  return _internal_object_id();
}
inline void RobotObservedObject::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  object_id_ = value;
}
inline void RobotObservedObject::set_object_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.RobotObservedObject.object_id)
}

// .Anki.Vector.external_interface.CladRect img_rect = 5;
inline bool RobotObservedObject::_internal_has_img_rect() const {
  return this != internal_default_instance() && img_rect_ != nullptr;
}
inline bool RobotObservedObject::has_img_rect() const {
  return _internal_has_img_rect();
}
inline const ::Anki::Vector::external_interface::CladRect& RobotObservedObject::_internal_img_rect() const {
  const ::Anki::Vector::external_interface::CladRect* p = img_rect_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::CladRect*>(
      &::Anki::Vector::external_interface::_CladRect_default_instance_);
}
inline const ::Anki::Vector::external_interface::CladRect& RobotObservedObject::img_rect() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.img_rect)
  return _internal_img_rect();
}
inline void RobotObservedObject::unsafe_arena_set_allocated_img_rect(
    ::Anki::Vector::external_interface::CladRect* img_rect) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(img_rect_);
  }
  img_rect_ = img_rect;
  if (img_rect) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.RobotObservedObject.img_rect)
}
inline ::Anki::Vector::external_interface::CladRect* RobotObservedObject::release_img_rect() {
  auto temp = unsafe_arena_release_img_rect();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::CladRect* RobotObservedObject::unsafe_arena_release_img_rect() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.RobotObservedObject.img_rect)
  
  ::Anki::Vector::external_interface::CladRect* temp = img_rect_;
  img_rect_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::CladRect* RobotObservedObject::_internal_mutable_img_rect() {
  
  if (img_rect_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::CladRect>(GetArena());
    img_rect_ = p;
  }
  return img_rect_;
}
inline ::Anki::Vector::external_interface::CladRect* RobotObservedObject::mutable_img_rect() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.RobotObservedObject.img_rect)
  return _internal_mutable_img_rect();
}
inline void RobotObservedObject::set_allocated_img_rect(::Anki::Vector::external_interface::CladRect* img_rect) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(img_rect_);
  }
  if (img_rect) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(img_rect)->GetArena();
    if (message_arena != submessage_arena) {
      img_rect = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, img_rect, submessage_arena);
    }
    
  } else {
    
  }
  img_rect_ = img_rect;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.RobotObservedObject.img_rect)
}

// .Anki.Vector.external_interface.PoseStruct pose = 6;
inline bool RobotObservedObject::_internal_has_pose() const {
  return this != internal_default_instance() && pose_ != nullptr;
}
inline bool RobotObservedObject::has_pose() const {
  return _internal_has_pose();
}
inline const ::Anki::Vector::external_interface::PoseStruct& RobotObservedObject::_internal_pose() const {
  const ::Anki::Vector::external_interface::PoseStruct* p = pose_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::PoseStruct*>(
      &::Anki::Vector::external_interface::_PoseStruct_default_instance_);
}
inline const ::Anki::Vector::external_interface::PoseStruct& RobotObservedObject::pose() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.pose)
  return _internal_pose();
}
inline void RobotObservedObject::unsafe_arena_set_allocated_pose(
    ::Anki::Vector::external_interface::PoseStruct* pose) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(pose_);
  }
  pose_ = pose;
  if (pose) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.RobotObservedObject.pose)
}
inline ::Anki::Vector::external_interface::PoseStruct* RobotObservedObject::release_pose() {
  auto temp = unsafe_arena_release_pose();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::PoseStruct* RobotObservedObject::unsafe_arena_release_pose() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.RobotObservedObject.pose)
  
  ::Anki::Vector::external_interface::PoseStruct* temp = pose_;
  pose_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::PoseStruct* RobotObservedObject::_internal_mutable_pose() {
  
  if (pose_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::PoseStruct>(GetArena());
    pose_ = p;
  }
  return pose_;
}
inline ::Anki::Vector::external_interface::PoseStruct* RobotObservedObject::mutable_pose() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.RobotObservedObject.pose)
  return _internal_mutable_pose();
}
inline void RobotObservedObject::set_allocated_pose(::Anki::Vector::external_interface::PoseStruct* pose) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(pose_);
  }
  if (pose) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(pose)->GetArena();
    if (message_arena != submessage_arena) {
      pose = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, pose, submessage_arena);
    }
    
  } else {
    
  }
  pose_ = pose;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.RobotObservedObject.pose)
}

// float top_face_orientation_rad = 7;
inline void RobotObservedObject::clear_top_face_orientation_rad() {
  top_face_orientation_rad_ = 0;
}
inline float RobotObservedObject::_internal_top_face_orientation_rad() const {
  return top_face_orientation_rad_;
}
inline float RobotObservedObject::top_face_orientation_rad() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.top_face_orientation_rad)
  return _internal_top_face_orientation_rad();
}
inline void RobotObservedObject::_internal_set_top_face_orientation_rad(float value) {
  
  top_face_orientation_rad_ = value;
}
inline void RobotObservedObject::set_top_face_orientation_rad(float value) {
  _internal_set_top_face_orientation_rad(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.RobotObservedObject.top_face_orientation_rad)
}

// uint32 is_active = 8;
inline void RobotObservedObject::clear_is_active() {
  is_active_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 RobotObservedObject::_internal_is_active() const {
  return is_active_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 RobotObservedObject::is_active() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.RobotObservedObject.is_active)
  return _internal_is_active();
}
inline void RobotObservedObject::_internal_set_is_active(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  is_active_ = value;
}
inline void RobotObservedObject::set_is_active(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_is_active(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.RobotObservedObject.is_active)
}

// -------------------------------------------------------------------

// CubeConnectionLost

// -------------------------------------------------------------------

// DeleteCustomObjectsRequest

// .Anki.Vector.external_interface.CustomObjectDeletionMode mode = 1;
inline void DeleteCustomObjectsRequest::clear_mode() {
  mode_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectDeletionMode DeleteCustomObjectsRequest::_internal_mode() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectDeletionMode >(mode_);
}
inline ::Anki::Vector::external_interface::CustomObjectDeletionMode DeleteCustomObjectsRequest::mode() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DeleteCustomObjectsRequest.mode)
  return _internal_mode();
}
inline void DeleteCustomObjectsRequest::_internal_set_mode(::Anki::Vector::external_interface::CustomObjectDeletionMode value) {
  
  mode_ = value;
}
inline void DeleteCustomObjectsRequest::set_mode(::Anki::Vector::external_interface::CustomObjectDeletionMode value) {
  _internal_set_mode(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.DeleteCustomObjectsRequest.mode)
}

// -------------------------------------------------------------------

// DeleteCustomObjectsResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool DeleteCustomObjectsResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool DeleteCustomObjectsResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& DeleteCustomObjectsResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& DeleteCustomObjectsResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DeleteCustomObjectsResponse.status)
  return _internal_status();
}
inline void DeleteCustomObjectsResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.DeleteCustomObjectsResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* DeleteCustomObjectsResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DeleteCustomObjectsResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.DeleteCustomObjectsResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DeleteCustomObjectsResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DeleteCustomObjectsResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.DeleteCustomObjectsResponse.status)
  return _internal_mutable_status();
}
inline void DeleteCustomObjectsResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.DeleteCustomObjectsResponse.status)
}

// -------------------------------------------------------------------

// CreateFixedCustomObjectRequest

// .Anki.Vector.external_interface.PoseStruct pose = 1;
inline bool CreateFixedCustomObjectRequest::_internal_has_pose() const {
  return this != internal_default_instance() && pose_ != nullptr;
}
inline bool CreateFixedCustomObjectRequest::has_pose() const {
  return _internal_has_pose();
}
inline const ::Anki::Vector::external_interface::PoseStruct& CreateFixedCustomObjectRequest::_internal_pose() const {
  const ::Anki::Vector::external_interface::PoseStruct* p = pose_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::PoseStruct*>(
      &::Anki::Vector::external_interface::_PoseStruct_default_instance_);
}
inline const ::Anki::Vector::external_interface::PoseStruct& CreateFixedCustomObjectRequest::pose() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.pose)
  return _internal_pose();
}
inline void CreateFixedCustomObjectRequest::unsafe_arena_set_allocated_pose(
    ::Anki::Vector::external_interface::PoseStruct* pose) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(pose_);
  }
  pose_ = pose;
  if (pose) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.pose)
}
inline ::Anki::Vector::external_interface::PoseStruct* CreateFixedCustomObjectRequest::release_pose() {
  auto temp = unsafe_arena_release_pose();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::PoseStruct* CreateFixedCustomObjectRequest::unsafe_arena_release_pose() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.pose)
  
  ::Anki::Vector::external_interface::PoseStruct* temp = pose_;
  pose_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::PoseStruct* CreateFixedCustomObjectRequest::_internal_mutable_pose() {
  
  if (pose_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::PoseStruct>(GetArena());
    pose_ = p;
  }
  return pose_;
}
inline ::Anki::Vector::external_interface::PoseStruct* CreateFixedCustomObjectRequest::mutable_pose() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.pose)
  return _internal_mutable_pose();
}
inline void CreateFixedCustomObjectRequest::set_allocated_pose(::Anki::Vector::external_interface::PoseStruct* pose) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(pose_);
  }
  if (pose) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(pose)->GetArena();
    if (message_arena != submessage_arena) {
      pose = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, pose, submessage_arena);
    }
    
  } else {
    
  }
  pose_ = pose;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.pose)
}

// float x_size_mm = 2;
inline void CreateFixedCustomObjectRequest::clear_x_size_mm() {
  x_size_mm_ = 0;
}
inline float CreateFixedCustomObjectRequest::_internal_x_size_mm() const {
  return x_size_mm_;
}
inline float CreateFixedCustomObjectRequest::x_size_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.x_size_mm)
  return _internal_x_size_mm();
}
inline void CreateFixedCustomObjectRequest::_internal_set_x_size_mm(float value) {
  
  x_size_mm_ = value;
}
inline void CreateFixedCustomObjectRequest::set_x_size_mm(float value) {
  _internal_set_x_size_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.x_size_mm)
}

// float y_size_mm = 3;
inline void CreateFixedCustomObjectRequest::clear_y_size_mm() {
  y_size_mm_ = 0;
}
inline float CreateFixedCustomObjectRequest::_internal_y_size_mm() const {
  return y_size_mm_;
}
inline float CreateFixedCustomObjectRequest::y_size_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.y_size_mm)
  return _internal_y_size_mm();
}
inline void CreateFixedCustomObjectRequest::_internal_set_y_size_mm(float value) {
  
  y_size_mm_ = value;
}
inline void CreateFixedCustomObjectRequest::set_y_size_mm(float value) {
  _internal_set_y_size_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.y_size_mm)
}

// float z_size_mm = 4;
inline void CreateFixedCustomObjectRequest::clear_z_size_mm() {
  z_size_mm_ = 0;
}
inline float CreateFixedCustomObjectRequest::_internal_z_size_mm() const {
  return z_size_mm_;
}
inline float CreateFixedCustomObjectRequest::z_size_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.z_size_mm)
  return _internal_z_size_mm();
}
inline void CreateFixedCustomObjectRequest::_internal_set_z_size_mm(float value) {
  
  z_size_mm_ = value;
}
inline void CreateFixedCustomObjectRequest::set_z_size_mm(float value) {
  _internal_set_z_size_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CreateFixedCustomObjectRequest.z_size_mm)
}

// -------------------------------------------------------------------

// CreateFixedCustomObjectResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool CreateFixedCustomObjectResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool CreateFixedCustomObjectResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& CreateFixedCustomObjectResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& CreateFixedCustomObjectResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CreateFixedCustomObjectResponse.status)
  return _internal_status();
}
inline void CreateFixedCustomObjectResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.CreateFixedCustomObjectResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* CreateFixedCustomObjectResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* CreateFixedCustomObjectResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.CreateFixedCustomObjectResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* CreateFixedCustomObjectResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* CreateFixedCustomObjectResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.CreateFixedCustomObjectResponse.status)
  return _internal_mutable_status();
}
inline void CreateFixedCustomObjectResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.CreateFixedCustomObjectResponse.status)
}

// uint32 object_id = 2;
inline void CreateFixedCustomObjectResponse::clear_object_id() {
  object_id_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 CreateFixedCustomObjectResponse::_internal_object_id() const {
  return object_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 CreateFixedCustomObjectResponse::object_id() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CreateFixedCustomObjectResponse.object_id)
  return _internal_object_id();
}
inline void CreateFixedCustomObjectResponse::_internal_set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  object_id_ = value;
}
inline void CreateFixedCustomObjectResponse::set_object_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_object_id(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CreateFixedCustomObjectResponse.object_id)
}

// -------------------------------------------------------------------

// CustomBoxDefinition

// .Anki.Vector.external_interface.CustomObjectMarker marker_front = 1;
inline void CustomBoxDefinition::clear_marker_front() {
  marker_front_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::_internal_marker_front() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_front_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::marker_front() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_front)
  return _internal_marker_front();
}
inline void CustomBoxDefinition::_internal_set_marker_front(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_front_ = value;
}
inline void CustomBoxDefinition::set_marker_front(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker_front(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_front)
}

// .Anki.Vector.external_interface.CustomObjectMarker marker_back = 2;
inline void CustomBoxDefinition::clear_marker_back() {
  marker_back_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::_internal_marker_back() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_back_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::marker_back() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_back)
  return _internal_marker_back();
}
inline void CustomBoxDefinition::_internal_set_marker_back(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_back_ = value;
}
inline void CustomBoxDefinition::set_marker_back(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker_back(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_back)
}

// .Anki.Vector.external_interface.CustomObjectMarker marker_top = 3;
inline void CustomBoxDefinition::clear_marker_top() {
  marker_top_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::_internal_marker_top() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_top_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::marker_top() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_top)
  return _internal_marker_top();
}
inline void CustomBoxDefinition::_internal_set_marker_top(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_top_ = value;
}
inline void CustomBoxDefinition::set_marker_top(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker_top(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_top)
}

// .Anki.Vector.external_interface.CustomObjectMarker marker_bottom = 4;
inline void CustomBoxDefinition::clear_marker_bottom() {
  marker_bottom_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::_internal_marker_bottom() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_bottom_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::marker_bottom() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_bottom)
  return _internal_marker_bottom();
}
inline void CustomBoxDefinition::_internal_set_marker_bottom(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_bottom_ = value;
}
inline void CustomBoxDefinition::set_marker_bottom(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker_bottom(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_bottom)
}

// .Anki.Vector.external_interface.CustomObjectMarker marker_left = 5;
inline void CustomBoxDefinition::clear_marker_left() {
  marker_left_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::_internal_marker_left() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_left_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::marker_left() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_left)
  return _internal_marker_left();
}
inline void CustomBoxDefinition::_internal_set_marker_left(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_left_ = value;
}
inline void CustomBoxDefinition::set_marker_left(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker_left(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_left)
}

// .Anki.Vector.external_interface.CustomObjectMarker marker_right = 6;
inline void CustomBoxDefinition::clear_marker_right() {
  marker_right_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::_internal_marker_right() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_right_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomBoxDefinition::marker_right() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_right)
  return _internal_marker_right();
}
inline void CustomBoxDefinition::_internal_set_marker_right(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_right_ = value;
}
inline void CustomBoxDefinition::set_marker_right(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker_right(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_right)
}

// float x_size_mm = 7;
inline void CustomBoxDefinition::clear_x_size_mm() {
  x_size_mm_ = 0;
}
inline float CustomBoxDefinition::_internal_x_size_mm() const {
  return x_size_mm_;
}
inline float CustomBoxDefinition::x_size_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.x_size_mm)
  return _internal_x_size_mm();
}
inline void CustomBoxDefinition::_internal_set_x_size_mm(float value) {
  
  x_size_mm_ = value;
}
inline void CustomBoxDefinition::set_x_size_mm(float value) {
  _internal_set_x_size_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.x_size_mm)
}

// float y_size_mm = 8;
inline void CustomBoxDefinition::clear_y_size_mm() {
  y_size_mm_ = 0;
}
inline float CustomBoxDefinition::_internal_y_size_mm() const {
  return y_size_mm_;
}
inline float CustomBoxDefinition::y_size_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.y_size_mm)
  return _internal_y_size_mm();
}
inline void CustomBoxDefinition::_internal_set_y_size_mm(float value) {
  
  y_size_mm_ = value;
}
inline void CustomBoxDefinition::set_y_size_mm(float value) {
  _internal_set_y_size_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.y_size_mm)
}

// float z_size_mm = 9;
inline void CustomBoxDefinition::clear_z_size_mm() {
  z_size_mm_ = 0;
}
inline float CustomBoxDefinition::_internal_z_size_mm() const {
  return z_size_mm_;
}
inline float CustomBoxDefinition::z_size_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.z_size_mm)
  return _internal_z_size_mm();
}
inline void CustomBoxDefinition::_internal_set_z_size_mm(float value) {
  
  z_size_mm_ = value;
}
inline void CustomBoxDefinition::set_z_size_mm(float value) {
  _internal_set_z_size_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.z_size_mm)
}

// float marker_width_mm = 10;
inline void CustomBoxDefinition::clear_marker_width_mm() {
  marker_width_mm_ = 0;
}
inline float CustomBoxDefinition::_internal_marker_width_mm() const {
  return marker_width_mm_;
}
inline float CustomBoxDefinition::marker_width_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_width_mm)
  return _internal_marker_width_mm();
}
inline void CustomBoxDefinition::_internal_set_marker_width_mm(float value) {
  
  marker_width_mm_ = value;
}
inline void CustomBoxDefinition::set_marker_width_mm(float value) {
  _internal_set_marker_width_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_width_mm)
}

// float marker_height_mm = 11;
inline void CustomBoxDefinition::clear_marker_height_mm() {
  marker_height_mm_ = 0;
}
inline float CustomBoxDefinition::_internal_marker_height_mm() const {
  return marker_height_mm_;
}
inline float CustomBoxDefinition::marker_height_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomBoxDefinition.marker_height_mm)
  return _internal_marker_height_mm();
}
inline void CustomBoxDefinition::_internal_set_marker_height_mm(float value) {
  
  marker_height_mm_ = value;
}
inline void CustomBoxDefinition::set_marker_height_mm(float value) {
  _internal_set_marker_height_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomBoxDefinition.marker_height_mm)
}

// -------------------------------------------------------------------

// CustomCubeDefinition

// .Anki.Vector.external_interface.CustomObjectMarker marker = 1;
inline void CustomCubeDefinition::clear_marker() {
  marker_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomCubeDefinition::_internal_marker() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomCubeDefinition::marker() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomCubeDefinition.marker)
  return _internal_marker();
}
inline void CustomCubeDefinition::_internal_set_marker(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_ = value;
}
inline void CustomCubeDefinition::set_marker(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomCubeDefinition.marker)
}

// float size_mm = 2;
inline void CustomCubeDefinition::clear_size_mm() {
  size_mm_ = 0;
}
inline float CustomCubeDefinition::_internal_size_mm() const {
  return size_mm_;
}
inline float CustomCubeDefinition::size_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomCubeDefinition.size_mm)
  return _internal_size_mm();
}
inline void CustomCubeDefinition::_internal_set_size_mm(float value) {
  
  size_mm_ = value;
}
inline void CustomCubeDefinition::set_size_mm(float value) {
  _internal_set_size_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomCubeDefinition.size_mm)
}

// float marker_width_mm = 3;
inline void CustomCubeDefinition::clear_marker_width_mm() {
  marker_width_mm_ = 0;
}
inline float CustomCubeDefinition::_internal_marker_width_mm() const {
  return marker_width_mm_;
}
inline float CustomCubeDefinition::marker_width_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomCubeDefinition.marker_width_mm)
  return _internal_marker_width_mm();
}
inline void CustomCubeDefinition::_internal_set_marker_width_mm(float value) {
  
  marker_width_mm_ = value;
}
inline void CustomCubeDefinition::set_marker_width_mm(float value) {
  _internal_set_marker_width_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomCubeDefinition.marker_width_mm)
}

// float marker_height_mm = 4;
inline void CustomCubeDefinition::clear_marker_height_mm() {
  marker_height_mm_ = 0;
}
inline float CustomCubeDefinition::_internal_marker_height_mm() const {
  return marker_height_mm_;
}
inline float CustomCubeDefinition::marker_height_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomCubeDefinition.marker_height_mm)
  return _internal_marker_height_mm();
}
inline void CustomCubeDefinition::_internal_set_marker_height_mm(float value) {
  
  marker_height_mm_ = value;
}
inline void CustomCubeDefinition::set_marker_height_mm(float value) {
  _internal_set_marker_height_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomCubeDefinition.marker_height_mm)
}

// -------------------------------------------------------------------

// CustomWallDefinition

// .Anki.Vector.external_interface.CustomObjectMarker marker = 1;
inline void CustomWallDefinition::clear_marker() {
  marker_ = 0;
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomWallDefinition::_internal_marker() const {
  return static_cast< ::Anki::Vector::external_interface::CustomObjectMarker >(marker_);
}
inline ::Anki::Vector::external_interface::CustomObjectMarker CustomWallDefinition::marker() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomWallDefinition.marker)
  return _internal_marker();
}
inline void CustomWallDefinition::_internal_set_marker(::Anki::Vector::external_interface::CustomObjectMarker value) {
  
  marker_ = value;
}
inline void CustomWallDefinition::set_marker(::Anki::Vector::external_interface::CustomObjectMarker value) {
  _internal_set_marker(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomWallDefinition.marker)
}

// float width_mm = 2;
inline void CustomWallDefinition::clear_width_mm() {
  width_mm_ = 0;
}
inline float CustomWallDefinition::_internal_width_mm() const {
  return width_mm_;
}
inline float CustomWallDefinition::width_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomWallDefinition.width_mm)
  return _internal_width_mm();
}
inline void CustomWallDefinition::_internal_set_width_mm(float value) {
  
  width_mm_ = value;
}
inline void CustomWallDefinition::set_width_mm(float value) {
  _internal_set_width_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomWallDefinition.width_mm)
}

// float height_mm = 3;
inline void CustomWallDefinition::clear_height_mm() {
  height_mm_ = 0;
}
inline float CustomWallDefinition::_internal_height_mm() const {
  return height_mm_;
}
inline float CustomWallDefinition::height_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomWallDefinition.height_mm)
  return _internal_height_mm();
}
inline void CustomWallDefinition::_internal_set_height_mm(float value) {
  
  height_mm_ = value;
}
inline void CustomWallDefinition::set_height_mm(float value) {
  _internal_set_height_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomWallDefinition.height_mm)
}

// float marker_width_mm = 4;
inline void CustomWallDefinition::clear_marker_width_mm() {
  marker_width_mm_ = 0;
}
inline float CustomWallDefinition::_internal_marker_width_mm() const {
  return marker_width_mm_;
}
inline float CustomWallDefinition::marker_width_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomWallDefinition.marker_width_mm)
  return _internal_marker_width_mm();
}
inline void CustomWallDefinition::_internal_set_marker_width_mm(float value) {
  
  marker_width_mm_ = value;
}
inline void CustomWallDefinition::set_marker_width_mm(float value) {
  _internal_set_marker_width_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomWallDefinition.marker_width_mm)
}

// float marker_height_mm = 5;
inline void CustomWallDefinition::clear_marker_height_mm() {
  marker_height_mm_ = 0;
}
inline float CustomWallDefinition::_internal_marker_height_mm() const {
  return marker_height_mm_;
}
inline float CustomWallDefinition::marker_height_mm() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.CustomWallDefinition.marker_height_mm)
  return _internal_marker_height_mm();
}
inline void CustomWallDefinition::_internal_set_marker_height_mm(float value) {
  
  marker_height_mm_ = value;
}
inline void CustomWallDefinition::set_marker_height_mm(float value) {
  _internal_set_marker_height_mm(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.CustomWallDefinition.marker_height_mm)
}

// -------------------------------------------------------------------

// DefineCustomObjectRequest

// .Anki.Vector.external_interface.CustomType custom_type = 1;
inline void DefineCustomObjectRequest::clear_custom_type() {
  custom_type_ = 0;
}
inline ::Anki::Vector::external_interface::CustomType DefineCustomObjectRequest::_internal_custom_type() const {
  return static_cast< ::Anki::Vector::external_interface::CustomType >(custom_type_);
}
inline ::Anki::Vector::external_interface::CustomType DefineCustomObjectRequest::custom_type() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_type)
  return _internal_custom_type();
}
inline void DefineCustomObjectRequest::_internal_set_custom_type(::Anki::Vector::external_interface::CustomType value) {
  
  custom_type_ = value;
}
inline void DefineCustomObjectRequest::set_custom_type(::Anki::Vector::external_interface::CustomType value) {
  _internal_set_custom_type(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_type)
}

// bool is_unique = 2;
inline void DefineCustomObjectRequest::clear_is_unique() {
  is_unique_ = false;
}
inline bool DefineCustomObjectRequest::_internal_is_unique() const {
  return is_unique_;
}
inline bool DefineCustomObjectRequest::is_unique() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DefineCustomObjectRequest.is_unique)
  return _internal_is_unique();
}
inline void DefineCustomObjectRequest::_internal_set_is_unique(bool value) {
  
  is_unique_ = value;
}
inline void DefineCustomObjectRequest::set_is_unique(bool value) {
  _internal_set_is_unique(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.DefineCustomObjectRequest.is_unique)
}

// .Anki.Vector.external_interface.CustomBoxDefinition custom_box = 3;
inline bool DefineCustomObjectRequest::_internal_has_custom_box() const {
  return custom_object_definition_case() == kCustomBox;
}
inline bool DefineCustomObjectRequest::has_custom_box() const {
  return _internal_has_custom_box();
}
inline void DefineCustomObjectRequest::set_has_custom_box() {
  _oneof_case_[0] = kCustomBox;
}
inline void DefineCustomObjectRequest::clear_custom_box() {
  if (_internal_has_custom_box()) {
    if (GetArena() == nullptr) {
      delete custom_object_definition_.custom_box_;
    }
    clear_has_custom_object_definition();
  }
}
inline ::Anki::Vector::external_interface::CustomBoxDefinition* DefineCustomObjectRequest::release_custom_box() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_box)
  if (_internal_has_custom_box()) {
    clear_has_custom_object_definition();
      ::Anki::Vector::external_interface::CustomBoxDefinition* temp = custom_object_definition_.custom_box_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    custom_object_definition_.custom_box_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::CustomBoxDefinition& DefineCustomObjectRequest::_internal_custom_box() const {
  return _internal_has_custom_box()
      ? *custom_object_definition_.custom_box_
      : *reinterpret_cast< ::Anki::Vector::external_interface::CustomBoxDefinition*>(&::Anki::Vector::external_interface::_CustomBoxDefinition_default_instance_);
}
inline const ::Anki::Vector::external_interface::CustomBoxDefinition& DefineCustomObjectRequest::custom_box() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_box)
  return _internal_custom_box();
}
inline ::Anki::Vector::external_interface::CustomBoxDefinition* DefineCustomObjectRequest::unsafe_arena_release_custom_box() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_box)
  if (_internal_has_custom_box()) {
    clear_has_custom_object_definition();
    ::Anki::Vector::external_interface::CustomBoxDefinition* temp = custom_object_definition_.custom_box_;
    custom_object_definition_.custom_box_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DefineCustomObjectRequest::unsafe_arena_set_allocated_custom_box(::Anki::Vector::external_interface::CustomBoxDefinition* custom_box) {
  clear_custom_object_definition();
  if (custom_box) {
    set_has_custom_box();
    custom_object_definition_.custom_box_ = custom_box;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_box)
}
inline ::Anki::Vector::external_interface::CustomBoxDefinition* DefineCustomObjectRequest::_internal_mutable_custom_box() {
  if (!_internal_has_custom_box()) {
    clear_custom_object_definition();
    set_has_custom_box();
    custom_object_definition_.custom_box_ = CreateMaybeMessage< ::Anki::Vector::external_interface::CustomBoxDefinition >(GetArena());
  }
  return custom_object_definition_.custom_box_;
}
inline ::Anki::Vector::external_interface::CustomBoxDefinition* DefineCustomObjectRequest::mutable_custom_box() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_box)
  return _internal_mutable_custom_box();
}

// .Anki.Vector.external_interface.CustomCubeDefinition custom_cube = 4;
inline bool DefineCustomObjectRequest::_internal_has_custom_cube() const {
  return custom_object_definition_case() == kCustomCube;
}
inline bool DefineCustomObjectRequest::has_custom_cube() const {
  return _internal_has_custom_cube();
}
inline void DefineCustomObjectRequest::set_has_custom_cube() {
  _oneof_case_[0] = kCustomCube;
}
inline void DefineCustomObjectRequest::clear_custom_cube() {
  if (_internal_has_custom_cube()) {
    if (GetArena() == nullptr) {
      delete custom_object_definition_.custom_cube_;
    }
    clear_has_custom_object_definition();
  }
}
inline ::Anki::Vector::external_interface::CustomCubeDefinition* DefineCustomObjectRequest::release_custom_cube() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_cube)
  if (_internal_has_custom_cube()) {
    clear_has_custom_object_definition();
      ::Anki::Vector::external_interface::CustomCubeDefinition* temp = custom_object_definition_.custom_cube_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    custom_object_definition_.custom_cube_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::CustomCubeDefinition& DefineCustomObjectRequest::_internal_custom_cube() const {
  return _internal_has_custom_cube()
      ? *custom_object_definition_.custom_cube_
      : *reinterpret_cast< ::Anki::Vector::external_interface::CustomCubeDefinition*>(&::Anki::Vector::external_interface::_CustomCubeDefinition_default_instance_);
}
inline const ::Anki::Vector::external_interface::CustomCubeDefinition& DefineCustomObjectRequest::custom_cube() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_cube)
  return _internal_custom_cube();
}
inline ::Anki::Vector::external_interface::CustomCubeDefinition* DefineCustomObjectRequest::unsafe_arena_release_custom_cube() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_cube)
  if (_internal_has_custom_cube()) {
    clear_has_custom_object_definition();
    ::Anki::Vector::external_interface::CustomCubeDefinition* temp = custom_object_definition_.custom_cube_;
    custom_object_definition_.custom_cube_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DefineCustomObjectRequest::unsafe_arena_set_allocated_custom_cube(::Anki::Vector::external_interface::CustomCubeDefinition* custom_cube) {
  clear_custom_object_definition();
  if (custom_cube) {
    set_has_custom_cube();
    custom_object_definition_.custom_cube_ = custom_cube;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_cube)
}
inline ::Anki::Vector::external_interface::CustomCubeDefinition* DefineCustomObjectRequest::_internal_mutable_custom_cube() {
  if (!_internal_has_custom_cube()) {
    clear_custom_object_definition();
    set_has_custom_cube();
    custom_object_definition_.custom_cube_ = CreateMaybeMessage< ::Anki::Vector::external_interface::CustomCubeDefinition >(GetArena());
  }
  return custom_object_definition_.custom_cube_;
}
inline ::Anki::Vector::external_interface::CustomCubeDefinition* DefineCustomObjectRequest::mutable_custom_cube() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_cube)
  return _internal_mutable_custom_cube();
}

// .Anki.Vector.external_interface.CustomWallDefinition custom_wall = 5;
inline bool DefineCustomObjectRequest::_internal_has_custom_wall() const {
  return custom_object_definition_case() == kCustomWall;
}
inline bool DefineCustomObjectRequest::has_custom_wall() const {
  return _internal_has_custom_wall();
}
inline void DefineCustomObjectRequest::set_has_custom_wall() {
  _oneof_case_[0] = kCustomWall;
}
inline void DefineCustomObjectRequest::clear_custom_wall() {
  if (_internal_has_custom_wall()) {
    if (GetArena() == nullptr) {
      delete custom_object_definition_.custom_wall_;
    }
    clear_has_custom_object_definition();
  }
}
inline ::Anki::Vector::external_interface::CustomWallDefinition* DefineCustomObjectRequest::release_custom_wall() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_wall)
  if (_internal_has_custom_wall()) {
    clear_has_custom_object_definition();
      ::Anki::Vector::external_interface::CustomWallDefinition* temp = custom_object_definition_.custom_wall_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    custom_object_definition_.custom_wall_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::CustomWallDefinition& DefineCustomObjectRequest::_internal_custom_wall() const {
  return _internal_has_custom_wall()
      ? *custom_object_definition_.custom_wall_
      : *reinterpret_cast< ::Anki::Vector::external_interface::CustomWallDefinition*>(&::Anki::Vector::external_interface::_CustomWallDefinition_default_instance_);
}
inline const ::Anki::Vector::external_interface::CustomWallDefinition& DefineCustomObjectRequest::custom_wall() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_wall)
  return _internal_custom_wall();
}
inline ::Anki::Vector::external_interface::CustomWallDefinition* DefineCustomObjectRequest::unsafe_arena_release_custom_wall() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_wall)
  if (_internal_has_custom_wall()) {
    clear_has_custom_object_definition();
    ::Anki::Vector::external_interface::CustomWallDefinition* temp = custom_object_definition_.custom_wall_;
    custom_object_definition_.custom_wall_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DefineCustomObjectRequest::unsafe_arena_set_allocated_custom_wall(::Anki::Vector::external_interface::CustomWallDefinition* custom_wall) {
  clear_custom_object_definition();
  if (custom_wall) {
    set_has_custom_wall();
    custom_object_definition_.custom_wall_ = custom_wall;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_wall)
}
inline ::Anki::Vector::external_interface::CustomWallDefinition* DefineCustomObjectRequest::_internal_mutable_custom_wall() {
  if (!_internal_has_custom_wall()) {
    clear_custom_object_definition();
    set_has_custom_wall();
    custom_object_definition_.custom_wall_ = CreateMaybeMessage< ::Anki::Vector::external_interface::CustomWallDefinition >(GetArena());
  }
  return custom_object_definition_.custom_wall_;
}
inline ::Anki::Vector::external_interface::CustomWallDefinition* DefineCustomObjectRequest::mutable_custom_wall() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.DefineCustomObjectRequest.custom_wall)
  return _internal_mutable_custom_wall();
}

inline bool DefineCustomObjectRequest::has_custom_object_definition() const {
  return custom_object_definition_case() != CUSTOM_OBJECT_DEFINITION_NOT_SET;
}
inline void DefineCustomObjectRequest::clear_has_custom_object_definition() {
  _oneof_case_[0] = CUSTOM_OBJECT_DEFINITION_NOT_SET;
}
inline DefineCustomObjectRequest::CustomObjectDefinitionCase DefineCustomObjectRequest::custom_object_definition_case() const {
  return DefineCustomObjectRequest::CustomObjectDefinitionCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// DefineCustomObjectResponse

// .Anki.Vector.external_interface.ResponseStatus status = 1;
inline bool DefineCustomObjectResponse::_internal_has_status() const {
  return this != internal_default_instance() && status_ != nullptr;
}
inline bool DefineCustomObjectResponse::has_status() const {
  return _internal_has_status();
}
inline const ::Anki::Vector::external_interface::ResponseStatus& DefineCustomObjectResponse::_internal_status() const {
  const ::Anki::Vector::external_interface::ResponseStatus* p = status_;
  return p != nullptr ? *p : *reinterpret_cast<const ::Anki::Vector::external_interface::ResponseStatus*>(
      &::Anki::Vector::external_interface::_ResponseStatus_default_instance_);
}
inline const ::Anki::Vector::external_interface::ResponseStatus& DefineCustomObjectResponse::status() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DefineCustomObjectResponse.status)
  return _internal_status();
}
inline void DefineCustomObjectResponse::unsafe_arena_set_allocated_status(
    ::Anki::Vector::external_interface::ResponseStatus* status) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  status_ = status;
  if (status) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.DefineCustomObjectResponse.status)
}
inline ::Anki::Vector::external_interface::ResponseStatus* DefineCustomObjectResponse::release_status() {
  auto temp = unsafe_arena_release_status();
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DefineCustomObjectResponse::unsafe_arena_release_status() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.DefineCustomObjectResponse.status)
  
  ::Anki::Vector::external_interface::ResponseStatus* temp = status_;
  status_ = nullptr;
  return temp;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DefineCustomObjectResponse::_internal_mutable_status() {
  
  if (status_ == nullptr) {
    auto* p = CreateMaybeMessage<::Anki::Vector::external_interface::ResponseStatus>(GetArena());
    status_ = p;
  }
  return status_;
}
inline ::Anki::Vector::external_interface::ResponseStatus* DefineCustomObjectResponse::mutable_status() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.DefineCustomObjectResponse.status)
  return _internal_mutable_status();
}
inline void DefineCustomObjectResponse::set_allocated_status(::Anki::Vector::external_interface::ResponseStatus* status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
  }
  if (status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(status)->GetArena();
    if (message_arena != submessage_arena) {
      status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, status, submessage_arena);
    }
    
  } else {
    
  }
  status_ = status;
  // @@protoc_insertion_point(field_set_allocated:Anki.Vector.external_interface.DefineCustomObjectResponse.status)
}

// bool success = 2;
inline void DefineCustomObjectResponse::clear_success() {
  success_ = false;
}
inline bool DefineCustomObjectResponse::_internal_success() const {
  return success_;
}
inline bool DefineCustomObjectResponse::success() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.DefineCustomObjectResponse.success)
  return _internal_success();
}
inline void DefineCustomObjectResponse::_internal_set_success(bool value) {
  
  success_ = value;
}
inline void DefineCustomObjectResponse::set_success(bool value) {
  _internal_set_success(value);
  // @@protoc_insertion_point(field_set:Anki.Vector.external_interface.DefineCustomObjectResponse.success)
}

// -------------------------------------------------------------------

// ObjectEvent

// .Anki.Vector.external_interface.ObjectAvailable object_available = 1;
inline bool ObjectEvent::_internal_has_object_available() const {
  return object_event_type_case() == kObjectAvailable;
}
inline bool ObjectEvent::has_object_available() const {
  return _internal_has_object_available();
}
inline void ObjectEvent::set_has_object_available() {
  _oneof_case_[0] = kObjectAvailable;
}
inline void ObjectEvent::clear_object_available() {
  if (_internal_has_object_available()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.object_available_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::ObjectAvailable* ObjectEvent::release_object_available() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.object_available)
  if (_internal_has_object_available()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::ObjectAvailable* temp = object_event_type_.object_available_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.object_available_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::ObjectAvailable& ObjectEvent::_internal_object_available() const {
  return _internal_has_object_available()
      ? *object_event_type_.object_available_
      : *reinterpret_cast< ::Anki::Vector::external_interface::ObjectAvailable*>(&::Anki::Vector::external_interface::_ObjectAvailable_default_instance_);
}
inline const ::Anki::Vector::external_interface::ObjectAvailable& ObjectEvent::object_available() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.object_available)
  return _internal_object_available();
}
inline ::Anki::Vector::external_interface::ObjectAvailable* ObjectEvent::unsafe_arena_release_object_available() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.object_available)
  if (_internal_has_object_available()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::ObjectAvailable* temp = object_event_type_.object_available_;
    object_event_type_.object_available_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_object_available(::Anki::Vector::external_interface::ObjectAvailable* object_available) {
  clear_object_event_type();
  if (object_available) {
    set_has_object_available();
    object_event_type_.object_available_ = object_available;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.object_available)
}
inline ::Anki::Vector::external_interface::ObjectAvailable* ObjectEvent::_internal_mutable_object_available() {
  if (!_internal_has_object_available()) {
    clear_object_event_type();
    set_has_object_available();
    object_event_type_.object_available_ = CreateMaybeMessage< ::Anki::Vector::external_interface::ObjectAvailable >(GetArena());
  }
  return object_event_type_.object_available_;
}
inline ::Anki::Vector::external_interface::ObjectAvailable* ObjectEvent::mutable_object_available() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.object_available)
  return _internal_mutable_object_available();
}

// .Anki.Vector.external_interface.ObjectConnectionState object_connection_state = 2;
inline bool ObjectEvent::_internal_has_object_connection_state() const {
  return object_event_type_case() == kObjectConnectionState;
}
inline bool ObjectEvent::has_object_connection_state() const {
  return _internal_has_object_connection_state();
}
inline void ObjectEvent::set_has_object_connection_state() {
  _oneof_case_[0] = kObjectConnectionState;
}
inline void ObjectEvent::clear_object_connection_state() {
  if (_internal_has_object_connection_state()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.object_connection_state_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::ObjectConnectionState* ObjectEvent::release_object_connection_state() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.object_connection_state)
  if (_internal_has_object_connection_state()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::ObjectConnectionState* temp = object_event_type_.object_connection_state_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.object_connection_state_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::ObjectConnectionState& ObjectEvent::_internal_object_connection_state() const {
  return _internal_has_object_connection_state()
      ? *object_event_type_.object_connection_state_
      : *reinterpret_cast< ::Anki::Vector::external_interface::ObjectConnectionState*>(&::Anki::Vector::external_interface::_ObjectConnectionState_default_instance_);
}
inline const ::Anki::Vector::external_interface::ObjectConnectionState& ObjectEvent::object_connection_state() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.object_connection_state)
  return _internal_object_connection_state();
}
inline ::Anki::Vector::external_interface::ObjectConnectionState* ObjectEvent::unsafe_arena_release_object_connection_state() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.object_connection_state)
  if (_internal_has_object_connection_state()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::ObjectConnectionState* temp = object_event_type_.object_connection_state_;
    object_event_type_.object_connection_state_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_object_connection_state(::Anki::Vector::external_interface::ObjectConnectionState* object_connection_state) {
  clear_object_event_type();
  if (object_connection_state) {
    set_has_object_connection_state();
    object_event_type_.object_connection_state_ = object_connection_state;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.object_connection_state)
}
inline ::Anki::Vector::external_interface::ObjectConnectionState* ObjectEvent::_internal_mutable_object_connection_state() {
  if (!_internal_has_object_connection_state()) {
    clear_object_event_type();
    set_has_object_connection_state();
    object_event_type_.object_connection_state_ = CreateMaybeMessage< ::Anki::Vector::external_interface::ObjectConnectionState >(GetArena());
  }
  return object_event_type_.object_connection_state_;
}
inline ::Anki::Vector::external_interface::ObjectConnectionState* ObjectEvent::mutable_object_connection_state() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.object_connection_state)
  return _internal_mutable_object_connection_state();
}

// .Anki.Vector.external_interface.ObjectMoved object_moved = 3;
inline bool ObjectEvent::_internal_has_object_moved() const {
  return object_event_type_case() == kObjectMoved;
}
inline bool ObjectEvent::has_object_moved() const {
  return _internal_has_object_moved();
}
inline void ObjectEvent::set_has_object_moved() {
  _oneof_case_[0] = kObjectMoved;
}
inline void ObjectEvent::clear_object_moved() {
  if (_internal_has_object_moved()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.object_moved_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::ObjectMoved* ObjectEvent::release_object_moved() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.object_moved)
  if (_internal_has_object_moved()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::ObjectMoved* temp = object_event_type_.object_moved_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.object_moved_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::ObjectMoved& ObjectEvent::_internal_object_moved() const {
  return _internal_has_object_moved()
      ? *object_event_type_.object_moved_
      : *reinterpret_cast< ::Anki::Vector::external_interface::ObjectMoved*>(&::Anki::Vector::external_interface::_ObjectMoved_default_instance_);
}
inline const ::Anki::Vector::external_interface::ObjectMoved& ObjectEvent::object_moved() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.object_moved)
  return _internal_object_moved();
}
inline ::Anki::Vector::external_interface::ObjectMoved* ObjectEvent::unsafe_arena_release_object_moved() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.object_moved)
  if (_internal_has_object_moved()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::ObjectMoved* temp = object_event_type_.object_moved_;
    object_event_type_.object_moved_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_object_moved(::Anki::Vector::external_interface::ObjectMoved* object_moved) {
  clear_object_event_type();
  if (object_moved) {
    set_has_object_moved();
    object_event_type_.object_moved_ = object_moved;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.object_moved)
}
inline ::Anki::Vector::external_interface::ObjectMoved* ObjectEvent::_internal_mutable_object_moved() {
  if (!_internal_has_object_moved()) {
    clear_object_event_type();
    set_has_object_moved();
    object_event_type_.object_moved_ = CreateMaybeMessage< ::Anki::Vector::external_interface::ObjectMoved >(GetArena());
  }
  return object_event_type_.object_moved_;
}
inline ::Anki::Vector::external_interface::ObjectMoved* ObjectEvent::mutable_object_moved() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.object_moved)
  return _internal_mutable_object_moved();
}

// .Anki.Vector.external_interface.ObjectStoppedMoving object_stopped_moving = 4;
inline bool ObjectEvent::_internal_has_object_stopped_moving() const {
  return object_event_type_case() == kObjectStoppedMoving;
}
inline bool ObjectEvent::has_object_stopped_moving() const {
  return _internal_has_object_stopped_moving();
}
inline void ObjectEvent::set_has_object_stopped_moving() {
  _oneof_case_[0] = kObjectStoppedMoving;
}
inline void ObjectEvent::clear_object_stopped_moving() {
  if (_internal_has_object_stopped_moving()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.object_stopped_moving_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::ObjectStoppedMoving* ObjectEvent::release_object_stopped_moving() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.object_stopped_moving)
  if (_internal_has_object_stopped_moving()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::ObjectStoppedMoving* temp = object_event_type_.object_stopped_moving_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.object_stopped_moving_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::ObjectStoppedMoving& ObjectEvent::_internal_object_stopped_moving() const {
  return _internal_has_object_stopped_moving()
      ? *object_event_type_.object_stopped_moving_
      : *reinterpret_cast< ::Anki::Vector::external_interface::ObjectStoppedMoving*>(&::Anki::Vector::external_interface::_ObjectStoppedMoving_default_instance_);
}
inline const ::Anki::Vector::external_interface::ObjectStoppedMoving& ObjectEvent::object_stopped_moving() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.object_stopped_moving)
  return _internal_object_stopped_moving();
}
inline ::Anki::Vector::external_interface::ObjectStoppedMoving* ObjectEvent::unsafe_arena_release_object_stopped_moving() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.object_stopped_moving)
  if (_internal_has_object_stopped_moving()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::ObjectStoppedMoving* temp = object_event_type_.object_stopped_moving_;
    object_event_type_.object_stopped_moving_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_object_stopped_moving(::Anki::Vector::external_interface::ObjectStoppedMoving* object_stopped_moving) {
  clear_object_event_type();
  if (object_stopped_moving) {
    set_has_object_stopped_moving();
    object_event_type_.object_stopped_moving_ = object_stopped_moving;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.object_stopped_moving)
}
inline ::Anki::Vector::external_interface::ObjectStoppedMoving* ObjectEvent::_internal_mutable_object_stopped_moving() {
  if (!_internal_has_object_stopped_moving()) {
    clear_object_event_type();
    set_has_object_stopped_moving();
    object_event_type_.object_stopped_moving_ = CreateMaybeMessage< ::Anki::Vector::external_interface::ObjectStoppedMoving >(GetArena());
  }
  return object_event_type_.object_stopped_moving_;
}
inline ::Anki::Vector::external_interface::ObjectStoppedMoving* ObjectEvent::mutable_object_stopped_moving() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.object_stopped_moving)
  return _internal_mutable_object_stopped_moving();
}

// .Anki.Vector.external_interface.ObjectUpAxisChanged object_up_axis_changed = 5;
inline bool ObjectEvent::_internal_has_object_up_axis_changed() const {
  return object_event_type_case() == kObjectUpAxisChanged;
}
inline bool ObjectEvent::has_object_up_axis_changed() const {
  return _internal_has_object_up_axis_changed();
}
inline void ObjectEvent::set_has_object_up_axis_changed() {
  _oneof_case_[0] = kObjectUpAxisChanged;
}
inline void ObjectEvent::clear_object_up_axis_changed() {
  if (_internal_has_object_up_axis_changed()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.object_up_axis_changed_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::ObjectUpAxisChanged* ObjectEvent::release_object_up_axis_changed() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.object_up_axis_changed)
  if (_internal_has_object_up_axis_changed()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::ObjectUpAxisChanged* temp = object_event_type_.object_up_axis_changed_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.object_up_axis_changed_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::ObjectUpAxisChanged& ObjectEvent::_internal_object_up_axis_changed() const {
  return _internal_has_object_up_axis_changed()
      ? *object_event_type_.object_up_axis_changed_
      : *reinterpret_cast< ::Anki::Vector::external_interface::ObjectUpAxisChanged*>(&::Anki::Vector::external_interface::_ObjectUpAxisChanged_default_instance_);
}
inline const ::Anki::Vector::external_interface::ObjectUpAxisChanged& ObjectEvent::object_up_axis_changed() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.object_up_axis_changed)
  return _internal_object_up_axis_changed();
}
inline ::Anki::Vector::external_interface::ObjectUpAxisChanged* ObjectEvent::unsafe_arena_release_object_up_axis_changed() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.object_up_axis_changed)
  if (_internal_has_object_up_axis_changed()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::ObjectUpAxisChanged* temp = object_event_type_.object_up_axis_changed_;
    object_event_type_.object_up_axis_changed_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_object_up_axis_changed(::Anki::Vector::external_interface::ObjectUpAxisChanged* object_up_axis_changed) {
  clear_object_event_type();
  if (object_up_axis_changed) {
    set_has_object_up_axis_changed();
    object_event_type_.object_up_axis_changed_ = object_up_axis_changed;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.object_up_axis_changed)
}
inline ::Anki::Vector::external_interface::ObjectUpAxisChanged* ObjectEvent::_internal_mutable_object_up_axis_changed() {
  if (!_internal_has_object_up_axis_changed()) {
    clear_object_event_type();
    set_has_object_up_axis_changed();
    object_event_type_.object_up_axis_changed_ = CreateMaybeMessage< ::Anki::Vector::external_interface::ObjectUpAxisChanged >(GetArena());
  }
  return object_event_type_.object_up_axis_changed_;
}
inline ::Anki::Vector::external_interface::ObjectUpAxisChanged* ObjectEvent::mutable_object_up_axis_changed() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.object_up_axis_changed)
  return _internal_mutable_object_up_axis_changed();
}

// .Anki.Vector.external_interface.ObjectTapped object_tapped = 6;
inline bool ObjectEvent::_internal_has_object_tapped() const {
  return object_event_type_case() == kObjectTapped;
}
inline bool ObjectEvent::has_object_tapped() const {
  return _internal_has_object_tapped();
}
inline void ObjectEvent::set_has_object_tapped() {
  _oneof_case_[0] = kObjectTapped;
}
inline void ObjectEvent::clear_object_tapped() {
  if (_internal_has_object_tapped()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.object_tapped_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::ObjectTapped* ObjectEvent::release_object_tapped() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.object_tapped)
  if (_internal_has_object_tapped()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::ObjectTapped* temp = object_event_type_.object_tapped_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.object_tapped_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::ObjectTapped& ObjectEvent::_internal_object_tapped() const {
  return _internal_has_object_tapped()
      ? *object_event_type_.object_tapped_
      : *reinterpret_cast< ::Anki::Vector::external_interface::ObjectTapped*>(&::Anki::Vector::external_interface::_ObjectTapped_default_instance_);
}
inline const ::Anki::Vector::external_interface::ObjectTapped& ObjectEvent::object_tapped() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.object_tapped)
  return _internal_object_tapped();
}
inline ::Anki::Vector::external_interface::ObjectTapped* ObjectEvent::unsafe_arena_release_object_tapped() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.object_tapped)
  if (_internal_has_object_tapped()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::ObjectTapped* temp = object_event_type_.object_tapped_;
    object_event_type_.object_tapped_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_object_tapped(::Anki::Vector::external_interface::ObjectTapped* object_tapped) {
  clear_object_event_type();
  if (object_tapped) {
    set_has_object_tapped();
    object_event_type_.object_tapped_ = object_tapped;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.object_tapped)
}
inline ::Anki::Vector::external_interface::ObjectTapped* ObjectEvent::_internal_mutable_object_tapped() {
  if (!_internal_has_object_tapped()) {
    clear_object_event_type();
    set_has_object_tapped();
    object_event_type_.object_tapped_ = CreateMaybeMessage< ::Anki::Vector::external_interface::ObjectTapped >(GetArena());
  }
  return object_event_type_.object_tapped_;
}
inline ::Anki::Vector::external_interface::ObjectTapped* ObjectEvent::mutable_object_tapped() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.object_tapped)
  return _internal_mutable_object_tapped();
}

// .Anki.Vector.external_interface.RobotObservedObject robot_observed_object = 7;
inline bool ObjectEvent::_internal_has_robot_observed_object() const {
  return object_event_type_case() == kRobotObservedObject;
}
inline bool ObjectEvent::has_robot_observed_object() const {
  return _internal_has_robot_observed_object();
}
inline void ObjectEvent::set_has_robot_observed_object() {
  _oneof_case_[0] = kRobotObservedObject;
}
inline void ObjectEvent::clear_robot_observed_object() {
  if (_internal_has_robot_observed_object()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.robot_observed_object_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::RobotObservedObject* ObjectEvent::release_robot_observed_object() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.robot_observed_object)
  if (_internal_has_robot_observed_object()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::RobotObservedObject* temp = object_event_type_.robot_observed_object_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.robot_observed_object_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::RobotObservedObject& ObjectEvent::_internal_robot_observed_object() const {
  return _internal_has_robot_observed_object()
      ? *object_event_type_.robot_observed_object_
      : *reinterpret_cast< ::Anki::Vector::external_interface::RobotObservedObject*>(&::Anki::Vector::external_interface::_RobotObservedObject_default_instance_);
}
inline const ::Anki::Vector::external_interface::RobotObservedObject& ObjectEvent::robot_observed_object() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.robot_observed_object)
  return _internal_robot_observed_object();
}
inline ::Anki::Vector::external_interface::RobotObservedObject* ObjectEvent::unsafe_arena_release_robot_observed_object() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.robot_observed_object)
  if (_internal_has_robot_observed_object()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::RobotObservedObject* temp = object_event_type_.robot_observed_object_;
    object_event_type_.robot_observed_object_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_robot_observed_object(::Anki::Vector::external_interface::RobotObservedObject* robot_observed_object) {
  clear_object_event_type();
  if (robot_observed_object) {
    set_has_robot_observed_object();
    object_event_type_.robot_observed_object_ = robot_observed_object;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.robot_observed_object)
}
inline ::Anki::Vector::external_interface::RobotObservedObject* ObjectEvent::_internal_mutable_robot_observed_object() {
  if (!_internal_has_robot_observed_object()) {
    clear_object_event_type();
    set_has_robot_observed_object();
    object_event_type_.robot_observed_object_ = CreateMaybeMessage< ::Anki::Vector::external_interface::RobotObservedObject >(GetArena());
  }
  return object_event_type_.robot_observed_object_;
}
inline ::Anki::Vector::external_interface::RobotObservedObject* ObjectEvent::mutable_robot_observed_object() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.robot_observed_object)
  return _internal_mutable_robot_observed_object();
}

// .Anki.Vector.external_interface.CubeConnectionLost cube_connection_lost = 8;
inline bool ObjectEvent::_internal_has_cube_connection_lost() const {
  return object_event_type_case() == kCubeConnectionLost;
}
inline bool ObjectEvent::has_cube_connection_lost() const {
  return _internal_has_cube_connection_lost();
}
inline void ObjectEvent::set_has_cube_connection_lost() {
  _oneof_case_[0] = kCubeConnectionLost;
}
inline void ObjectEvent::clear_cube_connection_lost() {
  if (_internal_has_cube_connection_lost()) {
    if (GetArena() == nullptr) {
      delete object_event_type_.cube_connection_lost_;
    }
    clear_has_object_event_type();
  }
}
inline ::Anki::Vector::external_interface::CubeConnectionLost* ObjectEvent::release_cube_connection_lost() {
  // @@protoc_insertion_point(field_release:Anki.Vector.external_interface.ObjectEvent.cube_connection_lost)
  if (_internal_has_cube_connection_lost()) {
    clear_has_object_event_type();
      ::Anki::Vector::external_interface::CubeConnectionLost* temp = object_event_type_.cube_connection_lost_;
    if (GetArena() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    object_event_type_.cube_connection_lost_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::Anki::Vector::external_interface::CubeConnectionLost& ObjectEvent::_internal_cube_connection_lost() const {
  return _internal_has_cube_connection_lost()
      ? *object_event_type_.cube_connection_lost_
      : *reinterpret_cast< ::Anki::Vector::external_interface::CubeConnectionLost*>(&::Anki::Vector::external_interface::_CubeConnectionLost_default_instance_);
}
inline const ::Anki::Vector::external_interface::CubeConnectionLost& ObjectEvent::cube_connection_lost() const {
  // @@protoc_insertion_point(field_get:Anki.Vector.external_interface.ObjectEvent.cube_connection_lost)
  return _internal_cube_connection_lost();
}
inline ::Anki::Vector::external_interface::CubeConnectionLost* ObjectEvent::unsafe_arena_release_cube_connection_lost() {
  // @@protoc_insertion_point(field_unsafe_arena_release:Anki.Vector.external_interface.ObjectEvent.cube_connection_lost)
  if (_internal_has_cube_connection_lost()) {
    clear_has_object_event_type();
    ::Anki::Vector::external_interface::CubeConnectionLost* temp = object_event_type_.cube_connection_lost_;
    object_event_type_.cube_connection_lost_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ObjectEvent::unsafe_arena_set_allocated_cube_connection_lost(::Anki::Vector::external_interface::CubeConnectionLost* cube_connection_lost) {
  clear_object_event_type();
  if (cube_connection_lost) {
    set_has_cube_connection_lost();
    object_event_type_.cube_connection_lost_ = cube_connection_lost;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Anki.Vector.external_interface.ObjectEvent.cube_connection_lost)
}
inline ::Anki::Vector::external_interface::CubeConnectionLost* ObjectEvent::_internal_mutable_cube_connection_lost() {
  if (!_internal_has_cube_connection_lost()) {
    clear_object_event_type();
    set_has_cube_connection_lost();
    object_event_type_.cube_connection_lost_ = CreateMaybeMessage< ::Anki::Vector::external_interface::CubeConnectionLost >(GetArena());
  }
  return object_event_type_.cube_connection_lost_;
}
inline ::Anki::Vector::external_interface::CubeConnectionLost* ObjectEvent::mutable_cube_connection_lost() {
  // @@protoc_insertion_point(field_mutable:Anki.Vector.external_interface.ObjectEvent.cube_connection_lost)
  return _internal_mutable_cube_connection_lost();
}

inline bool ObjectEvent::has_object_event_type() const {
  return object_event_type_case() != OBJECT_EVENT_TYPE_NOT_SET;
}
inline void ObjectEvent::clear_has_object_event_type() {
  _oneof_case_[0] = OBJECT_EVENT_TYPE_NOT_SET;
}
inline ObjectEvent::ObjectEventTypeCase ObjectEvent::object_event_type_case() const {
  return ObjectEvent::ObjectEventTypeCase(_oneof_case_[0]);
}
#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)

}  // namespace external_interface
}  // namespace Vector
}  // namespace Anki

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode>() {
  return ::Anki::Vector::external_interface::SetCubeLightsRequest_MakeRelativeMode_descriptor();
}
template <> struct is_proto_enum< ::Anki::Vector::external_interface::ObjectType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::ObjectType>() {
  return ::Anki::Vector::external_interface::ObjectType_descriptor();
}
template <> struct is_proto_enum< ::Anki::Vector::external_interface::CustomType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::CustomType>() {
  return ::Anki::Vector::external_interface::CustomType_descriptor();
}
template <> struct is_proto_enum< ::Anki::Vector::external_interface::ObjectFamily> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::ObjectFamily>() {
  return ::Anki::Vector::external_interface::ObjectFamily_descriptor();
}
template <> struct is_proto_enum< ::Anki::Vector::external_interface::UpAxis> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::UpAxis>() {
  return ::Anki::Vector::external_interface::UpAxis_descriptor();
}
template <> struct is_proto_enum< ::Anki::Vector::external_interface::ObjectConstants> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::ObjectConstants>() {
  return ::Anki::Vector::external_interface::ObjectConstants_descriptor();
}
template <> struct is_proto_enum< ::Anki::Vector::external_interface::CustomObjectMarker> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::CustomObjectMarker>() {
  return ::Anki::Vector::external_interface::CustomObjectMarker_descriptor();
}
template <> struct is_proto_enum< ::Anki::Vector::external_interface::CustomObjectDeletionMode> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::Anki::Vector::external_interface::CustomObjectDeletionMode>() {
  return ::Anki::Vector::external_interface::CustomObjectDeletionMode_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_cube_2eproto
