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

#ifndef GOOGLE_PROTOBUF_INCLUDED_tulip_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_tulip_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>

#include "google/protobuf/port_def.inc"
#if PROTOBUF_VERSION < 4024000
#error "This file was generated by a newer version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please update"
#error "your headers."
#endif  // PROTOBUF_VERSION

#if 4024003 < PROTOBUF_MIN_PROTOC_VERSION
#error "This file was generated by an older version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please"
#error "regenerate this file with a newer version of protoc."
#endif  // PROTOBUF_MIN_PROTOC_VERSION
#include "google/protobuf/port_undef.inc"
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_tulip_2eproto

namespace google {
namespace protobuf {
namespace internal {
class AnyMetadata;
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_tulip_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_tulip_2eproto;
namespace mint {
namespace tulip {
namespace v1 {
class SearchRequest;
struct SearchRequestDefaultTypeInternal;
extern SearchRequestDefaultTypeInternal _SearchRequest_default_instance_;
class SearchRequest_Page;
struct SearchRequest_PageDefaultTypeInternal;
extern SearchRequest_PageDefaultTypeInternal _SearchRequest_Page_default_instance_;
class SearchResponse;
struct SearchResponseDefaultTypeInternal;
extern SearchResponseDefaultTypeInternal _SearchResponse_default_instance_;
class SearchResponse_Item;
struct SearchResponse_ItemDefaultTypeInternal;
extern SearchResponse_ItemDefaultTypeInternal _SearchResponse_Item_default_instance_;
}  // namespace v1
}  // namespace tulip
}  // namespace mint
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace mint {
namespace tulip {
namespace v1 {

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


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

class SearchRequest_Page final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mint.tulip.v1.SearchRequest.Page) */ {
 public:
  inline SearchRequest_Page() : SearchRequest_Page(nullptr) {}
  ~SearchRequest_Page() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR SearchRequest_Page(::google::protobuf::internal::ConstantInitialized);

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

  inline SearchRequest_Page& operator=(const SearchRequest_Page& from) {
    CopyFrom(from);
    return *this;
  }
  inline SearchRequest_Page& operator=(SearchRequest_Page&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SearchRequest_Page& default_instance() {
    return *internal_default_instance();
  }
  static inline const SearchRequest_Page* internal_default_instance() {
    return reinterpret_cast<const SearchRequest_Page*>(
               &_SearchRequest_Page_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(SearchRequest_Page& a, SearchRequest_Page& b) {
    a.Swap(&b);
  }
  inline void Swap(SearchRequest_Page* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SearchRequest_Page* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  SearchRequest_Page* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<SearchRequest_Page>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SearchRequest_Page& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const SearchRequest_Page& from) {
    SearchRequest_Page::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SearchRequest_Page* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "mint.tulip.v1.SearchRequest.Page";
  }
  protected:
  explicit SearchRequest_Page(::google::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::google::protobuf::Message::ClassData*GetClassData() const final;

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kIndexFieldNumber = 1,
    kSizeFieldNumber = 2,
  };
  // int32 index = 1;
  void clear_index() ;
  ::int32_t index() const;
  void set_index(::int32_t value);

  private:
  ::int32_t _internal_index() const;
  void _internal_set_index(::int32_t value);

  public:
  // int32 size = 2;
  void clear_size() ;
  ::int32_t size() const;
  void set_size(::int32_t value);

  private:
  ::int32_t _internal_size() const;
  void _internal_set_size(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mint.tulip.v1.SearchRequest.Page)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2, 0, 0, 2> _table_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::int32_t index_;
    ::int32_t size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tulip_2eproto;
};// -------------------------------------------------------------------

class SearchRequest final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mint.tulip.v1.SearchRequest) */ {
 public:
  inline SearchRequest() : SearchRequest(nullptr) {}
  ~SearchRequest() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR SearchRequest(::google::protobuf::internal::ConstantInitialized);

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

  inline SearchRequest& operator=(const SearchRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline SearchRequest& operator=(SearchRequest&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SearchRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const SearchRequest* internal_default_instance() {
    return reinterpret_cast<const SearchRequest*>(
               &_SearchRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(SearchRequest& a, SearchRequest& b) {
    a.Swap(&b);
  }
  inline void Swap(SearchRequest* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SearchRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  SearchRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<SearchRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SearchRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const SearchRequest& from) {
    SearchRequest::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SearchRequest* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "mint.tulip.v1.SearchRequest";
  }
  protected:
  explicit SearchRequest(::google::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::google::protobuf::Message::ClassData*GetClassData() const final;

  ::google::protobuf::Metadata GetMetadata() const final;

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

  typedef SearchRequest_Page Page;

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

  enum : int {
    kKeywordsFieldNumber = 1,
    kPageFieldNumber = 99,
    kBookFieldNumber = 2,
  };
  // repeated string keywords = 1;
  int keywords_size() const;
  private:
  int _internal_keywords_size() const;

  public:
  void clear_keywords() ;
  const std::string& keywords(int index) const;
  std::string* mutable_keywords(int index);
  void set_keywords(int index, const std::string& value);
  void set_keywords(int index, std::string&& value);
  void set_keywords(int index, const char* value);
  void set_keywords(int index, const char* value, std::size_t size);
  void set_keywords(int index, absl::string_view value);
  std::string* add_keywords();
  void add_keywords(const std::string& value);
  void add_keywords(std::string&& value);
  void add_keywords(const char* value);
  void add_keywords(const char* value, std::size_t size);
  void add_keywords(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& keywords() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_keywords();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_keywords() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_keywords();

  public:
  // optional .mint.tulip.v1.SearchRequest.Page page = 99;
  bool has_page() const;
  void clear_page() ;
  const ::mint::tulip::v1::SearchRequest_Page& page() const;
  PROTOBUF_NODISCARD ::mint::tulip::v1::SearchRequest_Page* release_page();
  ::mint::tulip::v1::SearchRequest_Page* mutable_page();
  void set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value);
  void unsafe_arena_set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value);
  ::mint::tulip::v1::SearchRequest_Page* unsafe_arena_release_page();

  private:
  const ::mint::tulip::v1::SearchRequest_Page& _internal_page() const;
  ::mint::tulip::v1::SearchRequest_Page* _internal_mutable_page();

  public:
  // int32 book = 2;
  void clear_book() ;
  ::int32_t book() const;
  void set_book(::int32_t value);

  private:
  ::int32_t _internal_book() const;
  void _internal_set_book(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mint.tulip.v1.SearchRequest)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3, 1, 44, 7> _table_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<std::string> keywords_;
    ::mint::tulip::v1::SearchRequest_Page* page_;
    ::int32_t book_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tulip_2eproto;
};// -------------------------------------------------------------------

class SearchResponse_Item final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mint.tulip.v1.SearchResponse.Item) */ {
 public:
  inline SearchResponse_Item() : SearchResponse_Item(nullptr) {}
  ~SearchResponse_Item() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR SearchResponse_Item(::google::protobuf::internal::ConstantInitialized);

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

  inline SearchResponse_Item& operator=(const SearchResponse_Item& from) {
    CopyFrom(from);
    return *this;
  }
  inline SearchResponse_Item& operator=(SearchResponse_Item&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SearchResponse_Item& default_instance() {
    return *internal_default_instance();
  }
  static inline const SearchResponse_Item* internal_default_instance() {
    return reinterpret_cast<const SearchResponse_Item*>(
               &_SearchResponse_Item_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(SearchResponse_Item& a, SearchResponse_Item& b) {
    a.Swap(&b);
  }
  inline void Swap(SearchResponse_Item* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SearchResponse_Item* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  SearchResponse_Item* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<SearchResponse_Item>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SearchResponse_Item& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const SearchResponse_Item& from) {
    SearchResponse_Item::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SearchResponse_Item* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "mint.tulip.v1.SearchResponse.Item";
  }
  protected:
  explicit SearchResponse_Item(::google::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::google::protobuf::Message::ClassData*GetClassData() const final;

  ::google::protobuf::Metadata GetMetadata() const final;

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

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

  enum : int {
    kHighlightFieldNumber = 2,
    kContentFieldNumber = 5,
    kRankFieldNumber = 1,
    kBookFieldNumber = 3,
    kParagraphFieldNumber = 4,
  };
  // string highlight = 2;
  void clear_highlight() ;
  const std::string& highlight() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_highlight(Arg_&& arg, Args_... args);
  std::string* mutable_highlight();
  PROTOBUF_NODISCARD std::string* release_highlight();
  void set_allocated_highlight(std::string* ptr);

  private:
  const std::string& _internal_highlight() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_highlight(
      const std::string& value);
  std::string* _internal_mutable_highlight();

  public:
  // string content = 5;
  void clear_content() ;
  const std::string& content() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_content(Arg_&& arg, Args_... args);
  std::string* mutable_content();
  PROTOBUF_NODISCARD std::string* release_content();
  void set_allocated_content(std::string* ptr);

  private:
  const std::string& _internal_content() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_content(
      const std::string& value);
  std::string* _internal_mutable_content();

  public:
  // int32 rank = 1;
  void clear_rank() ;
  ::int32_t rank() const;
  void set_rank(::int32_t value);

  private:
  ::int32_t _internal_rank() const;
  void _internal_set_rank(::int32_t value);

  public:
  // int32 book = 3;
  void clear_book() ;
  ::int32_t book() const;
  void set_book(::int32_t value);

  private:
  ::int32_t _internal_book() const;
  void _internal_set_book(::int32_t value);

  public:
  // int32 paragraph = 4;
  void clear_paragraph() ;
  ::int32_t paragraph() const;
  void set_paragraph(::int32_t value);

  private:
  ::int32_t _internal_paragraph() const;
  void _internal_set_paragraph(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mint.tulip.v1.SearchResponse.Item)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 5, 0, 58, 2> _table_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::google::protobuf::internal::ArenaStringPtr highlight_;
    ::google::protobuf::internal::ArenaStringPtr content_;
    ::int32_t rank_;
    ::int32_t book_;
    ::int32_t paragraph_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tulip_2eproto;
};// -------------------------------------------------------------------

class SearchResponse final :
    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mint.tulip.v1.SearchResponse) */ {
 public:
  inline SearchResponse() : SearchResponse(nullptr) {}
  ~SearchResponse() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR SearchResponse(::google::protobuf::internal::ConstantInitialized);

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

  inline SearchResponse& operator=(const SearchResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline SearchResponse& operator=(SearchResponse&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SearchResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const SearchResponse* internal_default_instance() {
    return reinterpret_cast<const SearchResponse*>(
               &_SearchResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(SearchResponse& a, SearchResponse& b) {
    a.Swap(&b);
  }
  inline void Swap(SearchResponse* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SearchResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  SearchResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<SearchResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SearchResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom( const SearchResponse& from) {
    SearchResponse::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::google::protobuf::Message& to_msg, const ::google::protobuf::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SearchResponse* other);

  private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "mint.tulip.v1.SearchResponse";
  }
  protected:
  explicit SearchResponse(::google::protobuf::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::google::protobuf::Message::ClassData*GetClassData() const final;

  ::google::protobuf::Metadata GetMetadata() const final;

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

  typedef SearchResponse_Item Item;

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

  enum : int {
    kItemsFieldNumber = 1,
    kPageFieldNumber = 98,
    kTotalFieldNumber = 99,
  };
  // repeated .mint.tulip.v1.SearchResponse.Item items = 1;
  int items_size() const;
  private:
  int _internal_items_size() const;

  public:
  void clear_items() ;
  ::mint::tulip::v1::SearchResponse_Item* mutable_items(int index);
  ::google::protobuf::RepeatedPtrField< ::mint::tulip::v1::SearchResponse_Item >*
      mutable_items();
  private:
  const ::google::protobuf::RepeatedPtrField<::mint::tulip::v1::SearchResponse_Item>& _internal_items() const;
  ::google::protobuf::RepeatedPtrField<::mint::tulip::v1::SearchResponse_Item>* _internal_mutable_items();
  public:
  const ::mint::tulip::v1::SearchResponse_Item& items(int index) const;
  ::mint::tulip::v1::SearchResponse_Item* add_items();
  const ::google::protobuf::RepeatedPtrField< ::mint::tulip::v1::SearchResponse_Item >&
      items() const;
  // .mint.tulip.v1.SearchRequest.Page page = 98;
  bool has_page() const;
  void clear_page() ;
  const ::mint::tulip::v1::SearchRequest_Page& page() const;
  PROTOBUF_NODISCARD ::mint::tulip::v1::SearchRequest_Page* release_page();
  ::mint::tulip::v1::SearchRequest_Page* mutable_page();
  void set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value);
  void unsafe_arena_set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value);
  ::mint::tulip::v1::SearchRequest_Page* unsafe_arena_release_page();

  private:
  const ::mint::tulip::v1::SearchRequest_Page& _internal_page() const;
  ::mint::tulip::v1::SearchRequest_Page* _internal_mutable_page();

  public:
  // int32 total = 99;
  void clear_total() ;
  ::int32_t total() const;
  void set_total(::int32_t value);

  private:
  ::int32_t _internal_total() const;
  void _internal_set_total(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mint.tulip.v1.SearchResponse)
 private:
  class _Internal;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3, 2, 0, 7> _table_;
  template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::mint::tulip::v1::SearchResponse_Item > items_;
    ::mint::tulip::v1::SearchRequest_Page* page_;
    ::int32_t total_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tulip_2eproto;
};

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




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


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

// SearchRequest_Page

// int32 index = 1;
inline void SearchRequest_Page::clear_index() {
  _impl_.index_ = 0;
}
inline ::int32_t SearchRequest_Page::index() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchRequest.Page.index)
  return _internal_index();
}
inline void SearchRequest_Page::set_index(::int32_t value) {
  _internal_set_index(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchRequest.Page.index)
}
inline ::int32_t SearchRequest_Page::_internal_index() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.index_;
}
inline void SearchRequest_Page::_internal_set_index(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.index_ = value;
}

// int32 size = 2;
inline void SearchRequest_Page::clear_size() {
  _impl_.size_ = 0;
}
inline ::int32_t SearchRequest_Page::size() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchRequest.Page.size)
  return _internal_size();
}
inline void SearchRequest_Page::set_size(::int32_t value) {
  _internal_set_size(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchRequest.Page.size)
}
inline ::int32_t SearchRequest_Page::_internal_size() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.size_;
}
inline void SearchRequest_Page::_internal_set_size(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.size_ = value;
}

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

// SearchRequest

// repeated string keywords = 1;
inline int SearchRequest::_internal_keywords_size() const {
  return _internal_keywords().size();
}
inline int SearchRequest::keywords_size() const {
  return _internal_keywords_size();
}
inline void SearchRequest::clear_keywords() {
  _internal_mutable_keywords()->Clear();
}
inline std::string* SearchRequest::add_keywords() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_keywords()->Add();
  // @@protoc_insertion_point(field_add_mutable:mint.tulip.v1.SearchRequest.keywords)
  return _s;
}
inline const std::string& SearchRequest::keywords(int index) const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchRequest.keywords)
  return _internal_keywords().Get(index);
}
inline std::string* SearchRequest::mutable_keywords(int index) {
  // @@protoc_insertion_point(field_mutable:mint.tulip.v1.SearchRequest.keywords)
  return _internal_mutable_keywords()->Mutable(index);
}
inline void SearchRequest::set_keywords(int index, const std::string& value) {
  _internal_mutable_keywords()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::set_keywords(int index, std::string&& value) {
  _internal_mutable_keywords()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::set_keywords(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_keywords()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::set_keywords(int index, const char* value,
                              std::size_t size) {
  _internal_mutable_keywords()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::set_keywords(int index, absl::string_view value) {
  _internal_mutable_keywords()->Mutable(index)->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_set_string_piece:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::add_keywords(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_keywords()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::add_keywords(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_keywords()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::add_keywords(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_keywords()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::add_keywords(const char* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_keywords()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:mint.tulip.v1.SearchRequest.keywords)
}
inline void SearchRequest::add_keywords(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_keywords()->Add()->assign(value.data(), value.size());
  // @@protoc_insertion_point(field_add_string_piece:mint.tulip.v1.SearchRequest.keywords)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
SearchRequest::keywords() const {
  // @@protoc_insertion_point(field_list:mint.tulip.v1.SearchRequest.keywords)
  return _internal_keywords();
}
inline ::google::protobuf::RepeatedPtrField<std::string>* SearchRequest::mutable_keywords() {
  // @@protoc_insertion_point(field_mutable_list:mint.tulip.v1.SearchRequest.keywords)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_keywords();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
SearchRequest::_internal_keywords() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.keywords_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
SearchRequest::_internal_mutable_keywords() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.keywords_;
}

// int32 book = 2;
inline void SearchRequest::clear_book() {
  _impl_.book_ = 0;
}
inline ::int32_t SearchRequest::book() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchRequest.book)
  return _internal_book();
}
inline void SearchRequest::set_book(::int32_t value) {
  _internal_set_book(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchRequest.book)
}
inline ::int32_t SearchRequest::_internal_book() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.book_;
}
inline void SearchRequest::_internal_set_book(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.book_ = value;
}

// optional .mint.tulip.v1.SearchRequest.Page page = 99;
inline bool SearchRequest::has_page() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.page_ != nullptr);
  return value;
}
inline void SearchRequest::clear_page() {
  if (_impl_.page_ != nullptr) _impl_.page_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::mint::tulip::v1::SearchRequest_Page& SearchRequest::_internal_page() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::mint::tulip::v1::SearchRequest_Page* p = _impl_.page_;
  return p != nullptr ? *p : reinterpret_cast<const ::mint::tulip::v1::SearchRequest_Page&>(::mint::tulip::v1::_SearchRequest_Page_default_instance_);
}
inline const ::mint::tulip::v1::SearchRequest_Page& SearchRequest::page() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchRequest.page)
  return _internal_page();
}
inline void SearchRequest::unsafe_arena_set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.page_);
  }
  _impl_.page_ = reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mint.tulip.v1.SearchRequest.page)
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchRequest::release_page() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::mint::tulip::v1::SearchRequest_Page* released = _impl_.page_;
  _impl_.page_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArenaForAllocation() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchRequest::unsafe_arena_release_page() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:mint.tulip.v1.SearchRequest.page)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::mint::tulip::v1::SearchRequest_Page* temp = _impl_.page_;
  _impl_.page_ = nullptr;
  return temp;
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchRequest::_internal_mutable_page() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.page_ == nullptr) {
    auto* p = CreateMaybeMessage<::mint::tulip::v1::SearchRequest_Page>(GetArenaForAllocation());
    _impl_.page_ = reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(p);
  }
  return _impl_.page_;
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchRequest::mutable_page() {
  ::mint::tulip::v1::SearchRequest_Page* _msg = _internal_mutable_page();
  // @@protoc_insertion_point(field_mutable:mint.tulip.v1.SearchRequest.page)
  return _msg;
}
inline void SearchRequest::set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value) {
  ::google::protobuf::Arena* message_arena = GetArenaForAllocation();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(_impl_.page_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena =
        ::google::protobuf::Arena::InternalGetOwningArena(reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(value));
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.page_ = reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(value);
  // @@protoc_insertion_point(field_set_allocated:mint.tulip.v1.SearchRequest.page)
}

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

// SearchResponse_Item

// int32 rank = 1;
inline void SearchResponse_Item::clear_rank() {
  _impl_.rank_ = 0;
}
inline ::int32_t SearchResponse_Item::rank() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.Item.rank)
  return _internal_rank();
}
inline void SearchResponse_Item::set_rank(::int32_t value) {
  _internal_set_rank(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchResponse.Item.rank)
}
inline ::int32_t SearchResponse_Item::_internal_rank() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.rank_;
}
inline void SearchResponse_Item::_internal_set_rank(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.rank_ = value;
}

