text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: NetspeakService.proto
  
  #include "NetspeakService.pb.h"
  
  #include <algorithm>
  
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/extension_set.h>
  #include <google/protobuf/wire_format_lite.h>
  #include <google/protobuf/descriptor.h>
  #include <google/protobuf/generated_message_reflection.h>
  #include <google/protobuf/reflection_ops.h>
  #include <google/protobuf/wire_format.h>
  // @@protoc_insertion_point(includes)
  #include <google/protobuf/port_def.inc>
  extern PROTOBUF_INTERNAL_EXPORT_NetspeakService_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Corpus_NetspeakService_2eproto;
  extern PROTOBUF_INTERNAL_EXPORT_NetspeakService_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Phrase_NetspeakService_2eproto;
  extern PROTOBUF_INTERNAL_EXPORT_NetspeakService_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Phrase_Word_NetspeakService_2eproto;
  extern PROTOBUF_INTERNAL_EXPORT_NetspeakService_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_PhraseConstraints_NetspeakService_2eproto;
  extern PROTOBUF_INTERNAL_EXPORT_NetspeakService_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SearchResponse_Error_NetspeakService_2eproto;
  extern PROTOBUF_INTERNAL_EXPORT_NetspeakService_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SearchResponse_Result_NetspeakService_2eproto;
  namespace netspeak {
  namespace service {
  class SearchRequestDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SearchRequest> _instance;
  } _SearchRequest_default_instance_;
  class PhraseConstraintsDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<PhraseConstraints> _instance;
  } _PhraseConstraints_default_instance_;
  class Phrase_WordDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<Phrase_Word> _instance;
  } _Phrase_Word_default_instance_;
  class PhraseDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<Phrase> _instance;
  } _Phrase_default_instance_;
  class SearchResponse_ResultDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SearchResponse_Result> _instance;
  } _SearchResponse_Result_default_instance_;
  class SearchResponse_ErrorDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SearchResponse_Error> _instance;
  } _SearchResponse_Error_default_instance_;
  class SearchResponseDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SearchResponse> _instance;
    const ::netspeak::service::SearchResponse_Result* result_;
    const ::netspeak::service::SearchResponse_Error* error_;
  } _SearchResponse_default_instance_;
  class CorporaRequestDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<CorporaRequest> _instance;
  } _CorporaRequest_default_instance_;
  class CorpusDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<Corpus> _instance;
  } _Corpus_default_instance_;
  class CorporaResponseDefaultTypeInternal {
   public:
    ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<CorporaResponse> _instance;
  } _CorporaResponse_default_instance_;
  }  // namespace service
  }  // namespace netspeak
  static void InitDefaultsscc_info_CorporaRequest_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_CorporaRequest_default_instance_;
      new (ptr) ::netspeak::service::CorporaRequest();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::CorporaRequest::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_CorporaRequest_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_CorporaRequest_NetspeakService_2eproto}, {}};
  
  static void InitDefaultsscc_info_CorporaResponse_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_CorporaResponse_default_instance_;
      new (ptr) ::netspeak::service::CorporaResponse();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::CorporaResponse::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_CorporaResponse_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_CorporaResponse_NetspeakService_2eproto}, {
        &scc_info_Corpus_NetspeakService_2eproto.base,}};
  
  static void InitDefaultsscc_info_Corpus_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_Corpus_default_instance_;
      new (ptr) ::netspeak::service::Corpus();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::Corpus::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Corpus_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Corpus_NetspeakService_2eproto}, {}};
  
  static void InitDefaultsscc_info_Phrase_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_Phrase_default_instance_;
      new (ptr) ::netspeak::service::Phrase();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::Phrase::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Phrase_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_Phrase_NetspeakService_2eproto}, {
        &scc_info_Phrase_Word_NetspeakService_2eproto.base,}};
  
  static void InitDefaultsscc_info_Phrase_Word_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_Phrase_Word_default_instance_;
      new (ptr) ::netspeak::service::Phrase_Word();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::Phrase_Word::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Phrase_Word_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Phrase_Word_NetspeakService_2eproto}, {}};
  
  static void InitDefaultsscc_info_PhraseConstraints_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_PhraseConstraints_default_instance_;
      new (ptr) ::netspeak::service::PhraseConstraints();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::PhraseConstraints::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_PhraseConstraints_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_PhraseConstraints_NetspeakService_2eproto}, {}};
  
  static void InitDefaultsscc_info_SearchRequest_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_SearchRequest_default_instance_;
      new (ptr) ::netspeak::service::SearchRequest();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::SearchRequest::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SearchRequest_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_SearchRequest_NetspeakService_2eproto}, {
        &scc_info_PhraseConstraints_NetspeakService_2eproto.base,}};
  
  static void InitDefaultsscc_info_SearchResponse_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_SearchResponse_default_instance_;
      new (ptr) ::netspeak::service::SearchResponse();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::SearchResponse::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_SearchResponse_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 2, 0, InitDefaultsscc_info_SearchResponse_NetspeakService_2eproto}, {
        &scc_info_SearchResponse_Result_NetspeakService_2eproto.base,
        &scc_info_SearchResponse_Error_NetspeakService_2eproto.base,}};
  
  static void InitDefaultsscc_info_SearchResponse_Error_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_SearchResponse_Error_default_instance_;
      new (ptr) ::netspeak::service::SearchResponse_Error();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::SearchResponse_Error::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SearchResponse_Error_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_SearchResponse_Error_NetspeakService_2eproto}, {}};
  
  static void InitDefaultsscc_info_SearchResponse_Result_NetspeakService_2eproto() {
    GOOGLE_PROTOBUF_VERIFY_VERSION;
  
    {
      void* ptr = &::netspeak::service::_SearchResponse_Result_default_instance_;
      new (ptr) ::netspeak::service::SearchResponse_Result();
      ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
    }
    ::netspeak::service::SearchResponse_Result::InitAsDefaultInstance();
  }
  
  ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SearchResponse_Result_NetspeakService_2eproto =
      {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_SearchResponse_Result_NetspeakService_2eproto}, {
        &scc_info_Phrase_NetspeakService_2eproto.base,}};
  
  static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_NetspeakService_2eproto[10];
  static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_NetspeakService_2eproto[2];
  static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_NetspeakService_2eproto = nullptr;
  
  const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_NetspeakService_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchRequest, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchRequest, query_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchRequest, corpus_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchRequest, max_phrases_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchRequest, phrase_constraints_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::PhraseConstraints, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::PhraseConstraints, frequency_max_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::PhraseConstraints, words_min_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::PhraseConstraints, words_max_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Phrase_Word, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Phrase_Word, tag_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Phrase_Word, text_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Phrase, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Phrase, id_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Phrase, frequency_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Phrase, words_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse_Result, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse_Result, phrases_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse_Result, unknown_words_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse_Error, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse_Error, kind_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse_Error, message_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse, _internal_metadata_),
    ~0u,  // no _extensions_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse, _oneof_case_[0]),
    ~0u,  // no _weak_field_map_
    offsetof(::netspeak::service::SearchResponseDefaultTypeInternal, result_),
    offsetof(::netspeak::service::SearchResponseDefaultTypeInternal, error_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::SearchResponse, response_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::CorporaRequest, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Corpus, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Corpus, key_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Corpus, name_),
    PROTOBUF_FIELD_OFFSET(::netspeak::service::Corpus, language_),
    ~0u,  // no _has_bits_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::CorporaResponse, _internal_metadata_),
    ~0u,  // no _extensions_
    ~0u,  // no _oneof_case_
    ~0u,  // no _weak_field_map_
    PROTOBUF_FIELD_OFFSET(::netspeak::service::CorporaResponse, corpora_),
  };
  static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
    { 0, -1, sizeof(::netspeak::service::SearchRequest)},
    { 9, -1, sizeof(::netspeak::service::PhraseConstraints)},
    { 17, -1, sizeof(::netspeak::service::Phrase_Word)},
    { 24, -1, sizeof(::netspeak::service::Phrase)},
    { 32, -1, sizeof(::netspeak::service::SearchResponse_Result)},
    { 39, -1, sizeof(::netspeak::service::SearchResponse_Error)},
    { 46, -1, sizeof(::netspeak::service::SearchResponse)},
    { 54, -1, sizeof(::netspeak::service::CorporaRequest)},
    { 59, -1, sizeof(::netspeak::service::Corpus)},
    { 67, -1, sizeof(::netspeak::service::CorporaResponse)},
  };
  
  static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_SearchRequest_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_PhraseConstraints_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_Phrase_Word_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_Phrase_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_SearchResponse_Result_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_SearchResponse_Error_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_SearchResponse_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_CorporaRequest_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_Corpus_default_instance_),
    reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::netspeak::service::_CorporaResponse_default_instance_),
  };
  
  const char descriptor_table_protodef_NetspeakService_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
    "\n\025NetspeakService.proto\022\020netspeak.servic"
    "e\"\204\001\n\rSearchRequest\022\r\n\005query\030\001 \001(\t\022\016\n\006co"
    "rpus\030\002 \001(\t\022\023\n\013max_phrases\030\003 \001(\r\022\?\n\022phras"
    "e_constraints\030\004 \001(\0132#.netspeak.service.P"
    "hraseConstraints\"P\n\021PhraseConstraints\022\025\n"
    "\rfrequency_max\030\001 \001(\004\022\021\n\twords_min\030\002 \001(\r\022"
    "\021\n\twords_max\030\003 \001(\r\"\276\002\n\006Phrase\022\n\n\002id\030\001 \001("
    "\004\022\021\n\tfrequency\030\002 \001(\004\022,\n\005words\030\003 \003(\0132\035.ne"
    "tspeak.service.Phrase.Word\032\346\001\n\004Word\022.\n\003t"
    "ag\030\001 \001(\0162!.netspeak.service.Phrase.Word."
    "Tag\022\014\n\004text\030\002 \001(\t\"\237\001\n\003Tag\022\010\n\004WORD\020\000\022\022\n\016W"
    "ORD_FOR_QMARK\020\001\022\021\n\rWORD_FOR_STAR\020\002\022\023\n\017WO"
    "RD_IN_DICTSET\020\003\022\024\n\020WORD_IN_ORDERSET\020\004\022\025\n"
    "\021WORD_IN_OPTIONSET\020\005\022\021\n\rWORD_FOR_PLUS\020\006\022"
    "\022\n\016WORD_FOR_REGEX\020\007\"\231\003\n\016SearchResponse\0229"
    "\n\006result\030\001 \001(\0132\'.netspeak.service.Search"
    "Response.ResultH\000\0227\n\005error\030\002 \001(\0132&.netsp"
    "eak.service.SearchResponse.ErrorH\000\032J\n\006Re"
    "sult\022)\n\007phrases\030\001 \003(\0132\030.netspeak.service"
    ".Phrase\022\025\n\runknown_words\030\002 \003(\t\032\272\001\n\005Error"
    "\0229\n\004kind\030\001 \001(\0162+.netspeak.service.Search"
    "Response.Error.Kind\022\017\n\007message\030\002 \001(\t\"e\n\004"
    "Kind\022\013\n\007UNKNOWN\020\000\022\022\n\016INTERNAL_ERROR\020\001\022\025\n"
    "\021INVALID_PARAMETER\020d\022\021\n\rINVALID_QUERY\020n\022"
    "\022\n\016INVALID_CORPUS\020oB\n\n\010response\"\020\n\016Corpo"
    "raRequest\"5\n\006Corpus\022\013\n\003key\030\001 \001(\t\022\014\n\004name"
    "\030\002 \001(\t\022\020\n\010language\030\003 \001(\t\"<\n\017CorporaRespo"
    "nse\022)\n\007corpora\030\001 \003(\0132\030.netspeak.service."
    "Corpus2\261\001\n\017NetspeakService\022K\n\006Search\022\037.n"
    "etspeak.service.SearchRequest\032 .netspeak"
    ".service.SearchResponse\022Q\n\nGetCorpora\022 ."
    "netspeak.service.CorporaRequest\032!.netspe"
    "ak.service.CorporaResponseB\030\n\024org.netspe"
    "ak.serviceH\001b\006proto3"
    ;
  static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_NetspeakService_2eproto_deps[1] = {
  };
  static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_NetspeakService_2eproto_sccs[10] = {
    &scc_info_CorporaRequest_NetspeakService_2eproto.base,
    &scc_info_CorporaResponse_NetspeakService_2eproto.base,
    &scc_info_Corpus_NetspeakService_2eproto.base,
    &scc_info_Phrase_NetspeakService_2eproto.base,
    &scc_info_Phrase_Word_NetspeakService_2eproto.base,
    &scc_info_PhraseConstraints_NetspeakService_2eproto.base,
    &scc_info_SearchRequest_NetspeakService_2eproto.base,
    &scc_info_SearchResponse_NetspeakService_2eproto.base,
    &scc_info_SearchResponse_Error_NetspeakService_2eproto.base,
    &scc_info_SearchResponse_Result_NetspeakService_2eproto.base,
  };
  static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_NetspeakService_2eproto_once;
  static bool descriptor_table_NetspeakService_2eproto_initialized = false;
  const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_NetspeakService_2eproto = {
    &descriptor_table_NetspeakService_2eproto_initialized, descriptor_table_protodef_NetspeakService_2eproto, "NetspeakService.proto", 1340,
    &descriptor_table_NetspeakService_2eproto_once, descriptor_table_NetspeakService_2eproto_sccs, descriptor_table_NetspeakService_2eproto_deps, 10, 0,
    schemas, file_default_instances, TableStruct_NetspeakService_2eproto::offsets,
    file_level_metadata_NetspeakService_2eproto, 10, file_level_enum_descriptors_NetspeakService_2eproto, file_level_service_descriptors_NetspeakService_2eproto,
  };
  
  // Force running AddDescriptors() at dynamic initialization time.
  static bool dynamic_init_dummy_NetspeakService_2eproto = (  ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_NetspeakService_2eproto), true);
  namespace netspeak {
  namespace service {
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Phrase_Word_Tag_descriptor() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_NetspeakService_2eproto);
    return file_level_enum_descriptors_NetspeakService_2eproto[0];
  }
  bool Phrase_Word_Tag_IsValid(int value) {
    switch (value) {
      case 0:
      case 1:
      case 2:
      case 3:
      case 4:
      case 5:
      case 6:
      case 7:
        return true;
      default:
        return false;
    }
  }
  
  #if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
  constexpr Phrase_Word_Tag Phrase_Word::WORD;
  constexpr Phrase_Word_Tag Phrase_Word::WORD_FOR_QMARK;
  constexpr Phrase_Word_Tag Phrase_Word::WORD_FOR_STAR;
  constexpr Phrase_Word_Tag Phrase_Word::WORD_IN_DICTSET;
  constexpr Phrase_Word_Tag Phrase_Word::WORD_IN_ORDERSET;
  constexpr Phrase_Word_Tag Phrase_Word::WORD_IN_OPTIONSET;
  constexpr Phrase_Word_Tag Phrase_Word::WORD_FOR_PLUS;
  constexpr Phrase_Word_Tag Phrase_Word::WORD_FOR_REGEX;
  constexpr Phrase_Word_Tag Phrase_Word::Tag_MIN;
  constexpr Phrase_Word_Tag Phrase_Word::Tag_MAX;
  constexpr int Phrase_Word::Tag_ARRAYSIZE;
  #endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SearchResponse_Error_Kind_descriptor() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_NetspeakService_2eproto);
    return file_level_enum_descriptors_NetspeakService_2eproto[1];
  }
  bool SearchResponse_Error_Kind_IsValid(int value) {
    switch (value) {
      case 0:
      case 1:
      case 100:
      case 110:
      case 111:
        return true;
      default:
        return false;
    }
  }
  
  #if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
  constexpr SearchResponse_Error_Kind SearchResponse_Error::UNKNOWN;
  constexpr SearchResponse_Error_Kind SearchResponse_Error::INTERNAL_ERROR;
  constexpr SearchResponse_Error_Kind SearchResponse_Error::INVALID_PARAMETER;
  constexpr SearchResponse_Error_Kind SearchResponse_Error::INVALID_QUERY;
  constexpr SearchResponse_Error_Kind SearchResponse_Error::INVALID_CORPUS;
  constexpr SearchResponse_Error_Kind SearchResponse_Error::Kind_MIN;
  constexpr SearchResponse_Error_Kind SearchResponse_Error::Kind_MAX;
  constexpr int SearchResponse_Error::Kind_ARRAYSIZE;
  #endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
  
  // ===================================================================
  
  void SearchRequest::InitAsDefaultInstance() {
    ::netspeak::service::_SearchRequest_default_instance_._instance.get_mutable()->phrase_constraints_ = const_cast< ::netspeak::service::PhraseConstraints*>(
        ::netspeak::service::PhraseConstraints::internal_default_instance());
  }
  class SearchRequest::_Internal {
   public:
    static const ::netspeak::service::PhraseConstraints& phrase_constraints(const SearchRequest* msg);
  };
  
  const ::netspeak::service::PhraseConstraints&
  SearchRequest::_Internal::phrase_constraints(const SearchRequest* msg) {
    return *msg->phrase_constraints_;
  }
  SearchRequest::SearchRequest()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.SearchRequest)
  }
  SearchRequest::SearchRequest(const SearchRequest& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    query_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (!from._internal_query().empty()) {
      query_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.query_);
    }
    corpus_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (!from._internal_corpus().empty()) {
      corpus_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.corpus_);
    }
    if (from._internal_has_phrase_constraints()) {
      phrase_constraints_ = new ::netspeak::service::PhraseConstraints(*from.phrase_constraints_);
    } else {
      phrase_constraints_ = nullptr;
    }
    max_phrases_ = from.max_phrases_;
    // @@protoc_insertion_point(copy_constructor:netspeak.service.SearchRequest)
  }
  
  void SearchRequest::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SearchRequest_NetspeakService_2eproto.base);
    query_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    corpus_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    ::memset(&phrase_constraints_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&max_phrases_) -
        reinterpret_cast<char*>(&phrase_constraints_)) + sizeof(max_phrases_));
  }
  
  SearchRequest::~SearchRequest() {
    // @@protoc_insertion_point(destructor:netspeak.service.SearchRequest)
    SharedDtor();
  }
  
  void SearchRequest::SharedDtor() {
    query_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    corpus_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (this != internal_default_instance()) delete phrase_constraints_;
  }
  
  void SearchRequest::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const SearchRequest& SearchRequest::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_SearchRequest_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void SearchRequest::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.SearchRequest)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    query_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    corpus_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (GetArenaNoVirtual() == nullptr && phrase_constraints_ != nullptr) {
      delete phrase_constraints_;
    }
    phrase_constraints_ = nullptr;
    max_phrases_ = 0u;
    _internal_metadata_.Clear();
  }
  
  const char* SearchRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // string query = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
            auto str = _internal_mutable_query();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.SearchRequest.query"));
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // string corpus = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
            auto str = _internal_mutable_corpus();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.SearchRequest.corpus"));
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // uint32 max_phrases = 3;
        case 3:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
            max_phrases_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // .netspeak.service.PhraseConstraints phrase_constraints = 4;
        case 4:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
            ptr = ctx->ParseMessage(_internal_mutable_phrase_constraints(), ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* SearchRequest::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.SearchRequest)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // string query = 1;
    if (this->query().size() > 0) {
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        this->_internal_query().data(), static_cast<int>(this->_internal_query().length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.SearchRequest.query");
      target = stream->WriteStringMaybeAliased(
          1, this->_internal_query(), target);
    }
  
    // string corpus = 2;
    if (this->corpus().size() > 0) {
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        this->_internal_corpus().data(), static_cast<int>(this->_internal_corpus().length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.SearchRequest.corpus");
      target = stream->WriteStringMaybeAliased(
          2, this->_internal_corpus(), target);
    }
  
    // uint32 max_phrases = 3;
    if (this->max_phrases() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_max_phrases(), target);
    }
  
    // .netspeak.service.PhraseConstraints phrase_constraints = 4;
    if (this->has_phrase_constraints()) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          4, _Internal::phrase_constraints(this), target, stream);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.SearchRequest)
    return target;
  }
  
  size_t SearchRequest::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.SearchRequest)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // string query = 1;
    if (this->query().size() > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_query());
    }
  
    // string corpus = 2;
    if (this->corpus().size() > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_corpus());
    }
  
    // .netspeak.service.PhraseConstraints phrase_constraints = 4;
    if (this->has_phrase_constraints()) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *phrase_constraints_);
    }
  
    // uint32 max_phrases = 3;
    if (this->max_phrases() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_max_phrases());
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void SearchRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.SearchRequest)
    GOOGLE_DCHECK_NE(&from, this);
    const SearchRequest* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SearchRequest>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.SearchRequest)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.SearchRequest)
      MergeFrom(*source);
    }
  }
  
  void SearchRequest::MergeFrom(const SearchRequest& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.SearchRequest)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    if (from.query().size() > 0) {
  
      query_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.query_);
    }
    if (from.corpus().size() > 0) {
  
      corpus_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.corpus_);
    }
    if (from.has_phrase_constraints()) {
      _internal_mutable_phrase_constraints()->::netspeak::service::PhraseConstraints::MergeFrom(from._internal_phrase_constraints());
    }
    if (from.max_phrases() != 0) {
      _internal_set_max_phrases(from._internal_max_phrases());
    }
  }
  
  void SearchRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.SearchRequest)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void SearchRequest::CopyFrom(const SearchRequest& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.SearchRequest)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool SearchRequest::IsInitialized() const {
    return true;
  }
  
  void SearchRequest::InternalSwap(SearchRequest* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    query_.Swap(&other->query_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    corpus_.Swap(&other->corpus_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(phrase_constraints_, other->phrase_constraints_);
    swap(max_phrases_, other->max_phrases_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata SearchRequest::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void PhraseConstraints::InitAsDefaultInstance() {
  }
  class PhraseConstraints::_Internal {
   public:
  };
  
  PhraseConstraints::PhraseConstraints()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.PhraseConstraints)
  }
  PhraseConstraints::PhraseConstraints(const PhraseConstraints& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::memcpy(&frequency_max_, &from.frequency_max_,
      static_cast<size_t>(reinterpret_cast<char*>(&words_max_) -
      reinterpret_cast<char*>(&frequency_max_)) + sizeof(words_max_));
    // @@protoc_insertion_point(copy_constructor:netspeak.service.PhraseConstraints)
  }
  
  void PhraseConstraints::SharedCtor() {
    ::memset(&frequency_max_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&words_max_) -
        reinterpret_cast<char*>(&frequency_max_)) + sizeof(words_max_));
  }
  
  PhraseConstraints::~PhraseConstraints() {
    // @@protoc_insertion_point(destructor:netspeak.service.PhraseConstraints)
    SharedDtor();
  }
  
  void PhraseConstraints::SharedDtor() {
  }
  
  void PhraseConstraints::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const PhraseConstraints& PhraseConstraints::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_PhraseConstraints_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void PhraseConstraints::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.PhraseConstraints)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    ::memset(&frequency_max_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&words_max_) -
        reinterpret_cast<char*>(&frequency_max_)) + sizeof(words_max_));
    _internal_metadata_.Clear();
  }
  
  const char* PhraseConstraints::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // uint64 frequency_max = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
            frequency_max_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // uint32 words_min = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
            words_min_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // uint32 words_max = 3;
        case 3:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
            words_max_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* PhraseConstraints::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.PhraseConstraints)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // uint64 frequency_max = 1;
    if (this->frequency_max() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(1, this->_internal_frequency_max(), target);
    }
  
    // uint32 words_min = 2;
    if (this->words_min() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_words_min(), target);
    }
  
    // uint32 words_max = 3;
    if (this->words_max() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_words_max(), target);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.PhraseConstraints)
    return target;
  }
  
  size_t PhraseConstraints::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.PhraseConstraints)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // uint64 frequency_max = 1;
    if (this->frequency_max() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->_internal_frequency_max());
    }
  
    // uint32 words_min = 2;
    if (this->words_min() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_words_min());
    }
  
    // uint32 words_max = 3;
    if (this->words_max() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_words_max());
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void PhraseConstraints::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.PhraseConstraints)
    GOOGLE_DCHECK_NE(&from, this);
    const PhraseConstraints* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<PhraseConstraints>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.PhraseConstraints)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.PhraseConstraints)
      MergeFrom(*source);
    }
  }
  
  void PhraseConstraints::MergeFrom(const PhraseConstraints& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.PhraseConstraints)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    if (from.frequency_max() != 0) {
      _internal_set_frequency_max(from._internal_frequency_max());
    }
    if (from.words_min() != 0) {
      _internal_set_words_min(from._internal_words_min());
    }
    if (from.words_max() != 0) {
      _internal_set_words_max(from._internal_words_max());
    }
  }
  
  void PhraseConstraints::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.PhraseConstraints)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void PhraseConstraints::CopyFrom(const PhraseConstraints& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.PhraseConstraints)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool PhraseConstraints::IsInitialized() const {
    return true;
  }
  
  void PhraseConstraints::InternalSwap(PhraseConstraints* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(frequency_max_, other->frequency_max_);
    swap(words_min_, other->words_min_);
    swap(words_max_, other->words_max_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata PhraseConstraints::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void Phrase_Word::InitAsDefaultInstance() {
  }
  class Phrase_Word::_Internal {
   public:
  };
  
  Phrase_Word::Phrase_Word()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.Phrase.Word)
  }
  Phrase_Word::Phrase_Word(const Phrase_Word& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    text_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (!from._internal_text().empty()) {
      text_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.text_);
    }
    tag_ = from.tag_;
    // @@protoc_insertion_point(copy_constructor:netspeak.service.Phrase.Word)
  }
  
  void Phrase_Word::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Phrase_Word_NetspeakService_2eproto.base);
    text_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    tag_ = 0;
  }
  
  Phrase_Word::~Phrase_Word() {
    // @@protoc_insertion_point(destructor:netspeak.service.Phrase.Word)
    SharedDtor();
  }
  
  void Phrase_Word::SharedDtor() {
    text_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  
  void Phrase_Word::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const Phrase_Word& Phrase_Word::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Phrase_Word_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void Phrase_Word::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.Phrase.Word)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    text_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    tag_ = 0;
    _internal_metadata_.Clear();
  }
  
  const char* Phrase_Word::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // .netspeak.service.Phrase.Word.Tag tag = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
            ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
            _internal_set_tag(static_cast<::netspeak::service::Phrase_Word_Tag>(val));
          } else goto handle_unusual;
          continue;
        // string text = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
            auto str = _internal_mutable_text();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.Phrase.Word.text"));
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* Phrase_Word::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.Phrase.Word)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // .netspeak.service.Phrase.Word.Tag tag = 1;
    if (this->tag() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
        1, this->_internal_tag(), target);
    }
  
    // string text = 2;
    if (this->text().size() > 0) {
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        this->_internal_text().data(), static_cast<int>(this->_internal_text().length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.Phrase.Word.text");
      target = stream->WriteStringMaybeAliased(
          2, this->_internal_text(), target);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.Phrase.Word)
    return target;
  }
  
  size_t Phrase_Word::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.Phrase.Word)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // string text = 2;
    if (this->text().size() > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_text());
    }
  
    // .netspeak.service.Phrase.Word.Tag tag = 1;
    if (this->tag() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_tag());
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void Phrase_Word::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.Phrase.Word)
    GOOGLE_DCHECK_NE(&from, this);
    const Phrase_Word* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<Phrase_Word>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.Phrase.Word)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.Phrase.Word)
      MergeFrom(*source);
    }
  }
  
  void Phrase_Word::MergeFrom(const Phrase_Word& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.Phrase.Word)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    if (from.text().size() > 0) {
  
      text_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.text_);
    }
    if (from.tag() != 0) {
      _internal_set_tag(from._internal_tag());
    }
  }
  
  void Phrase_Word::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.Phrase.Word)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void Phrase_Word::CopyFrom(const Phrase_Word& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.Phrase.Word)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool Phrase_Word::IsInitialized() const {
    return true;
  }
  
  void Phrase_Word::InternalSwap(Phrase_Word* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    text_.Swap(&other->text_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(tag_, other->tag_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata Phrase_Word::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void Phrase::InitAsDefaultInstance() {
  }
  class Phrase::_Internal {
   public:
  };
  
  Phrase::Phrase()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.Phrase)
  }
  Phrase::Phrase(const Phrase& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr),
        words_(from.words_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::memcpy(&id_, &from.id_,
      static_cast<size_t>(reinterpret_cast<char*>(&frequency_) -
      reinterpret_cast<char*>(&id_)) + sizeof(frequency_));
    // @@protoc_insertion_point(copy_constructor:netspeak.service.Phrase)
  }
  
  void Phrase::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Phrase_NetspeakService_2eproto.base);
    ::memset(&id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&frequency_) -
        reinterpret_cast<char*>(&id_)) + sizeof(frequency_));
  }
  
  Phrase::~Phrase() {
    // @@protoc_insertion_point(destructor:netspeak.service.Phrase)
    SharedDtor();
  }
  
  void Phrase::SharedDtor() {
  }
  
  void Phrase::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const Phrase& Phrase::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Phrase_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void Phrase::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.Phrase)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    words_.Clear();
    ::memset(&id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&frequency_) -
        reinterpret_cast<char*>(&id_)) + sizeof(frequency_));
    _internal_metadata_.Clear();
  }
  
  const char* Phrase::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // uint64 id = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
            id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // uint64 frequency = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
            frequency_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // repeated .netspeak.service.Phrase.Word words = 3;
        case 3:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
            ptr -= 1;
            do {
              ptr += 1;
              ptr = ctx->ParseMessage(_internal_add_words(), ptr);
              CHK_(ptr);
              if (!ctx->DataAvailable(ptr)) break;
            } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* Phrase::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.Phrase)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // uint64 id = 1;
    if (this->id() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(1, this->_internal_id(), target);
    }
  
    // uint64 frequency = 2;
    if (this->frequency() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(2, this->_internal_frequency(), target);
    }
  
    // repeated .netspeak.service.Phrase.Word words = 3;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->_internal_words_size()); i < n; i++) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, this->_internal_words(i), target, stream);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.Phrase)
    return target;
  }
  
  size_t Phrase::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.Phrase)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // repeated .netspeak.service.Phrase.Word words = 3;
    total_size += 1UL * this->_internal_words_size();
    for (const auto& msg : this->words_) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
    }
  
    // uint64 id = 1;
    if (this->id() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->_internal_id());
    }
  
    // uint64 frequency = 2;
    if (this->frequency() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->_internal_frequency());
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void Phrase::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.Phrase)
    GOOGLE_DCHECK_NE(&from, this);
    const Phrase* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<Phrase>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.Phrase)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.Phrase)
      MergeFrom(*source);
    }
  }
  
  void Phrase::MergeFrom(const Phrase& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.Phrase)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    words_.MergeFrom(from.words_);
    if (from.id() != 0) {
      _internal_set_id(from._internal_id());
    }
    if (from.frequency() != 0) {
      _internal_set_frequency(from._internal_frequency());
    }
  }
  
  void Phrase::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.Phrase)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void Phrase::CopyFrom(const Phrase& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.Phrase)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool Phrase::IsInitialized() const {
    return true;
  }
  
  void Phrase::InternalSwap(Phrase* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    words_.InternalSwap(&other->words_);
    swap(id_, other->id_);
    swap(frequency_, other->frequency_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata Phrase::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void SearchResponse_Result::InitAsDefaultInstance() {
  }
  class SearchResponse_Result::_Internal {
   public:
  };
  
  SearchResponse_Result::SearchResponse_Result()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.SearchResponse.Result)
  }
  SearchResponse_Result::SearchResponse_Result(const SearchResponse_Result& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr),
        phrases_(from.phrases_),
        unknown_words_(from.unknown_words_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    // @@protoc_insertion_point(copy_constructor:netspeak.service.SearchResponse.Result)
  }
  
  void SearchResponse_Result::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SearchResponse_Result_NetspeakService_2eproto.base);
  }
  
  SearchResponse_Result::~SearchResponse_Result() {
    // @@protoc_insertion_point(destructor:netspeak.service.SearchResponse.Result)
    SharedDtor();
  }
  
  void SearchResponse_Result::SharedDtor() {
  }
  
  void SearchResponse_Result::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const SearchResponse_Result& SearchResponse_Result::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_SearchResponse_Result_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void SearchResponse_Result::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.SearchResponse.Result)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    phrases_.Clear();
    unknown_words_.Clear();
    _internal_metadata_.Clear();
  }
  
  const char* SearchResponse_Result::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // repeated .netspeak.service.Phrase phrases = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
            ptr -= 1;
            do {
              ptr += 1;
              ptr = ctx->ParseMessage(_internal_add_phrases(), ptr);
              CHK_(ptr);
              if (!ctx->DataAvailable(ptr)) break;
            } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
          } else goto handle_unusual;
          continue;
        // repeated string unknown_words = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
            ptr -= 1;
            do {
              ptr += 1;
              auto str = _internal_add_unknown_words();
              ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
              CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.SearchResponse.Result.unknown_words"));
              CHK_(ptr);
              if (!ctx->DataAvailable(ptr)) break;
            } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* SearchResponse_Result::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.SearchResponse.Result)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .netspeak.service.Phrase phrases = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->_internal_phrases_size()); i < n; i++) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, this->_internal_phrases(i), target, stream);
    }
  
    // repeated string unknown_words = 2;
    for (int i = 0, n = this->_internal_unknown_words_size(); i < n; i++) {
      const auto& s = this->_internal_unknown_words(i);
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.SearchResponse.Result.unknown_words");
      target = stream->WriteString(2, s, target);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.SearchResponse.Result)
    return target;
  }
  
  size_t SearchResponse_Result::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.SearchResponse.Result)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // repeated .netspeak.service.Phrase phrases = 1;
    total_size += 1UL * this->_internal_phrases_size();
    for (const auto& msg : this->phrases_) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
    }
  
    // repeated string unknown_words = 2;
    total_size += 1 *
        ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(unknown_words_.size());
    for (int i = 0, n = unknown_words_.size(); i < n; i++) {
      total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        unknown_words_.Get(i));
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void SearchResponse_Result::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.SearchResponse.Result)
    GOOGLE_DCHECK_NE(&from, this);
    const SearchResponse_Result* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SearchResponse_Result>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.SearchResponse.Result)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.SearchResponse.Result)
      MergeFrom(*source);
    }
  }
  
  void SearchResponse_Result::MergeFrom(const SearchResponse_Result& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.SearchResponse.Result)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    phrases_.MergeFrom(from.phrases_);
    unknown_words_.MergeFrom(from.unknown_words_);
  }
  
  void SearchResponse_Result::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.SearchResponse.Result)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void SearchResponse_Result::CopyFrom(const SearchResponse_Result& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.SearchResponse.Result)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool SearchResponse_Result::IsInitialized() const {
    return true;
  }
  
  void SearchResponse_Result::InternalSwap(SearchResponse_Result* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    phrases_.InternalSwap(&other->phrases_);
    unknown_words_.InternalSwap(&other->unknown_words_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata SearchResponse_Result::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void SearchResponse_Error::InitAsDefaultInstance() {
  }
  class SearchResponse_Error::_Internal {
   public:
  };
  
  SearchResponse_Error::SearchResponse_Error()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.SearchResponse.Error)
  }
  SearchResponse_Error::SearchResponse_Error(const SearchResponse_Error& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    message_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (!from._internal_message().empty()) {
      message_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.message_);
    }
    kind_ = from.kind_;
    // @@protoc_insertion_point(copy_constructor:netspeak.service.SearchResponse.Error)
  }
  
  void SearchResponse_Error::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SearchResponse_Error_NetspeakService_2eproto.base);
    message_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    kind_ = 0;
  }
  
  SearchResponse_Error::~SearchResponse_Error() {
    // @@protoc_insertion_point(destructor:netspeak.service.SearchResponse.Error)
    SharedDtor();
  }
  
  void SearchResponse_Error::SharedDtor() {
    message_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  
  void SearchResponse_Error::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const SearchResponse_Error& SearchResponse_Error::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_SearchResponse_Error_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void SearchResponse_Error::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.SearchResponse.Error)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    message_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    kind_ = 0;
    _internal_metadata_.Clear();
  }
  
  const char* SearchResponse_Error::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // .netspeak.service.SearchResponse.Error.Kind kind = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
            ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
            _internal_set_kind(static_cast<::netspeak::service::SearchResponse_Error_Kind>(val));
          } else goto handle_unusual;
          continue;
        // string message = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
            auto str = _internal_mutable_message();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.SearchResponse.Error.message"));
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* SearchResponse_Error::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.SearchResponse.Error)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // .netspeak.service.SearchResponse.Error.Kind kind = 1;
    if (this->kind() != 0) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
        1, this->_internal_kind(), target);
    }
  
    // string message = 2;
    if (this->message().size() > 0) {
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        this->_internal_message().data(), static_cast<int>(this->_internal_message().length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.SearchResponse.Error.message");
      target = stream->WriteStringMaybeAliased(
          2, this->_internal_message(), target);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.SearchResponse.Error)
    return target;
  }
  
  size_t SearchResponse_Error::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.SearchResponse.Error)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // string message = 2;
    if (this->message().size() > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_message());
    }
  
    // .netspeak.service.SearchResponse.Error.Kind kind = 1;
    if (this->kind() != 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind());
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void SearchResponse_Error::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.SearchResponse.Error)
    GOOGLE_DCHECK_NE(&from, this);
    const SearchResponse_Error* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SearchResponse_Error>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.SearchResponse.Error)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.SearchResponse.Error)
      MergeFrom(*source);
    }
  }
  
  void SearchResponse_Error::MergeFrom(const SearchResponse_Error& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.SearchResponse.Error)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    if (from.message().size() > 0) {
  
      message_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.message_);
    }
    if (from.kind() != 0) {
      _internal_set_kind(from._internal_kind());
    }
  }
  
  void SearchResponse_Error::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.SearchResponse.Error)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void SearchResponse_Error::CopyFrom(const SearchResponse_Error& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.SearchResponse.Error)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool SearchResponse_Error::IsInitialized() const {
    return true;
  }
  
  void SearchResponse_Error::InternalSwap(SearchResponse_Error* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    message_.Swap(&other->message_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    swap(kind_, other->kind_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata SearchResponse_Error::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void SearchResponse::InitAsDefaultInstance() {
    ::netspeak::service::_SearchResponse_default_instance_.result_ = const_cast< ::netspeak::service::SearchResponse_Result*>(
        ::netspeak::service::SearchResponse_Result::internal_default_instance());
    ::netspeak::service::_SearchResponse_default_instance_.error_ = const_cast< ::netspeak::service::SearchResponse_Error*>(
        ::netspeak::service::SearchResponse_Error::internal_default_instance());
  }
  class SearchResponse::_Internal {
   public:
    static const ::netspeak::service::SearchResponse_Result& result(const SearchResponse* msg);
    static const ::netspeak::service::SearchResponse_Error& error(const SearchResponse* msg);
  };
  
  const ::netspeak::service::SearchResponse_Result&
  SearchResponse::_Internal::result(const SearchResponse* msg) {
    return *msg->response_.result_;
  }
  const ::netspeak::service::SearchResponse_Error&
  SearchResponse::_Internal::error(const SearchResponse* msg) {
    return *msg->response_.error_;
  }
  void SearchResponse::set_allocated_result(::netspeak::service::SearchResponse_Result* result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
    clear_response();
    if (result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
      if (message_arena != submessage_arena) {
        result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
            message_arena, result, submessage_arena);
      }
      set_has_result();
      response_.result_ = result;
    }
    // @@protoc_insertion_point(field_set_allocated:netspeak.service.SearchResponse.result)
  }
  void SearchResponse::set_allocated_error(::netspeak::service::SearchResponse_Error* error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
    clear_response();
    if (error) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
      if (message_arena != submessage_arena) {
        error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
            message_arena, error, submessage_arena);
      }
      set_has_error();
      response_.error_ = error;
    }
    // @@protoc_insertion_point(field_set_allocated:netspeak.service.SearchResponse.error)
  }
  SearchResponse::SearchResponse()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.SearchResponse)
  }
  SearchResponse::SearchResponse(const SearchResponse& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    clear_has_response();
    switch (from.response_case()) {
      case kResult: {
        _internal_mutable_result()->::netspeak::service::SearchResponse_Result::MergeFrom(from._internal_result());
        break;
      }
      case kError: {
        _internal_mutable_error()->::netspeak::service::SearchResponse_Error::MergeFrom(from._internal_error());
        break;
      }
      case RESPONSE_NOT_SET: {
        break;
      }
    }
    // @@protoc_insertion_point(copy_constructor:netspeak.service.SearchResponse)
  }
  
  void SearchResponse::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SearchResponse_NetspeakService_2eproto.base);
    clear_has_response();
  }
  
  SearchResponse::~SearchResponse() {
    // @@protoc_insertion_point(destructor:netspeak.service.SearchResponse)
    SharedDtor();
  }
  
  void SearchResponse::SharedDtor() {
    if (has_response()) {
      clear_response();
    }
  }
  
  void SearchResponse::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const SearchResponse& SearchResponse::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_SearchResponse_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void SearchResponse::clear_response() {
  // @@protoc_insertion_point(one_of_clear_start:netspeak.service.SearchResponse)
    switch (response_case()) {
      case kResult: {
        delete response_.result_;
        break;
      }
      case kError: {
        delete response_.error_;
        break;
      }
      case RESPONSE_NOT_SET: {
        break;
      }
    }
    _oneof_case_[0] = RESPONSE_NOT_SET;
  }
  
  
  void SearchResponse::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.SearchResponse)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    clear_response();
    _internal_metadata_.Clear();
  }
  
  const char* SearchResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // .netspeak.service.SearchResponse.Result result = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
            ptr = ctx->ParseMessage(_internal_mutable_result(), ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // .netspeak.service.SearchResponse.Error error = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
            ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* SearchResponse::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.SearchResponse)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // .netspeak.service.SearchResponse.Result result = 1;
    if (_internal_has_result()) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          1, _Internal::result(this), target, stream);
    }
  
    // .netspeak.service.SearchResponse.Error error = 2;
    if (_internal_has_error()) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          2, _Internal::error(this), target, stream);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.SearchResponse)
    return target;
  }
  
  size_t SearchResponse::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.SearchResponse)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    switch (response_case()) {
      // .netspeak.service.SearchResponse.Result result = 1;
      case kResult: {
        total_size += 1 +
          ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
            *response_.result_);
        break;
      }
      // .netspeak.service.SearchResponse.Error error = 2;
      case kError: {
        total_size += 1 +
          ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
            *response_.error_);
        break;
      }
      case RESPONSE_NOT_SET: {
        break;
      }
    }
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void SearchResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.SearchResponse)
    GOOGLE_DCHECK_NE(&from, this);
    const SearchResponse* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SearchResponse>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.SearchResponse)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.SearchResponse)
      MergeFrom(*source);
    }
  }
  
  void SearchResponse::MergeFrom(const SearchResponse& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.SearchResponse)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    switch (from.response_case()) {
      case kResult: {
        _internal_mutable_result()->::netspeak::service::SearchResponse_Result::MergeFrom(from._internal_result());
        break;
      }
      case kError: {
        _internal_mutable_error()->::netspeak::service::SearchResponse_Error::MergeFrom(from._internal_error());
        break;
      }
      case RESPONSE_NOT_SET: {
        break;
      }
    }
  }
  
  void SearchResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.SearchResponse)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void SearchResponse::CopyFrom(const SearchResponse& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.SearchResponse)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool SearchResponse::IsInitialized() const {
    return true;
  }
  
  void SearchResponse::InternalSwap(SearchResponse* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    swap(response_, other->response_);
    swap(_oneof_case_[0], other->_oneof_case_[0]);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata SearchResponse::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void CorporaRequest::InitAsDefaultInstance() {
  }
  class CorporaRequest::_Internal {
   public:
  };
  
  CorporaRequest::CorporaRequest()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.CorporaRequest)
  }
  CorporaRequest::CorporaRequest(const CorporaRequest& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    // @@protoc_insertion_point(copy_constructor:netspeak.service.CorporaRequest)
  }
  
  void CorporaRequest::SharedCtor() {
  }
  
  CorporaRequest::~CorporaRequest() {
    // @@protoc_insertion_point(destructor:netspeak.service.CorporaRequest)
    SharedDtor();
  }
  
  void CorporaRequest::SharedDtor() {
  }
  
  void CorporaRequest::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const CorporaRequest& CorporaRequest::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_CorporaRequest_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void CorporaRequest::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.CorporaRequest)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    _internal_metadata_.Clear();
  }
  
  const char* CorporaRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* CorporaRequest::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.CorporaRequest)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.CorporaRequest)
    return target;
  }
  
  size_t CorporaRequest::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.CorporaRequest)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void CorporaRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.CorporaRequest)
    GOOGLE_DCHECK_NE(&from, this);
    const CorporaRequest* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<CorporaRequest>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.CorporaRequest)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.CorporaRequest)
      MergeFrom(*source);
    }
  }
  
  void CorporaRequest::MergeFrom(const CorporaRequest& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.CorporaRequest)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
  }
  
  void CorporaRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.CorporaRequest)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void CorporaRequest::CopyFrom(const CorporaRequest& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.CorporaRequest)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool CorporaRequest::IsInitialized() const {
    return true;
  }
  
  void CorporaRequest::InternalSwap(CorporaRequest* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata CorporaRequest::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void Corpus::InitAsDefaultInstance() {
  }
  class Corpus::_Internal {
   public:
  };
  
  Corpus::Corpus()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.Corpus)
  }
  Corpus::Corpus(const Corpus& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    key_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (!from._internal_key().empty()) {
      key_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.key_);
    }
    name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (!from._internal_name().empty()) {
      name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
    }
    language_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    if (!from._internal_language().empty()) {
      language_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.language_);
    }
    // @@protoc_insertion_point(copy_constructor:netspeak.service.Corpus)
  }
  
  void Corpus::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Corpus_NetspeakService_2eproto.base);
    key_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    language_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  
  Corpus::~Corpus() {
    // @@protoc_insertion_point(destructor:netspeak.service.Corpus)
    SharedDtor();
  }
  
  void Corpus::SharedDtor() {
    key_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    language_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  
  void Corpus::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const Corpus& Corpus::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Corpus_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void Corpus::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.Corpus)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    key_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    name_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    language_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
    _internal_metadata_.Clear();
  }
  
  const char* Corpus::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // string key = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
            auto str = _internal_mutable_key();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.Corpus.key"));
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // string name = 2;
        case 2:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
            auto str = _internal_mutable_name();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.Corpus.name"));
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        // string language = 3;
        case 3:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
            auto str = _internal_mutable_language();
            ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "netspeak.service.Corpus.language"));
            CHK_(ptr);
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* Corpus::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.Corpus)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // string key = 1;
    if (this->key().size() > 0) {
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        this->_internal_key().data(), static_cast<int>(this->_internal_key().length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.Corpus.key");
      target = stream->WriteStringMaybeAliased(
          1, this->_internal_key(), target);
    }
  
    // string name = 2;
    if (this->name().size() > 0) {
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.Corpus.name");
      target = stream->WriteStringMaybeAliased(
          2, this->_internal_name(), target);
    }
  
    // string language = 3;
    if (this->language().size() > 0) {
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        this->_internal_language().data(), static_cast<int>(this->_internal_language().length()),
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
        "netspeak.service.Corpus.language");
      target = stream->WriteStringMaybeAliased(
          3, this->_internal_language(), target);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.Corpus)
    return target;
  }
  
  size_t Corpus::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.Corpus)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // string key = 1;
    if (this->key().size() > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_key());
    }
  
    // string name = 2;
    if (this->name().size() > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }
  
    // string language = 3;
    if (this->language().size() > 0) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_language());
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void Corpus::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.Corpus)
    GOOGLE_DCHECK_NE(&from, this);
    const Corpus* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<Corpus>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.Corpus)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.Corpus)
      MergeFrom(*source);
    }
  }
  
  void Corpus::MergeFrom(const Corpus& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.Corpus)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    if (from.key().size() > 0) {
  
      key_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.key_);
    }
    if (from.name().size() > 0) {
  
      name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
    }
    if (from.language().size() > 0) {
  
      language_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.language_);
    }
  }
  
  void Corpus::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.Corpus)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void Corpus::CopyFrom(const Corpus& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.Corpus)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool Corpus::IsInitialized() const {
    return true;
  }
  
  void Corpus::InternalSwap(Corpus* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    key_.Swap(&other->key_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
    language_.Swap(&other->language_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata Corpus::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // ===================================================================
  
  void CorporaResponse::InitAsDefaultInstance() {
  }
  class CorporaResponse::_Internal {
   public:
  };
  
  CorporaResponse::CorporaResponse()
    : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
    SharedCtor();
    // @@protoc_insertion_point(constructor:netspeak.service.CorporaResponse)
  }
  CorporaResponse::CorporaResponse(const CorporaResponse& from)
    : ::PROTOBUF_NAMESPACE_ID::Message(),
        _internal_metadata_(nullptr),
        corpora_(from.corpora_) {
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    // @@protoc_insertion_point(copy_constructor:netspeak.service.CorporaResponse)
  }
  
  void CorporaResponse::SharedCtor() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_CorporaResponse_NetspeakService_2eproto.base);
  }
  
  CorporaResponse::~CorporaResponse() {
    // @@protoc_insertion_point(destructor:netspeak.service.CorporaResponse)
    SharedDtor();
  }
  
  void CorporaResponse::SharedDtor() {
  }
  
  void CorporaResponse::SetCachedSize(int size) const {
    _cached_size_.Set(size);
  }
  const CorporaResponse& CorporaResponse::default_instance() {
    ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_CorporaResponse_NetspeakService_2eproto.base);
    return *internal_default_instance();
  }
  
  
  void CorporaResponse::Clear() {
  // @@protoc_insertion_point(message_clear_start:netspeak.service.CorporaResponse)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    corpora_.Clear();
    _internal_metadata_.Clear();
  }
  
  const char* CorporaResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
  #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
    while (!ctx->Done(&ptr)) {
      ::PROTOBUF_NAMESPACE_ID::uint32 tag;
      ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
      CHK_(ptr);
      switch (tag >> 3) {
        // repeated .netspeak.service.Corpus corpora = 1;
        case 1:
          if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
            ptr -= 1;
            do {
              ptr += 1;
              ptr = ctx->ParseMessage(_internal_add_corpora(), ptr);
              CHK_(ptr);
              if (!ctx->DataAvailable(ptr)) break;
            } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
          } else goto handle_unusual;
          continue;
        default: {
        handle_unusual:
          if ((tag & 7) == 4 || tag == 0) {
            ctx->SetLastTag(tag);
            goto success;
          }
          ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
          CHK_(ptr != nullptr);
          continue;
        }
      }  // switch
    }  // while
  success:
    return ptr;
  failure:
    ptr = nullptr;
    goto success;
  #undef CHK_
  }
  
  ::PROTOBUF_NAMESPACE_ID::uint8* CorporaResponse::_InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
    // @@protoc_insertion_point(serialize_to_array_start:netspeak.service.CorporaResponse)
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    // repeated .netspeak.service.Corpus corpora = 1;
    for (unsigned int i = 0,
        n = static_cast<unsigned int>(this->_internal_corpora_size()); i < n; i++) {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, this->_internal_corpora(i), target, stream);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
          _internal_metadata_.unknown_fields(), target, stream);
    }
    // @@protoc_insertion_point(serialize_to_array_end:netspeak.service.CorporaResponse)
    return target;
  }
  
  size_t CorporaResponse::ByteSizeLong() const {
  // @@protoc_insertion_point(message_byte_size_start:netspeak.service.CorporaResponse)
    size_t total_size = 0;
  
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    // Prevent compiler warnings about cached_has_bits being unused
    (void) cached_has_bits;
  
    // repeated .netspeak.service.Corpus corpora = 1;
    total_size += 1UL * this->_internal_corpora_size();
    for (const auto& msg : this->corpora_) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
    }
  
    if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
      return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
          _internal_metadata_, total_size, &_cached_size_);
    }
    int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
    SetCachedSize(cached_size);
    return total_size;
  }
  
  void CorporaResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_merge_from_start:netspeak.service.CorporaResponse)
    GOOGLE_DCHECK_NE(&from, this);
    const CorporaResponse* source =
        ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<CorporaResponse>(
            &from);
    if (source == nullptr) {
    // @@protoc_insertion_point(generalized_merge_from_cast_fail:netspeak.service.CorporaResponse)
      ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
    } else {
    // @@protoc_insertion_point(generalized_merge_from_cast_success:netspeak.service.CorporaResponse)
      MergeFrom(*source);
    }
  }
  
  void CorporaResponse::MergeFrom(const CorporaResponse& from) {
  // @@protoc_insertion_point(class_specific_merge_from_start:netspeak.service.CorporaResponse)
    GOOGLE_DCHECK_NE(&from, this);
    _internal_metadata_.MergeFrom(from._internal_metadata_);
    ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
    (void) cached_has_bits;
  
    corpora_.MergeFrom(from.corpora_);
  }
  
  void CorporaResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  // @@protoc_insertion_point(generalized_copy_from_start:netspeak.service.CorporaResponse)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  void CorporaResponse::CopyFrom(const CorporaResponse& from) {
  // @@protoc_insertion_point(class_specific_copy_from_start:netspeak.service.CorporaResponse)
    if (&from == this) return;
    Clear();
    MergeFrom(from);
  }
  
  bool CorporaResponse::IsInitialized() const {
    return true;
  }
  
  void CorporaResponse::InternalSwap(CorporaResponse* other) {
    using std::swap;
    _internal_metadata_.Swap(&other->_internal_metadata_);
    corpora_.InternalSwap(&other->corpora_);
  }
  
  ::PROTOBUF_NAMESPACE_ID::Metadata CorporaResponse::GetMetadata() const {
    return GetMetadataStatic();
  }
  
  
  // @@protoc_insertion_point(namespace_scope)
  }  // namespace service
  }  // namespace netspeak
  PROTOBUF_NAMESPACE_OPEN
  template<> PROTOBUF_NOINLINE ::netspeak::service::SearchRequest* Arena::CreateMaybeMessage< ::netspeak::service::SearchRequest >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::SearchRequest >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::PhraseConstraints* Arena::CreateMaybeMessage< ::netspeak::service::PhraseConstraints >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::PhraseConstraints >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::Phrase_Word* Arena::CreateMaybeMessage< ::netspeak::service::Phrase_Word >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::Phrase_Word >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::Phrase* Arena::CreateMaybeMessage< ::netspeak::service::Phrase >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::Phrase >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::SearchResponse_Result* Arena::CreateMaybeMessage< ::netspeak::service::SearchResponse_Result >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::SearchResponse_Result >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::SearchResponse_Error* Arena::CreateMaybeMessage< ::netspeak::service::SearchResponse_Error >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::SearchResponse_Error >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::SearchResponse* Arena::CreateMaybeMessage< ::netspeak::service::SearchResponse >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::SearchResponse >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::CorporaRequest* Arena::CreateMaybeMessage< ::netspeak::service::CorporaRequest >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::CorporaRequest >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::Corpus* Arena::CreateMaybeMessage< ::netspeak::service::Corpus >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::Corpus >(arena);
  }
  template<> PROTOBUF_NOINLINE ::netspeak::service::CorporaResponse* Arena::CreateMaybeMessage< ::netspeak::service::CorporaResponse >(Arena* arena) {
    return Arena::CreateInternal< ::netspeak::service::CorporaResponse >(arena);
  }
  PROTOBUF_NAMESPACE_CLOSE
  
  // @@protoc_insertion_point(global_scope)
  #include <google/protobuf/port_undef.inc>
  