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

#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
#include "stp_api.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/once.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
// @@protoc_insertion_point(includes)

namespace Impinj {
namespace STP {

void protobuf_ShutdownFile_stp_5fapi_2eproto() {
  delete Reply::default_instance_;
  delete DeviceState::default_instance_;
  delete Version::default_instance_;
  delete Versions::default_instance_;
  delete HandShake::default_instance_;
  delete Region::default_instance_;
  delete Timestamp::default_instance_;
  delete ConnectCommand::default_instance_;
  delete GetDeviceStateCommand::default_instance_;
  delete GetVersionsReaderCommand::default_instance_;
  delete StopCommand::default_instance_;
  delete ConnectResp::default_instance_;
  delete GetDeviceStateResp::default_instance_;
  delete GetVersionsReaderResp::default_instance_;
  delete InvalidResp::default_instance_;
  delete StopResp::default_instance_;
  delete DeviceConfig::default_instance_;
  delete TriggerConfig::default_instance_;
  delete StartTriggerConfig::default_instance_;
  delete StopTriggerConfig::default_instance_;
  delete GPIConfig::default_instance_;
  delete GPOConfig::default_instance_;
  delete STPDevice::default_instance_;
  delete OperationResponsibility::default_instance_;
  delete OperationResponsibility::_default_epc_memory_mask_;
  delete OperationResponsibility::_default_user_memory_mask_;
  delete VoidTagResponsibility::default_instance_;
  delete OperationSummaryReportConfig::default_instance_;
  delete TagOperationReportConfig::default_instance_;
  delete ReportConfig::default_instance_;
  delete AntennaConfig::default_instance_;
  delete AntennasConfig::default_instance_;
  delete InventoryJob::default_instance_;
  delete CartonContentsJob::default_instance_;
  delete VoidTagConfig::default_instance_;
  delete Filter::default_instance_;
  delete SerializationJobFilters::default_instance_;
  delete SerializationJob::default_instance_;
  delete PCWord::default_instance_;
  delete EPCMemory::default_instance_;
  delete TIDMemory::default_instance_;
  delete Serialization::default_instance_;
  delete MonzaSelfSerialization::default_instance_;
  delete SerialNumberRange::default_instance_;
  delete UserMemory::default_instance_;
  delete Password::default_instance_;
  delete LockConfig::default_instance_;
  delete BlockPermalockConfig::default_instance_;
  delete MonzaR6PFeatureConfig::default_instance_;
  delete MonzaS6CFeatureConfig::default_instance_;
  delete MonzaR6FeatureConfig::default_instance_;
  delete MonzaR6AFeatureConfig::default_instance_;
  delete TIDTableEntry::default_instance_;
  delete TIDTableEntries::default_instance_;
  delete OrderedListEntry::default_instance_;
  delete OrderedListEntries::default_instance_;
  delete LowEncodeVolumeEventConfig::default_instance_;
  delete DeviceEventConfig::default_instance_;
  delete OperationSummaryReport::default_instance_;
  delete TagOperationReport::default_instance_;
  delete CartonContentsTag::default_instance_;
  delete CartonContentsReport::default_instance_;
  delete CartonContentsError::default_instance_;
  delete TagModeMetrics::default_instance_;
  delete TagMetrics::default_instance_;
  delete InterDeviceCommunicationMetrics::default_instance_;
  delete OperationMetrics::default_instance_;
  delete OperationDataDetails::default_instance_;
  delete OperationData::default_instance_;
  delete LicenseKey::default_instance_;
  delete OperationEvent::default_instance_;
  delete DeviceExceptionEvent::default_instance_;
  delete GPIEvent::default_instance_;
  delete LowEncodeVolumeEvent::default_instance_;
  delete DeviceEventReport::default_instance_;
  delete GetAntennaConfigCommand::default_instance_;
  delete SetAntennaConfigCommand::default_instance_;
  delete StartCommand::default_instance_;
  delete SetDeviceConfigCommand::default_instance_;
  delete GetDeviceConfigCommand::default_instance_;
  delete EngageCommand::default_instance_;
  delete DisengageCommand::default_instance_;
  delete SetOperationResultGPOCommand::default_instance_;
  delete AddSerializationJobCommand::default_instance_;
  delete RemoveSerializationJobCommand::default_instance_;
  delete SetInventoryJobCommand::default_instance_;
  delete SetCartonContentsJobCommand::default_instance_;
  delete GetOperationDataCommand::default_instance_;
  delete AddLicenseKeyCommand::default_instance_;
  delete AddTIDTableEntriesCommand::default_instance_;
  delete AddOrderedListEntriesCommand::default_instance_;
  delete StartResp::default_instance_;
  delete SetDeviceConfigResp::default_instance_;
  delete GetDeviceConfigResp::default_instance_;
  delete SetAntennaConfigResp::default_instance_;
  delete GetAntennaConfigResp::default_instance_;
  delete EngageResp::default_instance_;
  delete DisengageResp::default_instance_;
  delete SetOperationResultGPOResp::default_instance_;
  delete AddSerializationJobResp::default_instance_;
  delete RemoveSerializationJobResp::default_instance_;
  delete SetInventoryJobResp::default_instance_;
  delete SetCartonContentsJobResp::default_instance_;
  delete GetOperationDataResp::default_instance_;
  delete AddLicenseKeyResp::default_instance_;
  delete AddTIDTableEntriesResp::default_instance_;
  delete AddOrderedListEntriesResp::default_instance_;
  delete Command::default_instance_;
  delete Response::default_instance_;
  delete Report::default_instance_;
  delete Update::default_instance_;
  delete Packet::default_instance_;
}

#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
void protobuf_AddDesc_stp_5fapi_2eproto_impl() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

#else
void protobuf_AddDesc_stp_5fapi_2eproto() {
  static bool already_here = false;
  if (already_here) return;
  already_here = true;
  GOOGLE_PROTOBUF_VERIFY_VERSION;

#endif
  Reply::default_instance_ = new Reply();
  DeviceState::default_instance_ = new DeviceState();
  Version::default_instance_ = new Version();
  Versions::default_instance_ = new Versions();
  HandShake::default_instance_ = new HandShake();
  Region::default_instance_ = new Region();
  Timestamp::default_instance_ = new Timestamp();
  ConnectCommand::default_instance_ = new ConnectCommand();
  GetDeviceStateCommand::default_instance_ = new GetDeviceStateCommand();
  GetVersionsReaderCommand::default_instance_ = new GetVersionsReaderCommand();
  StopCommand::default_instance_ = new StopCommand();
  ConnectResp::default_instance_ = new ConnectResp();
  GetDeviceStateResp::default_instance_ = new GetDeviceStateResp();
  GetVersionsReaderResp::default_instance_ = new GetVersionsReaderResp();
  InvalidResp::default_instance_ = new InvalidResp();
  StopResp::default_instance_ = new StopResp();
  DeviceConfig::default_instance_ = new DeviceConfig();
  TriggerConfig::default_instance_ = new TriggerConfig();
  StartTriggerConfig::default_instance_ = new StartTriggerConfig();
  StopTriggerConfig::default_instance_ = new StopTriggerConfig();
  GPIConfig::default_instance_ = new GPIConfig();
  GPOConfig::default_instance_ = new GPOConfig();
  STPDevice::default_instance_ = new STPDevice();
  OperationResponsibility::_default_epc_memory_mask_ =
      new ::std::string("\377\377", 2);
  OperationResponsibility::_default_user_memory_mask_ =
      new ::std::string("\377\377\377\377\377\377\377\377", 8);
  OperationResponsibility::default_instance_ = new OperationResponsibility();
  VoidTagResponsibility::default_instance_ = new VoidTagResponsibility();
  OperationSummaryReportConfig::default_instance_ = new OperationSummaryReportConfig();
  TagOperationReportConfig::default_instance_ = new TagOperationReportConfig();
  ReportConfig::default_instance_ = new ReportConfig();
  AntennaConfig::default_instance_ = new AntennaConfig();
  AntennasConfig::default_instance_ = new AntennasConfig();
  InventoryJob::default_instance_ = new InventoryJob();
  CartonContentsJob::default_instance_ = new CartonContentsJob();
  VoidTagConfig::default_instance_ = new VoidTagConfig();
  Filter::default_instance_ = new Filter();
  SerializationJobFilters::default_instance_ = new SerializationJobFilters();
  SerializationJob::default_instance_ = new SerializationJob();
  PCWord::default_instance_ = new PCWord();
  EPCMemory::default_instance_ = new EPCMemory();
  TIDMemory::default_instance_ = new TIDMemory();
  Serialization::default_instance_ = new Serialization();
  MonzaSelfSerialization::default_instance_ = new MonzaSelfSerialization();
  SerialNumberRange::default_instance_ = new SerialNumberRange();
  UserMemory::default_instance_ = new UserMemory();
  Password::default_instance_ = new Password();
  LockConfig::default_instance_ = new LockConfig();
  BlockPermalockConfig::default_instance_ = new BlockPermalockConfig();
  MonzaR6PFeatureConfig::default_instance_ = new MonzaR6PFeatureConfig();
  MonzaS6CFeatureConfig::default_instance_ = new MonzaS6CFeatureConfig();
  MonzaR6FeatureConfig::default_instance_ = new MonzaR6FeatureConfig();
  MonzaR6AFeatureConfig::default_instance_ = new MonzaR6AFeatureConfig();
  TIDTableEntry::default_instance_ = new TIDTableEntry();
  TIDTableEntries::default_instance_ = new TIDTableEntries();
  OrderedListEntry::default_instance_ = new OrderedListEntry();
  OrderedListEntries::default_instance_ = new OrderedListEntries();
  LowEncodeVolumeEventConfig::default_instance_ = new LowEncodeVolumeEventConfig();
  DeviceEventConfig::default_instance_ = new DeviceEventConfig();
  OperationSummaryReport::default_instance_ = new OperationSummaryReport();
  TagOperationReport::default_instance_ = new TagOperationReport();
  CartonContentsTag::default_instance_ = new CartonContentsTag();
  CartonContentsReport::default_instance_ = new CartonContentsReport();
  CartonContentsError::default_instance_ = new CartonContentsError();
  TagModeMetrics::default_instance_ = new TagModeMetrics();
  TagMetrics::default_instance_ = new TagMetrics();
  InterDeviceCommunicationMetrics::default_instance_ = new InterDeviceCommunicationMetrics();
  OperationMetrics::default_instance_ = new OperationMetrics();
  OperationDataDetails::default_instance_ = new OperationDataDetails();
  OperationData::default_instance_ = new OperationData();
  LicenseKey::default_instance_ = new LicenseKey();
  OperationEvent::default_instance_ = new OperationEvent();
  DeviceExceptionEvent::default_instance_ = new DeviceExceptionEvent();
  GPIEvent::default_instance_ = new GPIEvent();
  LowEncodeVolumeEvent::default_instance_ = new LowEncodeVolumeEvent();
  DeviceEventReport::default_instance_ = new DeviceEventReport();
  GetAntennaConfigCommand::default_instance_ = new GetAntennaConfigCommand();
  SetAntennaConfigCommand::default_instance_ = new SetAntennaConfigCommand();
  StartCommand::default_instance_ = new StartCommand();
  SetDeviceConfigCommand::default_instance_ = new SetDeviceConfigCommand();
  GetDeviceConfigCommand::default_instance_ = new GetDeviceConfigCommand();
  EngageCommand::default_instance_ = new EngageCommand();
  DisengageCommand::default_instance_ = new DisengageCommand();
  SetOperationResultGPOCommand::default_instance_ = new SetOperationResultGPOCommand();
  AddSerializationJobCommand::default_instance_ = new AddSerializationJobCommand();
  RemoveSerializationJobCommand::default_instance_ = new RemoveSerializationJobCommand();
  SetInventoryJobCommand::default_instance_ = new SetInventoryJobCommand();
  SetCartonContentsJobCommand::default_instance_ = new SetCartonContentsJobCommand();
  GetOperationDataCommand::default_instance_ = new GetOperationDataCommand();
  AddLicenseKeyCommand::default_instance_ = new AddLicenseKeyCommand();
  AddTIDTableEntriesCommand::default_instance_ = new AddTIDTableEntriesCommand();
  AddOrderedListEntriesCommand::default_instance_ = new AddOrderedListEntriesCommand();
  StartResp::default_instance_ = new StartResp();
  SetDeviceConfigResp::default_instance_ = new SetDeviceConfigResp();
  GetDeviceConfigResp::default_instance_ = new GetDeviceConfigResp();
  SetAntennaConfigResp::default_instance_ = new SetAntennaConfigResp();
  GetAntennaConfigResp::default_instance_ = new GetAntennaConfigResp();
  EngageResp::default_instance_ = new EngageResp();
  DisengageResp::default_instance_ = new DisengageResp();
  SetOperationResultGPOResp::default_instance_ = new SetOperationResultGPOResp();
  AddSerializationJobResp::default_instance_ = new AddSerializationJobResp();
  RemoveSerializationJobResp::default_instance_ = new RemoveSerializationJobResp();
  SetInventoryJobResp::default_instance_ = new SetInventoryJobResp();
  SetCartonContentsJobResp::default_instance_ = new SetCartonContentsJobResp();
  GetOperationDataResp::default_instance_ = new GetOperationDataResp();
  AddLicenseKeyResp::default_instance_ = new AddLicenseKeyResp();
  AddTIDTableEntriesResp::default_instance_ = new AddTIDTableEntriesResp();
  AddOrderedListEntriesResp::default_instance_ = new AddOrderedListEntriesResp();
  Command::default_instance_ = new Command();
  Response::default_instance_ = new Response();
  Report::default_instance_ = new Report();
  Update::default_instance_ = new Update();
  Packet::default_instance_ = new Packet();
  Reply::default_instance_->InitAsDefaultInstance();
  DeviceState::default_instance_->InitAsDefaultInstance();
  Version::default_instance_->InitAsDefaultInstance();
  Versions::default_instance_->InitAsDefaultInstance();
  HandShake::default_instance_->InitAsDefaultInstance();
  Region::default_instance_->InitAsDefaultInstance();
  Timestamp::default_instance_->InitAsDefaultInstance();
  ConnectCommand::default_instance_->InitAsDefaultInstance();
  GetDeviceStateCommand::default_instance_->InitAsDefaultInstance();
  GetVersionsReaderCommand::default_instance_->InitAsDefaultInstance();
  StopCommand::default_instance_->InitAsDefaultInstance();
  ConnectResp::default_instance_->InitAsDefaultInstance();
  GetDeviceStateResp::default_instance_->InitAsDefaultInstance();
  GetVersionsReaderResp::default_instance_->InitAsDefaultInstance();
  InvalidResp::default_instance_->InitAsDefaultInstance();
  StopResp::default_instance_->InitAsDefaultInstance();
  DeviceConfig::default_instance_->InitAsDefaultInstance();
  TriggerConfig::default_instance_->InitAsDefaultInstance();
  StartTriggerConfig::default_instance_->InitAsDefaultInstance();
  StopTriggerConfig::default_instance_->InitAsDefaultInstance();
  GPIConfig::default_instance_->InitAsDefaultInstance();
  GPOConfig::default_instance_->InitAsDefaultInstance();
  STPDevice::default_instance_->InitAsDefaultInstance();
  OperationResponsibility::default_instance_->InitAsDefaultInstance();
  VoidTagResponsibility::default_instance_->InitAsDefaultInstance();
  OperationSummaryReportConfig::default_instance_->InitAsDefaultInstance();
  TagOperationReportConfig::default_instance_->InitAsDefaultInstance();
  ReportConfig::default_instance_->InitAsDefaultInstance();
  AntennaConfig::default_instance_->InitAsDefaultInstance();
  AntennasConfig::default_instance_->InitAsDefaultInstance();
  InventoryJob::default_instance_->InitAsDefaultInstance();
  CartonContentsJob::default_instance_->InitAsDefaultInstance();
  VoidTagConfig::default_instance_->InitAsDefaultInstance();
  Filter::default_instance_->InitAsDefaultInstance();
  SerializationJobFilters::default_instance_->InitAsDefaultInstance();
  SerializationJob::default_instance_->InitAsDefaultInstance();
  PCWord::default_instance_->InitAsDefaultInstance();
  EPCMemory::default_instance_->InitAsDefaultInstance();
  TIDMemory::default_instance_->InitAsDefaultInstance();
  Serialization::default_instance_->InitAsDefaultInstance();
  MonzaSelfSerialization::default_instance_->InitAsDefaultInstance();
  SerialNumberRange::default_instance_->InitAsDefaultInstance();
  UserMemory::default_instance_->InitAsDefaultInstance();
  Password::default_instance_->InitAsDefaultInstance();
  LockConfig::default_instance_->InitAsDefaultInstance();
  BlockPermalockConfig::default_instance_->InitAsDefaultInstance();
  MonzaR6PFeatureConfig::default_instance_->InitAsDefaultInstance();
  MonzaS6CFeatureConfig::default_instance_->InitAsDefaultInstance();
  MonzaR6FeatureConfig::default_instance_->InitAsDefaultInstance();
  MonzaR6AFeatureConfig::default_instance_->InitAsDefaultInstance();
  TIDTableEntry::default_instance_->InitAsDefaultInstance();
  TIDTableEntries::default_instance_->InitAsDefaultInstance();
  OrderedListEntry::default_instance_->InitAsDefaultInstance();
  OrderedListEntries::default_instance_->InitAsDefaultInstance();
  LowEncodeVolumeEventConfig::default_instance_->InitAsDefaultInstance();
  DeviceEventConfig::default_instance_->InitAsDefaultInstance();
  OperationSummaryReport::default_instance_->InitAsDefaultInstance();
  TagOperationReport::default_instance_->InitAsDefaultInstance();
  CartonContentsTag::default_instance_->InitAsDefaultInstance();
  CartonContentsReport::default_instance_->InitAsDefaultInstance();
  CartonContentsError::default_instance_->InitAsDefaultInstance();
  TagModeMetrics::default_instance_->InitAsDefaultInstance();
  TagMetrics::default_instance_->InitAsDefaultInstance();
  InterDeviceCommunicationMetrics::default_instance_->InitAsDefaultInstance();
  OperationMetrics::default_instance_->InitAsDefaultInstance();
  OperationDataDetails::default_instance_->InitAsDefaultInstance();
  OperationData::default_instance_->InitAsDefaultInstance();
  LicenseKey::default_instance_->InitAsDefaultInstance();
  OperationEvent::default_instance_->InitAsDefaultInstance();
  DeviceExceptionEvent::default_instance_->InitAsDefaultInstance();
  GPIEvent::default_instance_->InitAsDefaultInstance();
  LowEncodeVolumeEvent::default_instance_->InitAsDefaultInstance();
  DeviceEventReport::default_instance_->InitAsDefaultInstance();
  GetAntennaConfigCommand::default_instance_->InitAsDefaultInstance();
  SetAntennaConfigCommand::default_instance_->InitAsDefaultInstance();
  StartCommand::default_instance_->InitAsDefaultInstance();
  SetDeviceConfigCommand::default_instance_->InitAsDefaultInstance();
  GetDeviceConfigCommand::default_instance_->InitAsDefaultInstance();
  EngageCommand::default_instance_->InitAsDefaultInstance();
  DisengageCommand::default_instance_->InitAsDefaultInstance();
  SetOperationResultGPOCommand::default_instance_->InitAsDefaultInstance();
  AddSerializationJobCommand::default_instance_->InitAsDefaultInstance();
  RemoveSerializationJobCommand::default_instance_->InitAsDefaultInstance();
  SetInventoryJobCommand::default_instance_->InitAsDefaultInstance();
  SetCartonContentsJobCommand::default_instance_->InitAsDefaultInstance();
  GetOperationDataCommand::default_instance_->InitAsDefaultInstance();
  AddLicenseKeyCommand::default_instance_->InitAsDefaultInstance();
  AddTIDTableEntriesCommand::default_instance_->InitAsDefaultInstance();
  AddOrderedListEntriesCommand::default_instance_->InitAsDefaultInstance();
  StartResp::default_instance_->InitAsDefaultInstance();
  SetDeviceConfigResp::default_instance_->InitAsDefaultInstance();
  GetDeviceConfigResp::default_instance_->InitAsDefaultInstance();
  SetAntennaConfigResp::default_instance_->InitAsDefaultInstance();
  GetAntennaConfigResp::default_instance_->InitAsDefaultInstance();
  EngageResp::default_instance_->InitAsDefaultInstance();
  DisengageResp::default_instance_->InitAsDefaultInstance();
  SetOperationResultGPOResp::default_instance_->InitAsDefaultInstance();
  AddSerializationJobResp::default_instance_->InitAsDefaultInstance();
  RemoveSerializationJobResp::default_instance_->InitAsDefaultInstance();
  SetInventoryJobResp::default_instance_->InitAsDefaultInstance();
  SetCartonContentsJobResp::default_instance_->InitAsDefaultInstance();
  GetOperationDataResp::default_instance_->InitAsDefaultInstance();
  AddLicenseKeyResp::default_instance_->InitAsDefaultInstance();
  AddTIDTableEntriesResp::default_instance_->InitAsDefaultInstance();
  AddOrderedListEntriesResp::default_instance_->InitAsDefaultInstance();
  Command::default_instance_->InitAsDefaultInstance();
  Response::default_instance_->InitAsDefaultInstance();
  Report::default_instance_->InitAsDefaultInstance();
  Update::default_instance_->InitAsDefaultInstance();
  Packet::default_instance_->InitAsDefaultInstance();
  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_stp_5fapi_2eproto);
}

#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AddDesc_stp_5fapi_2eproto_once_);
void protobuf_AddDesc_stp_5fapi_2eproto() {
  ::google::protobuf::::google::protobuf::GoogleOnceInit(&protobuf_AddDesc_stp_5fapi_2eproto_once_,
                 &protobuf_AddDesc_stp_5fapi_2eproto_impl);
}
#else
// Force AddDescriptors() to be called at static initialization time.
struct StaticDescriptorInitializer_stp_5fapi_2eproto {
  StaticDescriptorInitializer_stp_5fapi_2eproto() {
    protobuf_AddDesc_stp_5fapi_2eproto();
  }
} static_descriptor_initializer_stp_5fapi_2eproto_;
#endif
bool ErrorCode_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
      return true;
    default:
      return false;
  }
}

bool Gen2Session_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

bool DeviceOperatingState_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

bool DeviceFaultType_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

bool VersionType_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
      return true;
    default:
      return false;
  }
}

bool RegulatoryRegion_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
      return true;
    default:
      return false;
  }
}

bool GPIOState_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

bool GPIOPolarity_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

bool Gen2Mode_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 1000:
      return true;
    default:
      return false;
  }
}

bool InventorySearchMode_IsValid(int value) {
  switch(value) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 7:
    case 8:
      return true;
    default:
      return false;
  }
}

bool DeviceMode_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 6:
      return true;
    default:
      return false;
  }
}

bool OperationMode_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

bool GPIOSignalMode_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

bool ReportType_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

bool TagOperationReportTrigger_IsValid(int value) {
  switch(value) {
    case 1:
      return true;
    default:
      return false;
  }
}

bool OperationSummaryResult_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

bool TagOperationResult_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
    case 26:
    case 27:
    case 28:
    case 29:
    case 30:
    case 31:
      return true;
    default:
      return false;
  }
}

bool SerializationJobType_IsValid(int value) {
  switch(value) {
    case 1:
    case 4:
    case 5:
      return true;
    default:
      return false;
  }
}

bool SerializationJobCompletionCriteria_IsValid(int value) {
  switch(value) {
    case 4:
      return true;
    default:
      return false;
  }
}

bool SerialNumberRangeFormat_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

bool PasswordGenerationMethod_IsValid(int value) {
  switch(value) {
    case 1:
      return true;
    default:
      return false;
  }
}

bool MonzaR6PMemoryMapConfig_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

bool TagOperationReportType_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

bool CartonContentsResult_IsValid(int value) {
  switch(value) {
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

bool CartonContentsErrorType_IsValid(int value) {
  switch(value) {
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

bool OperationEventType_IsValid(int value) {
  switch(value) {
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

bool OperationTriggerType_IsValid(int value) {
  switch(value) {
    case 1:
    case 2:
    case 4:
      return true;
    default:
      return false;
  }
}

bool DeviceExceptionEventType_IsValid(int value) {
  switch(value) {
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

bool LowEncodeVolumeEventType_IsValid(int value) {
  switch(value) {
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}


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

#ifndef _MSC_VER
const int Reply::kErrorCodeFieldNumber;
const int Reply::kErrorStringFieldNumber;
#endif  // !_MSC_VER

Reply::Reply()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Reply::InitAsDefaultInstance() {
}

Reply::Reply(const Reply& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Reply::SharedCtor() {
  _cached_size_ = 0;
  error_code_ = 0;
  error_string_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Reply::~Reply() {
  SharedDtor();
}

void Reply::SharedDtor() {
  if (error_string_ != &::google::protobuf::internal::kEmptyString) {
    delete error_string_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void Reply::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Reply& Reply::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Reply* Reply::default_instance_ = NULL;

Reply* Reply::New() const {
  return new Reply;
}

void Reply::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    error_code_ = 0;
    if (has_error_string()) {
      if (error_string_ != &::google::protobuf::internal::kEmptyString) {
        error_string_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Reply::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.ErrorCode error_code = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::ErrorCode_IsValid(value)) {
            set_error_code(static_cast< ::Impinj::STP::ErrorCode >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_error_string;
        break;
      }

      // optional string error_string = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_error_string:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_error_string()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Reply::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.ErrorCode error_code = 1;
  if (has_error_code()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->error_code(), output);
  }

  // optional string error_string = 2;
  if (has_error_string()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->error_string(), output);
  }

}

int Reply::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.ErrorCode error_code = 1;
    if (has_error_code()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->error_code());
    }

    // optional string error_string = 2;
    if (has_error_string()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->error_string());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Reply::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Reply*>(&from));
}

void Reply::MergeFrom(const Reply& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_error_code()) {
      set_error_code(from.error_code());
    }
    if (from.has_error_string()) {
      set_error_string(from.error_string());
    }
  }
}

void Reply::CopyFrom(const Reply& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Reply::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void Reply::Swap(Reply* other) {
  if (other != this) {
    std::swap(error_code_, other->error_code_);
    std::swap(error_string_, other->error_string_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Reply::GetTypeName() const {
  return "Impinj.STP.Reply";
}


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

#ifndef _MSC_VER
const int DeviceState::kDeviceOperatingStateFieldNumber;
const int DeviceState::kDeviceFaultFieldNumber;
const int DeviceState::kFaultDetailsFieldNumber;
#endif  // !_MSC_VER

DeviceState::DeviceState()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void DeviceState::InitAsDefaultInstance() {
}

DeviceState::DeviceState(const DeviceState& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void DeviceState::SharedCtor() {
  _cached_size_ = 0;
  device_operating_state_ = 0;
  device_fault_ = 0;
  fault_details_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

DeviceState::~DeviceState() {
  SharedDtor();
}

void DeviceState::SharedDtor() {
  if (fault_details_ != &::google::protobuf::internal::kEmptyString) {
    delete fault_details_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void DeviceState::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const DeviceState& DeviceState::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

DeviceState* DeviceState::default_instance_ = NULL;

DeviceState* DeviceState::New() const {
  return new DeviceState;
}

void DeviceState::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    device_operating_state_ = 0;
    device_fault_ = 0;
    if (has_fault_details()) {
      if (fault_details_ != &::google::protobuf::internal::kEmptyString) {
        fault_details_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool DeviceState::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.DeviceOperatingState device_operating_state = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::DeviceOperatingState_IsValid(value)) {
            set_device_operating_state(static_cast< ::Impinj::STP::DeviceOperatingState >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_device_fault;
        break;
      }

      // optional .Impinj.STP.DeviceFaultType device_fault = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_device_fault:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::DeviceFaultType_IsValid(value)) {
            set_device_fault(static_cast< ::Impinj::STP::DeviceFaultType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_fault_details;
        break;
      }

      // optional string fault_details = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_fault_details:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_fault_details()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void DeviceState::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.DeviceOperatingState device_operating_state = 1;
  if (has_device_operating_state()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->device_operating_state(), output);
  }

  // optional .Impinj.STP.DeviceFaultType device_fault = 2;
  if (has_device_fault()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->device_fault(), output);
  }

  // optional string fault_details = 3;
  if (has_fault_details()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->fault_details(), output);
  }

}

int DeviceState::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.DeviceOperatingState device_operating_state = 1;
    if (has_device_operating_state()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->device_operating_state());
    }

    // optional .Impinj.STP.DeviceFaultType device_fault = 2;
    if (has_device_fault()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->device_fault());
    }

    // optional string fault_details = 3;
    if (has_fault_details()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->fault_details());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void DeviceState::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const DeviceState*>(&from));
}

void DeviceState::MergeFrom(const DeviceState& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_device_operating_state()) {
      set_device_operating_state(from.device_operating_state());
    }
    if (from.has_device_fault()) {
      set_device_fault(from.device_fault());
    }
    if (from.has_fault_details()) {
      set_fault_details(from.fault_details());
    }
  }
}

void DeviceState::CopyFrom(const DeviceState& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceState::IsInitialized() const {

  return true;
}

void DeviceState::Swap(DeviceState* other) {
  if (other != this) {
    std::swap(device_operating_state_, other->device_operating_state_);
    std::swap(device_fault_, other->device_fault_);
    std::swap(fault_details_, other->fault_details_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string DeviceState::GetTypeName() const {
  return "Impinj.STP.DeviceState";
}


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

#ifndef _MSC_VER
const int Version::kVersionIDFieldNumber;
const int Version::kMajorFieldNumber;
const int Version::kMinorFieldNumber;
const int Version::kMaintenanceFieldNumber;
const int Version::kBuildFieldNumber;
const int Version::kIdentFieldNumber;
#endif  // !_MSC_VER

Version::Version()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Version::InitAsDefaultInstance() {
}

Version::Version(const Version& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Version::SharedCtor() {
  _cached_size_ = 0;
  version_id_ = 0;
  major_ = 0u;
  minor_ = 0u;
  maintenance_ = 0u;
  build_ = 0u;
  ident_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Version::~Version() {
  SharedDtor();
}

void Version::SharedDtor() {
  if (ident_ != &::google::protobuf::internal::kEmptyString) {
    delete ident_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void Version::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Version& Version::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Version* Version::default_instance_ = NULL;

Version* Version::New() const {
  return new Version;
}

void Version::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    version_id_ = 0;
    major_ = 0u;
    minor_ = 0u;
    maintenance_ = 0u;
    build_ = 0u;
    if (has_ident()) {
      if (ident_ != &::google::protobuf::internal::kEmptyString) {
        ident_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Version::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.VersionType version_ID = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::VersionType_IsValid(value)) {
            set_version_id(static_cast< ::Impinj::STP::VersionType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_major;
        break;
      }

      // optional uint32 major = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_major:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &major_)));
          set_has_major();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_minor;
        break;
      }

      // optional uint32 minor = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_minor:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &minor_)));
          set_has_minor();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_maintenance;
        break;
      }

      // optional uint32 maintenance = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_maintenance:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &maintenance_)));
          set_has_maintenance();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_build;
        break;
      }

      // optional uint32 build = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_build:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &build_)));
          set_has_build();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_ident;
        break;
      }

      // optional string ident = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_ident:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_ident()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Version::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.VersionType version_ID = 1;
  if (has_version_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->version_id(), output);
  }

  // optional uint32 major = 2;
  if (has_major()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->major(), output);
  }

  // optional uint32 minor = 3;
  if (has_minor()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->minor(), output);
  }

  // optional uint32 maintenance = 4;
  if (has_maintenance()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->maintenance(), output);
  }

  // optional uint32 build = 5;
  if (has_build()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->build(), output);
  }

  // optional string ident = 6;
  if (has_ident()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      6, this->ident(), output);
  }

}

int Version::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.VersionType version_ID = 1;
    if (has_version_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->version_id());
    }

    // optional uint32 major = 2;
    if (has_major()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->major());
    }

    // optional uint32 minor = 3;
    if (has_minor()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->minor());
    }

    // optional uint32 maintenance = 4;
    if (has_maintenance()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->maintenance());
    }

    // optional uint32 build = 5;
    if (has_build()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->build());
    }

    // optional string ident = 6;
    if (has_ident()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->ident());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Version::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Version*>(&from));
}

void Version::MergeFrom(const Version& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_version_id()) {
      set_version_id(from.version_id());
    }
    if (from.has_major()) {
      set_major(from.major());
    }
    if (from.has_minor()) {
      set_minor(from.minor());
    }
    if (from.has_maintenance()) {
      set_maintenance(from.maintenance());
    }
    if (from.has_build()) {
      set_build(from.build());
    }
    if (from.has_ident()) {
      set_ident(from.ident());
    }
  }
}

void Version::CopyFrom(const Version& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Version::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void Version::Swap(Version* other) {
  if (other != this) {
    std::swap(version_id_, other->version_id_);
    std::swap(major_, other->major_);
    std::swap(minor_, other->minor_);
    std::swap(maintenance_, other->maintenance_);
    std::swap(build_, other->build_);
    std::swap(ident_, other->ident_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Version::GetTypeName() const {
  return "Impinj.STP.Version";
}


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

#ifndef _MSC_VER
const int Versions::kVersionListFieldNumber;
#endif  // !_MSC_VER

Versions::Versions()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Versions::InitAsDefaultInstance() {
}

Versions::Versions(const Versions& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Versions::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Versions::~Versions() {
  SharedDtor();
}

void Versions::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void Versions::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Versions& Versions::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Versions* Versions::default_instance_ = NULL;

Versions* Versions::New() const {
  return new Versions;
}

void Versions::Clear() {
  version_list_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Versions::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .Impinj.STP.Version version_list = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_version_list:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_version_list()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_version_list;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Versions::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .Impinj.STP.Version version_list = 1;
  for (int i = 0; i < this->version_list_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->version_list(i), output);
  }

}

int Versions::ByteSize() const {
  int total_size = 0;

  // repeated .Impinj.STP.Version version_list = 1;
  total_size += 1 * this->version_list_size();
  for (int i = 0; i < this->version_list_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->version_list(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Versions::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Versions*>(&from));
}

void Versions::MergeFrom(const Versions& from) {
  GOOGLE_CHECK_NE(&from, this);
  version_list_.MergeFrom(from.version_list_);
}

void Versions::CopyFrom(const Versions& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Versions::IsInitialized() const {

  for (int i = 0; i < version_list_size(); i++) {
    if (!this->version_list(i).IsInitialized()) return false;
  }
  return true;
}

void Versions::Swap(Versions* other) {
  if (other != this) {
    version_list_.Swap(&other->version_list_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Versions::GetTypeName() const {
  return "Impinj.STP.Versions";
}


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

#ifndef _MSC_VER
const int HandShake::kAPINameFieldNumber;
const int HandShake::kAPIVersionFieldNumber;
#endif  // !_MSC_VER

HandShake::HandShake()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void HandShake::InitAsDefaultInstance() {
}

HandShake::HandShake(const HandShake& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void HandShake::SharedCtor() {
  _cached_size_ = 0;
  api_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  api_version_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

HandShake::~HandShake() {
  SharedDtor();
}

void HandShake::SharedDtor() {
  if (api_name_ != &::google::protobuf::internal::kEmptyString) {
    delete api_name_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void HandShake::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const HandShake& HandShake::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

HandShake* HandShake::default_instance_ = NULL;

HandShake* HandShake::New() const {
  return new HandShake;
}

void HandShake::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_api_name()) {
      if (api_name_ != &::google::protobuf::internal::kEmptyString) {
        api_name_->clear();
      }
    }
    api_version_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool HandShake::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string API_name = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_api_name()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_API_version;
        break;
      }

      // required uint32 API_version = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_API_version:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &api_version_)));
          set_has_api_version();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void HandShake::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string API_name = 1;
  if (has_api_name()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->api_name(), output);
  }

  // required uint32 API_version = 2;
  if (has_api_version()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->api_version(), output);
  }

}

int HandShake::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string API_name = 1;
    if (has_api_name()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->api_name());
    }

    // required uint32 API_version = 2;
    if (has_api_version()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->api_version());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void HandShake::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const HandShake*>(&from));
}

void HandShake::MergeFrom(const HandShake& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_api_name()) {
      set_api_name(from.api_name());
    }
    if (from.has_api_version()) {
      set_api_version(from.api_version());
    }
  }
}

void HandShake::CopyFrom(const HandShake& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool HandShake::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;

  return true;
}

void HandShake::Swap(HandShake* other) {
  if (other != this) {
    std::swap(api_name_, other->api_name_);
    std::swap(api_version_, other->api_version_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string HandShake::GetTypeName() const {
  return "Impinj.STP.HandShake";
}


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

#ifndef _MSC_VER
const int Region::kRegionIdFieldNumber;
const int Region::kFixedFrequencyListFieldNumber;
#endif  // !_MSC_VER

Region::Region()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Region::InitAsDefaultInstance() {
}

Region::Region(const Region& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Region::SharedCtor() {
  _cached_size_ = 0;
  region_id_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Region::~Region() {
  SharedDtor();
}

void Region::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void Region::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Region& Region::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Region* Region::default_instance_ = NULL;

Region* Region::New() const {
  return new Region;
}

void Region::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    region_id_ = 0;
  }
  fixed_frequency_list_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Region::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.RegulatoryRegion region_id = 1 [default = REGULATORY_REGION_FCC_PART_15_247];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::RegulatoryRegion_IsValid(value)) {
            set_region_id(static_cast< ::Impinj::STP::RegulatoryRegion >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_fixed_frequency_list;
        break;
      }

      // repeated uint32 fixed_frequency_list = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_fixed_frequency_list:
          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 1, 16, input, this->mutable_fixed_frequency_list())));
        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
                   == ::google::protobuf::internal::WireFormatLite::
                      WIRETYPE_LENGTH_DELIMITED) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, this->mutable_fixed_frequency_list())));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_fixed_frequency_list;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Region::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.RegulatoryRegion region_id = 1 [default = REGULATORY_REGION_FCC_PART_15_247];
  if (has_region_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->region_id(), output);
  }

  // repeated uint32 fixed_frequency_list = 2;
  for (int i = 0; i < this->fixed_frequency_list_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(
      2, this->fixed_frequency_list(i), output);
  }

}

int Region::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.RegulatoryRegion region_id = 1 [default = REGULATORY_REGION_FCC_PART_15_247];
    if (has_region_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->region_id());
    }

  }
  // repeated uint32 fixed_frequency_list = 2;
  {
    int data_size = 0;
    for (int i = 0; i < this->fixed_frequency_list_size(); i++) {
      data_size += ::google::protobuf::internal::WireFormatLite::
        UInt32Size(this->fixed_frequency_list(i));
    }
    total_size += 1 * this->fixed_frequency_list_size() + data_size;
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Region::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Region*>(&from));
}

void Region::MergeFrom(const Region& from) {
  GOOGLE_CHECK_NE(&from, this);
  fixed_frequency_list_.MergeFrom(from.fixed_frequency_list_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_region_id()) {
      set_region_id(from.region_id());
    }
  }
}

void Region::CopyFrom(const Region& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Region::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void Region::Swap(Region* other) {
  if (other != this) {
    std::swap(region_id_, other->region_id_);
    fixed_frequency_list_.Swap(&other->fixed_frequency_list_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Region::GetTypeName() const {
  return "Impinj.STP.Region";
}


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

#ifndef _MSC_VER
const int Timestamp::kUsecondsSinceEpochFieldNumber;
#endif  // !_MSC_VER

Timestamp::Timestamp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Timestamp::InitAsDefaultInstance() {
}

Timestamp::Timestamp(const Timestamp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Timestamp::SharedCtor() {
  _cached_size_ = 0;
  useconds_since_epoch_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Timestamp::~Timestamp() {
  SharedDtor();
}

void Timestamp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void Timestamp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Timestamp& Timestamp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Timestamp* Timestamp::default_instance_ = NULL;

Timestamp* Timestamp::New() const {
  return new Timestamp;
}

void Timestamp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    useconds_since_epoch_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Timestamp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 useconds_since_epoch = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &useconds_since_epoch_)));
          set_has_useconds_since_epoch();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Timestamp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 useconds_since_epoch = 1;
  if (has_useconds_since_epoch()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->useconds_since_epoch(), output);
  }

}

int Timestamp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 useconds_since_epoch = 1;
    if (has_useconds_since_epoch()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->useconds_since_epoch());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Timestamp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Timestamp*>(&from));
}

void Timestamp::MergeFrom(const Timestamp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_useconds_since_epoch()) {
      set_useconds_since_epoch(from.useconds_since_epoch());
    }
  }
}

void Timestamp::CopyFrom(const Timestamp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Timestamp::IsInitialized() const {

  return true;
}

void Timestamp::Swap(Timestamp* other) {
  if (other != this) {
    std::swap(useconds_since_epoch_, other->useconds_since_epoch_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Timestamp::GetTypeName() const {
  return "Impinj.STP.Timestamp";
}


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

#ifndef _MSC_VER
const int ConnectCommand::kHandShakeFieldNumber;
#endif  // !_MSC_VER

ConnectCommand::ConnectCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ConnectCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  hand_shake_ = const_cast< ::Impinj::STP::HandShake*>(
      ::Impinj::STP::HandShake::internal_default_instance());
#else
  hand_shake_ = const_cast< ::Impinj::STP::HandShake*>(&::Impinj::STP::HandShake::default_instance());
#endif
}

ConnectCommand::ConnectCommand(const ConnectCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ConnectCommand::SharedCtor() {
  _cached_size_ = 0;
  hand_shake_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ConnectCommand::~ConnectCommand() {
  SharedDtor();
}

void ConnectCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete hand_shake_;
  }
}

void ConnectCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ConnectCommand& ConnectCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

ConnectCommand* ConnectCommand::default_instance_ = NULL;

ConnectCommand* ConnectCommand::New() const {
  return new ConnectCommand;
}

void ConnectCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_hand_shake()) {
      if (hand_shake_ != NULL) hand_shake_->::Impinj::STP::HandShake::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ConnectCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.HandShake hand_shake = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_hand_shake()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ConnectCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.HandShake hand_shake = 1;
  if (has_hand_shake()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->hand_shake(), output);
  }

}

int ConnectCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.HandShake hand_shake = 1;
    if (has_hand_shake()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->hand_shake());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ConnectCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ConnectCommand*>(&from));
}

void ConnectCommand::MergeFrom(const ConnectCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_hand_shake()) {
      mutable_hand_shake()->::Impinj::STP::HandShake::MergeFrom(from.hand_shake());
    }
  }
}

void ConnectCommand::CopyFrom(const ConnectCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ConnectCommand::IsInitialized() const {

  if (has_hand_shake()) {
    if (!this->hand_shake().IsInitialized()) return false;
  }
  return true;
}

void ConnectCommand::Swap(ConnectCommand* other) {
  if (other != this) {
    std::swap(hand_shake_, other->hand_shake_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ConnectCommand::GetTypeName() const {
  return "Impinj.STP.ConnectCommand";
}


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

#ifndef _MSC_VER
const int GetDeviceStateCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

GetDeviceStateCommand::GetDeviceStateCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetDeviceStateCommand::InitAsDefaultInstance() {
}

GetDeviceStateCommand::GetDeviceStateCommand(const GetDeviceStateCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetDeviceStateCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetDeviceStateCommand::~GetDeviceStateCommand() {
  SharedDtor();
}

void GetDeviceStateCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void GetDeviceStateCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetDeviceStateCommand& GetDeviceStateCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetDeviceStateCommand* GetDeviceStateCommand::default_instance_ = NULL;

GetDeviceStateCommand* GetDeviceStateCommand::New() const {
  return new GetDeviceStateCommand;
}

void GetDeviceStateCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetDeviceStateCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetDeviceStateCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int GetDeviceStateCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetDeviceStateCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetDeviceStateCommand*>(&from));
}

void GetDeviceStateCommand::MergeFrom(const GetDeviceStateCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void GetDeviceStateCommand::CopyFrom(const GetDeviceStateCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceStateCommand::IsInitialized() const {

  return true;
}

void GetDeviceStateCommand::Swap(GetDeviceStateCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetDeviceStateCommand::GetTypeName() const {
  return "Impinj.STP.GetDeviceStateCommand";
}


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

#ifndef _MSC_VER
const int GetVersionsReaderCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

GetVersionsReaderCommand::GetVersionsReaderCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetVersionsReaderCommand::InitAsDefaultInstance() {
}

GetVersionsReaderCommand::GetVersionsReaderCommand(const GetVersionsReaderCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetVersionsReaderCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetVersionsReaderCommand::~GetVersionsReaderCommand() {
  SharedDtor();
}

void GetVersionsReaderCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void GetVersionsReaderCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetVersionsReaderCommand& GetVersionsReaderCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetVersionsReaderCommand* GetVersionsReaderCommand::default_instance_ = NULL;

GetVersionsReaderCommand* GetVersionsReaderCommand::New() const {
  return new GetVersionsReaderCommand;
}

void GetVersionsReaderCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetVersionsReaderCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetVersionsReaderCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int GetVersionsReaderCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetVersionsReaderCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetVersionsReaderCommand*>(&from));
}

void GetVersionsReaderCommand::MergeFrom(const GetVersionsReaderCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void GetVersionsReaderCommand::CopyFrom(const GetVersionsReaderCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetVersionsReaderCommand::IsInitialized() const {

  return true;
}

void GetVersionsReaderCommand::Swap(GetVersionsReaderCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetVersionsReaderCommand::GetTypeName() const {
  return "Impinj.STP.GetVersionsReaderCommand";
}


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

#ifndef _MSC_VER
const int StopCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

StopCommand::StopCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void StopCommand::InitAsDefaultInstance() {
}

StopCommand::StopCommand(const StopCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void StopCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

StopCommand::~StopCommand() {
  SharedDtor();
}

void StopCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void StopCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const StopCommand& StopCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

StopCommand* StopCommand::default_instance_ = NULL;

StopCommand* StopCommand::New() const {
  return new StopCommand;
}

void StopCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool StopCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void StopCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int StopCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void StopCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const StopCommand*>(&from));
}

void StopCommand::MergeFrom(const StopCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void StopCommand::CopyFrom(const StopCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool StopCommand::IsInitialized() const {

  return true;
}

void StopCommand::Swap(StopCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string StopCommand::GetTypeName() const {
  return "Impinj.STP.StopCommand";
}


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

#ifndef _MSC_VER
const int ConnectResp::kReplyFieldNumber;
const int ConnectResp::kHandShakeFieldNumber;
#endif  // !_MSC_VER

ConnectResp::ConnectResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ConnectResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  hand_shake_ = const_cast< ::Impinj::STP::HandShake*>(
      ::Impinj::STP::HandShake::internal_default_instance());
#else
  hand_shake_ = const_cast< ::Impinj::STP::HandShake*>(&::Impinj::STP::HandShake::default_instance());
#endif
}

ConnectResp::ConnectResp(const ConnectResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ConnectResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  hand_shake_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ConnectResp::~ConnectResp() {
  SharedDtor();
}

void ConnectResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
    delete hand_shake_;
  }
}

void ConnectResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ConnectResp& ConnectResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

ConnectResp* ConnectResp::default_instance_ = NULL;

ConnectResp* ConnectResp::New() const {
  return new ConnectResp;
}

void ConnectResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
    if (has_hand_shake()) {
      if (hand_shake_ != NULL) hand_shake_->::Impinj::STP::HandShake::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ConnectResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_hand_shake;
        break;
      }

      // optional .Impinj.STP.HandShake hand_shake = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_hand_shake:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_hand_shake()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ConnectResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

  // optional .Impinj.STP.HandShake hand_shake = 2;
  if (has_hand_shake()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->hand_shake(), output);
  }

}

int ConnectResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

    // optional .Impinj.STP.HandShake hand_shake = 2;
    if (has_hand_shake()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->hand_shake());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ConnectResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ConnectResp*>(&from));
}

void ConnectResp::MergeFrom(const ConnectResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
    if (from.has_hand_shake()) {
      mutable_hand_shake()->::Impinj::STP::HandShake::MergeFrom(from.hand_shake());
    }
  }
}

void ConnectResp::CopyFrom(const ConnectResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ConnectResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  if (has_hand_shake()) {
    if (!this->hand_shake().IsInitialized()) return false;
  }
  return true;
}

void ConnectResp::Swap(ConnectResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(hand_shake_, other->hand_shake_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ConnectResp::GetTypeName() const {
  return "Impinj.STP.ConnectResp";
}


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

#ifndef _MSC_VER
const int GetDeviceStateResp::kReplyFieldNumber;
const int GetDeviceStateResp::kDeviceStateFieldNumber;
#endif  // !_MSC_VER

GetDeviceStateResp::GetDeviceStateResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetDeviceStateResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  device_state_ = const_cast< ::Impinj::STP::DeviceState*>(
      ::Impinj::STP::DeviceState::internal_default_instance());
#else
  device_state_ = const_cast< ::Impinj::STP::DeviceState*>(&::Impinj::STP::DeviceState::default_instance());
#endif
}

GetDeviceStateResp::GetDeviceStateResp(const GetDeviceStateResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetDeviceStateResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  device_state_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetDeviceStateResp::~GetDeviceStateResp() {
  SharedDtor();
}

void GetDeviceStateResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
    delete device_state_;
  }
}

void GetDeviceStateResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetDeviceStateResp& GetDeviceStateResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetDeviceStateResp* GetDeviceStateResp::default_instance_ = NULL;

GetDeviceStateResp* GetDeviceStateResp::New() const {
  return new GetDeviceStateResp;
}

void GetDeviceStateResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
    if (has_device_state()) {
      if (device_state_ != NULL) device_state_->::Impinj::STP::DeviceState::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetDeviceStateResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_device_state;
        break;
      }

      // optional .Impinj.STP.DeviceState device_state = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_device_state:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_device_state()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetDeviceStateResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

  // optional .Impinj.STP.DeviceState device_state = 2;
  if (has_device_state()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->device_state(), output);
  }

}

int GetDeviceStateResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

    // optional .Impinj.STP.DeviceState device_state = 2;
    if (has_device_state()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->device_state());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetDeviceStateResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetDeviceStateResp*>(&from));
}

void GetDeviceStateResp::MergeFrom(const GetDeviceStateResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
    if (from.has_device_state()) {
      mutable_device_state()->::Impinj::STP::DeviceState::MergeFrom(from.device_state());
    }
  }
}

void GetDeviceStateResp::CopyFrom(const GetDeviceStateResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceStateResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void GetDeviceStateResp::Swap(GetDeviceStateResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(device_state_, other->device_state_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetDeviceStateResp::GetTypeName() const {
  return "Impinj.STP.GetDeviceStateResp";
}


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

#ifndef _MSC_VER
const int GetVersionsReaderResp::kReplyFieldNumber;
const int GetVersionsReaderResp::kVersionsFieldNumber;
#endif  // !_MSC_VER

GetVersionsReaderResp::GetVersionsReaderResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetVersionsReaderResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  versions_ = const_cast< ::Impinj::STP::Versions*>(
      ::Impinj::STP::Versions::internal_default_instance());
#else
  versions_ = const_cast< ::Impinj::STP::Versions*>(&::Impinj::STP::Versions::default_instance());
#endif
}

GetVersionsReaderResp::GetVersionsReaderResp(const GetVersionsReaderResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetVersionsReaderResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  versions_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetVersionsReaderResp::~GetVersionsReaderResp() {
  SharedDtor();
}

void GetVersionsReaderResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
    delete versions_;
  }
}

void GetVersionsReaderResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetVersionsReaderResp& GetVersionsReaderResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetVersionsReaderResp* GetVersionsReaderResp::default_instance_ = NULL;

GetVersionsReaderResp* GetVersionsReaderResp::New() const {
  return new GetVersionsReaderResp;
}

void GetVersionsReaderResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
    if (has_versions()) {
      if (versions_ != NULL) versions_->::Impinj::STP::Versions::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetVersionsReaderResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_versions;
        break;
      }

      // optional .Impinj.STP.Versions versions = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_versions:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_versions()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetVersionsReaderResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

  // optional .Impinj.STP.Versions versions = 2;
  if (has_versions()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->versions(), output);
  }

}

int GetVersionsReaderResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

    // optional .Impinj.STP.Versions versions = 2;
    if (has_versions()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->versions());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetVersionsReaderResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetVersionsReaderResp*>(&from));
}

void GetVersionsReaderResp::MergeFrom(const GetVersionsReaderResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
    if (from.has_versions()) {
      mutable_versions()->::Impinj::STP::Versions::MergeFrom(from.versions());
    }
  }
}

void GetVersionsReaderResp::CopyFrom(const GetVersionsReaderResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetVersionsReaderResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  if (has_versions()) {
    if (!this->versions().IsInitialized()) return false;
  }
  return true;
}

void GetVersionsReaderResp::Swap(GetVersionsReaderResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(versions_, other->versions_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetVersionsReaderResp::GetTypeName() const {
  return "Impinj.STP.GetVersionsReaderResp";
}


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

#ifndef _MSC_VER
const int InvalidResp::kReservedFieldNumber;
#endif  // !_MSC_VER

InvalidResp::InvalidResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void InvalidResp::InitAsDefaultInstance() {
}

InvalidResp::InvalidResp(const InvalidResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void InvalidResp::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

InvalidResp::~InvalidResp() {
  SharedDtor();
}

void InvalidResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void InvalidResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const InvalidResp& InvalidResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

InvalidResp* InvalidResp::default_instance_ = NULL;

InvalidResp* InvalidResp::New() const {
  return new InvalidResp;
}

void InvalidResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool InvalidResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void InvalidResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int InvalidResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void InvalidResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const InvalidResp*>(&from));
}

void InvalidResp::MergeFrom(const InvalidResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void InvalidResp::CopyFrom(const InvalidResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool InvalidResp::IsInitialized() const {

  return true;
}

void InvalidResp::Swap(InvalidResp* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string InvalidResp::GetTypeName() const {
  return "Impinj.STP.InvalidResp";
}


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

#ifndef _MSC_VER
const int StopResp::kReplyFieldNumber;
#endif  // !_MSC_VER

StopResp::StopResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void StopResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

StopResp::StopResp(const StopResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void StopResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

StopResp::~StopResp() {
  SharedDtor();
}

void StopResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void StopResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const StopResp& StopResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

StopResp* StopResp::default_instance_ = NULL;

StopResp* StopResp::New() const {
  return new StopResp;
}

void StopResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool StopResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void StopResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int StopResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void StopResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const StopResp*>(&from));
}

void StopResp::MergeFrom(const StopResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void StopResp::CopyFrom(const StopResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool StopResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void StopResp::Swap(StopResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string StopResp::GetTypeName() const {
  return "Impinj.STP.StopResp";
}


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

#ifndef _MSC_VER
const int DeviceConfig::kRegionFieldNumber;
const int DeviceConfig::kDeviceModeFieldNumber;
const int DeviceConfig::kOperationModeFieldNumber;
const int DeviceConfig::kOperationResponsibilityFieldNumber;
const int DeviceConfig::kTriggerConfigFieldNumber;
const int DeviceConfig::kGPIConfigFieldNumber;
const int DeviceConfig::kGPOConfigFieldNumber;
const int DeviceConfig::kReportConfigFieldNumber;
#endif  // !_MSC_VER

DeviceConfig::DeviceConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void DeviceConfig::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  region_ = const_cast< ::Impinj::STP::Region*>(
      ::Impinj::STP::Region::internal_default_instance());
#else
  region_ = const_cast< ::Impinj::STP::Region*>(&::Impinj::STP::Region::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  operation_responsibility_ = const_cast< ::Impinj::STP::OperationResponsibility*>(
      ::Impinj::STP::OperationResponsibility::internal_default_instance());
#else
  operation_responsibility_ = const_cast< ::Impinj::STP::OperationResponsibility*>(&::Impinj::STP::OperationResponsibility::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  trigger_config_ = const_cast< ::Impinj::STP::TriggerConfig*>(
      ::Impinj::STP::TriggerConfig::internal_default_instance());
#else
  trigger_config_ = const_cast< ::Impinj::STP::TriggerConfig*>(&::Impinj::STP::TriggerConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  gpi_config_ = const_cast< ::Impinj::STP::GPIConfig*>(
      ::Impinj::STP::GPIConfig::internal_default_instance());
#else
  gpi_config_ = const_cast< ::Impinj::STP::GPIConfig*>(&::Impinj::STP::GPIConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  gpo_config_ = const_cast< ::Impinj::STP::GPOConfig*>(
      ::Impinj::STP::GPOConfig::internal_default_instance());
#else
  gpo_config_ = const_cast< ::Impinj::STP::GPOConfig*>(&::Impinj::STP::GPOConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  report_config_ = const_cast< ::Impinj::STP::ReportConfig*>(
      ::Impinj::STP::ReportConfig::internal_default_instance());
#else
  report_config_ = const_cast< ::Impinj::STP::ReportConfig*>(&::Impinj::STP::ReportConfig::default_instance());
#endif
}

DeviceConfig::DeviceConfig(const DeviceConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void DeviceConfig::SharedCtor() {
  _cached_size_ = 0;
  region_ = NULL;
  device_mode_ = 0;
  operation_mode_ = 2;
  operation_responsibility_ = NULL;
  trigger_config_ = NULL;
  gpi_config_ = NULL;
  gpo_config_ = NULL;
  report_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

DeviceConfig::~DeviceConfig() {
  SharedDtor();
}

void DeviceConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete region_;
    delete operation_responsibility_;
    delete trigger_config_;
    delete gpi_config_;
    delete gpo_config_;
    delete report_config_;
  }
}

void DeviceConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const DeviceConfig& DeviceConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

DeviceConfig* DeviceConfig::default_instance_ = NULL;

DeviceConfig* DeviceConfig::New() const {
  return new DeviceConfig;
}

void DeviceConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_region()) {
      if (region_ != NULL) region_->::Impinj::STP::Region::Clear();
    }
    device_mode_ = 0;
    operation_mode_ = 2;
    if (has_operation_responsibility()) {
      if (operation_responsibility_ != NULL) operation_responsibility_->::Impinj::STP::OperationResponsibility::Clear();
    }
    if (has_trigger_config()) {
      if (trigger_config_ != NULL) trigger_config_->::Impinj::STP::TriggerConfig::Clear();
    }
    if (has_gpi_config()) {
      if (gpi_config_ != NULL) gpi_config_->::Impinj::STP::GPIConfig::Clear();
    }
    if (has_gpo_config()) {
      if (gpo_config_ != NULL) gpo_config_->::Impinj::STP::GPOConfig::Clear();
    }
    if (has_report_config()) {
      if (report_config_ != NULL) report_config_->::Impinj::STP::ReportConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool DeviceConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Region region = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_region()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_device_mode;
        break;
      }

      // required .Impinj.STP.DeviceMode device_mode = 3 [default = DEVICE_MODE_INVENTORY];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_device_mode:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::DeviceMode_IsValid(value)) {
            set_device_mode(static_cast< ::Impinj::STP::DeviceMode >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_operation_mode;
        break;
      }

      // required .Impinj.STP.OperationMode operation_mode = 4 [default = OPERATION_MODE_CONTINUOUS];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_operation_mode:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::OperationMode_IsValid(value)) {
            set_operation_mode(static_cast< ::Impinj::STP::OperationMode >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_operation_responsibility;
        break;
      }

      // optional .Impinj.STP.OperationResponsibility operation_responsibility = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_operation_responsibility:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_operation_responsibility()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_trigger_config;
        break;
      }

      // optional .Impinj.STP.TriggerConfig trigger_config = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_trigger_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_trigger_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_GPI_config;
        break;
      }

      // optional .Impinj.STP.GPIConfig GPI_config = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_GPI_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_gpi_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_GPO_config;
        break;
      }

      // optional .Impinj.STP.GPOConfig GPO_config = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_GPO_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_gpo_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(74)) goto parse_report_config;
        break;
      }

      // optional .Impinj.STP.ReportConfig report_config = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_report_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_report_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void DeviceConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Region region = 2;
  if (has_region()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->region(), output);
  }

  // required .Impinj.STP.DeviceMode device_mode = 3 [default = DEVICE_MODE_INVENTORY];
  if (has_device_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->device_mode(), output);
  }

  // required .Impinj.STP.OperationMode operation_mode = 4 [default = OPERATION_MODE_CONTINUOUS];
  if (has_operation_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      4, this->operation_mode(), output);
  }

  // optional .Impinj.STP.OperationResponsibility operation_responsibility = 5;
  if (has_operation_responsibility()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->operation_responsibility(), output);
  }

  // optional .Impinj.STP.TriggerConfig trigger_config = 6;
  if (has_trigger_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->trigger_config(), output);
  }

  // optional .Impinj.STP.GPIConfig GPI_config = 7;
  if (has_gpi_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      7, this->gpi_config(), output);
  }

  // optional .Impinj.STP.GPOConfig GPO_config = 8;
  if (has_gpo_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->gpo_config(), output);
  }

  // optional .Impinj.STP.ReportConfig report_config = 9;
  if (has_report_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      9, this->report_config(), output);
  }

}

int DeviceConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Region region = 2;
    if (has_region()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->region());
    }

    // required .Impinj.STP.DeviceMode device_mode = 3 [default = DEVICE_MODE_INVENTORY];
    if (has_device_mode()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->device_mode());
    }

    // required .Impinj.STP.OperationMode operation_mode = 4 [default = OPERATION_MODE_CONTINUOUS];
    if (has_operation_mode()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->operation_mode());
    }

    // optional .Impinj.STP.OperationResponsibility operation_responsibility = 5;
    if (has_operation_responsibility()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->operation_responsibility());
    }

    // optional .Impinj.STP.TriggerConfig trigger_config = 6;
    if (has_trigger_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->trigger_config());
    }

    // optional .Impinj.STP.GPIConfig GPI_config = 7;
    if (has_gpi_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->gpi_config());
    }

    // optional .Impinj.STP.GPOConfig GPO_config = 8;
    if (has_gpo_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->gpo_config());
    }

    // optional .Impinj.STP.ReportConfig report_config = 9;
    if (has_report_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->report_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void DeviceConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const DeviceConfig*>(&from));
}

void DeviceConfig::MergeFrom(const DeviceConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_region()) {
      mutable_region()->::Impinj::STP::Region::MergeFrom(from.region());
    }
    if (from.has_device_mode()) {
      set_device_mode(from.device_mode());
    }
    if (from.has_operation_mode()) {
      set_operation_mode(from.operation_mode());
    }
    if (from.has_operation_responsibility()) {
      mutable_operation_responsibility()->::Impinj::STP::OperationResponsibility::MergeFrom(from.operation_responsibility());
    }
    if (from.has_trigger_config()) {
      mutable_trigger_config()->::Impinj::STP::TriggerConfig::MergeFrom(from.trigger_config());
    }
    if (from.has_gpi_config()) {
      mutable_gpi_config()->::Impinj::STP::GPIConfig::MergeFrom(from.gpi_config());
    }
    if (from.has_gpo_config()) {
      mutable_gpo_config()->::Impinj::STP::GPOConfig::MergeFrom(from.gpo_config());
    }
    if (from.has_report_config()) {
      mutable_report_config()->::Impinj::STP::ReportConfig::MergeFrom(from.report_config());
    }
  }
}

void DeviceConfig::CopyFrom(const DeviceConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceConfig::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000006) != 0x00000006) return false;

  if (has_region()) {
    if (!this->region().IsInitialized()) return false;
  }
  if (has_operation_responsibility()) {
    if (!this->operation_responsibility().IsInitialized()) return false;
  }
  if (has_report_config()) {
    if (!this->report_config().IsInitialized()) return false;
  }
  return true;
}

void DeviceConfig::Swap(DeviceConfig* other) {
  if (other != this) {
    std::swap(region_, other->region_);
    std::swap(device_mode_, other->device_mode_);
    std::swap(operation_mode_, other->operation_mode_);
    std::swap(operation_responsibility_, other->operation_responsibility_);
    std::swap(trigger_config_, other->trigger_config_);
    std::swap(gpi_config_, other->gpi_config_);
    std::swap(gpo_config_, other->gpo_config_);
    std::swap(report_config_, other->report_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string DeviceConfig::GetTypeName() const {
  return "Impinj.STP.DeviceConfig";
}


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

#ifndef _MSC_VER
const int TriggerConfig::kStartTriggerConfigFieldNumber;
const int TriggerConfig::kStopTriggerConfigFieldNumber;
#endif  // !_MSC_VER

TriggerConfig::TriggerConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TriggerConfig::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  start_trigger_config_ = const_cast< ::Impinj::STP::StartTriggerConfig*>(
      ::Impinj::STP::StartTriggerConfig::internal_default_instance());
#else
  start_trigger_config_ = const_cast< ::Impinj::STP::StartTriggerConfig*>(&::Impinj::STP::StartTriggerConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  stop_trigger_config_ = const_cast< ::Impinj::STP::StopTriggerConfig*>(
      ::Impinj::STP::StopTriggerConfig::internal_default_instance());
#else
  stop_trigger_config_ = const_cast< ::Impinj::STP::StopTriggerConfig*>(&::Impinj::STP::StopTriggerConfig::default_instance());
#endif
}

TriggerConfig::TriggerConfig(const TriggerConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TriggerConfig::SharedCtor() {
  _cached_size_ = 0;
  start_trigger_config_ = NULL;
  stop_trigger_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TriggerConfig::~TriggerConfig() {
  SharedDtor();
}

void TriggerConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete start_trigger_config_;
    delete stop_trigger_config_;
  }
}

void TriggerConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TriggerConfig& TriggerConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TriggerConfig* TriggerConfig::default_instance_ = NULL;

TriggerConfig* TriggerConfig::New() const {
  return new TriggerConfig;
}

void TriggerConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_start_trigger_config()) {
      if (start_trigger_config_ != NULL) start_trigger_config_->::Impinj::STP::StartTriggerConfig::Clear();
    }
    if (has_stop_trigger_config()) {
      if (stop_trigger_config_ != NULL) stop_trigger_config_->::Impinj::STP::StopTriggerConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TriggerConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.StartTriggerConfig start_trigger_config = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_start_trigger_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_stop_trigger_config;
        break;
      }

      // optional .Impinj.STP.StopTriggerConfig stop_trigger_config = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_stop_trigger_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_stop_trigger_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TriggerConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.StartTriggerConfig start_trigger_config = 1;
  if (has_start_trigger_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->start_trigger_config(), output);
  }

  // optional .Impinj.STP.StopTriggerConfig stop_trigger_config = 2;
  if (has_stop_trigger_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->stop_trigger_config(), output);
  }

}

int TriggerConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.StartTriggerConfig start_trigger_config = 1;
    if (has_start_trigger_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->start_trigger_config());
    }

    // optional .Impinj.STP.StopTriggerConfig stop_trigger_config = 2;
    if (has_stop_trigger_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->stop_trigger_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TriggerConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TriggerConfig*>(&from));
}

void TriggerConfig::MergeFrom(const TriggerConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_start_trigger_config()) {
      mutable_start_trigger_config()->::Impinj::STP::StartTriggerConfig::MergeFrom(from.start_trigger_config());
    }
    if (from.has_stop_trigger_config()) {
      mutable_stop_trigger_config()->::Impinj::STP::StopTriggerConfig::MergeFrom(from.stop_trigger_config());
    }
  }
}

void TriggerConfig::CopyFrom(const TriggerConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TriggerConfig::IsInitialized() const {

  return true;
}

void TriggerConfig::Swap(TriggerConfig* other) {
  if (other != this) {
    std::swap(start_trigger_config_, other->start_trigger_config_);
    std::swap(stop_trigger_config_, other->stop_trigger_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TriggerConfig::GetTypeName() const {
  return "Impinj.STP.TriggerConfig";
}


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

#ifndef _MSC_VER
const int StartTriggerConfig::kEnableGpiStartTriggerFieldNumber;
#endif  // !_MSC_VER

StartTriggerConfig::StartTriggerConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void StartTriggerConfig::InitAsDefaultInstance() {
}

StartTriggerConfig::StartTriggerConfig(const StartTriggerConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void StartTriggerConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_gpi_start_trigger_ = true;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

StartTriggerConfig::~StartTriggerConfig() {
  SharedDtor();
}

void StartTriggerConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void StartTriggerConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const StartTriggerConfig& StartTriggerConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

StartTriggerConfig* StartTriggerConfig::default_instance_ = NULL;

StartTriggerConfig* StartTriggerConfig::New() const {
  return new StartTriggerConfig;
}

void StartTriggerConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_gpi_start_trigger_ = true;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool StartTriggerConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_gpi_start_trigger = 1 [default = true];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_gpi_start_trigger_)));
          set_has_enable_gpi_start_trigger();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void StartTriggerConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_gpi_start_trigger = 1 [default = true];
  if (has_enable_gpi_start_trigger()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_gpi_start_trigger(), output);
  }

}

int StartTriggerConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_gpi_start_trigger = 1 [default = true];
    if (has_enable_gpi_start_trigger()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void StartTriggerConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const StartTriggerConfig*>(&from));
}

void StartTriggerConfig::MergeFrom(const StartTriggerConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_gpi_start_trigger()) {
      set_enable_gpi_start_trigger(from.enable_gpi_start_trigger());
    }
  }
}

void StartTriggerConfig::CopyFrom(const StartTriggerConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool StartTriggerConfig::IsInitialized() const {

  return true;
}

void StartTriggerConfig::Swap(StartTriggerConfig* other) {
  if (other != this) {
    std::swap(enable_gpi_start_trigger_, other->enable_gpi_start_trigger_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string StartTriggerConfig::GetTypeName() const {
  return "Impinj.STP.StartTriggerConfig";
}


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

#ifndef _MSC_VER
const int StopTriggerConfig::kEnableGpiStopTriggerFieldNumber;
const int StopTriggerConfig::kTimeoutFieldNumber;
#endif  // !_MSC_VER

StopTriggerConfig::StopTriggerConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void StopTriggerConfig::InitAsDefaultInstance() {
}

StopTriggerConfig::StopTriggerConfig(const StopTriggerConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void StopTriggerConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_gpi_stop_trigger_ = true;
  timeout_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

StopTriggerConfig::~StopTriggerConfig() {
  SharedDtor();
}

void StopTriggerConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void StopTriggerConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const StopTriggerConfig& StopTriggerConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

StopTriggerConfig* StopTriggerConfig::default_instance_ = NULL;

StopTriggerConfig* StopTriggerConfig::New() const {
  return new StopTriggerConfig;
}

void StopTriggerConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_gpi_stop_trigger_ = true;
    timeout_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool StopTriggerConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_gpi_stop_trigger = 1 [default = true];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_gpi_stop_trigger_)));
          set_has_enable_gpi_stop_trigger();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_timeout;
        break;
      }

      // optional uint32 timeout = 4 [default = 0];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_timeout:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &timeout_)));
          set_has_timeout();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void StopTriggerConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_gpi_stop_trigger = 1 [default = true];
  if (has_enable_gpi_stop_trigger()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_gpi_stop_trigger(), output);
  }

  // optional uint32 timeout = 4 [default = 0];
  if (has_timeout()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->timeout(), output);
  }

}

int StopTriggerConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_gpi_stop_trigger = 1 [default = true];
    if (has_enable_gpi_stop_trigger()) {
      total_size += 1 + 1;
    }

    // optional uint32 timeout = 4 [default = 0];
    if (has_timeout()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->timeout());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void StopTriggerConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const StopTriggerConfig*>(&from));
}

void StopTriggerConfig::MergeFrom(const StopTriggerConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_gpi_stop_trigger()) {
      set_enable_gpi_stop_trigger(from.enable_gpi_stop_trigger());
    }
    if (from.has_timeout()) {
      set_timeout(from.timeout());
    }
  }
}

void StopTriggerConfig::CopyFrom(const StopTriggerConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool StopTriggerConfig::IsInitialized() const {

  return true;
}

void StopTriggerConfig::Swap(StopTriggerConfig* other) {
  if (other != this) {
    std::swap(enable_gpi_stop_trigger_, other->enable_gpi_stop_trigger_);
    std::swap(timeout_, other->timeout_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string StopTriggerConfig::GetTypeName() const {
  return "Impinj.STP.StopTriggerConfig";
}


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

#ifndef _MSC_VER
const int GPIConfig::kSignalingModeFieldNumber;
const int GPIConfig::kGPI1PolarityFieldNumber;
const int GPIConfig::kGPI2PolarityFieldNumber;
const int GPIConfig::kGPI3PolarityFieldNumber;
#endif  // !_MSC_VER

GPIConfig::GPIConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GPIConfig::InitAsDefaultInstance() {
}

GPIConfig::GPIConfig(const GPIConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GPIConfig::SharedCtor() {
  _cached_size_ = 0;
  signaling_mode_ = 0;
  gpi1_polarity_ = 0;
  gpi2_polarity_ = 0;
  gpi3_polarity_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GPIConfig::~GPIConfig() {
  SharedDtor();
}

void GPIConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void GPIConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GPIConfig& GPIConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GPIConfig* GPIConfig::default_instance_ = NULL;

GPIConfig* GPIConfig::New() const {
  return new GPIConfig;
}

void GPIConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    signaling_mode_ = 0;
    gpi1_polarity_ = 0;
    gpi2_polarity_ = 0;
    gpi3_polarity_ = 0;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GPIConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.GPIOSignalMode signaling_mode = 1 [default = GPIO_SIGNAL_MODE_COMBINED];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOSignalMode_IsValid(value)) {
            set_signaling_mode(static_cast< ::Impinj::STP::GPIOSignalMode >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_GPI1_polarity;
        break;
      }

      // optional .Impinj.STP.GPIOPolarity GPI1_polarity = 2 [default = GPIO_POLARITY_ACTIVE_LOW];
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_GPI1_polarity:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOPolarity_IsValid(value)) {
            set_gpi1_polarity(static_cast< ::Impinj::STP::GPIOPolarity >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_GPI2_polarity;
        break;
      }

      // optional .Impinj.STP.GPIOPolarity GPI2_polarity = 3 [default = GPIO_POLARITY_ACTIVE_LOW];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_GPI2_polarity:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOPolarity_IsValid(value)) {
            set_gpi2_polarity(static_cast< ::Impinj::STP::GPIOPolarity >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_GPI3_polarity;
        break;
      }

      // optional .Impinj.STP.GPIOPolarity GPI3_polarity = 4 [default = GPIO_POLARITY_ACTIVE_LOW];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_GPI3_polarity:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOPolarity_IsValid(value)) {
            set_gpi3_polarity(static_cast< ::Impinj::STP::GPIOPolarity >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GPIConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.GPIOSignalMode signaling_mode = 1 [default = GPIO_SIGNAL_MODE_COMBINED];
  if (has_signaling_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->signaling_mode(), output);
  }

  // optional .Impinj.STP.GPIOPolarity GPI1_polarity = 2 [default = GPIO_POLARITY_ACTIVE_LOW];
  if (has_gpi1_polarity()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->gpi1_polarity(), output);
  }

  // optional .Impinj.STP.GPIOPolarity GPI2_polarity = 3 [default = GPIO_POLARITY_ACTIVE_LOW];
  if (has_gpi2_polarity()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->gpi2_polarity(), output);
  }

  // optional .Impinj.STP.GPIOPolarity GPI3_polarity = 4 [default = GPIO_POLARITY_ACTIVE_LOW];
  if (has_gpi3_polarity()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      4, this->gpi3_polarity(), output);
  }

}

int GPIConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.GPIOSignalMode signaling_mode = 1 [default = GPIO_SIGNAL_MODE_COMBINED];
    if (has_signaling_mode()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->signaling_mode());
    }

    // optional .Impinj.STP.GPIOPolarity GPI1_polarity = 2 [default = GPIO_POLARITY_ACTIVE_LOW];
    if (has_gpi1_polarity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gpi1_polarity());
    }

    // optional .Impinj.STP.GPIOPolarity GPI2_polarity = 3 [default = GPIO_POLARITY_ACTIVE_LOW];
    if (has_gpi2_polarity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gpi2_polarity());
    }

    // optional .Impinj.STP.GPIOPolarity GPI3_polarity = 4 [default = GPIO_POLARITY_ACTIVE_LOW];
    if (has_gpi3_polarity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gpi3_polarity());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GPIConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GPIConfig*>(&from));
}

void GPIConfig::MergeFrom(const GPIConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_signaling_mode()) {
      set_signaling_mode(from.signaling_mode());
    }
    if (from.has_gpi1_polarity()) {
      set_gpi1_polarity(from.gpi1_polarity());
    }
    if (from.has_gpi2_polarity()) {
      set_gpi2_polarity(from.gpi2_polarity());
    }
    if (from.has_gpi3_polarity()) {
      set_gpi3_polarity(from.gpi3_polarity());
    }
  }
}

void GPIConfig::CopyFrom(const GPIConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GPIConfig::IsInitialized() const {

  return true;
}

void GPIConfig::Swap(GPIConfig* other) {
  if (other != this) {
    std::swap(signaling_mode_, other->signaling_mode_);
    std::swap(gpi1_polarity_, other->gpi1_polarity_);
    std::swap(gpi2_polarity_, other->gpi2_polarity_);
    std::swap(gpi3_polarity_, other->gpi3_polarity_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GPIConfig::GetTypeName() const {
  return "Impinj.STP.GPIConfig";
}


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

#ifndef _MSC_VER
const int GPOConfig::kSignalingModeFieldNumber;
const int GPOConfig::kGPO1PolarityFieldNumber;
const int GPOConfig::kGPO2PolarityFieldNumber;
const int GPOConfig::kGPO3PolarityFieldNumber;
const int GPOConfig::kGPOPulseDurationFieldNumber;
const int GPOConfig::kEnableOperationResultGpoFieldNumber;
#endif  // !_MSC_VER

GPOConfig::GPOConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GPOConfig::InitAsDefaultInstance() {
}

GPOConfig::GPOConfig(const GPOConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GPOConfig::SharedCtor() {
  _cached_size_ = 0;
  signaling_mode_ = 1;
  gpo1_polarity_ = 0;
  gpo2_polarity_ = 0;
  gpo3_polarity_ = 0;
  gpo_pulse_duration_ = 1u;
  enable_operation_result_gpo_ = true;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GPOConfig::~GPOConfig() {
  SharedDtor();
}

void GPOConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void GPOConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GPOConfig& GPOConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GPOConfig* GPOConfig::default_instance_ = NULL;

GPOConfig* GPOConfig::New() const {
  return new GPOConfig;
}

void GPOConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    signaling_mode_ = 1;
    gpo1_polarity_ = 0;
    gpo2_polarity_ = 0;
    gpo3_polarity_ = 0;
    gpo_pulse_duration_ = 1u;
    enable_operation_result_gpo_ = true;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GPOConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.GPIOSignalMode signaling_mode = 1 [default = GPIO_SIGNAL_MODE_SEPARATE];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOSignalMode_IsValid(value)) {
            set_signaling_mode(static_cast< ::Impinj::STP::GPIOSignalMode >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_GPO2_polarity;
        break;
      }

      // optional .Impinj.STP.GPIOPolarity GPO2_polarity = 2 [default = GPIO_POLARITY_ACTIVE_LOW];
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_GPO2_polarity:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOPolarity_IsValid(value)) {
            set_gpo2_polarity(static_cast< ::Impinj::STP::GPIOPolarity >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_GPO3_polarity;
        break;
      }

      // optional .Impinj.STP.GPIOPolarity GPO3_polarity = 3 [default = GPIO_POLARITY_ACTIVE_LOW];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_GPO3_polarity:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOPolarity_IsValid(value)) {
            set_gpo3_polarity(static_cast< ::Impinj::STP::GPIOPolarity >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_GPO_pulse_duration;
        break;
      }

      // optional uint32 GPO_pulse_duration = 4 [default = 1];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_GPO_pulse_duration:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &gpo_pulse_duration_)));
          set_has_gpo_pulse_duration();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_enable_operation_result_gpo;
        break;
      }

      // optional bool enable_operation_result_gpo = 5 [default = true];
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_operation_result_gpo:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_operation_result_gpo_)));
          set_has_enable_operation_result_gpo();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_GPO1_polarity;
        break;
      }

      // optional .Impinj.STP.GPIOPolarity GPO1_polarity = 6 [default = GPIO_POLARITY_ACTIVE_LOW];
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_GPO1_polarity:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::GPIOPolarity_IsValid(value)) {
            set_gpo1_polarity(static_cast< ::Impinj::STP::GPIOPolarity >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GPOConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.GPIOSignalMode signaling_mode = 1 [default = GPIO_SIGNAL_MODE_SEPARATE];
  if (has_signaling_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->signaling_mode(), output);
  }

  // optional .Impinj.STP.GPIOPolarity GPO2_polarity = 2 [default = GPIO_POLARITY_ACTIVE_LOW];
  if (has_gpo2_polarity()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->gpo2_polarity(), output);
  }

  // optional .Impinj.STP.GPIOPolarity GPO3_polarity = 3 [default = GPIO_POLARITY_ACTIVE_LOW];
  if (has_gpo3_polarity()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->gpo3_polarity(), output);
  }

  // optional uint32 GPO_pulse_duration = 4 [default = 1];
  if (has_gpo_pulse_duration()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->gpo_pulse_duration(), output);
  }

  // optional bool enable_operation_result_gpo = 5 [default = true];
  if (has_enable_operation_result_gpo()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->enable_operation_result_gpo(), output);
  }

  // optional .Impinj.STP.GPIOPolarity GPO1_polarity = 6 [default = GPIO_POLARITY_ACTIVE_LOW];
  if (has_gpo1_polarity()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      6, this->gpo1_polarity(), output);
  }

}

int GPOConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.GPIOSignalMode signaling_mode = 1 [default = GPIO_SIGNAL_MODE_SEPARATE];
    if (has_signaling_mode()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->signaling_mode());
    }

    // optional .Impinj.STP.GPIOPolarity GPO1_polarity = 6 [default = GPIO_POLARITY_ACTIVE_LOW];
    if (has_gpo1_polarity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gpo1_polarity());
    }

    // optional .Impinj.STP.GPIOPolarity GPO2_polarity = 2 [default = GPIO_POLARITY_ACTIVE_LOW];
    if (has_gpo2_polarity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gpo2_polarity());
    }

    // optional .Impinj.STP.GPIOPolarity GPO3_polarity = 3 [default = GPIO_POLARITY_ACTIVE_LOW];
    if (has_gpo3_polarity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gpo3_polarity());
    }

    // optional uint32 GPO_pulse_duration = 4 [default = 1];
    if (has_gpo_pulse_duration()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->gpo_pulse_duration());
    }

    // optional bool enable_operation_result_gpo = 5 [default = true];
    if (has_enable_operation_result_gpo()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GPOConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GPOConfig*>(&from));
}

void GPOConfig::MergeFrom(const GPOConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_signaling_mode()) {
      set_signaling_mode(from.signaling_mode());
    }
    if (from.has_gpo1_polarity()) {
      set_gpo1_polarity(from.gpo1_polarity());
    }
    if (from.has_gpo2_polarity()) {
      set_gpo2_polarity(from.gpo2_polarity());
    }
    if (from.has_gpo3_polarity()) {
      set_gpo3_polarity(from.gpo3_polarity());
    }
    if (from.has_gpo_pulse_duration()) {
      set_gpo_pulse_duration(from.gpo_pulse_duration());
    }
    if (from.has_enable_operation_result_gpo()) {
      set_enable_operation_result_gpo(from.enable_operation_result_gpo());
    }
  }
}

void GPOConfig::CopyFrom(const GPOConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GPOConfig::IsInitialized() const {

  return true;
}

void GPOConfig::Swap(GPOConfig* other) {
  if (other != this) {
    std::swap(signaling_mode_, other->signaling_mode_);
    std::swap(gpo1_polarity_, other->gpo1_polarity_);
    std::swap(gpo2_polarity_, other->gpo2_polarity_);
    std::swap(gpo3_polarity_, other->gpo3_polarity_);
    std::swap(gpo_pulse_duration_, other->gpo_pulse_duration_);
    std::swap(enable_operation_result_gpo_, other->enable_operation_result_gpo_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GPOConfig::GetTypeName() const {
  return "Impinj.STP.GPOConfig";
}


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

#ifndef _MSC_VER
const int STPDevice::kHostnameFieldNumber;
#endif  // !_MSC_VER

STPDevice::STPDevice()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void STPDevice::InitAsDefaultInstance() {
}

STPDevice::STPDevice(const STPDevice& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void STPDevice::SharedCtor() {
  _cached_size_ = 0;
  hostname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

STPDevice::~STPDevice() {
  SharedDtor();
}

void STPDevice::SharedDtor() {
  if (hostname_ != &::google::protobuf::internal::kEmptyString) {
    delete hostname_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void STPDevice::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const STPDevice& STPDevice::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

STPDevice* STPDevice::default_instance_ = NULL;

STPDevice* STPDevice::New() const {
  return new STPDevice;
}

void STPDevice::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_hostname()) {
      if (hostname_ != &::google::protobuf::internal::kEmptyString) {
        hostname_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool STPDevice::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string hostname = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_hostname()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void STPDevice::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string hostname = 1;
  if (has_hostname()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->hostname(), output);
  }

}

int STPDevice::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string hostname = 1;
    if (has_hostname()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->hostname());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void STPDevice::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const STPDevice*>(&from));
}

void STPDevice::MergeFrom(const STPDevice& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_hostname()) {
      set_hostname(from.hostname());
    }
  }
}

void STPDevice::CopyFrom(const STPDevice& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool STPDevice::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void STPDevice::Swap(STPDevice* other) {
  if (other != this) {
    std::swap(hostname_, other->hostname_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string STPDevice::GetTypeName() const {
  return "Impinj.STP.STPDevice";
}


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

::std::string* OperationResponsibility::_default_epc_memory_mask_ = NULL;
::std::string* OperationResponsibility::_default_user_memory_mask_ = NULL;
#ifndef _MSC_VER
const int OperationResponsibility::kEPCMemoryMaskFieldNumber;
const int OperationResponsibility::kEPCMemoryPcWordFieldNumber;
const int OperationResponsibility::kTIDConfigWordFieldNumber;
const int OperationResponsibility::kUserMemoryMaskFieldNumber;
const int OperationResponsibility::kSecurePasswordFieldNumber;
const int OperationResponsibility::kAccessPasswordFieldNumber;
const int OperationResponsibility::kKillPasswordFieldNumber;
const int OperationResponsibility::kLockConfigFieldNumber;
const int OperationResponsibility::kBlockpermalockConfigFieldNumber;
const int OperationResponsibility::kKillTagFieldNumber;
const int OperationResponsibility::kTagSpecificFeatureConfigFieldNumber;
const int OperationResponsibility::kTagsInViewCountFieldNumber;
const int OperationResponsibility::kTagsInPipelineViewCountFieldNumber;
const int OperationResponsibility::kDownstreamPipelineDevicesFieldNumber;
const int OperationResponsibility::kDeviceOfRecordFieldNumber;
const int OperationResponsibility::kVoyanticTagsuranceTestResultsCacheSizeFieldNumber;
const int OperationResponsibility::kVoidTagResponsibilityFieldNumber;
#endif  // !_MSC_VER

OperationResponsibility::OperationResponsibility()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OperationResponsibility::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  device_of_record_ = const_cast< ::Impinj::STP::STPDevice*>(
      ::Impinj::STP::STPDevice::internal_default_instance());
#else
  device_of_record_ = const_cast< ::Impinj::STP::STPDevice*>(&::Impinj::STP::STPDevice::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  void_tag_responsibility_ = const_cast< ::Impinj::STP::VoidTagResponsibility*>(
      ::Impinj::STP::VoidTagResponsibility::internal_default_instance());
#else
  void_tag_responsibility_ = const_cast< ::Impinj::STP::VoidTagResponsibility*>(&::Impinj::STP::VoidTagResponsibility::default_instance());
#endif
}

OperationResponsibility::OperationResponsibility(const OperationResponsibility& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OperationResponsibility::SharedCtor() {
  _cached_size_ = 0;
  epc_memory_mask_ = const_cast< ::std::string*>(_default_epc_memory_mask_);
  epc_memory_pc_word_ = true;
  tid_config_word_ = true;
  user_memory_mask_ = const_cast< ::std::string*>(_default_user_memory_mask_);
  secure_password_ = true;
  access_password_ = true;
  kill_password_ = true;
  lock_config_ = true;
  blockpermalock_config_ = true;
  kill_tag_ = true;
  tag_specific_feature_config_ = true;
  tags_in_view_count_ = 6u;
  tags_in_pipeline_view_count_ = 0u;
  device_of_record_ = NULL;
  voyantic_tagsurance_test_results_cache_size_ = 0u;
  void_tag_responsibility_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OperationResponsibility::~OperationResponsibility() {
  SharedDtor();
}

void OperationResponsibility::SharedDtor() {
  if (epc_memory_mask_ != _default_epc_memory_mask_) {
    delete epc_memory_mask_;
  }
  if (user_memory_mask_ != _default_user_memory_mask_) {
    delete user_memory_mask_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete device_of_record_;
    delete void_tag_responsibility_;
  }
}

void OperationResponsibility::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OperationResponsibility& OperationResponsibility::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OperationResponsibility* OperationResponsibility::default_instance_ = NULL;

OperationResponsibility* OperationResponsibility::New() const {
  return new OperationResponsibility;
}

void OperationResponsibility::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_epc_memory_mask()) {
      if (epc_memory_mask_ != _default_epc_memory_mask_) {
        epc_memory_mask_->assign(*_default_epc_memory_mask_);
      }
    }
    epc_memory_pc_word_ = true;
    tid_config_word_ = true;
    if (has_user_memory_mask()) {
      if (user_memory_mask_ != _default_user_memory_mask_) {
        user_memory_mask_->assign(*_default_user_memory_mask_);
      }
    }
    secure_password_ = true;
    access_password_ = true;
    kill_password_ = true;
    lock_config_ = true;
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    blockpermalock_config_ = true;
    kill_tag_ = true;
    tag_specific_feature_config_ = true;
    tags_in_view_count_ = 6u;
    tags_in_pipeline_view_count_ = 0u;
    if (has_device_of_record()) {
      if (device_of_record_ != NULL) device_of_record_->::Impinj::STP::STPDevice::Clear();
    }
    voyantic_tagsurance_test_results_cache_size_ = 0u;
  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (has_void_tag_responsibility()) {
      if (void_tag_responsibility_ != NULL) void_tag_responsibility_->::Impinj::STP::VoidTagResponsibility::Clear();
    }
  }
  downstream_pipeline_devices_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OperationResponsibility::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes EPC_memory_mask = 1 [default = "\377\377"];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_epc_memory_mask()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_EPC_memory_pc_word;
        break;
      }

      // optional bool EPC_memory_pc_word = 2 [default = true];
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_EPC_memory_pc_word:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &epc_memory_pc_word_)));
          set_has_epc_memory_pc_word();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_user_memory_mask;
        break;
      }

      // optional bytes user_memory_mask = 3 [default = "\377\377\377\377\377\377\377\377"];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_user_memory_mask:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_user_memory_mask()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_secure_password;
        break;
      }

      // optional bool secure_password = 4 [default = true];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_secure_password:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &secure_password_)));
          set_has_secure_password();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_access_password;
        break;
      }

      // optional bool access_password = 5 [default = true];
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_access_password:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &access_password_)));
          set_has_access_password();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_kill_password;
        break;
      }

      // optional bool kill_password = 6 [default = true];
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_kill_password:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_password_)));
          set_has_kill_password();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_lock_config;
        break;
      }

      // optional bool lock_config = 7 [default = true];
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_lock_config:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &lock_config_)));
          set_has_lock_config();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(64)) goto parse_blockpermalock_config;
        break;
      }

      // optional bool blockpermalock_config = 8 [default = true];
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_blockpermalock_config:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &blockpermalock_config_)));
          set_has_blockpermalock_config();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_kill_tag;
        break;
      }

      // optional bool kill_tag = 10 [default = true];
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_kill_tag:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_tag_)));
          set_has_kill_tag();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(88)) goto parse_tags_in_view_count;
        break;
      }

      // optional uint32 tags_in_view_count = 11 [default = 6];
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tags_in_view_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tags_in_view_count_)));
          set_has_tags_in_view_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96)) goto parse_tags_in_pipeline_view_count;
        break;
      }

      // optional uint32 tags_in_pipeline_view_count = 12 [default = 0];
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tags_in_pipeline_view_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tags_in_pipeline_view_count_)));
          set_has_tags_in_pipeline_view_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(106)) goto parse_downstream_pipeline_devices;
        break;
      }

      // repeated .Impinj.STP.STPDevice downstream_pipeline_devices = 13;
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_downstream_pipeline_devices:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_downstream_pipeline_devices()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(106)) goto parse_downstream_pipeline_devices;
        if (input->ExpectTag(114)) goto parse_device_of_record;
        break;
      }

      // optional .Impinj.STP.STPDevice device_of_record = 14;
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_device_of_record:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_device_of_record()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(120)) goto parse_voyantic_tagsurance_test_results_cache_size;
        break;
      }

      // optional uint32 voyantic_tagsurance_test_results_cache_size = 15;
      case 15: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_voyantic_tagsurance_test_results_cache_size:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &voyantic_tagsurance_test_results_cache_size_)));
          set_has_voyantic_tagsurance_test_results_cache_size();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(130)) goto parse_void_tag_responsibility;
        break;
      }

      // optional .Impinj.STP.VoidTagResponsibility void_tag_responsibility = 16;
      case 16: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_void_tag_responsibility:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_void_tag_responsibility()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(136)) goto parse_tag_specific_feature_config;
        break;
      }

      // optional bool tag_specific_feature_config = 17 [default = true];
      case 17: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_specific_feature_config:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &tag_specific_feature_config_)));
          set_has_tag_specific_feature_config();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(144)) goto parse_TID_config_word;
        break;
      }

      // optional bool TID_config_word = 18 [default = true];
      case 18: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_TID_config_word:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &tid_config_word_)));
          set_has_tid_config_word();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OperationResponsibility::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes EPC_memory_mask = 1 [default = "\377\377"];
  if (has_epc_memory_mask()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->epc_memory_mask(), output);
  }

  // optional bool EPC_memory_pc_word = 2 [default = true];
  if (has_epc_memory_pc_word()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->epc_memory_pc_word(), output);
  }

  // optional bytes user_memory_mask = 3 [default = "\377\377\377\377\377\377\377\377"];
  if (has_user_memory_mask()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      3, this->user_memory_mask(), output);
  }

  // optional bool secure_password = 4 [default = true];
  if (has_secure_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->secure_password(), output);
  }

  // optional bool access_password = 5 [default = true];
  if (has_access_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->access_password(), output);
  }

  // optional bool kill_password = 6 [default = true];
  if (has_kill_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->kill_password(), output);
  }

  // optional bool lock_config = 7 [default = true];
  if (has_lock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->lock_config(), output);
  }

  // optional bool blockpermalock_config = 8 [default = true];
  if (has_blockpermalock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->blockpermalock_config(), output);
  }

  // optional bool kill_tag = 10 [default = true];
  if (has_kill_tag()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->kill_tag(), output);
  }

  // optional uint32 tags_in_view_count = 11 [default = 6];
  if (has_tags_in_view_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(11, this->tags_in_view_count(), output);
  }

  // optional uint32 tags_in_pipeline_view_count = 12 [default = 0];
  if (has_tags_in_pipeline_view_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(12, this->tags_in_pipeline_view_count(), output);
  }

  // repeated .Impinj.STP.STPDevice downstream_pipeline_devices = 13;
  for (int i = 0; i < this->downstream_pipeline_devices_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      13, this->downstream_pipeline_devices(i), output);
  }

  // optional .Impinj.STP.STPDevice device_of_record = 14;
  if (has_device_of_record()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      14, this->device_of_record(), output);
  }

  // optional uint32 voyantic_tagsurance_test_results_cache_size = 15;
  if (has_voyantic_tagsurance_test_results_cache_size()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(15, this->voyantic_tagsurance_test_results_cache_size(), output);
  }

  // optional .Impinj.STP.VoidTagResponsibility void_tag_responsibility = 16;
  if (has_void_tag_responsibility()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      16, this->void_tag_responsibility(), output);
  }

  // optional bool tag_specific_feature_config = 17 [default = true];
  if (has_tag_specific_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(17, this->tag_specific_feature_config(), output);
  }

  // optional bool TID_config_word = 18 [default = true];
  if (has_tid_config_word()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(18, this->tid_config_word(), output);
  }

}

int OperationResponsibility::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes EPC_memory_mask = 1 [default = "\377\377"];
    if (has_epc_memory_mask()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->epc_memory_mask());
    }

    // optional bool EPC_memory_pc_word = 2 [default = true];
    if (has_epc_memory_pc_word()) {
      total_size += 1 + 1;
    }

    // optional bool TID_config_word = 18 [default = true];
    if (has_tid_config_word()) {
      total_size += 2 + 1;
    }

    // optional bytes user_memory_mask = 3 [default = "\377\377\377\377\377\377\377\377"];
    if (has_user_memory_mask()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->user_memory_mask());
    }

    // optional bool secure_password = 4 [default = true];
    if (has_secure_password()) {
      total_size += 1 + 1;
    }

    // optional bool access_password = 5 [default = true];
    if (has_access_password()) {
      total_size += 1 + 1;
    }

    // optional bool kill_password = 6 [default = true];
    if (has_kill_password()) {
      total_size += 1 + 1;
    }

    // optional bool lock_config = 7 [default = true];
    if (has_lock_config()) {
      total_size += 1 + 1;
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional bool blockpermalock_config = 8 [default = true];
    if (has_blockpermalock_config()) {
      total_size += 1 + 1;
    }

    // optional bool kill_tag = 10 [default = true];
    if (has_kill_tag()) {
      total_size += 1 + 1;
    }

    // optional bool tag_specific_feature_config = 17 [default = true];
    if (has_tag_specific_feature_config()) {
      total_size += 2 + 1;
    }

    // optional uint32 tags_in_view_count = 11 [default = 6];
    if (has_tags_in_view_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tags_in_view_count());
    }

    // optional uint32 tags_in_pipeline_view_count = 12 [default = 0];
    if (has_tags_in_pipeline_view_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tags_in_pipeline_view_count());
    }

    // optional .Impinj.STP.STPDevice device_of_record = 14;
    if (has_device_of_record()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->device_of_record());
    }

    // optional uint32 voyantic_tagsurance_test_results_cache_size = 15;
    if (has_voyantic_tagsurance_test_results_cache_size()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->voyantic_tagsurance_test_results_cache_size());
    }

  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    // optional .Impinj.STP.VoidTagResponsibility void_tag_responsibility = 16;
    if (has_void_tag_responsibility()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->void_tag_responsibility());
    }

  }
  // repeated .Impinj.STP.STPDevice downstream_pipeline_devices = 13;
  total_size += 1 * this->downstream_pipeline_devices_size();
  for (int i = 0; i < this->downstream_pipeline_devices_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->downstream_pipeline_devices(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OperationResponsibility::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OperationResponsibility*>(&from));
}

void OperationResponsibility::MergeFrom(const OperationResponsibility& from) {
  GOOGLE_CHECK_NE(&from, this);
  downstream_pipeline_devices_.MergeFrom(from.downstream_pipeline_devices_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_epc_memory_mask()) {
      set_epc_memory_mask(from.epc_memory_mask());
    }
    if (from.has_epc_memory_pc_word()) {
      set_epc_memory_pc_word(from.epc_memory_pc_word());
    }
    if (from.has_tid_config_word()) {
      set_tid_config_word(from.tid_config_word());
    }
    if (from.has_user_memory_mask()) {
      set_user_memory_mask(from.user_memory_mask());
    }
    if (from.has_secure_password()) {
      set_secure_password(from.secure_password());
    }
    if (from.has_access_password()) {
      set_access_password(from.access_password());
    }
    if (from.has_kill_password()) {
      set_kill_password(from.kill_password());
    }
    if (from.has_lock_config()) {
      set_lock_config(from.lock_config());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_blockpermalock_config()) {
      set_blockpermalock_config(from.blockpermalock_config());
    }
    if (from.has_kill_tag()) {
      set_kill_tag(from.kill_tag());
    }
    if (from.has_tag_specific_feature_config()) {
      set_tag_specific_feature_config(from.tag_specific_feature_config());
    }
    if (from.has_tags_in_view_count()) {
      set_tags_in_view_count(from.tags_in_view_count());
    }
    if (from.has_tags_in_pipeline_view_count()) {
      set_tags_in_pipeline_view_count(from.tags_in_pipeline_view_count());
    }
    if (from.has_device_of_record()) {
      mutable_device_of_record()->::Impinj::STP::STPDevice::MergeFrom(from.device_of_record());
    }
    if (from.has_voyantic_tagsurance_test_results_cache_size()) {
      set_voyantic_tagsurance_test_results_cache_size(from.voyantic_tagsurance_test_results_cache_size());
    }
  }
  if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (from.has_void_tag_responsibility()) {
      mutable_void_tag_responsibility()->::Impinj::STP::VoidTagResponsibility::MergeFrom(from.void_tag_responsibility());
    }
  }
}

void OperationResponsibility::CopyFrom(const OperationResponsibility& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OperationResponsibility::IsInitialized() const {

  for (int i = 0; i < downstream_pipeline_devices_size(); i++) {
    if (!this->downstream_pipeline_devices(i).IsInitialized()) return false;
  }
  if (has_device_of_record()) {
    if (!this->device_of_record().IsInitialized()) return false;
  }
  return true;
}

void OperationResponsibility::Swap(OperationResponsibility* other) {
  if (other != this) {
    std::swap(epc_memory_mask_, other->epc_memory_mask_);
    std::swap(epc_memory_pc_word_, other->epc_memory_pc_word_);
    std::swap(tid_config_word_, other->tid_config_word_);
    std::swap(user_memory_mask_, other->user_memory_mask_);
    std::swap(secure_password_, other->secure_password_);
    std::swap(access_password_, other->access_password_);
    std::swap(kill_password_, other->kill_password_);
    std::swap(lock_config_, other->lock_config_);
    std::swap(blockpermalock_config_, other->blockpermalock_config_);
    std::swap(kill_tag_, other->kill_tag_);
    std::swap(tag_specific_feature_config_, other->tag_specific_feature_config_);
    std::swap(tags_in_view_count_, other->tags_in_view_count_);
    std::swap(tags_in_pipeline_view_count_, other->tags_in_pipeline_view_count_);
    downstream_pipeline_devices_.Swap(&other->downstream_pipeline_devices_);
    std::swap(device_of_record_, other->device_of_record_);
    std::swap(voyantic_tagsurance_test_results_cache_size_, other->voyantic_tagsurance_test_results_cache_size_);
    std::swap(void_tag_responsibility_, other->void_tag_responsibility_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OperationResponsibility::GetTypeName() const {
  return "Impinj.STP.OperationResponsibility";
}


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

#ifndef _MSC_VER
const int VoidTagResponsibility::kPcWordToZeroFieldNumber;
const int VoidTagResponsibility::kFirstEpcWordsFieldNumber;
const int VoidTagResponsibility::kPermalockFieldNumber;
const int VoidTagResponsibility::kKillFieldNumber;
#endif  // !_MSC_VER

VoidTagResponsibility::VoidTagResponsibility()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void VoidTagResponsibility::InitAsDefaultInstance() {
}

VoidTagResponsibility::VoidTagResponsibility(const VoidTagResponsibility& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void VoidTagResponsibility::SharedCtor() {
  _cached_size_ = 0;
  pc_word_to_zero_ = true;
  first_epc_words_ = true;
  permalock_ = true;
  kill_ = true;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

VoidTagResponsibility::~VoidTagResponsibility() {
  SharedDtor();
}

void VoidTagResponsibility::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void VoidTagResponsibility::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const VoidTagResponsibility& VoidTagResponsibility::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

VoidTagResponsibility* VoidTagResponsibility::default_instance_ = NULL;

VoidTagResponsibility* VoidTagResponsibility::New() const {
  return new VoidTagResponsibility;
}

void VoidTagResponsibility::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    pc_word_to_zero_ = true;
    first_epc_words_ = true;
    permalock_ = true;
    kill_ = true;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool VoidTagResponsibility::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool pc_word_to_zero = 1 [default = true];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &pc_word_to_zero_)));
          set_has_pc_word_to_zero();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_first_epc_words;
        break;
      }

      // optional bool first_epc_words = 2 [default = true];
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_first_epc_words:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &first_epc_words_)));
          set_has_first_epc_words();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_permalock;
        break;
      }

      // optional bool permalock = 3 [default = true];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_permalock:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &permalock_)));
          set_has_permalock();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_kill;
        break;
      }

      // optional bool kill = 4 [default = true];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_kill:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_)));
          set_has_kill();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void VoidTagResponsibility::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool pc_word_to_zero = 1 [default = true];
  if (has_pc_word_to_zero()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->pc_word_to_zero(), output);
  }

  // optional bool first_epc_words = 2 [default = true];
  if (has_first_epc_words()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->first_epc_words(), output);
  }

  // optional bool permalock = 3 [default = true];
  if (has_permalock()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->permalock(), output);
  }

  // optional bool kill = 4 [default = true];
  if (has_kill()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->kill(), output);
  }

}

int VoidTagResponsibility::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool pc_word_to_zero = 1 [default = true];
    if (has_pc_word_to_zero()) {
      total_size += 1 + 1;
    }

    // optional bool first_epc_words = 2 [default = true];
    if (has_first_epc_words()) {
      total_size += 1 + 1;
    }

    // optional bool permalock = 3 [default = true];
    if (has_permalock()) {
      total_size += 1 + 1;
    }

    // optional bool kill = 4 [default = true];
    if (has_kill()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void VoidTagResponsibility::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const VoidTagResponsibility*>(&from));
}

void VoidTagResponsibility::MergeFrom(const VoidTagResponsibility& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_pc_word_to_zero()) {
      set_pc_word_to_zero(from.pc_word_to_zero());
    }
    if (from.has_first_epc_words()) {
      set_first_epc_words(from.first_epc_words());
    }
    if (from.has_permalock()) {
      set_permalock(from.permalock());
    }
    if (from.has_kill()) {
      set_kill(from.kill());
    }
  }
}

void VoidTagResponsibility::CopyFrom(const VoidTagResponsibility& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool VoidTagResponsibility::IsInitialized() const {

  return true;
}

void VoidTagResponsibility::Swap(VoidTagResponsibility* other) {
  if (other != this) {
    std::swap(pc_word_to_zero_, other->pc_word_to_zero_);
    std::swap(first_epc_words_, other->first_epc_words_);
    std::swap(permalock_, other->permalock_);
    std::swap(kill_, other->kill_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string VoidTagResponsibility::GetTypeName() const {
  return "Impinj.STP.VoidTagResponsibility";
}


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

#ifndef _MSC_VER
const int OperationSummaryReportConfig::kEnableOperationSummaryReportsFieldNumber;
#endif  // !_MSC_VER

OperationSummaryReportConfig::OperationSummaryReportConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OperationSummaryReportConfig::InitAsDefaultInstance() {
}

OperationSummaryReportConfig::OperationSummaryReportConfig(const OperationSummaryReportConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OperationSummaryReportConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_operation_summary_reports_ = true;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OperationSummaryReportConfig::~OperationSummaryReportConfig() {
  SharedDtor();
}

void OperationSummaryReportConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void OperationSummaryReportConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OperationSummaryReportConfig& OperationSummaryReportConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OperationSummaryReportConfig* OperationSummaryReportConfig::default_instance_ = NULL;

OperationSummaryReportConfig* OperationSummaryReportConfig::New() const {
  return new OperationSummaryReportConfig;
}

void OperationSummaryReportConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_operation_summary_reports_ = true;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OperationSummaryReportConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bool enable_operation_summary_reports = 1 [default = true];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_operation_summary_reports_)));
          set_has_enable_operation_summary_reports();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OperationSummaryReportConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bool enable_operation_summary_reports = 1 [default = true];
  if (has_enable_operation_summary_reports()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_operation_summary_reports(), output);
  }

}

int OperationSummaryReportConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bool enable_operation_summary_reports = 1 [default = true];
    if (has_enable_operation_summary_reports()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OperationSummaryReportConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OperationSummaryReportConfig*>(&from));
}

void OperationSummaryReportConfig::MergeFrom(const OperationSummaryReportConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_operation_summary_reports()) {
      set_enable_operation_summary_reports(from.enable_operation_summary_reports());
    }
  }
}

void OperationSummaryReportConfig::CopyFrom(const OperationSummaryReportConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OperationSummaryReportConfig::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void OperationSummaryReportConfig::Swap(OperationSummaryReportConfig* other) {
  if (other != this) {
    std::swap(enable_operation_summary_reports_, other->enable_operation_summary_reports_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OperationSummaryReportConfig::GetTypeName() const {
  return "Impinj.STP.OperationSummaryReportConfig";
}


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

#ifndef _MSC_VER
const int TagOperationReportConfig::kEnableTagOperationReportsFieldNumber;
const int TagOperationReportConfig::kEnableTagOperationRetryReportsFieldNumber;
const int TagOperationReportConfig::kTagOperationReportTriggerFieldNumber;
const int TagOperationReportConfig::kEnableReportingOverSerialPortFieldNumber;
const int TagOperationReportConfig::kSendSerialReportAfterGPODeassertFieldNumber;
const int TagOperationReportConfig::kEnableEpcInSerialReportFieldNumber;
const int TagOperationReportConfig::kEnableTagOperationPassAlreadyDoneReportsFieldNumber;
#endif  // !_MSC_VER

TagOperationReportConfig::TagOperationReportConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TagOperationReportConfig::InitAsDefaultInstance() {
}

TagOperationReportConfig::TagOperationReportConfig(const TagOperationReportConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TagOperationReportConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_tag_operation_reports_ = true;
  enable_tag_operation_retry_reports_ = false;
  tag_operation_report_trigger_ = 1;
  enable_reporting_over_serial_port_ = false;
  send_serial_report_after_gpo_deassert_ = false;
  enable_epc_in_serial_report_ = false;
  enable_tag_operation_pass_already_done_reports_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TagOperationReportConfig::~TagOperationReportConfig() {
  SharedDtor();
}

void TagOperationReportConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void TagOperationReportConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TagOperationReportConfig& TagOperationReportConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TagOperationReportConfig* TagOperationReportConfig::default_instance_ = NULL;

TagOperationReportConfig* TagOperationReportConfig::New() const {
  return new TagOperationReportConfig;
}

void TagOperationReportConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_tag_operation_reports_ = true;
    enable_tag_operation_retry_reports_ = false;
    tag_operation_report_trigger_ = 1;
    enable_reporting_over_serial_port_ = false;
    send_serial_report_after_gpo_deassert_ = false;
    enable_epc_in_serial_report_ = false;
    enable_tag_operation_pass_already_done_reports_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TagOperationReportConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bool enable_tag_operation_reports = 1 [default = true];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_tag_operation_reports_)));
          set_has_enable_tag_operation_reports();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_enable_tag_operation_retry_reports;
        break;
      }

      // optional bool enable_tag_operation_retry_reports = 2 [default = false];
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_tag_operation_retry_reports:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_tag_operation_retry_reports_)));
          set_has_enable_tag_operation_retry_reports();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_tag_operation_report_trigger;
        break;
      }

      // optional .Impinj.STP.TagOperationReportTrigger tag_operation_report_trigger = 3 [default = TAG_OPERATION_REPORT_TRIGGER_IMMEDIATE];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_operation_report_trigger:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::TagOperationReportTrigger_IsValid(value)) {
            set_tag_operation_report_trigger(static_cast< ::Impinj::STP::TagOperationReportTrigger >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_enable_reporting_over_serial_port;
        break;
      }

      // optional bool enable_reporting_over_serial_port = 4 [default = false];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_reporting_over_serial_port:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_reporting_over_serial_port_)));
          set_has_enable_reporting_over_serial_port();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_send_serial_report_after_GPO_deassert;
        break;
      }

      // optional bool send_serial_report_after_GPO_deassert = 5 [default = false];
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_send_serial_report_after_GPO_deassert:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &send_serial_report_after_gpo_deassert_)));
          set_has_send_serial_report_after_gpo_deassert();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_enable_epc_in_serial_report;
        break;
      }

      // optional bool enable_epc_in_serial_report = 6 [default = false];
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_epc_in_serial_report:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_epc_in_serial_report_)));
          set_has_enable_epc_in_serial_report();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_enable_tag_operation_pass_already_done_reports;
        break;
      }

      // optional bool enable_tag_operation_pass_already_done_reports = 7 [default = false];
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_tag_operation_pass_already_done_reports:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_tag_operation_pass_already_done_reports_)));
          set_has_enable_tag_operation_pass_already_done_reports();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TagOperationReportConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bool enable_tag_operation_reports = 1 [default = true];
  if (has_enable_tag_operation_reports()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_tag_operation_reports(), output);
  }

  // optional bool enable_tag_operation_retry_reports = 2 [default = false];
  if (has_enable_tag_operation_retry_reports()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->enable_tag_operation_retry_reports(), output);
  }

  // optional .Impinj.STP.TagOperationReportTrigger tag_operation_report_trigger = 3 [default = TAG_OPERATION_REPORT_TRIGGER_IMMEDIATE];
  if (has_tag_operation_report_trigger()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->tag_operation_report_trigger(), output);
  }

  // optional bool enable_reporting_over_serial_port = 4 [default = false];
  if (has_enable_reporting_over_serial_port()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->enable_reporting_over_serial_port(), output);
  }

  // optional bool send_serial_report_after_GPO_deassert = 5 [default = false];
  if (has_send_serial_report_after_gpo_deassert()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->send_serial_report_after_gpo_deassert(), output);
  }

  // optional bool enable_epc_in_serial_report = 6 [default = false];
  if (has_enable_epc_in_serial_report()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->enable_epc_in_serial_report(), output);
  }

  // optional bool enable_tag_operation_pass_already_done_reports = 7 [default = false];
  if (has_enable_tag_operation_pass_already_done_reports()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->enable_tag_operation_pass_already_done_reports(), output);
  }

}

int TagOperationReportConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bool enable_tag_operation_reports = 1 [default = true];
    if (has_enable_tag_operation_reports()) {
      total_size += 1 + 1;
    }

    // optional bool enable_tag_operation_retry_reports = 2 [default = false];
    if (has_enable_tag_operation_retry_reports()) {
      total_size += 1 + 1;
    }

    // optional .Impinj.STP.TagOperationReportTrigger tag_operation_report_trigger = 3 [default = TAG_OPERATION_REPORT_TRIGGER_IMMEDIATE];
    if (has_tag_operation_report_trigger()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->tag_operation_report_trigger());
    }

    // optional bool enable_reporting_over_serial_port = 4 [default = false];
    if (has_enable_reporting_over_serial_port()) {
      total_size += 1 + 1;
    }

    // optional bool send_serial_report_after_GPO_deassert = 5 [default = false];
    if (has_send_serial_report_after_gpo_deassert()) {
      total_size += 1 + 1;
    }

    // optional bool enable_epc_in_serial_report = 6 [default = false];
    if (has_enable_epc_in_serial_report()) {
      total_size += 1 + 1;
    }

    // optional bool enable_tag_operation_pass_already_done_reports = 7 [default = false];
    if (has_enable_tag_operation_pass_already_done_reports()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TagOperationReportConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TagOperationReportConfig*>(&from));
}

void TagOperationReportConfig::MergeFrom(const TagOperationReportConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_tag_operation_reports()) {
      set_enable_tag_operation_reports(from.enable_tag_operation_reports());
    }
    if (from.has_enable_tag_operation_retry_reports()) {
      set_enable_tag_operation_retry_reports(from.enable_tag_operation_retry_reports());
    }
    if (from.has_tag_operation_report_trigger()) {
      set_tag_operation_report_trigger(from.tag_operation_report_trigger());
    }
    if (from.has_enable_reporting_over_serial_port()) {
      set_enable_reporting_over_serial_port(from.enable_reporting_over_serial_port());
    }
    if (from.has_send_serial_report_after_gpo_deassert()) {
      set_send_serial_report_after_gpo_deassert(from.send_serial_report_after_gpo_deassert());
    }
    if (from.has_enable_epc_in_serial_report()) {
      set_enable_epc_in_serial_report(from.enable_epc_in_serial_report());
    }
    if (from.has_enable_tag_operation_pass_already_done_reports()) {
      set_enable_tag_operation_pass_already_done_reports(from.enable_tag_operation_pass_already_done_reports());
    }
  }
}

void TagOperationReportConfig::CopyFrom(const TagOperationReportConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TagOperationReportConfig::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void TagOperationReportConfig::Swap(TagOperationReportConfig* other) {
  if (other != this) {
    std::swap(enable_tag_operation_reports_, other->enable_tag_operation_reports_);
    std::swap(enable_tag_operation_retry_reports_, other->enable_tag_operation_retry_reports_);
    std::swap(tag_operation_report_trigger_, other->tag_operation_report_trigger_);
    std::swap(enable_reporting_over_serial_port_, other->enable_reporting_over_serial_port_);
    std::swap(send_serial_report_after_gpo_deassert_, other->send_serial_report_after_gpo_deassert_);
    std::swap(enable_epc_in_serial_report_, other->enable_epc_in_serial_report_);
    std::swap(enable_tag_operation_pass_already_done_reports_, other->enable_tag_operation_pass_already_done_reports_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TagOperationReportConfig::GetTypeName() const {
  return "Impinj.STP.TagOperationReportConfig";
}


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

#ifndef _MSC_VER
const int ReportConfig::kDeviceEventConfigFieldNumber;
const int ReportConfig::kOperationSummaryReportConfigFieldNumber;
const int ReportConfig::kTagOperationReportConfigFieldNumber;
#endif  // !_MSC_VER

ReportConfig::ReportConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ReportConfig::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  device_event_config_ = const_cast< ::Impinj::STP::DeviceEventConfig*>(
      ::Impinj::STP::DeviceEventConfig::internal_default_instance());
#else
  device_event_config_ = const_cast< ::Impinj::STP::DeviceEventConfig*>(&::Impinj::STP::DeviceEventConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  operation_summary_report_config_ = const_cast< ::Impinj::STP::OperationSummaryReportConfig*>(
      ::Impinj::STP::OperationSummaryReportConfig::internal_default_instance());
#else
  operation_summary_report_config_ = const_cast< ::Impinj::STP::OperationSummaryReportConfig*>(&::Impinj::STP::OperationSummaryReportConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  tag_operation_report_config_ = const_cast< ::Impinj::STP::TagOperationReportConfig*>(
      ::Impinj::STP::TagOperationReportConfig::internal_default_instance());
#else
  tag_operation_report_config_ = const_cast< ::Impinj::STP::TagOperationReportConfig*>(&::Impinj::STP::TagOperationReportConfig::default_instance());
#endif
}

ReportConfig::ReportConfig(const ReportConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ReportConfig::SharedCtor() {
  _cached_size_ = 0;
  device_event_config_ = NULL;
  operation_summary_report_config_ = NULL;
  tag_operation_report_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ReportConfig::~ReportConfig() {
  SharedDtor();
}

void ReportConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete device_event_config_;
    delete operation_summary_report_config_;
    delete tag_operation_report_config_;
  }
}

void ReportConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ReportConfig& ReportConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

ReportConfig* ReportConfig::default_instance_ = NULL;

ReportConfig* ReportConfig::New() const {
  return new ReportConfig;
}

void ReportConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_device_event_config()) {
      if (device_event_config_ != NULL) device_event_config_->::Impinj::STP::DeviceEventConfig::Clear();
    }
    if (has_operation_summary_report_config()) {
      if (operation_summary_report_config_ != NULL) operation_summary_report_config_->::Impinj::STP::OperationSummaryReportConfig::Clear();
    }
    if (has_tag_operation_report_config()) {
      if (tag_operation_report_config_ != NULL) tag_operation_report_config_->::Impinj::STP::TagOperationReportConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ReportConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.DeviceEventConfig device_event_config = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_device_event_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_operation_summary_report_config;
        break;
      }

      // optional .Impinj.STP.OperationSummaryReportConfig operation_summary_report_config = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_operation_summary_report_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_operation_summary_report_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_tag_operation_report_config;
        break;
      }

      // optional .Impinj.STP.TagOperationReportConfig tag_operation_report_config = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_tag_operation_report_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_tag_operation_report_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ReportConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.DeviceEventConfig device_event_config = 1;
  if (has_device_event_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->device_event_config(), output);
  }

  // optional .Impinj.STP.OperationSummaryReportConfig operation_summary_report_config = 2;
  if (has_operation_summary_report_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->operation_summary_report_config(), output);
  }

  // optional .Impinj.STP.TagOperationReportConfig tag_operation_report_config = 3;
  if (has_tag_operation_report_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->tag_operation_report_config(), output);
  }

}

int ReportConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.DeviceEventConfig device_event_config = 1;
    if (has_device_event_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->device_event_config());
    }

    // optional .Impinj.STP.OperationSummaryReportConfig operation_summary_report_config = 2;
    if (has_operation_summary_report_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->operation_summary_report_config());
    }

    // optional .Impinj.STP.TagOperationReportConfig tag_operation_report_config = 3;
    if (has_tag_operation_report_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->tag_operation_report_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ReportConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ReportConfig*>(&from));
}

void ReportConfig::MergeFrom(const ReportConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_device_event_config()) {
      mutable_device_event_config()->::Impinj::STP::DeviceEventConfig::MergeFrom(from.device_event_config());
    }
    if (from.has_operation_summary_report_config()) {
      mutable_operation_summary_report_config()->::Impinj::STP::OperationSummaryReportConfig::MergeFrom(from.operation_summary_report_config());
    }
    if (from.has_tag_operation_report_config()) {
      mutable_tag_operation_report_config()->::Impinj::STP::TagOperationReportConfig::MergeFrom(from.tag_operation_report_config());
    }
  }
}

void ReportConfig::CopyFrom(const ReportConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReportConfig::IsInitialized() const {

  if (has_operation_summary_report_config()) {
    if (!this->operation_summary_report_config().IsInitialized()) return false;
  }
  if (has_tag_operation_report_config()) {
    if (!this->tag_operation_report_config().IsInitialized()) return false;
  }
  return true;
}

void ReportConfig::Swap(ReportConfig* other) {
  if (other != this) {
    std::swap(device_event_config_, other->device_event_config_);
    std::swap(operation_summary_report_config_, other->operation_summary_report_config_);
    std::swap(tag_operation_report_config_, other->tag_operation_report_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ReportConfig::GetTypeName() const {
  return "Impinj.STP.ReportConfig";
}


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

#ifndef _MSC_VER
const int AntennaConfig::kAntennaIDFieldNumber;
const int AntennaConfig::kGen2ModeFieldNumber;
const int AntennaConfig::kInventorySearchModeFieldNumber;
const int AntennaConfig::kGen2SessionFieldNumber;
const int AntennaConfig::kTransmitPowerFieldNumber;
const int AntennaConfig::kReceiveSensitivityFieldNumber;
const int AntennaConfig::kTagPopulationEstimateFieldNumber;
const int AntennaConfig::kMinimumDwellTimeFieldNumber;
const int AntennaConfig::kMaximumDwellTimeFieldNumber;
const int AntennaConfig::kEnableQueryForQIncreaseFieldNumber;
const int AntennaConfig::kEnableQueryForQDecreaseFieldNumber;
const int AntennaConfig::kEnableQueryAtUCycleEndFieldNumber;
const int AntennaConfig::kEnableAdaptiveTagPopulationEstimateFieldNumber;
#endif  // !_MSC_VER

AntennaConfig::AntennaConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AntennaConfig::InitAsDefaultInstance() {
}

AntennaConfig::AntennaConfig(const AntennaConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AntennaConfig::SharedCtor() {
  _cached_size_ = 0;
  antenna_id_ = 0u;
  gen2_mode_ = 0;
  inventory_search_mode_ = 4;
  gen2_session_ = 1;
  transmit_power_ = 3000;
  receive_sensitivity_ = 0;
  tag_population_estimate_ = 32u;
  minimum_dwell_time_ = 0u;
  maximum_dwell_time_ = 0u;
  enable_query_for_q_increase_ = false;
  enable_query_for_q_decrease_ = false;
  enable_query_at_u_cycle_end_ = false;
  enable_adaptive_tag_population_estimate_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AntennaConfig::~AntennaConfig() {
  SharedDtor();
}

void AntennaConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void AntennaConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AntennaConfig& AntennaConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AntennaConfig* AntennaConfig::default_instance_ = NULL;

AntennaConfig* AntennaConfig::New() const {
  return new AntennaConfig;
}

void AntennaConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    antenna_id_ = 0u;
    gen2_mode_ = 0;
    inventory_search_mode_ = 4;
    gen2_session_ = 1;
    transmit_power_ = 3000;
    receive_sensitivity_ = 0;
    tag_population_estimate_ = 32u;
    minimum_dwell_time_ = 0u;
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    maximum_dwell_time_ = 0u;
    enable_query_for_q_increase_ = false;
    enable_query_for_q_decrease_ = false;
    enable_query_at_u_cycle_end_ = false;
    enable_adaptive_tag_population_estimate_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AntennaConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required uint32 antenna_ID = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &antenna_id_)));
          set_has_antenna_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_gen2_mode;
        break;
      }

      // optional .Impinj.STP.Gen2Mode gen2_mode = 4 [default = GEN2_MODE_MAX_THROUGHPUT];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_gen2_mode:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::Gen2Mode_IsValid(value)) {
            set_gen2_mode(static_cast< ::Impinj::STP::Gen2Mode >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_inventory_search_mode;
        break;
      }

      // optional .Impinj.STP.InventorySearchMode inventory_search_mode = 5 [default = INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B_MONZA_TAGFOCUS];
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_inventory_search_mode:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::InventorySearchMode_IsValid(value)) {
            set_inventory_search_mode(static_cast< ::Impinj::STP::InventorySearchMode >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_gen2_session;
        break;
      }

      // optional .Impinj.STP.Gen2Session gen2_session = 6 [default = GEN2_SESSION_1];
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_gen2_session:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::Gen2Session_IsValid(value)) {
            set_gen2_session(static_cast< ::Impinj::STP::Gen2Session >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_transmit_power;
        break;
      }

      // optional sint32 transmit_power = 7 [default = 3000];
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_transmit_power:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 input, &transmit_power_)));
          set_has_transmit_power();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(64)) goto parse_receive_sensitivity;
        break;
      }

      // optional sint32 receive_sensitivity = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_receive_sensitivity:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 input, &receive_sensitivity_)));
          set_has_receive_sensitivity();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_tag_population_estimate;
        break;
      }

      // optional uint32 tag_population_estimate = 10 [default = 32];
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_population_estimate:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tag_population_estimate_)));
          set_has_tag_population_estimate();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(88)) goto parse_minimum_dwell_time;
        break;
      }

      // optional uint32 minimum_dwell_time = 11 [default = 0];
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_minimum_dwell_time:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &minimum_dwell_time_)));
          set_has_minimum_dwell_time();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96)) goto parse_maximum_dwell_time;
        break;
      }

      // optional uint32 maximum_dwell_time = 12 [default = 0];
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_maximum_dwell_time:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &maximum_dwell_time_)));
          set_has_maximum_dwell_time();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(104)) goto parse_enable_query_for_q_increase;
        break;
      }

      // optional bool enable_query_for_q_increase = 13 [default = false];
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_query_for_q_increase:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_query_for_q_increase_)));
          set_has_enable_query_for_q_increase();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(112)) goto parse_enable_query_for_q_decrease;
        break;
      }

      // optional bool enable_query_for_q_decrease = 14 [default = false];
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_query_for_q_decrease:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_query_for_q_decrease_)));
          set_has_enable_query_for_q_decrease();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(120)) goto parse_enable_query_at_u_cycle_end;
        break;
      }

      // optional bool enable_query_at_u_cycle_end = 15 [default = false];
      case 15: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_query_at_u_cycle_end:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_query_at_u_cycle_end_)));
          set_has_enable_query_at_u_cycle_end();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(128)) goto parse_enable_adaptive_tag_population_estimate;
        break;
      }

      // optional bool enable_adaptive_tag_population_estimate = 16 [default = false];
      case 16: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_adaptive_tag_population_estimate:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_adaptive_tag_population_estimate_)));
          set_has_enable_adaptive_tag_population_estimate();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AntennaConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required uint32 antenna_ID = 1;
  if (has_antenna_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->antenna_id(), output);
  }

  // optional .Impinj.STP.Gen2Mode gen2_mode = 4 [default = GEN2_MODE_MAX_THROUGHPUT];
  if (has_gen2_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      4, this->gen2_mode(), output);
  }

  // optional .Impinj.STP.InventorySearchMode inventory_search_mode = 5 [default = INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B_MONZA_TAGFOCUS];
  if (has_inventory_search_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      5, this->inventory_search_mode(), output);
  }

  // optional .Impinj.STP.Gen2Session gen2_session = 6 [default = GEN2_SESSION_1];
  if (has_gen2_session()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      6, this->gen2_session(), output);
  }

  // optional sint32 transmit_power = 7 [default = 3000];
  if (has_transmit_power()) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt32(7, this->transmit_power(), output);
  }

  // optional sint32 receive_sensitivity = 8;
  if (has_receive_sensitivity()) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt32(8, this->receive_sensitivity(), output);
  }

  // optional uint32 tag_population_estimate = 10 [default = 32];
  if (has_tag_population_estimate()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(10, this->tag_population_estimate(), output);
  }

  // optional uint32 minimum_dwell_time = 11 [default = 0];
  if (has_minimum_dwell_time()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(11, this->minimum_dwell_time(), output);
  }

  // optional uint32 maximum_dwell_time = 12 [default = 0];
  if (has_maximum_dwell_time()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(12, this->maximum_dwell_time(), output);
  }

  // optional bool enable_query_for_q_increase = 13 [default = false];
  if (has_enable_query_for_q_increase()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->enable_query_for_q_increase(), output);
  }

  // optional bool enable_query_for_q_decrease = 14 [default = false];
  if (has_enable_query_for_q_decrease()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(14, this->enable_query_for_q_decrease(), output);
  }

  // optional bool enable_query_at_u_cycle_end = 15 [default = false];
  if (has_enable_query_at_u_cycle_end()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(15, this->enable_query_at_u_cycle_end(), output);
  }

  // optional bool enable_adaptive_tag_population_estimate = 16 [default = false];
  if (has_enable_adaptive_tag_population_estimate()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->enable_adaptive_tag_population_estimate(), output);
  }

}

int AntennaConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required uint32 antenna_ID = 1;
    if (has_antenna_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->antenna_id());
    }

    // optional .Impinj.STP.Gen2Mode gen2_mode = 4 [default = GEN2_MODE_MAX_THROUGHPUT];
    if (has_gen2_mode()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gen2_mode());
    }

    // optional .Impinj.STP.InventorySearchMode inventory_search_mode = 5 [default = INVENTORY_SEARCH_MODE_SINGLE_TARGET_A_TO_B_MONZA_TAGFOCUS];
    if (has_inventory_search_mode()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->inventory_search_mode());
    }

    // optional .Impinj.STP.Gen2Session gen2_session = 6 [default = GEN2_SESSION_1];
    if (has_gen2_session()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->gen2_session());
    }

    // optional sint32 transmit_power = 7 [default = 3000];
    if (has_transmit_power()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::SInt32Size(
          this->transmit_power());
    }

    // optional sint32 receive_sensitivity = 8;
    if (has_receive_sensitivity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::SInt32Size(
          this->receive_sensitivity());
    }

    // optional uint32 tag_population_estimate = 10 [default = 32];
    if (has_tag_population_estimate()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tag_population_estimate());
    }

    // optional uint32 minimum_dwell_time = 11 [default = 0];
    if (has_minimum_dwell_time()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->minimum_dwell_time());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional uint32 maximum_dwell_time = 12 [default = 0];
    if (has_maximum_dwell_time()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->maximum_dwell_time());
    }

    // optional bool enable_query_for_q_increase = 13 [default = false];
    if (has_enable_query_for_q_increase()) {
      total_size += 1 + 1;
    }

    // optional bool enable_query_for_q_decrease = 14 [default = false];
    if (has_enable_query_for_q_decrease()) {
      total_size += 1 + 1;
    }

    // optional bool enable_query_at_u_cycle_end = 15 [default = false];
    if (has_enable_query_at_u_cycle_end()) {
      total_size += 1 + 1;
    }

    // optional bool enable_adaptive_tag_population_estimate = 16 [default = false];
    if (has_enable_adaptive_tag_population_estimate()) {
      total_size += 2 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AntennaConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AntennaConfig*>(&from));
}

void AntennaConfig::MergeFrom(const AntennaConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_antenna_id()) {
      set_antenna_id(from.antenna_id());
    }
    if (from.has_gen2_mode()) {
      set_gen2_mode(from.gen2_mode());
    }
    if (from.has_inventory_search_mode()) {
      set_inventory_search_mode(from.inventory_search_mode());
    }
    if (from.has_gen2_session()) {
      set_gen2_session(from.gen2_session());
    }
    if (from.has_transmit_power()) {
      set_transmit_power(from.transmit_power());
    }
    if (from.has_receive_sensitivity()) {
      set_receive_sensitivity(from.receive_sensitivity());
    }
    if (from.has_tag_population_estimate()) {
      set_tag_population_estimate(from.tag_population_estimate());
    }
    if (from.has_minimum_dwell_time()) {
      set_minimum_dwell_time(from.minimum_dwell_time());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_maximum_dwell_time()) {
      set_maximum_dwell_time(from.maximum_dwell_time());
    }
    if (from.has_enable_query_for_q_increase()) {
      set_enable_query_for_q_increase(from.enable_query_for_q_increase());
    }
    if (from.has_enable_query_for_q_decrease()) {
      set_enable_query_for_q_decrease(from.enable_query_for_q_decrease());
    }
    if (from.has_enable_query_at_u_cycle_end()) {
      set_enable_query_at_u_cycle_end(from.enable_query_at_u_cycle_end());
    }
    if (from.has_enable_adaptive_tag_population_estimate()) {
      set_enable_adaptive_tag_population_estimate(from.enable_adaptive_tag_population_estimate());
    }
  }
}

void AntennaConfig::CopyFrom(const AntennaConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AntennaConfig::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void AntennaConfig::Swap(AntennaConfig* other) {
  if (other != this) {
    std::swap(antenna_id_, other->antenna_id_);
    std::swap(gen2_mode_, other->gen2_mode_);
    std::swap(inventory_search_mode_, other->inventory_search_mode_);
    std::swap(gen2_session_, other->gen2_session_);
    std::swap(transmit_power_, other->transmit_power_);
    std::swap(receive_sensitivity_, other->receive_sensitivity_);
    std::swap(tag_population_estimate_, other->tag_population_estimate_);
    std::swap(minimum_dwell_time_, other->minimum_dwell_time_);
    std::swap(maximum_dwell_time_, other->maximum_dwell_time_);
    std::swap(enable_query_for_q_increase_, other->enable_query_for_q_increase_);
    std::swap(enable_query_for_q_decrease_, other->enable_query_for_q_decrease_);
    std::swap(enable_query_at_u_cycle_end_, other->enable_query_at_u_cycle_end_);
    std::swap(enable_adaptive_tag_population_estimate_, other->enable_adaptive_tag_population_estimate_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AntennaConfig::GetTypeName() const {
  return "Impinj.STP.AntennaConfig";
}


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

#ifndef _MSC_VER
const int AntennasConfig::kAntennaConfigFieldNumber;
#endif  // !_MSC_VER

AntennasConfig::AntennasConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AntennasConfig::InitAsDefaultInstance() {
}

AntennasConfig::AntennasConfig(const AntennasConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AntennasConfig::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AntennasConfig::~AntennasConfig() {
  SharedDtor();
}

void AntennasConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void AntennasConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AntennasConfig& AntennasConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AntennasConfig* AntennasConfig::default_instance_ = NULL;

AntennasConfig* AntennasConfig::New() const {
  return new AntennasConfig;
}

void AntennasConfig::Clear() {
  antenna_config_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AntennasConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .Impinj.STP.AntennaConfig antenna_config = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_antenna_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_antenna_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_antenna_config;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AntennasConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .Impinj.STP.AntennaConfig antenna_config = 1;
  for (int i = 0; i < this->antenna_config_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->antenna_config(i), output);
  }

}

int AntennasConfig::ByteSize() const {
  int total_size = 0;

  // repeated .Impinj.STP.AntennaConfig antenna_config = 1;
  total_size += 1 * this->antenna_config_size();
  for (int i = 0; i < this->antenna_config_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->antenna_config(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AntennasConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AntennasConfig*>(&from));
}

void AntennasConfig::MergeFrom(const AntennasConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  antenna_config_.MergeFrom(from.antenna_config_);
}

void AntennasConfig::CopyFrom(const AntennasConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AntennasConfig::IsInitialized() const {

  for (int i = 0; i < antenna_config_size(); i++) {
    if (!this->antenna_config(i).IsInitialized()) return false;
  }
  return true;
}

void AntennasConfig::Swap(AntennasConfig* other) {
  if (other != this) {
    antenna_config_.Swap(&other->antenna_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AntennasConfig::GetTypeName() const {
  return "Impinj.STP.AntennasConfig";
}


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

#ifndef _MSC_VER
const int InventoryJob::kJobIdFieldNumber;
const int InventoryJob::kUserMemoryFieldNumber;
#endif  // !_MSC_VER

InventoryJob::InventoryJob()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void InventoryJob::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(
      ::Impinj::STP::UserMemory::internal_default_instance());
#else
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(&::Impinj::STP::UserMemory::default_instance());
#endif
}

InventoryJob::InventoryJob(const InventoryJob& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void InventoryJob::SharedCtor() {
  _cached_size_ = 0;
  job_id_ = 1u;
  user_memory_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

InventoryJob::~InventoryJob() {
  SharedDtor();
}

void InventoryJob::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete user_memory_;
  }
}

void InventoryJob::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const InventoryJob& InventoryJob::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

InventoryJob* InventoryJob::default_instance_ = NULL;

InventoryJob* InventoryJob::New() const {
  return new InventoryJob;
}

void InventoryJob::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    job_id_ = 1u;
    if (has_user_memory()) {
      if (user_memory_ != NULL) user_memory_->::Impinj::STP::UserMemory::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool InventoryJob::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 job_id = 1 [default = 1];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &job_id_)));
          set_has_job_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_user_memory;
        break;
      }

      // optional .Impinj.STP.UserMemory user_memory = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_user_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_user_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void InventoryJob::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 job_id = 1 [default = 1];
  if (has_job_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->job_id(), output);
  }

  // optional .Impinj.STP.UserMemory user_memory = 2;
  if (has_user_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->user_memory(), output);
  }

}

int InventoryJob::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 job_id = 1 [default = 1];
    if (has_job_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->job_id());
    }

    // optional .Impinj.STP.UserMemory user_memory = 2;
    if (has_user_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->user_memory());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void InventoryJob::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const InventoryJob*>(&from));
}

void InventoryJob::MergeFrom(const InventoryJob& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_job_id()) {
      set_job_id(from.job_id());
    }
    if (from.has_user_memory()) {
      mutable_user_memory()->::Impinj::STP::UserMemory::MergeFrom(from.user_memory());
    }
  }
}

void InventoryJob::CopyFrom(const InventoryJob& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool InventoryJob::IsInitialized() const {

  return true;
}

void InventoryJob::Swap(InventoryJob* other) {
  if (other != this) {
    std::swap(job_id_, other->job_id_);
    std::swap(user_memory_, other->user_memory_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string InventoryJob::GetTypeName() const {
  return "Impinj.STP.InventoryJob";
}


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

#ifndef _MSC_VER
const int CartonContentsJob::kJobIdFieldNumber;
const int CartonContentsJob::kEnterTriggerOffsetFieldNumber;
const int CartonContentsJob::kExitTriggerOffsetFieldNumber;
const int CartonContentsJob::kCartonVelocityFieldNumber;
const int CartonContentsJob::kReadTidFieldNumber;
const int CartonContentsJob::kCartonSpacingFieldNumber;
const int CartonContentsJob::kStartTriggerOffsetFieldNumber;
const int CartonContentsJob::kStopTriggerOffsetFieldNumber;
#endif  // !_MSC_VER

CartonContentsJob::CartonContentsJob()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void CartonContentsJob::InitAsDefaultInstance() {
}

CartonContentsJob::CartonContentsJob(const CartonContentsJob& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void CartonContentsJob::SharedCtor() {
  _cached_size_ = 0;
  job_id_ = 1u;
  enter_trigger_offset_ = 0u;
  exit_trigger_offset_ = 0u;
  carton_velocity_ = 0u;
  read_tid_ = true;
  carton_spacing_ = 0u;
  start_trigger_offset_ = 0u;
  stop_trigger_offset_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

CartonContentsJob::~CartonContentsJob() {
  SharedDtor();
}

void CartonContentsJob::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void CartonContentsJob::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const CartonContentsJob& CartonContentsJob::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

CartonContentsJob* CartonContentsJob::default_instance_ = NULL;

CartonContentsJob* CartonContentsJob::New() const {
  return new CartonContentsJob;
}

void CartonContentsJob::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    job_id_ = 1u;
    enter_trigger_offset_ = 0u;
    exit_trigger_offset_ = 0u;
    carton_velocity_ = 0u;
    read_tid_ = true;
    carton_spacing_ = 0u;
    start_trigger_offset_ = 0u;
    stop_trigger_offset_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool CartonContentsJob::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 job_id = 1 [default = 1];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &job_id_)));
          set_has_job_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_start_trigger_offset;
        break;
      }

      // optional uint32 start_trigger_offset = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_start_trigger_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &start_trigger_offset_)));
          set_has_start_trigger_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_stop_trigger_offset;
        break;
      }

      // optional uint32 stop_trigger_offset = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_stop_trigger_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &stop_trigger_offset_)));
          set_has_stop_trigger_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_carton_velocity;
        break;
      }

      // optional uint32 carton_velocity = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_carton_velocity:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &carton_velocity_)));
          set_has_carton_velocity();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_carton_spacing;
        break;
      }

      // optional uint32 carton_spacing = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_carton_spacing:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &carton_spacing_)));
          set_has_carton_spacing();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_enter_trigger_offset;
        break;
      }

      // optional uint32 enter_trigger_offset = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enter_trigger_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &enter_trigger_offset_)));
          set_has_enter_trigger_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_exit_trigger_offset;
        break;
      }

      // optional uint32 exit_trigger_offset = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_exit_trigger_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &exit_trigger_offset_)));
          set_has_exit_trigger_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(64)) goto parse_read_tid;
        break;
      }

      // optional bool read_tid = 8 [default = true];
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_read_tid:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &read_tid_)));
          set_has_read_tid();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void CartonContentsJob::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 job_id = 1 [default = 1];
  if (has_job_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->job_id(), output);
  }

  // optional uint32 start_trigger_offset = 2;
  if (has_start_trigger_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->start_trigger_offset(), output);
  }

  // optional uint32 stop_trigger_offset = 3;
  if (has_stop_trigger_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->stop_trigger_offset(), output);
  }

  // optional uint32 carton_velocity = 4;
  if (has_carton_velocity()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->carton_velocity(), output);
  }

  // optional uint32 carton_spacing = 5;
  if (has_carton_spacing()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->carton_spacing(), output);
  }

  // optional uint32 enter_trigger_offset = 6;
  if (has_enter_trigger_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->enter_trigger_offset(), output);
  }

  // optional uint32 exit_trigger_offset = 7;
  if (has_exit_trigger_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(7, this->exit_trigger_offset(), output);
  }

  // optional bool read_tid = 8 [default = true];
  if (has_read_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->read_tid(), output);
  }

}

int CartonContentsJob::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 job_id = 1 [default = 1];
    if (has_job_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->job_id());
    }

    // optional uint32 enter_trigger_offset = 6;
    if (has_enter_trigger_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->enter_trigger_offset());
    }

    // optional uint32 exit_trigger_offset = 7;
    if (has_exit_trigger_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->exit_trigger_offset());
    }

    // optional uint32 carton_velocity = 4;
    if (has_carton_velocity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->carton_velocity());
    }

    // optional bool read_tid = 8 [default = true];
    if (has_read_tid()) {
      total_size += 1 + 1;
    }

    // optional uint32 carton_spacing = 5;
    if (has_carton_spacing()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->carton_spacing());
    }

    // optional uint32 start_trigger_offset = 2;
    if (has_start_trigger_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->start_trigger_offset());
    }

    // optional uint32 stop_trigger_offset = 3;
    if (has_stop_trigger_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->stop_trigger_offset());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void CartonContentsJob::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const CartonContentsJob*>(&from));
}

void CartonContentsJob::MergeFrom(const CartonContentsJob& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_job_id()) {
      set_job_id(from.job_id());
    }
    if (from.has_enter_trigger_offset()) {
      set_enter_trigger_offset(from.enter_trigger_offset());
    }
    if (from.has_exit_trigger_offset()) {
      set_exit_trigger_offset(from.exit_trigger_offset());
    }
    if (from.has_carton_velocity()) {
      set_carton_velocity(from.carton_velocity());
    }
    if (from.has_read_tid()) {
      set_read_tid(from.read_tid());
    }
    if (from.has_carton_spacing()) {
      set_carton_spacing(from.carton_spacing());
    }
    if (from.has_start_trigger_offset()) {
      set_start_trigger_offset(from.start_trigger_offset());
    }
    if (from.has_stop_trigger_offset()) {
      set_stop_trigger_offset(from.stop_trigger_offset());
    }
  }
}

void CartonContentsJob::CopyFrom(const CartonContentsJob& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool CartonContentsJob::IsInitialized() const {

  return true;
}

void CartonContentsJob::Swap(CartonContentsJob* other) {
  if (other != this) {
    std::swap(job_id_, other->job_id_);
    std::swap(enter_trigger_offset_, other->enter_trigger_offset_);
    std::swap(exit_trigger_offset_, other->exit_trigger_offset_);
    std::swap(carton_velocity_, other->carton_velocity_);
    std::swap(read_tid_, other->read_tid_);
    std::swap(carton_spacing_, other->carton_spacing_);
    std::swap(start_trigger_offset_, other->start_trigger_offset_);
    std::swap(stop_trigger_offset_, other->stop_trigger_offset_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string CartonContentsJob::GetTypeName() const {
  return "Impinj.STP.CartonContentsJob";
}


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

#ifndef _MSC_VER
const int VoidTagConfig::kKillTagFieldNumber;
const int VoidTagConfig::kPermalockAllBanksFieldNumber;
#endif  // !_MSC_VER

VoidTagConfig::VoidTagConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void VoidTagConfig::InitAsDefaultInstance() {
}

VoidTagConfig::VoidTagConfig(const VoidTagConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void VoidTagConfig::SharedCtor() {
  _cached_size_ = 0;
  kill_tag_ = false;
  permalock_all_banks_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

VoidTagConfig::~VoidTagConfig() {
  SharedDtor();
}

void VoidTagConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void VoidTagConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const VoidTagConfig& VoidTagConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

VoidTagConfig* VoidTagConfig::default_instance_ = NULL;

VoidTagConfig* VoidTagConfig::New() const {
  return new VoidTagConfig;
}

void VoidTagConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    kill_tag_ = false;
    permalock_all_banks_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool VoidTagConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool kill_tag = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_tag_)));
          set_has_kill_tag();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_permalock_all_banks;
        break;
      }

      // optional bool permalock_all_banks = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_permalock_all_banks:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &permalock_all_banks_)));
          set_has_permalock_all_banks();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void VoidTagConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool kill_tag = 1;
  if (has_kill_tag()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->kill_tag(), output);
  }

  // optional bool permalock_all_banks = 2;
  if (has_permalock_all_banks()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->permalock_all_banks(), output);
  }

}

int VoidTagConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool kill_tag = 1;
    if (has_kill_tag()) {
      total_size += 1 + 1;
    }

    // optional bool permalock_all_banks = 2;
    if (has_permalock_all_banks()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void VoidTagConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const VoidTagConfig*>(&from));
}

void VoidTagConfig::MergeFrom(const VoidTagConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_kill_tag()) {
      set_kill_tag(from.kill_tag());
    }
    if (from.has_permalock_all_banks()) {
      set_permalock_all_banks(from.permalock_all_banks());
    }
  }
}

void VoidTagConfig::CopyFrom(const VoidTagConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool VoidTagConfig::IsInitialized() const {

  return true;
}

void VoidTagConfig::Swap(VoidTagConfig* other) {
  if (other != this) {
    std::swap(kill_tag_, other->kill_tag_);
    std::swap(permalock_all_banks_, other->permalock_all_banks_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string VoidTagConfig::GetTypeName() const {
  return "Impinj.STP.VoidTagConfig";
}


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

#ifndef _MSC_VER
const int Filter::kDataFieldNumber;
const int Filter::kMaskFieldNumber;
const int Filter::kWordOffsetFieldNumber;
#endif  // !_MSC_VER

Filter::Filter()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Filter::InitAsDefaultInstance() {
}

Filter::Filter(const Filter& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Filter::SharedCtor() {
  _cached_size_ = 0;
  data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  mask_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  word_offset_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Filter::~Filter() {
  SharedDtor();
}

void Filter::SharedDtor() {
  if (data_ != &::google::protobuf::internal::kEmptyString) {
    delete data_;
  }
  if (mask_ != &::google::protobuf::internal::kEmptyString) {
    delete mask_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void Filter::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Filter& Filter::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Filter* Filter::default_instance_ = NULL;

Filter* Filter::New() const {
  return new Filter;
}

void Filter::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_data()) {
      if (data_ != &::google::protobuf::internal::kEmptyString) {
        data_->clear();
      }
    }
    if (has_mask()) {
      if (mask_ != &::google::protobuf::internal::kEmptyString) {
        mask_->clear();
      }
    }
    word_offset_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Filter::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes data = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_mask;
        break;
      }

      // optional bytes mask = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_mask:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_mask()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_word_offset;
        break;
      }

      // optional uint32 word_offset = 3 [default = 0];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_word_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &word_offset_)));
          set_has_word_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Filter::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes data = 1;
  if (has_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->data(), output);
  }

  // optional bytes mask = 2;
  if (has_mask()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->mask(), output);
  }

  // optional uint32 word_offset = 3 [default = 0];
  if (has_word_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->word_offset(), output);
  }

}

int Filter::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes data = 1;
    if (has_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->data());
    }

    // optional bytes mask = 2;
    if (has_mask()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->mask());
    }

    // optional uint32 word_offset = 3 [default = 0];
    if (has_word_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->word_offset());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Filter::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Filter*>(&from));
}

void Filter::MergeFrom(const Filter& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_data()) {
      set_data(from.data());
    }
    if (from.has_mask()) {
      set_mask(from.mask());
    }
    if (from.has_word_offset()) {
      set_word_offset(from.word_offset());
    }
  }
}

void Filter::CopyFrom(const Filter& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Filter::IsInitialized() const {

  return true;
}

void Filter::Swap(Filter* other) {
  if (other != this) {
    std::swap(data_, other->data_);
    std::swap(mask_, other->mask_);
    std::swap(word_offset_, other->word_offset_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Filter::GetTypeName() const {
  return "Impinj.STP.Filter";
}


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

#ifndef _MSC_VER
const int SerializationJobFilters::kTidFiltersFieldNumber;
const int SerializationJobFilters::kEpcFiltersFieldNumber;
#endif  // !_MSC_VER

SerializationJobFilters::SerializationJobFilters()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SerializationJobFilters::InitAsDefaultInstance() {
}

SerializationJobFilters::SerializationJobFilters(const SerializationJobFilters& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SerializationJobFilters::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SerializationJobFilters::~SerializationJobFilters() {
  SharedDtor();
}

void SerializationJobFilters::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void SerializationJobFilters::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SerializationJobFilters& SerializationJobFilters::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SerializationJobFilters* SerializationJobFilters::default_instance_ = NULL;

SerializationJobFilters* SerializationJobFilters::New() const {
  return new SerializationJobFilters;
}

void SerializationJobFilters::Clear() {
  tid_filters_.Clear();
  epc_filters_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SerializationJobFilters::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .Impinj.STP.Filter tid_filters = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_tid_filters:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_tid_filters()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_tid_filters;
        if (input->ExpectTag(18)) goto parse_epc_filters;
        break;
      }

      // repeated .Impinj.STP.Filter epc_filters = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_epc_filters:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_epc_filters()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_epc_filters;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SerializationJobFilters::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .Impinj.STP.Filter tid_filters = 1;
  for (int i = 0; i < this->tid_filters_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->tid_filters(i), output);
  }

  // repeated .Impinj.STP.Filter epc_filters = 2;
  for (int i = 0; i < this->epc_filters_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->epc_filters(i), output);
  }

}

int SerializationJobFilters::ByteSize() const {
  int total_size = 0;

  // repeated .Impinj.STP.Filter tid_filters = 1;
  total_size += 1 * this->tid_filters_size();
  for (int i = 0; i < this->tid_filters_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->tid_filters(i));
  }

  // repeated .Impinj.STP.Filter epc_filters = 2;
  total_size += 1 * this->epc_filters_size();
  for (int i = 0; i < this->epc_filters_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->epc_filters(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SerializationJobFilters::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SerializationJobFilters*>(&from));
}

void SerializationJobFilters::MergeFrom(const SerializationJobFilters& from) {
  GOOGLE_CHECK_NE(&from, this);
  tid_filters_.MergeFrom(from.tid_filters_);
  epc_filters_.MergeFrom(from.epc_filters_);
}

void SerializationJobFilters::CopyFrom(const SerializationJobFilters& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SerializationJobFilters::IsInitialized() const {

  return true;
}

void SerializationJobFilters::Swap(SerializationJobFilters* other) {
  if (other != this) {
    tid_filters_.Swap(&other->tid_filters_);
    epc_filters_.Swap(&other->epc_filters_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SerializationJobFilters::GetTypeName() const {
  return "Impinj.STP.SerializationJobFilters";
}


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

#ifndef _MSC_VER
const int SerializationJob::kJobIdFieldNumber;
const int SerializationJob::kJobTypeFieldNumber;
const int SerializationJob::kJobCompletionCriteriaFieldNumber;
const int SerializationJob::kOperationQuantityFieldNumber;
const int SerializationJob::kEPCMemoryFieldNumber;
const int SerializationJob::kTIDMemoryFieldNumber;
const int SerializationJob::kUserMemoryFieldNumber;
const int SerializationJob::kSecurePasswordFieldNumber;
const int SerializationJob::kAccessPasswordFieldNumber;
const int SerializationJob::kKillPasswordFieldNumber;
const int SerializationJob::kLockConfigFieldNumber;
const int SerializationJob::kBlockpermalockConfigFieldNumber;
const int SerializationJob::kKillTagFieldNumber;
const int SerializationJob::kMonzaR6PFeatureConfigFieldNumber;
const int SerializationJob::kMonzaS6CFeatureConfigFieldNumber;
const int SerializationJob::kMonzaR6FeatureConfigFieldNumber;
const int SerializationJob::kMonzaR6AFeatureConfigFieldNumber;
const int SerializationJob::kTIDTableSizeFieldNumber;
const int SerializationJob::kTIDTableEntriesFieldNumber;
const int SerializationJob::kOrderedListEntriesFieldNumber;
const int SerializationJob::kVoidTagConfigFieldNumber;
const int SerializationJob::kFiltersFieldNumber;
#endif  // !_MSC_VER

SerializationJob::SerializationJob()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SerializationJob::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  epc_memory_ = const_cast< ::Impinj::STP::EPCMemory*>(
      ::Impinj::STP::EPCMemory::internal_default_instance());
#else
  epc_memory_ = const_cast< ::Impinj::STP::EPCMemory*>(&::Impinj::STP::EPCMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  tid_memory_ = const_cast< ::Impinj::STP::TIDMemory*>(
      ::Impinj::STP::TIDMemory::internal_default_instance());
#else
  tid_memory_ = const_cast< ::Impinj::STP::TIDMemory*>(&::Impinj::STP::TIDMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(
      ::Impinj::STP::UserMemory::internal_default_instance());
#else
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(&::Impinj::STP::UserMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  secure_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  secure_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  access_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  access_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  kill_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  kill_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  lock_config_ = const_cast< ::Impinj::STP::LockConfig*>(
      ::Impinj::STP::LockConfig::internal_default_instance());
#else
  lock_config_ = const_cast< ::Impinj::STP::LockConfig*>(&::Impinj::STP::LockConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  blockpermalock_config_ = const_cast< ::Impinj::STP::BlockPermalockConfig*>(
      ::Impinj::STP::BlockPermalockConfig::internal_default_instance());
#else
  blockpermalock_config_ = const_cast< ::Impinj::STP::BlockPermalockConfig*>(&::Impinj::STP::BlockPermalockConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6p_feature_config_ = const_cast< ::Impinj::STP::MonzaR6PFeatureConfig*>(
      ::Impinj::STP::MonzaR6PFeatureConfig::internal_default_instance());
#else
  monza_r6p_feature_config_ = const_cast< ::Impinj::STP::MonzaR6PFeatureConfig*>(&::Impinj::STP::MonzaR6PFeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_s6c_feature_config_ = const_cast< ::Impinj::STP::MonzaS6CFeatureConfig*>(
      ::Impinj::STP::MonzaS6CFeatureConfig::internal_default_instance());
#else
  monza_s6c_feature_config_ = const_cast< ::Impinj::STP::MonzaS6CFeatureConfig*>(&::Impinj::STP::MonzaS6CFeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6_feature_config_ = const_cast< ::Impinj::STP::MonzaR6FeatureConfig*>(
      ::Impinj::STP::MonzaR6FeatureConfig::internal_default_instance());
#else
  monza_r6_feature_config_ = const_cast< ::Impinj::STP::MonzaR6FeatureConfig*>(&::Impinj::STP::MonzaR6FeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6a_feature_config_ = const_cast< ::Impinj::STP::MonzaR6AFeatureConfig*>(
      ::Impinj::STP::MonzaR6AFeatureConfig::internal_default_instance());
#else
  monza_r6a_feature_config_ = const_cast< ::Impinj::STP::MonzaR6AFeatureConfig*>(&::Impinj::STP::MonzaR6AFeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  void_tag_config_ = const_cast< ::Impinj::STP::VoidTagConfig*>(
      ::Impinj::STP::VoidTagConfig::internal_default_instance());
#else
  void_tag_config_ = const_cast< ::Impinj::STP::VoidTagConfig*>(&::Impinj::STP::VoidTagConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  filters_ = const_cast< ::Impinj::STP::SerializationJobFilters*>(
      ::Impinj::STP::SerializationJobFilters::internal_default_instance());
#else
  filters_ = const_cast< ::Impinj::STP::SerializationJobFilters*>(&::Impinj::STP::SerializationJobFilters::default_instance());
#endif
}

SerializationJob::SerializationJob(const SerializationJob& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SerializationJob::SharedCtor() {
  _cached_size_ = 0;
  job_id_ = 0u;
  job_type_ = 1;
  job_completion_criteria_ = 4;
  operation_quantity_ = 0u;
  epc_memory_ = NULL;
  tid_memory_ = NULL;
  user_memory_ = NULL;
  secure_password_ = NULL;
  access_password_ = NULL;
  kill_password_ = NULL;
  lock_config_ = NULL;
  blockpermalock_config_ = NULL;
  kill_tag_ = false;
  monza_r6p_feature_config_ = NULL;
  monza_s6c_feature_config_ = NULL;
  monza_r6_feature_config_ = NULL;
  monza_r6a_feature_config_ = NULL;
  tid_table_size_ = 100u;
  void_tag_config_ = NULL;
  filters_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SerializationJob::~SerializationJob() {
  SharedDtor();
}

void SerializationJob::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete epc_memory_;
    delete tid_memory_;
    delete user_memory_;
    delete secure_password_;
    delete access_password_;
    delete kill_password_;
    delete lock_config_;
    delete blockpermalock_config_;
    delete monza_r6p_feature_config_;
    delete monza_s6c_feature_config_;
    delete monza_r6_feature_config_;
    delete monza_r6a_feature_config_;
    delete void_tag_config_;
    delete filters_;
  }
}

void SerializationJob::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SerializationJob& SerializationJob::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SerializationJob* SerializationJob::default_instance_ = NULL;

SerializationJob* SerializationJob::New() const {
  return new SerializationJob;
}

void SerializationJob::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    job_id_ = 0u;
    job_type_ = 1;
    job_completion_criteria_ = 4;
    operation_quantity_ = 0u;
    if (has_epc_memory()) {
      if (epc_memory_ != NULL) epc_memory_->::Impinj::STP::EPCMemory::Clear();
    }
    if (has_tid_memory()) {
      if (tid_memory_ != NULL) tid_memory_->::Impinj::STP::TIDMemory::Clear();
    }
    if (has_user_memory()) {
      if (user_memory_ != NULL) user_memory_->::Impinj::STP::UserMemory::Clear();
    }
    if (has_secure_password()) {
      if (secure_password_ != NULL) secure_password_->::Impinj::STP::Password::Clear();
    }
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (has_access_password()) {
      if (access_password_ != NULL) access_password_->::Impinj::STP::Password::Clear();
    }
    if (has_kill_password()) {
      if (kill_password_ != NULL) kill_password_->::Impinj::STP::Password::Clear();
    }
    if (has_lock_config()) {
      if (lock_config_ != NULL) lock_config_->::Impinj::STP::LockConfig::Clear();
    }
    if (has_blockpermalock_config()) {
      if (blockpermalock_config_ != NULL) blockpermalock_config_->::Impinj::STP::BlockPermalockConfig::Clear();
    }
    kill_tag_ = false;
    if (has_monza_r6p_feature_config()) {
      if (monza_r6p_feature_config_ != NULL) monza_r6p_feature_config_->::Impinj::STP::MonzaR6PFeatureConfig::Clear();
    }
    if (has_monza_s6c_feature_config()) {
      if (monza_s6c_feature_config_ != NULL) monza_s6c_feature_config_->::Impinj::STP::MonzaS6CFeatureConfig::Clear();
    }
    if (has_monza_r6_feature_config()) {
      if (monza_r6_feature_config_ != NULL) monza_r6_feature_config_->::Impinj::STP::MonzaR6FeatureConfig::Clear();
    }
  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (has_monza_r6a_feature_config()) {
      if (monza_r6a_feature_config_ != NULL) monza_r6a_feature_config_->::Impinj::STP::MonzaR6AFeatureConfig::Clear();
    }
    tid_table_size_ = 100u;
    if (has_void_tag_config()) {
      if (void_tag_config_ != NULL) void_tag_config_->::Impinj::STP::VoidTagConfig::Clear();
    }
    if (has_filters()) {
      if (filters_ != NULL) filters_->::Impinj::STP::SerializationJobFilters::Clear();
    }
  }
  tid_table_entries_.Clear();
  ordered_list_entries_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SerializationJob::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required uint32 job_id = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &job_id_)));
          set_has_job_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_job_type;
        break;
      }

      // required .Impinj.STP.SerializationJobType job_type = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_job_type:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::SerializationJobType_IsValid(value)) {
            set_job_type(static_cast< ::Impinj::STP::SerializationJobType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_job_completion_criteria;
        break;
      }

      // optional .Impinj.STP.SerializationJobCompletionCriteria job_completion_criteria = 3 [default = SERIALIZATION_JOB_COMPLETION_CRITERIA_NONE];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_job_completion_criteria:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::SerializationJobCompletionCriteria_IsValid(value)) {
            set_job_completion_criteria(static_cast< ::Impinj::STP::SerializationJobCompletionCriteria >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_operation_quantity;
        break;
      }

      // optional uint32 operation_quantity = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_operation_quantity:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &operation_quantity_)));
          set_has_operation_quantity();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_EPC_memory;
        break;
      }

      // optional .Impinj.STP.EPCMemory EPC_memory = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_EPC_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_epc_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_TID_memory;
        break;
      }

      // optional .Impinj.STP.TIDMemory TID_memory = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_TID_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_tid_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_user_memory;
        break;
      }

      // optional .Impinj.STP.UserMemory user_memory = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_user_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_user_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_secure_password;
        break;
      }

      // optional .Impinj.STP.Password secure_password = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_secure_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_secure_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(74)) goto parse_access_password;
        break;
      }

      // optional .Impinj.STP.Password access_password = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_access_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_access_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(82)) goto parse_kill_password;
        break;
      }

      // optional .Impinj.STP.Password kill_password = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_kill_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_kill_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(90)) goto parse_lock_config;
        break;
      }

      // optional .Impinj.STP.LockConfig lock_config = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_lock_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_lock_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(98)) goto parse_blockpermalock_config;
        break;
      }

      // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_blockpermalock_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_blockpermalock_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(114)) goto parse_TID_table_entries;
        break;
      }

      // repeated .Impinj.STP.TIDTableEntry TID_table_entries = 14;
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_TID_table_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_tid_table_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(114)) goto parse_TID_table_entries;
        if (input->ExpectTag(122)) goto parse_ordered_list_entries;
        break;
      }

      // repeated .Impinj.STP.OrderedListEntry ordered_list_entries = 15;
      case 15: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_ordered_list_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_ordered_list_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(122)) goto parse_ordered_list_entries;
        if (input->ExpectTag(128)) goto parse_kill_tag;
        break;
      }

      // optional bool kill_tag = 16;
      case 16: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_kill_tag:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_tag_)));
          set_has_kill_tag();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(136)) goto parse_TID_table_size;
        break;
      }

      // optional uint32 TID_table_size = 17 [default = 100];
      case 17: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_TID_table_size:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tid_table_size_)));
          set_has_tid_table_size();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(146)) goto parse_void_tag_config;
        break;
      }

      // optional .Impinj.STP.VoidTagConfig void_tag_config = 18;
      case 18: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_void_tag_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_void_tag_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(154)) goto parse_filters;
        break;
      }

      // optional .Impinj.STP.SerializationJobFilters filters = 19;
      case 19: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_filters:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_filters()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(162)) goto parse_monza_r6p_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 20;
      case 20: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6p_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6p_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(170)) goto parse_monza_s6c_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 21;
      case 21: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_s6c_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_s6c_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(178)) goto parse_monza_r6_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 22;
      case 22: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(186)) goto parse_monza_r6a_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 23;
      case 23: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6a_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6a_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SerializationJob::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required uint32 job_id = 1;
  if (has_job_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->job_id(), output);
  }

  // required .Impinj.STP.SerializationJobType job_type = 2;
  if (has_job_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->job_type(), output);
  }

  // optional .Impinj.STP.SerializationJobCompletionCriteria job_completion_criteria = 3 [default = SERIALIZATION_JOB_COMPLETION_CRITERIA_NONE];
  if (has_job_completion_criteria()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->job_completion_criteria(), output);
  }

  // optional uint32 operation_quantity = 4;
  if (has_operation_quantity()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->operation_quantity(), output);
  }

  // optional .Impinj.STP.EPCMemory EPC_memory = 5;
  if (has_epc_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->epc_memory(), output);
  }

  // optional .Impinj.STP.TIDMemory TID_memory = 6;
  if (has_tid_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->tid_memory(), output);
  }

  // optional .Impinj.STP.UserMemory user_memory = 7;
  if (has_user_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      7, this->user_memory(), output);
  }

  // optional .Impinj.STP.Password secure_password = 8;
  if (has_secure_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->secure_password(), output);
  }

  // optional .Impinj.STP.Password access_password = 9;
  if (has_access_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      9, this->access_password(), output);
  }

  // optional .Impinj.STP.Password kill_password = 10;
  if (has_kill_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      10, this->kill_password(), output);
  }

  // optional .Impinj.STP.LockConfig lock_config = 11;
  if (has_lock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      11, this->lock_config(), output);
  }

  // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 12;
  if (has_blockpermalock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12, this->blockpermalock_config(), output);
  }

  // repeated .Impinj.STP.TIDTableEntry TID_table_entries = 14;
  for (int i = 0; i < this->tid_table_entries_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      14, this->tid_table_entries(i), output);
  }

  // repeated .Impinj.STP.OrderedListEntry ordered_list_entries = 15;
  for (int i = 0; i < this->ordered_list_entries_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      15, this->ordered_list_entries(i), output);
  }

  // optional bool kill_tag = 16;
  if (has_kill_tag()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->kill_tag(), output);
  }

  // optional uint32 TID_table_size = 17 [default = 100];
  if (has_tid_table_size()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(17, this->tid_table_size(), output);
  }

  // optional .Impinj.STP.VoidTagConfig void_tag_config = 18;
  if (has_void_tag_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      18, this->void_tag_config(), output);
  }

  // optional .Impinj.STP.SerializationJobFilters filters = 19;
  if (has_filters()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      19, this->filters(), output);
  }

  // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 20;
  if (has_monza_r6p_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      20, this->monza_r6p_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 21;
  if (has_monza_s6c_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      21, this->monza_s6c_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 22;
  if (has_monza_r6_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      22, this->monza_r6_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 23;
  if (has_monza_r6a_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      23, this->monza_r6a_feature_config(), output);
  }

}

int SerializationJob::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required uint32 job_id = 1;
    if (has_job_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->job_id());
    }

    // required .Impinj.STP.SerializationJobType job_type = 2;
    if (has_job_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->job_type());
    }

    // optional .Impinj.STP.SerializationJobCompletionCriteria job_completion_criteria = 3 [default = SERIALIZATION_JOB_COMPLETION_CRITERIA_NONE];
    if (has_job_completion_criteria()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->job_completion_criteria());
    }

    // optional uint32 operation_quantity = 4;
    if (has_operation_quantity()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->operation_quantity());
    }

    // optional .Impinj.STP.EPCMemory EPC_memory = 5;
    if (has_epc_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->epc_memory());
    }

    // optional .Impinj.STP.TIDMemory TID_memory = 6;
    if (has_tid_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->tid_memory());
    }

    // optional .Impinj.STP.UserMemory user_memory = 7;
    if (has_user_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->user_memory());
    }

    // optional .Impinj.STP.Password secure_password = 8;
    if (has_secure_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->secure_password());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional .Impinj.STP.Password access_password = 9;
    if (has_access_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->access_password());
    }

    // optional .Impinj.STP.Password kill_password = 10;
    if (has_kill_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->kill_password());
    }

    // optional .Impinj.STP.LockConfig lock_config = 11;
    if (has_lock_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->lock_config());
    }

    // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 12;
    if (has_blockpermalock_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->blockpermalock_config());
    }

    // optional bool kill_tag = 16;
    if (has_kill_tag()) {
      total_size += 2 + 1;
    }

    // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 20;
    if (has_monza_r6p_feature_config()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6p_feature_config());
    }

    // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 21;
    if (has_monza_s6c_feature_config()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_s6c_feature_config());
    }

    // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 22;
    if (has_monza_r6_feature_config()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6_feature_config());
    }

  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 23;
    if (has_monza_r6a_feature_config()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6a_feature_config());
    }

    // optional uint32 TID_table_size = 17 [default = 100];
    if (has_tid_table_size()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tid_table_size());
    }

    // optional .Impinj.STP.VoidTagConfig void_tag_config = 18;
    if (has_void_tag_config()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->void_tag_config());
    }

    // optional .Impinj.STP.SerializationJobFilters filters = 19;
    if (has_filters()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->filters());
    }

  }
  // repeated .Impinj.STP.TIDTableEntry TID_table_entries = 14;
  total_size += 1 * this->tid_table_entries_size();
  for (int i = 0; i < this->tid_table_entries_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->tid_table_entries(i));
  }

  // repeated .Impinj.STP.OrderedListEntry ordered_list_entries = 15;
  total_size += 1 * this->ordered_list_entries_size();
  for (int i = 0; i < this->ordered_list_entries_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->ordered_list_entries(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SerializationJob::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SerializationJob*>(&from));
}

void SerializationJob::MergeFrom(const SerializationJob& from) {
  GOOGLE_CHECK_NE(&from, this);
  tid_table_entries_.MergeFrom(from.tid_table_entries_);
  ordered_list_entries_.MergeFrom(from.ordered_list_entries_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_job_id()) {
      set_job_id(from.job_id());
    }
    if (from.has_job_type()) {
      set_job_type(from.job_type());
    }
    if (from.has_job_completion_criteria()) {
      set_job_completion_criteria(from.job_completion_criteria());
    }
    if (from.has_operation_quantity()) {
      set_operation_quantity(from.operation_quantity());
    }
    if (from.has_epc_memory()) {
      mutable_epc_memory()->::Impinj::STP::EPCMemory::MergeFrom(from.epc_memory());
    }
    if (from.has_tid_memory()) {
      mutable_tid_memory()->::Impinj::STP::TIDMemory::MergeFrom(from.tid_memory());
    }
    if (from.has_user_memory()) {
      mutable_user_memory()->::Impinj::STP::UserMemory::MergeFrom(from.user_memory());
    }
    if (from.has_secure_password()) {
      mutable_secure_password()->::Impinj::STP::Password::MergeFrom(from.secure_password());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_access_password()) {
      mutable_access_password()->::Impinj::STP::Password::MergeFrom(from.access_password());
    }
    if (from.has_kill_password()) {
      mutable_kill_password()->::Impinj::STP::Password::MergeFrom(from.kill_password());
    }
    if (from.has_lock_config()) {
      mutable_lock_config()->::Impinj::STP::LockConfig::MergeFrom(from.lock_config());
    }
    if (from.has_blockpermalock_config()) {
      mutable_blockpermalock_config()->::Impinj::STP::BlockPermalockConfig::MergeFrom(from.blockpermalock_config());
    }
    if (from.has_kill_tag()) {
      set_kill_tag(from.kill_tag());
    }
    if (from.has_monza_r6p_feature_config()) {
      mutable_monza_r6p_feature_config()->::Impinj::STP::MonzaR6PFeatureConfig::MergeFrom(from.monza_r6p_feature_config());
    }
    if (from.has_monza_s6c_feature_config()) {
      mutable_monza_s6c_feature_config()->::Impinj::STP::MonzaS6CFeatureConfig::MergeFrom(from.monza_s6c_feature_config());
    }
    if (from.has_monza_r6_feature_config()) {
      mutable_monza_r6_feature_config()->::Impinj::STP::MonzaR6FeatureConfig::MergeFrom(from.monza_r6_feature_config());
    }
  }
  if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (from.has_monza_r6a_feature_config()) {
      mutable_monza_r6a_feature_config()->::Impinj::STP::MonzaR6AFeatureConfig::MergeFrom(from.monza_r6a_feature_config());
    }
    if (from.has_tid_table_size()) {
      set_tid_table_size(from.tid_table_size());
    }
    if (from.has_void_tag_config()) {
      mutable_void_tag_config()->::Impinj::STP::VoidTagConfig::MergeFrom(from.void_tag_config());
    }
    if (from.has_filters()) {
      mutable_filters()->::Impinj::STP::SerializationJobFilters::MergeFrom(from.filters());
    }
  }
}

void SerializationJob::CopyFrom(const SerializationJob& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SerializationJob::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;

  if (has_epc_memory()) {
    if (!this->epc_memory().IsInitialized()) return false;
  }
  if (has_tid_memory()) {
    if (!this->tid_memory().IsInitialized()) return false;
  }
  if (has_secure_password()) {
    if (!this->secure_password().IsInitialized()) return false;
  }
  if (has_access_password()) {
    if (!this->access_password().IsInitialized()) return false;
  }
  if (has_kill_password()) {
    if (!this->kill_password().IsInitialized()) return false;
  }
  if (has_lock_config()) {
    if (!this->lock_config().IsInitialized()) return false;
  }
  if (has_blockpermalock_config()) {
    if (!this->blockpermalock_config().IsInitialized()) return false;
  }
  for (int i = 0; i < tid_table_entries_size(); i++) {
    if (!this->tid_table_entries(i).IsInitialized()) return false;
  }
  for (int i = 0; i < ordered_list_entries_size(); i++) {
    if (!this->ordered_list_entries(i).IsInitialized()) return false;
  }
  return true;
}

void SerializationJob::Swap(SerializationJob* other) {
  if (other != this) {
    std::swap(job_id_, other->job_id_);
    std::swap(job_type_, other->job_type_);
    std::swap(job_completion_criteria_, other->job_completion_criteria_);
    std::swap(operation_quantity_, other->operation_quantity_);
    std::swap(epc_memory_, other->epc_memory_);
    std::swap(tid_memory_, other->tid_memory_);
    std::swap(user_memory_, other->user_memory_);
    std::swap(secure_password_, other->secure_password_);
    std::swap(access_password_, other->access_password_);
    std::swap(kill_password_, other->kill_password_);
    std::swap(lock_config_, other->lock_config_);
    std::swap(blockpermalock_config_, other->blockpermalock_config_);
    std::swap(kill_tag_, other->kill_tag_);
    std::swap(monza_r6p_feature_config_, other->monza_r6p_feature_config_);
    std::swap(monza_s6c_feature_config_, other->monza_s6c_feature_config_);
    std::swap(monza_r6_feature_config_, other->monza_r6_feature_config_);
    std::swap(monza_r6a_feature_config_, other->monza_r6a_feature_config_);
    std::swap(tid_table_size_, other->tid_table_size_);
    tid_table_entries_.Swap(&other->tid_table_entries_);
    ordered_list_entries_.Swap(&other->ordered_list_entries_);
    std::swap(void_tag_config_, other->void_tag_config_);
    std::swap(filters_, other->filters_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SerializationJob::GetTypeName() const {
  return "Impinj.STP.SerializationJob";
}


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

#ifndef _MSC_VER
const int PCWord::kDataFieldNumber;
const int PCWord::kMaskFieldNumber;
#endif  // !_MSC_VER

PCWord::PCWord()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void PCWord::InitAsDefaultInstance() {
}

PCWord::PCWord(const PCWord& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void PCWord::SharedCtor() {
  _cached_size_ = 0;
  data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  mask_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

PCWord::~PCWord() {
  SharedDtor();
}

void PCWord::SharedDtor() {
  if (data_ != &::google::protobuf::internal::kEmptyString) {
    delete data_;
  }
  if (mask_ != &::google::protobuf::internal::kEmptyString) {
    delete mask_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void PCWord::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const PCWord& PCWord::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

PCWord* PCWord::default_instance_ = NULL;

PCWord* PCWord::New() const {
  return new PCWord;
}

void PCWord::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_data()) {
      if (data_ != &::google::protobuf::internal::kEmptyString) {
        data_->clear();
      }
    }
    if (has_mask()) {
      if (mask_ != &::google::protobuf::internal::kEmptyString) {
        mask_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool PCWord::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes data = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_mask;
        break;
      }

      // optional bytes mask = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_mask:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_mask()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void PCWord::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes data = 1;
  if (has_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->data(), output);
  }

  // optional bytes mask = 2;
  if (has_mask()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->mask(), output);
  }

}

int PCWord::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes data = 1;
    if (has_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->data());
    }

    // optional bytes mask = 2;
    if (has_mask()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->mask());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void PCWord::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const PCWord*>(&from));
}

void PCWord::MergeFrom(const PCWord& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_data()) {
      set_data(from.data());
    }
    if (from.has_mask()) {
      set_mask(from.mask());
    }
  }
}

void PCWord::CopyFrom(const PCWord& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PCWord::IsInitialized() const {

  return true;
}

void PCWord::Swap(PCWord* other) {
  if (other != this) {
    std::swap(data_, other->data_);
    std::swap(mask_, other->mask_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string PCWord::GetTypeName() const {
  return "Impinj.STP.PCWord";
}


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

#ifndef _MSC_VER
const int EPCMemory::kDataFieldNumber;
const int EPCMemory::kMaskFieldNumber;
const int EPCMemory::kSerializationFieldNumber;
const int EPCMemory::kPcWordFieldNumber;
#endif  // !_MSC_VER

EPCMemory::EPCMemory()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void EPCMemory::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  serialization_ = const_cast< ::Impinj::STP::Serialization*>(
      ::Impinj::STP::Serialization::internal_default_instance());
#else
  serialization_ = const_cast< ::Impinj::STP::Serialization*>(&::Impinj::STP::Serialization::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  pc_word_ = const_cast< ::Impinj::STP::PCWord*>(
      ::Impinj::STP::PCWord::internal_default_instance());
#else
  pc_word_ = const_cast< ::Impinj::STP::PCWord*>(&::Impinj::STP::PCWord::default_instance());
#endif
}

EPCMemory::EPCMemory(const EPCMemory& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void EPCMemory::SharedCtor() {
  _cached_size_ = 0;
  data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  mask_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  serialization_ = NULL;
  pc_word_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

EPCMemory::~EPCMemory() {
  SharedDtor();
}

void EPCMemory::SharedDtor() {
  if (data_ != &::google::protobuf::internal::kEmptyString) {
    delete data_;
  }
  if (mask_ != &::google::protobuf::internal::kEmptyString) {
    delete mask_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete serialization_;
    delete pc_word_;
  }
}

void EPCMemory::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const EPCMemory& EPCMemory::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

EPCMemory* EPCMemory::default_instance_ = NULL;

EPCMemory* EPCMemory::New() const {
  return new EPCMemory;
}

void EPCMemory::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_data()) {
      if (data_ != &::google::protobuf::internal::kEmptyString) {
        data_->clear();
      }
    }
    if (has_mask()) {
      if (mask_ != &::google::protobuf::internal::kEmptyString) {
        mask_->clear();
      }
    }
    if (has_serialization()) {
      if (serialization_ != NULL) serialization_->::Impinj::STP::Serialization::Clear();
    }
    if (has_pc_word()) {
      if (pc_word_ != NULL) pc_word_->::Impinj::STP::PCWord::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool EPCMemory::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes data = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_mask;
        break;
      }

      // optional bytes mask = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_mask:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_mask()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_serialization;
        break;
      }

      // optional .Impinj.STP.Serialization serialization = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_serialization:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_serialization()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_pc_word;
        break;
      }

      // optional .Impinj.STP.PCWord pc_word = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_pc_word:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_pc_word()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void EPCMemory::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes data = 1;
  if (has_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->data(), output);
  }

  // optional bytes mask = 2;
  if (has_mask()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->mask(), output);
  }

  // optional .Impinj.STP.Serialization serialization = 3;
  if (has_serialization()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->serialization(), output);
  }

  // optional .Impinj.STP.PCWord pc_word = 4;
  if (has_pc_word()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->pc_word(), output);
  }

}

int EPCMemory::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes data = 1;
    if (has_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->data());
    }

    // optional bytes mask = 2;
    if (has_mask()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->mask());
    }

    // optional .Impinj.STP.Serialization serialization = 3;
    if (has_serialization()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->serialization());
    }

    // optional .Impinj.STP.PCWord pc_word = 4;
    if (has_pc_word()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->pc_word());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void EPCMemory::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const EPCMemory*>(&from));
}

void EPCMemory::MergeFrom(const EPCMemory& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_data()) {
      set_data(from.data());
    }
    if (from.has_mask()) {
      set_mask(from.mask());
    }
    if (from.has_serialization()) {
      mutable_serialization()->::Impinj::STP::Serialization::MergeFrom(from.serialization());
    }
    if (from.has_pc_word()) {
      mutable_pc_word()->::Impinj::STP::PCWord::MergeFrom(from.pc_word());
    }
  }
}

void EPCMemory::CopyFrom(const EPCMemory& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool EPCMemory::IsInitialized() const {

  if (has_serialization()) {
    if (!this->serialization().IsInitialized()) return false;
  }
  return true;
}

void EPCMemory::Swap(EPCMemory* other) {
  if (other != this) {
    std::swap(data_, other->data_);
    std::swap(mask_, other->mask_);
    std::swap(serialization_, other->serialization_);
    std::swap(pc_word_, other->pc_word_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string EPCMemory::GetTypeName() const {
  return "Impinj.STP.EPCMemory";
}


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

#ifndef _MSC_VER
const int TIDMemory::kDataFieldNumber;
const int TIDMemory::kWordOffsetFieldNumber;
#endif  // !_MSC_VER

TIDMemory::TIDMemory()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TIDMemory::InitAsDefaultInstance() {
}

TIDMemory::TIDMemory(const TIDMemory& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TIDMemory::SharedCtor() {
  _cached_size_ = 0;
  data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  word_offset_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TIDMemory::~TIDMemory() {
  SharedDtor();
}

void TIDMemory::SharedDtor() {
  if (data_ != &::google::protobuf::internal::kEmptyString) {
    delete data_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void TIDMemory::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TIDMemory& TIDMemory::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TIDMemory* TIDMemory::default_instance_ = NULL;

TIDMemory* TIDMemory::New() const {
  return new TIDMemory;
}

void TIDMemory::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_data()) {
      if (data_ != &::google::protobuf::internal::kEmptyString) {
        data_->clear();
      }
    }
    word_offset_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TIDMemory::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bytes data = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_word_offset;
        break;
      }

      // optional uint32 word_offset = 3 [default = 0];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_word_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &word_offset_)));
          set_has_word_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TIDMemory::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bytes data = 1;
  if (has_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->data(), output);
  }

  // optional uint32 word_offset = 3 [default = 0];
  if (has_word_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->word_offset(), output);
  }

}

int TIDMemory::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bytes data = 1;
    if (has_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->data());
    }

    // optional uint32 word_offset = 3 [default = 0];
    if (has_word_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->word_offset());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TIDMemory::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TIDMemory*>(&from));
}

void TIDMemory::MergeFrom(const TIDMemory& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_data()) {
      set_data(from.data());
    }
    if (from.has_word_offset()) {
      set_word_offset(from.word_offset());
    }
  }
}

void TIDMemory::CopyFrom(const TIDMemory& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TIDMemory::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void TIDMemory::Swap(TIDMemory* other) {
  if (other != this) {
    std::swap(data_, other->data_);
    std::swap(word_offset_, other->word_offset_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TIDMemory::GetTypeName() const {
  return "Impinj.STP.TIDMemory";
}


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

#ifndef _MSC_VER
const int Serialization::kSerializationBitsFieldNumber;
const int Serialization::kMonzaSelfSerializationFieldNumber;
const int Serialization::kSerialNumberRangeFieldNumber;
#endif  // !_MSC_VER

Serialization::Serialization()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Serialization::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_self_serialization_ = const_cast< ::Impinj::STP::MonzaSelfSerialization*>(
      ::Impinj::STP::MonzaSelfSerialization::internal_default_instance());
#else
  monza_self_serialization_ = const_cast< ::Impinj::STP::MonzaSelfSerialization*>(&::Impinj::STP::MonzaSelfSerialization::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  serial_number_range_ = const_cast< ::Impinj::STP::SerialNumberRange*>(
      ::Impinj::STP::SerialNumberRange::internal_default_instance());
#else
  serial_number_range_ = const_cast< ::Impinj::STP::SerialNumberRange*>(&::Impinj::STP::SerialNumberRange::default_instance());
#endif
}

Serialization::Serialization(const Serialization& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Serialization::SharedCtor() {
  _cached_size_ = 0;
  serialization_bits_ = 0u;
  monza_self_serialization_ = NULL;
  serial_number_range_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Serialization::~Serialization() {
  SharedDtor();
}

void Serialization::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete monza_self_serialization_;
    delete serial_number_range_;
  }
}

void Serialization::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Serialization& Serialization::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Serialization* Serialization::default_instance_ = NULL;

Serialization* Serialization::New() const {
  return new Serialization;
}

void Serialization::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    serialization_bits_ = 0u;
    if (has_monza_self_serialization()) {
      if (monza_self_serialization_ != NULL) monza_self_serialization_->::Impinj::STP::MonzaSelfSerialization::Clear();
    }
    if (has_serial_number_range()) {
      if (serial_number_range_ != NULL) serial_number_range_->::Impinj::STP::SerialNumberRange::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Serialization::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required uint32 serialization_bits = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &serialization_bits_)));
          set_has_serialization_bits();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_monza_self_serialization;
        break;
      }

      // optional .Impinj.STP.MonzaSelfSerialization monza_self_serialization = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_self_serialization:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_self_serialization()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_serial_number_range;
        break;
      }

      // optional .Impinj.STP.SerialNumberRange serial_number_range = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_serial_number_range:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_serial_number_range()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Serialization::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required uint32 serialization_bits = 1;
  if (has_serialization_bits()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->serialization_bits(), output);
  }

  // optional .Impinj.STP.MonzaSelfSerialization monza_self_serialization = 6;
  if (has_monza_self_serialization()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->monza_self_serialization(), output);
  }

  // optional .Impinj.STP.SerialNumberRange serial_number_range = 7;
  if (has_serial_number_range()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      7, this->serial_number_range(), output);
  }

}

int Serialization::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required uint32 serialization_bits = 1;
    if (has_serialization_bits()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->serialization_bits());
    }

    // optional .Impinj.STP.MonzaSelfSerialization monza_self_serialization = 6;
    if (has_monza_self_serialization()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_self_serialization());
    }

    // optional .Impinj.STP.SerialNumberRange serial_number_range = 7;
    if (has_serial_number_range()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->serial_number_range());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Serialization::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Serialization*>(&from));
}

void Serialization::MergeFrom(const Serialization& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_serialization_bits()) {
      set_serialization_bits(from.serialization_bits());
    }
    if (from.has_monza_self_serialization()) {
      mutable_monza_self_serialization()->::Impinj::STP::MonzaSelfSerialization::MergeFrom(from.monza_self_serialization());
    }
    if (from.has_serial_number_range()) {
      mutable_serial_number_range()->::Impinj::STP::SerialNumberRange::MergeFrom(from.serial_number_range());
    }
  }
}

void Serialization::CopyFrom(const Serialization& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Serialization::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void Serialization::Swap(Serialization* other) {
  if (other != this) {
    std::swap(serialization_bits_, other->serialization_bits_);
    std::swap(monza_self_serialization_, other->monza_self_serialization_);
    std::swap(serial_number_range_, other->serial_number_range_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Serialization::GetTypeName() const {
  return "Impinj.STP.Serialization";
}


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

#ifndef _MSC_VER
const int MonzaSelfSerialization::kSerializationPrefixFieldNumber;
#endif  // !_MSC_VER

MonzaSelfSerialization::MonzaSelfSerialization()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void MonzaSelfSerialization::InitAsDefaultInstance() {
}

MonzaSelfSerialization::MonzaSelfSerialization(const MonzaSelfSerialization& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void MonzaSelfSerialization::SharedCtor() {
  _cached_size_ = 0;
  serialization_prefix_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

MonzaSelfSerialization::~MonzaSelfSerialization() {
  SharedDtor();
}

void MonzaSelfSerialization::SharedDtor() {
  if (serialization_prefix_ != &::google::protobuf::internal::kEmptyString) {
    delete serialization_prefix_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void MonzaSelfSerialization::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const MonzaSelfSerialization& MonzaSelfSerialization::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

MonzaSelfSerialization* MonzaSelfSerialization::default_instance_ = NULL;

MonzaSelfSerialization* MonzaSelfSerialization::New() const {
  return new MonzaSelfSerialization;
}

void MonzaSelfSerialization::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_serialization_prefix()) {
      if (serialization_prefix_ != &::google::protobuf::internal::kEmptyString) {
        serialization_prefix_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool MonzaSelfSerialization::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string serialization_prefix = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_serialization_prefix()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void MonzaSelfSerialization::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional string serialization_prefix = 1;
  if (has_serialization_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->serialization_prefix(), output);
  }

}

int MonzaSelfSerialization::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional string serialization_prefix = 1;
    if (has_serialization_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->serialization_prefix());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void MonzaSelfSerialization::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const MonzaSelfSerialization*>(&from));
}

void MonzaSelfSerialization::MergeFrom(const MonzaSelfSerialization& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_serialization_prefix()) {
      set_serialization_prefix(from.serialization_prefix());
    }
  }
}

void MonzaSelfSerialization::CopyFrom(const MonzaSelfSerialization& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MonzaSelfSerialization::IsInitialized() const {

  return true;
}

void MonzaSelfSerialization::Swap(MonzaSelfSerialization* other) {
  if (other != this) {
    std::swap(serialization_prefix_, other->serialization_prefix_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string MonzaSelfSerialization::GetTypeName() const {
  return "Impinj.STP.MonzaSelfSerialization";
}


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

#ifndef _MSC_VER
const int SerialNumberRange::kSerialNumberRangeStartFieldNumber;
const int SerialNumberRange::kSerialNumberRangeEndFieldNumber;
const int SerialNumberRange::kBitOffsetFieldNumber;
const int SerialNumberRange::kSerialNumberRangeFormatFieldNumber;
#endif  // !_MSC_VER

SerialNumberRange::SerialNumberRange()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SerialNumberRange::InitAsDefaultInstance() {
}

SerialNumberRange::SerialNumberRange(const SerialNumberRange& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SerialNumberRange::SharedCtor() {
  _cached_size_ = 0;
  serial_number_range_start_ = GOOGLE_ULONGLONG(0);
  serial_number_range_end_ = GOOGLE_ULONGLONG(0);
  bit_offset_ = 0u;
  serial_number_range_format_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SerialNumberRange::~SerialNumberRange() {
  SharedDtor();
}

void SerialNumberRange::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void SerialNumberRange::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SerialNumberRange& SerialNumberRange::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SerialNumberRange* SerialNumberRange::default_instance_ = NULL;

SerialNumberRange* SerialNumberRange::New() const {
  return new SerialNumberRange;
}

void SerialNumberRange::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    serial_number_range_start_ = GOOGLE_ULONGLONG(0);
    serial_number_range_end_ = GOOGLE_ULONGLONG(0);
    bit_offset_ = 0u;
    serial_number_range_format_ = 0;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SerialNumberRange::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 serial_number_range_start = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &serial_number_range_start_)));
          set_has_serial_number_range_start();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_serial_number_range_end;
        break;
      }

      // optional uint64 serial_number_range_end = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_serial_number_range_end:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &serial_number_range_end_)));
          set_has_serial_number_range_end();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_bit_offset;
        break;
      }

      // optional uint32 bit_offset = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_bit_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &bit_offset_)));
          set_has_bit_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_serial_number_range_format;
        break;
      }

      // optional .Impinj.STP.SerialNumberRangeFormat serial_number_range_format = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_serial_number_range_format:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::SerialNumberRangeFormat_IsValid(value)) {
            set_serial_number_range_format(static_cast< ::Impinj::STP::SerialNumberRangeFormat >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SerialNumberRange::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 serial_number_range_start = 1;
  if (has_serial_number_range_start()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->serial_number_range_start(), output);
  }

  // optional uint64 serial_number_range_end = 2;
  if (has_serial_number_range_end()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->serial_number_range_end(), output);
  }

  // optional uint32 bit_offset = 3;
  if (has_bit_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->bit_offset(), output);
  }

  // optional .Impinj.STP.SerialNumberRangeFormat serial_number_range_format = 4;
  if (has_serial_number_range_format()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      4, this->serial_number_range_format(), output);
  }

}

int SerialNumberRange::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 serial_number_range_start = 1;
    if (has_serial_number_range_start()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->serial_number_range_start());
    }

    // optional uint64 serial_number_range_end = 2;
    if (has_serial_number_range_end()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->serial_number_range_end());
    }

    // optional uint32 bit_offset = 3;
    if (has_bit_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->bit_offset());
    }

    // optional .Impinj.STP.SerialNumberRangeFormat serial_number_range_format = 4;
    if (has_serial_number_range_format()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->serial_number_range_format());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SerialNumberRange::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SerialNumberRange*>(&from));
}

void SerialNumberRange::MergeFrom(const SerialNumberRange& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_serial_number_range_start()) {
      set_serial_number_range_start(from.serial_number_range_start());
    }
    if (from.has_serial_number_range_end()) {
      set_serial_number_range_end(from.serial_number_range_end());
    }
    if (from.has_bit_offset()) {
      set_bit_offset(from.bit_offset());
    }
    if (from.has_serial_number_range_format()) {
      set_serial_number_range_format(from.serial_number_range_format());
    }
  }
}

void SerialNumberRange::CopyFrom(const SerialNumberRange& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SerialNumberRange::IsInitialized() const {

  return true;
}

void SerialNumberRange::Swap(SerialNumberRange* other) {
  if (other != this) {
    std::swap(serial_number_range_start_, other->serial_number_range_start_);
    std::swap(serial_number_range_end_, other->serial_number_range_end_);
    std::swap(bit_offset_, other->bit_offset_);
    std::swap(serial_number_range_format_, other->serial_number_range_format_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SerialNumberRange::GetTypeName() const {
  return "Impinj.STP.SerialNumberRange";
}


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

#ifndef _MSC_VER
const int UserMemory::kDataFieldNumber;
const int UserMemory::kMaskFieldNumber;
const int UserMemory::kWordOffsetFieldNumber;
const int UserMemory::kWordCountInvFieldNumber;
#endif  // !_MSC_VER

UserMemory::UserMemory()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void UserMemory::InitAsDefaultInstance() {
}

UserMemory::UserMemory(const UserMemory& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void UserMemory::SharedCtor() {
  _cached_size_ = 0;
  data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  mask_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  word_offset_ = 0u;
  word_count_inv_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

UserMemory::~UserMemory() {
  SharedDtor();
}

void UserMemory::SharedDtor() {
  if (data_ != &::google::protobuf::internal::kEmptyString) {
    delete data_;
  }
  if (mask_ != &::google::protobuf::internal::kEmptyString) {
    delete mask_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void UserMemory::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const UserMemory& UserMemory::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

UserMemory* UserMemory::default_instance_ = NULL;

UserMemory* UserMemory::New() const {
  return new UserMemory;
}

void UserMemory::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_data()) {
      if (data_ != &::google::protobuf::internal::kEmptyString) {
        data_->clear();
      }
    }
    if (has_mask()) {
      if (mask_ != &::google::protobuf::internal::kEmptyString) {
        mask_->clear();
      }
    }
    word_offset_ = 0u;
    word_count_inv_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool UserMemory::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes data = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_mask;
        break;
      }

      // optional bytes mask = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_mask:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_mask()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_word_offset;
        break;
      }

      // optional uint32 word_offset = 3 [default = 0];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_word_offset:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &word_offset_)));
          set_has_word_offset();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_word_count_inv;
        break;
      }

      // optional uint32 word_count_inv = 4 [default = 0];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_word_count_inv:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &word_count_inv_)));
          set_has_word_count_inv();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void UserMemory::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes data = 1;
  if (has_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->data(), output);
  }

  // optional bytes mask = 2;
  if (has_mask()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->mask(), output);
  }

  // optional uint32 word_offset = 3 [default = 0];
  if (has_word_offset()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->word_offset(), output);
  }

  // optional uint32 word_count_inv = 4 [default = 0];
  if (has_word_count_inv()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->word_count_inv(), output);
  }

}

int UserMemory::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes data = 1;
    if (has_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->data());
    }

    // optional bytes mask = 2;
    if (has_mask()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->mask());
    }

    // optional uint32 word_offset = 3 [default = 0];
    if (has_word_offset()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->word_offset());
    }

    // optional uint32 word_count_inv = 4 [default = 0];
    if (has_word_count_inv()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->word_count_inv());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void UserMemory::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const UserMemory*>(&from));
}

void UserMemory::MergeFrom(const UserMemory& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_data()) {
      set_data(from.data());
    }
    if (from.has_mask()) {
      set_mask(from.mask());
    }
    if (from.has_word_offset()) {
      set_word_offset(from.word_offset());
    }
    if (from.has_word_count_inv()) {
      set_word_count_inv(from.word_count_inv());
    }
  }
}

void UserMemory::CopyFrom(const UserMemory& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool UserMemory::IsInitialized() const {

  return true;
}

void UserMemory::Swap(UserMemory* other) {
  if (other != this) {
    std::swap(data_, other->data_);
    std::swap(mask_, other->mask_);
    std::swap(word_offset_, other->word_offset_);
    std::swap(word_count_inv_, other->word_count_inv_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string UserMemory::GetTypeName() const {
  return "Impinj.STP.UserMemory";
}


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

#ifndef _MSC_VER
const int Password::kPasswordGenerationMethodFieldNumber;
const int Password::kDataFieldNumber;
#endif  // !_MSC_VER

Password::Password()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Password::InitAsDefaultInstance() {
}

Password::Password(const Password& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Password::SharedCtor() {
  _cached_size_ = 0;
  password_generation_method_ = 1;
  data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Password::~Password() {
  SharedDtor();
}

void Password::SharedDtor() {
  if (data_ != &::google::protobuf::internal::kEmptyString) {
    delete data_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void Password::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Password& Password::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Password* Password::default_instance_ = NULL;

Password* Password::New() const {
  return new Password;
}

void Password::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    password_generation_method_ = 1;
    if (has_data()) {
      if (data_ != &::google::protobuf::internal::kEmptyString) {
        data_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Password::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.PasswordGenerationMethod password_generation_method = 1 [default = PASSWORD_GENERATION_METHOD_STATIC];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::PasswordGenerationMethod_IsValid(value)) {
            set_password_generation_method(static_cast< ::Impinj::STP::PasswordGenerationMethod >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_data;
        break;
      }

      // required bytes data = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Password::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.PasswordGenerationMethod password_generation_method = 1 [default = PASSWORD_GENERATION_METHOD_STATIC];
  if (has_password_generation_method()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->password_generation_method(), output);
  }

  // required bytes data = 2;
  if (has_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->data(), output);
  }

}

int Password::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.PasswordGenerationMethod password_generation_method = 1 [default = PASSWORD_GENERATION_METHOD_STATIC];
    if (has_password_generation_method()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->password_generation_method());
    }

    // required bytes data = 2;
    if (has_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->data());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Password::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Password*>(&from));
}

void Password::MergeFrom(const Password& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_password_generation_method()) {
      set_password_generation_method(from.password_generation_method());
    }
    if (from.has_data()) {
      set_data(from.data());
    }
  }
}

void Password::CopyFrom(const Password& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Password::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000002) != 0x00000002) return false;

  return true;
}

void Password::Swap(Password* other) {
  if (other != this) {
    std::swap(password_generation_method_, other->password_generation_method_);
    std::swap(data_, other->data_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Password::GetTypeName() const {
  return "Impinj.STP.Password";
}


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

#ifndef _MSC_VER
const int LockConfig::kLockConfigPayloadFieldNumber;
#endif  // !_MSC_VER

LockConfig::LockConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void LockConfig::InitAsDefaultInstance() {
}

LockConfig::LockConfig(const LockConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void LockConfig::SharedCtor() {
  _cached_size_ = 0;
  lock_config_payload_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

LockConfig::~LockConfig() {
  SharedDtor();
}

void LockConfig::SharedDtor() {
  if (lock_config_payload_ != &::google::protobuf::internal::kEmptyString) {
    delete lock_config_payload_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void LockConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const LockConfig& LockConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

LockConfig* LockConfig::default_instance_ = NULL;

LockConfig* LockConfig::New() const {
  return new LockConfig;
}

void LockConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_lock_config_payload()) {
      if (lock_config_payload_ != &::google::protobuf::internal::kEmptyString) {
        lock_config_payload_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool LockConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bytes lock_config_payload = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_lock_config_payload()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void LockConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bytes lock_config_payload = 1;
  if (has_lock_config_payload()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->lock_config_payload(), output);
  }

}

int LockConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bytes lock_config_payload = 1;
    if (has_lock_config_payload()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->lock_config_payload());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void LockConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const LockConfig*>(&from));
}

void LockConfig::MergeFrom(const LockConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_lock_config_payload()) {
      set_lock_config_payload(from.lock_config_payload());
    }
  }
}

void LockConfig::CopyFrom(const LockConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool LockConfig::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void LockConfig::Swap(LockConfig* other) {
  if (other != this) {
    std::swap(lock_config_payload_, other->lock_config_payload_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string LockConfig::GetTypeName() const {
  return "Impinj.STP.LockConfig";
}


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

#ifndef _MSC_VER
const int BlockPermalockConfig::kBlockPointerFieldNumber;
const int BlockPermalockConfig::kBlockMaskFieldNumber;
#endif  // !_MSC_VER

BlockPermalockConfig::BlockPermalockConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void BlockPermalockConfig::InitAsDefaultInstance() {
}

BlockPermalockConfig::BlockPermalockConfig(const BlockPermalockConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void BlockPermalockConfig::SharedCtor() {
  _cached_size_ = 0;
  block_pointer_ = 0u;
  block_mask_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

BlockPermalockConfig::~BlockPermalockConfig() {
  SharedDtor();
}

void BlockPermalockConfig::SharedDtor() {
  if (block_mask_ != &::google::protobuf::internal::kEmptyString) {
    delete block_mask_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void BlockPermalockConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const BlockPermalockConfig& BlockPermalockConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

BlockPermalockConfig* BlockPermalockConfig::default_instance_ = NULL;

BlockPermalockConfig* BlockPermalockConfig::New() const {
  return new BlockPermalockConfig;
}

void BlockPermalockConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    block_pointer_ = 0u;
    if (has_block_mask()) {
      if (block_mask_ != &::google::protobuf::internal::kEmptyString) {
        block_mask_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool BlockPermalockConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required uint32 block_pointer = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &block_pointer_)));
          set_has_block_pointer();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_block_mask;
        break;
      }

      // required bytes block_mask = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_block_mask:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_block_mask()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void BlockPermalockConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required uint32 block_pointer = 1;
  if (has_block_pointer()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->block_pointer(), output);
  }

  // required bytes block_mask = 2;
  if (has_block_mask()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->block_mask(), output);
  }

}

int BlockPermalockConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required uint32 block_pointer = 1;
    if (has_block_pointer()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->block_pointer());
    }

    // required bytes block_mask = 2;
    if (has_block_mask()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->block_mask());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void BlockPermalockConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const BlockPermalockConfig*>(&from));
}

void BlockPermalockConfig::MergeFrom(const BlockPermalockConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_block_pointer()) {
      set_block_pointer(from.block_pointer());
    }
    if (from.has_block_mask()) {
      set_block_mask(from.block_mask());
    }
  }
}

void BlockPermalockConfig::CopyFrom(const BlockPermalockConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool BlockPermalockConfig::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;

  return true;
}

void BlockPermalockConfig::Swap(BlockPermalockConfig* other) {
  if (other != this) {
    std::swap(block_pointer_, other->block_pointer_);
    std::swap(block_mask_, other->block_mask_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string BlockPermalockConfig::GetTypeName() const {
  return "Impinj.STP.BlockPermalockConfig";
}


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

#ifndef _MSC_VER
const int MonzaR6PFeatureConfig::kEnableAutoTuneFieldNumber;
const int MonzaR6PFeatureConfig::kEnableShortRangeModeFieldNumber;
const int MonzaR6PFeatureConfig::kMemoryMapConfigFieldNumber;
#endif  // !_MSC_VER

MonzaR6PFeatureConfig::MonzaR6PFeatureConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void MonzaR6PFeatureConfig::InitAsDefaultInstance() {
}

MonzaR6PFeatureConfig::MonzaR6PFeatureConfig(const MonzaR6PFeatureConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void MonzaR6PFeatureConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_auto_tune_ = false;
  enable_short_range_mode_ = false;
  memory_map_config_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

MonzaR6PFeatureConfig::~MonzaR6PFeatureConfig() {
  SharedDtor();
}

void MonzaR6PFeatureConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void MonzaR6PFeatureConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const MonzaR6PFeatureConfig& MonzaR6PFeatureConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

MonzaR6PFeatureConfig* MonzaR6PFeatureConfig::default_instance_ = NULL;

MonzaR6PFeatureConfig* MonzaR6PFeatureConfig::New() const {
  return new MonzaR6PFeatureConfig;
}

void MonzaR6PFeatureConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_auto_tune_ = false;
    enable_short_range_mode_ = false;
    memory_map_config_ = 0;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool MonzaR6PFeatureConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_auto_tune = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_auto_tune_)));
          set_has_enable_auto_tune();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_enable_short_range_mode;
        break;
      }

      // optional bool enable_short_range_mode = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_short_range_mode:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_short_range_mode_)));
          set_has_enable_short_range_mode();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_memory_map_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6PMemoryMapConfig memory_map_config = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_memory_map_config:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::MonzaR6PMemoryMapConfig_IsValid(value)) {
            set_memory_map_config(static_cast< ::Impinj::STP::MonzaR6PMemoryMapConfig >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void MonzaR6PFeatureConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_auto_tune = 1;
  if (has_enable_auto_tune()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_auto_tune(), output);
  }

  // optional bool enable_short_range_mode = 2;
  if (has_enable_short_range_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->enable_short_range_mode(), output);
  }

  // optional .Impinj.STP.MonzaR6PMemoryMapConfig memory_map_config = 4;
  if (has_memory_map_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      4, this->memory_map_config(), output);
  }

}

int MonzaR6PFeatureConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_auto_tune = 1;
    if (has_enable_auto_tune()) {
      total_size += 1 + 1;
    }

    // optional bool enable_short_range_mode = 2;
    if (has_enable_short_range_mode()) {
      total_size += 1 + 1;
    }

    // optional .Impinj.STP.MonzaR6PMemoryMapConfig memory_map_config = 4;
    if (has_memory_map_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->memory_map_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void MonzaR6PFeatureConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const MonzaR6PFeatureConfig*>(&from));
}

void MonzaR6PFeatureConfig::MergeFrom(const MonzaR6PFeatureConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_auto_tune()) {
      set_enable_auto_tune(from.enable_auto_tune());
    }
    if (from.has_enable_short_range_mode()) {
      set_enable_short_range_mode(from.enable_short_range_mode());
    }
    if (from.has_memory_map_config()) {
      set_memory_map_config(from.memory_map_config());
    }
  }
}

void MonzaR6PFeatureConfig::CopyFrom(const MonzaR6PFeatureConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MonzaR6PFeatureConfig::IsInitialized() const {

  return true;
}

void MonzaR6PFeatureConfig::Swap(MonzaR6PFeatureConfig* other) {
  if (other != this) {
    std::swap(enable_auto_tune_, other->enable_auto_tune_);
    std::swap(enable_short_range_mode_, other->enable_short_range_mode_);
    std::swap(memory_map_config_, other->memory_map_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string MonzaR6PFeatureConfig::GetTypeName() const {
  return "Impinj.STP.MonzaR6PFeatureConfig";
}


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

#ifndef _MSC_VER
const int MonzaS6CFeatureConfig::kEnableAutoTuneFieldNumber;
const int MonzaS6CFeatureConfig::kEnableShortRangeModeFieldNumber;
#endif  // !_MSC_VER

MonzaS6CFeatureConfig::MonzaS6CFeatureConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void MonzaS6CFeatureConfig::InitAsDefaultInstance() {
}

MonzaS6CFeatureConfig::MonzaS6CFeatureConfig(const MonzaS6CFeatureConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void MonzaS6CFeatureConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_auto_tune_ = false;
  enable_short_range_mode_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

MonzaS6CFeatureConfig::~MonzaS6CFeatureConfig() {
  SharedDtor();
}

void MonzaS6CFeatureConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void MonzaS6CFeatureConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const MonzaS6CFeatureConfig& MonzaS6CFeatureConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

MonzaS6CFeatureConfig* MonzaS6CFeatureConfig::default_instance_ = NULL;

MonzaS6CFeatureConfig* MonzaS6CFeatureConfig::New() const {
  return new MonzaS6CFeatureConfig;
}

void MonzaS6CFeatureConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_auto_tune_ = false;
    enable_short_range_mode_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool MonzaS6CFeatureConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_auto_tune = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_auto_tune_)));
          set_has_enable_auto_tune();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_enable_short_range_mode;
        break;
      }

      // optional bool enable_short_range_mode = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_short_range_mode:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_short_range_mode_)));
          set_has_enable_short_range_mode();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void MonzaS6CFeatureConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_auto_tune = 1;
  if (has_enable_auto_tune()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_auto_tune(), output);
  }

  // optional bool enable_short_range_mode = 2;
  if (has_enable_short_range_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->enable_short_range_mode(), output);
  }

}

int MonzaS6CFeatureConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_auto_tune = 1;
    if (has_enable_auto_tune()) {
      total_size += 1 + 1;
    }

    // optional bool enable_short_range_mode = 2;
    if (has_enable_short_range_mode()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void MonzaS6CFeatureConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const MonzaS6CFeatureConfig*>(&from));
}

void MonzaS6CFeatureConfig::MergeFrom(const MonzaS6CFeatureConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_auto_tune()) {
      set_enable_auto_tune(from.enable_auto_tune());
    }
    if (from.has_enable_short_range_mode()) {
      set_enable_short_range_mode(from.enable_short_range_mode());
    }
  }
}

void MonzaS6CFeatureConfig::CopyFrom(const MonzaS6CFeatureConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MonzaS6CFeatureConfig::IsInitialized() const {

  return true;
}

void MonzaS6CFeatureConfig::Swap(MonzaS6CFeatureConfig* other) {
  if (other != this) {
    std::swap(enable_auto_tune_, other->enable_auto_tune_);
    std::swap(enable_short_range_mode_, other->enable_short_range_mode_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string MonzaS6CFeatureConfig::GetTypeName() const {
  return "Impinj.STP.MonzaS6CFeatureConfig";
}


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

#ifndef _MSC_VER
const int MonzaR6FeatureConfig::kEnableAutoTuneFieldNumber;
#endif  // !_MSC_VER

MonzaR6FeatureConfig::MonzaR6FeatureConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void MonzaR6FeatureConfig::InitAsDefaultInstance() {
}

MonzaR6FeatureConfig::MonzaR6FeatureConfig(const MonzaR6FeatureConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void MonzaR6FeatureConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_auto_tune_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

MonzaR6FeatureConfig::~MonzaR6FeatureConfig() {
  SharedDtor();
}

void MonzaR6FeatureConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void MonzaR6FeatureConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const MonzaR6FeatureConfig& MonzaR6FeatureConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

MonzaR6FeatureConfig* MonzaR6FeatureConfig::default_instance_ = NULL;

MonzaR6FeatureConfig* MonzaR6FeatureConfig::New() const {
  return new MonzaR6FeatureConfig;
}

void MonzaR6FeatureConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_auto_tune_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool MonzaR6FeatureConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_auto_tune = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_auto_tune_)));
          set_has_enable_auto_tune();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void MonzaR6FeatureConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_auto_tune = 1;
  if (has_enable_auto_tune()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_auto_tune(), output);
  }

}

int MonzaR6FeatureConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_auto_tune = 1;
    if (has_enable_auto_tune()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void MonzaR6FeatureConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const MonzaR6FeatureConfig*>(&from));
}

void MonzaR6FeatureConfig::MergeFrom(const MonzaR6FeatureConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_auto_tune()) {
      set_enable_auto_tune(from.enable_auto_tune());
    }
  }
}

void MonzaR6FeatureConfig::CopyFrom(const MonzaR6FeatureConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MonzaR6FeatureConfig::IsInitialized() const {

  return true;
}

void MonzaR6FeatureConfig::Swap(MonzaR6FeatureConfig* other) {
  if (other != this) {
    std::swap(enable_auto_tune_, other->enable_auto_tune_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string MonzaR6FeatureConfig::GetTypeName() const {
  return "Impinj.STP.MonzaR6FeatureConfig";
}


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

#ifndef _MSC_VER
const int MonzaR6AFeatureConfig::kEnableAutoTuneFieldNumber;
const int MonzaR6AFeatureConfig::kEnableShortRangeModeFieldNumber;
#endif  // !_MSC_VER

MonzaR6AFeatureConfig::MonzaR6AFeatureConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void MonzaR6AFeatureConfig::InitAsDefaultInstance() {
}

MonzaR6AFeatureConfig::MonzaR6AFeatureConfig(const MonzaR6AFeatureConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void MonzaR6AFeatureConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_auto_tune_ = false;
  enable_short_range_mode_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

MonzaR6AFeatureConfig::~MonzaR6AFeatureConfig() {
  SharedDtor();
}

void MonzaR6AFeatureConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void MonzaR6AFeatureConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const MonzaR6AFeatureConfig& MonzaR6AFeatureConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

MonzaR6AFeatureConfig* MonzaR6AFeatureConfig::default_instance_ = NULL;

MonzaR6AFeatureConfig* MonzaR6AFeatureConfig::New() const {
  return new MonzaR6AFeatureConfig;
}

void MonzaR6AFeatureConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_auto_tune_ = false;
    enable_short_range_mode_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool MonzaR6AFeatureConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_auto_tune = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_auto_tune_)));
          set_has_enable_auto_tune();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_enable_short_range_mode;
        break;
      }

      // optional bool enable_short_range_mode = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_short_range_mode:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_short_range_mode_)));
          set_has_enable_short_range_mode();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void MonzaR6AFeatureConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_auto_tune = 1;
  if (has_enable_auto_tune()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_auto_tune(), output);
  }

  // optional bool enable_short_range_mode = 2;
  if (has_enable_short_range_mode()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->enable_short_range_mode(), output);
  }

}

int MonzaR6AFeatureConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_auto_tune = 1;
    if (has_enable_auto_tune()) {
      total_size += 1 + 1;
    }

    // optional bool enable_short_range_mode = 2;
    if (has_enable_short_range_mode()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void MonzaR6AFeatureConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const MonzaR6AFeatureConfig*>(&from));
}

void MonzaR6AFeatureConfig::MergeFrom(const MonzaR6AFeatureConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_auto_tune()) {
      set_enable_auto_tune(from.enable_auto_tune());
    }
    if (from.has_enable_short_range_mode()) {
      set_enable_short_range_mode(from.enable_short_range_mode());
    }
  }
}

void MonzaR6AFeatureConfig::CopyFrom(const MonzaR6AFeatureConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MonzaR6AFeatureConfig::IsInitialized() const {

  return true;
}

void MonzaR6AFeatureConfig::Swap(MonzaR6AFeatureConfig* other) {
  if (other != this) {
    std::swap(enable_auto_tune_, other->enable_auto_tune_);
    std::swap(enable_short_range_mode_, other->enable_short_range_mode_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string MonzaR6AFeatureConfig::GetTypeName() const {
  return "Impinj.STP.MonzaR6AFeatureConfig";
}


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

#ifndef _MSC_VER
const int TIDTableEntry::kTIDFieldNumber;
const int TIDTableEntry::kEPCMemoryFieldNumber;
const int TIDTableEntry::kTIDMemoryFieldNumber;
const int TIDTableEntry::kUserMemoryFieldNumber;
const int TIDTableEntry::kSecurePasswordFieldNumber;
const int TIDTableEntry::kAccessPasswordFieldNumber;
const int TIDTableEntry::kKillPasswordFieldNumber;
const int TIDTableEntry::kLockConfigFieldNumber;
const int TIDTableEntry::kBlockpermalockConfigFieldNumber;
const int TIDTableEntry::kKillTagFieldNumber;
const int TIDTableEntry::kVoidTagFieldNumber;
const int TIDTableEntry::kMonzaR6PFeatureConfigFieldNumber;
const int TIDTableEntry::kMonzaS6CFeatureConfigFieldNumber;
const int TIDTableEntry::kMonzaR6FeatureConfigFieldNumber;
const int TIDTableEntry::kMonzaR6AFeatureConfigFieldNumber;
#endif  // !_MSC_VER

TIDTableEntry::TIDTableEntry()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TIDTableEntry::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  epc_memory_ = const_cast< ::Impinj::STP::EPCMemory*>(
      ::Impinj::STP::EPCMemory::internal_default_instance());
#else
  epc_memory_ = const_cast< ::Impinj::STP::EPCMemory*>(&::Impinj::STP::EPCMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  tid_memory_ = const_cast< ::Impinj::STP::TIDMemory*>(
      ::Impinj::STP::TIDMemory::internal_default_instance());
#else
  tid_memory_ = const_cast< ::Impinj::STP::TIDMemory*>(&::Impinj::STP::TIDMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(
      ::Impinj::STP::UserMemory::internal_default_instance());
#else
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(&::Impinj::STP::UserMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  secure_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  secure_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  access_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  access_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  kill_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  kill_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  lock_config_ = const_cast< ::Impinj::STP::LockConfig*>(
      ::Impinj::STP::LockConfig::internal_default_instance());
#else
  lock_config_ = const_cast< ::Impinj::STP::LockConfig*>(&::Impinj::STP::LockConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  blockpermalock_config_ = const_cast< ::Impinj::STP::BlockPermalockConfig*>(
      ::Impinj::STP::BlockPermalockConfig::internal_default_instance());
#else
  blockpermalock_config_ = const_cast< ::Impinj::STP::BlockPermalockConfig*>(&::Impinj::STP::BlockPermalockConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6p_feature_config_ = const_cast< ::Impinj::STP::MonzaR6PFeatureConfig*>(
      ::Impinj::STP::MonzaR6PFeatureConfig::internal_default_instance());
#else
  monza_r6p_feature_config_ = const_cast< ::Impinj::STP::MonzaR6PFeatureConfig*>(&::Impinj::STP::MonzaR6PFeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_s6c_feature_config_ = const_cast< ::Impinj::STP::MonzaS6CFeatureConfig*>(
      ::Impinj::STP::MonzaS6CFeatureConfig::internal_default_instance());
#else
  monza_s6c_feature_config_ = const_cast< ::Impinj::STP::MonzaS6CFeatureConfig*>(&::Impinj::STP::MonzaS6CFeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6_feature_config_ = const_cast< ::Impinj::STP::MonzaR6FeatureConfig*>(
      ::Impinj::STP::MonzaR6FeatureConfig::internal_default_instance());
#else
  monza_r6_feature_config_ = const_cast< ::Impinj::STP::MonzaR6FeatureConfig*>(&::Impinj::STP::MonzaR6FeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6a_feature_config_ = const_cast< ::Impinj::STP::MonzaR6AFeatureConfig*>(
      ::Impinj::STP::MonzaR6AFeatureConfig::internal_default_instance());
#else
  monza_r6a_feature_config_ = const_cast< ::Impinj::STP::MonzaR6AFeatureConfig*>(&::Impinj::STP::MonzaR6AFeatureConfig::default_instance());
#endif
}

TIDTableEntry::TIDTableEntry(const TIDTableEntry& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TIDTableEntry::SharedCtor() {
  _cached_size_ = 0;
  tid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  epc_memory_ = NULL;
  tid_memory_ = NULL;
  user_memory_ = NULL;
  secure_password_ = NULL;
  access_password_ = NULL;
  kill_password_ = NULL;
  lock_config_ = NULL;
  blockpermalock_config_ = NULL;
  kill_tag_ = false;
  void_tag_ = false;
  monza_r6p_feature_config_ = NULL;
  monza_s6c_feature_config_ = NULL;
  monza_r6_feature_config_ = NULL;
  monza_r6a_feature_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TIDTableEntry::~TIDTableEntry() {
  SharedDtor();
}

void TIDTableEntry::SharedDtor() {
  if (tid_ != &::google::protobuf::internal::kEmptyString) {
    delete tid_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete epc_memory_;
    delete tid_memory_;
    delete user_memory_;
    delete secure_password_;
    delete access_password_;
    delete kill_password_;
    delete lock_config_;
    delete blockpermalock_config_;
    delete monza_r6p_feature_config_;
    delete monza_s6c_feature_config_;
    delete monza_r6_feature_config_;
    delete monza_r6a_feature_config_;
  }
}

void TIDTableEntry::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TIDTableEntry& TIDTableEntry::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TIDTableEntry* TIDTableEntry::default_instance_ = NULL;

TIDTableEntry* TIDTableEntry::New() const {
  return new TIDTableEntry;
}

void TIDTableEntry::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_tid()) {
      if (tid_ != &::google::protobuf::internal::kEmptyString) {
        tid_->clear();
      }
    }
    if (has_epc_memory()) {
      if (epc_memory_ != NULL) epc_memory_->::Impinj::STP::EPCMemory::Clear();
    }
    if (has_tid_memory()) {
      if (tid_memory_ != NULL) tid_memory_->::Impinj::STP::TIDMemory::Clear();
    }
    if (has_user_memory()) {
      if (user_memory_ != NULL) user_memory_->::Impinj::STP::UserMemory::Clear();
    }
    if (has_secure_password()) {
      if (secure_password_ != NULL) secure_password_->::Impinj::STP::Password::Clear();
    }
    if (has_access_password()) {
      if (access_password_ != NULL) access_password_->::Impinj::STP::Password::Clear();
    }
    if (has_kill_password()) {
      if (kill_password_ != NULL) kill_password_->::Impinj::STP::Password::Clear();
    }
    if (has_lock_config()) {
      if (lock_config_ != NULL) lock_config_->::Impinj::STP::LockConfig::Clear();
    }
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (has_blockpermalock_config()) {
      if (blockpermalock_config_ != NULL) blockpermalock_config_->::Impinj::STP::BlockPermalockConfig::Clear();
    }
    kill_tag_ = false;
    void_tag_ = false;
    if (has_monza_r6p_feature_config()) {
      if (monza_r6p_feature_config_ != NULL) monza_r6p_feature_config_->::Impinj::STP::MonzaR6PFeatureConfig::Clear();
    }
    if (has_monza_s6c_feature_config()) {
      if (monza_s6c_feature_config_ != NULL) monza_s6c_feature_config_->::Impinj::STP::MonzaS6CFeatureConfig::Clear();
    }
    if (has_monza_r6_feature_config()) {
      if (monza_r6_feature_config_ != NULL) monza_r6_feature_config_->::Impinj::STP::MonzaR6FeatureConfig::Clear();
    }
    if (has_monza_r6a_feature_config()) {
      if (monza_r6a_feature_config_ != NULL) monza_r6a_feature_config_->::Impinj::STP::MonzaR6AFeatureConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TIDTableEntry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bytes TID = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_tid()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_EPC_memory;
        break;
      }

      // optional .Impinj.STP.EPCMemory EPC_memory = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_EPC_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_epc_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_TID_memory;
        break;
      }

      // optional .Impinj.STP.TIDMemory TID_memory = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_TID_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_tid_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_user_memory;
        break;
      }

      // optional .Impinj.STP.UserMemory user_memory = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_user_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_user_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_secure_password;
        break;
      }

      // optional .Impinj.STP.Password secure_password = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_secure_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_secure_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_access_password;
        break;
      }

      // optional .Impinj.STP.Password access_password = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_access_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_access_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_kill_password;
        break;
      }

      // optional .Impinj.STP.Password kill_password = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_kill_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_kill_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(74)) goto parse_lock_config;
        break;
      }

      // optional .Impinj.STP.LockConfig lock_config = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_lock_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_lock_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(82)) goto parse_blockpermalock_config;
        break;
      }

      // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_blockpermalock_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_blockpermalock_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96)) goto parse_kill_tag;
        break;
      }

      // optional bool kill_tag = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_kill_tag:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_tag_)));
          set_has_kill_tag();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(104)) goto parse_void_tag;
        break;
      }

      // optional bool void_tag = 13;
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_void_tag:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &void_tag_)));
          set_has_void_tag();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(114)) goto parse_monza_r6p_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 14;
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6p_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6p_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(122)) goto parse_monza_s6c_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 15;
      case 15: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_s6c_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_s6c_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(130)) goto parse_monza_r6_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 16;
      case 16: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(138)) goto parse_monza_r6a_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 17;
      case 17: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6a_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6a_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TIDTableEntry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bytes TID = 1;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->tid(), output);
  }

  // optional .Impinj.STP.EPCMemory EPC_memory = 3;
  if (has_epc_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->epc_memory(), output);
  }

  // optional .Impinj.STP.TIDMemory TID_memory = 4;
  if (has_tid_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->tid_memory(), output);
  }

  // optional .Impinj.STP.UserMemory user_memory = 5;
  if (has_user_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->user_memory(), output);
  }

  // optional .Impinj.STP.Password secure_password = 6;
  if (has_secure_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->secure_password(), output);
  }

  // optional .Impinj.STP.Password access_password = 7;
  if (has_access_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      7, this->access_password(), output);
  }

  // optional .Impinj.STP.Password kill_password = 8;
  if (has_kill_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->kill_password(), output);
  }

  // optional .Impinj.STP.LockConfig lock_config = 9;
  if (has_lock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      9, this->lock_config(), output);
  }

  // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 10;
  if (has_blockpermalock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      10, this->blockpermalock_config(), output);
  }

  // optional bool kill_tag = 12;
  if (has_kill_tag()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->kill_tag(), output);
  }

  // optional bool void_tag = 13;
  if (has_void_tag()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->void_tag(), output);
  }

  // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 14;
  if (has_monza_r6p_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      14, this->monza_r6p_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 15;
  if (has_monza_s6c_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      15, this->monza_s6c_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 16;
  if (has_monza_r6_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      16, this->monza_r6_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 17;
  if (has_monza_r6a_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      17, this->monza_r6a_feature_config(), output);
  }

}

int TIDTableEntry::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bytes TID = 1;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->tid());
    }

    // optional .Impinj.STP.EPCMemory EPC_memory = 3;
    if (has_epc_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->epc_memory());
    }

    // optional .Impinj.STP.TIDMemory TID_memory = 4;
    if (has_tid_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->tid_memory());
    }

    // optional .Impinj.STP.UserMemory user_memory = 5;
    if (has_user_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->user_memory());
    }

    // optional .Impinj.STP.Password secure_password = 6;
    if (has_secure_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->secure_password());
    }

    // optional .Impinj.STP.Password access_password = 7;
    if (has_access_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->access_password());
    }

    // optional .Impinj.STP.Password kill_password = 8;
    if (has_kill_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->kill_password());
    }

    // optional .Impinj.STP.LockConfig lock_config = 9;
    if (has_lock_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->lock_config());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 10;
    if (has_blockpermalock_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->blockpermalock_config());
    }

    // optional bool kill_tag = 12;
    if (has_kill_tag()) {
      total_size += 1 + 1;
    }

    // optional bool void_tag = 13;
    if (has_void_tag()) {
      total_size += 1 + 1;
    }

    // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 14;
    if (has_monza_r6p_feature_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6p_feature_config());
    }

    // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 15;
    if (has_monza_s6c_feature_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_s6c_feature_config());
    }

    // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 16;
    if (has_monza_r6_feature_config()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6_feature_config());
    }

    // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 17;
    if (has_monza_r6a_feature_config()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6a_feature_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TIDTableEntry::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TIDTableEntry*>(&from));
}

void TIDTableEntry::MergeFrom(const TIDTableEntry& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_epc_memory()) {
      mutable_epc_memory()->::Impinj::STP::EPCMemory::MergeFrom(from.epc_memory());
    }
    if (from.has_tid_memory()) {
      mutable_tid_memory()->::Impinj::STP::TIDMemory::MergeFrom(from.tid_memory());
    }
    if (from.has_user_memory()) {
      mutable_user_memory()->::Impinj::STP::UserMemory::MergeFrom(from.user_memory());
    }
    if (from.has_secure_password()) {
      mutable_secure_password()->::Impinj::STP::Password::MergeFrom(from.secure_password());
    }
    if (from.has_access_password()) {
      mutable_access_password()->::Impinj::STP::Password::MergeFrom(from.access_password());
    }
    if (from.has_kill_password()) {
      mutable_kill_password()->::Impinj::STP::Password::MergeFrom(from.kill_password());
    }
    if (from.has_lock_config()) {
      mutable_lock_config()->::Impinj::STP::LockConfig::MergeFrom(from.lock_config());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_blockpermalock_config()) {
      mutable_blockpermalock_config()->::Impinj::STP::BlockPermalockConfig::MergeFrom(from.blockpermalock_config());
    }
    if (from.has_kill_tag()) {
      set_kill_tag(from.kill_tag());
    }
    if (from.has_void_tag()) {
      set_void_tag(from.void_tag());
    }
    if (from.has_monza_r6p_feature_config()) {
      mutable_monza_r6p_feature_config()->::Impinj::STP::MonzaR6PFeatureConfig::MergeFrom(from.monza_r6p_feature_config());
    }
    if (from.has_monza_s6c_feature_config()) {
      mutable_monza_s6c_feature_config()->::Impinj::STP::MonzaS6CFeatureConfig::MergeFrom(from.monza_s6c_feature_config());
    }
    if (from.has_monza_r6_feature_config()) {
      mutable_monza_r6_feature_config()->::Impinj::STP::MonzaR6FeatureConfig::MergeFrom(from.monza_r6_feature_config());
    }
    if (from.has_monza_r6a_feature_config()) {
      mutable_monza_r6a_feature_config()->::Impinj::STP::MonzaR6AFeatureConfig::MergeFrom(from.monza_r6a_feature_config());
    }
  }
}

void TIDTableEntry::CopyFrom(const TIDTableEntry& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TIDTableEntry::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  if (has_epc_memory()) {
    if (!this->epc_memory().IsInitialized()) return false;
  }
  if (has_tid_memory()) {
    if (!this->tid_memory().IsInitialized()) return false;
  }
  if (has_secure_password()) {
    if (!this->secure_password().IsInitialized()) return false;
  }
  if (has_access_password()) {
    if (!this->access_password().IsInitialized()) return false;
  }
  if (has_kill_password()) {
    if (!this->kill_password().IsInitialized()) return false;
  }
  if (has_lock_config()) {
    if (!this->lock_config().IsInitialized()) return false;
  }
  if (has_blockpermalock_config()) {
    if (!this->blockpermalock_config().IsInitialized()) return false;
  }
  return true;
}

void TIDTableEntry::Swap(TIDTableEntry* other) {
  if (other != this) {
    std::swap(tid_, other->tid_);
    std::swap(epc_memory_, other->epc_memory_);
    std::swap(tid_memory_, other->tid_memory_);
    std::swap(user_memory_, other->user_memory_);
    std::swap(secure_password_, other->secure_password_);
    std::swap(access_password_, other->access_password_);
    std::swap(kill_password_, other->kill_password_);
    std::swap(lock_config_, other->lock_config_);
    std::swap(blockpermalock_config_, other->blockpermalock_config_);
    std::swap(kill_tag_, other->kill_tag_);
    std::swap(void_tag_, other->void_tag_);
    std::swap(monza_r6p_feature_config_, other->monza_r6p_feature_config_);
    std::swap(monza_s6c_feature_config_, other->monza_s6c_feature_config_);
    std::swap(monza_r6_feature_config_, other->monza_r6_feature_config_);
    std::swap(monza_r6a_feature_config_, other->monza_r6a_feature_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TIDTableEntry::GetTypeName() const {
  return "Impinj.STP.TIDTableEntry";
}


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

#ifndef _MSC_VER
const int TIDTableEntries::kTidTableEntriesFieldNumber;
#endif  // !_MSC_VER

TIDTableEntries::TIDTableEntries()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TIDTableEntries::InitAsDefaultInstance() {
}

TIDTableEntries::TIDTableEntries(const TIDTableEntries& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TIDTableEntries::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TIDTableEntries::~TIDTableEntries() {
  SharedDtor();
}

void TIDTableEntries::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void TIDTableEntries::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TIDTableEntries& TIDTableEntries::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TIDTableEntries* TIDTableEntries::default_instance_ = NULL;

TIDTableEntries* TIDTableEntries::New() const {
  return new TIDTableEntries;
}

void TIDTableEntries::Clear() {
  tid_table_entries_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TIDTableEntries::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .Impinj.STP.TIDTableEntry tid_table_entries = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_tid_table_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_tid_table_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_tid_table_entries;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TIDTableEntries::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .Impinj.STP.TIDTableEntry tid_table_entries = 1;
  for (int i = 0; i < this->tid_table_entries_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->tid_table_entries(i), output);
  }

}

int TIDTableEntries::ByteSize() const {
  int total_size = 0;

  // repeated .Impinj.STP.TIDTableEntry tid_table_entries = 1;
  total_size += 1 * this->tid_table_entries_size();
  for (int i = 0; i < this->tid_table_entries_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->tid_table_entries(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TIDTableEntries::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TIDTableEntries*>(&from));
}

void TIDTableEntries::MergeFrom(const TIDTableEntries& from) {
  GOOGLE_CHECK_NE(&from, this);
  tid_table_entries_.MergeFrom(from.tid_table_entries_);
}

void TIDTableEntries::CopyFrom(const TIDTableEntries& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TIDTableEntries::IsInitialized() const {

  for (int i = 0; i < tid_table_entries_size(); i++) {
    if (!this->tid_table_entries(i).IsInitialized()) return false;
  }
  return true;
}

void TIDTableEntries::Swap(TIDTableEntries* other) {
  if (other != this) {
    tid_table_entries_.Swap(&other->tid_table_entries_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TIDTableEntries::GetTypeName() const {
  return "Impinj.STP.TIDTableEntries";
}


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

#ifndef _MSC_VER
const int OrderedListEntry::kEPCMemoryFieldNumber;
const int OrderedListEntry::kUserMemoryFieldNumber;
const int OrderedListEntry::kSecurePasswordFieldNumber;
const int OrderedListEntry::kAccessPasswordFieldNumber;
const int OrderedListEntry::kKillPasswordFieldNumber;
const int OrderedListEntry::kLockConfigFieldNumber;
const int OrderedListEntry::kBlockpermalockConfigFieldNumber;
const int OrderedListEntry::kTIDMemoryFieldNumber;
const int OrderedListEntry::kMonzaR6PFeatureConfigFieldNumber;
const int OrderedListEntry::kMonzaS6CFeatureConfigFieldNumber;
const int OrderedListEntry::kMonzaR6FeatureConfigFieldNumber;
const int OrderedListEntry::kMonzaR6AFeatureConfigFieldNumber;
#endif  // !_MSC_VER

OrderedListEntry::OrderedListEntry()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OrderedListEntry::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  epc_memory_ = const_cast< ::Impinj::STP::EPCMemory*>(
      ::Impinj::STP::EPCMemory::internal_default_instance());
#else
  epc_memory_ = const_cast< ::Impinj::STP::EPCMemory*>(&::Impinj::STP::EPCMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(
      ::Impinj::STP::UserMemory::internal_default_instance());
#else
  user_memory_ = const_cast< ::Impinj::STP::UserMemory*>(&::Impinj::STP::UserMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  secure_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  secure_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  access_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  access_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  kill_password_ = const_cast< ::Impinj::STP::Password*>(
      ::Impinj::STP::Password::internal_default_instance());
#else
  kill_password_ = const_cast< ::Impinj::STP::Password*>(&::Impinj::STP::Password::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  lock_config_ = const_cast< ::Impinj::STP::LockConfig*>(
      ::Impinj::STP::LockConfig::internal_default_instance());
#else
  lock_config_ = const_cast< ::Impinj::STP::LockConfig*>(&::Impinj::STP::LockConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  blockpermalock_config_ = const_cast< ::Impinj::STP::BlockPermalockConfig*>(
      ::Impinj::STP::BlockPermalockConfig::internal_default_instance());
#else
  blockpermalock_config_ = const_cast< ::Impinj::STP::BlockPermalockConfig*>(&::Impinj::STP::BlockPermalockConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  tid_memory_ = const_cast< ::Impinj::STP::TIDMemory*>(
      ::Impinj::STP::TIDMemory::internal_default_instance());
#else
  tid_memory_ = const_cast< ::Impinj::STP::TIDMemory*>(&::Impinj::STP::TIDMemory::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6p_feature_config_ = const_cast< ::Impinj::STP::MonzaR6PFeatureConfig*>(
      ::Impinj::STP::MonzaR6PFeatureConfig::internal_default_instance());
#else
  monza_r6p_feature_config_ = const_cast< ::Impinj::STP::MonzaR6PFeatureConfig*>(&::Impinj::STP::MonzaR6PFeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_s6c_feature_config_ = const_cast< ::Impinj::STP::MonzaS6CFeatureConfig*>(
      ::Impinj::STP::MonzaS6CFeatureConfig::internal_default_instance());
#else
  monza_s6c_feature_config_ = const_cast< ::Impinj::STP::MonzaS6CFeatureConfig*>(&::Impinj::STP::MonzaS6CFeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6_feature_config_ = const_cast< ::Impinj::STP::MonzaR6FeatureConfig*>(
      ::Impinj::STP::MonzaR6FeatureConfig::internal_default_instance());
#else
  monza_r6_feature_config_ = const_cast< ::Impinj::STP::MonzaR6FeatureConfig*>(&::Impinj::STP::MonzaR6FeatureConfig::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  monza_r6a_feature_config_ = const_cast< ::Impinj::STP::MonzaR6AFeatureConfig*>(
      ::Impinj::STP::MonzaR6AFeatureConfig::internal_default_instance());
#else
  monza_r6a_feature_config_ = const_cast< ::Impinj::STP::MonzaR6AFeatureConfig*>(&::Impinj::STP::MonzaR6AFeatureConfig::default_instance());
#endif
}

OrderedListEntry::OrderedListEntry(const OrderedListEntry& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OrderedListEntry::SharedCtor() {
  _cached_size_ = 0;
  epc_memory_ = NULL;
  user_memory_ = NULL;
  secure_password_ = NULL;
  access_password_ = NULL;
  kill_password_ = NULL;
  lock_config_ = NULL;
  blockpermalock_config_ = NULL;
  tid_memory_ = NULL;
  monza_r6p_feature_config_ = NULL;
  monza_s6c_feature_config_ = NULL;
  monza_r6_feature_config_ = NULL;
  monza_r6a_feature_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OrderedListEntry::~OrderedListEntry() {
  SharedDtor();
}

void OrderedListEntry::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete epc_memory_;
    delete user_memory_;
    delete secure_password_;
    delete access_password_;
    delete kill_password_;
    delete lock_config_;
    delete blockpermalock_config_;
    delete tid_memory_;
    delete monza_r6p_feature_config_;
    delete monza_s6c_feature_config_;
    delete monza_r6_feature_config_;
    delete monza_r6a_feature_config_;
  }
}

void OrderedListEntry::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OrderedListEntry& OrderedListEntry::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OrderedListEntry* OrderedListEntry::default_instance_ = NULL;

OrderedListEntry* OrderedListEntry::New() const {
  return new OrderedListEntry;
}

void OrderedListEntry::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_epc_memory()) {
      if (epc_memory_ != NULL) epc_memory_->::Impinj::STP::EPCMemory::Clear();
    }
    if (has_user_memory()) {
      if (user_memory_ != NULL) user_memory_->::Impinj::STP::UserMemory::Clear();
    }
    if (has_secure_password()) {
      if (secure_password_ != NULL) secure_password_->::Impinj::STP::Password::Clear();
    }
    if (has_access_password()) {
      if (access_password_ != NULL) access_password_->::Impinj::STP::Password::Clear();
    }
    if (has_kill_password()) {
      if (kill_password_ != NULL) kill_password_->::Impinj::STP::Password::Clear();
    }
    if (has_lock_config()) {
      if (lock_config_ != NULL) lock_config_->::Impinj::STP::LockConfig::Clear();
    }
    if (has_blockpermalock_config()) {
      if (blockpermalock_config_ != NULL) blockpermalock_config_->::Impinj::STP::BlockPermalockConfig::Clear();
    }
    if (has_tid_memory()) {
      if (tid_memory_ != NULL) tid_memory_->::Impinj::STP::TIDMemory::Clear();
    }
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (has_monza_r6p_feature_config()) {
      if (monza_r6p_feature_config_ != NULL) monza_r6p_feature_config_->::Impinj::STP::MonzaR6PFeatureConfig::Clear();
    }
    if (has_monza_s6c_feature_config()) {
      if (monza_s6c_feature_config_ != NULL) monza_s6c_feature_config_->::Impinj::STP::MonzaS6CFeatureConfig::Clear();
    }
    if (has_monza_r6_feature_config()) {
      if (monza_r6_feature_config_ != NULL) monza_r6_feature_config_->::Impinj::STP::MonzaR6FeatureConfig::Clear();
    }
    if (has_monza_r6a_feature_config()) {
      if (monza_r6a_feature_config_ != NULL) monza_r6a_feature_config_->::Impinj::STP::MonzaR6AFeatureConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OrderedListEntry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.EPCMemory EPC_memory = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_epc_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_user_memory;
        break;
      }

      // optional .Impinj.STP.UserMemory user_memory = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_user_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_user_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_secure_password;
        break;
      }

      // optional .Impinj.STP.Password secure_password = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_secure_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_secure_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_access_password;
        break;
      }

      // optional .Impinj.STP.Password access_password = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_access_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_access_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_kill_password;
        break;
      }

      // optional .Impinj.STP.Password kill_password = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_kill_password:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_kill_password()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_lock_config;
        break;
      }

      // optional .Impinj.STP.LockConfig lock_config = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_lock_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_lock_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_blockpermalock_config;
        break;
      }

      // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_blockpermalock_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_blockpermalock_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_TID_memory;
        break;
      }

      // optional .Impinj.STP.TIDMemory TID_memory = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_TID_memory:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_tid_memory()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(82)) goto parse_monza_r6p_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6p_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6p_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(90)) goto parse_monza_s6c_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_s6c_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_s6c_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(98)) goto parse_monza_r6_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(106)) goto parse_monza_r6a_feature_config;
        break;
      }

      // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 13;
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_monza_r6a_feature_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_monza_r6a_feature_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OrderedListEntry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.EPCMemory EPC_memory = 1;
  if (has_epc_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->epc_memory(), output);
  }

  // optional .Impinj.STP.UserMemory user_memory = 2;
  if (has_user_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->user_memory(), output);
  }

  // optional .Impinj.STP.Password secure_password = 3;
  if (has_secure_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->secure_password(), output);
  }

  // optional .Impinj.STP.Password access_password = 4;
  if (has_access_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->access_password(), output);
  }

  // optional .Impinj.STP.Password kill_password = 5;
  if (has_kill_password()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->kill_password(), output);
  }

  // optional .Impinj.STP.LockConfig lock_config = 6;
  if (has_lock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->lock_config(), output);
  }

  // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 7;
  if (has_blockpermalock_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      7, this->blockpermalock_config(), output);
  }

  // optional .Impinj.STP.TIDMemory TID_memory = 8;
  if (has_tid_memory()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->tid_memory(), output);
  }

  // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 10;
  if (has_monza_r6p_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      10, this->monza_r6p_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 11;
  if (has_monza_s6c_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      11, this->monza_s6c_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 12;
  if (has_monza_r6_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12, this->monza_r6_feature_config(), output);
  }

  // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 13;
  if (has_monza_r6a_feature_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      13, this->monza_r6a_feature_config(), output);
  }

}

int OrderedListEntry::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.EPCMemory EPC_memory = 1;
    if (has_epc_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->epc_memory());
    }

    // optional .Impinj.STP.UserMemory user_memory = 2;
    if (has_user_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->user_memory());
    }

    // optional .Impinj.STP.Password secure_password = 3;
    if (has_secure_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->secure_password());
    }

    // optional .Impinj.STP.Password access_password = 4;
    if (has_access_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->access_password());
    }

    // optional .Impinj.STP.Password kill_password = 5;
    if (has_kill_password()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->kill_password());
    }

    // optional .Impinj.STP.LockConfig lock_config = 6;
    if (has_lock_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->lock_config());
    }

    // optional .Impinj.STP.BlockPermalockConfig blockpermalock_config = 7;
    if (has_blockpermalock_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->blockpermalock_config());
    }

    // optional .Impinj.STP.TIDMemory TID_memory = 8;
    if (has_tid_memory()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->tid_memory());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional .Impinj.STP.MonzaR6PFeatureConfig monza_r6p_feature_config = 10;
    if (has_monza_r6p_feature_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6p_feature_config());
    }

    // optional .Impinj.STP.MonzaS6CFeatureConfig monza_s6c_feature_config = 11;
    if (has_monza_s6c_feature_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_s6c_feature_config());
    }

    // optional .Impinj.STP.MonzaR6FeatureConfig monza_r6_feature_config = 12;
    if (has_monza_r6_feature_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6_feature_config());
    }

    // optional .Impinj.STP.MonzaR6AFeatureConfig monza_r6a_feature_config = 13;
    if (has_monza_r6a_feature_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->monza_r6a_feature_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OrderedListEntry::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OrderedListEntry*>(&from));
}

void OrderedListEntry::MergeFrom(const OrderedListEntry& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_epc_memory()) {
      mutable_epc_memory()->::Impinj::STP::EPCMemory::MergeFrom(from.epc_memory());
    }
    if (from.has_user_memory()) {
      mutable_user_memory()->::Impinj::STP::UserMemory::MergeFrom(from.user_memory());
    }
    if (from.has_secure_password()) {
      mutable_secure_password()->::Impinj::STP::Password::MergeFrom(from.secure_password());
    }
    if (from.has_access_password()) {
      mutable_access_password()->::Impinj::STP::Password::MergeFrom(from.access_password());
    }
    if (from.has_kill_password()) {
      mutable_kill_password()->::Impinj::STP::Password::MergeFrom(from.kill_password());
    }
    if (from.has_lock_config()) {
      mutable_lock_config()->::Impinj::STP::LockConfig::MergeFrom(from.lock_config());
    }
    if (from.has_blockpermalock_config()) {
      mutable_blockpermalock_config()->::Impinj::STP::BlockPermalockConfig::MergeFrom(from.blockpermalock_config());
    }
    if (from.has_tid_memory()) {
      mutable_tid_memory()->::Impinj::STP::TIDMemory::MergeFrom(from.tid_memory());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_monza_r6p_feature_config()) {
      mutable_monza_r6p_feature_config()->::Impinj::STP::MonzaR6PFeatureConfig::MergeFrom(from.monza_r6p_feature_config());
    }
    if (from.has_monza_s6c_feature_config()) {
      mutable_monza_s6c_feature_config()->::Impinj::STP::MonzaS6CFeatureConfig::MergeFrom(from.monza_s6c_feature_config());
    }
    if (from.has_monza_r6_feature_config()) {
      mutable_monza_r6_feature_config()->::Impinj::STP::MonzaR6FeatureConfig::MergeFrom(from.monza_r6_feature_config());
    }
    if (from.has_monza_r6a_feature_config()) {
      mutable_monza_r6a_feature_config()->::Impinj::STP::MonzaR6AFeatureConfig::MergeFrom(from.monza_r6a_feature_config());
    }
  }
}

void OrderedListEntry::CopyFrom(const OrderedListEntry& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OrderedListEntry::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  if (has_epc_memory()) {
    if (!this->epc_memory().IsInitialized()) return false;
  }
  if (has_secure_password()) {
    if (!this->secure_password().IsInitialized()) return false;
  }
  if (has_access_password()) {
    if (!this->access_password().IsInitialized()) return false;
  }
  if (has_kill_password()) {
    if (!this->kill_password().IsInitialized()) return false;
  }
  if (has_lock_config()) {
    if (!this->lock_config().IsInitialized()) return false;
  }
  if (has_blockpermalock_config()) {
    if (!this->blockpermalock_config().IsInitialized()) return false;
  }
  if (has_tid_memory()) {
    if (!this->tid_memory().IsInitialized()) return false;
  }
  return true;
}

void OrderedListEntry::Swap(OrderedListEntry* other) {
  if (other != this) {
    std::swap(epc_memory_, other->epc_memory_);
    std::swap(user_memory_, other->user_memory_);
    std::swap(secure_password_, other->secure_password_);
    std::swap(access_password_, other->access_password_);
    std::swap(kill_password_, other->kill_password_);
    std::swap(lock_config_, other->lock_config_);
    std::swap(blockpermalock_config_, other->blockpermalock_config_);
    std::swap(tid_memory_, other->tid_memory_);
    std::swap(monza_r6p_feature_config_, other->monza_r6p_feature_config_);
    std::swap(monza_s6c_feature_config_, other->monza_s6c_feature_config_);
    std::swap(monza_r6_feature_config_, other->monza_r6_feature_config_);
    std::swap(monza_r6a_feature_config_, other->monza_r6a_feature_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OrderedListEntry::GetTypeName() const {
  return "Impinj.STP.OrderedListEntry";
}


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

#ifndef _MSC_VER
const int OrderedListEntries::kOrderedListEntriesFieldNumber;
#endif  // !_MSC_VER

OrderedListEntries::OrderedListEntries()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OrderedListEntries::InitAsDefaultInstance() {
}

OrderedListEntries::OrderedListEntries(const OrderedListEntries& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OrderedListEntries::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OrderedListEntries::~OrderedListEntries() {
  SharedDtor();
}

void OrderedListEntries::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void OrderedListEntries::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OrderedListEntries& OrderedListEntries::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OrderedListEntries* OrderedListEntries::default_instance_ = NULL;

OrderedListEntries* OrderedListEntries::New() const {
  return new OrderedListEntries;
}

void OrderedListEntries::Clear() {
  ordered_list_entries_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OrderedListEntries::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .Impinj.STP.OrderedListEntry ordered_list_entries = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_ordered_list_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_ordered_list_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_ordered_list_entries;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OrderedListEntries::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .Impinj.STP.OrderedListEntry ordered_list_entries = 1;
  for (int i = 0; i < this->ordered_list_entries_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->ordered_list_entries(i), output);
  }

}

int OrderedListEntries::ByteSize() const {
  int total_size = 0;

  // repeated .Impinj.STP.OrderedListEntry ordered_list_entries = 1;
  total_size += 1 * this->ordered_list_entries_size();
  for (int i = 0; i < this->ordered_list_entries_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->ordered_list_entries(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OrderedListEntries::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OrderedListEntries*>(&from));
}

void OrderedListEntries::MergeFrom(const OrderedListEntries& from) {
  GOOGLE_CHECK_NE(&from, this);
  ordered_list_entries_.MergeFrom(from.ordered_list_entries_);
}

void OrderedListEntries::CopyFrom(const OrderedListEntries& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OrderedListEntries::IsInitialized() const {

  for (int i = 0; i < ordered_list_entries_size(); i++) {
    if (!this->ordered_list_entries(i).IsInitialized()) return false;
  }
  return true;
}

void OrderedListEntries::Swap(OrderedListEntries* other) {
  if (other != this) {
    ordered_list_entries_.Swap(&other->ordered_list_entries_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OrderedListEntries::GetTypeName() const {
  return "Impinj.STP.OrderedListEntries";
}


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

#ifndef _MSC_VER
const int LowEncodeVolumeEventConfig::kEnableLowEncodeVolumeEventsFieldNumber;
const int LowEncodeVolumeEventConfig::kMonzaThresholdFieldNumber;
const int LowEncodeVolumeEventConfig::kNonMonzaThresholdFieldNumber;
const int LowEncodeVolumeEventConfig::kMonzaReminderPeriodFieldNumber;
const int LowEncodeVolumeEventConfig::kNonMonzaReminderPeriodFieldNumber;
#endif  // !_MSC_VER

LowEncodeVolumeEventConfig::LowEncodeVolumeEventConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void LowEncodeVolumeEventConfig::InitAsDefaultInstance() {
}

LowEncodeVolumeEventConfig::LowEncodeVolumeEventConfig(const LowEncodeVolumeEventConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void LowEncodeVolumeEventConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_low_encode_volume_events_ = true;
  monza_threshold_ = GOOGLE_ULONGLONG(200000);
  non_monza_threshold_ = GOOGLE_ULONGLONG(200000);
  monza_reminder_period_ = 50000u;
  non_monza_reminder_period_ = 50000u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

LowEncodeVolumeEventConfig::~LowEncodeVolumeEventConfig() {
  SharedDtor();
}

void LowEncodeVolumeEventConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void LowEncodeVolumeEventConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const LowEncodeVolumeEventConfig& LowEncodeVolumeEventConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

LowEncodeVolumeEventConfig* LowEncodeVolumeEventConfig::default_instance_ = NULL;

LowEncodeVolumeEventConfig* LowEncodeVolumeEventConfig::New() const {
  return new LowEncodeVolumeEventConfig;
}

void LowEncodeVolumeEventConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_low_encode_volume_events_ = true;
    monza_threshold_ = GOOGLE_ULONGLONG(200000);
    non_monza_threshold_ = GOOGLE_ULONGLONG(200000);
    monza_reminder_period_ = 50000u;
    non_monza_reminder_period_ = 50000u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool LowEncodeVolumeEventConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_low_encode_volume_events = 1 [default = true];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_low_encode_volume_events_)));
          set_has_enable_low_encode_volume_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_monza_threshold;
        break;
      }

      // optional uint64 monza_threshold = 2 [default = 200000];
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_monza_threshold:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &monza_threshold_)));
          set_has_monza_threshold();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_non_monza_threshold;
        break;
      }

      // optional uint64 non_monza_threshold = 3 [default = 200000];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_non_monza_threshold:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &non_monza_threshold_)));
          set_has_non_monza_threshold();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_monza_reminder_period;
        break;
      }

      // optional uint32 monza_reminder_period = 4 [default = 50000];
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_monza_reminder_period:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &monza_reminder_period_)));
          set_has_monza_reminder_period();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_non_monza_reminder_period;
        break;
      }

      // optional uint32 non_monza_reminder_period = 5 [default = 50000];
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_non_monza_reminder_period:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &non_monza_reminder_period_)));
          set_has_non_monza_reminder_period();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void LowEncodeVolumeEventConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_low_encode_volume_events = 1 [default = true];
  if (has_enable_low_encode_volume_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_low_encode_volume_events(), output);
  }

  // optional uint64 monza_threshold = 2 [default = 200000];
  if (has_monza_threshold()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->monza_threshold(), output);
  }

  // optional uint64 non_monza_threshold = 3 [default = 200000];
  if (has_non_monza_threshold()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->non_monza_threshold(), output);
  }

  // optional uint32 monza_reminder_period = 4 [default = 50000];
  if (has_monza_reminder_period()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->monza_reminder_period(), output);
  }

  // optional uint32 non_monza_reminder_period = 5 [default = 50000];
  if (has_non_monza_reminder_period()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->non_monza_reminder_period(), output);
  }

}

int LowEncodeVolumeEventConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_low_encode_volume_events = 1 [default = true];
    if (has_enable_low_encode_volume_events()) {
      total_size += 1 + 1;
    }

    // optional uint64 monza_threshold = 2 [default = 200000];
    if (has_monza_threshold()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->monza_threshold());
    }

    // optional uint64 non_monza_threshold = 3 [default = 200000];
    if (has_non_monza_threshold()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->non_monza_threshold());
    }

    // optional uint32 monza_reminder_period = 4 [default = 50000];
    if (has_monza_reminder_period()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->monza_reminder_period());
    }

    // optional uint32 non_monza_reminder_period = 5 [default = 50000];
    if (has_non_monza_reminder_period()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->non_monza_reminder_period());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void LowEncodeVolumeEventConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const LowEncodeVolumeEventConfig*>(&from));
}

void LowEncodeVolumeEventConfig::MergeFrom(const LowEncodeVolumeEventConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_low_encode_volume_events()) {
      set_enable_low_encode_volume_events(from.enable_low_encode_volume_events());
    }
    if (from.has_monza_threshold()) {
      set_monza_threshold(from.monza_threshold());
    }
    if (from.has_non_monza_threshold()) {
      set_non_monza_threshold(from.non_monza_threshold());
    }
    if (from.has_monza_reminder_period()) {
      set_monza_reminder_period(from.monza_reminder_period());
    }
    if (from.has_non_monza_reminder_period()) {
      set_non_monza_reminder_period(from.non_monza_reminder_period());
    }
  }
}

void LowEncodeVolumeEventConfig::CopyFrom(const LowEncodeVolumeEventConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool LowEncodeVolumeEventConfig::IsInitialized() const {

  return true;
}

void LowEncodeVolumeEventConfig::Swap(LowEncodeVolumeEventConfig* other) {
  if (other != this) {
    std::swap(enable_low_encode_volume_events_, other->enable_low_encode_volume_events_);
    std::swap(monza_threshold_, other->monza_threshold_);
    std::swap(non_monza_threshold_, other->non_monza_threshold_);
    std::swap(monza_reminder_period_, other->monza_reminder_period_);
    std::swap(non_monza_reminder_period_, other->non_monza_reminder_period_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string LowEncodeVolumeEventConfig::GetTypeName() const {
  return "Impinj.STP.LowEncodeVolumeEventConfig";
}


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

#ifndef _MSC_VER
const int DeviceEventConfig::kEnableOperationEventsFieldNumber;
const int DeviceEventConfig::kEnableGPIEventsFieldNumber;
const int DeviceEventConfig::kLowEncodeVolumeEventConfigFieldNumber;
#endif  // !_MSC_VER

DeviceEventConfig::DeviceEventConfig()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void DeviceEventConfig::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  low_encode_volume_event_config_ = const_cast< ::Impinj::STP::LowEncodeVolumeEventConfig*>(
      ::Impinj::STP::LowEncodeVolumeEventConfig::internal_default_instance());
#else
  low_encode_volume_event_config_ = const_cast< ::Impinj::STP::LowEncodeVolumeEventConfig*>(&::Impinj::STP::LowEncodeVolumeEventConfig::default_instance());
#endif
}

DeviceEventConfig::DeviceEventConfig(const DeviceEventConfig& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void DeviceEventConfig::SharedCtor() {
  _cached_size_ = 0;
  enable_operation_events_ = true;
  enable_gpi_events_ = false;
  low_encode_volume_event_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

DeviceEventConfig::~DeviceEventConfig() {
  SharedDtor();
}

void DeviceEventConfig::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete low_encode_volume_event_config_;
  }
}

void DeviceEventConfig::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const DeviceEventConfig& DeviceEventConfig::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

DeviceEventConfig* DeviceEventConfig::default_instance_ = NULL;

DeviceEventConfig* DeviceEventConfig::New() const {
  return new DeviceEventConfig;
}

void DeviceEventConfig::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    enable_operation_events_ = true;
    enable_gpi_events_ = false;
    if (has_low_encode_volume_event_config()) {
      if (low_encode_volume_event_config_ != NULL) low_encode_volume_event_config_->::Impinj::STP::LowEncodeVolumeEventConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool DeviceEventConfig::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool enable_operation_events = 1 [default = true];
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_operation_events_)));
          set_has_enable_operation_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_enable_GPI_events;
        break;
      }

      // optional bool enable_GPI_events = 3 [default = false];
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_enable_GPI_events:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &enable_gpi_events_)));
          set_has_enable_gpi_events();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_low_encode_volume_event_config;
        break;
      }

      // optional .Impinj.STP.LowEncodeVolumeEventConfig low_encode_volume_event_config = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_low_encode_volume_event_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_low_encode_volume_event_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void DeviceEventConfig::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool enable_operation_events = 1 [default = true];
  if (has_enable_operation_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->enable_operation_events(), output);
  }

  // optional bool enable_GPI_events = 3 [default = false];
  if (has_enable_gpi_events()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->enable_gpi_events(), output);
  }

  // optional .Impinj.STP.LowEncodeVolumeEventConfig low_encode_volume_event_config = 6;
  if (has_low_encode_volume_event_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->low_encode_volume_event_config(), output);
  }

}

int DeviceEventConfig::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool enable_operation_events = 1 [default = true];
    if (has_enable_operation_events()) {
      total_size += 1 + 1;
    }

    // optional bool enable_GPI_events = 3 [default = false];
    if (has_enable_gpi_events()) {
      total_size += 1 + 1;
    }

    // optional .Impinj.STP.LowEncodeVolumeEventConfig low_encode_volume_event_config = 6;
    if (has_low_encode_volume_event_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->low_encode_volume_event_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void DeviceEventConfig::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const DeviceEventConfig*>(&from));
}

void DeviceEventConfig::MergeFrom(const DeviceEventConfig& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_enable_operation_events()) {
      set_enable_operation_events(from.enable_operation_events());
    }
    if (from.has_enable_gpi_events()) {
      set_enable_gpi_events(from.enable_gpi_events());
    }
    if (from.has_low_encode_volume_event_config()) {
      mutable_low_encode_volume_event_config()->::Impinj::STP::LowEncodeVolumeEventConfig::MergeFrom(from.low_encode_volume_event_config());
    }
  }
}

void DeviceEventConfig::CopyFrom(const DeviceEventConfig& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceEventConfig::IsInitialized() const {

  return true;
}

void DeviceEventConfig::Swap(DeviceEventConfig* other) {
  if (other != this) {
    std::swap(enable_operation_events_, other->enable_operation_events_);
    std::swap(enable_gpi_events_, other->enable_gpi_events_);
    std::swap(low_encode_volume_event_config_, other->low_encode_volume_event_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string DeviceEventConfig::GetTypeName() const {
  return "Impinj.STP.DeviceEventConfig";
}


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

#ifndef _MSC_VER
const int OperationSummaryReport::kTimestampFieldNumber;
const int OperationSummaryReport::kOperationResultFieldNumber;
const int OperationSummaryReport::kOperationResultDetailFieldNumber;
const int OperationSummaryReport::kOperationElapsedTimeFieldNumber;
const int OperationSummaryReport::kTagOperationTotalCountFieldNumber;
const int OperationSummaryReport::kTagOperationPassCountFieldNumber;
const int OperationSummaryReport::kTagOperationFailCountFieldNumber;
#endif  // !_MSC_VER

OperationSummaryReport::OperationSummaryReport()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OperationSummaryReport::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
}

OperationSummaryReport::OperationSummaryReport(const OperationSummaryReport& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OperationSummaryReport::SharedCtor() {
  _cached_size_ = 0;
  timestamp_ = NULL;
  operation_result_ = 0;
  operation_result_detail_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  operation_elapsed_time_ = 0u;
  tag_operation_total_count_ = 0u;
  tag_operation_pass_count_ = 0u;
  tag_operation_fail_count_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OperationSummaryReport::~OperationSummaryReport() {
  SharedDtor();
}

void OperationSummaryReport::SharedDtor() {
  if (operation_result_detail_ != &::google::protobuf::internal::kEmptyString) {
    delete operation_result_detail_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete timestamp_;
  }
}

void OperationSummaryReport::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OperationSummaryReport& OperationSummaryReport::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OperationSummaryReport* OperationSummaryReport::default_instance_ = NULL;

OperationSummaryReport* OperationSummaryReport::New() const {
  return new OperationSummaryReport;
}

void OperationSummaryReport::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_timestamp()) {
      if (timestamp_ != NULL) timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    operation_result_ = 0;
    if (has_operation_result_detail()) {
      if (operation_result_detail_ != &::google::protobuf::internal::kEmptyString) {
        operation_result_detail_->clear();
      }
    }
    operation_elapsed_time_ = 0u;
    tag_operation_total_count_ = 0u;
    tag_operation_pass_count_ = 0u;
    tag_operation_fail_count_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OperationSummaryReport::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.Timestamp timestamp = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_operation_result;
        break;
      }

      // required .Impinj.STP.OperationSummaryResult operation_result = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_operation_result:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::OperationSummaryResult_IsValid(value)) {
            set_operation_result(static_cast< ::Impinj::STP::OperationSummaryResult >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_operation_result_detail;
        break;
      }

      // optional string operation_result_detail = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_operation_result_detail:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_operation_result_detail()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_operation_elapsed_time;
        break;
      }

      // optional uint32 operation_elapsed_time = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_operation_elapsed_time:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &operation_elapsed_time_)));
          set_has_operation_elapsed_time();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_tag_operation_total_count;
        break;
      }

      // optional uint32 tag_operation_total_count = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_operation_total_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tag_operation_total_count_)));
          set_has_tag_operation_total_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_tag_operation_pass_count;
        break;
      }

      // optional uint32 tag_operation_pass_count = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_operation_pass_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tag_operation_pass_count_)));
          set_has_tag_operation_pass_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_tag_operation_fail_count;
        break;
      }

      // optional uint32 tag_operation_fail_count = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_operation_fail_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &tag_operation_fail_count_)));
          set_has_tag_operation_fail_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OperationSummaryReport::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.Timestamp timestamp = 1;
  if (has_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->timestamp(), output);
  }

  // required .Impinj.STP.OperationSummaryResult operation_result = 2;
  if (has_operation_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->operation_result(), output);
  }

  // optional string operation_result_detail = 3;
  if (has_operation_result_detail()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->operation_result_detail(), output);
  }

  // optional uint32 operation_elapsed_time = 4;
  if (has_operation_elapsed_time()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->operation_elapsed_time(), output);
  }

  // optional uint32 tag_operation_total_count = 5;
  if (has_tag_operation_total_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->tag_operation_total_count(), output);
  }

  // optional uint32 tag_operation_pass_count = 6;
  if (has_tag_operation_pass_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->tag_operation_pass_count(), output);
  }

  // optional uint32 tag_operation_fail_count = 7;
  if (has_tag_operation_fail_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(7, this->tag_operation_fail_count(), output);
  }

}

int OperationSummaryReport::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.Timestamp timestamp = 1;
    if (has_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->timestamp());
    }

    // required .Impinj.STP.OperationSummaryResult operation_result = 2;
    if (has_operation_result()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->operation_result());
    }

    // optional string operation_result_detail = 3;
    if (has_operation_result_detail()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->operation_result_detail());
    }

    // optional uint32 operation_elapsed_time = 4;
    if (has_operation_elapsed_time()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->operation_elapsed_time());
    }

    // optional uint32 tag_operation_total_count = 5;
    if (has_tag_operation_total_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tag_operation_total_count());
    }

    // optional uint32 tag_operation_pass_count = 6;
    if (has_tag_operation_pass_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tag_operation_pass_count());
    }

    // optional uint32 tag_operation_fail_count = 7;
    if (has_tag_operation_fail_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->tag_operation_fail_count());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OperationSummaryReport::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OperationSummaryReport*>(&from));
}

void OperationSummaryReport::MergeFrom(const OperationSummaryReport& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_timestamp()) {
      mutable_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.timestamp());
    }
    if (from.has_operation_result()) {
      set_operation_result(from.operation_result());
    }
    if (from.has_operation_result_detail()) {
      set_operation_result_detail(from.operation_result_detail());
    }
    if (from.has_operation_elapsed_time()) {
      set_operation_elapsed_time(from.operation_elapsed_time());
    }
    if (from.has_tag_operation_total_count()) {
      set_tag_operation_total_count(from.tag_operation_total_count());
    }
    if (from.has_tag_operation_pass_count()) {
      set_tag_operation_pass_count(from.tag_operation_pass_count());
    }
    if (from.has_tag_operation_fail_count()) {
      set_tag_operation_fail_count(from.tag_operation_fail_count());
    }
  }
}

void OperationSummaryReport::CopyFrom(const OperationSummaryReport& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OperationSummaryReport::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;

  return true;
}

void OperationSummaryReport::Swap(OperationSummaryReport* other) {
  if (other != this) {
    std::swap(timestamp_, other->timestamp_);
    std::swap(operation_result_, other->operation_result_);
    std::swap(operation_result_detail_, other->operation_result_detail_);
    std::swap(operation_elapsed_time_, other->operation_elapsed_time_);
    std::swap(tag_operation_total_count_, other->tag_operation_total_count_);
    std::swap(tag_operation_pass_count_, other->tag_operation_pass_count_);
    std::swap(tag_operation_fail_count_, other->tag_operation_fail_count_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OperationSummaryReport::GetTypeName() const {
  return "Impinj.STP.OperationSummaryReport";
}


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

#ifndef _MSC_VER
const int TagOperationReport::kTagOperationReportTypeFieldNumber;
const int TagOperationReport::kTagOperationResultFieldNumber;
const int TagOperationReport::kTagOperationResultDetailFieldNumber;
const int TagOperationReport::kTIDFieldNumber;
const int TagOperationReport::kEPCFieldNumber;
const int TagOperationReport::kEPCAttemptedFieldNumber;
const int TagOperationReport::kUserMemoryInvFieldNumber;
const int TagOperationReport::kEPCMemoryResultFieldNumber;
const int TagOperationReport::kAccessPasswordResultFieldNumber;
const int TagOperationReport::kKillPasswordResultFieldNumber;
const int TagOperationReport::kLockConfigResultFieldNumber;
const int TagOperationReport::kUserMemoryResultFieldNumber;
const int TagOperationReport::kBlockpermalockResultFieldNumber;
const int TagOperationReport::kKillTagResultFieldNumber;
const int TagOperationReport::kPcWordResultFieldNumber;
const int TagOperationReport::kTagSpecificFeatureConfigResultFieldNumber;
const int TagOperationReport::kTidWriteResultFieldNumber;
const int TagOperationReport::kTimestampFieldNumber;
const int TagOperationReport::kAntennaIDFieldNumber;
const int TagOperationReport::kFrequencyFieldNumber;
const int TagOperationReport::kRSSIFieldNumber;
const int TagOperationReport::kJobIdFieldNumber;
#endif  // !_MSC_VER

TagOperationReport::TagOperationReport()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TagOperationReport::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
}

TagOperationReport::TagOperationReport(const TagOperationReport& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TagOperationReport::SharedCtor() {
  _cached_size_ = 0;
  tag_operation_report_type_ = 0;
  tag_operation_result_ = 0;
  tag_operation_result_detail_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  tid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  epc_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  epc_attempted_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  user_memory_inv_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  epc_memory_result_ = false;
  access_password_result_ = false;
  kill_password_result_ = false;
  lock_config_result_ = false;
  user_memory_result_ = false;
  blockpermalock_result_ = false;
  kill_tag_result_ = false;
  pc_word_result_ = false;
  tag_specific_feature_config_result_ = false;
  tid_write_result_ = false;
  timestamp_ = NULL;
  antenna_id_ = 0u;
  frequency_ = 0u;
  rssi_ = 0;
  job_id_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TagOperationReport::~TagOperationReport() {
  SharedDtor();
}

void TagOperationReport::SharedDtor() {
  if (tag_operation_result_detail_ != &::google::protobuf::internal::kEmptyString) {
    delete tag_operation_result_detail_;
  }
  if (tid_ != &::google::protobuf::internal::kEmptyString) {
    delete tid_;
  }
  if (epc_ != &::google::protobuf::internal::kEmptyString) {
    delete epc_;
  }
  if (epc_attempted_ != &::google::protobuf::internal::kEmptyString) {
    delete epc_attempted_;
  }
  if (user_memory_inv_ != &::google::protobuf::internal::kEmptyString) {
    delete user_memory_inv_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete timestamp_;
  }
}

void TagOperationReport::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TagOperationReport& TagOperationReport::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TagOperationReport* TagOperationReport::default_instance_ = NULL;

TagOperationReport* TagOperationReport::New() const {
  return new TagOperationReport;
}

void TagOperationReport::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    tag_operation_report_type_ = 0;
    tag_operation_result_ = 0;
    if (has_tag_operation_result_detail()) {
      if (tag_operation_result_detail_ != &::google::protobuf::internal::kEmptyString) {
        tag_operation_result_detail_->clear();
      }
    }
    if (has_tid()) {
      if (tid_ != &::google::protobuf::internal::kEmptyString) {
        tid_->clear();
      }
    }
    if (has_epc()) {
      if (epc_ != &::google::protobuf::internal::kEmptyString) {
        epc_->clear();
      }
    }
    if (has_epc_attempted()) {
      if (epc_attempted_ != &::google::protobuf::internal::kEmptyString) {
        epc_attempted_->clear();
      }
    }
    if (has_user_memory_inv()) {
      if (user_memory_inv_ != &::google::protobuf::internal::kEmptyString) {
        user_memory_inv_->clear();
      }
    }
    epc_memory_result_ = false;
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    access_password_result_ = false;
    kill_password_result_ = false;
    lock_config_result_ = false;
    user_memory_result_ = false;
    blockpermalock_result_ = false;
    kill_tag_result_ = false;
    pc_word_result_ = false;
    tag_specific_feature_config_result_ = false;
  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    tid_write_result_ = false;
    if (has_timestamp()) {
      if (timestamp_ != NULL) timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    antenna_id_ = 0u;
    frequency_ = 0u;
    rssi_ = 0;
    job_id_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TagOperationReport::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.TagOperationReportType tag_operation_report_type = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::TagOperationReportType_IsValid(value)) {
            set_tag_operation_report_type(static_cast< ::Impinj::STP::TagOperationReportType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_tag_operation_result;
        break;
      }

      // optional .Impinj.STP.TagOperationResult tag_operation_result = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_operation_result:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::TagOperationResult_IsValid(value)) {
            set_tag_operation_result(static_cast< ::Impinj::STP::TagOperationResult >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_tag_operation_result_detail;
        break;
      }

      // optional string tag_operation_result_detail = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_tag_operation_result_detail:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_tag_operation_result_detail()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_TID;
        break;
      }

      // optional bytes TID = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_TID:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_tid()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_EPC;
        break;
      }

      // optional bytes EPC = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_EPC:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_epc()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_EPC_attempted;
        break;
      }

      // optional bytes EPC_attempted = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_EPC_attempted:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_epc_attempted()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_EPC_memory_result;
        break;
      }

      // optional bool EPC_memory_result = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_EPC_memory_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &epc_memory_result_)));
          set_has_epc_memory_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(64)) goto parse_access_password_result;
        break;
      }

      // optional bool access_password_result = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_access_password_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &access_password_result_)));
          set_has_access_password_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(72)) goto parse_kill_password_result;
        break;
      }

      // optional bool kill_password_result = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_kill_password_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_password_result_)));
          set_has_kill_password_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_lock_config_result;
        break;
      }

      // optional bool lock_config_result = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_lock_config_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &lock_config_result_)));
          set_has_lock_config_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(88)) goto parse_user_memory_result;
        break;
      }

      // optional bool user_memory_result = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_user_memory_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &user_memory_result_)));
          set_has_user_memory_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96)) goto parse_blockpermalock_result;
        break;
      }

      // optional bool blockpermalock_result = 12;
      case 12: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_blockpermalock_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &blockpermalock_result_)));
          set_has_blockpermalock_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(106)) goto parse_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp timestamp = 13;
      case 13: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(112)) goto parse_antenna_ID;
        break;
      }

      // optional uint32 antenna_ID = 14;
      case 14: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_antenna_ID:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &antenna_id_)));
          set_has_antenna_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(120)) goto parse_frequency;
        break;
      }

      // optional uint32 frequency = 15;
      case 15: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_frequency:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &frequency_)));
          set_has_frequency();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(128)) goto parse_RSSI;
        break;
      }

      // optional sint32 RSSI = 16;
      case 16: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_RSSI:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
                 input, &rssi_)));
          set_has_rssi();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(136)) goto parse_job_id;
        break;
      }

      // optional uint32 job_id = 17;
      case 17: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_job_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &job_id_)));
          set_has_job_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(144)) goto parse_kill_tag_result;
        break;
      }

      // optional bool kill_tag_result = 18;
      case 18: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_kill_tag_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &kill_tag_result_)));
          set_has_kill_tag_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(154)) goto parse_user_memory_inv;
        break;
      }

      // optional bytes user_memory_inv = 19;
      case 19: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_user_memory_inv:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_user_memory_inv()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(160)) goto parse_pc_word_result;
        break;
      }

      // optional bool pc_word_result = 20;
      case 20: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_pc_word_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &pc_word_result_)));
          set_has_pc_word_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(168)) goto parse_tag_specific_feature_config_result;
        break;
      }

      // optional bool tag_specific_feature_config_result = 21;
      case 21: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tag_specific_feature_config_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &tag_specific_feature_config_result_)));
          set_has_tag_specific_feature_config_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(176)) goto parse_tid_write_result;
        break;
      }

      // optional bool tid_write_result = 22;
      case 22: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_tid_write_result:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &tid_write_result_)));
          set_has_tid_write_result();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TagOperationReport::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.TagOperationReportType tag_operation_report_type = 1;
  if (has_tag_operation_report_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->tag_operation_report_type(), output);
  }

  // optional .Impinj.STP.TagOperationResult tag_operation_result = 2;
  if (has_tag_operation_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->tag_operation_result(), output);
  }

  // optional string tag_operation_result_detail = 3;
  if (has_tag_operation_result_detail()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->tag_operation_result_detail(), output);
  }

  // optional bytes TID = 4;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      4, this->tid(), output);
  }

  // optional bytes EPC = 5;
  if (has_epc()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      5, this->epc(), output);
  }

  // optional bytes EPC_attempted = 6;
  if (has_epc_attempted()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      6, this->epc_attempted(), output);
  }

  // optional bool EPC_memory_result = 7;
  if (has_epc_memory_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->epc_memory_result(), output);
  }

  // optional bool access_password_result = 8;
  if (has_access_password_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->access_password_result(), output);
  }

  // optional bool kill_password_result = 9;
  if (has_kill_password_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(9, this->kill_password_result(), output);
  }

  // optional bool lock_config_result = 10;
  if (has_lock_config_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->lock_config_result(), output);
  }

  // optional bool user_memory_result = 11;
  if (has_user_memory_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(11, this->user_memory_result(), output);
  }

  // optional bool blockpermalock_result = 12;
  if (has_blockpermalock_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->blockpermalock_result(), output);
  }

  // optional .Impinj.STP.Timestamp timestamp = 13;
  if (has_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      13, this->timestamp(), output);
  }

  // optional uint32 antenna_ID = 14;
  if (has_antenna_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(14, this->antenna_id(), output);
  }

  // optional uint32 frequency = 15;
  if (has_frequency()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(15, this->frequency(), output);
  }

  // optional sint32 RSSI = 16;
  if (has_rssi()) {
    ::google::protobuf::internal::WireFormatLite::WriteSInt32(16, this->rssi(), output);
  }

  // optional uint32 job_id = 17;
  if (has_job_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(17, this->job_id(), output);
  }

  // optional bool kill_tag_result = 18;
  if (has_kill_tag_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(18, this->kill_tag_result(), output);
  }

  // optional bytes user_memory_inv = 19;
  if (has_user_memory_inv()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      19, this->user_memory_inv(), output);
  }

  // optional bool pc_word_result = 20;
  if (has_pc_word_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(20, this->pc_word_result(), output);
  }

  // optional bool tag_specific_feature_config_result = 21;
  if (has_tag_specific_feature_config_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(21, this->tag_specific_feature_config_result(), output);
  }

  // optional bool tid_write_result = 22;
  if (has_tid_write_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(22, this->tid_write_result(), output);
  }

}

int TagOperationReport::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.TagOperationReportType tag_operation_report_type = 1;
    if (has_tag_operation_report_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->tag_operation_report_type());
    }

    // optional .Impinj.STP.TagOperationResult tag_operation_result = 2;
    if (has_tag_operation_result()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->tag_operation_result());
    }

    // optional string tag_operation_result_detail = 3;
    if (has_tag_operation_result_detail()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->tag_operation_result_detail());
    }

    // optional bytes TID = 4;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->tid());
    }

    // optional bytes EPC = 5;
    if (has_epc()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->epc());
    }

    // optional bytes EPC_attempted = 6;
    if (has_epc_attempted()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->epc_attempted());
    }

    // optional bytes user_memory_inv = 19;
    if (has_user_memory_inv()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->user_memory_inv());
    }

    // optional bool EPC_memory_result = 7;
    if (has_epc_memory_result()) {
      total_size += 1 + 1;
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional bool access_password_result = 8;
    if (has_access_password_result()) {
      total_size += 1 + 1;
    }

    // optional bool kill_password_result = 9;
    if (has_kill_password_result()) {
      total_size += 1 + 1;
    }

    // optional bool lock_config_result = 10;
    if (has_lock_config_result()) {
      total_size += 1 + 1;
    }

    // optional bool user_memory_result = 11;
    if (has_user_memory_result()) {
      total_size += 1 + 1;
    }

    // optional bool blockpermalock_result = 12;
    if (has_blockpermalock_result()) {
      total_size += 1 + 1;
    }

    // optional bool kill_tag_result = 18;
    if (has_kill_tag_result()) {
      total_size += 2 + 1;
    }

    // optional bool pc_word_result = 20;
    if (has_pc_word_result()) {
      total_size += 2 + 1;
    }

    // optional bool tag_specific_feature_config_result = 21;
    if (has_tag_specific_feature_config_result()) {
      total_size += 2 + 1;
    }

  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    // optional bool tid_write_result = 22;
    if (has_tid_write_result()) {
      total_size += 2 + 1;
    }

    // optional .Impinj.STP.Timestamp timestamp = 13;
    if (has_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->timestamp());
    }

    // optional uint32 antenna_ID = 14;
    if (has_antenna_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->antenna_id());
    }

    // optional uint32 frequency = 15;
    if (has_frequency()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->frequency());
    }

    // optional sint32 RSSI = 16;
    if (has_rssi()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::SInt32Size(
          this->rssi());
    }

    // optional uint32 job_id = 17;
    if (has_job_id()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->job_id());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TagOperationReport::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TagOperationReport*>(&from));
}

void TagOperationReport::MergeFrom(const TagOperationReport& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_tag_operation_report_type()) {
      set_tag_operation_report_type(from.tag_operation_report_type());
    }
    if (from.has_tag_operation_result()) {
      set_tag_operation_result(from.tag_operation_result());
    }
    if (from.has_tag_operation_result_detail()) {
      set_tag_operation_result_detail(from.tag_operation_result_detail());
    }
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_epc()) {
      set_epc(from.epc());
    }
    if (from.has_epc_attempted()) {
      set_epc_attempted(from.epc_attempted());
    }
    if (from.has_user_memory_inv()) {
      set_user_memory_inv(from.user_memory_inv());
    }
    if (from.has_epc_memory_result()) {
      set_epc_memory_result(from.epc_memory_result());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_access_password_result()) {
      set_access_password_result(from.access_password_result());
    }
    if (from.has_kill_password_result()) {
      set_kill_password_result(from.kill_password_result());
    }
    if (from.has_lock_config_result()) {
      set_lock_config_result(from.lock_config_result());
    }
    if (from.has_user_memory_result()) {
      set_user_memory_result(from.user_memory_result());
    }
    if (from.has_blockpermalock_result()) {
      set_blockpermalock_result(from.blockpermalock_result());
    }
    if (from.has_kill_tag_result()) {
      set_kill_tag_result(from.kill_tag_result());
    }
    if (from.has_pc_word_result()) {
      set_pc_word_result(from.pc_word_result());
    }
    if (from.has_tag_specific_feature_config_result()) {
      set_tag_specific_feature_config_result(from.tag_specific_feature_config_result());
    }
  }
  if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (from.has_tid_write_result()) {
      set_tid_write_result(from.tid_write_result());
    }
    if (from.has_timestamp()) {
      mutable_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.timestamp());
    }
    if (from.has_antenna_id()) {
      set_antenna_id(from.antenna_id());
    }
    if (from.has_frequency()) {
      set_frequency(from.frequency());
    }
    if (from.has_rssi()) {
      set_rssi(from.rssi());
    }
    if (from.has_job_id()) {
      set_job_id(from.job_id());
    }
  }
}

void TagOperationReport::CopyFrom(const TagOperationReport& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TagOperationReport::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void TagOperationReport::Swap(TagOperationReport* other) {
  if (other != this) {
    std::swap(tag_operation_report_type_, other->tag_operation_report_type_);
    std::swap(tag_operation_result_, other->tag_operation_result_);
    std::swap(tag_operation_result_detail_, other->tag_operation_result_detail_);
    std::swap(tid_, other->tid_);
    std::swap(epc_, other->epc_);
    std::swap(epc_attempted_, other->epc_attempted_);
    std::swap(user_memory_inv_, other->user_memory_inv_);
    std::swap(epc_memory_result_, other->epc_memory_result_);
    std::swap(access_password_result_, other->access_password_result_);
    std::swap(kill_password_result_, other->kill_password_result_);
    std::swap(lock_config_result_, other->lock_config_result_);
    std::swap(user_memory_result_, other->user_memory_result_);
    std::swap(blockpermalock_result_, other->blockpermalock_result_);
    std::swap(kill_tag_result_, other->kill_tag_result_);
    std::swap(pc_word_result_, other->pc_word_result_);
    std::swap(tag_specific_feature_config_result_, other->tag_specific_feature_config_result_);
    std::swap(tid_write_result_, other->tid_write_result_);
    std::swap(timestamp_, other->timestamp_);
    std::swap(antenna_id_, other->antenna_id_);
    std::swap(frequency_, other->frequency_);
    std::swap(rssi_, other->rssi_);
    std::swap(job_id_, other->job_id_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TagOperationReport::GetTypeName() const {
  return "Impinj.STP.TagOperationReport";
}


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

#ifndef _MSC_VER
const int CartonContentsTag::kTidFieldNumber;
const int CartonContentsTag::kEpcFieldNumber;
const int CartonContentsTag::kConfidenceFieldNumber;
const int CartonContentsTag::kMetric1FieldNumber;
const int CartonContentsTag::kMetric2FieldNumber;
const int CartonContentsTag::kMetric3FieldNumber;
#endif  // !_MSC_VER

CartonContentsTag::CartonContentsTag()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void CartonContentsTag::InitAsDefaultInstance() {
}

CartonContentsTag::CartonContentsTag(const CartonContentsTag& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void CartonContentsTag::SharedCtor() {
  _cached_size_ = 0;
  tid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  epc_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  confidence_ = 0u;
  metric_1_ = 0u;
  metric_2_ = 0u;
  metric_3_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

CartonContentsTag::~CartonContentsTag() {
  SharedDtor();
}

void CartonContentsTag::SharedDtor() {
  if (tid_ != &::google::protobuf::internal::kEmptyString) {
    delete tid_;
  }
  if (epc_ != &::google::protobuf::internal::kEmptyString) {
    delete epc_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void CartonContentsTag::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const CartonContentsTag& CartonContentsTag::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

CartonContentsTag* CartonContentsTag::default_instance_ = NULL;

CartonContentsTag* CartonContentsTag::New() const {
  return new CartonContentsTag;
}

void CartonContentsTag::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_tid()) {
      if (tid_ != &::google::protobuf::internal::kEmptyString) {
        tid_->clear();
      }
    }
    if (has_epc()) {
      if (epc_ != &::google::protobuf::internal::kEmptyString) {
        epc_->clear();
      }
    }
    confidence_ = 0u;
    metric_1_ = 0u;
    metric_2_ = 0u;
    metric_3_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool CartonContentsTag::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes tid = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_tid()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_epc;
        break;
      }

      // optional bytes epc = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_epc:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_epc()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_confidence;
        break;
      }

      // optional uint32 confidence = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_confidence:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &confidence_)));
          set_has_confidence();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_metric_1;
        break;
      }

      // optional uint32 metric_1 = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_metric_1:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &metric_1_)));
          set_has_metric_1();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(40)) goto parse_metric_2;
        break;
      }

      // optional uint32 metric_2 = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_metric_2:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &metric_2_)));
          set_has_metric_2();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_metric_3;
        break;
      }

      // optional uint32 metric_3 = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_metric_3:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &metric_3_)));
          set_has_metric_3();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void CartonContentsTag::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes tid = 1;
  if (has_tid()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->tid(), output);
  }

  // optional bytes epc = 2;
  if (has_epc()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->epc(), output);
  }

  // optional uint32 confidence = 3;
  if (has_confidence()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->confidence(), output);
  }

  // optional uint32 metric_1 = 4;
  if (has_metric_1()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->metric_1(), output);
  }

  // optional uint32 metric_2 = 5;
  if (has_metric_2()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->metric_2(), output);
  }

  // optional uint32 metric_3 = 6;
  if (has_metric_3()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->metric_3(), output);
  }

}

int CartonContentsTag::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes tid = 1;
    if (has_tid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->tid());
    }

    // optional bytes epc = 2;
    if (has_epc()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->epc());
    }

    // optional uint32 confidence = 3;
    if (has_confidence()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->confidence());
    }

    // optional uint32 metric_1 = 4;
    if (has_metric_1()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->metric_1());
    }

    // optional uint32 metric_2 = 5;
    if (has_metric_2()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->metric_2());
    }

    // optional uint32 metric_3 = 6;
    if (has_metric_3()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->metric_3());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void CartonContentsTag::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const CartonContentsTag*>(&from));
}

void CartonContentsTag::MergeFrom(const CartonContentsTag& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_tid()) {
      set_tid(from.tid());
    }
    if (from.has_epc()) {
      set_epc(from.epc());
    }
    if (from.has_confidence()) {
      set_confidence(from.confidence());
    }
    if (from.has_metric_1()) {
      set_metric_1(from.metric_1());
    }
    if (from.has_metric_2()) {
      set_metric_2(from.metric_2());
    }
    if (from.has_metric_3()) {
      set_metric_3(from.metric_3());
    }
  }
}

void CartonContentsTag::CopyFrom(const CartonContentsTag& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool CartonContentsTag::IsInitialized() const {

  return true;
}

void CartonContentsTag::Swap(CartonContentsTag* other) {
  if (other != this) {
    std::swap(tid_, other->tid_);
    std::swap(epc_, other->epc_);
    std::swap(confidence_, other->confidence_);
    std::swap(metric_1_, other->metric_1_);
    std::swap(metric_2_, other->metric_2_);
    std::swap(metric_3_, other->metric_3_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string CartonContentsTag::GetTypeName() const {
  return "Impinj.STP.CartonContentsTag";
}


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

#ifndef _MSC_VER
const int CartonContentsReport::kCartonContentsResultFieldNumber;
const int CartonContentsReport::kEnterTimestampFieldNumber;
const int CartonContentsReport::kExitTimestampFieldNumber;
const int CartonContentsReport::kCartonSizeFieldNumber;
const int CartonContentsReport::kCartonContentsTagFieldNumber;
const int CartonContentsReport::kCartonContentsErrorFieldNumber;
const int CartonContentsReport::kStartTimestampFieldNumber;
const int CartonContentsReport::kStopTimestampFieldNumber;
#endif  // !_MSC_VER

CartonContentsReport::CartonContentsReport()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void CartonContentsReport::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  enter_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  enter_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  exit_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  exit_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  start_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  start_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  stop_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  stop_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
}

CartonContentsReport::CartonContentsReport(const CartonContentsReport& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void CartonContentsReport::SharedCtor() {
  _cached_size_ = 0;
  carton_contents_result_ = 1;
  enter_timestamp_ = NULL;
  exit_timestamp_ = NULL;
  carton_size_ = 0u;
  start_timestamp_ = NULL;
  stop_timestamp_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

CartonContentsReport::~CartonContentsReport() {
  SharedDtor();
}

void CartonContentsReport::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete enter_timestamp_;
    delete exit_timestamp_;
    delete start_timestamp_;
    delete stop_timestamp_;
  }
}

void CartonContentsReport::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const CartonContentsReport& CartonContentsReport::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

CartonContentsReport* CartonContentsReport::default_instance_ = NULL;

CartonContentsReport* CartonContentsReport::New() const {
  return new CartonContentsReport;
}

void CartonContentsReport::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    carton_contents_result_ = 1;
    if (has_enter_timestamp()) {
      if (enter_timestamp_ != NULL) enter_timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    if (has_exit_timestamp()) {
      if (exit_timestamp_ != NULL) exit_timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    carton_size_ = 0u;
    if (has_start_timestamp()) {
      if (start_timestamp_ != NULL) start_timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    if (has_stop_timestamp()) {
      if (stop_timestamp_ != NULL) stop_timestamp_->::Impinj::STP::Timestamp::Clear();
    }
  }
  carton_contents_tag_.Clear();
  carton_contents_error_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool CartonContentsReport::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.CartonContentsResult carton_contents_result = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::CartonContentsResult_IsValid(value)) {
            set_carton_contents_result(static_cast< ::Impinj::STP::CartonContentsResult >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_start_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp start_timestamp = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_start_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_start_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_stop_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp stop_timestamp = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_stop_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_stop_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_carton_contents_tag;
        break;
      }

      // repeated .Impinj.STP.CartonContentsTag carton_contents_tag = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_carton_contents_tag:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_carton_contents_tag()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_carton_contents_tag;
        if (input->ExpectTag(42)) goto parse_enter_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp enter_timestamp = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_enter_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_enter_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_exit_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp exit_timestamp = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_exit_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_exit_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_carton_size;
        break;
      }

      // optional uint32 carton_size = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_carton_size:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &carton_size_)));
          set_has_carton_size();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_carton_contents_error;
        break;
      }

      // repeated .Impinj.STP.CartonContentsError carton_contents_error = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_carton_contents_error:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_carton_contents_error()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_carton_contents_error;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void CartonContentsReport::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.CartonContentsResult carton_contents_result = 1;
  if (has_carton_contents_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->carton_contents_result(), output);
  }

  // optional .Impinj.STP.Timestamp start_timestamp = 2;
  if (has_start_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->start_timestamp(), output);
  }

  // optional .Impinj.STP.Timestamp stop_timestamp = 3;
  if (has_stop_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->stop_timestamp(), output);
  }

  // repeated .Impinj.STP.CartonContentsTag carton_contents_tag = 4;
  for (int i = 0; i < this->carton_contents_tag_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->carton_contents_tag(i), output);
  }

  // optional .Impinj.STP.Timestamp enter_timestamp = 5;
  if (has_enter_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->enter_timestamp(), output);
  }

  // optional .Impinj.STP.Timestamp exit_timestamp = 6;
  if (has_exit_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->exit_timestamp(), output);
  }

  // optional uint32 carton_size = 7;
  if (has_carton_size()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(7, this->carton_size(), output);
  }

  // repeated .Impinj.STP.CartonContentsError carton_contents_error = 8;
  for (int i = 0; i < this->carton_contents_error_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->carton_contents_error(i), output);
  }

}

int CartonContentsReport::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.CartonContentsResult carton_contents_result = 1;
    if (has_carton_contents_result()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->carton_contents_result());
    }

    // optional .Impinj.STP.Timestamp enter_timestamp = 5;
    if (has_enter_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->enter_timestamp());
    }

    // optional .Impinj.STP.Timestamp exit_timestamp = 6;
    if (has_exit_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->exit_timestamp());
    }

    // optional uint32 carton_size = 7;
    if (has_carton_size()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->carton_size());
    }

    // optional .Impinj.STP.Timestamp start_timestamp = 2;
    if (has_start_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->start_timestamp());
    }

    // optional .Impinj.STP.Timestamp stop_timestamp = 3;
    if (has_stop_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->stop_timestamp());
    }

  }
  // repeated .Impinj.STP.CartonContentsTag carton_contents_tag = 4;
  total_size += 1 * this->carton_contents_tag_size();
  for (int i = 0; i < this->carton_contents_tag_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->carton_contents_tag(i));
  }

  // repeated .Impinj.STP.CartonContentsError carton_contents_error = 8;
  total_size += 1 * this->carton_contents_error_size();
  for (int i = 0; i < this->carton_contents_error_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->carton_contents_error(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void CartonContentsReport::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const CartonContentsReport*>(&from));
}

void CartonContentsReport::MergeFrom(const CartonContentsReport& from) {
  GOOGLE_CHECK_NE(&from, this);
  carton_contents_tag_.MergeFrom(from.carton_contents_tag_);
  carton_contents_error_.MergeFrom(from.carton_contents_error_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_carton_contents_result()) {
      set_carton_contents_result(from.carton_contents_result());
    }
    if (from.has_enter_timestamp()) {
      mutable_enter_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.enter_timestamp());
    }
    if (from.has_exit_timestamp()) {
      mutable_exit_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.exit_timestamp());
    }
    if (from.has_carton_size()) {
      set_carton_size(from.carton_size());
    }
    if (from.has_start_timestamp()) {
      mutable_start_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.start_timestamp());
    }
    if (from.has_stop_timestamp()) {
      mutable_stop_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.stop_timestamp());
    }
  }
}

void CartonContentsReport::CopyFrom(const CartonContentsReport& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool CartonContentsReport::IsInitialized() const {

  return true;
}

void CartonContentsReport::Swap(CartonContentsReport* other) {
  if (other != this) {
    std::swap(carton_contents_result_, other->carton_contents_result_);
    std::swap(enter_timestamp_, other->enter_timestamp_);
    std::swap(exit_timestamp_, other->exit_timestamp_);
    std::swap(carton_size_, other->carton_size_);
    carton_contents_tag_.Swap(&other->carton_contents_tag_);
    carton_contents_error_.Swap(&other->carton_contents_error_);
    std::swap(start_timestamp_, other->start_timestamp_);
    std::swap(stop_timestamp_, other->stop_timestamp_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string CartonContentsReport::GetTypeName() const {
  return "Impinj.STP.CartonContentsReport";
}


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

#ifndef _MSC_VER
const int CartonContentsError::kErrorTypeFieldNumber;
const int CartonContentsError::kExtraTimestampFieldNumber;
const int CartonContentsError::kMinTimestampFieldNumber;
const int CartonContentsError::kMaxTimestampFieldNumber;
#endif  // !_MSC_VER

CartonContentsError::CartonContentsError()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void CartonContentsError::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  extra_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  extra_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  min_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  min_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  max_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  max_timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
}

CartonContentsError::CartonContentsError(const CartonContentsError& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void CartonContentsError::SharedCtor() {
  _cached_size_ = 0;
  error_type_ = 1;
  extra_timestamp_ = NULL;
  min_timestamp_ = NULL;
  max_timestamp_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

CartonContentsError::~CartonContentsError() {
  SharedDtor();
}

void CartonContentsError::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete extra_timestamp_;
    delete min_timestamp_;
    delete max_timestamp_;
  }
}

void CartonContentsError::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const CartonContentsError& CartonContentsError::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

CartonContentsError* CartonContentsError::default_instance_ = NULL;

CartonContentsError* CartonContentsError::New() const {
  return new CartonContentsError;
}

void CartonContentsError::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    error_type_ = 1;
    if (has_extra_timestamp()) {
      if (extra_timestamp_ != NULL) extra_timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    if (has_min_timestamp()) {
      if (min_timestamp_ != NULL) min_timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    if (has_max_timestamp()) {
      if (max_timestamp_ != NULL) max_timestamp_->::Impinj::STP::Timestamp::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool CartonContentsError::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.CartonContentsErrorType error_type = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::CartonContentsErrorType_IsValid(value)) {
            set_error_type(static_cast< ::Impinj::STP::CartonContentsErrorType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_extra_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp extra_timestamp = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_extra_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_extra_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_min_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp min_timestamp = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_min_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_min_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_max_timestamp;
        break;
      }

      // optional .Impinj.STP.Timestamp max_timestamp = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_max_timestamp:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_max_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void CartonContentsError::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.CartonContentsErrorType error_type = 1;
  if (has_error_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->error_type(), output);
  }

  // optional .Impinj.STP.Timestamp extra_timestamp = 2;
  if (has_extra_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->extra_timestamp(), output);
  }

  // optional .Impinj.STP.Timestamp min_timestamp = 3;
  if (has_min_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->min_timestamp(), output);
  }

  // optional .Impinj.STP.Timestamp max_timestamp = 4;
  if (has_max_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->max_timestamp(), output);
  }

}

int CartonContentsError::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.CartonContentsErrorType error_type = 1;
    if (has_error_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->error_type());
    }

    // optional .Impinj.STP.Timestamp extra_timestamp = 2;
    if (has_extra_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->extra_timestamp());
    }

    // optional .Impinj.STP.Timestamp min_timestamp = 3;
    if (has_min_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->min_timestamp());
    }

    // optional .Impinj.STP.Timestamp max_timestamp = 4;
    if (has_max_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->max_timestamp());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void CartonContentsError::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const CartonContentsError*>(&from));
}

void CartonContentsError::MergeFrom(const CartonContentsError& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_error_type()) {
      set_error_type(from.error_type());
    }
    if (from.has_extra_timestamp()) {
      mutable_extra_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.extra_timestamp());
    }
    if (from.has_min_timestamp()) {
      mutable_min_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.min_timestamp());
    }
    if (from.has_max_timestamp()) {
      mutable_max_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.max_timestamp());
    }
  }
}

void CartonContentsError::CopyFrom(const CartonContentsError& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool CartonContentsError::IsInitialized() const {

  return true;
}

void CartonContentsError::Swap(CartonContentsError* other) {
  if (other != this) {
    std::swap(error_type_, other->error_type_);
    std::swap(extra_timestamp_, other->extra_timestamp_);
    std::swap(min_timestamp_, other->min_timestamp_);
    std::swap(max_timestamp_, other->max_timestamp_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string CartonContentsError::GetTypeName() const {
  return "Impinj.STP.CartonContentsError";
}


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

#ifndef _MSC_VER
const int TagModeMetrics::kTotalCountFieldNumber;
const int TagModeMetrics::kPassCountFieldNumber;
const int TagModeMetrics::kFailCountFieldNumber;
const int TagModeMetrics::kVoidCountFieldNumber;
#endif  // !_MSC_VER

TagModeMetrics::TagModeMetrics()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TagModeMetrics::InitAsDefaultInstance() {
}

TagModeMetrics::TagModeMetrics(const TagModeMetrics& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TagModeMetrics::SharedCtor() {
  _cached_size_ = 0;
  total_count_ = GOOGLE_ULONGLONG(0);
  pass_count_ = GOOGLE_ULONGLONG(0);
  fail_count_ = GOOGLE_ULONGLONG(0);
  void_count_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TagModeMetrics::~TagModeMetrics() {
  SharedDtor();
}

void TagModeMetrics::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void TagModeMetrics::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TagModeMetrics& TagModeMetrics::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TagModeMetrics* TagModeMetrics::default_instance_ = NULL;

TagModeMetrics* TagModeMetrics::New() const {
  return new TagModeMetrics;
}

void TagModeMetrics::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    total_count_ = GOOGLE_ULONGLONG(0);
    pass_count_ = GOOGLE_ULONGLONG(0);
    fail_count_ = GOOGLE_ULONGLONG(0);
    void_count_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TagModeMetrics::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 total_count = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &total_count_)));
          set_has_total_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_pass_count;
        break;
      }

      // optional uint64 pass_count = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_pass_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &pass_count_)));
          set_has_pass_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_fail_count;
        break;
      }

      // optional uint64 fail_count = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_fail_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &fail_count_)));
          set_has_fail_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_void_count;
        break;
      }

      // optional uint64 void_count = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_void_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &void_count_)));
          set_has_void_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TagModeMetrics::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 total_count = 1;
  if (has_total_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->total_count(), output);
  }

  // optional uint64 pass_count = 2;
  if (has_pass_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->pass_count(), output);
  }

  // optional uint64 fail_count = 3;
  if (has_fail_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->fail_count(), output);
  }

  // optional uint64 void_count = 4;
  if (has_void_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->void_count(), output);
  }

}

int TagModeMetrics::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 total_count = 1;
    if (has_total_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->total_count());
    }

    // optional uint64 pass_count = 2;
    if (has_pass_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->pass_count());
    }

    // optional uint64 fail_count = 3;
    if (has_fail_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->fail_count());
    }

    // optional uint64 void_count = 4;
    if (has_void_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->void_count());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TagModeMetrics::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TagModeMetrics*>(&from));
}

void TagModeMetrics::MergeFrom(const TagModeMetrics& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_total_count()) {
      set_total_count(from.total_count());
    }
    if (from.has_pass_count()) {
      set_pass_count(from.pass_count());
    }
    if (from.has_fail_count()) {
      set_fail_count(from.fail_count());
    }
    if (from.has_void_count()) {
      set_void_count(from.void_count());
    }
  }
}

void TagModeMetrics::CopyFrom(const TagModeMetrics& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TagModeMetrics::IsInitialized() const {

  return true;
}

void TagModeMetrics::Swap(TagModeMetrics* other) {
  if (other != this) {
    std::swap(total_count_, other->total_count_);
    std::swap(pass_count_, other->pass_count_);
    std::swap(fail_count_, other->fail_count_);
    std::swap(void_count_, other->void_count_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TagModeMetrics::GetTypeName() const {
  return "Impinj.STP.TagModeMetrics";
}


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

#ifndef _MSC_VER
const int TagMetrics::kTagChipFieldNumber;
const int TagMetrics::kVerifyBasicMetricsFieldNumber;
const int TagMetrics::kVerifyDataMetricsFieldNumber;
const int TagMetrics::kEncodeMetricsFieldNumber;
const int TagMetrics::kInventoryMetricsFieldNumber;
const int TagMetrics::kCartonContentsMetricsFieldNumber;
#endif  // !_MSC_VER

TagMetrics::TagMetrics()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void TagMetrics::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  verify_basic_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(
      ::Impinj::STP::TagModeMetrics::internal_default_instance());
#else
  verify_basic_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(&::Impinj::STP::TagModeMetrics::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  verify_data_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(
      ::Impinj::STP::TagModeMetrics::internal_default_instance());
#else
  verify_data_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(&::Impinj::STP::TagModeMetrics::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  encode_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(
      ::Impinj::STP::TagModeMetrics::internal_default_instance());
#else
  encode_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(&::Impinj::STP::TagModeMetrics::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  inventory_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(
      ::Impinj::STP::TagModeMetrics::internal_default_instance());
#else
  inventory_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(&::Impinj::STP::TagModeMetrics::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  carton_contents_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(
      ::Impinj::STP::TagModeMetrics::internal_default_instance());
#else
  carton_contents_metrics_ = const_cast< ::Impinj::STP::TagModeMetrics*>(&::Impinj::STP::TagModeMetrics::default_instance());
#endif
}

TagMetrics::TagMetrics(const TagMetrics& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void TagMetrics::SharedCtor() {
  _cached_size_ = 0;
  tag_chip_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  verify_basic_metrics_ = NULL;
  verify_data_metrics_ = NULL;
  encode_metrics_ = NULL;
  inventory_metrics_ = NULL;
  carton_contents_metrics_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

TagMetrics::~TagMetrics() {
  SharedDtor();
}

void TagMetrics::SharedDtor() {
  if (tag_chip_ != &::google::protobuf::internal::kEmptyString) {
    delete tag_chip_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete verify_basic_metrics_;
    delete verify_data_metrics_;
    delete encode_metrics_;
    delete inventory_metrics_;
    delete carton_contents_metrics_;
  }
}

void TagMetrics::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const TagMetrics& TagMetrics::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

TagMetrics* TagMetrics::default_instance_ = NULL;

TagMetrics* TagMetrics::New() const {
  return new TagMetrics;
}

void TagMetrics::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_tag_chip()) {
      if (tag_chip_ != &::google::protobuf::internal::kEmptyString) {
        tag_chip_->clear();
      }
    }
    if (has_verify_basic_metrics()) {
      if (verify_basic_metrics_ != NULL) verify_basic_metrics_->::Impinj::STP::TagModeMetrics::Clear();
    }
    if (has_verify_data_metrics()) {
      if (verify_data_metrics_ != NULL) verify_data_metrics_->::Impinj::STP::TagModeMetrics::Clear();
    }
    if (has_encode_metrics()) {
      if (encode_metrics_ != NULL) encode_metrics_->::Impinj::STP::TagModeMetrics::Clear();
    }
    if (has_inventory_metrics()) {
      if (inventory_metrics_ != NULL) inventory_metrics_->::Impinj::STP::TagModeMetrics::Clear();
    }
    if (has_carton_contents_metrics()) {
      if (carton_contents_metrics_ != NULL) carton_contents_metrics_->::Impinj::STP::TagModeMetrics::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool TagMetrics::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes tag_chip = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_tag_chip()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_verify_basic_metrics;
        break;
      }

      // optional .Impinj.STP.TagModeMetrics verify_basic_metrics = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_verify_basic_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_verify_basic_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_verify_data_metrics;
        break;
      }

      // optional .Impinj.STP.TagModeMetrics verify_data_metrics = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_verify_data_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_verify_data_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_encode_metrics;
        break;
      }

      // optional .Impinj.STP.TagModeMetrics encode_metrics = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_encode_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_encode_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_inventory_metrics;
        break;
      }

      // optional .Impinj.STP.TagModeMetrics inventory_metrics = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_inventory_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_inventory_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_carton_contents_metrics;
        break;
      }

      // optional .Impinj.STP.TagModeMetrics carton_contents_metrics = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_carton_contents_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_carton_contents_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void TagMetrics::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes tag_chip = 1;
  if (has_tag_chip()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->tag_chip(), output);
  }

  // optional .Impinj.STP.TagModeMetrics verify_basic_metrics = 2;
  if (has_verify_basic_metrics()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->verify_basic_metrics(), output);
  }

  // optional .Impinj.STP.TagModeMetrics verify_data_metrics = 3;
  if (has_verify_data_metrics()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->verify_data_metrics(), output);
  }

  // optional .Impinj.STP.TagModeMetrics encode_metrics = 4;
  if (has_encode_metrics()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->encode_metrics(), output);
  }

  // optional .Impinj.STP.TagModeMetrics inventory_metrics = 5;
  if (has_inventory_metrics()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->inventory_metrics(), output);
  }

  // optional .Impinj.STP.TagModeMetrics carton_contents_metrics = 6;
  if (has_carton_contents_metrics()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->carton_contents_metrics(), output);
  }

}

int TagMetrics::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes tag_chip = 1;
    if (has_tag_chip()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->tag_chip());
    }

    // optional .Impinj.STP.TagModeMetrics verify_basic_metrics = 2;
    if (has_verify_basic_metrics()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->verify_basic_metrics());
    }

    // optional .Impinj.STP.TagModeMetrics verify_data_metrics = 3;
    if (has_verify_data_metrics()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->verify_data_metrics());
    }

    // optional .Impinj.STP.TagModeMetrics encode_metrics = 4;
    if (has_encode_metrics()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->encode_metrics());
    }

    // optional .Impinj.STP.TagModeMetrics inventory_metrics = 5;
    if (has_inventory_metrics()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->inventory_metrics());
    }

    // optional .Impinj.STP.TagModeMetrics carton_contents_metrics = 6;
    if (has_carton_contents_metrics()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->carton_contents_metrics());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void TagMetrics::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const TagMetrics*>(&from));
}

void TagMetrics::MergeFrom(const TagMetrics& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_tag_chip()) {
      set_tag_chip(from.tag_chip());
    }
    if (from.has_verify_basic_metrics()) {
      mutable_verify_basic_metrics()->::Impinj::STP::TagModeMetrics::MergeFrom(from.verify_basic_metrics());
    }
    if (from.has_verify_data_metrics()) {
      mutable_verify_data_metrics()->::Impinj::STP::TagModeMetrics::MergeFrom(from.verify_data_metrics());
    }
    if (from.has_encode_metrics()) {
      mutable_encode_metrics()->::Impinj::STP::TagModeMetrics::MergeFrom(from.encode_metrics());
    }
    if (from.has_inventory_metrics()) {
      mutable_inventory_metrics()->::Impinj::STP::TagModeMetrics::MergeFrom(from.inventory_metrics());
    }
    if (from.has_carton_contents_metrics()) {
      mutable_carton_contents_metrics()->::Impinj::STP::TagModeMetrics::MergeFrom(from.carton_contents_metrics());
    }
  }
}

void TagMetrics::CopyFrom(const TagMetrics& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TagMetrics::IsInitialized() const {

  return true;
}

void TagMetrics::Swap(TagMetrics* other) {
  if (other != this) {
    std::swap(tag_chip_, other->tag_chip_);
    std::swap(verify_basic_metrics_, other->verify_basic_metrics_);
    std::swap(verify_data_metrics_, other->verify_data_metrics_);
    std::swap(encode_metrics_, other->encode_metrics_);
    std::swap(inventory_metrics_, other->inventory_metrics_);
    std::swap(carton_contents_metrics_, other->carton_contents_metrics_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string TagMetrics::GetTypeName() const {
  return "Impinj.STP.TagMetrics";
}


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

#ifndef _MSC_VER
const int InterDeviceCommunicationMetrics::kSerialNumberFieldNumber;
const int InterDeviceCommunicationMetrics::kReceivedMessageCountFieldNumber;
#endif  // !_MSC_VER

InterDeviceCommunicationMetrics::InterDeviceCommunicationMetrics()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void InterDeviceCommunicationMetrics::InitAsDefaultInstance() {
}

InterDeviceCommunicationMetrics::InterDeviceCommunicationMetrics(const InterDeviceCommunicationMetrics& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void InterDeviceCommunicationMetrics::SharedCtor() {
  _cached_size_ = 0;
  serial_number_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  received_message_count_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

InterDeviceCommunicationMetrics::~InterDeviceCommunicationMetrics() {
  SharedDtor();
}

void InterDeviceCommunicationMetrics::SharedDtor() {
  if (serial_number_ != &::google::protobuf::internal::kEmptyString) {
    delete serial_number_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void InterDeviceCommunicationMetrics::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const InterDeviceCommunicationMetrics& InterDeviceCommunicationMetrics::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

InterDeviceCommunicationMetrics* InterDeviceCommunicationMetrics::default_instance_ = NULL;

InterDeviceCommunicationMetrics* InterDeviceCommunicationMetrics::New() const {
  return new InterDeviceCommunicationMetrics;
}

void InterDeviceCommunicationMetrics::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_serial_number()) {
      if (serial_number_ != &::google::protobuf::internal::kEmptyString) {
        serial_number_->clear();
      }
    }
    received_message_count_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool InterDeviceCommunicationMetrics::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string serial_number = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_serial_number()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_received_message_count;
        break;
      }

      // optional uint64 received_message_count = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_received_message_count:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &received_message_count_)));
          set_has_received_message_count();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void InterDeviceCommunicationMetrics::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional string serial_number = 1;
  if (has_serial_number()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->serial_number(), output);
  }

  // optional uint64 received_message_count = 2;
  if (has_received_message_count()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->received_message_count(), output);
  }

}

int InterDeviceCommunicationMetrics::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional string serial_number = 1;
    if (has_serial_number()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->serial_number());
    }

    // optional uint64 received_message_count = 2;
    if (has_received_message_count()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->received_message_count());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void InterDeviceCommunicationMetrics::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const InterDeviceCommunicationMetrics*>(&from));
}

void InterDeviceCommunicationMetrics::MergeFrom(const InterDeviceCommunicationMetrics& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_serial_number()) {
      set_serial_number(from.serial_number());
    }
    if (from.has_received_message_count()) {
      set_received_message_count(from.received_message_count());
    }
  }
}

void InterDeviceCommunicationMetrics::CopyFrom(const InterDeviceCommunicationMetrics& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool InterDeviceCommunicationMetrics::IsInitialized() const {

  return true;
}

void InterDeviceCommunicationMetrics::Swap(InterDeviceCommunicationMetrics* other) {
  if (other != this) {
    std::swap(serial_number_, other->serial_number_);
    std::swap(received_message_count_, other->received_message_count_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string InterDeviceCommunicationMetrics::GetTypeName() const {
  return "Impinj.STP.InterDeviceCommunicationMetrics";
}


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

#ifndef _MSC_VER
const int OperationMetrics::kRemainingNonMonzaEncodesFieldNumber;
const int OperationMetrics::kTagMetricsFieldNumber;
const int OperationMetrics::kInterDeviceCommunicationMetricsFieldNumber;
const int OperationMetrics::kRemainingMonzaEncodesFieldNumber;
#endif  // !_MSC_VER

OperationMetrics::OperationMetrics()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OperationMetrics::InitAsDefaultInstance() {
}

OperationMetrics::OperationMetrics(const OperationMetrics& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OperationMetrics::SharedCtor() {
  _cached_size_ = 0;
  remaining_non_monza_encodes_ = GOOGLE_ULONGLONG(0);
  remaining_monza_encodes_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OperationMetrics::~OperationMetrics() {
  SharedDtor();
}

void OperationMetrics::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void OperationMetrics::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OperationMetrics& OperationMetrics::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OperationMetrics* OperationMetrics::default_instance_ = NULL;

OperationMetrics* OperationMetrics::New() const {
  return new OperationMetrics;
}

void OperationMetrics::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    remaining_non_monza_encodes_ = GOOGLE_ULONGLONG(0);
    remaining_monza_encodes_ = GOOGLE_ULONGLONG(0);
  }
  tag_metrics_.Clear();
  inter_device_communication_metrics_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OperationMetrics::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint64 remaining_non_monza_encodes = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &remaining_non_monza_encodes_)));
          set_has_remaining_non_monza_encodes();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_tag_metrics;
        break;
      }

      // repeated .Impinj.STP.TagMetrics tag_metrics = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_tag_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_tag_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_tag_metrics;
        if (input->ExpectTag(26)) goto parse_inter_device_communication_metrics;
        break;
      }

      // repeated .Impinj.STP.InterDeviceCommunicationMetrics inter_device_communication_metrics = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_inter_device_communication_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_inter_device_communication_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_inter_device_communication_metrics;
        if (input->ExpectTag(40)) goto parse_remaining_monza_encodes;
        break;
      }

      // optional uint64 remaining_monza_encodes = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_remaining_monza_encodes:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &remaining_monza_encodes_)));
          set_has_remaining_monza_encodes();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OperationMetrics::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint64 remaining_non_monza_encodes = 1;
  if (has_remaining_non_monza_encodes()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->remaining_non_monza_encodes(), output);
  }

  // repeated .Impinj.STP.TagMetrics tag_metrics = 2;
  for (int i = 0; i < this->tag_metrics_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->tag_metrics(i), output);
  }

  // repeated .Impinj.STP.InterDeviceCommunicationMetrics inter_device_communication_metrics = 3;
  for (int i = 0; i < this->inter_device_communication_metrics_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->inter_device_communication_metrics(i), output);
  }

  // optional uint64 remaining_monza_encodes = 5;
  if (has_remaining_monza_encodes()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(5, this->remaining_monza_encodes(), output);
  }

}

int OperationMetrics::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint64 remaining_non_monza_encodes = 1;
    if (has_remaining_non_monza_encodes()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->remaining_non_monza_encodes());
    }

    // optional uint64 remaining_monza_encodes = 5;
    if (has_remaining_monza_encodes()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->remaining_monza_encodes());
    }

  }
  // repeated .Impinj.STP.TagMetrics tag_metrics = 2;
  total_size += 1 * this->tag_metrics_size();
  for (int i = 0; i < this->tag_metrics_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->tag_metrics(i));
  }

  // repeated .Impinj.STP.InterDeviceCommunicationMetrics inter_device_communication_metrics = 3;
  total_size += 1 * this->inter_device_communication_metrics_size();
  for (int i = 0; i < this->inter_device_communication_metrics_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->inter_device_communication_metrics(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OperationMetrics::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OperationMetrics*>(&from));
}

void OperationMetrics::MergeFrom(const OperationMetrics& from) {
  GOOGLE_CHECK_NE(&from, this);
  tag_metrics_.MergeFrom(from.tag_metrics_);
  inter_device_communication_metrics_.MergeFrom(from.inter_device_communication_metrics_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_remaining_non_monza_encodes()) {
      set_remaining_non_monza_encodes(from.remaining_non_monza_encodes());
    }
    if (from.has_remaining_monza_encodes()) {
      set_remaining_monza_encodes(from.remaining_monza_encodes());
    }
  }
}

void OperationMetrics::CopyFrom(const OperationMetrics& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OperationMetrics::IsInitialized() const {

  return true;
}

void OperationMetrics::Swap(OperationMetrics* other) {
  if (other != this) {
    std::swap(remaining_non_monza_encodes_, other->remaining_non_monza_encodes_);
    tag_metrics_.Swap(&other->tag_metrics_);
    inter_device_communication_metrics_.Swap(&other->inter_device_communication_metrics_);
    std::swap(remaining_monza_encodes_, other->remaining_monza_encodes_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OperationMetrics::GetTypeName() const {
  return "Impinj.STP.OperationMetrics";
}


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

#ifndef _MSC_VER
const int OperationDataDetails::kSerialNumberFieldNumber;
const int OperationDataDetails::kFirmwareVersionFieldNumber;
const int OperationDataDetails::kRegionFieldNumber;
const int OperationDataDetails::kInstalledFeaturesFieldNumber;
const int OperationDataDetails::kNonMonzaVolumeKeyIdFieldNumber;
const int OperationDataDetails::kOperationMetricsFieldNumber;
const int OperationDataDetails::kMonzaVolumeKeyIdFieldNumber;
#endif  // !_MSC_VER

OperationDataDetails::OperationDataDetails()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OperationDataDetails::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  operation_metrics_ = const_cast< ::Impinj::STP::OperationMetrics*>(
      ::Impinj::STP::OperationMetrics::internal_default_instance());
#else
  operation_metrics_ = const_cast< ::Impinj::STP::OperationMetrics*>(&::Impinj::STP::OperationMetrics::default_instance());
#endif
}

OperationDataDetails::OperationDataDetails(const OperationDataDetails& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OperationDataDetails::SharedCtor() {
  _cached_size_ = 0;
  serial_number_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  firmware_version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  region_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  non_monza_volume_key_id_ = 0u;
  operation_metrics_ = NULL;
  monza_volume_key_id_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OperationDataDetails::~OperationDataDetails() {
  SharedDtor();
}

void OperationDataDetails::SharedDtor() {
  if (serial_number_ != &::google::protobuf::internal::kEmptyString) {
    delete serial_number_;
  }
  if (firmware_version_ != &::google::protobuf::internal::kEmptyString) {
    delete firmware_version_;
  }
  if (region_ != &::google::protobuf::internal::kEmptyString) {
    delete region_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete operation_metrics_;
  }
}

void OperationDataDetails::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OperationDataDetails& OperationDataDetails::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OperationDataDetails* OperationDataDetails::default_instance_ = NULL;

OperationDataDetails* OperationDataDetails::New() const {
  return new OperationDataDetails;
}

void OperationDataDetails::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_serial_number()) {
      if (serial_number_ != &::google::protobuf::internal::kEmptyString) {
        serial_number_->clear();
      }
    }
    if (has_firmware_version()) {
      if (firmware_version_ != &::google::protobuf::internal::kEmptyString) {
        firmware_version_->clear();
      }
    }
    if (has_region()) {
      if (region_ != &::google::protobuf::internal::kEmptyString) {
        region_->clear();
      }
    }
    non_monza_volume_key_id_ = 0u;
    if (has_operation_metrics()) {
      if (operation_metrics_ != NULL) operation_metrics_->::Impinj::STP::OperationMetrics::Clear();
    }
    monza_volume_key_id_ = 0u;
  }
  installed_features_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OperationDataDetails::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string serial_number = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_serial_number()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_firmware_version;
        break;
      }

      // optional string firmware_version = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_firmware_version:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_firmware_version()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_region;
        break;
      }

      // optional string region = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_region:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_region()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_installed_features;
        break;
      }

      // repeated string installed_features = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_installed_features:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_installed_features()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_installed_features;
        if (input->ExpectTag(40)) goto parse_non_monza_volume_key_id;
        break;
      }

      // optional uint32 non_monza_volume_key_id = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_non_monza_volume_key_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &non_monza_volume_key_id_)));
          set_has_non_monza_volume_key_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_operation_metrics;
        break;
      }

      // optional .Impinj.STP.OperationMetrics operation_metrics = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_operation_metrics:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_operation_metrics()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(56)) goto parse_monza_volume_key_id;
        break;
      }

      // optional uint32 monza_volume_key_id = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_monza_volume_key_id:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &monza_volume_key_id_)));
          set_has_monza_volume_key_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OperationDataDetails::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional string serial_number = 1;
  if (has_serial_number()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->serial_number(), output);
  }

  // optional string firmware_version = 2;
  if (has_firmware_version()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->firmware_version(), output);
  }

  // optional string region = 3;
  if (has_region()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->region(), output);
  }

  // repeated string installed_features = 4;
  for (int i = 0; i < this->installed_features_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      4, this->installed_features(i), output);
  }

  // optional uint32 non_monza_volume_key_id = 5;
  if (has_non_monza_volume_key_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->non_monza_volume_key_id(), output);
  }

  // optional .Impinj.STP.OperationMetrics operation_metrics = 6;
  if (has_operation_metrics()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->operation_metrics(), output);
  }

  // optional uint32 monza_volume_key_id = 7;
  if (has_monza_volume_key_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(7, this->monza_volume_key_id(), output);
  }

}

int OperationDataDetails::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional string serial_number = 1;
    if (has_serial_number()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->serial_number());
    }

    // optional string firmware_version = 2;
    if (has_firmware_version()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->firmware_version());
    }

    // optional string region = 3;
    if (has_region()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->region());
    }

    // optional uint32 non_monza_volume_key_id = 5;
    if (has_non_monza_volume_key_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->non_monza_volume_key_id());
    }

    // optional .Impinj.STP.OperationMetrics operation_metrics = 6;
    if (has_operation_metrics()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->operation_metrics());
    }

    // optional uint32 monza_volume_key_id = 7;
    if (has_monza_volume_key_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->monza_volume_key_id());
    }

  }
  // repeated string installed_features = 4;
  total_size += 1 * this->installed_features_size();
  for (int i = 0; i < this->installed_features_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->installed_features(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OperationDataDetails::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OperationDataDetails*>(&from));
}

void OperationDataDetails::MergeFrom(const OperationDataDetails& from) {
  GOOGLE_CHECK_NE(&from, this);
  installed_features_.MergeFrom(from.installed_features_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_serial_number()) {
      set_serial_number(from.serial_number());
    }
    if (from.has_firmware_version()) {
      set_firmware_version(from.firmware_version());
    }
    if (from.has_region()) {
      set_region(from.region());
    }
    if (from.has_non_monza_volume_key_id()) {
      set_non_monza_volume_key_id(from.non_monza_volume_key_id());
    }
    if (from.has_operation_metrics()) {
      mutable_operation_metrics()->::Impinj::STP::OperationMetrics::MergeFrom(from.operation_metrics());
    }
    if (from.has_monza_volume_key_id()) {
      set_monza_volume_key_id(from.monza_volume_key_id());
    }
  }
}

void OperationDataDetails::CopyFrom(const OperationDataDetails& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OperationDataDetails::IsInitialized() const {

  return true;
}

void OperationDataDetails::Swap(OperationDataDetails* other) {
  if (other != this) {
    std::swap(serial_number_, other->serial_number_);
    std::swap(firmware_version_, other->firmware_version_);
    std::swap(region_, other->region_);
    installed_features_.Swap(&other->installed_features_);
    std::swap(non_monza_volume_key_id_, other->non_monza_volume_key_id_);
    std::swap(operation_metrics_, other->operation_metrics_);
    std::swap(monza_volume_key_id_, other->monza_volume_key_id_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OperationDataDetails::GetTypeName() const {
  return "Impinj.STP.OperationDataDetails";
}


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

#ifndef _MSC_VER
const int OperationData::kOperationDetailsFieldNumber;
const int OperationData::kDataFieldNumber;
#endif  // !_MSC_VER

OperationData::OperationData()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OperationData::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  operation_details_ = const_cast< ::Impinj::STP::OperationDataDetails*>(
      ::Impinj::STP::OperationDataDetails::internal_default_instance());
#else
  operation_details_ = const_cast< ::Impinj::STP::OperationDataDetails*>(&::Impinj::STP::OperationDataDetails::default_instance());
#endif
}

OperationData::OperationData(const OperationData& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OperationData::SharedCtor() {
  _cached_size_ = 0;
  operation_details_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OperationData::~OperationData() {
  SharedDtor();
}

void OperationData::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete operation_details_;
  }
}

void OperationData::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OperationData& OperationData::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OperationData* OperationData::default_instance_ = NULL;

OperationData* OperationData::New() const {
  return new OperationData;
}

void OperationData::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_operation_details()) {
      if (operation_details_ != NULL) operation_details_->::Impinj::STP::OperationDataDetails::Clear();
    }
  }
  data_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OperationData::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.OperationDataDetails operation_details = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_operation_details()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_data;
        break;
      }

      // repeated string data = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_data;
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OperationData::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.OperationDataDetails operation_details = 1;
  if (has_operation_details()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->operation_details(), output);
  }

  // repeated string data = 2;
  for (int i = 0; i < this->data_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->data(i), output);
  }

}

int OperationData::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.OperationDataDetails operation_details = 1;
    if (has_operation_details()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->operation_details());
    }

  }
  // repeated string data = 2;
  total_size += 1 * this->data_size();
  for (int i = 0; i < this->data_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->data(i));
  }

  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OperationData::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OperationData*>(&from));
}

void OperationData::MergeFrom(const OperationData& from) {
  GOOGLE_CHECK_NE(&from, this);
  data_.MergeFrom(from.data_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_operation_details()) {
      mutable_operation_details()->::Impinj::STP::OperationDataDetails::MergeFrom(from.operation_details());
    }
  }
}

void OperationData::CopyFrom(const OperationData& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OperationData::IsInitialized() const {

  return true;
}

void OperationData::Swap(OperationData* other) {
  if (other != this) {
    std::swap(operation_details_, other->operation_details_);
    data_.Swap(&other->data_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OperationData::GetTypeName() const {
  return "Impinj.STP.OperationData";
}


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

#ifndef _MSC_VER
const int LicenseKey::kLicenseKeyPayloadFieldNumber;
#endif  // !_MSC_VER

LicenseKey::LicenseKey()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void LicenseKey::InitAsDefaultInstance() {
}

LicenseKey::LicenseKey(const LicenseKey& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void LicenseKey::SharedCtor() {
  _cached_size_ = 0;
  license_key_payload_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

LicenseKey::~LicenseKey() {
  SharedDtor();
}

void LicenseKey::SharedDtor() {
  if (license_key_payload_ != &::google::protobuf::internal::kEmptyString) {
    delete license_key_payload_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void LicenseKey::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const LicenseKey& LicenseKey::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

LicenseKey* LicenseKey::default_instance_ = NULL;

LicenseKey* LicenseKey::New() const {
  return new LicenseKey;
}

void LicenseKey::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_license_key_payload()) {
      if (license_key_payload_ != &::google::protobuf::internal::kEmptyString) {
        license_key_payload_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool LicenseKey::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bytes license_key_payload = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_license_key_payload()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void LicenseKey::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bytes license_key_payload = 1;
  if (has_license_key_payload()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->license_key_payload(), output);
  }

}

int LicenseKey::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bytes license_key_payload = 1;
    if (has_license_key_payload()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->license_key_payload());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void LicenseKey::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const LicenseKey*>(&from));
}

void LicenseKey::MergeFrom(const LicenseKey& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_license_key_payload()) {
      set_license_key_payload(from.license_key_payload());
    }
  }
}

void LicenseKey::CopyFrom(const LicenseKey& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool LicenseKey::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  return true;
}

void LicenseKey::Swap(LicenseKey* other) {
  if (other != this) {
    std::swap(license_key_payload_, other->license_key_payload_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string LicenseKey::GetTypeName() const {
  return "Impinj.STP.LicenseKey";
}


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

#ifndef _MSC_VER
const int OperationEvent::kTimestampFieldNumber;
const int OperationEvent::kOperationEventTypeFieldNumber;
const int OperationEvent::kOperationTriggerTypeFieldNumber;
#endif  // !_MSC_VER

OperationEvent::OperationEvent()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void OperationEvent::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
}

OperationEvent::OperationEvent(const OperationEvent& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void OperationEvent::SharedCtor() {
  _cached_size_ = 0;
  timestamp_ = NULL;
  operation_event_type_ = 1;
  operation_trigger_type_ = 1;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

OperationEvent::~OperationEvent() {
  SharedDtor();
}

void OperationEvent::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete timestamp_;
  }
}

void OperationEvent::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const OperationEvent& OperationEvent::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

OperationEvent* OperationEvent::default_instance_ = NULL;

OperationEvent* OperationEvent::New() const {
  return new OperationEvent;
}

void OperationEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_timestamp()) {
      if (timestamp_ != NULL) timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    operation_event_type_ = 1;
    operation_trigger_type_ = 1;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool OperationEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.Timestamp timestamp = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_operation_event_type;
        break;
      }

      // required .Impinj.STP.OperationEventType operation_event_type = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_operation_event_type:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::OperationEventType_IsValid(value)) {
            set_operation_event_type(static_cast< ::Impinj::STP::OperationEventType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_operation_trigger_type;
        break;
      }

      // optional .Impinj.STP.OperationTriggerType operation_trigger_type = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_operation_trigger_type:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::OperationTriggerType_IsValid(value)) {
            set_operation_trigger_type(static_cast< ::Impinj::STP::OperationTriggerType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void OperationEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.Timestamp timestamp = 1;
  if (has_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->timestamp(), output);
  }

  // required .Impinj.STP.OperationEventType operation_event_type = 2;
  if (has_operation_event_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->operation_event_type(), output);
  }

  // optional .Impinj.STP.OperationTriggerType operation_trigger_type = 3;
  if (has_operation_trigger_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      3, this->operation_trigger_type(), output);
  }

}

int OperationEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.Timestamp timestamp = 1;
    if (has_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->timestamp());
    }

    // required .Impinj.STP.OperationEventType operation_event_type = 2;
    if (has_operation_event_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->operation_event_type());
    }

    // optional .Impinj.STP.OperationTriggerType operation_trigger_type = 3;
    if (has_operation_trigger_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->operation_trigger_type());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void OperationEvent::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const OperationEvent*>(&from));
}

void OperationEvent::MergeFrom(const OperationEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_timestamp()) {
      mutable_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.timestamp());
    }
    if (from.has_operation_event_type()) {
      set_operation_event_type(from.operation_event_type());
    }
    if (from.has_operation_trigger_type()) {
      set_operation_trigger_type(from.operation_trigger_type());
    }
  }
}

void OperationEvent::CopyFrom(const OperationEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OperationEvent::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;

  return true;
}

void OperationEvent::Swap(OperationEvent* other) {
  if (other != this) {
    std::swap(timestamp_, other->timestamp_);
    std::swap(operation_event_type_, other->operation_event_type_);
    std::swap(operation_trigger_type_, other->operation_trigger_type_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string OperationEvent::GetTypeName() const {
  return "Impinj.STP.OperationEvent";
}


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

#ifndef _MSC_VER
const int DeviceExceptionEvent::kTimestampFieldNumber;
const int DeviceExceptionEvent::kDeviceExceptionEventTypeFieldNumber;
const int DeviceExceptionEvent::kExceptionDetailFieldNumber;
#endif  // !_MSC_VER

DeviceExceptionEvent::DeviceExceptionEvent()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void DeviceExceptionEvent::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
}

DeviceExceptionEvent::DeviceExceptionEvent(const DeviceExceptionEvent& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void DeviceExceptionEvent::SharedCtor() {
  _cached_size_ = 0;
  timestamp_ = NULL;
  device_exception_event_type_ = 1;
  exception_detail_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

DeviceExceptionEvent::~DeviceExceptionEvent() {
  SharedDtor();
}

void DeviceExceptionEvent::SharedDtor() {
  if (exception_detail_ != &::google::protobuf::internal::kEmptyString) {
    delete exception_detail_;
  }
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete timestamp_;
  }
}

void DeviceExceptionEvent::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const DeviceExceptionEvent& DeviceExceptionEvent::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

DeviceExceptionEvent* DeviceExceptionEvent::default_instance_ = NULL;

DeviceExceptionEvent* DeviceExceptionEvent::New() const {
  return new DeviceExceptionEvent;
}

void DeviceExceptionEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_timestamp()) {
      if (timestamp_ != NULL) timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    device_exception_event_type_ = 1;
    if (has_exception_detail()) {
      if (exception_detail_ != &::google::protobuf::internal::kEmptyString) {
        exception_detail_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool DeviceExceptionEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.Timestamp timestamp = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_device_exception_event_type;
        break;
      }

      // required .Impinj.STP.DeviceExceptionEventType device_exception_event_type = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_device_exception_event_type:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::DeviceExceptionEventType_IsValid(value)) {
            set_device_exception_event_type(static_cast< ::Impinj::STP::DeviceExceptionEventType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_exception_detail;
        break;
      }

      // required string exception_detail = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_exception_detail:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_exception_detail()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void DeviceExceptionEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.Timestamp timestamp = 1;
  if (has_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->timestamp(), output);
  }

  // required .Impinj.STP.DeviceExceptionEventType device_exception_event_type = 2;
  if (has_device_exception_event_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->device_exception_event_type(), output);
  }

  // required string exception_detail = 3;
  if (has_exception_detail()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->exception_detail(), output);
  }

}

int DeviceExceptionEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.Timestamp timestamp = 1;
    if (has_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->timestamp());
    }

    // required .Impinj.STP.DeviceExceptionEventType device_exception_event_type = 2;
    if (has_device_exception_event_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->device_exception_event_type());
    }

    // required string exception_detail = 3;
    if (has_exception_detail()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->exception_detail());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void DeviceExceptionEvent::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const DeviceExceptionEvent*>(&from));
}

void DeviceExceptionEvent::MergeFrom(const DeviceExceptionEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_timestamp()) {
      mutable_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.timestamp());
    }
    if (from.has_device_exception_event_type()) {
      set_device_exception_event_type(from.device_exception_event_type());
    }
    if (from.has_exception_detail()) {
      set_exception_detail(from.exception_detail());
    }
  }
}

void DeviceExceptionEvent::CopyFrom(const DeviceExceptionEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceExceptionEvent::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;

  return true;
}

void DeviceExceptionEvent::Swap(DeviceExceptionEvent* other) {
  if (other != this) {
    std::swap(timestamp_, other->timestamp_);
    std::swap(device_exception_event_type_, other->device_exception_event_type_);
    std::swap(exception_detail_, other->exception_detail_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string DeviceExceptionEvent::GetTypeName() const {
  return "Impinj.STP.DeviceExceptionEvent";
}


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

#ifndef _MSC_VER
const int GPIEvent::kTimestampFieldNumber;
const int GPIEvent::kGpiStateFieldNumber;
#endif  // !_MSC_VER

GPIEvent::GPIEvent()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GPIEvent::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(
      ::Impinj::STP::Timestamp::internal_default_instance());
#else
  timestamp_ = const_cast< ::Impinj::STP::Timestamp*>(&::Impinj::STP::Timestamp::default_instance());
#endif
}

GPIEvent::GPIEvent(const GPIEvent& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GPIEvent::SharedCtor() {
  _cached_size_ = 0;
  timestamp_ = NULL;
  gpi_state_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GPIEvent::~GPIEvent() {
  SharedDtor();
}

void GPIEvent::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete timestamp_;
  }
}

void GPIEvent::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GPIEvent& GPIEvent::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GPIEvent* GPIEvent::default_instance_ = NULL;

GPIEvent* GPIEvent::New() const {
  return new GPIEvent;
}

void GPIEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_timestamp()) {
      if (timestamp_ != NULL) timestamp_->::Impinj::STP::Timestamp::Clear();
    }
    gpi_state_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GPIEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.Timestamp timestamp = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_timestamp()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_gpi_state;
        break;
      }

      // required uint32 gpi_state = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_gpi_state:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &gpi_state_)));
          set_has_gpi_state();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GPIEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.Timestamp timestamp = 1;
  if (has_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->timestamp(), output);
  }

  // required uint32 gpi_state = 2;
  if (has_gpi_state()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->gpi_state(), output);
  }

}

int GPIEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.Timestamp timestamp = 1;
    if (has_timestamp()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->timestamp());
    }

    // required uint32 gpi_state = 2;
    if (has_gpi_state()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->gpi_state());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GPIEvent::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GPIEvent*>(&from));
}

void GPIEvent::MergeFrom(const GPIEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_timestamp()) {
      mutable_timestamp()->::Impinj::STP::Timestamp::MergeFrom(from.timestamp());
    }
    if (from.has_gpi_state()) {
      set_gpi_state(from.gpi_state());
    }
  }
}

void GPIEvent::CopyFrom(const GPIEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GPIEvent::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;

  return true;
}

void GPIEvent::Swap(GPIEvent* other) {
  if (other != this) {
    std::swap(timestamp_, other->timestamp_);
    std::swap(gpi_state_, other->gpi_state_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GPIEvent::GetTypeName() const {
  return "Impinj.STP.GPIEvent";
}


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

#ifndef _MSC_VER
const int LowEncodeVolumeEvent::kLowEncodeVolumeEventTypeFieldNumber;
const int LowEncodeVolumeEvent::kRemainingMonzaEncodesFieldNumber;
const int LowEncodeVolumeEvent::kRemainingNonMonzaEncodesFieldNumber;
#endif  // !_MSC_VER

LowEncodeVolumeEvent::LowEncodeVolumeEvent()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void LowEncodeVolumeEvent::InitAsDefaultInstance() {
}

LowEncodeVolumeEvent::LowEncodeVolumeEvent(const LowEncodeVolumeEvent& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void LowEncodeVolumeEvent::SharedCtor() {
  _cached_size_ = 0;
  low_encode_volume_event_type_ = 1;
  remaining_monza_encodes_ = GOOGLE_ULONGLONG(0);
  remaining_non_monza_encodes_ = GOOGLE_ULONGLONG(0);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

LowEncodeVolumeEvent::~LowEncodeVolumeEvent() {
  SharedDtor();
}

void LowEncodeVolumeEvent::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void LowEncodeVolumeEvent::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const LowEncodeVolumeEvent& LowEncodeVolumeEvent::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

LowEncodeVolumeEvent* LowEncodeVolumeEvent::default_instance_ = NULL;

LowEncodeVolumeEvent* LowEncodeVolumeEvent::New() const {
  return new LowEncodeVolumeEvent;
}

void LowEncodeVolumeEvent::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    low_encode_volume_event_type_ = 1;
    remaining_monza_encodes_ = GOOGLE_ULONGLONG(0);
    remaining_non_monza_encodes_ = GOOGLE_ULONGLONG(0);
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool LowEncodeVolumeEvent::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.LowEncodeVolumeEventType low_encode_volume_event_type = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::LowEncodeVolumeEventType_IsValid(value)) {
            set_low_encode_volume_event_type(static_cast< ::Impinj::STP::LowEncodeVolumeEventType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_remaining_monza_encodes;
        break;
      }

      // optional uint64 remaining_monza_encodes = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_remaining_monza_encodes:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &remaining_monza_encodes_)));
          set_has_remaining_monza_encodes();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_remaining_non_monza_encodes;
        break;
      }

      // optional uint64 remaining_non_monza_encodes = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_remaining_non_monza_encodes:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
                 input, &remaining_non_monza_encodes_)));
          set_has_remaining_non_monza_encodes();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void LowEncodeVolumeEvent::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.LowEncodeVolumeEventType low_encode_volume_event_type = 1;
  if (has_low_encode_volume_event_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->low_encode_volume_event_type(), output);
  }

  // optional uint64 remaining_monza_encodes = 2;
  if (has_remaining_monza_encodes()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->remaining_monza_encodes(), output);
  }

  // optional uint64 remaining_non_monza_encodes = 3;
  if (has_remaining_non_monza_encodes()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->remaining_non_monza_encodes(), output);
  }

}

int LowEncodeVolumeEvent::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.LowEncodeVolumeEventType low_encode_volume_event_type = 1;
    if (has_low_encode_volume_event_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->low_encode_volume_event_type());
    }

    // optional uint64 remaining_monza_encodes = 2;
    if (has_remaining_monza_encodes()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->remaining_monza_encodes());
    }

    // optional uint64 remaining_non_monza_encodes = 3;
    if (has_remaining_non_monza_encodes()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt64Size(
          this->remaining_non_monza_encodes());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void LowEncodeVolumeEvent::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const LowEncodeVolumeEvent*>(&from));
}

void LowEncodeVolumeEvent::MergeFrom(const LowEncodeVolumeEvent& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_low_encode_volume_event_type()) {
      set_low_encode_volume_event_type(from.low_encode_volume_event_type());
    }
    if (from.has_remaining_monza_encodes()) {
      set_remaining_monza_encodes(from.remaining_monza_encodes());
    }
    if (from.has_remaining_non_monza_encodes()) {
      set_remaining_non_monza_encodes(from.remaining_non_monza_encodes());
    }
  }
}

void LowEncodeVolumeEvent::CopyFrom(const LowEncodeVolumeEvent& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool LowEncodeVolumeEvent::IsInitialized() const {

  return true;
}

void LowEncodeVolumeEvent::Swap(LowEncodeVolumeEvent* other) {
  if (other != this) {
    std::swap(low_encode_volume_event_type_, other->low_encode_volume_event_type_);
    std::swap(remaining_monza_encodes_, other->remaining_monza_encodes_);
    std::swap(remaining_non_monza_encodes_, other->remaining_non_monza_encodes_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string LowEncodeVolumeEvent::GetTypeName() const {
  return "Impinj.STP.LowEncodeVolumeEvent";
}


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

#ifndef _MSC_VER
const int DeviceEventReport::kOperationEventFieldNumber;
const int DeviceEventReport::kGPIEventFieldNumber;
const int DeviceEventReport::kDeviceExceptionEventFieldNumber;
const int DeviceEventReport::kLowEncodeVolumeEventFieldNumber;
#endif  // !_MSC_VER

DeviceEventReport::DeviceEventReport()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void DeviceEventReport::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  operation_event_ = const_cast< ::Impinj::STP::OperationEvent*>(
      ::Impinj::STP::OperationEvent::internal_default_instance());
#else
  operation_event_ = const_cast< ::Impinj::STP::OperationEvent*>(&::Impinj::STP::OperationEvent::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  gpi_event_ = const_cast< ::Impinj::STP::GPIEvent*>(
      ::Impinj::STP::GPIEvent::internal_default_instance());
#else
  gpi_event_ = const_cast< ::Impinj::STP::GPIEvent*>(&::Impinj::STP::GPIEvent::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  device_exception_event_ = const_cast< ::Impinj::STP::DeviceExceptionEvent*>(
      ::Impinj::STP::DeviceExceptionEvent::internal_default_instance());
#else
  device_exception_event_ = const_cast< ::Impinj::STP::DeviceExceptionEvent*>(&::Impinj::STP::DeviceExceptionEvent::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  low_encode_volume_event_ = const_cast< ::Impinj::STP::LowEncodeVolumeEvent*>(
      ::Impinj::STP::LowEncodeVolumeEvent::internal_default_instance());
#else
  low_encode_volume_event_ = const_cast< ::Impinj::STP::LowEncodeVolumeEvent*>(&::Impinj::STP::LowEncodeVolumeEvent::default_instance());
#endif
}

DeviceEventReport::DeviceEventReport(const DeviceEventReport& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void DeviceEventReport::SharedCtor() {
  _cached_size_ = 0;
  operation_event_ = NULL;
  gpi_event_ = NULL;
  device_exception_event_ = NULL;
  low_encode_volume_event_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

DeviceEventReport::~DeviceEventReport() {
  SharedDtor();
}

void DeviceEventReport::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete operation_event_;
    delete gpi_event_;
    delete device_exception_event_;
    delete low_encode_volume_event_;
  }
}

void DeviceEventReport::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const DeviceEventReport& DeviceEventReport::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

DeviceEventReport* DeviceEventReport::default_instance_ = NULL;

DeviceEventReport* DeviceEventReport::New() const {
  return new DeviceEventReport;
}

void DeviceEventReport::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_operation_event()) {
      if (operation_event_ != NULL) operation_event_->::Impinj::STP::OperationEvent::Clear();
    }
    if (has_gpi_event()) {
      if (gpi_event_ != NULL) gpi_event_->::Impinj::STP::GPIEvent::Clear();
    }
    if (has_device_exception_event()) {
      if (device_exception_event_ != NULL) device_exception_event_->::Impinj::STP::DeviceExceptionEvent::Clear();
    }
    if (has_low_encode_volume_event()) {
      if (low_encode_volume_event_ != NULL) low_encode_volume_event_->::Impinj::STP::LowEncodeVolumeEvent::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool DeviceEventReport::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.OperationEvent operation_event = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_operation_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_GPI_event;
        break;
      }

      // optional .Impinj.STP.GPIEvent GPI_event = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_GPI_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_gpi_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_device_exception_event;
        break;
      }

      // optional .Impinj.STP.DeviceExceptionEvent device_exception_event = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_device_exception_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_device_exception_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_low_encode_volume_event;
        break;
      }

      // optional .Impinj.STP.LowEncodeVolumeEvent low_encode_volume_event = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_low_encode_volume_event:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_low_encode_volume_event()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void DeviceEventReport::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.OperationEvent operation_event = 1;
  if (has_operation_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->operation_event(), output);
  }

  // optional .Impinj.STP.GPIEvent GPI_event = 3;
  if (has_gpi_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->gpi_event(), output);
  }

  // optional .Impinj.STP.DeviceExceptionEvent device_exception_event = 5;
  if (has_device_exception_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->device_exception_event(), output);
  }

  // optional .Impinj.STP.LowEncodeVolumeEvent low_encode_volume_event = 6;
  if (has_low_encode_volume_event()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->low_encode_volume_event(), output);
  }

}

int DeviceEventReport::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.OperationEvent operation_event = 1;
    if (has_operation_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->operation_event());
    }

    // optional .Impinj.STP.GPIEvent GPI_event = 3;
    if (has_gpi_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->gpi_event());
    }

    // optional .Impinj.STP.DeviceExceptionEvent device_exception_event = 5;
    if (has_device_exception_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->device_exception_event());
    }

    // optional .Impinj.STP.LowEncodeVolumeEvent low_encode_volume_event = 6;
    if (has_low_encode_volume_event()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->low_encode_volume_event());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void DeviceEventReport::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const DeviceEventReport*>(&from));
}

void DeviceEventReport::MergeFrom(const DeviceEventReport& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_operation_event()) {
      mutable_operation_event()->::Impinj::STP::OperationEvent::MergeFrom(from.operation_event());
    }
    if (from.has_gpi_event()) {
      mutable_gpi_event()->::Impinj::STP::GPIEvent::MergeFrom(from.gpi_event());
    }
    if (from.has_device_exception_event()) {
      mutable_device_exception_event()->::Impinj::STP::DeviceExceptionEvent::MergeFrom(from.device_exception_event());
    }
    if (from.has_low_encode_volume_event()) {
      mutable_low_encode_volume_event()->::Impinj::STP::LowEncodeVolumeEvent::MergeFrom(from.low_encode_volume_event());
    }
  }
}

void DeviceEventReport::CopyFrom(const DeviceEventReport& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceEventReport::IsInitialized() const {

  if (has_operation_event()) {
    if (!this->operation_event().IsInitialized()) return false;
  }
  if (has_gpi_event()) {
    if (!this->gpi_event().IsInitialized()) return false;
  }
  if (has_device_exception_event()) {
    if (!this->device_exception_event().IsInitialized()) return false;
  }
  return true;
}

void DeviceEventReport::Swap(DeviceEventReport* other) {
  if (other != this) {
    std::swap(operation_event_, other->operation_event_);
    std::swap(gpi_event_, other->gpi_event_);
    std::swap(device_exception_event_, other->device_exception_event_);
    std::swap(low_encode_volume_event_, other->low_encode_volume_event_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string DeviceEventReport::GetTypeName() const {
  return "Impinj.STP.DeviceEventReport";
}


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

#ifndef _MSC_VER
const int GetAntennaConfigCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

GetAntennaConfigCommand::GetAntennaConfigCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetAntennaConfigCommand::InitAsDefaultInstance() {
}

GetAntennaConfigCommand::GetAntennaConfigCommand(const GetAntennaConfigCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetAntennaConfigCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetAntennaConfigCommand::~GetAntennaConfigCommand() {
  SharedDtor();
}

void GetAntennaConfigCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void GetAntennaConfigCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetAntennaConfigCommand& GetAntennaConfigCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetAntennaConfigCommand* GetAntennaConfigCommand::default_instance_ = NULL;

GetAntennaConfigCommand* GetAntennaConfigCommand::New() const {
  return new GetAntennaConfigCommand;
}

void GetAntennaConfigCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetAntennaConfigCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetAntennaConfigCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int GetAntennaConfigCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetAntennaConfigCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetAntennaConfigCommand*>(&from));
}

void GetAntennaConfigCommand::MergeFrom(const GetAntennaConfigCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void GetAntennaConfigCommand::CopyFrom(const GetAntennaConfigCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetAntennaConfigCommand::IsInitialized() const {

  return true;
}

void GetAntennaConfigCommand::Swap(GetAntennaConfigCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetAntennaConfigCommand::GetTypeName() const {
  return "Impinj.STP.GetAntennaConfigCommand";
}


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

#ifndef _MSC_VER
const int SetAntennaConfigCommand::kAntennasConfigFieldNumber;
#endif  // !_MSC_VER

SetAntennaConfigCommand::SetAntennaConfigCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetAntennaConfigCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  antennas_config_ = const_cast< ::Impinj::STP::AntennasConfig*>(
      ::Impinj::STP::AntennasConfig::internal_default_instance());
#else
  antennas_config_ = const_cast< ::Impinj::STP::AntennasConfig*>(&::Impinj::STP::AntennasConfig::default_instance());
#endif
}

SetAntennaConfigCommand::SetAntennaConfigCommand(const SetAntennaConfigCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetAntennaConfigCommand::SharedCtor() {
  _cached_size_ = 0;
  antennas_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetAntennaConfigCommand::~SetAntennaConfigCommand() {
  SharedDtor();
}

void SetAntennaConfigCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete antennas_config_;
  }
}

void SetAntennaConfigCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetAntennaConfigCommand& SetAntennaConfigCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetAntennaConfigCommand* SetAntennaConfigCommand::default_instance_ = NULL;

SetAntennaConfigCommand* SetAntennaConfigCommand::New() const {
  return new SetAntennaConfigCommand;
}

void SetAntennaConfigCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_antennas_config()) {
      if (antennas_config_ != NULL) antennas_config_->::Impinj::STP::AntennasConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetAntennaConfigCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.AntennasConfig antennas_config = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_antennas_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetAntennaConfigCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.AntennasConfig antennas_config = 1;
  if (has_antennas_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->antennas_config(), output);
  }

}

int SetAntennaConfigCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.AntennasConfig antennas_config = 1;
    if (has_antennas_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->antennas_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetAntennaConfigCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetAntennaConfigCommand*>(&from));
}

void SetAntennaConfigCommand::MergeFrom(const SetAntennaConfigCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_antennas_config()) {
      mutable_antennas_config()->::Impinj::STP::AntennasConfig::MergeFrom(from.antennas_config());
    }
  }
}

void SetAntennaConfigCommand::CopyFrom(const SetAntennaConfigCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetAntennaConfigCommand::IsInitialized() const {

  if (has_antennas_config()) {
    if (!this->antennas_config().IsInitialized()) return false;
  }
  return true;
}

void SetAntennaConfigCommand::Swap(SetAntennaConfigCommand* other) {
  if (other != this) {
    std::swap(antennas_config_, other->antennas_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetAntennaConfigCommand::GetTypeName() const {
  return "Impinj.STP.SetAntennaConfigCommand";
}


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

#ifndef _MSC_VER
const int StartCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

StartCommand::StartCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void StartCommand::InitAsDefaultInstance() {
}

StartCommand::StartCommand(const StartCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void StartCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

StartCommand::~StartCommand() {
  SharedDtor();
}

void StartCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void StartCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const StartCommand& StartCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

StartCommand* StartCommand::default_instance_ = NULL;

StartCommand* StartCommand::New() const {
  return new StartCommand;
}

void StartCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool StartCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void StartCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int StartCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void StartCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const StartCommand*>(&from));
}

void StartCommand::MergeFrom(const StartCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void StartCommand::CopyFrom(const StartCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool StartCommand::IsInitialized() const {

  return true;
}

void StartCommand::Swap(StartCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string StartCommand::GetTypeName() const {
  return "Impinj.STP.StartCommand";
}


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

#ifndef _MSC_VER
const int SetDeviceConfigCommand::kDeviceConfigFieldNumber;
#endif  // !_MSC_VER

SetDeviceConfigCommand::SetDeviceConfigCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetDeviceConfigCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  device_config_ = const_cast< ::Impinj::STP::DeviceConfig*>(
      ::Impinj::STP::DeviceConfig::internal_default_instance());
#else
  device_config_ = const_cast< ::Impinj::STP::DeviceConfig*>(&::Impinj::STP::DeviceConfig::default_instance());
#endif
}

SetDeviceConfigCommand::SetDeviceConfigCommand(const SetDeviceConfigCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetDeviceConfigCommand::SharedCtor() {
  _cached_size_ = 0;
  device_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetDeviceConfigCommand::~SetDeviceConfigCommand() {
  SharedDtor();
}

void SetDeviceConfigCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete device_config_;
  }
}

void SetDeviceConfigCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetDeviceConfigCommand& SetDeviceConfigCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetDeviceConfigCommand* SetDeviceConfigCommand::default_instance_ = NULL;

SetDeviceConfigCommand* SetDeviceConfigCommand::New() const {
  return new SetDeviceConfigCommand;
}

void SetDeviceConfigCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_device_config()) {
      if (device_config_ != NULL) device_config_->::Impinj::STP::DeviceConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetDeviceConfigCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .Impinj.STP.DeviceConfig device_config = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_device_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetDeviceConfigCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .Impinj.STP.DeviceConfig device_config = 1;
  if (has_device_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->device_config(), output);
  }

}

int SetDeviceConfigCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .Impinj.STP.DeviceConfig device_config = 1;
    if (has_device_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->device_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetDeviceConfigCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetDeviceConfigCommand*>(&from));
}

void SetDeviceConfigCommand::MergeFrom(const SetDeviceConfigCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_device_config()) {
      mutable_device_config()->::Impinj::STP::DeviceConfig::MergeFrom(from.device_config());
    }
  }
}

void SetDeviceConfigCommand::CopyFrom(const SetDeviceConfigCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetDeviceConfigCommand::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;

  if (has_device_config()) {
    if (!this->device_config().IsInitialized()) return false;
  }
  return true;
}

void SetDeviceConfigCommand::Swap(SetDeviceConfigCommand* other) {
  if (other != this) {
    std::swap(device_config_, other->device_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetDeviceConfigCommand::GetTypeName() const {
  return "Impinj.STP.SetDeviceConfigCommand";
}


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

#ifndef _MSC_VER
const int GetDeviceConfigCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

GetDeviceConfigCommand::GetDeviceConfigCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetDeviceConfigCommand::InitAsDefaultInstance() {
}

GetDeviceConfigCommand::GetDeviceConfigCommand(const GetDeviceConfigCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetDeviceConfigCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetDeviceConfigCommand::~GetDeviceConfigCommand() {
  SharedDtor();
}

void GetDeviceConfigCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void GetDeviceConfigCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetDeviceConfigCommand& GetDeviceConfigCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetDeviceConfigCommand* GetDeviceConfigCommand::default_instance_ = NULL;

GetDeviceConfigCommand* GetDeviceConfigCommand::New() const {
  return new GetDeviceConfigCommand;
}

void GetDeviceConfigCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetDeviceConfigCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetDeviceConfigCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int GetDeviceConfigCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetDeviceConfigCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetDeviceConfigCommand*>(&from));
}

void GetDeviceConfigCommand::MergeFrom(const GetDeviceConfigCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void GetDeviceConfigCommand::CopyFrom(const GetDeviceConfigCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceConfigCommand::IsInitialized() const {

  return true;
}

void GetDeviceConfigCommand::Swap(GetDeviceConfigCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetDeviceConfigCommand::GetTypeName() const {
  return "Impinj.STP.GetDeviceConfigCommand";
}


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

#ifndef _MSC_VER
const int EngageCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

EngageCommand::EngageCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void EngageCommand::InitAsDefaultInstance() {
}

EngageCommand::EngageCommand(const EngageCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void EngageCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

EngageCommand::~EngageCommand() {
  SharedDtor();
}

void EngageCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void EngageCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const EngageCommand& EngageCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

EngageCommand* EngageCommand::default_instance_ = NULL;

EngageCommand* EngageCommand::New() const {
  return new EngageCommand;
}

void EngageCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool EngageCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void EngageCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int EngageCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void EngageCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const EngageCommand*>(&from));
}

void EngageCommand::MergeFrom(const EngageCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void EngageCommand::CopyFrom(const EngageCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool EngageCommand::IsInitialized() const {

  return true;
}

void EngageCommand::Swap(EngageCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string EngageCommand::GetTypeName() const {
  return "Impinj.STP.EngageCommand";
}


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

#ifndef _MSC_VER
const int DisengageCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

DisengageCommand::DisengageCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void DisengageCommand::InitAsDefaultInstance() {
}

DisengageCommand::DisengageCommand(const DisengageCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void DisengageCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

DisengageCommand::~DisengageCommand() {
  SharedDtor();
}

void DisengageCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void DisengageCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const DisengageCommand& DisengageCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

DisengageCommand* DisengageCommand::default_instance_ = NULL;

DisengageCommand* DisengageCommand::New() const {
  return new DisengageCommand;
}

void DisengageCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool DisengageCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void DisengageCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int DisengageCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void DisengageCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const DisengageCommand*>(&from));
}

void DisengageCommand::MergeFrom(const DisengageCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void DisengageCommand::CopyFrom(const DisengageCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DisengageCommand::IsInitialized() const {

  return true;
}

void DisengageCommand::Swap(DisengageCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string DisengageCommand::GetTypeName() const {
  return "Impinj.STP.DisengageCommand";
}


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

#ifndef _MSC_VER
const int SetOperationResultGPOCommand::kOperationSummaryResultFieldNumber;
#endif  // !_MSC_VER

SetOperationResultGPOCommand::SetOperationResultGPOCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetOperationResultGPOCommand::InitAsDefaultInstance() {
}

SetOperationResultGPOCommand::SetOperationResultGPOCommand(const SetOperationResultGPOCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetOperationResultGPOCommand::SharedCtor() {
  _cached_size_ = 0;
  operation_summary_result_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetOperationResultGPOCommand::~SetOperationResultGPOCommand() {
  SharedDtor();
}

void SetOperationResultGPOCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void SetOperationResultGPOCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetOperationResultGPOCommand& SetOperationResultGPOCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetOperationResultGPOCommand* SetOperationResultGPOCommand::default_instance_ = NULL;

SetOperationResultGPOCommand* SetOperationResultGPOCommand::New() const {
  return new SetOperationResultGPOCommand;
}

void SetOperationResultGPOCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    operation_summary_result_ = 0;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetOperationResultGPOCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.OperationSummaryResult operation_summary_result = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::Impinj::STP::OperationSummaryResult_IsValid(value)) {
            set_operation_summary_result(static_cast< ::Impinj::STP::OperationSummaryResult >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetOperationResultGPOCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.OperationSummaryResult operation_summary_result = 1;
  if (has_operation_summary_result()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->operation_summary_result(), output);
  }

}

int SetOperationResultGPOCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.OperationSummaryResult operation_summary_result = 1;
    if (has_operation_summary_result()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->operation_summary_result());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetOperationResultGPOCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetOperationResultGPOCommand*>(&from));
}

void SetOperationResultGPOCommand::MergeFrom(const SetOperationResultGPOCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_operation_summary_result()) {
      set_operation_summary_result(from.operation_summary_result());
    }
  }
}

void SetOperationResultGPOCommand::CopyFrom(const SetOperationResultGPOCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetOperationResultGPOCommand::IsInitialized() const {

  return true;
}

void SetOperationResultGPOCommand::Swap(SetOperationResultGPOCommand* other) {
  if (other != this) {
    std::swap(operation_summary_result_, other->operation_summary_result_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetOperationResultGPOCommand::GetTypeName() const {
  return "Impinj.STP.SetOperationResultGPOCommand";
}


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

#ifndef _MSC_VER
const int AddSerializationJobCommand::kSerializationJobFieldNumber;
#endif  // !_MSC_VER

AddSerializationJobCommand::AddSerializationJobCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddSerializationJobCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  serialization_job_ = const_cast< ::Impinj::STP::SerializationJob*>(
      ::Impinj::STP::SerializationJob::internal_default_instance());
#else
  serialization_job_ = const_cast< ::Impinj::STP::SerializationJob*>(&::Impinj::STP::SerializationJob::default_instance());
#endif
}

AddSerializationJobCommand::AddSerializationJobCommand(const AddSerializationJobCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddSerializationJobCommand::SharedCtor() {
  _cached_size_ = 0;
  serialization_job_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddSerializationJobCommand::~AddSerializationJobCommand() {
  SharedDtor();
}

void AddSerializationJobCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete serialization_job_;
  }
}

void AddSerializationJobCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddSerializationJobCommand& AddSerializationJobCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddSerializationJobCommand* AddSerializationJobCommand::default_instance_ = NULL;

AddSerializationJobCommand* AddSerializationJobCommand::New() const {
  return new AddSerializationJobCommand;
}

void AddSerializationJobCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_serialization_job()) {
      if (serialization_job_ != NULL) serialization_job_->::Impinj::STP::SerializationJob::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddSerializationJobCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.SerializationJob serialization_job = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_serialization_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddSerializationJobCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.SerializationJob serialization_job = 1;
  if (has_serialization_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->serialization_job(), output);
  }

}

int AddSerializationJobCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.SerializationJob serialization_job = 1;
    if (has_serialization_job()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->serialization_job());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddSerializationJobCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddSerializationJobCommand*>(&from));
}

void AddSerializationJobCommand::MergeFrom(const AddSerializationJobCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_serialization_job()) {
      mutable_serialization_job()->::Impinj::STP::SerializationJob::MergeFrom(from.serialization_job());
    }
  }
}

void AddSerializationJobCommand::CopyFrom(const AddSerializationJobCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddSerializationJobCommand::IsInitialized() const {

  if (has_serialization_job()) {
    if (!this->serialization_job().IsInitialized()) return false;
  }
  return true;
}

void AddSerializationJobCommand::Swap(AddSerializationJobCommand* other) {
  if (other != this) {
    std::swap(serialization_job_, other->serialization_job_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddSerializationJobCommand::GetTypeName() const {
  return "Impinj.STP.AddSerializationJobCommand";
}


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

#ifndef _MSC_VER
const int RemoveSerializationJobCommand::kJobIdFieldNumber;
#endif  // !_MSC_VER

RemoveSerializationJobCommand::RemoveSerializationJobCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void RemoveSerializationJobCommand::InitAsDefaultInstance() {
}

RemoveSerializationJobCommand::RemoveSerializationJobCommand(const RemoveSerializationJobCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void RemoveSerializationJobCommand::SharedCtor() {
  _cached_size_ = 0;
  job_id_ = 0u;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

RemoveSerializationJobCommand::~RemoveSerializationJobCommand() {
  SharedDtor();
}

void RemoveSerializationJobCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void RemoveSerializationJobCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const RemoveSerializationJobCommand& RemoveSerializationJobCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

RemoveSerializationJobCommand* RemoveSerializationJobCommand::default_instance_ = NULL;

RemoveSerializationJobCommand* RemoveSerializationJobCommand::New() const {
  return new RemoveSerializationJobCommand;
}

void RemoveSerializationJobCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    job_id_ = 0u;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool RemoveSerializationJobCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 job_id = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &job_id_)));
          set_has_job_id();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void RemoveSerializationJobCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional uint32 job_id = 1;
  if (has_job_id()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->job_id(), output);
  }

}

int RemoveSerializationJobCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional uint32 job_id = 1;
    if (has_job_id()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->job_id());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void RemoveSerializationJobCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const RemoveSerializationJobCommand*>(&from));
}

void RemoveSerializationJobCommand::MergeFrom(const RemoveSerializationJobCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_job_id()) {
      set_job_id(from.job_id());
    }
  }
}

void RemoveSerializationJobCommand::CopyFrom(const RemoveSerializationJobCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RemoveSerializationJobCommand::IsInitialized() const {

  return true;
}

void RemoveSerializationJobCommand::Swap(RemoveSerializationJobCommand* other) {
  if (other != this) {
    std::swap(job_id_, other->job_id_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string RemoveSerializationJobCommand::GetTypeName() const {
  return "Impinj.STP.RemoveSerializationJobCommand";
}


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

#ifndef _MSC_VER
const int SetInventoryJobCommand::kInventoryJobFieldNumber;
#endif  // !_MSC_VER

SetInventoryJobCommand::SetInventoryJobCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetInventoryJobCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  inventory_job_ = const_cast< ::Impinj::STP::InventoryJob*>(
      ::Impinj::STP::InventoryJob::internal_default_instance());
#else
  inventory_job_ = const_cast< ::Impinj::STP::InventoryJob*>(&::Impinj::STP::InventoryJob::default_instance());
#endif
}

SetInventoryJobCommand::SetInventoryJobCommand(const SetInventoryJobCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetInventoryJobCommand::SharedCtor() {
  _cached_size_ = 0;
  inventory_job_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetInventoryJobCommand::~SetInventoryJobCommand() {
  SharedDtor();
}

void SetInventoryJobCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete inventory_job_;
  }
}

void SetInventoryJobCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetInventoryJobCommand& SetInventoryJobCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetInventoryJobCommand* SetInventoryJobCommand::default_instance_ = NULL;

SetInventoryJobCommand* SetInventoryJobCommand::New() const {
  return new SetInventoryJobCommand;
}

void SetInventoryJobCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_inventory_job()) {
      if (inventory_job_ != NULL) inventory_job_->::Impinj::STP::InventoryJob::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetInventoryJobCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.InventoryJob inventory_job = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_inventory_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetInventoryJobCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.InventoryJob inventory_job = 1;
  if (has_inventory_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->inventory_job(), output);
  }

}

int SetInventoryJobCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.InventoryJob inventory_job = 1;
    if (has_inventory_job()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->inventory_job());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetInventoryJobCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetInventoryJobCommand*>(&from));
}

void SetInventoryJobCommand::MergeFrom(const SetInventoryJobCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_inventory_job()) {
      mutable_inventory_job()->::Impinj::STP::InventoryJob::MergeFrom(from.inventory_job());
    }
  }
}

void SetInventoryJobCommand::CopyFrom(const SetInventoryJobCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetInventoryJobCommand::IsInitialized() const {

  return true;
}

void SetInventoryJobCommand::Swap(SetInventoryJobCommand* other) {
  if (other != this) {
    std::swap(inventory_job_, other->inventory_job_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetInventoryJobCommand::GetTypeName() const {
  return "Impinj.STP.SetInventoryJobCommand";
}


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

#ifndef _MSC_VER
const int SetCartonContentsJobCommand::kCartonContentsJobFieldNumber;
#endif  // !_MSC_VER

SetCartonContentsJobCommand::SetCartonContentsJobCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetCartonContentsJobCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  carton_contents_job_ = const_cast< ::Impinj::STP::CartonContentsJob*>(
      ::Impinj::STP::CartonContentsJob::internal_default_instance());
#else
  carton_contents_job_ = const_cast< ::Impinj::STP::CartonContentsJob*>(&::Impinj::STP::CartonContentsJob::default_instance());
#endif
}

SetCartonContentsJobCommand::SetCartonContentsJobCommand(const SetCartonContentsJobCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetCartonContentsJobCommand::SharedCtor() {
  _cached_size_ = 0;
  carton_contents_job_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetCartonContentsJobCommand::~SetCartonContentsJobCommand() {
  SharedDtor();
}

void SetCartonContentsJobCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete carton_contents_job_;
  }
}

void SetCartonContentsJobCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetCartonContentsJobCommand& SetCartonContentsJobCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetCartonContentsJobCommand* SetCartonContentsJobCommand::default_instance_ = NULL;

SetCartonContentsJobCommand* SetCartonContentsJobCommand::New() const {
  return new SetCartonContentsJobCommand;
}

void SetCartonContentsJobCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_carton_contents_job()) {
      if (carton_contents_job_ != NULL) carton_contents_job_->::Impinj::STP::CartonContentsJob::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetCartonContentsJobCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.CartonContentsJob carton_contents_job = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_carton_contents_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetCartonContentsJobCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.CartonContentsJob carton_contents_job = 1;
  if (has_carton_contents_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->carton_contents_job(), output);
  }

}

int SetCartonContentsJobCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.CartonContentsJob carton_contents_job = 1;
    if (has_carton_contents_job()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->carton_contents_job());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetCartonContentsJobCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetCartonContentsJobCommand*>(&from));
}

void SetCartonContentsJobCommand::MergeFrom(const SetCartonContentsJobCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_carton_contents_job()) {
      mutable_carton_contents_job()->::Impinj::STP::CartonContentsJob::MergeFrom(from.carton_contents_job());
    }
  }
}

void SetCartonContentsJobCommand::CopyFrom(const SetCartonContentsJobCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetCartonContentsJobCommand::IsInitialized() const {

  return true;
}

void SetCartonContentsJobCommand::Swap(SetCartonContentsJobCommand* other) {
  if (other != this) {
    std::swap(carton_contents_job_, other->carton_contents_job_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetCartonContentsJobCommand::GetTypeName() const {
  return "Impinj.STP.SetCartonContentsJobCommand";
}


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

#ifndef _MSC_VER
const int GetOperationDataCommand::kReservedFieldNumber;
#endif  // !_MSC_VER

GetOperationDataCommand::GetOperationDataCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetOperationDataCommand::InitAsDefaultInstance() {
}

GetOperationDataCommand::GetOperationDataCommand(const GetOperationDataCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetOperationDataCommand::SharedCtor() {
  _cached_size_ = 0;
  reserved_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetOperationDataCommand::~GetOperationDataCommand() {
  SharedDtor();
}

void GetOperationDataCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
  }
}

void GetOperationDataCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetOperationDataCommand& GetOperationDataCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetOperationDataCommand* GetOperationDataCommand::default_instance_ = NULL;

GetOperationDataCommand* GetOperationDataCommand::New() const {
  return new GetOperationDataCommand;
}

void GetOperationDataCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reserved_ = false;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetOperationDataCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool reserved = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &reserved_)));
          set_has_reserved();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetOperationDataCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bool reserved = 1;
  if (has_reserved()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->reserved(), output);
  }

}

int GetOperationDataCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bool reserved = 1;
    if (has_reserved()) {
      total_size += 1 + 1;
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetOperationDataCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetOperationDataCommand*>(&from));
}

void GetOperationDataCommand::MergeFrom(const GetOperationDataCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reserved()) {
      set_reserved(from.reserved());
    }
  }
}

void GetOperationDataCommand::CopyFrom(const GetOperationDataCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetOperationDataCommand::IsInitialized() const {

  return true;
}

void GetOperationDataCommand::Swap(GetOperationDataCommand* other) {
  if (other != this) {
    std::swap(reserved_, other->reserved_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetOperationDataCommand::GetTypeName() const {
  return "Impinj.STP.GetOperationDataCommand";
}


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

#ifndef _MSC_VER
const int AddLicenseKeyCommand::kLicenseKeyFieldNumber;
#endif  // !_MSC_VER

AddLicenseKeyCommand::AddLicenseKeyCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddLicenseKeyCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  license_key_ = const_cast< ::Impinj::STP::LicenseKey*>(
      ::Impinj::STP::LicenseKey::internal_default_instance());
#else
  license_key_ = const_cast< ::Impinj::STP::LicenseKey*>(&::Impinj::STP::LicenseKey::default_instance());
#endif
}

AddLicenseKeyCommand::AddLicenseKeyCommand(const AddLicenseKeyCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddLicenseKeyCommand::SharedCtor() {
  _cached_size_ = 0;
  license_key_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddLicenseKeyCommand::~AddLicenseKeyCommand() {
  SharedDtor();
}

void AddLicenseKeyCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete license_key_;
  }
}

void AddLicenseKeyCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddLicenseKeyCommand& AddLicenseKeyCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddLicenseKeyCommand* AddLicenseKeyCommand::default_instance_ = NULL;

AddLicenseKeyCommand* AddLicenseKeyCommand::New() const {
  return new AddLicenseKeyCommand;
}

void AddLicenseKeyCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_license_key()) {
      if (license_key_ != NULL) license_key_->::Impinj::STP::LicenseKey::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddLicenseKeyCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.LicenseKey license_key = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_license_key()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddLicenseKeyCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.LicenseKey license_key = 1;
  if (has_license_key()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->license_key(), output);
  }

}

int AddLicenseKeyCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.LicenseKey license_key = 1;
    if (has_license_key()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->license_key());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddLicenseKeyCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddLicenseKeyCommand*>(&from));
}

void AddLicenseKeyCommand::MergeFrom(const AddLicenseKeyCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_license_key()) {
      mutable_license_key()->::Impinj::STP::LicenseKey::MergeFrom(from.license_key());
    }
  }
}

void AddLicenseKeyCommand::CopyFrom(const AddLicenseKeyCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddLicenseKeyCommand::IsInitialized() const {

  if (has_license_key()) {
    if (!this->license_key().IsInitialized()) return false;
  }
  return true;
}

void AddLicenseKeyCommand::Swap(AddLicenseKeyCommand* other) {
  if (other != this) {
    std::swap(license_key_, other->license_key_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddLicenseKeyCommand::GetTypeName() const {
  return "Impinj.STP.AddLicenseKeyCommand";
}


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

#ifndef _MSC_VER
const int AddTIDTableEntriesCommand::kTableEntriesFieldNumber;
#endif  // !_MSC_VER

AddTIDTableEntriesCommand::AddTIDTableEntriesCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddTIDTableEntriesCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  table_entries_ = const_cast< ::Impinj::STP::TIDTableEntries*>(
      ::Impinj::STP::TIDTableEntries::internal_default_instance());
#else
  table_entries_ = const_cast< ::Impinj::STP::TIDTableEntries*>(&::Impinj::STP::TIDTableEntries::default_instance());
#endif
}

AddTIDTableEntriesCommand::AddTIDTableEntriesCommand(const AddTIDTableEntriesCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddTIDTableEntriesCommand::SharedCtor() {
  _cached_size_ = 0;
  table_entries_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddTIDTableEntriesCommand::~AddTIDTableEntriesCommand() {
  SharedDtor();
}

void AddTIDTableEntriesCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete table_entries_;
  }
}

void AddTIDTableEntriesCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddTIDTableEntriesCommand& AddTIDTableEntriesCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddTIDTableEntriesCommand* AddTIDTableEntriesCommand::default_instance_ = NULL;

AddTIDTableEntriesCommand* AddTIDTableEntriesCommand::New() const {
  return new AddTIDTableEntriesCommand;
}

void AddTIDTableEntriesCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_table_entries()) {
      if (table_entries_ != NULL) table_entries_->::Impinj::STP::TIDTableEntries::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddTIDTableEntriesCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.TIDTableEntries table_entries = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_table_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddTIDTableEntriesCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.TIDTableEntries table_entries = 1;
  if (has_table_entries()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->table_entries(), output);
  }

}

int AddTIDTableEntriesCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.TIDTableEntries table_entries = 1;
    if (has_table_entries()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->table_entries());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddTIDTableEntriesCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddTIDTableEntriesCommand*>(&from));
}

void AddTIDTableEntriesCommand::MergeFrom(const AddTIDTableEntriesCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_table_entries()) {
      mutable_table_entries()->::Impinj::STP::TIDTableEntries::MergeFrom(from.table_entries());
    }
  }
}

void AddTIDTableEntriesCommand::CopyFrom(const AddTIDTableEntriesCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddTIDTableEntriesCommand::IsInitialized() const {

  if (has_table_entries()) {
    if (!this->table_entries().IsInitialized()) return false;
  }
  return true;
}

void AddTIDTableEntriesCommand::Swap(AddTIDTableEntriesCommand* other) {
  if (other != this) {
    std::swap(table_entries_, other->table_entries_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddTIDTableEntriesCommand::GetTypeName() const {
  return "Impinj.STP.AddTIDTableEntriesCommand";
}


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

#ifndef _MSC_VER
const int AddOrderedListEntriesCommand::kOrderedListEntriesFieldNumber;
#endif  // !_MSC_VER

AddOrderedListEntriesCommand::AddOrderedListEntriesCommand()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddOrderedListEntriesCommand::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  ordered_list_entries_ = const_cast< ::Impinj::STP::OrderedListEntries*>(
      ::Impinj::STP::OrderedListEntries::internal_default_instance());
#else
  ordered_list_entries_ = const_cast< ::Impinj::STP::OrderedListEntries*>(&::Impinj::STP::OrderedListEntries::default_instance());
#endif
}

AddOrderedListEntriesCommand::AddOrderedListEntriesCommand(const AddOrderedListEntriesCommand& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddOrderedListEntriesCommand::SharedCtor() {
  _cached_size_ = 0;
  ordered_list_entries_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddOrderedListEntriesCommand::~AddOrderedListEntriesCommand() {
  SharedDtor();
}

void AddOrderedListEntriesCommand::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete ordered_list_entries_;
  }
}

void AddOrderedListEntriesCommand::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddOrderedListEntriesCommand& AddOrderedListEntriesCommand::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddOrderedListEntriesCommand* AddOrderedListEntriesCommand::default_instance_ = NULL;

AddOrderedListEntriesCommand* AddOrderedListEntriesCommand::New() const {
  return new AddOrderedListEntriesCommand;
}

void AddOrderedListEntriesCommand::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_ordered_list_entries()) {
      if (ordered_list_entries_ != NULL) ordered_list_entries_->::Impinj::STP::OrderedListEntries::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddOrderedListEntriesCommand::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.OrderedListEntries ordered_list_entries = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_ordered_list_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddOrderedListEntriesCommand::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.OrderedListEntries ordered_list_entries = 1;
  if (has_ordered_list_entries()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->ordered_list_entries(), output);
  }

}

int AddOrderedListEntriesCommand::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.OrderedListEntries ordered_list_entries = 1;
    if (has_ordered_list_entries()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->ordered_list_entries());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddOrderedListEntriesCommand::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddOrderedListEntriesCommand*>(&from));
}

void AddOrderedListEntriesCommand::MergeFrom(const AddOrderedListEntriesCommand& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_ordered_list_entries()) {
      mutable_ordered_list_entries()->::Impinj::STP::OrderedListEntries::MergeFrom(from.ordered_list_entries());
    }
  }
}

void AddOrderedListEntriesCommand::CopyFrom(const AddOrderedListEntriesCommand& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddOrderedListEntriesCommand::IsInitialized() const {

  if (has_ordered_list_entries()) {
    if (!this->ordered_list_entries().IsInitialized()) return false;
  }
  return true;
}

void AddOrderedListEntriesCommand::Swap(AddOrderedListEntriesCommand* other) {
  if (other != this) {
    std::swap(ordered_list_entries_, other->ordered_list_entries_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddOrderedListEntriesCommand::GetTypeName() const {
  return "Impinj.STP.AddOrderedListEntriesCommand";
}


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

#ifndef _MSC_VER
const int StartResp::kReplyFieldNumber;
#endif  // !_MSC_VER

StartResp::StartResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void StartResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

StartResp::StartResp(const StartResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void StartResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

StartResp::~StartResp() {
  SharedDtor();
}

void StartResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void StartResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const StartResp& StartResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

StartResp* StartResp::default_instance_ = NULL;

StartResp* StartResp::New() const {
  return new StartResp;
}

void StartResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool StartResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void StartResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int StartResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void StartResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const StartResp*>(&from));
}

void StartResp::MergeFrom(const StartResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void StartResp::CopyFrom(const StartResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool StartResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void StartResp::Swap(StartResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string StartResp::GetTypeName() const {
  return "Impinj.STP.StartResp";
}


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

#ifndef _MSC_VER
const int SetDeviceConfigResp::kReplyFieldNumber;
#endif  // !_MSC_VER

SetDeviceConfigResp::SetDeviceConfigResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetDeviceConfigResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

SetDeviceConfigResp::SetDeviceConfigResp(const SetDeviceConfigResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetDeviceConfigResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetDeviceConfigResp::~SetDeviceConfigResp() {
  SharedDtor();
}

void SetDeviceConfigResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void SetDeviceConfigResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetDeviceConfigResp& SetDeviceConfigResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetDeviceConfigResp* SetDeviceConfigResp::default_instance_ = NULL;

SetDeviceConfigResp* SetDeviceConfigResp::New() const {
  return new SetDeviceConfigResp;
}

void SetDeviceConfigResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetDeviceConfigResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetDeviceConfigResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int SetDeviceConfigResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetDeviceConfigResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetDeviceConfigResp*>(&from));
}

void SetDeviceConfigResp::MergeFrom(const SetDeviceConfigResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void SetDeviceConfigResp::CopyFrom(const SetDeviceConfigResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetDeviceConfigResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void SetDeviceConfigResp::Swap(SetDeviceConfigResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetDeviceConfigResp::GetTypeName() const {
  return "Impinj.STP.SetDeviceConfigResp";
}


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

#ifndef _MSC_VER
const int GetDeviceConfigResp::kReplyFieldNumber;
const int GetDeviceConfigResp::kDeviceConfigFieldNumber;
#endif  // !_MSC_VER

GetDeviceConfigResp::GetDeviceConfigResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetDeviceConfigResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  device_config_ = const_cast< ::Impinj::STP::DeviceConfig*>(
      ::Impinj::STP::DeviceConfig::internal_default_instance());
#else
  device_config_ = const_cast< ::Impinj::STP::DeviceConfig*>(&::Impinj::STP::DeviceConfig::default_instance());
#endif
}

GetDeviceConfigResp::GetDeviceConfigResp(const GetDeviceConfigResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetDeviceConfigResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  device_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetDeviceConfigResp::~GetDeviceConfigResp() {
  SharedDtor();
}

void GetDeviceConfigResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
    delete device_config_;
  }
}

void GetDeviceConfigResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetDeviceConfigResp& GetDeviceConfigResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetDeviceConfigResp* GetDeviceConfigResp::default_instance_ = NULL;

GetDeviceConfigResp* GetDeviceConfigResp::New() const {
  return new GetDeviceConfigResp;
}

void GetDeviceConfigResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
    if (has_device_config()) {
      if (device_config_ != NULL) device_config_->::Impinj::STP::DeviceConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetDeviceConfigResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_device_config;
        break;
      }

      // optional .Impinj.STP.DeviceConfig device_config = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_device_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_device_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetDeviceConfigResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

  // optional .Impinj.STP.DeviceConfig device_config = 2;
  if (has_device_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->device_config(), output);
  }

}

int GetDeviceConfigResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

    // optional .Impinj.STP.DeviceConfig device_config = 2;
    if (has_device_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->device_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetDeviceConfigResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetDeviceConfigResp*>(&from));
}

void GetDeviceConfigResp::MergeFrom(const GetDeviceConfigResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
    if (from.has_device_config()) {
      mutable_device_config()->::Impinj::STP::DeviceConfig::MergeFrom(from.device_config());
    }
  }
}

void GetDeviceConfigResp::CopyFrom(const GetDeviceConfigResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceConfigResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  if (has_device_config()) {
    if (!this->device_config().IsInitialized()) return false;
  }
  return true;
}

void GetDeviceConfigResp::Swap(GetDeviceConfigResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(device_config_, other->device_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetDeviceConfigResp::GetTypeName() const {
  return "Impinj.STP.GetDeviceConfigResp";
}


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

#ifndef _MSC_VER
const int SetAntennaConfigResp::kReplyFieldNumber;
#endif  // !_MSC_VER

SetAntennaConfigResp::SetAntennaConfigResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetAntennaConfigResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

SetAntennaConfigResp::SetAntennaConfigResp(const SetAntennaConfigResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetAntennaConfigResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetAntennaConfigResp::~SetAntennaConfigResp() {
  SharedDtor();
}

void SetAntennaConfigResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void SetAntennaConfigResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetAntennaConfigResp& SetAntennaConfigResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetAntennaConfigResp* SetAntennaConfigResp::default_instance_ = NULL;

SetAntennaConfigResp* SetAntennaConfigResp::New() const {
  return new SetAntennaConfigResp;
}

void SetAntennaConfigResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetAntennaConfigResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetAntennaConfigResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int SetAntennaConfigResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetAntennaConfigResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetAntennaConfigResp*>(&from));
}

void SetAntennaConfigResp::MergeFrom(const SetAntennaConfigResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void SetAntennaConfigResp::CopyFrom(const SetAntennaConfigResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetAntennaConfigResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void SetAntennaConfigResp::Swap(SetAntennaConfigResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetAntennaConfigResp::GetTypeName() const {
  return "Impinj.STP.SetAntennaConfigResp";
}


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

#ifndef _MSC_VER
const int GetAntennaConfigResp::kReplyFieldNumber;
const int GetAntennaConfigResp::kAntennasConfigFieldNumber;
#endif  // !_MSC_VER

GetAntennaConfigResp::GetAntennaConfigResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetAntennaConfigResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  antennas_config_ = const_cast< ::Impinj::STP::AntennasConfig*>(
      ::Impinj::STP::AntennasConfig::internal_default_instance());
#else
  antennas_config_ = const_cast< ::Impinj::STP::AntennasConfig*>(&::Impinj::STP::AntennasConfig::default_instance());
#endif
}

GetAntennaConfigResp::GetAntennaConfigResp(const GetAntennaConfigResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetAntennaConfigResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  antennas_config_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetAntennaConfigResp::~GetAntennaConfigResp() {
  SharedDtor();
}

void GetAntennaConfigResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
    delete antennas_config_;
  }
}

void GetAntennaConfigResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetAntennaConfigResp& GetAntennaConfigResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetAntennaConfigResp* GetAntennaConfigResp::default_instance_ = NULL;

GetAntennaConfigResp* GetAntennaConfigResp::New() const {
  return new GetAntennaConfigResp;
}

void GetAntennaConfigResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
    if (has_antennas_config()) {
      if (antennas_config_ != NULL) antennas_config_->::Impinj::STP::AntennasConfig::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetAntennaConfigResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_antennas_config;
        break;
      }

      // optional .Impinj.STP.AntennasConfig antennas_config = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_antennas_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_antennas_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetAntennaConfigResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

  // optional .Impinj.STP.AntennasConfig antennas_config = 2;
  if (has_antennas_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->antennas_config(), output);
  }

}

int GetAntennaConfigResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

    // optional .Impinj.STP.AntennasConfig antennas_config = 2;
    if (has_antennas_config()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->antennas_config());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetAntennaConfigResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetAntennaConfigResp*>(&from));
}

void GetAntennaConfigResp::MergeFrom(const GetAntennaConfigResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
    if (from.has_antennas_config()) {
      mutable_antennas_config()->::Impinj::STP::AntennasConfig::MergeFrom(from.antennas_config());
    }
  }
}

void GetAntennaConfigResp::CopyFrom(const GetAntennaConfigResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetAntennaConfigResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  if (has_antennas_config()) {
    if (!this->antennas_config().IsInitialized()) return false;
  }
  return true;
}

void GetAntennaConfigResp::Swap(GetAntennaConfigResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(antennas_config_, other->antennas_config_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetAntennaConfigResp::GetTypeName() const {
  return "Impinj.STP.GetAntennaConfigResp";
}


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

#ifndef _MSC_VER
const int EngageResp::kReplyFieldNumber;
#endif  // !_MSC_VER

EngageResp::EngageResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void EngageResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

EngageResp::EngageResp(const EngageResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void EngageResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

EngageResp::~EngageResp() {
  SharedDtor();
}

void EngageResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void EngageResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const EngageResp& EngageResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

EngageResp* EngageResp::default_instance_ = NULL;

EngageResp* EngageResp::New() const {
  return new EngageResp;
}

void EngageResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool EngageResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void EngageResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int EngageResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void EngageResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const EngageResp*>(&from));
}

void EngageResp::MergeFrom(const EngageResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void EngageResp::CopyFrom(const EngageResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool EngageResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void EngageResp::Swap(EngageResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string EngageResp::GetTypeName() const {
  return "Impinj.STP.EngageResp";
}


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

#ifndef _MSC_VER
const int DisengageResp::kReplyFieldNumber;
#endif  // !_MSC_VER

DisengageResp::DisengageResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void DisengageResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

DisengageResp::DisengageResp(const DisengageResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void DisengageResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

DisengageResp::~DisengageResp() {
  SharedDtor();
}

void DisengageResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void DisengageResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const DisengageResp& DisengageResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

DisengageResp* DisengageResp::default_instance_ = NULL;

DisengageResp* DisengageResp::New() const {
  return new DisengageResp;
}

void DisengageResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool DisengageResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void DisengageResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int DisengageResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void DisengageResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const DisengageResp*>(&from));
}

void DisengageResp::MergeFrom(const DisengageResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void DisengageResp::CopyFrom(const DisengageResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DisengageResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void DisengageResp::Swap(DisengageResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string DisengageResp::GetTypeName() const {
  return "Impinj.STP.DisengageResp";
}


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

#ifndef _MSC_VER
const int SetOperationResultGPOResp::kReplyFieldNumber;
#endif  // !_MSC_VER

SetOperationResultGPOResp::SetOperationResultGPOResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetOperationResultGPOResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

SetOperationResultGPOResp::SetOperationResultGPOResp(const SetOperationResultGPOResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetOperationResultGPOResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetOperationResultGPOResp::~SetOperationResultGPOResp() {
  SharedDtor();
}

void SetOperationResultGPOResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void SetOperationResultGPOResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetOperationResultGPOResp& SetOperationResultGPOResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetOperationResultGPOResp* SetOperationResultGPOResp::default_instance_ = NULL;

SetOperationResultGPOResp* SetOperationResultGPOResp::New() const {
  return new SetOperationResultGPOResp;
}

void SetOperationResultGPOResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetOperationResultGPOResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetOperationResultGPOResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int SetOperationResultGPOResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetOperationResultGPOResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetOperationResultGPOResp*>(&from));
}

void SetOperationResultGPOResp::MergeFrom(const SetOperationResultGPOResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void SetOperationResultGPOResp::CopyFrom(const SetOperationResultGPOResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetOperationResultGPOResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void SetOperationResultGPOResp::Swap(SetOperationResultGPOResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetOperationResultGPOResp::GetTypeName() const {
  return "Impinj.STP.SetOperationResultGPOResp";
}


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

#ifndef _MSC_VER
const int AddSerializationJobResp::kReplyFieldNumber;
#endif  // !_MSC_VER

AddSerializationJobResp::AddSerializationJobResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddSerializationJobResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

AddSerializationJobResp::AddSerializationJobResp(const AddSerializationJobResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddSerializationJobResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddSerializationJobResp::~AddSerializationJobResp() {
  SharedDtor();
}

void AddSerializationJobResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void AddSerializationJobResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddSerializationJobResp& AddSerializationJobResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddSerializationJobResp* AddSerializationJobResp::default_instance_ = NULL;

AddSerializationJobResp* AddSerializationJobResp::New() const {
  return new AddSerializationJobResp;
}

void AddSerializationJobResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddSerializationJobResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddSerializationJobResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int AddSerializationJobResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddSerializationJobResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddSerializationJobResp*>(&from));
}

void AddSerializationJobResp::MergeFrom(const AddSerializationJobResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void AddSerializationJobResp::CopyFrom(const AddSerializationJobResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddSerializationJobResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void AddSerializationJobResp::Swap(AddSerializationJobResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddSerializationJobResp::GetTypeName() const {
  return "Impinj.STP.AddSerializationJobResp";
}


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

#ifndef _MSC_VER
const int RemoveSerializationJobResp::kReplyFieldNumber;
#endif  // !_MSC_VER

RemoveSerializationJobResp::RemoveSerializationJobResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void RemoveSerializationJobResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

RemoveSerializationJobResp::RemoveSerializationJobResp(const RemoveSerializationJobResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void RemoveSerializationJobResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

RemoveSerializationJobResp::~RemoveSerializationJobResp() {
  SharedDtor();
}

void RemoveSerializationJobResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void RemoveSerializationJobResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const RemoveSerializationJobResp& RemoveSerializationJobResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

RemoveSerializationJobResp* RemoveSerializationJobResp::default_instance_ = NULL;

RemoveSerializationJobResp* RemoveSerializationJobResp::New() const {
  return new RemoveSerializationJobResp;
}

void RemoveSerializationJobResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool RemoveSerializationJobResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void RemoveSerializationJobResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int RemoveSerializationJobResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void RemoveSerializationJobResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const RemoveSerializationJobResp*>(&from));
}

void RemoveSerializationJobResp::MergeFrom(const RemoveSerializationJobResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void RemoveSerializationJobResp::CopyFrom(const RemoveSerializationJobResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RemoveSerializationJobResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void RemoveSerializationJobResp::Swap(RemoveSerializationJobResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string RemoveSerializationJobResp::GetTypeName() const {
  return "Impinj.STP.RemoveSerializationJobResp";
}


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

#ifndef _MSC_VER
const int SetInventoryJobResp::kReplyFieldNumber;
#endif  // !_MSC_VER

SetInventoryJobResp::SetInventoryJobResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetInventoryJobResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

SetInventoryJobResp::SetInventoryJobResp(const SetInventoryJobResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetInventoryJobResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetInventoryJobResp::~SetInventoryJobResp() {
  SharedDtor();
}

void SetInventoryJobResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void SetInventoryJobResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetInventoryJobResp& SetInventoryJobResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetInventoryJobResp* SetInventoryJobResp::default_instance_ = NULL;

SetInventoryJobResp* SetInventoryJobResp::New() const {
  return new SetInventoryJobResp;
}

void SetInventoryJobResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetInventoryJobResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetInventoryJobResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int SetInventoryJobResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetInventoryJobResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetInventoryJobResp*>(&from));
}

void SetInventoryJobResp::MergeFrom(const SetInventoryJobResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void SetInventoryJobResp::CopyFrom(const SetInventoryJobResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetInventoryJobResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void SetInventoryJobResp::Swap(SetInventoryJobResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetInventoryJobResp::GetTypeName() const {
  return "Impinj.STP.SetInventoryJobResp";
}


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

#ifndef _MSC_VER
const int SetCartonContentsJobResp::kReplyFieldNumber;
#endif  // !_MSC_VER

SetCartonContentsJobResp::SetCartonContentsJobResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void SetCartonContentsJobResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

SetCartonContentsJobResp::SetCartonContentsJobResp(const SetCartonContentsJobResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void SetCartonContentsJobResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

SetCartonContentsJobResp::~SetCartonContentsJobResp() {
  SharedDtor();
}

void SetCartonContentsJobResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void SetCartonContentsJobResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const SetCartonContentsJobResp& SetCartonContentsJobResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

SetCartonContentsJobResp* SetCartonContentsJobResp::default_instance_ = NULL;

SetCartonContentsJobResp* SetCartonContentsJobResp::New() const {
  return new SetCartonContentsJobResp;
}

void SetCartonContentsJobResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool SetCartonContentsJobResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void SetCartonContentsJobResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int SetCartonContentsJobResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void SetCartonContentsJobResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const SetCartonContentsJobResp*>(&from));
}

void SetCartonContentsJobResp::MergeFrom(const SetCartonContentsJobResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void SetCartonContentsJobResp::CopyFrom(const SetCartonContentsJobResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SetCartonContentsJobResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void SetCartonContentsJobResp::Swap(SetCartonContentsJobResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string SetCartonContentsJobResp::GetTypeName() const {
  return "Impinj.STP.SetCartonContentsJobResp";
}


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

#ifndef _MSC_VER
const int GetOperationDataResp::kReplyFieldNumber;
const int GetOperationDataResp::kOperationDataFieldNumber;
#endif  // !_MSC_VER

GetOperationDataResp::GetOperationDataResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void GetOperationDataResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  operation_data_ = const_cast< ::Impinj::STP::OperationData*>(
      ::Impinj::STP::OperationData::internal_default_instance());
#else
  operation_data_ = const_cast< ::Impinj::STP::OperationData*>(&::Impinj::STP::OperationData::default_instance());
#endif
}

GetOperationDataResp::GetOperationDataResp(const GetOperationDataResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void GetOperationDataResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  operation_data_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

GetOperationDataResp::~GetOperationDataResp() {
  SharedDtor();
}

void GetOperationDataResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
    delete operation_data_;
  }
}

void GetOperationDataResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const GetOperationDataResp& GetOperationDataResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

GetOperationDataResp* GetOperationDataResp::default_instance_ = NULL;

GetOperationDataResp* GetOperationDataResp::New() const {
  return new GetOperationDataResp;
}

void GetOperationDataResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
    if (has_operation_data()) {
      if (operation_data_ != NULL) operation_data_->::Impinj::STP::OperationData::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool GetOperationDataResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_operation_data;
        break;
      }

      // optional .Impinj.STP.OperationData operation_data = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_operation_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_operation_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void GetOperationDataResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

  // optional .Impinj.STP.OperationData operation_data = 2;
  if (has_operation_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->operation_data(), output);
  }

}

int GetOperationDataResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

    // optional .Impinj.STP.OperationData operation_data = 2;
    if (has_operation_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->operation_data());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void GetOperationDataResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const GetOperationDataResp*>(&from));
}

void GetOperationDataResp::MergeFrom(const GetOperationDataResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
    if (from.has_operation_data()) {
      mutable_operation_data()->::Impinj::STP::OperationData::MergeFrom(from.operation_data());
    }
  }
}

void GetOperationDataResp::CopyFrom(const GetOperationDataResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetOperationDataResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void GetOperationDataResp::Swap(GetOperationDataResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(operation_data_, other->operation_data_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string GetOperationDataResp::GetTypeName() const {
  return "Impinj.STP.GetOperationDataResp";
}


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

#ifndef _MSC_VER
const int AddLicenseKeyResp::kReplyFieldNumber;
#endif  // !_MSC_VER

AddLicenseKeyResp::AddLicenseKeyResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddLicenseKeyResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

AddLicenseKeyResp::AddLicenseKeyResp(const AddLicenseKeyResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddLicenseKeyResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddLicenseKeyResp::~AddLicenseKeyResp() {
  SharedDtor();
}

void AddLicenseKeyResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void AddLicenseKeyResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddLicenseKeyResp& AddLicenseKeyResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddLicenseKeyResp* AddLicenseKeyResp::default_instance_ = NULL;

AddLicenseKeyResp* AddLicenseKeyResp::New() const {
  return new AddLicenseKeyResp;
}

void AddLicenseKeyResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddLicenseKeyResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddLicenseKeyResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int AddLicenseKeyResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddLicenseKeyResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddLicenseKeyResp*>(&from));
}

void AddLicenseKeyResp::MergeFrom(const AddLicenseKeyResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void AddLicenseKeyResp::CopyFrom(const AddLicenseKeyResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddLicenseKeyResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void AddLicenseKeyResp::Swap(AddLicenseKeyResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddLicenseKeyResp::GetTypeName() const {
  return "Impinj.STP.AddLicenseKeyResp";
}


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

#ifndef _MSC_VER
const int AddTIDTableEntriesResp::kReplyFieldNumber;
#endif  // !_MSC_VER

AddTIDTableEntriesResp::AddTIDTableEntriesResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddTIDTableEntriesResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

AddTIDTableEntriesResp::AddTIDTableEntriesResp(const AddTIDTableEntriesResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddTIDTableEntriesResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddTIDTableEntriesResp::~AddTIDTableEntriesResp() {
  SharedDtor();
}

void AddTIDTableEntriesResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void AddTIDTableEntriesResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddTIDTableEntriesResp& AddTIDTableEntriesResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddTIDTableEntriesResp* AddTIDTableEntriesResp::default_instance_ = NULL;

AddTIDTableEntriesResp* AddTIDTableEntriesResp::New() const {
  return new AddTIDTableEntriesResp;
}

void AddTIDTableEntriesResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddTIDTableEntriesResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddTIDTableEntriesResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int AddTIDTableEntriesResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddTIDTableEntriesResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddTIDTableEntriesResp*>(&from));
}

void AddTIDTableEntriesResp::MergeFrom(const AddTIDTableEntriesResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void AddTIDTableEntriesResp::CopyFrom(const AddTIDTableEntriesResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddTIDTableEntriesResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void AddTIDTableEntriesResp::Swap(AddTIDTableEntriesResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddTIDTableEntriesResp::GetTypeName() const {
  return "Impinj.STP.AddTIDTableEntriesResp";
}


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

#ifndef _MSC_VER
const int AddOrderedListEntriesResp::kReplyFieldNumber;
#endif  // !_MSC_VER

AddOrderedListEntriesResp::AddOrderedListEntriesResp()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void AddOrderedListEntriesResp::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  reply_ = const_cast< ::Impinj::STP::Reply*>(
      ::Impinj::STP::Reply::internal_default_instance());
#else
  reply_ = const_cast< ::Impinj::STP::Reply*>(&::Impinj::STP::Reply::default_instance());
#endif
}

AddOrderedListEntriesResp::AddOrderedListEntriesResp(const AddOrderedListEntriesResp& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void AddOrderedListEntriesResp::SharedCtor() {
  _cached_size_ = 0;
  reply_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

AddOrderedListEntriesResp::~AddOrderedListEntriesResp() {
  SharedDtor();
}

void AddOrderedListEntriesResp::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete reply_;
  }
}

void AddOrderedListEntriesResp::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const AddOrderedListEntriesResp& AddOrderedListEntriesResp::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

AddOrderedListEntriesResp* AddOrderedListEntriesResp::default_instance_ = NULL;

AddOrderedListEntriesResp* AddOrderedListEntriesResp::New() const {
  return new AddOrderedListEntriesResp;
}

void AddOrderedListEntriesResp::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_reply()) {
      if (reply_ != NULL) reply_->::Impinj::STP::Reply::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool AddOrderedListEntriesResp::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Reply reply = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_reply()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void AddOrderedListEntriesResp::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Reply reply = 1;
  if (has_reply()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->reply(), output);
  }

}

int AddOrderedListEntriesResp::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Reply reply = 1;
    if (has_reply()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->reply());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void AddOrderedListEntriesResp::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const AddOrderedListEntriesResp*>(&from));
}

void AddOrderedListEntriesResp::MergeFrom(const AddOrderedListEntriesResp& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reply()) {
      mutable_reply()->::Impinj::STP::Reply::MergeFrom(from.reply());
    }
  }
}

void AddOrderedListEntriesResp::CopyFrom(const AddOrderedListEntriesResp& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AddOrderedListEntriesResp::IsInitialized() const {

  if (has_reply()) {
    if (!this->reply().IsInitialized()) return false;
  }
  return true;
}

void AddOrderedListEntriesResp::Swap(AddOrderedListEntriesResp* other) {
  if (other != this) {
    std::swap(reply_, other->reply_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string AddOrderedListEntriesResp::GetTypeName() const {
  return "Impinj.STP.AddOrderedListEntriesResp";
}


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

#ifndef _MSC_VER
const int Command::kConnectFieldNumber;
const int Command::kGetVersionsReaderFieldNumber;
const int Command::kStartFieldNumber;
const int Command::kStopFieldNumber;
const int Command::kGetDeviceStateFieldNumber;
const int Command::kSetDeviceConfigFieldNumber;
const int Command::kGetDeviceConfigFieldNumber;
const int Command::kSetAntennaConfigFieldNumber;
const int Command::kGetAntennaConfigFieldNumber;
const int Command::kEngageFieldNumber;
const int Command::kDisengageFieldNumber;
const int Command::kSetOperationResultGpoFieldNumber;
const int Command::kAddSerializationJobFieldNumber;
const int Command::kRemoveSerializationJobFieldNumber;
const int Command::kAddTidTableEntriesFieldNumber;
const int Command::kAddOrderedListEntriesFieldNumber;
const int Command::kSetInventoryJobFieldNumber;
const int Command::kSetCartonContentsJobFieldNumber;
const int Command::kGetOperationDataFieldNumber;
const int Command::kAddLicenseKeyFieldNumber;
#endif  // !_MSC_VER

Command::Command()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Command::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  connect_ = const_cast< ::Impinj::STP::ConnectCommand*>(
      ::Impinj::STP::ConnectCommand::internal_default_instance());
#else
  connect_ = const_cast< ::Impinj::STP::ConnectCommand*>(&::Impinj::STP::ConnectCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_versions_reader_ = const_cast< ::Impinj::STP::GetVersionsReaderCommand*>(
      ::Impinj::STP::GetVersionsReaderCommand::internal_default_instance());
#else
  get_versions_reader_ = const_cast< ::Impinj::STP::GetVersionsReaderCommand*>(&::Impinj::STP::GetVersionsReaderCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  start_ = const_cast< ::Impinj::STP::StartCommand*>(
      ::Impinj::STP::StartCommand::internal_default_instance());
#else
  start_ = const_cast< ::Impinj::STP::StartCommand*>(&::Impinj::STP::StartCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  stop_ = const_cast< ::Impinj::STP::StopCommand*>(
      ::Impinj::STP::StopCommand::internal_default_instance());
#else
  stop_ = const_cast< ::Impinj::STP::StopCommand*>(&::Impinj::STP::StopCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_device_state_ = const_cast< ::Impinj::STP::GetDeviceStateCommand*>(
      ::Impinj::STP::GetDeviceStateCommand::internal_default_instance());
#else
  get_device_state_ = const_cast< ::Impinj::STP::GetDeviceStateCommand*>(&::Impinj::STP::GetDeviceStateCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_device_config_ = const_cast< ::Impinj::STP::SetDeviceConfigCommand*>(
      ::Impinj::STP::SetDeviceConfigCommand::internal_default_instance());
#else
  set_device_config_ = const_cast< ::Impinj::STP::SetDeviceConfigCommand*>(&::Impinj::STP::SetDeviceConfigCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_device_config_ = const_cast< ::Impinj::STP::GetDeviceConfigCommand*>(
      ::Impinj::STP::GetDeviceConfigCommand::internal_default_instance());
#else
  get_device_config_ = const_cast< ::Impinj::STP::GetDeviceConfigCommand*>(&::Impinj::STP::GetDeviceConfigCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_antenna_config_ = const_cast< ::Impinj::STP::SetAntennaConfigCommand*>(
      ::Impinj::STP::SetAntennaConfigCommand::internal_default_instance());
#else
  set_antenna_config_ = const_cast< ::Impinj::STP::SetAntennaConfigCommand*>(&::Impinj::STP::SetAntennaConfigCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_antenna_config_ = const_cast< ::Impinj::STP::GetAntennaConfigCommand*>(
      ::Impinj::STP::GetAntennaConfigCommand::internal_default_instance());
#else
  get_antenna_config_ = const_cast< ::Impinj::STP::GetAntennaConfigCommand*>(&::Impinj::STP::GetAntennaConfigCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  engage_ = const_cast< ::Impinj::STP::EngageCommand*>(
      ::Impinj::STP::EngageCommand::internal_default_instance());
#else
  engage_ = const_cast< ::Impinj::STP::EngageCommand*>(&::Impinj::STP::EngageCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  disengage_ = const_cast< ::Impinj::STP::DisengageCommand*>(
      ::Impinj::STP::DisengageCommand::internal_default_instance());
#else
  disengage_ = const_cast< ::Impinj::STP::DisengageCommand*>(&::Impinj::STP::DisengageCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_operation_result_gpo_ = const_cast< ::Impinj::STP::SetOperationResultGPOCommand*>(
      ::Impinj::STP::SetOperationResultGPOCommand::internal_default_instance());
#else
  set_operation_result_gpo_ = const_cast< ::Impinj::STP::SetOperationResultGPOCommand*>(&::Impinj::STP::SetOperationResultGPOCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_serialization_job_ = const_cast< ::Impinj::STP::AddSerializationJobCommand*>(
      ::Impinj::STP::AddSerializationJobCommand::internal_default_instance());
#else
  add_serialization_job_ = const_cast< ::Impinj::STP::AddSerializationJobCommand*>(&::Impinj::STP::AddSerializationJobCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  remove_serialization_job_ = const_cast< ::Impinj::STP::RemoveSerializationJobCommand*>(
      ::Impinj::STP::RemoveSerializationJobCommand::internal_default_instance());
#else
  remove_serialization_job_ = const_cast< ::Impinj::STP::RemoveSerializationJobCommand*>(&::Impinj::STP::RemoveSerializationJobCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_tid_table_entries_ = const_cast< ::Impinj::STP::AddTIDTableEntriesCommand*>(
      ::Impinj::STP::AddTIDTableEntriesCommand::internal_default_instance());
#else
  add_tid_table_entries_ = const_cast< ::Impinj::STP::AddTIDTableEntriesCommand*>(&::Impinj::STP::AddTIDTableEntriesCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_ordered_list_entries_ = const_cast< ::Impinj::STP::AddOrderedListEntriesCommand*>(
      ::Impinj::STP::AddOrderedListEntriesCommand::internal_default_instance());
#else
  add_ordered_list_entries_ = const_cast< ::Impinj::STP::AddOrderedListEntriesCommand*>(&::Impinj::STP::AddOrderedListEntriesCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_inventory_job_ = const_cast< ::Impinj::STP::SetInventoryJobCommand*>(
      ::Impinj::STP::SetInventoryJobCommand::internal_default_instance());
#else
  set_inventory_job_ = const_cast< ::Impinj::STP::SetInventoryJobCommand*>(&::Impinj::STP::SetInventoryJobCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_carton_contents_job_ = const_cast< ::Impinj::STP::SetCartonContentsJobCommand*>(
      ::Impinj::STP::SetCartonContentsJobCommand::internal_default_instance());
#else
  set_carton_contents_job_ = const_cast< ::Impinj::STP::SetCartonContentsJobCommand*>(&::Impinj::STP::SetCartonContentsJobCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_operation_data_ = const_cast< ::Impinj::STP::GetOperationDataCommand*>(
      ::Impinj::STP::GetOperationDataCommand::internal_default_instance());
#else
  get_operation_data_ = const_cast< ::Impinj::STP::GetOperationDataCommand*>(&::Impinj::STP::GetOperationDataCommand::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_license_key_ = const_cast< ::Impinj::STP::AddLicenseKeyCommand*>(
      ::Impinj::STP::AddLicenseKeyCommand::internal_default_instance());
#else
  add_license_key_ = const_cast< ::Impinj::STP::AddLicenseKeyCommand*>(&::Impinj::STP::AddLicenseKeyCommand::default_instance());
#endif
}

Command::Command(const Command& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Command::SharedCtor() {
  _cached_size_ = 0;
  connect_ = NULL;
  get_versions_reader_ = NULL;
  start_ = NULL;
  stop_ = NULL;
  get_device_state_ = NULL;
  set_device_config_ = NULL;
  get_device_config_ = NULL;
  set_antenna_config_ = NULL;
  get_antenna_config_ = NULL;
  engage_ = NULL;
  disengage_ = NULL;
  set_operation_result_gpo_ = NULL;
  add_serialization_job_ = NULL;
  remove_serialization_job_ = NULL;
  add_tid_table_entries_ = NULL;
  add_ordered_list_entries_ = NULL;
  set_inventory_job_ = NULL;
  set_carton_contents_job_ = NULL;
  get_operation_data_ = NULL;
  add_license_key_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Command::~Command() {
  SharedDtor();
}

void Command::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete connect_;
    delete get_versions_reader_;
    delete start_;
    delete stop_;
    delete get_device_state_;
    delete set_device_config_;
    delete get_device_config_;
    delete set_antenna_config_;
    delete get_antenna_config_;
    delete engage_;
    delete disengage_;
    delete set_operation_result_gpo_;
    delete add_serialization_job_;
    delete remove_serialization_job_;
    delete add_tid_table_entries_;
    delete add_ordered_list_entries_;
    delete set_inventory_job_;
    delete set_carton_contents_job_;
    delete get_operation_data_;
    delete add_license_key_;
  }
}

void Command::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Command& Command::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Command* Command::default_instance_ = NULL;

Command* Command::New() const {
  return new Command;
}

void Command::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_connect()) {
      if (connect_ != NULL) connect_->::Impinj::STP::ConnectCommand::Clear();
    }
    if (has_get_versions_reader()) {
      if (get_versions_reader_ != NULL) get_versions_reader_->::Impinj::STP::GetVersionsReaderCommand::Clear();
    }
    if (has_start()) {
      if (start_ != NULL) start_->::Impinj::STP::StartCommand::Clear();
    }
    if (has_stop()) {
      if (stop_ != NULL) stop_->::Impinj::STP::StopCommand::Clear();
    }
    if (has_get_device_state()) {
      if (get_device_state_ != NULL) get_device_state_->::Impinj::STP::GetDeviceStateCommand::Clear();
    }
    if (has_set_device_config()) {
      if (set_device_config_ != NULL) set_device_config_->::Impinj::STP::SetDeviceConfigCommand::Clear();
    }
    if (has_get_device_config()) {
      if (get_device_config_ != NULL) get_device_config_->::Impinj::STP::GetDeviceConfigCommand::Clear();
    }
    if (has_set_antenna_config()) {
      if (set_antenna_config_ != NULL) set_antenna_config_->::Impinj::STP::SetAntennaConfigCommand::Clear();
    }
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (has_get_antenna_config()) {
      if (get_antenna_config_ != NULL) get_antenna_config_->::Impinj::STP::GetAntennaConfigCommand::Clear();
    }
    if (has_engage()) {
      if (engage_ != NULL) engage_->::Impinj::STP::EngageCommand::Clear();
    }
    if (has_disengage()) {
      if (disengage_ != NULL) disengage_->::Impinj::STP::DisengageCommand::Clear();
    }
    if (has_set_operation_result_gpo()) {
      if (set_operation_result_gpo_ != NULL) set_operation_result_gpo_->::Impinj::STP::SetOperationResultGPOCommand::Clear();
    }
    if (has_add_serialization_job()) {
      if (add_serialization_job_ != NULL) add_serialization_job_->::Impinj::STP::AddSerializationJobCommand::Clear();
    }
    if (has_remove_serialization_job()) {
      if (remove_serialization_job_ != NULL) remove_serialization_job_->::Impinj::STP::RemoveSerializationJobCommand::Clear();
    }
    if (has_add_tid_table_entries()) {
      if (add_tid_table_entries_ != NULL) add_tid_table_entries_->::Impinj::STP::AddTIDTableEntriesCommand::Clear();
    }
    if (has_add_ordered_list_entries()) {
      if (add_ordered_list_entries_ != NULL) add_ordered_list_entries_->::Impinj::STP::AddOrderedListEntriesCommand::Clear();
    }
  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (has_set_inventory_job()) {
      if (set_inventory_job_ != NULL) set_inventory_job_->::Impinj::STP::SetInventoryJobCommand::Clear();
    }
    if (has_set_carton_contents_job()) {
      if (set_carton_contents_job_ != NULL) set_carton_contents_job_->::Impinj::STP::SetCartonContentsJobCommand::Clear();
    }
    if (has_get_operation_data()) {
      if (get_operation_data_ != NULL) get_operation_data_->::Impinj::STP::GetOperationDataCommand::Clear();
    }
    if (has_add_license_key()) {
      if (add_license_key_ != NULL) add_license_key_->::Impinj::STP::AddLicenseKeyCommand::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Command::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.ConnectCommand connect = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_connect()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_get_versions_reader;
        break;
      }

      // optional .Impinj.STP.GetVersionsReaderCommand get_versions_reader = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_versions_reader:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_versions_reader()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_start;
        break;
      }

      // optional .Impinj.STP.StartCommand start = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_start:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_start()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_stop;
        break;
      }

      // optional .Impinj.STP.StopCommand stop = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_stop:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_stop()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(202)) goto parse_get_device_state;
        break;
      }

      // optional .Impinj.STP.GetDeviceStateCommand get_device_state = 25;
      case 25: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_device_state:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_device_state()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96258)) goto parse_set_device_config;
        break;
      }

      // optional .Impinj.STP.SetDeviceConfigCommand set_device_config = 12032;
      case 12032: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_device_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_device_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96266)) goto parse_get_device_config;
        break;
      }

      // optional .Impinj.STP.GetDeviceConfigCommand get_device_config = 12033;
      case 12033: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_device_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_device_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96274)) goto parse_set_antenna_config;
        break;
      }

      // optional .Impinj.STP.SetAntennaConfigCommand set_antenna_config = 12034;
      case 12034: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_antenna_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_antenna_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96282)) goto parse_get_antenna_config;
        break;
      }

      // optional .Impinj.STP.GetAntennaConfigCommand get_antenna_config = 12035;
      case 12035: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_antenna_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_antenna_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96290)) goto parse_engage;
        break;
      }

      // optional .Impinj.STP.EngageCommand engage = 12036;
      case 12036: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_engage:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_engage()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96298)) goto parse_disengage;
        break;
      }

      // optional .Impinj.STP.DisengageCommand disengage = 12037;
      case 12037: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_disengage:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_disengage()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96306)) goto parse_set_operation_result_gpo;
        break;
      }

      // optional .Impinj.STP.SetOperationResultGPOCommand set_operation_result_gpo = 12038;
      case 12038: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_operation_result_gpo:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_operation_result_gpo()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96314)) goto parse_add_serialization_job;
        break;
      }

      // optional .Impinj.STP.AddSerializationJobCommand add_serialization_job = 12039;
      case 12039: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_serialization_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_serialization_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96322)) goto parse_remove_serialization_job;
        break;
      }

      // optional .Impinj.STP.RemoveSerializationJobCommand remove_serialization_job = 12040;
      case 12040: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_remove_serialization_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_remove_serialization_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96330)) goto parse_add_tid_table_entries;
        break;
      }

      // optional .Impinj.STP.AddTIDTableEntriesCommand add_tid_table_entries = 12041;
      case 12041: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_tid_table_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_tid_table_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96338)) goto parse_add_ordered_list_entries;
        break;
      }

      // optional .Impinj.STP.AddOrderedListEntriesCommand add_ordered_list_entries = 12042;
      case 12042: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_ordered_list_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_ordered_list_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96346)) goto parse_set_inventory_job;
        break;
      }

      // optional .Impinj.STP.SetInventoryJobCommand set_inventory_job = 12043;
      case 12043: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_inventory_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_inventory_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96354)) goto parse_set_carton_contents_job;
        break;
      }

      // optional .Impinj.STP.SetCartonContentsJobCommand set_carton_contents_job = 12044;
      case 12044: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_carton_contents_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_carton_contents_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96362)) goto parse_get_operation_data;
        break;
      }

      // optional .Impinj.STP.GetOperationDataCommand get_operation_data = 12045;
      case 12045: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_operation_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_operation_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96370)) goto parse_add_license_key;
        break;
      }

      // optional .Impinj.STP.AddLicenseKeyCommand add_license_key = 12046;
      case 12046: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_license_key:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_license_key()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Command::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.ConnectCommand connect = 1;
  if (has_connect()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->connect(), output);
  }

  // optional .Impinj.STP.GetVersionsReaderCommand get_versions_reader = 2;
  if (has_get_versions_reader()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->get_versions_reader(), output);
  }

  // optional .Impinj.STP.StartCommand start = 7;
  if (has_start()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      7, this->start(), output);
  }

  // optional .Impinj.STP.StopCommand stop = 8;
  if (has_stop()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->stop(), output);
  }

  // optional .Impinj.STP.GetDeviceStateCommand get_device_state = 25;
  if (has_get_device_state()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      25, this->get_device_state(), output);
  }

  // optional .Impinj.STP.SetDeviceConfigCommand set_device_config = 12032;
  if (has_set_device_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12032, this->set_device_config(), output);
  }

  // optional .Impinj.STP.GetDeviceConfigCommand get_device_config = 12033;
  if (has_get_device_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12033, this->get_device_config(), output);
  }

  // optional .Impinj.STP.SetAntennaConfigCommand set_antenna_config = 12034;
  if (has_set_antenna_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12034, this->set_antenna_config(), output);
  }

  // optional .Impinj.STP.GetAntennaConfigCommand get_antenna_config = 12035;
  if (has_get_antenna_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12035, this->get_antenna_config(), output);
  }

  // optional .Impinj.STP.EngageCommand engage = 12036;
  if (has_engage()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12036, this->engage(), output);
  }

  // optional .Impinj.STP.DisengageCommand disengage = 12037;
  if (has_disengage()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12037, this->disengage(), output);
  }

  // optional .Impinj.STP.SetOperationResultGPOCommand set_operation_result_gpo = 12038;
  if (has_set_operation_result_gpo()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12038, this->set_operation_result_gpo(), output);
  }

  // optional .Impinj.STP.AddSerializationJobCommand add_serialization_job = 12039;
  if (has_add_serialization_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12039, this->add_serialization_job(), output);
  }

  // optional .Impinj.STP.RemoveSerializationJobCommand remove_serialization_job = 12040;
  if (has_remove_serialization_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12040, this->remove_serialization_job(), output);
  }

  // optional .Impinj.STP.AddTIDTableEntriesCommand add_tid_table_entries = 12041;
  if (has_add_tid_table_entries()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12041, this->add_tid_table_entries(), output);
  }

  // optional .Impinj.STP.AddOrderedListEntriesCommand add_ordered_list_entries = 12042;
  if (has_add_ordered_list_entries()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12042, this->add_ordered_list_entries(), output);
  }

  // optional .Impinj.STP.SetInventoryJobCommand set_inventory_job = 12043;
  if (has_set_inventory_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12043, this->set_inventory_job(), output);
  }

  // optional .Impinj.STP.SetCartonContentsJobCommand set_carton_contents_job = 12044;
  if (has_set_carton_contents_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12044, this->set_carton_contents_job(), output);
  }

  // optional .Impinj.STP.GetOperationDataCommand get_operation_data = 12045;
  if (has_get_operation_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12045, this->get_operation_data(), output);
  }

  // optional .Impinj.STP.AddLicenseKeyCommand add_license_key = 12046;
  if (has_add_license_key()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12046, this->add_license_key(), output);
  }

}

int Command::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.ConnectCommand connect = 1;
    if (has_connect()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->connect());
    }

    // optional .Impinj.STP.GetVersionsReaderCommand get_versions_reader = 2;
    if (has_get_versions_reader()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_versions_reader());
    }

    // optional .Impinj.STP.StartCommand start = 7;
    if (has_start()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->start());
    }

    // optional .Impinj.STP.StopCommand stop = 8;
    if (has_stop()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->stop());
    }

    // optional .Impinj.STP.GetDeviceStateCommand get_device_state = 25;
    if (has_get_device_state()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_device_state());
    }

    // optional .Impinj.STP.SetDeviceConfigCommand set_device_config = 12032;
    if (has_set_device_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_device_config());
    }

    // optional .Impinj.STP.GetDeviceConfigCommand get_device_config = 12033;
    if (has_get_device_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_device_config());
    }

    // optional .Impinj.STP.SetAntennaConfigCommand set_antenna_config = 12034;
    if (has_set_antenna_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_antenna_config());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional .Impinj.STP.GetAntennaConfigCommand get_antenna_config = 12035;
    if (has_get_antenna_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_antenna_config());
    }

    // optional .Impinj.STP.EngageCommand engage = 12036;
    if (has_engage()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->engage());
    }

    // optional .Impinj.STP.DisengageCommand disengage = 12037;
    if (has_disengage()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->disengage());
    }

    // optional .Impinj.STP.SetOperationResultGPOCommand set_operation_result_gpo = 12038;
    if (has_set_operation_result_gpo()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_operation_result_gpo());
    }

    // optional .Impinj.STP.AddSerializationJobCommand add_serialization_job = 12039;
    if (has_add_serialization_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_serialization_job());
    }

    // optional .Impinj.STP.RemoveSerializationJobCommand remove_serialization_job = 12040;
    if (has_remove_serialization_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->remove_serialization_job());
    }

    // optional .Impinj.STP.AddTIDTableEntriesCommand add_tid_table_entries = 12041;
    if (has_add_tid_table_entries()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_tid_table_entries());
    }

    // optional .Impinj.STP.AddOrderedListEntriesCommand add_ordered_list_entries = 12042;
    if (has_add_ordered_list_entries()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_ordered_list_entries());
    }

  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    // optional .Impinj.STP.SetInventoryJobCommand set_inventory_job = 12043;
    if (has_set_inventory_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_inventory_job());
    }

    // optional .Impinj.STP.SetCartonContentsJobCommand set_carton_contents_job = 12044;
    if (has_set_carton_contents_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_carton_contents_job());
    }

    // optional .Impinj.STP.GetOperationDataCommand get_operation_data = 12045;
    if (has_get_operation_data()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_operation_data());
    }

    // optional .Impinj.STP.AddLicenseKeyCommand add_license_key = 12046;
    if (has_add_license_key()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_license_key());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Command::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Command*>(&from));
}

void Command::MergeFrom(const Command& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_connect()) {
      mutable_connect()->::Impinj::STP::ConnectCommand::MergeFrom(from.connect());
    }
    if (from.has_get_versions_reader()) {
      mutable_get_versions_reader()->::Impinj::STP::GetVersionsReaderCommand::MergeFrom(from.get_versions_reader());
    }
    if (from.has_start()) {
      mutable_start()->::Impinj::STP::StartCommand::MergeFrom(from.start());
    }
    if (from.has_stop()) {
      mutable_stop()->::Impinj::STP::StopCommand::MergeFrom(from.stop());
    }
    if (from.has_get_device_state()) {
      mutable_get_device_state()->::Impinj::STP::GetDeviceStateCommand::MergeFrom(from.get_device_state());
    }
    if (from.has_set_device_config()) {
      mutable_set_device_config()->::Impinj::STP::SetDeviceConfigCommand::MergeFrom(from.set_device_config());
    }
    if (from.has_get_device_config()) {
      mutable_get_device_config()->::Impinj::STP::GetDeviceConfigCommand::MergeFrom(from.get_device_config());
    }
    if (from.has_set_antenna_config()) {
      mutable_set_antenna_config()->::Impinj::STP::SetAntennaConfigCommand::MergeFrom(from.set_antenna_config());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_get_antenna_config()) {
      mutable_get_antenna_config()->::Impinj::STP::GetAntennaConfigCommand::MergeFrom(from.get_antenna_config());
    }
    if (from.has_engage()) {
      mutable_engage()->::Impinj::STP::EngageCommand::MergeFrom(from.engage());
    }
    if (from.has_disengage()) {
      mutable_disengage()->::Impinj::STP::DisengageCommand::MergeFrom(from.disengage());
    }
    if (from.has_set_operation_result_gpo()) {
      mutable_set_operation_result_gpo()->::Impinj::STP::SetOperationResultGPOCommand::MergeFrom(from.set_operation_result_gpo());
    }
    if (from.has_add_serialization_job()) {
      mutable_add_serialization_job()->::Impinj::STP::AddSerializationJobCommand::MergeFrom(from.add_serialization_job());
    }
    if (from.has_remove_serialization_job()) {
      mutable_remove_serialization_job()->::Impinj::STP::RemoveSerializationJobCommand::MergeFrom(from.remove_serialization_job());
    }
    if (from.has_add_tid_table_entries()) {
      mutable_add_tid_table_entries()->::Impinj::STP::AddTIDTableEntriesCommand::MergeFrom(from.add_tid_table_entries());
    }
    if (from.has_add_ordered_list_entries()) {
      mutable_add_ordered_list_entries()->::Impinj::STP::AddOrderedListEntriesCommand::MergeFrom(from.add_ordered_list_entries());
    }
  }
  if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (from.has_set_inventory_job()) {
      mutable_set_inventory_job()->::Impinj::STP::SetInventoryJobCommand::MergeFrom(from.set_inventory_job());
    }
    if (from.has_set_carton_contents_job()) {
      mutable_set_carton_contents_job()->::Impinj::STP::SetCartonContentsJobCommand::MergeFrom(from.set_carton_contents_job());
    }
    if (from.has_get_operation_data()) {
      mutable_get_operation_data()->::Impinj::STP::GetOperationDataCommand::MergeFrom(from.get_operation_data());
    }
    if (from.has_add_license_key()) {
      mutable_add_license_key()->::Impinj::STP::AddLicenseKeyCommand::MergeFrom(from.add_license_key());
    }
  }
}

void Command::CopyFrom(const Command& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Command::IsInitialized() const {

  if (has_connect()) {
    if (!this->connect().IsInitialized()) return false;
  }
  if (has_set_device_config()) {
    if (!this->set_device_config().IsInitialized()) return false;
  }
  if (has_set_antenna_config()) {
    if (!this->set_antenna_config().IsInitialized()) return false;
  }
  if (has_add_serialization_job()) {
    if (!this->add_serialization_job().IsInitialized()) return false;
  }
  if (has_add_tid_table_entries()) {
    if (!this->add_tid_table_entries().IsInitialized()) return false;
  }
  if (has_add_ordered_list_entries()) {
    if (!this->add_ordered_list_entries().IsInitialized()) return false;
  }
  if (has_add_license_key()) {
    if (!this->add_license_key().IsInitialized()) return false;
  }
  return true;
}

void Command::Swap(Command* other) {
  if (other != this) {
    std::swap(connect_, other->connect_);
    std::swap(get_versions_reader_, other->get_versions_reader_);
    std::swap(start_, other->start_);
    std::swap(stop_, other->stop_);
    std::swap(get_device_state_, other->get_device_state_);
    std::swap(set_device_config_, other->set_device_config_);
    std::swap(get_device_config_, other->get_device_config_);
    std::swap(set_antenna_config_, other->set_antenna_config_);
    std::swap(get_antenna_config_, other->get_antenna_config_);
    std::swap(engage_, other->engage_);
    std::swap(disengage_, other->disengage_);
    std::swap(set_operation_result_gpo_, other->set_operation_result_gpo_);
    std::swap(add_serialization_job_, other->add_serialization_job_);
    std::swap(remove_serialization_job_, other->remove_serialization_job_);
    std::swap(add_tid_table_entries_, other->add_tid_table_entries_);
    std::swap(add_ordered_list_entries_, other->add_ordered_list_entries_);
    std::swap(set_inventory_job_, other->set_inventory_job_);
    std::swap(set_carton_contents_job_, other->set_carton_contents_job_);
    std::swap(get_operation_data_, other->get_operation_data_);
    std::swap(add_license_key_, other->add_license_key_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Command::GetTypeName() const {
  return "Impinj.STP.Command";
}


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

#ifndef _MSC_VER
const int Response::kConnectFieldNumber;
const int Response::kGetVersionsReaderFieldNumber;
const int Response::kStartFieldNumber;
const int Response::kStopFieldNumber;
const int Response::kInvalidFieldNumber;
const int Response::kGetDeviceStateFieldNumber;
const int Response::kSetDeviceConfigFieldNumber;
const int Response::kGetDeviceConfigFieldNumber;
const int Response::kSetAntennaConfigFieldNumber;
const int Response::kGetAntennaConfigFieldNumber;
const int Response::kEngageFieldNumber;
const int Response::kDisengageFieldNumber;
const int Response::kSetOperationResultGpoFieldNumber;
const int Response::kAddSerializationJobFieldNumber;
const int Response::kRemoveSerializationJobFieldNumber;
const int Response::kAddTidTableEntriesFieldNumber;
const int Response::kAddOrderedListEntriesFieldNumber;
const int Response::kSetInventoryJobFieldNumber;
const int Response::kSetCartonContentsJobFieldNumber;
const int Response::kGetOperationDataFieldNumber;
const int Response::kAddLicenseKeyFieldNumber;
#endif  // !_MSC_VER

Response::Response()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Response::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  connect_ = const_cast< ::Impinj::STP::ConnectResp*>(
      ::Impinj::STP::ConnectResp::internal_default_instance());
#else
  connect_ = const_cast< ::Impinj::STP::ConnectResp*>(&::Impinj::STP::ConnectResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_versions_reader_ = const_cast< ::Impinj::STP::GetVersionsReaderResp*>(
      ::Impinj::STP::GetVersionsReaderResp::internal_default_instance());
#else
  get_versions_reader_ = const_cast< ::Impinj::STP::GetVersionsReaderResp*>(&::Impinj::STP::GetVersionsReaderResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  start_ = const_cast< ::Impinj::STP::StartResp*>(
      ::Impinj::STP::StartResp::internal_default_instance());
#else
  start_ = const_cast< ::Impinj::STP::StartResp*>(&::Impinj::STP::StartResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  stop_ = const_cast< ::Impinj::STP::StopResp*>(
      ::Impinj::STP::StopResp::internal_default_instance());
#else
  stop_ = const_cast< ::Impinj::STP::StopResp*>(&::Impinj::STP::StopResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  invalid_ = const_cast< ::Impinj::STP::InvalidResp*>(
      ::Impinj::STP::InvalidResp::internal_default_instance());
#else
  invalid_ = const_cast< ::Impinj::STP::InvalidResp*>(&::Impinj::STP::InvalidResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_device_state_ = const_cast< ::Impinj::STP::GetDeviceStateResp*>(
      ::Impinj::STP::GetDeviceStateResp::internal_default_instance());
#else
  get_device_state_ = const_cast< ::Impinj::STP::GetDeviceStateResp*>(&::Impinj::STP::GetDeviceStateResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_device_config_ = const_cast< ::Impinj::STP::SetDeviceConfigResp*>(
      ::Impinj::STP::SetDeviceConfigResp::internal_default_instance());
#else
  set_device_config_ = const_cast< ::Impinj::STP::SetDeviceConfigResp*>(&::Impinj::STP::SetDeviceConfigResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_device_config_ = const_cast< ::Impinj::STP::GetDeviceConfigResp*>(
      ::Impinj::STP::GetDeviceConfigResp::internal_default_instance());
#else
  get_device_config_ = const_cast< ::Impinj::STP::GetDeviceConfigResp*>(&::Impinj::STP::GetDeviceConfigResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_antenna_config_ = const_cast< ::Impinj::STP::SetAntennaConfigResp*>(
      ::Impinj::STP::SetAntennaConfigResp::internal_default_instance());
#else
  set_antenna_config_ = const_cast< ::Impinj::STP::SetAntennaConfigResp*>(&::Impinj::STP::SetAntennaConfigResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_antenna_config_ = const_cast< ::Impinj::STP::GetAntennaConfigResp*>(
      ::Impinj::STP::GetAntennaConfigResp::internal_default_instance());
#else
  get_antenna_config_ = const_cast< ::Impinj::STP::GetAntennaConfigResp*>(&::Impinj::STP::GetAntennaConfigResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  engage_ = const_cast< ::Impinj::STP::EngageResp*>(
      ::Impinj::STP::EngageResp::internal_default_instance());
#else
  engage_ = const_cast< ::Impinj::STP::EngageResp*>(&::Impinj::STP::EngageResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  disengage_ = const_cast< ::Impinj::STP::DisengageResp*>(
      ::Impinj::STP::DisengageResp::internal_default_instance());
#else
  disengage_ = const_cast< ::Impinj::STP::DisengageResp*>(&::Impinj::STP::DisengageResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_operation_result_gpo_ = const_cast< ::Impinj::STP::SetOperationResultGPOResp*>(
      ::Impinj::STP::SetOperationResultGPOResp::internal_default_instance());
#else
  set_operation_result_gpo_ = const_cast< ::Impinj::STP::SetOperationResultGPOResp*>(&::Impinj::STP::SetOperationResultGPOResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_serialization_job_ = const_cast< ::Impinj::STP::AddSerializationJobResp*>(
      ::Impinj::STP::AddSerializationJobResp::internal_default_instance());
#else
  add_serialization_job_ = const_cast< ::Impinj::STP::AddSerializationJobResp*>(&::Impinj::STP::AddSerializationJobResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  remove_serialization_job_ = const_cast< ::Impinj::STP::RemoveSerializationJobResp*>(
      ::Impinj::STP::RemoveSerializationJobResp::internal_default_instance());
#else
  remove_serialization_job_ = const_cast< ::Impinj::STP::RemoveSerializationJobResp*>(&::Impinj::STP::RemoveSerializationJobResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_tid_table_entries_ = const_cast< ::Impinj::STP::AddTIDTableEntriesResp*>(
      ::Impinj::STP::AddTIDTableEntriesResp::internal_default_instance());
#else
  add_tid_table_entries_ = const_cast< ::Impinj::STP::AddTIDTableEntriesResp*>(&::Impinj::STP::AddTIDTableEntriesResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_ordered_list_entries_ = const_cast< ::Impinj::STP::AddOrderedListEntriesResp*>(
      ::Impinj::STP::AddOrderedListEntriesResp::internal_default_instance());
#else
  add_ordered_list_entries_ = const_cast< ::Impinj::STP::AddOrderedListEntriesResp*>(&::Impinj::STP::AddOrderedListEntriesResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_inventory_job_ = const_cast< ::Impinj::STP::SetInventoryJobResp*>(
      ::Impinj::STP::SetInventoryJobResp::internal_default_instance());
#else
  set_inventory_job_ = const_cast< ::Impinj::STP::SetInventoryJobResp*>(&::Impinj::STP::SetInventoryJobResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  set_carton_contents_job_ = const_cast< ::Impinj::STP::SetCartonContentsJobResp*>(
      ::Impinj::STP::SetCartonContentsJobResp::internal_default_instance());
#else
  set_carton_contents_job_ = const_cast< ::Impinj::STP::SetCartonContentsJobResp*>(&::Impinj::STP::SetCartonContentsJobResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  get_operation_data_ = const_cast< ::Impinj::STP::GetOperationDataResp*>(
      ::Impinj::STP::GetOperationDataResp::internal_default_instance());
#else
  get_operation_data_ = const_cast< ::Impinj::STP::GetOperationDataResp*>(&::Impinj::STP::GetOperationDataResp::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_license_key_ = const_cast< ::Impinj::STP::AddLicenseKeyResp*>(
      ::Impinj::STP::AddLicenseKeyResp::internal_default_instance());
#else
  add_license_key_ = const_cast< ::Impinj::STP::AddLicenseKeyResp*>(&::Impinj::STP::AddLicenseKeyResp::default_instance());
#endif
}

Response::Response(const Response& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Response::SharedCtor() {
  _cached_size_ = 0;
  connect_ = NULL;
  get_versions_reader_ = NULL;
  start_ = NULL;
  stop_ = NULL;
  invalid_ = NULL;
  get_device_state_ = NULL;
  set_device_config_ = NULL;
  get_device_config_ = NULL;
  set_antenna_config_ = NULL;
  get_antenna_config_ = NULL;
  engage_ = NULL;
  disengage_ = NULL;
  set_operation_result_gpo_ = NULL;
  add_serialization_job_ = NULL;
  remove_serialization_job_ = NULL;
  add_tid_table_entries_ = NULL;
  add_ordered_list_entries_ = NULL;
  set_inventory_job_ = NULL;
  set_carton_contents_job_ = NULL;
  get_operation_data_ = NULL;
  add_license_key_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Response::~Response() {
  SharedDtor();
}

void Response::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete connect_;
    delete get_versions_reader_;
    delete start_;
    delete stop_;
    delete invalid_;
    delete get_device_state_;
    delete set_device_config_;
    delete get_device_config_;
    delete set_antenna_config_;
    delete get_antenna_config_;
    delete engage_;
    delete disengage_;
    delete set_operation_result_gpo_;
    delete add_serialization_job_;
    delete remove_serialization_job_;
    delete add_tid_table_entries_;
    delete add_ordered_list_entries_;
    delete set_inventory_job_;
    delete set_carton_contents_job_;
    delete get_operation_data_;
    delete add_license_key_;
  }
}

void Response::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Response& Response::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Response* Response::default_instance_ = NULL;

Response* Response::New() const {
  return new Response;
}

void Response::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_connect()) {
      if (connect_ != NULL) connect_->::Impinj::STP::ConnectResp::Clear();
    }
    if (has_get_versions_reader()) {
      if (get_versions_reader_ != NULL) get_versions_reader_->::Impinj::STP::GetVersionsReaderResp::Clear();
    }
    if (has_start()) {
      if (start_ != NULL) start_->::Impinj::STP::StartResp::Clear();
    }
    if (has_stop()) {
      if (stop_ != NULL) stop_->::Impinj::STP::StopResp::Clear();
    }
    if (has_invalid()) {
      if (invalid_ != NULL) invalid_->::Impinj::STP::InvalidResp::Clear();
    }
    if (has_get_device_state()) {
      if (get_device_state_ != NULL) get_device_state_->::Impinj::STP::GetDeviceStateResp::Clear();
    }
    if (has_set_device_config()) {
      if (set_device_config_ != NULL) set_device_config_->::Impinj::STP::SetDeviceConfigResp::Clear();
    }
    if (has_get_device_config()) {
      if (get_device_config_ != NULL) get_device_config_->::Impinj::STP::GetDeviceConfigResp::Clear();
    }
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (has_set_antenna_config()) {
      if (set_antenna_config_ != NULL) set_antenna_config_->::Impinj::STP::SetAntennaConfigResp::Clear();
    }
    if (has_get_antenna_config()) {
      if (get_antenna_config_ != NULL) get_antenna_config_->::Impinj::STP::GetAntennaConfigResp::Clear();
    }
    if (has_engage()) {
      if (engage_ != NULL) engage_->::Impinj::STP::EngageResp::Clear();
    }
    if (has_disengage()) {
      if (disengage_ != NULL) disengage_->::Impinj::STP::DisengageResp::Clear();
    }
    if (has_set_operation_result_gpo()) {
      if (set_operation_result_gpo_ != NULL) set_operation_result_gpo_->::Impinj::STP::SetOperationResultGPOResp::Clear();
    }
    if (has_add_serialization_job()) {
      if (add_serialization_job_ != NULL) add_serialization_job_->::Impinj::STP::AddSerializationJobResp::Clear();
    }
    if (has_remove_serialization_job()) {
      if (remove_serialization_job_ != NULL) remove_serialization_job_->::Impinj::STP::RemoveSerializationJobResp::Clear();
    }
    if (has_add_tid_table_entries()) {
      if (add_tid_table_entries_ != NULL) add_tid_table_entries_->::Impinj::STP::AddTIDTableEntriesResp::Clear();
    }
  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (has_add_ordered_list_entries()) {
      if (add_ordered_list_entries_ != NULL) add_ordered_list_entries_->::Impinj::STP::AddOrderedListEntriesResp::Clear();
    }
    if (has_set_inventory_job()) {
      if (set_inventory_job_ != NULL) set_inventory_job_->::Impinj::STP::SetInventoryJobResp::Clear();
    }
    if (has_set_carton_contents_job()) {
      if (set_carton_contents_job_ != NULL) set_carton_contents_job_->::Impinj::STP::SetCartonContentsJobResp::Clear();
    }
    if (has_get_operation_data()) {
      if (get_operation_data_ != NULL) get_operation_data_->::Impinj::STP::GetOperationDataResp::Clear();
    }
    if (has_add_license_key()) {
      if (add_license_key_ != NULL) add_license_key_->::Impinj::STP::AddLicenseKeyResp::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Response::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.ConnectResp connect = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_connect()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_get_versions_reader;
        break;
      }

      // optional .Impinj.STP.GetVersionsReaderResp get_versions_reader = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_versions_reader:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_versions_reader()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_start;
        break;
      }

      // optional .Impinj.STP.StartResp start = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_start:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_start()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_stop;
        break;
      }

      // optional .Impinj.STP.StopResp stop = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_stop:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_stop()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(122)) goto parse_invalid;
        break;
      }

      // optional .Impinj.STP.InvalidResp invalid = 15;
      case 15: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_invalid:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_invalid()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(202)) goto parse_get_device_state;
        break;
      }

      // optional .Impinj.STP.GetDeviceStateResp get_device_state = 25;
      case 25: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_device_state:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_device_state()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96258)) goto parse_set_device_config;
        break;
      }

      // optional .Impinj.STP.SetDeviceConfigResp set_device_config = 12032;
      case 12032: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_device_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_device_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96266)) goto parse_get_device_config;
        break;
      }

      // optional .Impinj.STP.GetDeviceConfigResp get_device_config = 12033;
      case 12033: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_device_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_device_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96274)) goto parse_set_antenna_config;
        break;
      }

      // optional .Impinj.STP.SetAntennaConfigResp set_antenna_config = 12034;
      case 12034: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_antenna_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_antenna_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96282)) goto parse_get_antenna_config;
        break;
      }

      // optional .Impinj.STP.GetAntennaConfigResp get_antenna_config = 12035;
      case 12035: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_antenna_config:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_antenna_config()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96290)) goto parse_engage;
        break;
      }

      // optional .Impinj.STP.EngageResp engage = 12036;
      case 12036: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_engage:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_engage()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96298)) goto parse_disengage;
        break;
      }

      // optional .Impinj.STP.DisengageResp disengage = 12037;
      case 12037: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_disengage:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_disengage()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96330)) goto parse_set_operation_result_gpo;
        break;
      }

      // optional .Impinj.STP.SetOperationResultGPOResp set_operation_result_gpo = 12041;
      case 12041: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_operation_result_gpo:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_operation_result_gpo()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96338)) goto parse_add_serialization_job;
        break;
      }

      // optional .Impinj.STP.AddSerializationJobResp add_serialization_job = 12042;
      case 12042: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_serialization_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_serialization_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96346)) goto parse_remove_serialization_job;
        break;
      }

      // optional .Impinj.STP.RemoveSerializationJobResp remove_serialization_job = 12043;
      case 12043: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_remove_serialization_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_remove_serialization_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96354)) goto parse_add_tid_table_entries;
        break;
      }

      // optional .Impinj.STP.AddTIDTableEntriesResp add_tid_table_entries = 12044;
      case 12044: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_tid_table_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_tid_table_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96362)) goto parse_add_ordered_list_entries;
        break;
      }

      // optional .Impinj.STP.AddOrderedListEntriesResp add_ordered_list_entries = 12045;
      case 12045: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_ordered_list_entries:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_ordered_list_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96370)) goto parse_set_inventory_job;
        break;
      }

      // optional .Impinj.STP.SetInventoryJobResp set_inventory_job = 12046;
      case 12046: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_inventory_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_inventory_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96378)) goto parse_set_carton_contents_job;
        break;
      }

      // optional .Impinj.STP.SetCartonContentsJobResp set_carton_contents_job = 12047;
      case 12047: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_set_carton_contents_job:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_set_carton_contents_job()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96386)) goto parse_get_operation_data;
        break;
      }

      // optional .Impinj.STP.GetOperationDataResp get_operation_data = 12048;
      case 12048: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_get_operation_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_get_operation_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(96394)) goto parse_add_license_key;
        break;
      }

      // optional .Impinj.STP.AddLicenseKeyResp add_license_key = 12049;
      case 12049: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_add_license_key:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_license_key()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Response::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.ConnectResp connect = 1;
  if (has_connect()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->connect(), output);
  }

  // optional .Impinj.STP.GetVersionsReaderResp get_versions_reader = 2;
  if (has_get_versions_reader()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->get_versions_reader(), output);
  }

  // optional .Impinj.STP.StartResp start = 7;
  if (has_start()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      7, this->start(), output);
  }

  // optional .Impinj.STP.StopResp stop = 8;
  if (has_stop()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->stop(), output);
  }

  // optional .Impinj.STP.InvalidResp invalid = 15;
  if (has_invalid()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      15, this->invalid(), output);
  }

  // optional .Impinj.STP.GetDeviceStateResp get_device_state = 25;
  if (has_get_device_state()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      25, this->get_device_state(), output);
  }

  // optional .Impinj.STP.SetDeviceConfigResp set_device_config = 12032;
  if (has_set_device_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12032, this->set_device_config(), output);
  }

  // optional .Impinj.STP.GetDeviceConfigResp get_device_config = 12033;
  if (has_get_device_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12033, this->get_device_config(), output);
  }

  // optional .Impinj.STP.SetAntennaConfigResp set_antenna_config = 12034;
  if (has_set_antenna_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12034, this->set_antenna_config(), output);
  }

  // optional .Impinj.STP.GetAntennaConfigResp get_antenna_config = 12035;
  if (has_get_antenna_config()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12035, this->get_antenna_config(), output);
  }

  // optional .Impinj.STP.EngageResp engage = 12036;
  if (has_engage()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12036, this->engage(), output);
  }

  // optional .Impinj.STP.DisengageResp disengage = 12037;
  if (has_disengage()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12037, this->disengage(), output);
  }

  // optional .Impinj.STP.SetOperationResultGPOResp set_operation_result_gpo = 12041;
  if (has_set_operation_result_gpo()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12041, this->set_operation_result_gpo(), output);
  }

  // optional .Impinj.STP.AddSerializationJobResp add_serialization_job = 12042;
  if (has_add_serialization_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12042, this->add_serialization_job(), output);
  }

  // optional .Impinj.STP.RemoveSerializationJobResp remove_serialization_job = 12043;
  if (has_remove_serialization_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12043, this->remove_serialization_job(), output);
  }

  // optional .Impinj.STP.AddTIDTableEntriesResp add_tid_table_entries = 12044;
  if (has_add_tid_table_entries()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12044, this->add_tid_table_entries(), output);
  }

  // optional .Impinj.STP.AddOrderedListEntriesResp add_ordered_list_entries = 12045;
  if (has_add_ordered_list_entries()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12045, this->add_ordered_list_entries(), output);
  }

  // optional .Impinj.STP.SetInventoryJobResp set_inventory_job = 12046;
  if (has_set_inventory_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12046, this->set_inventory_job(), output);
  }

  // optional .Impinj.STP.SetCartonContentsJobResp set_carton_contents_job = 12047;
  if (has_set_carton_contents_job()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12047, this->set_carton_contents_job(), output);
  }

  // optional .Impinj.STP.GetOperationDataResp get_operation_data = 12048;
  if (has_get_operation_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12048, this->get_operation_data(), output);
  }

  // optional .Impinj.STP.AddLicenseKeyResp add_license_key = 12049;
  if (has_add_license_key()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      12049, this->add_license_key(), output);
  }

}

int Response::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.ConnectResp connect = 1;
    if (has_connect()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->connect());
    }

    // optional .Impinj.STP.GetVersionsReaderResp get_versions_reader = 2;
    if (has_get_versions_reader()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_versions_reader());
    }

    // optional .Impinj.STP.StartResp start = 7;
    if (has_start()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->start());
    }

    // optional .Impinj.STP.StopResp stop = 8;
    if (has_stop()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->stop());
    }

    // optional .Impinj.STP.InvalidResp invalid = 15;
    if (has_invalid()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->invalid());
    }

    // optional .Impinj.STP.GetDeviceStateResp get_device_state = 25;
    if (has_get_device_state()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_device_state());
    }

    // optional .Impinj.STP.SetDeviceConfigResp set_device_config = 12032;
    if (has_set_device_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_device_config());
    }

    // optional .Impinj.STP.GetDeviceConfigResp get_device_config = 12033;
    if (has_get_device_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_device_config());
    }

  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional .Impinj.STP.SetAntennaConfigResp set_antenna_config = 12034;
    if (has_set_antenna_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_antenna_config());
    }

    // optional .Impinj.STP.GetAntennaConfigResp get_antenna_config = 12035;
    if (has_get_antenna_config()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_antenna_config());
    }

    // optional .Impinj.STP.EngageResp engage = 12036;
    if (has_engage()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->engage());
    }

    // optional .Impinj.STP.DisengageResp disengage = 12037;
    if (has_disengage()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->disengage());
    }

    // optional .Impinj.STP.SetOperationResultGPOResp set_operation_result_gpo = 12041;
    if (has_set_operation_result_gpo()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_operation_result_gpo());
    }

    // optional .Impinj.STP.AddSerializationJobResp add_serialization_job = 12042;
    if (has_add_serialization_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_serialization_job());
    }

    // optional .Impinj.STP.RemoveSerializationJobResp remove_serialization_job = 12043;
    if (has_remove_serialization_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->remove_serialization_job());
    }

    // optional .Impinj.STP.AddTIDTableEntriesResp add_tid_table_entries = 12044;
    if (has_add_tid_table_entries()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_tid_table_entries());
    }

  }
  if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    // optional .Impinj.STP.AddOrderedListEntriesResp add_ordered_list_entries = 12045;
    if (has_add_ordered_list_entries()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_ordered_list_entries());
    }

    // optional .Impinj.STP.SetInventoryJobResp set_inventory_job = 12046;
    if (has_set_inventory_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_inventory_job());
    }

    // optional .Impinj.STP.SetCartonContentsJobResp set_carton_contents_job = 12047;
    if (has_set_carton_contents_job()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->set_carton_contents_job());
    }

    // optional .Impinj.STP.GetOperationDataResp get_operation_data = 12048;
    if (has_get_operation_data()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->get_operation_data());
    }

    // optional .Impinj.STP.AddLicenseKeyResp add_license_key = 12049;
    if (has_add_license_key()) {
      total_size += 3 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_license_key());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Response::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Response*>(&from));
}

void Response::MergeFrom(const Response& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_connect()) {
      mutable_connect()->::Impinj::STP::ConnectResp::MergeFrom(from.connect());
    }
    if (from.has_get_versions_reader()) {
      mutable_get_versions_reader()->::Impinj::STP::GetVersionsReaderResp::MergeFrom(from.get_versions_reader());
    }
    if (from.has_start()) {
      mutable_start()->::Impinj::STP::StartResp::MergeFrom(from.start());
    }
    if (from.has_stop()) {
      mutable_stop()->::Impinj::STP::StopResp::MergeFrom(from.stop());
    }
    if (from.has_invalid()) {
      mutable_invalid()->::Impinj::STP::InvalidResp::MergeFrom(from.invalid());
    }
    if (from.has_get_device_state()) {
      mutable_get_device_state()->::Impinj::STP::GetDeviceStateResp::MergeFrom(from.get_device_state());
    }
    if (from.has_set_device_config()) {
      mutable_set_device_config()->::Impinj::STP::SetDeviceConfigResp::MergeFrom(from.set_device_config());
    }
    if (from.has_get_device_config()) {
      mutable_get_device_config()->::Impinj::STP::GetDeviceConfigResp::MergeFrom(from.get_device_config());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_set_antenna_config()) {
      mutable_set_antenna_config()->::Impinj::STP::SetAntennaConfigResp::MergeFrom(from.set_antenna_config());
    }
    if (from.has_get_antenna_config()) {
      mutable_get_antenna_config()->::Impinj::STP::GetAntennaConfigResp::MergeFrom(from.get_antenna_config());
    }
    if (from.has_engage()) {
      mutable_engage()->::Impinj::STP::EngageResp::MergeFrom(from.engage());
    }
    if (from.has_disengage()) {
      mutable_disengage()->::Impinj::STP::DisengageResp::MergeFrom(from.disengage());
    }
    if (from.has_set_operation_result_gpo()) {
      mutable_set_operation_result_gpo()->::Impinj::STP::SetOperationResultGPOResp::MergeFrom(from.set_operation_result_gpo());
    }
    if (from.has_add_serialization_job()) {
      mutable_add_serialization_job()->::Impinj::STP::AddSerializationJobResp::MergeFrom(from.add_serialization_job());
    }
    if (from.has_remove_serialization_job()) {
      mutable_remove_serialization_job()->::Impinj::STP::RemoveSerializationJobResp::MergeFrom(from.remove_serialization_job());
    }
    if (from.has_add_tid_table_entries()) {
      mutable_add_tid_table_entries()->::Impinj::STP::AddTIDTableEntriesResp::MergeFrom(from.add_tid_table_entries());
    }
  }
  if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) {
    if (from.has_add_ordered_list_entries()) {
      mutable_add_ordered_list_entries()->::Impinj::STP::AddOrderedListEntriesResp::MergeFrom(from.add_ordered_list_entries());
    }
    if (from.has_set_inventory_job()) {
      mutable_set_inventory_job()->::Impinj::STP::SetInventoryJobResp::MergeFrom(from.set_inventory_job());
    }
    if (from.has_set_carton_contents_job()) {
      mutable_set_carton_contents_job()->::Impinj::STP::SetCartonContentsJobResp::MergeFrom(from.set_carton_contents_job());
    }
    if (from.has_get_operation_data()) {
      mutable_get_operation_data()->::Impinj::STP::GetOperationDataResp::MergeFrom(from.get_operation_data());
    }
    if (from.has_add_license_key()) {
      mutable_add_license_key()->::Impinj::STP::AddLicenseKeyResp::MergeFrom(from.add_license_key());
    }
  }
}

void Response::CopyFrom(const Response& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Response::IsInitialized() const {

  if (has_connect()) {
    if (!this->connect().IsInitialized()) return false;
  }
  if (has_get_versions_reader()) {
    if (!this->get_versions_reader().IsInitialized()) return false;
  }
  if (has_start()) {
    if (!this->start().IsInitialized()) return false;
  }
  if (has_stop()) {
    if (!this->stop().IsInitialized()) return false;
  }
  if (has_get_device_state()) {
    if (!this->get_device_state().IsInitialized()) return false;
  }
  if (has_set_device_config()) {
    if (!this->set_device_config().IsInitialized()) return false;
  }
  if (has_get_device_config()) {
    if (!this->get_device_config().IsInitialized()) return false;
  }
  if (has_set_antenna_config()) {
    if (!this->set_antenna_config().IsInitialized()) return false;
  }
  if (has_get_antenna_config()) {
    if (!this->get_antenna_config().IsInitialized()) return false;
  }
  if (has_engage()) {
    if (!this->engage().IsInitialized()) return false;
  }
  if (has_disengage()) {
    if (!this->disengage().IsInitialized()) return false;
  }
  if (has_set_operation_result_gpo()) {
    if (!this->set_operation_result_gpo().IsInitialized()) return false;
  }
  if (has_add_serialization_job()) {
    if (!this->add_serialization_job().IsInitialized()) return false;
  }
  if (has_remove_serialization_job()) {
    if (!this->remove_serialization_job().IsInitialized()) return false;
  }
  if (has_add_tid_table_entries()) {
    if (!this->add_tid_table_entries().IsInitialized()) return false;
  }
  if (has_add_ordered_list_entries()) {
    if (!this->add_ordered_list_entries().IsInitialized()) return false;
  }
  if (has_set_inventory_job()) {
    if (!this->set_inventory_job().IsInitialized()) return false;
  }
  if (has_set_carton_contents_job()) {
    if (!this->set_carton_contents_job().IsInitialized()) return false;
  }
  if (has_get_operation_data()) {
    if (!this->get_operation_data().IsInitialized()) return false;
  }
  if (has_add_license_key()) {
    if (!this->add_license_key().IsInitialized()) return false;
  }
  return true;
}

void Response::Swap(Response* other) {
  if (other != this) {
    std::swap(connect_, other->connect_);
    std::swap(get_versions_reader_, other->get_versions_reader_);
    std::swap(start_, other->start_);
    std::swap(stop_, other->stop_);
    std::swap(invalid_, other->invalid_);
    std::swap(get_device_state_, other->get_device_state_);
    std::swap(set_device_config_, other->set_device_config_);
    std::swap(get_device_config_, other->get_device_config_);
    std::swap(set_antenna_config_, other->set_antenna_config_);
    std::swap(get_antenna_config_, other->get_antenna_config_);
    std::swap(engage_, other->engage_);
    std::swap(disengage_, other->disengage_);
    std::swap(set_operation_result_gpo_, other->set_operation_result_gpo_);
    std::swap(add_serialization_job_, other->add_serialization_job_);
    std::swap(remove_serialization_job_, other->remove_serialization_job_);
    std::swap(add_tid_table_entries_, other->add_tid_table_entries_);
    std::swap(add_ordered_list_entries_, other->add_ordered_list_entries_);
    std::swap(set_inventory_job_, other->set_inventory_job_);
    std::swap(set_carton_contents_job_, other->set_carton_contents_job_);
    std::swap(get_operation_data_, other->get_operation_data_);
    std::swap(add_license_key_, other->add_license_key_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Response::GetTypeName() const {
  return "Impinj.STP.Response";
}


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

#ifndef _MSC_VER
const int Report::kDeviceEventReportFieldNumber;
const int Report::kTagOperationReportFieldNumber;
const int Report::kOperationSummaryReportFieldNumber;
const int Report::kCartonContentsReportFieldNumber;
#endif  // !_MSC_VER

Report::Report()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Report::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  device_event_report_ = const_cast< ::Impinj::STP::DeviceEventReport*>(
      ::Impinj::STP::DeviceEventReport::internal_default_instance());
#else
  device_event_report_ = const_cast< ::Impinj::STP::DeviceEventReport*>(&::Impinj::STP::DeviceEventReport::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  tag_operation_report_ = const_cast< ::Impinj::STP::TagOperationReport*>(
      ::Impinj::STP::TagOperationReport::internal_default_instance());
#else
  tag_operation_report_ = const_cast< ::Impinj::STP::TagOperationReport*>(&::Impinj::STP::TagOperationReport::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  operation_summary_report_ = const_cast< ::Impinj::STP::OperationSummaryReport*>(
      ::Impinj::STP::OperationSummaryReport::internal_default_instance());
#else
  operation_summary_report_ = const_cast< ::Impinj::STP::OperationSummaryReport*>(&::Impinj::STP::OperationSummaryReport::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  carton_contents_report_ = const_cast< ::Impinj::STP::CartonContentsReport*>(
      ::Impinj::STP::CartonContentsReport::internal_default_instance());
#else
  carton_contents_report_ = const_cast< ::Impinj::STP::CartonContentsReport*>(&::Impinj::STP::CartonContentsReport::default_instance());
#endif
}

Report::Report(const Report& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Report::SharedCtor() {
  _cached_size_ = 0;
  device_event_report_ = NULL;
  tag_operation_report_ = NULL;
  operation_summary_report_ = NULL;
  carton_contents_report_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Report::~Report() {
  SharedDtor();
}

void Report::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete device_event_report_;
    delete tag_operation_report_;
    delete operation_summary_report_;
    delete carton_contents_report_;
  }
}

void Report::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Report& Report::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Report* Report::default_instance_ = NULL;

Report* Report::New() const {
  return new Report;
}

void Report::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_device_event_report()) {
      if (device_event_report_ != NULL) device_event_report_->::Impinj::STP::DeviceEventReport::Clear();
    }
    if (has_tag_operation_report()) {
      if (tag_operation_report_ != NULL) tag_operation_report_->::Impinj::STP::TagOperationReport::Clear();
    }
    if (has_operation_summary_report()) {
      if (operation_summary_report_ != NULL) operation_summary_report_->::Impinj::STP::OperationSummaryReport::Clear();
    }
    if (has_carton_contents_report()) {
      if (carton_contents_report_ != NULL) carton_contents_report_->::Impinj::STP::CartonContentsReport::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Report::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.DeviceEventReport device_event_report = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_device_event_report()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_tag_operation_report;
        break;
      }

      // optional .Impinj.STP.TagOperationReport tag_operation_report = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_tag_operation_report:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_tag_operation_report()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_operation_summary_report;
        break;
      }

      // optional .Impinj.STP.OperationSummaryReport operation_summary_report = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_operation_summary_report:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_operation_summary_report()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_carton_contents_report;
        break;
      }

      // optional .Impinj.STP.CartonContentsReport carton_contents_report = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_carton_contents_report:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_carton_contents_report()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Report::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.DeviceEventReport device_event_report = 1;
  if (has_device_event_report()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->device_event_report(), output);
  }

  // optional .Impinj.STP.TagOperationReport tag_operation_report = 2;
  if (has_tag_operation_report()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->tag_operation_report(), output);
  }

  // optional .Impinj.STP.OperationSummaryReport operation_summary_report = 3;
  if (has_operation_summary_report()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->operation_summary_report(), output);
  }

  // optional .Impinj.STP.CartonContentsReport carton_contents_report = 4;
  if (has_carton_contents_report()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->carton_contents_report(), output);
  }

}

int Report::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.DeviceEventReport device_event_report = 1;
    if (has_device_event_report()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->device_event_report());
    }

    // optional .Impinj.STP.TagOperationReport tag_operation_report = 2;
    if (has_tag_operation_report()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->tag_operation_report());
    }

    // optional .Impinj.STP.OperationSummaryReport operation_summary_report = 3;
    if (has_operation_summary_report()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->operation_summary_report());
    }

    // optional .Impinj.STP.CartonContentsReport carton_contents_report = 4;
    if (has_carton_contents_report()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->carton_contents_report());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Report::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Report*>(&from));
}

void Report::MergeFrom(const Report& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_device_event_report()) {
      mutable_device_event_report()->::Impinj::STP::DeviceEventReport::MergeFrom(from.device_event_report());
    }
    if (from.has_tag_operation_report()) {
      mutable_tag_operation_report()->::Impinj::STP::TagOperationReport::MergeFrom(from.tag_operation_report());
    }
    if (from.has_operation_summary_report()) {
      mutable_operation_summary_report()->::Impinj::STP::OperationSummaryReport::MergeFrom(from.operation_summary_report());
    }
    if (from.has_carton_contents_report()) {
      mutable_carton_contents_report()->::Impinj::STP::CartonContentsReport::MergeFrom(from.carton_contents_report());
    }
  }
}

void Report::CopyFrom(const Report& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Report::IsInitialized() const {

  if (has_device_event_report()) {
    if (!this->device_event_report().IsInitialized()) return false;
  }
  if (has_tag_operation_report()) {
    if (!this->tag_operation_report().IsInitialized()) return false;
  }
  if (has_operation_summary_report()) {
    if (!this->operation_summary_report().IsInitialized()) return false;
  }
  return true;
}

void Report::Swap(Report* other) {
  if (other != this) {
    std::swap(device_event_report_, other->device_event_report_);
    std::swap(tag_operation_report_, other->tag_operation_report_);
    std::swap(operation_summary_report_, other->operation_summary_report_);
    std::swap(carton_contents_report_, other->carton_contents_report_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Report::GetTypeName() const {
  return "Impinj.STP.Report";
}


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

#ifndef _MSC_VER
const int Update::kAddTidTableEntriesFieldNumber;
#endif  // !_MSC_VER

Update::Update()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Update::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  add_tid_table_entries_ = const_cast< ::Impinj::STP::AddTIDTableEntriesCommand*>(
      ::Impinj::STP::AddTIDTableEntriesCommand::internal_default_instance());
#else
  add_tid_table_entries_ = const_cast< ::Impinj::STP::AddTIDTableEntriesCommand*>(&::Impinj::STP::AddTIDTableEntriesCommand::default_instance());
#endif
}

Update::Update(const Update& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Update::SharedCtor() {
  _cached_size_ = 0;
  add_tid_table_entries_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Update::~Update() {
  SharedDtor();
}

void Update::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete add_tid_table_entries_;
  }
}

void Update::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Update& Update::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Update* Update::default_instance_ = NULL;

Update* Update::New() const {
  return new Update;
}

void Update::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_add_tid_table_entries()) {
      if (add_tid_table_entries_ != NULL) add_tid_table_entries_->::Impinj::STP::AddTIDTableEntriesCommand::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Update::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.AddTIDTableEntriesCommand add_tid_table_entries = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_add_tid_table_entries()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Update::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.AddTIDTableEntriesCommand add_tid_table_entries = 1;
  if (has_add_tid_table_entries()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->add_tid_table_entries(), output);
  }

}

int Update::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.AddTIDTableEntriesCommand add_tid_table_entries = 1;
    if (has_add_tid_table_entries()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->add_tid_table_entries());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Update::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Update*>(&from));
}

void Update::MergeFrom(const Update& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_add_tid_table_entries()) {
      mutable_add_tid_table_entries()->::Impinj::STP::AddTIDTableEntriesCommand::MergeFrom(from.add_tid_table_entries());
    }
  }
}

void Update::CopyFrom(const Update& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Update::IsInitialized() const {

  if (has_add_tid_table_entries()) {
    if (!this->add_tid_table_entries().IsInitialized()) return false;
  }
  return true;
}

void Update::Swap(Update* other) {
  if (other != this) {
    std::swap(add_tid_table_entries_, other->add_tid_table_entries_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Update::GetTypeName() const {
  return "Impinj.STP.Update";
}


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

#ifndef _MSC_VER
const int Packet::kCommandFieldNumber;
const int Packet::kResponseFieldNumber;
const int Packet::kReportFieldNumber;
const int Packet::kUpdateFieldNumber;
#endif  // !_MSC_VER

Packet::Packet()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void Packet::InitAsDefaultInstance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  command_ = const_cast< ::Impinj::STP::Command*>(
      ::Impinj::STP::Command::internal_default_instance());
#else
  command_ = const_cast< ::Impinj::STP::Command*>(&::Impinj::STP::Command::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  response_ = const_cast< ::Impinj::STP::Response*>(
      ::Impinj::STP::Response::internal_default_instance());
#else
  response_ = const_cast< ::Impinj::STP::Response*>(&::Impinj::STP::Response::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  report_ = const_cast< ::Impinj::STP::Report*>(
      ::Impinj::STP::Report::internal_default_instance());
#else
  report_ = const_cast< ::Impinj::STP::Report*>(&::Impinj::STP::Report::default_instance());
#endif
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  update_ = const_cast< ::Impinj::STP::Update*>(
      ::Impinj::STP::Update::internal_default_instance());
#else
  update_ = const_cast< ::Impinj::STP::Update*>(&::Impinj::STP::Update::default_instance());
#endif
}

Packet::Packet(const Packet& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void Packet::SharedCtor() {
  _cached_size_ = 0;
  command_ = NULL;
  response_ = NULL;
  report_ = NULL;
  update_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

Packet::~Packet() {
  SharedDtor();
}

void Packet::SharedDtor() {
  #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  if (this != &default_instance()) {
  #else
  if (this != default_instance_) {
  #endif
    delete command_;
    delete response_;
    delete report_;
    delete update_;
  }
}

void Packet::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const Packet& Packet::default_instance() {
#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER
  protobuf_AddDesc_stp_5fapi_2eproto();
#else
  if (default_instance_ == NULL) protobuf_AddDesc_stp_5fapi_2eproto();
#endif
  return *default_instance_;
}

Packet* Packet::default_instance_ = NULL;

Packet* Packet::New() const {
  return new Packet;
}

void Packet::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_command()) {
      if (command_ != NULL) command_->::Impinj::STP::Command::Clear();
    }
    if (has_response()) {
      if (response_ != NULL) response_->::Impinj::STP::Response::Clear();
    }
    if (has_report()) {
      if (report_ != NULL) report_->::Impinj::STP::Report::Clear();
    }
    if (has_update()) {
      if (update_ != NULL) update_->::Impinj::STP::Update::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool Packet::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .Impinj.STP.Command command = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_command()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_response;
        break;
      }

      // optional .Impinj.STP.Response response = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_response:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_response()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_report;
        break;
      }

      // optional .Impinj.STP.Report report = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_report:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_report()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(50)) goto parse_update;
        break;
      }

      // optional .Impinj.STP.Update update = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_update:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_update()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }

      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void Packet::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .Impinj.STP.Command command = 3;
  if (has_command()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->command(), output);
  }

  // optional .Impinj.STP.Response response = 4;
  if (has_response()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->response(), output);
  }

  // optional .Impinj.STP.Report report = 5;
  if (has_report()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->report(), output);
  }

  // optional .Impinj.STP.Update update = 6;
  if (has_update()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      6, this->update(), output);
  }

}

int Packet::ByteSize() const {
  int total_size = 0;

  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .Impinj.STP.Command command = 3;
    if (has_command()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->command());
    }

    // optional .Impinj.STP.Response response = 4;
    if (has_response()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->response());
    }

    // optional .Impinj.STP.Report report = 5;
    if (has_report()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->report());
    }

    // optional .Impinj.STP.Update update = 6;
    if (has_update()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->update());
    }

  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Packet::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const Packet*>(&from));
}

void Packet::MergeFrom(const Packet& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_command()) {
      mutable_command()->::Impinj::STP::Command::MergeFrom(from.command());
    }
    if (from.has_response()) {
      mutable_response()->::Impinj::STP::Response::MergeFrom(from.response());
    }
    if (from.has_report()) {
      mutable_report()->::Impinj::STP::Report::MergeFrom(from.report());
    }
    if (from.has_update()) {
      mutable_update()->::Impinj::STP::Update::MergeFrom(from.update());
    }
  }
}

void Packet::CopyFrom(const Packet& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Packet::IsInitialized() const {

  if (has_command()) {
    if (!this->command().IsInitialized()) return false;
  }
  if (has_response()) {
    if (!this->response().IsInitialized()) return false;
  }
  if (has_report()) {
    if (!this->report().IsInitialized()) return false;
  }
  if (has_update()) {
    if (!this->update().IsInitialized()) return false;
  }
  return true;
}

void Packet::Swap(Packet* other) {
  if (other != this) {
    std::swap(command_, other->command_);
    std::swap(response_, other->response_);
    std::swap(report_, other->report_);
    std::swap(update_, other->update_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string Packet::GetTypeName() const {
  return "Impinj.STP.Packet";
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace STP
}  // namespace Impinj

// @@protoc_insertion_point(global_scope)