// string highlight = 2;
inline void SearchResponse_Item::clear_highlight() {
  _impl_.highlight_.ClearToEmpty();
}
inline const std::string& SearchResponse_Item::highlight() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.Item.highlight)
  return _internal_highlight();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void SearchResponse_Item::set_highlight(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.highlight_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchResponse.Item.highlight)
}
inline std::string* SearchResponse_Item::mutable_highlight() {
  std::string* _s = _internal_mutable_highlight();
  // @@protoc_insertion_point(field_mutable:mint.tulip.v1.SearchResponse.Item.highlight)
  return _s;
}
inline const std::string& SearchResponse_Item::_internal_highlight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.highlight_.Get();
}
inline void SearchResponse_Item::_internal_set_highlight(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.highlight_.Set(value, GetArenaForAllocation());
}
inline std::string* SearchResponse_Item::_internal_mutable_highlight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.highlight_.Mutable( GetArenaForAllocation());
}
inline std::string* SearchResponse_Item::release_highlight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:mint.tulip.v1.SearchResponse.Item.highlight)
  return _impl_.highlight_.Release();
}
inline void SearchResponse_Item::set_allocated_highlight(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.highlight_.SetAllocated(value, GetArenaForAllocation());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.highlight_.IsDefault()) {
          _impl_.highlight_.Set("", GetArenaForAllocation());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:mint.tulip.v1.SearchResponse.Item.highlight)
}

