text: /**
   * Autogenerated by Thrift
   *
   * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
   *  @generated
   */
  #pragma once
  
  #include <thrift/lib/cpp2/gen/module_types_h.h>
  
  
  
  namespace apache {
  namespace thrift {
  namespace tag {
  struct valueType;
  struct valueType;
  struct keyType;
  struct valueType;
  struct name;
  struct name;
  struct name;
  struct name;
  struct underlyingType;
  struct t_primitive;
  struct t_list;
  struct t_set;
  struct t_map;
  struct t_enum;
  struct t_struct;
  struct t_union;
  struct t_typedef;
  struct name;
  struct elements;
  struct id;
  struct type;
  struct name;
  struct is_optional;
  struct name;
  struct fields;
  struct is_union;
  struct name;
  struct fields;
  struct name;
  struct returnType;
  struct arguments;
  struct exceptions;
  struct name;
  struct functions;
  struct parent;
  struct file_name;
  struct enums;
  struct structs;
  struct exceptions;
  struct services;
  } // namespace tag
  namespace detail {
  #ifndef APACHE_THRIFT_ACCESSOR_valueType
  #define APACHE_THRIFT_ACCESSOR_valueType
  APACHE_THRIFT_DEFINE_ACCESSOR(valueType);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_valueType
  #define APACHE_THRIFT_ACCESSOR_valueType
  APACHE_THRIFT_DEFINE_ACCESSOR(valueType);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_keyType
  #define APACHE_THRIFT_ACCESSOR_keyType
  APACHE_THRIFT_DEFINE_ACCESSOR(keyType);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_valueType
  #define APACHE_THRIFT_ACCESSOR_valueType
  APACHE_THRIFT_DEFINE_ACCESSOR(valueType);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_underlyingType
  #define APACHE_THRIFT_ACCESSOR_underlyingType
  APACHE_THRIFT_DEFINE_ACCESSOR(underlyingType);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_primitive
  #define APACHE_THRIFT_ACCESSOR_t_primitive
  APACHE_THRIFT_DEFINE_ACCESSOR(t_primitive);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_list
  #define APACHE_THRIFT_ACCESSOR_t_list
  APACHE_THRIFT_DEFINE_ACCESSOR(t_list);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_set
  #define APACHE_THRIFT_ACCESSOR_t_set
  APACHE_THRIFT_DEFINE_ACCESSOR(t_set);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_map
  #define APACHE_THRIFT_ACCESSOR_t_map
  APACHE_THRIFT_DEFINE_ACCESSOR(t_map);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_enum
  #define APACHE_THRIFT_ACCESSOR_t_enum
  APACHE_THRIFT_DEFINE_ACCESSOR(t_enum);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_struct
  #define APACHE_THRIFT_ACCESSOR_t_struct
  APACHE_THRIFT_DEFINE_ACCESSOR(t_struct);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_union
  #define APACHE_THRIFT_ACCESSOR_t_union
  APACHE_THRIFT_DEFINE_ACCESSOR(t_union);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_t_typedef
  #define APACHE_THRIFT_ACCESSOR_t_typedef
  APACHE_THRIFT_DEFINE_ACCESSOR(t_typedef);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_elements
  #define APACHE_THRIFT_ACCESSOR_elements
  APACHE_THRIFT_DEFINE_ACCESSOR(elements);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_id
  #define APACHE_THRIFT_ACCESSOR_id
  APACHE_THRIFT_DEFINE_ACCESSOR(id);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_type
  #define APACHE_THRIFT_ACCESSOR_type
  APACHE_THRIFT_DEFINE_ACCESSOR(type);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_is_optional
  #define APACHE_THRIFT_ACCESSOR_is_optional
  APACHE_THRIFT_DEFINE_ACCESSOR(is_optional);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_fields
  #define APACHE_THRIFT_ACCESSOR_fields
  APACHE_THRIFT_DEFINE_ACCESSOR(fields);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_is_union
  #define APACHE_THRIFT_ACCESSOR_is_union
  APACHE_THRIFT_DEFINE_ACCESSOR(is_union);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_fields
  #define APACHE_THRIFT_ACCESSOR_fields
  APACHE_THRIFT_DEFINE_ACCESSOR(fields);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_returnType
  #define APACHE_THRIFT_ACCESSOR_returnType
  APACHE_THRIFT_DEFINE_ACCESSOR(returnType);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_arguments
  #define APACHE_THRIFT_ACCESSOR_arguments
  APACHE_THRIFT_DEFINE_ACCESSOR(arguments);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_exceptions
  #define APACHE_THRIFT_ACCESSOR_exceptions
  APACHE_THRIFT_DEFINE_ACCESSOR(exceptions);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_name
  #define APACHE_THRIFT_ACCESSOR_name
  APACHE_THRIFT_DEFINE_ACCESSOR(name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_functions
  #define APACHE_THRIFT_ACCESSOR_functions
  APACHE_THRIFT_DEFINE_ACCESSOR(functions);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_parent
  #define APACHE_THRIFT_ACCESSOR_parent
  APACHE_THRIFT_DEFINE_ACCESSOR(parent);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_file_name
  #define APACHE_THRIFT_ACCESSOR_file_name
  APACHE_THRIFT_DEFINE_ACCESSOR(file_name);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_enums
  #define APACHE_THRIFT_ACCESSOR_enums
  APACHE_THRIFT_DEFINE_ACCESSOR(enums);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_structs
  #define APACHE_THRIFT_ACCESSOR_structs
  APACHE_THRIFT_DEFINE_ACCESSOR(structs);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_exceptions
  #define APACHE_THRIFT_ACCESSOR_exceptions
  APACHE_THRIFT_DEFINE_ACCESSOR(exceptions);
  #endif
  #ifndef APACHE_THRIFT_ACCESSOR_services
  #define APACHE_THRIFT_ACCESSOR_services
  APACHE_THRIFT_DEFINE_ACCESSOR(services);
  #endif
  } // namespace detail
  } // namespace thrift
  } // namespace apache
  
  // BEGIN declare_enums
  namespace apache { namespace thrift { namespace metadata {
  
  enum class ThriftPrimitiveType {
    BOOL = 1,
    BYTE = 2,
    I16 = 3,
    I32 = 4,
    I64 = 5,
    FLOAT = 6,
    DOUBLE = 7,
    BINARY = 8,
    STRING = 9,
    VOID = 10
  };
  
  
  
  
  }}} // apache::thrift::metadata
  namespace std {
  
  
  template<> struct hash<typename ::apache::thrift::metadata::ThriftPrimitiveType> : public apache::thrift::detail::enum_hash<typename ::apache::thrift::metadata::ThriftPrimitiveType> {};
  template<> struct equal_to<typename ::apache::thrift::metadata::ThriftPrimitiveType> : public apache::thrift::detail::enum_equal_to<typename ::apache::thrift::metadata::ThriftPrimitiveType> {};
  
  
  } // std
  
  namespace apache { namespace thrift {
  
  
  template <> struct TEnumDataStorage<::apache::thrift::metadata::ThriftPrimitiveType>;
  
  template <> struct TEnumTraits<::apache::thrift::metadata::ThriftPrimitiveType> {
    using type = ::apache::thrift::metadata::ThriftPrimitiveType;
  
    static constexpr std::size_t const size = 10;
    static folly::Range<type const*> const values;
    static folly::Range<folly::StringPiece const*> const names;
  
    static char const* findName(type value);
    static bool findValue(char const* name, type* out);
  
    static constexpr type min() { return type::BOOL; }
    static constexpr type max() { return type::VOID; }
  };
  
  
  }} // apache::thrift
  
  namespace apache { namespace thrift { namespace metadata {
  
  using _ThriftPrimitiveType_EnumMapFactory = apache::thrift::detail::TEnumMapFactory<ThriftPrimitiveType>;
  extern const _ThriftPrimitiveType_EnumMapFactory::ValuesToNamesMapType _ThriftPrimitiveType_VALUES_TO_NAMES;
  extern const _ThriftPrimitiveType_EnumMapFactory::NamesToValuesMapType _ThriftPrimitiveType_NAMES_TO_VALUES;
  
  }}} // apache::thrift::metadata
  
  // END declare_enums
  // BEGIN struct_indirection
  
  // END struct_indirection
  // BEGIN forward_declare
  namespace apache { namespace thrift { namespace metadata {
  class ThriftListType;
  class ThriftSetType;
  class ThriftMapType;
  class ThriftEnumType;
  class ThriftStructType;
  class ThriftUnionType;
  class ThriftTypedefType;
  class ThriftType;
  class ThriftEnum;
  class ThriftField;
  class ThriftStruct;
  class ThriftException;
  class ThriftFunction;
  class ThriftService;
  class ThriftMetadata;
  }}} // apache::thrift::metadata
  // END forward_declare
  // BEGIN typedefs
  
  // END typedefs
  // BEGIN hash_and_equal_to
  // END hash_and_equal_to
  namespace apache { namespace thrift { namespace metadata {
  class ThriftListType final : private apache::thrift::detail::st::ComparisonOperators<ThriftListType> {
   public:
  
    ThriftListType() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftListType(apache::thrift::FragileConstructor, std::unique_ptr< ::apache::thrift::metadata::ThriftType> valueType__arg);
  
    ThriftListType(ThriftListType&&) = default;
    ThriftListType(const ThriftListType& src);
  
    ThriftListType& operator=(ThriftListType&&) = default;
    ThriftListType& operator=(const ThriftListType& src);
    void __clear();
   public:
    std::unique_ptr< ::apache::thrift::metadata::ThriftType> valueType;
  
   public:
    bool operator==(const ThriftListType& rhs) const;
    bool operator<(const ThriftListType& rhs) const;
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftListType >;
  };
  
  void swap(ThriftListType& a, ThriftListType& b);
  
  template <class Protocol_>
  uint32_t ThriftListType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftSetType final : private apache::thrift::detail::st::ComparisonOperators<ThriftSetType> {
   public:
  
    ThriftSetType() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftSetType(apache::thrift::FragileConstructor, std::unique_ptr< ::apache::thrift::metadata::ThriftType> valueType__arg);
  
    ThriftSetType(ThriftSetType&&) = default;
    ThriftSetType(const ThriftSetType& src);
  
    ThriftSetType& operator=(ThriftSetType&&) = default;
    ThriftSetType& operator=(const ThriftSetType& src);
    void __clear();
   public:
    std::unique_ptr< ::apache::thrift::metadata::ThriftType> valueType;
  
   public:
    bool operator==(const ThriftSetType& rhs) const;
    bool operator<(const ThriftSetType& rhs) const;
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftSetType >;
  };
  
  void swap(ThriftSetType& a, ThriftSetType& b);
  
  template <class Protocol_>
  uint32_t ThriftSetType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftMapType final : private apache::thrift::detail::st::ComparisonOperators<ThriftMapType> {
   public:
  
    ThriftMapType() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftMapType(apache::thrift::FragileConstructor, std::unique_ptr< ::apache::thrift::metadata::ThriftType> keyType__arg, std::unique_ptr< ::apache::thrift::metadata::ThriftType> valueType__arg);
  
    ThriftMapType(ThriftMapType&&) = default;
    ThriftMapType(const ThriftMapType& src);
  
    ThriftMapType& operator=(ThriftMapType&&) = default;
    ThriftMapType& operator=(const ThriftMapType& src);
    void __clear();
   public:
    std::unique_ptr< ::apache::thrift::metadata::ThriftType> keyType;
   public:
    std::unique_ptr< ::apache::thrift::metadata::ThriftType> valueType;
  
   public:
    bool operator==(const ThriftMapType& rhs) const;
    bool operator<(const ThriftMapType& rhs) const;
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftMapType >;
  };
  
  void swap(ThriftMapType& a, ThriftMapType& b);
  
  template <class Protocol_>
  uint32_t ThriftMapType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftEnumType final : private apache::thrift::detail::st::ComparisonOperators<ThriftEnumType> {
   public:
  
    ThriftEnumType() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftEnumType(apache::thrift::FragileConstructor, ::std::string name__arg);
  
    ThriftEnumType(ThriftEnumType&&) = default;
  
    ThriftEnumType(const ThriftEnumType&) = default;
  
    ThriftEnumType& operator=(ThriftEnumType&&) = default;
  
    ThriftEnumType& operator=(const ThriftEnumType&) = default;
    void __clear();
   public:
    ::std::string name;
  
   public:
    struct __isset {
      bool name;
    } __isset = {};
    bool operator==(const ThriftEnumType& rhs) const;
    bool operator<(const ThriftEnumType& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftEnumType_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftEnumType_name_struct_setter&& name_) {
      name = std::forward<T_ThriftEnumType_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftEnumType >;
  };
  
  void swap(ThriftEnumType& a, ThriftEnumType& b);
  
  template <class Protocol_>
  uint32_t ThriftEnumType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftStructType final : private apache::thrift::detail::st::ComparisonOperators<ThriftStructType> {
   public:
  
    ThriftStructType() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftStructType(apache::thrift::FragileConstructor, ::std::string name__arg);
  
    ThriftStructType(ThriftStructType&&) = default;
  
    ThriftStructType(const ThriftStructType&) = default;
  
    ThriftStructType& operator=(ThriftStructType&&) = default;
  
    ThriftStructType& operator=(const ThriftStructType&) = default;
    void __clear();
   public:
    ::std::string name;
  
   public:
    struct __isset {
      bool name;
    } __isset = {};
    bool operator==(const ThriftStructType& rhs) const;
    bool operator<(const ThriftStructType& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftStructType_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftStructType_name_struct_setter&& name_) {
      name = std::forward<T_ThriftStructType_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftStructType >;
  };
  
  void swap(ThriftStructType& a, ThriftStructType& b);
  
  template <class Protocol_>
  uint32_t ThriftStructType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftUnionType final : private apache::thrift::detail::st::ComparisonOperators<ThriftUnionType> {
   public:
  
    ThriftUnionType() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftUnionType(apache::thrift::FragileConstructor, ::std::string name__arg);
  
    ThriftUnionType(ThriftUnionType&&) = default;
  
    ThriftUnionType(const ThriftUnionType&) = default;
  
    ThriftUnionType& operator=(ThriftUnionType&&) = default;
  
    ThriftUnionType& operator=(const ThriftUnionType&) = default;
    void __clear();
   public:
    ::std::string name;
  
   public:
    struct __isset {
      bool name;
    } __isset = {};
    bool operator==(const ThriftUnionType& rhs) const;
    bool operator<(const ThriftUnionType& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftUnionType_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftUnionType_name_struct_setter&& name_) {
      name = std::forward<T_ThriftUnionType_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftUnionType >;
  };
  
  void swap(ThriftUnionType& a, ThriftUnionType& b);
  
  template <class Protocol_>
  uint32_t ThriftUnionType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftTypedefType final : private apache::thrift::detail::st::ComparisonOperators<ThriftTypedefType> {
   public:
  
    ThriftTypedefType() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftTypedefType(apache::thrift::FragileConstructor, ::std::string name__arg, std::unique_ptr< ::apache::thrift::metadata::ThriftType> underlyingType__arg);
  
    ThriftTypedefType(ThriftTypedefType&&) = default;
    ThriftTypedefType(const ThriftTypedefType& src);
  
    ThriftTypedefType& operator=(ThriftTypedefType&&) = default;
    ThriftTypedefType& operator=(const ThriftTypedefType& src);
    void __clear();
   public:
    ::std::string name;
   public:
    std::unique_ptr< ::apache::thrift::metadata::ThriftType> underlyingType;
  
   public:
    struct __isset {
      bool name;
    } __isset = {};
    bool operator==(const ThriftTypedefType& rhs) const;
    bool operator<(const ThriftTypedefType& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftTypedefType_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftTypedefType_name_struct_setter&& name_) {
      name = std::forward<T_ThriftTypedefType_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftTypedefType >;
  };
  
  void swap(ThriftTypedefType& a, ThriftTypedefType& b);
  
  template <class Protocol_>
  uint32_t ThriftTypedefType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftType final : private apache::thrift::detail::st::ComparisonOperators<ThriftType> {
   public:
    enum Type {
      __EMPTY__ = 0,
      t_primitive = 1,
      t_list = 2,
      t_set = 3,
      t_map = 4,
      t_enum = 5,
      t_struct = 6,
      t_union = 7,
      t_typedef = 8,
    } ;
  
    ThriftType()
        : type_(Type::__EMPTY__) {}
  
    ThriftType(ThriftType&& rhs)
        : type_(Type::__EMPTY__) {
      if (this == &rhs) { return; }
      if (rhs.type_ == Type::__EMPTY__) { return; }
      switch (rhs.type_) {
        case Type::t_primitive:
        {
          set_t_primitive(std::move(rhs.value_.t_primitive));
          break;
        }
        case Type::t_list:
        {
          set_t_list(std::move(rhs.value_.t_list));
          break;
        }
        case Type::t_set:
        {
          set_t_set(std::move(rhs.value_.t_set));
          break;
        }
        case Type::t_map:
        {
          set_t_map(std::move(rhs.value_.t_map));
          break;
        }
        case Type::t_enum:
        {
          set_t_enum(std::move(rhs.value_.t_enum));
          break;
        }
        case Type::t_struct:
        {
          set_t_struct(std::move(rhs.value_.t_struct));
          break;
        }
        case Type::t_union:
        {
          set_t_union(std::move(rhs.value_.t_union));
          break;
        }
        case Type::t_typedef:
        {
          set_t_typedef(std::move(rhs.value_.t_typedef));
          break;
        }
        default:
        {
          assert(false);
          break;
        }
      }
      rhs.__clear();
    }
  
    ThriftType(const ThriftType& rhs)
        : type_(Type::__EMPTY__) {
      if (this == &rhs) { return; }
      if (rhs.type_ == Type::__EMPTY__) { return; }
      switch (rhs.type_) {
        case Type::t_primitive:
        {
          set_t_primitive(rhs.value_.t_primitive);
          break;
        }
        case Type::t_list:
        {
          set_t_list(rhs.value_.t_list);
          break;
        }
        case Type::t_set:
        {
          set_t_set(rhs.value_.t_set);
          break;
        }
        case Type::t_map:
        {
          set_t_map(rhs.value_.t_map);
          break;
        }
        case Type::t_enum:
        {
          set_t_enum(rhs.value_.t_enum);
          break;
        }
        case Type::t_struct:
        {
          set_t_struct(rhs.value_.t_struct);
          break;
        }
        case Type::t_union:
        {
          set_t_union(rhs.value_.t_union);
          break;
        }
        case Type::t_typedef:
        {
          set_t_typedef(rhs.value_.t_typedef);
          break;
        }
        default:
        {
          assert(false);
          break;
        }
      }
    }
  
    ThriftType& operator=(ThriftType&& rhs) {
      if (this == &rhs) { return *this; }
      __clear();
      if (rhs.type_ == Type::__EMPTY__) { return *this; }
      switch (rhs.type_) {
        case Type::t_primitive:
        {
          set_t_primitive(std::move(rhs.value_.t_primitive));
          break;
        }
        case Type::t_list:
        {
          set_t_list(std::move(rhs.value_.t_list));
          break;
        }
        case Type::t_set:
        {
          set_t_set(std::move(rhs.value_.t_set));
          break;
        }
        case Type::t_map:
        {
          set_t_map(std::move(rhs.value_.t_map));
          break;
        }
        case Type::t_enum:
        {
          set_t_enum(std::move(rhs.value_.t_enum));
          break;
        }
        case Type::t_struct:
        {
          set_t_struct(std::move(rhs.value_.t_struct));
          break;
        }
        case Type::t_union:
        {
          set_t_union(std::move(rhs.value_.t_union));
          break;
        }
        case Type::t_typedef:
        {
          set_t_typedef(std::move(rhs.value_.t_typedef));
          break;
        }
        default:
        {
          assert(false);
          break;
        }
      }
      rhs.__clear();
      return *this;
    }
  
    ThriftType& operator=(const ThriftType& rhs) {
      if (this == &rhs) { return *this; }
      __clear();
      if (rhs.type_ == Type::__EMPTY__) { return *this; }
      switch (rhs.type_) {
        case Type::t_primitive:
        {
          set_t_primitive(rhs.value_.t_primitive);
          break;
        }
        case Type::t_list:
        {
          set_t_list(rhs.value_.t_list);
          break;
        }
        case Type::t_set:
        {
          set_t_set(rhs.value_.t_set);
          break;
        }
        case Type::t_map:
        {
          set_t_map(rhs.value_.t_map);
          break;
        }
        case Type::t_enum:
        {
          set_t_enum(rhs.value_.t_enum);
          break;
        }
        case Type::t_struct:
        {
          set_t_struct(rhs.value_.t_struct);
          break;
        }
        case Type::t_union:
        {
          set_t_union(rhs.value_.t_union);
          break;
        }
        case Type::t_typedef:
        {
          set_t_typedef(rhs.value_.t_typedef);
          break;
        }
        default:
        {
          assert(false);
          break;
        }
      }
      return *this;
    }
    void __clear();
  
    ~ThriftType() {
      __clear();
    }
    union storage_type {
       ::apache::thrift::metadata::ThriftPrimitiveType t_primitive;
       ::apache::thrift::metadata::ThriftListType t_list;
       ::apache::thrift::metadata::ThriftSetType t_set;
       ::apache::thrift::metadata::ThriftMapType t_map;
       ::apache::thrift::metadata::ThriftEnumType t_enum;
       ::apache::thrift::metadata::ThriftStructType t_struct;
       ::apache::thrift::metadata::ThriftUnionType t_union;
       ::apache::thrift::metadata::ThriftTypedefType t_typedef;
  
      storage_type() {}
      ~storage_type() {}
    } ;
    bool operator==(const ThriftType& rhs) const;
    bool operator<(const ThriftType& rhs) const;
  
     ::apache::thrift::metadata::ThriftPrimitiveType& set_t_primitive( ::apache::thrift::metadata::ThriftPrimitiveType t =  ::apache::thrift::metadata::ThriftPrimitiveType()) {
      __clear();
      type_ = Type::t_primitive;
      ::new (std::addressof(value_.t_primitive))  ::apache::thrift::metadata::ThriftPrimitiveType(t);
      return value_.t_primitive;
    }
  
     ::apache::thrift::metadata::ThriftListType& set_t_list( ::apache::thrift::metadata::ThriftListType const &t) {
      __clear();
      type_ = Type::t_list;
      ::new (std::addressof(value_.t_list))  ::apache::thrift::metadata::ThriftListType(t);
      return value_.t_list;
    }
  
     ::apache::thrift::metadata::ThriftListType& set_t_list( ::apache::thrift::metadata::ThriftListType&& t) {
      __clear();
      type_ = Type::t_list;
      ::new (std::addressof(value_.t_list))  ::apache::thrift::metadata::ThriftListType(std::move(t));
      return value_.t_list;
    }
  
    template<typename... T, typename = ::apache::thrift::safe_overload_t< ::apache::thrift::metadata::ThriftListType, T...>>  ::apache::thrift::metadata::ThriftListType& set_t_list(T&&... t) {
      __clear();
      type_ = Type::t_list;
      ::new (std::addressof(value_.t_list))  ::apache::thrift::metadata::ThriftListType(std::forward<T>(t)...);
      return value_.t_list;
    }
  
     ::apache::thrift::metadata::ThriftSetType& set_t_set( ::apache::thrift::metadata::ThriftSetType const &t) {
      __clear();
      type_ = Type::t_set;
      ::new (std::addressof(value_.t_set))  ::apache::thrift::metadata::ThriftSetType(t);
      return value_.t_set;
    }
  
     ::apache::thrift::metadata::ThriftSetType& set_t_set( ::apache::thrift::metadata::ThriftSetType&& t) {
      __clear();
      type_ = Type::t_set;
      ::new (std::addressof(value_.t_set))  ::apache::thrift::metadata::ThriftSetType(std::move(t));
      return value_.t_set;
    }
  
    template<typename... T, typename = ::apache::thrift::safe_overload_t< ::apache::thrift::metadata::ThriftSetType, T...>>  ::apache::thrift::metadata::ThriftSetType& set_t_set(T&&... t) {
      __clear();
      type_ = Type::t_set;
      ::new (std::addressof(value_.t_set))  ::apache::thrift::metadata::ThriftSetType(std::forward<T>(t)...);
      return value_.t_set;
    }
  
     ::apache::thrift::metadata::ThriftMapType& set_t_map( ::apache::thrift::metadata::ThriftMapType const &t) {
      __clear();
      type_ = Type::t_map;
      ::new (std::addressof(value_.t_map))  ::apache::thrift::metadata::ThriftMapType(t);
      return value_.t_map;
    }
  
     ::apache::thrift::metadata::ThriftMapType& set_t_map( ::apache::thrift::metadata::ThriftMapType&& t) {
      __clear();
      type_ = Type::t_map;
      ::new (std::addressof(value_.t_map))  ::apache::thrift::metadata::ThriftMapType(std::move(t));
      return value_.t_map;
    }
  
    template<typename... T, typename = ::apache::thrift::safe_overload_t< ::apache::thrift::metadata::ThriftMapType, T...>>  ::apache::thrift::metadata::ThriftMapType& set_t_map(T&&... t) {
      __clear();
      type_ = Type::t_map;
      ::new (std::addressof(value_.t_map))  ::apache::thrift::metadata::ThriftMapType(std::forward<T>(t)...);
      return value_.t_map;
    }
  
     ::apache::thrift::metadata::ThriftEnumType& set_t_enum( ::apache::thrift::metadata::ThriftEnumType const &t) {
      __clear();
      type_ = Type::t_enum;
      ::new (std::addressof(value_.t_enum))  ::apache::thrift::metadata::ThriftEnumType(t);
      return value_.t_enum;
    }
  
     ::apache::thrift::metadata::ThriftEnumType& set_t_enum( ::apache::thrift::metadata::ThriftEnumType&& t) {
      __clear();
      type_ = Type::t_enum;
      ::new (std::addressof(value_.t_enum))  ::apache::thrift::metadata::ThriftEnumType(std::move(t));
      return value_.t_enum;
    }
  
    template<typename... T, typename = ::apache::thrift::safe_overload_t< ::apache::thrift::metadata::ThriftEnumType, T...>>  ::apache::thrift::metadata::ThriftEnumType& set_t_enum(T&&... t) {
      __clear();
      type_ = Type::t_enum;
      ::new (std::addressof(value_.t_enum))  ::apache::thrift::metadata::ThriftEnumType(std::forward<T>(t)...);
      return value_.t_enum;
    }
  
     ::apache::thrift::metadata::ThriftStructType& set_t_struct( ::apache::thrift::metadata::ThriftStructType const &t) {
      __clear();
      type_ = Type::t_struct;
      ::new (std::addressof(value_.t_struct))  ::apache::thrift::metadata::ThriftStructType(t);
      return value_.t_struct;
    }
  
     ::apache::thrift::metadata::ThriftStructType& set_t_struct( ::apache::thrift::metadata::ThriftStructType&& t) {
      __clear();
      type_ = Type::t_struct;
      ::new (std::addressof(value_.t_struct))  ::apache::thrift::metadata::ThriftStructType(std::move(t));
      return value_.t_struct;
    }
  
    template<typename... T, typename = ::apache::thrift::safe_overload_t< ::apache::thrift::metadata::ThriftStructType, T...>>  ::apache::thrift::metadata::ThriftStructType& set_t_struct(T&&... t) {
      __clear();
      type_ = Type::t_struct;
      ::new (std::addressof(value_.t_struct))  ::apache::thrift::metadata::ThriftStructType(std::forward<T>(t)...);
      return value_.t_struct;
    }
  
     ::apache::thrift::metadata::ThriftUnionType& set_t_union( ::apache::thrift::metadata::ThriftUnionType const &t) {
      __clear();
      type_ = Type::t_union;
      ::new (std::addressof(value_.t_union))  ::apache::thrift::metadata::ThriftUnionType(t);
      return value_.t_union;
    }
  
     ::apache::thrift::metadata::ThriftUnionType& set_t_union( ::apache::thrift::metadata::ThriftUnionType&& t) {
      __clear();
      type_ = Type::t_union;
      ::new (std::addressof(value_.t_union))  ::apache::thrift::metadata::ThriftUnionType(std::move(t));
      return value_.t_union;
    }
  
    template<typename... T, typename = ::apache::thrift::safe_overload_t< ::apache::thrift::metadata::ThriftUnionType, T...>>  ::apache::thrift::metadata::ThriftUnionType& set_t_union(T&&... t) {
      __clear();
      type_ = Type::t_union;
      ::new (std::addressof(value_.t_union))  ::apache::thrift::metadata::ThriftUnionType(std::forward<T>(t)...);
      return value_.t_union;
    }
  
     ::apache::thrift::metadata::ThriftTypedefType& set_t_typedef( ::apache::thrift::metadata::ThriftTypedefType const &t) {
      __clear();
      type_ = Type::t_typedef;
      ::new (std::addressof(value_.t_typedef))  ::apache::thrift::metadata::ThriftTypedefType(t);
      return value_.t_typedef;
    }
  
     ::apache::thrift::metadata::ThriftTypedefType& set_t_typedef( ::apache::thrift::metadata::ThriftTypedefType&& t) {
      __clear();
      type_ = Type::t_typedef;
      ::new (std::addressof(value_.t_typedef))  ::apache::thrift::metadata::ThriftTypedefType(std::move(t));
      return value_.t_typedef;
    }
  
    template<typename... T, typename = ::apache::thrift::safe_overload_t< ::apache::thrift::metadata::ThriftTypedefType, T...>>  ::apache::thrift::metadata::ThriftTypedefType& set_t_typedef(T&&... t) {
      __clear();
      type_ = Type::t_typedef;
      ::new (std::addressof(value_.t_typedef))  ::apache::thrift::metadata::ThriftTypedefType(std::forward<T>(t)...);
      return value_.t_typedef;
    }
  
     ::apache::thrift::metadata::ThriftPrimitiveType const & get_t_primitive() const {
      assert(type_ == Type::t_primitive);
      return value_.t_primitive;
    }
  
     ::apache::thrift::metadata::ThriftListType const & get_t_list() const {
      assert(type_ == Type::t_list);
      return value_.t_list;
    }
  
     ::apache::thrift::metadata::ThriftSetType const & get_t_set() const {
      assert(type_ == Type::t_set);
      return value_.t_set;
    }
  
     ::apache::thrift::metadata::ThriftMapType const & get_t_map() const {
      assert(type_ == Type::t_map);
      return value_.t_map;
    }
  
     ::apache::thrift::metadata::ThriftEnumType const & get_t_enum() const {
      assert(type_ == Type::t_enum);
      return value_.t_enum;
    }
  
     ::apache::thrift::metadata::ThriftStructType const & get_t_struct() const {
      assert(type_ == Type::t_struct);
      return value_.t_struct;
    }
  
     ::apache::thrift::metadata::ThriftUnionType const & get_t_union() const {
      assert(type_ == Type::t_union);
      return value_.t_union;
    }
  
     ::apache::thrift::metadata::ThriftTypedefType const & get_t_typedef() const {
      assert(type_ == Type::t_typedef);
      return value_.t_typedef;
    }
  
     ::apache::thrift::metadata::ThriftPrimitiveType & mutable_t_primitive() {
      assert(type_ == Type::t_primitive);
      return value_.t_primitive;
    }
  
     ::apache::thrift::metadata::ThriftListType & mutable_t_list() {
      assert(type_ == Type::t_list);
      return value_.t_list;
    }
  
     ::apache::thrift::metadata::ThriftSetType & mutable_t_set() {
      assert(type_ == Type::t_set);
      return value_.t_set;
    }
  
     ::apache::thrift::metadata::ThriftMapType & mutable_t_map() {
      assert(type_ == Type::t_map);
      return value_.t_map;
    }
  
     ::apache::thrift::metadata::ThriftEnumType & mutable_t_enum() {
      assert(type_ == Type::t_enum);
      return value_.t_enum;
    }
  
     ::apache::thrift::metadata::ThriftStructType & mutable_t_struct() {
      assert(type_ == Type::t_struct);
      return value_.t_struct;
    }
  
     ::apache::thrift::metadata::ThriftUnionType & mutable_t_union() {
      assert(type_ == Type::t_union);
      return value_.t_union;
    }
  
     ::apache::thrift::metadata::ThriftTypedefType & mutable_t_typedef() {
      assert(type_ == Type::t_typedef);
      return value_.t_typedef;
    }
  
     ::apache::thrift::metadata::ThriftPrimitiveType move_t_primitive() {
      assert(type_ == Type::t_primitive);
      return std::move(value_.t_primitive);
    }
  
     ::apache::thrift::metadata::ThriftListType move_t_list() {
      assert(type_ == Type::t_list);
      return std::move(value_.t_list);
    }
  
     ::apache::thrift::metadata::ThriftSetType move_t_set() {
      assert(type_ == Type::t_set);
      return std::move(value_.t_set);
    }
  
     ::apache::thrift::metadata::ThriftMapType move_t_map() {
      assert(type_ == Type::t_map);
      return std::move(value_.t_map);
    }
  
     ::apache::thrift::metadata::ThriftEnumType move_t_enum() {
      assert(type_ == Type::t_enum);
      return std::move(value_.t_enum);
    }
  
     ::apache::thrift::metadata::ThriftStructType move_t_struct() {
      assert(type_ == Type::t_struct);
      return std::move(value_.t_struct);
    }
  
     ::apache::thrift::metadata::ThriftUnionType move_t_union() {
      assert(type_ == Type::t_union);
      return std::move(value_.t_union);
    }
  
     ::apache::thrift::metadata::ThriftTypedefType move_t_typedef() {
      assert(type_ == Type::t_typedef);
      return std::move(value_.t_typedef);
    }
  
    Type getType() const { return type_; }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
   protected:
    template <class T>
    void destruct(T &val) {
      (&val)->~T();
    }
  
    Type type_;
    storage_type value_;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftType >;
  };
  
  void swap(ThriftType& a, ThriftType& b);
  
  template <class Protocol_>
  uint32_t ThriftType::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftEnum final : private apache::thrift::detail::st::ComparisonOperators<ThriftEnum> {
   public:
  
    ThriftEnum() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftEnum(apache::thrift::FragileConstructor, ::std::string name__arg, ::std::map<int32_t, ::std::string> elements__arg);
  
    ThriftEnum(ThriftEnum&&) = default;
  
    ThriftEnum(const ThriftEnum&) = default;
  
    ThriftEnum& operator=(ThriftEnum&&) = default;
  
    ThriftEnum& operator=(const ThriftEnum&) = default;
    void __clear();
   public:
    ::std::string name;
   public:
    ::std::map<int32_t, ::std::string> elements;
  
   public:
    struct __isset {
      bool name;
      bool elements;
    } __isset = {};
    bool operator==(const ThriftEnum& rhs) const;
    bool operator<(const ThriftEnum& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftEnum_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftEnum_name_struct_setter&& name_) {
      name = std::forward<T_ThriftEnum_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
    const ::std::map<int32_t, ::std::string>& get_elements() const&;
    ::std::map<int32_t, ::std::string> get_elements() &&;
  
    template <typename T_ThriftEnum_elements_struct_setter = ::std::map<int32_t, ::std::string>>
    ::std::map<int32_t, ::std::string>& set_elements(T_ThriftEnum_elements_struct_setter&& elements_) {
      elements = std::forward<T_ThriftEnum_elements_struct_setter>(elements_);
      __isset.elements = true;
      return elements;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftEnum >;
  };
  
  void swap(ThriftEnum& a, ThriftEnum& b);
  
  template <class Protocol_>
  uint32_t ThriftEnum::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftField final : private apache::thrift::detail::st::ComparisonOperators<ThriftField> {
   public:
  
    ThriftField() :
        id(0),
        is_optional(0) {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftField(apache::thrift::FragileConstructor, int32_t id__arg,  ::apache::thrift::metadata::ThriftType type__arg, ::std::string name__arg, bool is_optional__arg);
  
    ThriftField(ThriftField&&) = default;
  
    ThriftField(const ThriftField&) = default;
  
    ThriftField& operator=(ThriftField&&) = default;
  
    ThriftField& operator=(const ThriftField&) = default;
    void __clear();
   public:
    int32_t id;
   public:
     ::apache::thrift::metadata::ThriftType type;
   public:
    ::std::string name;
   public:
    bool is_optional;
  
   public:
    struct __isset {
      bool id;
      bool type;
      bool name;
      bool is_optional;
    } __isset = {};
    bool operator==(const ThriftField& rhs) const;
    bool operator<(const ThriftField& rhs) const;
  
    int32_t get_id() const {
      return id;
    }
  
    int32_t& set_id(int32_t id_) {
      id = id_;
      __isset.id = true;
      return id;
    }
    const  ::apache::thrift::metadata::ThriftType& get_type() const&;
     ::apache::thrift::metadata::ThriftType get_type() &&;
  
    template <typename T_ThriftField_type_struct_setter =  ::apache::thrift::metadata::ThriftType>
     ::apache::thrift::metadata::ThriftType& set_type(T_ThriftField_type_struct_setter&& type_) {
      type = std::forward<T_ThriftField_type_struct_setter>(type_);
      __isset.type = true;
      return type;
    }
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftField_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftField_name_struct_setter&& name_) {
      name = std::forward<T_ThriftField_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
  
    bool get_is_optional() const {
      return is_optional;
    }
  
    bool& set_is_optional(bool is_optional_) {
      is_optional = is_optional_;
      __isset.is_optional = true;
      return is_optional;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftField >;
  };
  
  void swap(ThriftField& a, ThriftField& b);
  
  template <class Protocol_>
  uint32_t ThriftField::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftStruct final : private apache::thrift::detail::st::ComparisonOperators<ThriftStruct> {
   public:
  
    ThriftStruct() :
        is_union(0) {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftStruct(apache::thrift::FragileConstructor, ::std::string name__arg, ::std::vector< ::apache::thrift::metadata::ThriftField> fields__arg, bool is_union__arg);
  
    ThriftStruct(ThriftStruct&&) = default;
  
    ThriftStruct(const ThriftStruct&) = default;
  
    ThriftStruct& operator=(ThriftStruct&&) = default;
  
    ThriftStruct& operator=(const ThriftStruct&) = default;
    void __clear();
   public:
    ::std::string name;
   public:
    ::std::vector< ::apache::thrift::metadata::ThriftField> fields;
   public:
    bool is_union;
  
   public:
    struct __isset {
      bool name;
      bool fields;
      bool is_union;
    } __isset = {};
    bool operator==(const ThriftStruct& rhs) const;
    bool operator<(const ThriftStruct& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftStruct_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftStruct_name_struct_setter&& name_) {
      name = std::forward<T_ThriftStruct_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
    const ::std::vector< ::apache::thrift::metadata::ThriftField>& get_fields() const&;
    ::std::vector< ::apache::thrift::metadata::ThriftField> get_fields() &&;
  
    template <typename T_ThriftStruct_fields_struct_setter = ::std::vector< ::apache::thrift::metadata::ThriftField>>
    ::std::vector< ::apache::thrift::metadata::ThriftField>& set_fields(T_ThriftStruct_fields_struct_setter&& fields_) {
      fields = std::forward<T_ThriftStruct_fields_struct_setter>(fields_);
      __isset.fields = true;
      return fields;
    }
  
    bool get_is_union() const {
      return is_union;
    }
  
    bool& set_is_union(bool is_union_) {
      is_union = is_union_;
      __isset.is_union = true;
      return is_union;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftStruct >;
  };
  
  void swap(ThriftStruct& a, ThriftStruct& b);
  
  template <class Protocol_>
  uint32_t ThriftStruct::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftException final : private apache::thrift::detail::st::ComparisonOperators<ThriftException> {
   public:
  
    ThriftException() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftException(apache::thrift::FragileConstructor, ::std::string name__arg, ::std::vector< ::apache::thrift::metadata::ThriftField> fields__arg);
  
    ThriftException(ThriftException&&) = default;
  
    ThriftException(const ThriftException&) = default;
  
    ThriftException& operator=(ThriftException&&) = default;
  
    ThriftException& operator=(const ThriftException&) = default;
    void __clear();
   public:
    ::std::string name;
   public:
    ::std::vector< ::apache::thrift::metadata::ThriftField> fields;
  
   public:
    struct __isset {
      bool name;
      bool fields;
    } __isset = {};
    bool operator==(const ThriftException& rhs) const;
    bool operator<(const ThriftException& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftException_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftException_name_struct_setter&& name_) {
      name = std::forward<T_ThriftException_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
    const ::std::vector< ::apache::thrift::metadata::ThriftField>& get_fields() const&;
    ::std::vector< ::apache::thrift::metadata::ThriftField> get_fields() &&;
  
    template <typename T_ThriftException_fields_struct_setter = ::std::vector< ::apache::thrift::metadata::ThriftField>>
    ::std::vector< ::apache::thrift::metadata::ThriftField>& set_fields(T_ThriftException_fields_struct_setter&& fields_) {
      fields = std::forward<T_ThriftException_fields_struct_setter>(fields_);
      __isset.fields = true;
      return fields;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftException >;
  };
  
  void swap(ThriftException& a, ThriftException& b);
  
  template <class Protocol_>
  uint32_t ThriftException::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftFunction final : private apache::thrift::detail::st::ComparisonOperators<ThriftFunction> {
   public:
  
    ThriftFunction() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftFunction(apache::thrift::FragileConstructor, ::std::string name__arg,  ::apache::thrift::metadata::ThriftType returnType__arg, ::std::vector< ::apache::thrift::metadata::ThriftField> arguments__arg, ::std::vector< ::apache::thrift::metadata::ThriftField> exceptions__arg);
  
    ThriftFunction(ThriftFunction&&) = default;
  
    ThriftFunction(const ThriftFunction&) = default;
  
    ThriftFunction& operator=(ThriftFunction&&) = default;
  
    ThriftFunction& operator=(const ThriftFunction&) = default;
    void __clear();
   public:
    ::std::string name;
   public:
     ::apache::thrift::metadata::ThriftType returnType;
   public:
    ::std::vector< ::apache::thrift::metadata::ThriftField> arguments;
   public:
    ::std::vector< ::apache::thrift::metadata::ThriftField> exceptions;
  
   public:
    struct __isset {
      bool name;
      bool returnType;
      bool arguments;
      bool exceptions;
    } __isset = {};
    bool operator==(const ThriftFunction& rhs) const;
    bool operator<(const ThriftFunction& rhs) const;
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftFunction_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftFunction_name_struct_setter&& name_) {
      name = std::forward<T_ThriftFunction_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
    const  ::apache::thrift::metadata::ThriftType& get_returnType() const&;
     ::apache::thrift::metadata::ThriftType get_returnType() &&;
  
    template <typename T_ThriftFunction_returnType_struct_setter =  ::apache::thrift::metadata::ThriftType>
     ::apache::thrift::metadata::ThriftType& set_returnType(T_ThriftFunction_returnType_struct_setter&& returnType_) {
      returnType = std::forward<T_ThriftFunction_returnType_struct_setter>(returnType_);
      __isset.returnType = true;
      return returnType;
    }
    const ::std::vector< ::apache::thrift::metadata::ThriftField>& get_arguments() const&;
    ::std::vector< ::apache::thrift::metadata::ThriftField> get_arguments() &&;
  
    template <typename T_ThriftFunction_arguments_struct_setter = ::std::vector< ::apache::thrift::metadata::ThriftField>>
    ::std::vector< ::apache::thrift::metadata::ThriftField>& set_arguments(T_ThriftFunction_arguments_struct_setter&& arguments_) {
      arguments = std::forward<T_ThriftFunction_arguments_struct_setter>(arguments_);
      __isset.arguments = true;
      return arguments;
    }
    const ::std::vector< ::apache::thrift::metadata::ThriftField>& get_exceptions() const&;
    ::std::vector< ::apache::thrift::metadata::ThriftField> get_exceptions() &&;
  
    template <typename T_ThriftFunction_exceptions_struct_setter = ::std::vector< ::apache::thrift::metadata::ThriftField>>
    ::std::vector< ::apache::thrift::metadata::ThriftField>& set_exceptions(T_ThriftFunction_exceptions_struct_setter&& exceptions_) {
      exceptions = std::forward<T_ThriftFunction_exceptions_struct_setter>(exceptions_);
      __isset.exceptions = true;
      return exceptions;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftFunction >;
  };
  
  void swap(ThriftFunction& a, ThriftFunction& b);
  
  template <class Protocol_>
  uint32_t ThriftFunction::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftService final : private apache::thrift::detail::st::ComparisonOperators<ThriftService> {
   public:
  
    ThriftService() {}
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftService(apache::thrift::FragileConstructor, ::std::string name__arg, ::std::vector< ::apache::thrift::metadata::ThriftFunction> functions__arg, ::std::string parent__arg);
  
    ThriftService(ThriftService&&) = default;
  
    ThriftService(const ThriftService&) = default;
  
    ThriftService& operator=(ThriftService&&) = default;
  
    ThriftService& operator=(const ThriftService&) = default;
    void __clear();
   public:
    ::std::string name;
   public:
    ::std::vector< ::apache::thrift::metadata::ThriftFunction> functions;
   private:
    ::std::string parent;
  
   public:
    struct __isset {
      bool name;
      bool functions;
      bool parent;
    } __isset = {};
    bool operator==(const ThriftService& rhs) const;
    bool operator<(const ThriftService& rhs) const;
  
    FOLLY_ERASE ::apache::thrift::optional_field_ref<const ::std::string&> parent_ref() const& {
      return {parent, __isset.parent};
    }
  
    FOLLY_ERASE ::apache::thrift::optional_field_ref<const ::std::string&&> parent_ref() const&& {
      return {std::move(parent), __isset.parent};
    }
  
    FOLLY_ERASE ::apache::thrift::optional_field_ref<::std::string&> parent_ref() & {
      return {parent, __isset.parent};
    }
  
    FOLLY_ERASE ::apache::thrift::optional_field_ref<::std::string&&> parent_ref() && {
      return {std::move(parent), __isset.parent};
    }
  
    const ::std::string& get_name() const& {
      return name;
    }
  
    ::std::string get_name() && {
      return std::move(name);
    }
  
    template <typename T_ThriftService_name_struct_setter = ::std::string>
    ::std::string& set_name(T_ThriftService_name_struct_setter&& name_) {
      name = std::forward<T_ThriftService_name_struct_setter>(name_);
      __isset.name = true;
      return name;
    }
    const ::std::vector< ::apache::thrift::metadata::ThriftFunction>& get_functions() const&;
    ::std::vector< ::apache::thrift::metadata::ThriftFunction> get_functions() &&;
  
    template <typename T_ThriftService_functions_struct_setter = ::std::vector< ::apache::thrift::metadata::ThriftFunction>>
    ::std::vector< ::apache::thrift::metadata::ThriftFunction>& set_functions(T_ThriftService_functions_struct_setter&& functions_) {
      functions = std::forward<T_ThriftService_functions_struct_setter>(functions_);
      __isset.functions = true;
      return functions;
    }
  
    const ::std::string* get_parent() const& {
      return __isset.parent ? std::addressof(parent) : nullptr;
    }
  
    ::std::string* get_parent() & {
      return __isset.parent ? std::addressof(parent) : nullptr;
    }
    ::std::string* get_parent() && = delete;
  
    template <typename T_ThriftService_parent_struct_setter = ::std::string>
    ::std::string& set_parent(T_ThriftService_parent_struct_setter&& parent_) {
      parent = std::forward<T_ThriftService_parent_struct_setter>(parent_);
      __isset.parent = true;
      return parent;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftService >;
  };
  
  void swap(ThriftService& a, ThriftService& b);
  
  template <class Protocol_>
  uint32_t ThriftService::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  namespace apache { namespace thrift { namespace metadata {
  class ThriftMetadata final : private apache::thrift::detail::st::ComparisonOperators<ThriftMetadata> {
   public:
  
    ThriftMetadata();
  
    // FragileConstructor for use in initialization lists only.
    [[deprecated("This constructor is deprecated")]]
    ThriftMetadata(apache::thrift::FragileConstructor, ::std::string file_name__arg, ::std::map<::std::string,  ::apache::thrift::metadata::ThriftEnum> enums__arg, ::std::map<::std::string,  ::apache::thrift::metadata::ThriftStruct> structs__arg, ::std::map<::std::string,  ::apache::thrift::metadata::ThriftException> exceptions__arg, ::std::map<::std::string,  ::apache::thrift::metadata::ThriftService> services__arg);
  
    ThriftMetadata(ThriftMetadata&&) = default;
  
    ThriftMetadata(const ThriftMetadata&) = default;
  
    ThriftMetadata& operator=(ThriftMetadata&&) = default;
  
    ThriftMetadata& operator=(const ThriftMetadata&) = default;
    void __clear();
  
    ~ThriftMetadata();
  
   public:
    ::std::string file_name;
   public:
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftEnum> enums;
   public:
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftStruct> structs;
   public:
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftException> exceptions;
   public:
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftService> services;
  
   public:
    struct __isset {
      bool file_name;
      bool enums;
      bool structs;
      bool exceptions;
      bool services;
    } __isset = {};
    bool operator==(const ThriftMetadata& rhs) const;
    bool operator<(const ThriftMetadata& rhs) const;
  
    const ::std::string& get_file_name() const& {
      return file_name;
    }
  
    ::std::string get_file_name() && {
      return std::move(file_name);
    }
  
    template <typename T_ThriftMetadata_file_name_struct_setter = ::std::string>
    ::std::string& set_file_name(T_ThriftMetadata_file_name_struct_setter&& file_name_) {
      file_name = std::forward<T_ThriftMetadata_file_name_struct_setter>(file_name_);
      __isset.file_name = true;
      return file_name;
    }
    const ::std::map<::std::string,  ::apache::thrift::metadata::ThriftEnum>& get_enums() const&;
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftEnum> get_enums() &&;
  
    template <typename T_ThriftMetadata_enums_struct_setter = ::std::map<::std::string,  ::apache::thrift::metadata::ThriftEnum>>
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftEnum>& set_enums(T_ThriftMetadata_enums_struct_setter&& enums_) {
      enums = std::forward<T_ThriftMetadata_enums_struct_setter>(enums_);
      __isset.enums = true;
      return enums;
    }
    const ::std::map<::std::string,  ::apache::thrift::metadata::ThriftStruct>& get_structs() const&;
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftStruct> get_structs() &&;
  
    template <typename T_ThriftMetadata_structs_struct_setter = ::std::map<::std::string,  ::apache::thrift::metadata::ThriftStruct>>
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftStruct>& set_structs(T_ThriftMetadata_structs_struct_setter&& structs_) {
      structs = std::forward<T_ThriftMetadata_structs_struct_setter>(structs_);
      __isset.structs = true;
      return structs;
    }
    const ::std::map<::std::string,  ::apache::thrift::metadata::ThriftException>& get_exceptions() const&;
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftException> get_exceptions() &&;
  
    template <typename T_ThriftMetadata_exceptions_struct_setter = ::std::map<::std::string,  ::apache::thrift::metadata::ThriftException>>
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftException>& set_exceptions(T_ThriftMetadata_exceptions_struct_setter&& exceptions_) {
      exceptions = std::forward<T_ThriftMetadata_exceptions_struct_setter>(exceptions_);
      __isset.exceptions = true;
      return exceptions;
    }
    const ::std::map<::std::string,  ::apache::thrift::metadata::ThriftService>& get_services() const&;
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftService> get_services() &&;
  
    template <typename T_ThriftMetadata_services_struct_setter = ::std::map<::std::string,  ::apache::thrift::metadata::ThriftService>>
    ::std::map<::std::string,  ::apache::thrift::metadata::ThriftService>& set_services(T_ThriftMetadata_services_struct_setter&& services_) {
      services = std::forward<T_ThriftMetadata_services_struct_setter>(services_);
      __isset.services = true;
      return services;
    }
  
    template <class Protocol_>
    uint32_t read(Protocol_* iprot);
    template <class Protocol_>
    uint32_t serializedSize(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t serializedSizeZC(Protocol_ const* prot_) const;
    template <class Protocol_>
    uint32_t write(Protocol_* prot_) const;
  
   private:
    template <class Protocol_>
    void readNoXfer(Protocol_* iprot);
  
    friend class ::apache::thrift::Cpp2Ops< ThriftMetadata >;
  };
  
  void swap(ThriftMetadata& a, ThriftMetadata& b);
  
  template <class Protocol_>
  uint32_t ThriftMetadata::read(Protocol_* iprot) {
    auto _xferStart = iprot->getCursorPosition();
    readNoXfer(iprot);
    return iprot->getCursorPosition() - _xferStart;
  }
  
  }}} // apache::thrift::metadata
  