// int32 book = 3;
inline void SearchResponse_Item::clear_book() {
  _impl_.book_ = 0;
}
inline ::int32_t SearchResponse_Item::book() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.Item.book)
  return _internal_book();
}
inline void SearchResponse_Item::set_book(::int32_t value) {
  _internal_set_book(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchResponse.Item.book)
}
inline ::int32_t SearchResponse_Item::_internal_book() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.book_;
}
inline void SearchResponse_Item::_internal_set_book(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.book_ = value;
}

// int32 paragraph = 4;
inline void SearchResponse_Item::clear_paragraph() {
  _impl_.paragraph_ = 0;
}
inline ::int32_t SearchResponse_Item::paragraph() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.Item.paragraph)
  return _internal_paragraph();
}
inline void SearchResponse_Item::set_paragraph(::int32_t value) {
  _internal_set_paragraph(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchResponse.Item.paragraph)
}
inline ::int32_t SearchResponse_Item::_internal_paragraph() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.paragraph_;
}
inline void SearchResponse_Item::_internal_set_paragraph(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.paragraph_ = value;
}

// string content = 5;
inline void SearchResponse_Item::clear_content() {
  _impl_.content_.ClearToEmpty();
}
inline const std::string& SearchResponse_Item::content() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.Item.content)
  return _internal_content();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void SearchResponse_Item::set_content(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.content_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchResponse.Item.content)
}
inline std::string* SearchResponse_Item::mutable_content() {
  std::string* _s = _internal_mutable_content();
  // @@protoc_insertion_point(field_mutable:mint.tulip.v1.SearchResponse.Item.content)
  return _s;
}
inline const std::string& SearchResponse_Item::_internal_content() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.content_.Get();
}
inline void SearchResponse_Item::_internal_set_content(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.content_.Set(value, GetArenaForAllocation());
}
inline std::string* SearchResponse_Item::_internal_mutable_content() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  return _impl_.content_.Mutable( GetArenaForAllocation());
}
inline std::string* SearchResponse_Item::release_content() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:mint.tulip.v1.SearchResponse.Item.content)
  return _impl_.content_.Release();
}
inline void SearchResponse_Item::set_allocated_content(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.content_.SetAllocated(value, GetArenaForAllocation());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.content_.IsDefault()) {
          _impl_.content_.Set("", GetArenaForAllocation());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:mint.tulip.v1.SearchResponse.Item.content)
}

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

// SearchResponse

// repeated .mint.tulip.v1.SearchResponse.Item items = 1;
inline int SearchResponse::_internal_items_size() const {
  return _internal_items().size();
}
inline int SearchResponse::items_size() const {
  return _internal_items_size();
}
inline void SearchResponse::clear_items() {
  _internal_mutable_items()->Clear();
}
inline ::mint::tulip::v1::SearchResponse_Item* SearchResponse::mutable_items(int index) {
  // @@protoc_insertion_point(field_mutable:mint.tulip.v1.SearchResponse.items)
  return _internal_mutable_items()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField< ::mint::tulip::v1::SearchResponse_Item >*
SearchResponse::mutable_items() {
  // @@protoc_insertion_point(field_mutable_list:mint.tulip.v1.SearchResponse.items)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_items();
}
inline const ::mint::tulip::v1::SearchResponse_Item& SearchResponse::items(int index) const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.items)
    return _internal_items().Get(index);
}
inline ::mint::tulip::v1::SearchResponse_Item* SearchResponse::add_items() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::mint::tulip::v1::SearchResponse_Item* _add = _internal_mutable_items()->Add();
  // @@protoc_insertion_point(field_add:mint.tulip.v1.SearchResponse.items)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField< ::mint::tulip::v1::SearchResponse_Item >&
SearchResponse::items() const {
  // @@protoc_insertion_point(field_list:mint.tulip.v1.SearchResponse.items)
  return _internal_items();
}
inline const ::google::protobuf::RepeatedPtrField<::mint::tulip::v1::SearchResponse_Item>&
SearchResponse::_internal_items() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.items_;
}
inline ::google::protobuf::RepeatedPtrField<::mint::tulip::v1::SearchResponse_Item>*
SearchResponse::_internal_mutable_items() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.items_;
}

// .mint.tulip.v1.SearchRequest.Page page = 98;
inline bool SearchResponse::has_page() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.page_ != nullptr);
  return value;
}
inline void SearchResponse::clear_page() {
  if (_impl_.page_ != nullptr) _impl_.page_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::mint::tulip::v1::SearchRequest_Page& SearchResponse::_internal_page() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::mint::tulip::v1::SearchRequest_Page* p = _impl_.page_;
  return p != nullptr ? *p : reinterpret_cast<const ::mint::tulip::v1::SearchRequest_Page&>(::mint::tulip::v1::_SearchRequest_Page_default_instance_);
}
inline const ::mint::tulip::v1::SearchRequest_Page& SearchResponse::page() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.page)
  return _internal_page();
}
inline void SearchResponse::unsafe_arena_set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.page_);
  }
  _impl_.page_ = reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mint.tulip.v1.SearchResponse.page)
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchResponse::release_page() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::mint::tulip::v1::SearchRequest_Page* released = _impl_.page_;
  _impl_.page_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArenaForAllocation() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchResponse::unsafe_arena_release_page() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:mint.tulip.v1.SearchResponse.page)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::mint::tulip::v1::SearchRequest_Page* temp = _impl_.page_;
  _impl_.page_ = nullptr;
  return temp;
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchResponse::_internal_mutable_page() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.page_ == nullptr) {
    auto* p = CreateMaybeMessage<::mint::tulip::v1::SearchRequest_Page>(GetArenaForAllocation());
    _impl_.page_ = reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(p);
  }
  return _impl_.page_;
}
inline ::mint::tulip::v1::SearchRequest_Page* SearchResponse::mutable_page() {
  ::mint::tulip::v1::SearchRequest_Page* _msg = _internal_mutable_page();
  // @@protoc_insertion_point(field_mutable:mint.tulip.v1.SearchResponse.page)
  return _msg;
}
inline void SearchResponse::set_allocated_page(::mint::tulip::v1::SearchRequest_Page* value) {
  ::google::protobuf::Arena* message_arena = GetArenaForAllocation();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(_impl_.page_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena =
        ::google::protobuf::Arena::InternalGetOwningArena(reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(value));
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.page_ = reinterpret_cast<::mint::tulip::v1::SearchRequest_Page*>(value);
  // @@protoc_insertion_point(field_set_allocated:mint.tulip.v1.SearchResponse.page)
}

// int32 total = 99;
inline void SearchResponse::clear_total() {
  _impl_.total_ = 0;
}
inline ::int32_t SearchResponse::total() const {
  // @@protoc_insertion_point(field_get:mint.tulip.v1.SearchResponse.total)
  return _internal_total();
}
inline void SearchResponse::set_total(::int32_t value) {
  _internal_set_total(value);
  // @@protoc_insertion_point(field_set:mint.tulip.v1.SearchResponse.total)
}
inline ::int32_t SearchResponse::_internal_total() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.total_;
}
inline void SearchResponse::_internal_set_total(::int32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ;
  _impl_.total_ = value;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace v1
}  // namespace tulip
}  // namespace mint


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_tulip_2eproto_2epb_2eh
