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

#ifndef PROTOBUF_osmformat_2eproto__INCLUDED
#define PROTOBUF_osmformat_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 2003000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please update
#error your headers.
#endif
#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
// @@protoc_insertion_point(includes)

namespace OSMPBF {

// Internal implementation detail -- do not call these.
void  protobuf_AddDesc_osmformat_2eproto();
void protobuf_AssignDesc_osmformat_2eproto();
void protobuf_ShutdownFile_osmformat_2eproto();

class HeaderBlock;
class HeaderBBox;
class PrimitiveBlock;
class PrimitiveGroup;
class StringTable;
class Info;
class DenseInfo;
class ChangeSet;
class Node;
class DenseNodes;
class Way;
class Relation;

enum Relation_MemberType {
  Relation_MemberType_NODE = 0,
  Relation_MemberType_WAY = 1,
  Relation_MemberType_RELATION = 2
};
bool Relation_MemberType_IsValid(int value);
const Relation_MemberType Relation_MemberType_MemberType_MIN = Relation_MemberType_NODE;
const Relation_MemberType Relation_MemberType_MemberType_MAX = Relation_MemberType_RELATION;
const int Relation_MemberType_MemberType_ARRAYSIZE = Relation_MemberType_MemberType_MAX + 1;

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

class HeaderBlock : public ::google::protobuf::MessageLite {
 public:
  HeaderBlock();
  virtual ~HeaderBlock();
  
  HeaderBlock(const HeaderBlock& from);
  
  inline HeaderBlock& operator=(const HeaderBlock& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const HeaderBlock& default_instance();
  
  void Swap(HeaderBlock* other);
  
  // implements Message ----------------------------------------------
  
  HeaderBlock* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const HeaderBlock& from);
  void MergeFrom(const HeaderBlock& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional .OSMPBF.HeaderBBox bbox = 1;
  inline bool has_bbox() const;
  inline void clear_bbox();
  static const int kBboxFieldNumber = 1;
  inline const ::OSMPBF::HeaderBBox& bbox() const;
  inline ::OSMPBF::HeaderBBox* mutable_bbox();
  
  // repeated string required_features = 4;
  inline int required_features_size() const;
  inline void clear_required_features();
  static const int kRequiredFeaturesFieldNumber = 4;
  inline const ::std::string& required_features(int index) const;
  inline ::std::string* mutable_required_features(int index);
  inline void set_required_features(int index, const ::std::string& value);
  inline void set_required_features(int index, const char* value);
  inline void set_required_features(int index, const char* value, size_t size);
  inline ::std::string* add_required_features();
  inline void add_required_features(const ::std::string& value);
  inline void add_required_features(const char* value);
  inline void add_required_features(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& required_features() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_required_features();
  
  // repeated string optional_features = 5;
  inline int optional_features_size() const;
  inline void clear_optional_features();
  static const int kOptionalFeaturesFieldNumber = 5;
  inline const ::std::string& optional_features(int index) const;
  inline ::std::string* mutable_optional_features(int index);
  inline void set_optional_features(int index, const ::std::string& value);
  inline void set_optional_features(int index, const char* value);
  inline void set_optional_features(int index, const char* value, size_t size);
  inline ::std::string* add_optional_features();
  inline void add_optional_features(const ::std::string& value);
  inline void add_optional_features(const char* value);
  inline void add_optional_features(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& optional_features() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_optional_features();
  
  // optional string writingprogram = 16;
  inline bool has_writingprogram() const;
  inline void clear_writingprogram();
  static const int kWritingprogramFieldNumber = 16;
  inline const ::std::string& writingprogram() const;
  inline void set_writingprogram(const ::std::string& value);
  inline void set_writingprogram(const char* value);
  inline void set_writingprogram(const char* value, size_t size);
  inline ::std::string* mutable_writingprogram();
  
  // optional string source = 17;
  inline bool has_source() const;
  inline void clear_source();
  static const int kSourceFieldNumber = 17;
  inline const ::std::string& source() const;
  inline void set_source(const ::std::string& value);
  inline void set_source(const char* value);
  inline void set_source(const char* value, size_t size);
  inline ::std::string* mutable_source();
  
  // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBlock)
 private:
  mutable int _cached_size_;
  
  ::OSMPBF::HeaderBBox* bbox_;
  ::google::protobuf::RepeatedPtrField< ::std::string> required_features_;
  ::google::protobuf::RepeatedPtrField< ::std::string> optional_features_;
  ::std::string* writingprogram_;
  static const ::std::string _default_writingprogram_;
  ::std::string* source_;
  static const ::std::string _default_source_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static HeaderBlock* default_instance_;
};
// -------------------------------------------------------------------

class HeaderBBox : public ::google::protobuf::MessageLite {
 public:
  HeaderBBox();
  virtual ~HeaderBBox();
  
  HeaderBBox(const HeaderBBox& from);
  
  inline HeaderBBox& operator=(const HeaderBBox& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const HeaderBBox& default_instance();
  
  void Swap(HeaderBBox* other);
  
  // implements Message ----------------------------------------------
  
  HeaderBBox* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const HeaderBBox& from);
  void MergeFrom(const HeaderBBox& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // required sint64 left = 1;
  inline bool has_left() const;
  inline void clear_left();
  static const int kLeftFieldNumber = 1;
  inline ::google::protobuf::int64 left() const;
  inline void set_left(::google::protobuf::int64 value);
  
  // required sint64 right = 2;
  inline bool has_right() const;
  inline void clear_right();
  static const int kRightFieldNumber = 2;
  inline ::google::protobuf::int64 right() const;
  inline void set_right(::google::protobuf::int64 value);
  
  // required sint64 top = 3;
  inline bool has_top() const;
  inline void clear_top();
  static const int kTopFieldNumber = 3;
  inline ::google::protobuf::int64 top() const;
  inline void set_top(::google::protobuf::int64 value);
  
  // required sint64 bottom = 4;
  inline bool has_bottom() const;
  inline void clear_bottom();
  static const int kBottomFieldNumber = 4;
  inline ::google::protobuf::int64 bottom() const;
  inline void set_bottom(::google::protobuf::int64 value);
  
  // @@protoc_insertion_point(class_scope:OSMPBF.HeaderBBox)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int64 left_;
  ::google::protobuf::int64 right_;
  ::google::protobuf::int64 top_;
  ::google::protobuf::int64 bottom_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static HeaderBBox* default_instance_;
};
// -------------------------------------------------------------------

class PrimitiveBlock : public ::google::protobuf::MessageLite {
 public:
  PrimitiveBlock();
  virtual ~PrimitiveBlock();
  
  PrimitiveBlock(const PrimitiveBlock& from);
  
  inline PrimitiveBlock& operator=(const PrimitiveBlock& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const PrimitiveBlock& default_instance();
  
  void Swap(PrimitiveBlock* other);
  
  // implements Message ----------------------------------------------
  
  PrimitiveBlock* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const PrimitiveBlock& from);
  void MergeFrom(const PrimitiveBlock& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // required .OSMPBF.StringTable stringtable = 1;
  inline bool has_stringtable() const;
  inline void clear_stringtable();
  static const int kStringtableFieldNumber = 1;
  inline const ::OSMPBF::StringTable& stringtable() const;
  inline ::OSMPBF::StringTable* mutable_stringtable();
  
  // repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;
  inline int primitivegroup_size() const;
  inline void clear_primitivegroup();
  static const int kPrimitivegroupFieldNumber = 2;
  inline const ::OSMPBF::PrimitiveGroup& primitivegroup(int index) const;
  inline ::OSMPBF::PrimitiveGroup* mutable_primitivegroup(int index);
  inline ::OSMPBF::PrimitiveGroup* add_primitivegroup();
  inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >&
      primitivegroup() const;
  inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >*
      mutable_primitivegroup();
  
  // optional int32 granularity = 17 [default = 100];
  inline bool has_granularity() const;
  inline void clear_granularity();
  static const int kGranularityFieldNumber = 17;
  inline ::google::protobuf::int32 granularity() const;
  inline void set_granularity(::google::protobuf::int32 value);
  
  // optional int64 lat_offset = 19 [default = 0];
  inline bool has_lat_offset() const;
  inline void clear_lat_offset();
  static const int kLatOffsetFieldNumber = 19;
  inline ::google::protobuf::int64 lat_offset() const;
  inline void set_lat_offset(::google::protobuf::int64 value);
  
  // optional int64 lon_offset = 20 [default = 0];
  inline bool has_lon_offset() const;
  inline void clear_lon_offset();
  static const int kLonOffsetFieldNumber = 20;
  inline ::google::protobuf::int64 lon_offset() const;
  inline void set_lon_offset(::google::protobuf::int64 value);
  
  // optional int32 date_granularity = 18 [default = 1000];
  inline bool has_date_granularity() const;
  inline void clear_date_granularity();
  static const int kDateGranularityFieldNumber = 18;
  inline ::google::protobuf::int32 date_granularity() const;
  inline void set_date_granularity(::google::protobuf::int32 value);
  
  // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveBlock)
 private:
  mutable int _cached_size_;
  
  ::OSMPBF::StringTable* stringtable_;
  ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup > primitivegroup_;
  ::google::protobuf::int32 granularity_;
  ::google::protobuf::int64 lat_offset_;
  ::google::protobuf::int64 lon_offset_;
  ::google::protobuf::int32 date_granularity_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static PrimitiveBlock* default_instance_;
};
// -------------------------------------------------------------------

class PrimitiveGroup : public ::google::protobuf::MessageLite {
 public:
  PrimitiveGroup();
  virtual ~PrimitiveGroup();
  
  PrimitiveGroup(const PrimitiveGroup& from);
  
  inline PrimitiveGroup& operator=(const PrimitiveGroup& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const PrimitiveGroup& default_instance();
  
  void Swap(PrimitiveGroup* other);
  
  // implements Message ----------------------------------------------
  
  PrimitiveGroup* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const PrimitiveGroup& from);
  void MergeFrom(const PrimitiveGroup& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // repeated .OSMPBF.Node nodes = 1;
  inline int nodes_size() const;
  inline void clear_nodes();
  static const int kNodesFieldNumber = 1;
  inline const ::OSMPBF::Node& nodes(int index) const;
  inline ::OSMPBF::Node* mutable_nodes(int index);
  inline ::OSMPBF::Node* add_nodes();
  inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >&
      nodes() const;
  inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >*
      mutable_nodes();
  
  // optional .OSMPBF.DenseNodes dense = 2;
  inline bool has_dense() const;
  inline void clear_dense();
  static const int kDenseFieldNumber = 2;
  inline const ::OSMPBF::DenseNodes& dense() const;
  inline ::OSMPBF::DenseNodes* mutable_dense();
  
  // repeated .OSMPBF.Way ways = 3;
  inline int ways_size() const;
  inline void clear_ways();
  static const int kWaysFieldNumber = 3;
  inline const ::OSMPBF::Way& ways(int index) const;
  inline ::OSMPBF::Way* mutable_ways(int index);
  inline ::OSMPBF::Way* add_ways();
  inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >&
      ways() const;
  inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >*
      mutable_ways();
  
  // repeated .OSMPBF.Relation relations = 4;
  inline int relations_size() const;
  inline void clear_relations();
  static const int kRelationsFieldNumber = 4;
  inline const ::OSMPBF::Relation& relations(int index) const;
  inline ::OSMPBF::Relation* mutable_relations(int index);
  inline ::OSMPBF::Relation* add_relations();
  inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >&
      relations() const;
  inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >*
      mutable_relations();
  
  // repeated .OSMPBF.ChangeSet changesets = 5;
  inline int changesets_size() const;
  inline void clear_changesets();
  static const int kChangesetsFieldNumber = 5;
  inline const ::OSMPBF::ChangeSet& changesets(int index) const;
  inline ::OSMPBF::ChangeSet* mutable_changesets(int index);
  inline ::OSMPBF::ChangeSet* add_changesets();
  inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >&
      changesets() const;
  inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >*
      mutable_changesets();
  
  // @@protoc_insertion_point(class_scope:OSMPBF.PrimitiveGroup)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node > nodes_;
  ::OSMPBF::DenseNodes* dense_;
  ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way > ways_;
  ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation > relations_;
  ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet > changesets_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static PrimitiveGroup* default_instance_;
};
// -------------------------------------------------------------------

class StringTable : public ::google::protobuf::MessageLite {
 public:
  StringTable();
  virtual ~StringTable();
  
  StringTable(const StringTable& from);
  
  inline StringTable& operator=(const StringTable& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const StringTable& default_instance();
  
  void Swap(StringTable* other);
  
  // implements Message ----------------------------------------------
  
  StringTable* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const StringTable& from);
  void MergeFrom(const StringTable& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // repeated bytes s = 1;
  inline int s_size() const;
  inline void clear_s();
  static const int kSFieldNumber = 1;
  inline const ::std::string& s(int index) const;
  inline ::std::string* mutable_s(int index);
  inline void set_s(int index, const ::std::string& value);
  inline void set_s(int index, const char* value);
  inline void set_s(int index, const void* value, size_t size);
  inline ::std::string* add_s();
  inline void add_s(const ::std::string& value);
  inline void add_s(const char* value);
  inline void add_s(const void* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& s() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_s();
  
  // @@protoc_insertion_point(class_scope:OSMPBF.StringTable)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::RepeatedPtrField< ::std::string> s_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static StringTable* default_instance_;
};
// -------------------------------------------------------------------

class Info : public ::google::protobuf::MessageLite {
 public:
  Info();
  virtual ~Info();
  
  Info(const Info& from);
  
  inline Info& operator=(const Info& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Info& default_instance();
  
  void Swap(Info* other);
  
  // implements Message ----------------------------------------------
  
  Info* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Info& from);
  void MergeFrom(const Info& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional int32 version = 1 [default = -1];
  inline bool has_version() const;
  inline void clear_version();
  static const int kVersionFieldNumber = 1;
  inline ::google::protobuf::int32 version() const;
  inline void set_version(::google::protobuf::int32 value);
  
  // optional int64 timestamp = 2;
  inline bool has_timestamp() const;
  inline void clear_timestamp();
  static const int kTimestampFieldNumber = 2;
  inline ::google::protobuf::int64 timestamp() const;
  inline void set_timestamp(::google::protobuf::int64 value);
  
  // optional int64 changeset = 3;
  inline bool has_changeset() const;
  inline void clear_changeset();
  static const int kChangesetFieldNumber = 3;
  inline ::google::protobuf::int64 changeset() const;
  inline void set_changeset(::google::protobuf::int64 value);
  
  // optional int32 uid = 4;
  inline bool has_uid() const;
  inline void clear_uid();
  static const int kUidFieldNumber = 4;
  inline ::google::protobuf::int32 uid() const;
  inline void set_uid(::google::protobuf::int32 value);
  
  // optional uint32 user_sid = 5;
  inline bool has_user_sid() const;
  inline void clear_user_sid();
  static const int kUserSidFieldNumber = 5;
  inline ::google::protobuf::uint32 user_sid() const;
  inline void set_user_sid(::google::protobuf::uint32 value);
  
  // @@protoc_insertion_point(class_scope:OSMPBF.Info)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int32 version_;
  ::google::protobuf::int64 timestamp_;
  ::google::protobuf::int64 changeset_;
  ::google::protobuf::int32 uid_;
  ::google::protobuf::uint32 user_sid_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static Info* default_instance_;
};
// -------------------------------------------------------------------

class DenseInfo : public ::google::protobuf::MessageLite {
 public:
  DenseInfo();
  virtual ~DenseInfo();
  
  DenseInfo(const DenseInfo& from);
  
  inline DenseInfo& operator=(const DenseInfo& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const DenseInfo& default_instance();
  
  void Swap(DenseInfo* other);
  
  // implements Message ----------------------------------------------
  
  DenseInfo* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const DenseInfo& from);
  void MergeFrom(const DenseInfo& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // repeated int32 version = 1 [packed = true];
  inline int version_size() const;
  inline void clear_version();
  static const int kVersionFieldNumber = 1;
  inline ::google::protobuf::int32 version(int index) const;
  inline void set_version(int index, ::google::protobuf::int32 value);
  inline void add_version(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      version() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_version();
  
  // repeated sint64 timestamp = 2 [packed = true];
  inline int timestamp_size() const;
  inline void clear_timestamp();
  static const int kTimestampFieldNumber = 2;
  inline ::google::protobuf::int64 timestamp(int index) const;
  inline void set_timestamp(int index, ::google::protobuf::int64 value);
  inline void add_timestamp(::google::protobuf::int64 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      timestamp() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_timestamp();
  
  // repeated sint64 changeset = 3 [packed = true];
  inline int changeset_size() const;
  inline void clear_changeset();
  static const int kChangesetFieldNumber = 3;
  inline ::google::protobuf::int64 changeset(int index) const;
  inline void set_changeset(int index, ::google::protobuf::int64 value);
  inline void add_changeset(::google::protobuf::int64 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      changeset() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_changeset();
  
  // repeated sint32 uid = 4 [packed = true];
  inline int uid_size() const;
  inline void clear_uid();
  static const int kUidFieldNumber = 4;
  inline ::google::protobuf::int32 uid(int index) const;
  inline void set_uid(int index, ::google::protobuf::int32 value);
  inline void add_uid(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      uid() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_uid();
  
  // repeated sint32 user_sid = 5 [packed = true];
  inline int user_sid_size() const;
  inline void clear_user_sid();
  static const int kUserSidFieldNumber = 5;
  inline ::google::protobuf::int32 user_sid(int index) const;
  inline void set_user_sid(int index, ::google::protobuf::int32 value);
  inline void add_user_sid(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      user_sid() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_user_sid();
  
  // @@protoc_insertion_point(class_scope:OSMPBF.DenseInfo)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > version_;
  mutable int _version_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > timestamp_;
  mutable int _timestamp_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > changeset_;
  mutable int _changeset_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > uid_;
  mutable int _uid_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > user_sid_;
  mutable int _user_sid_cached_byte_size_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static DenseInfo* default_instance_;
};
// -------------------------------------------------------------------

class ChangeSet : public ::google::protobuf::MessageLite {
 public:
  ChangeSet();
  virtual ~ChangeSet();
  
  ChangeSet(const ChangeSet& from);
  
  inline ChangeSet& operator=(const ChangeSet& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const ChangeSet& default_instance();
  
  void Swap(ChangeSet* other);
  
  // implements Message ----------------------------------------------
  
  ChangeSet* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const ChangeSet& from);
  void MergeFrom(const ChangeSet& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // required int64 id = 1;
  inline bool has_id() const;
  inline void clear_id();
  static const int kIdFieldNumber = 1;
  inline ::google::protobuf::int64 id() const;
  inline void set_id(::google::protobuf::int64 value);
  
  // @@protoc_insertion_point(class_scope:OSMPBF.ChangeSet)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int64 id_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static ChangeSet* default_instance_;
};
// -------------------------------------------------------------------

class Node : public ::google::protobuf::MessageLite {
 public:
  Node();
  virtual ~Node();
  
  Node(const Node& from);
  
  inline Node& operator=(const Node& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Node& default_instance();
  
  void Swap(Node* other);
  
  // implements Message ----------------------------------------------
  
  Node* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Node& from);
  void MergeFrom(const Node& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // required sint64 id = 1;
  inline bool has_id() const;
  inline void clear_id();
  static const int kIdFieldNumber = 1;
  inline ::google::protobuf::int64 id() const;
  inline void set_id(::google::protobuf::int64 value);
  
  // repeated uint32 keys = 2 [packed = true];
  inline int keys_size() const;
  inline void clear_keys();
  static const int kKeysFieldNumber = 2;
  inline ::google::protobuf::uint32 keys(int index) const;
  inline void set_keys(int index, ::google::protobuf::uint32 value);
  inline void add_keys(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      keys() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_keys();
  
  // repeated uint32 vals = 3 [packed = true];
  inline int vals_size() const;
  inline void clear_vals();
  static const int kValsFieldNumber = 3;
  inline ::google::protobuf::uint32 vals(int index) const;
  inline void set_vals(int index, ::google::protobuf::uint32 value);
  inline void add_vals(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      vals() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_vals();
  
  // optional .OSMPBF.Info info = 4;
  inline bool has_info() const;
  inline void clear_info();
  static const int kInfoFieldNumber = 4;
  inline const ::OSMPBF::Info& info() const;
  inline ::OSMPBF::Info* mutable_info();
  
  // required sint64 lat = 8;
  inline bool has_lat() const;
  inline void clear_lat();
  static const int kLatFieldNumber = 8;
  inline ::google::protobuf::int64 lat() const;
  inline void set_lat(::google::protobuf::int64 value);
  
  // required sint64 lon = 9;
  inline bool has_lon() const;
  inline void clear_lon();
  static const int kLonFieldNumber = 9;
  inline ::google::protobuf::int64 lon() const;
  inline void set_lon(::google::protobuf::int64 value);
  
  // @@protoc_insertion_point(class_scope:OSMPBF.Node)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int64 id_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_;
  mutable int _keys_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vals_;
  mutable int _vals_cached_byte_size_;
  ::OSMPBF::Info* info_;
  ::google::protobuf::int64 lat_;
  ::google::protobuf::int64 lon_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static Node* default_instance_;
};
// -------------------------------------------------------------------

class DenseNodes : public ::google::protobuf::MessageLite {
 public:
  DenseNodes();
  virtual ~DenseNodes();
  
  DenseNodes(const DenseNodes& from);
  
  inline DenseNodes& operator=(const DenseNodes& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const DenseNodes& default_instance();
  
  void Swap(DenseNodes* other);
  
  // implements Message ----------------------------------------------
  
  DenseNodes* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const DenseNodes& from);
  void MergeFrom(const DenseNodes& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // repeated sint64 id = 1 [packed = true];
  inline int id_size() const;
  inline void clear_id();
  static const int kIdFieldNumber = 1;
  inline ::google::protobuf::int64 id(int index) const;
  inline void set_id(int index, ::google::protobuf::int64 value);
  inline void add_id(::google::protobuf::int64 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      id() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_id();
  
  // optional .OSMPBF.DenseInfo denseinfo = 5;
  inline bool has_denseinfo() const;
  inline void clear_denseinfo();
  static const int kDenseinfoFieldNumber = 5;
  inline const ::OSMPBF::DenseInfo& denseinfo() const;
  inline ::OSMPBF::DenseInfo* mutable_denseinfo();
  
  // repeated sint64 lat = 8 [packed = true];
  inline int lat_size() const;
  inline void clear_lat();
  static const int kLatFieldNumber = 8;
  inline ::google::protobuf::int64 lat(int index) const;
  inline void set_lat(int index, ::google::protobuf::int64 value);
  inline void add_lat(::google::protobuf::int64 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      lat() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_lat();
  
  // repeated sint64 lon = 9 [packed = true];
  inline int lon_size() const;
  inline void clear_lon();
  static const int kLonFieldNumber = 9;
  inline ::google::protobuf::int64 lon(int index) const;
  inline void set_lon(int index, ::google::protobuf::int64 value);
  inline void add_lon(::google::protobuf::int64 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      lon() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_lon();
  
  // repeated int32 keys_vals = 10 [packed = true];
  inline int keys_vals_size() const;
  inline void clear_keys_vals();
  static const int kKeysValsFieldNumber = 10;
  inline ::google::protobuf::int32 keys_vals(int index) const;
  inline void set_keys_vals(int index, ::google::protobuf::int32 value);
  inline void add_keys_vals(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      keys_vals() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_keys_vals();
  
  // @@protoc_insertion_point(class_scope:OSMPBF.DenseNodes)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > id_;
  mutable int _id_cached_byte_size_;
  ::OSMPBF::DenseInfo* denseinfo_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > lat_;
  mutable int _lat_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > lon_;
  mutable int _lon_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > keys_vals_;
  mutable int _keys_vals_cached_byte_size_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static DenseNodes* default_instance_;
};
// -------------------------------------------------------------------

class Way : public ::google::protobuf::MessageLite {
 public:
  Way();
  virtual ~Way();
  
  Way(const Way& from);
  
  inline Way& operator=(const Way& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Way& default_instance();
  
  void Swap(Way* other);
  
  // implements Message ----------------------------------------------
  
  Way* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Way& from);
  void MergeFrom(const Way& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // required int64 id = 1;
  inline bool has_id() const;
  inline void clear_id();
  static const int kIdFieldNumber = 1;
  inline ::google::protobuf::int64 id() const;
  inline void set_id(::google::protobuf::int64 value);
  
  // repeated uint32 keys = 2 [packed = true];
  inline int keys_size() const;
  inline void clear_keys();
  static const int kKeysFieldNumber = 2;
  inline ::google::protobuf::uint32 keys(int index) const;
  inline void set_keys(int index, ::google::protobuf::uint32 value);
  inline void add_keys(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      keys() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_keys();
  
  // repeated uint32 vals = 3 [packed = true];
  inline int vals_size() const;
  inline void clear_vals();
  static const int kValsFieldNumber = 3;
  inline ::google::protobuf::uint32 vals(int index) const;
  inline void set_vals(int index, ::google::protobuf::uint32 value);
  inline void add_vals(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      vals() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_vals();
  
  // optional .OSMPBF.Info info = 4;
  inline bool has_info() const;
  inline void clear_info();
  static const int kInfoFieldNumber = 4;
  inline const ::OSMPBF::Info& info() const;
  inline ::OSMPBF::Info* mutable_info();
  
  // repeated sint64 refs = 8 [packed = true];
  inline int refs_size() const;
  inline void clear_refs();
  static const int kRefsFieldNumber = 8;
  inline ::google::protobuf::int64 refs(int index) const;
  inline void set_refs(int index, ::google::protobuf::int64 value);
  inline void add_refs(::google::protobuf::int64 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      refs() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_refs();
  
  // @@protoc_insertion_point(class_scope:OSMPBF.Way)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int64 id_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_;
  mutable int _keys_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vals_;
  mutable int _vals_cached_byte_size_;
  ::OSMPBF::Info* info_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > refs_;
  mutable int _refs_cached_byte_size_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static Way* default_instance_;
};
// -------------------------------------------------------------------

class Relation : public ::google::protobuf::MessageLite {
 public:
  Relation();
  virtual ~Relation();
  
  Relation(const Relation& from);
  
  inline Relation& operator=(const Relation& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Relation& default_instance();
  
  void Swap(Relation* other);
  
  // implements Message ----------------------------------------------
  
  Relation* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Relation& from);
  void MergeFrom(const Relation& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  typedef Relation_MemberType MemberType;
  static const MemberType NODE = Relation_MemberType_NODE;
  static const MemberType WAY = Relation_MemberType_WAY;
  static const MemberType RELATION = Relation_MemberType_RELATION;
  static inline bool MemberType_IsValid(int value) {
    return Relation_MemberType_IsValid(value);
  }
  static const MemberType MemberType_MIN =
    Relation_MemberType_MemberType_MIN;
  static const MemberType MemberType_MAX =
    Relation_MemberType_MemberType_MAX;
  static const int MemberType_ARRAYSIZE =
    Relation_MemberType_MemberType_ARRAYSIZE;
  
  // accessors -------------------------------------------------------
  
  // required int64 id = 1;
  inline bool has_id() const;
  inline void clear_id();
  static const int kIdFieldNumber = 1;
  inline ::google::protobuf::int64 id() const;
  inline void set_id(::google::protobuf::int64 value);
  
  // repeated uint32 keys = 2 [packed = true];
  inline int keys_size() const;
  inline void clear_keys();
  static const int kKeysFieldNumber = 2;
  inline ::google::protobuf::uint32 keys(int index) const;
  inline void set_keys(int index, ::google::protobuf::uint32 value);
  inline void add_keys(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      keys() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_keys();
  
  // repeated uint32 vals = 3 [packed = true];
  inline int vals_size() const;
  inline void clear_vals();
  static const int kValsFieldNumber = 3;
  inline ::google::protobuf::uint32 vals(int index) const;
  inline void set_vals(int index, ::google::protobuf::uint32 value);
  inline void add_vals(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      vals() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_vals();
  
  // optional .OSMPBF.Info info = 4;
  inline bool has_info() const;
  inline void clear_info();
  static const int kInfoFieldNumber = 4;
  inline const ::OSMPBF::Info& info() const;
  inline ::OSMPBF::Info* mutable_info();
  
  // repeated int32 roles_sid = 8 [packed = true];
  inline int roles_sid_size() const;
  inline void clear_roles_sid();
  static const int kRolesSidFieldNumber = 8;
  inline ::google::protobuf::int32 roles_sid(int index) const;
  inline void set_roles_sid(int index, ::google::protobuf::int32 value);
  inline void add_roles_sid(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      roles_sid() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_roles_sid();
  
  // repeated sint64 memids = 9 [packed = true];
  inline int memids_size() const;
  inline void clear_memids();
  static const int kMemidsFieldNumber = 9;
  inline ::google::protobuf::int64 memids(int index) const;
  inline void set_memids(int index, ::google::protobuf::int64 value);
  inline void add_memids(::google::protobuf::int64 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
      memids() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
      mutable_memids();
  
  // repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];
  inline int types_size() const;
  inline void clear_types();
  static const int kTypesFieldNumber = 10;
  inline ::OSMPBF::Relation_MemberType types(int index) const;
  inline void set_types(int index, ::OSMPBF::Relation_MemberType value);
  inline void add_types(::OSMPBF::Relation_MemberType value);
  inline const ::google::protobuf::RepeatedField<int>& types() const;
  inline ::google::protobuf::RepeatedField<int>* mutable_types();
  
  // @@protoc_insertion_point(class_scope:OSMPBF.Relation)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int64 id_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > keys_;
  mutable int _keys_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vals_;
  mutable int _vals_cached_byte_size_;
  ::OSMPBF::Info* info_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > roles_sid_;
  mutable int _roles_sid_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int64 > memids_;
  mutable int _memids_cached_byte_size_;
  ::google::protobuf::RepeatedField<int> types_;
  mutable int _types_cached_byte_size_;
  friend void  protobuf_AddDesc_osmformat_2eproto();
  friend void protobuf_AssignDesc_osmformat_2eproto();
  friend void protobuf_ShutdownFile_osmformat_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static Relation* default_instance_;
};
// ===================================================================


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

// HeaderBlock

// optional .OSMPBF.HeaderBBox bbox = 1;
inline bool HeaderBlock::has_bbox() const {
  return _has_bit(0);
}
inline void HeaderBlock::clear_bbox() {
  if (bbox_ != NULL) bbox_->::OSMPBF::HeaderBBox::Clear();
  _clear_bit(0);
}
inline const ::OSMPBF::HeaderBBox& HeaderBlock::bbox() const {
  return bbox_ != NULL ? *bbox_ : *default_instance_->bbox_;
}
inline ::OSMPBF::HeaderBBox* HeaderBlock::mutable_bbox() {
  _set_bit(0);
  if (bbox_ == NULL) bbox_ = new ::OSMPBF::HeaderBBox;
  return bbox_;
}

// repeated string required_features = 4;
inline int HeaderBlock::required_features_size() const {
  return required_features_.size();
}
inline void HeaderBlock::clear_required_features() {
  required_features_.Clear();
}
inline const ::std::string& HeaderBlock::required_features(int index) const {
  return required_features_.Get(index);
}
inline ::std::string* HeaderBlock::mutable_required_features(int index) {
  return required_features_.Mutable(index);
}
inline void HeaderBlock::set_required_features(int index, const ::std::string& value) {
  required_features_.Mutable(index)->assign(value);
}
inline void HeaderBlock::set_required_features(int index, const char* value) {
  required_features_.Mutable(index)->assign(value);
}
inline void HeaderBlock::set_required_features(int index, const char* value, size_t size) {
  required_features_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* HeaderBlock::add_required_features() {
  return required_features_.Add();
}
inline void HeaderBlock::add_required_features(const ::std::string& value) {
  required_features_.Add()->assign(value);
}
inline void HeaderBlock::add_required_features(const char* value) {
  required_features_.Add()->assign(value);
}
inline void HeaderBlock::add_required_features(const char* value, size_t size) {
  required_features_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
HeaderBlock::required_features() const {
  return required_features_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
HeaderBlock::mutable_required_features() {
  return &required_features_;
}

// repeated string optional_features = 5;
inline int HeaderBlock::optional_features_size() const {
  return optional_features_.size();
}
inline void HeaderBlock::clear_optional_features() {
  optional_features_.Clear();
}
inline const ::std::string& HeaderBlock::optional_features(int index) const {
  return optional_features_.Get(index);
}
inline ::std::string* HeaderBlock::mutable_optional_features(int index) {
  return optional_features_.Mutable(index);
}
inline void HeaderBlock::set_optional_features(int index, const ::std::string& value) {
  optional_features_.Mutable(index)->assign(value);
}
inline void HeaderBlock::set_optional_features(int index, const char* value) {
  optional_features_.Mutable(index)->assign(value);
}
inline void HeaderBlock::set_optional_features(int index, const char* value, size_t size) {
  optional_features_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* HeaderBlock::add_optional_features() {
  return optional_features_.Add();
}
inline void HeaderBlock::add_optional_features(const ::std::string& value) {
  optional_features_.Add()->assign(value);
}
inline void HeaderBlock::add_optional_features(const char* value) {
  optional_features_.Add()->assign(value);
}
inline void HeaderBlock::add_optional_features(const char* value, size_t size) {
  optional_features_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
HeaderBlock::optional_features() const {
  return optional_features_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
HeaderBlock::mutable_optional_features() {
  return &optional_features_;
}

// optional string writingprogram = 16;
inline bool HeaderBlock::has_writingprogram() const {
  return _has_bit(3);
}
inline void HeaderBlock::clear_writingprogram() {
  if (writingprogram_ != &_default_writingprogram_) {
    writingprogram_->clear();
  }
  _clear_bit(3);
}
inline const ::std::string& HeaderBlock::writingprogram() const {
  return *writingprogram_;
}
inline void HeaderBlock::set_writingprogram(const ::std::string& value) {
  _set_bit(3);
  if (writingprogram_ == &_default_writingprogram_) {
    writingprogram_ = new ::std::string;
  }
  writingprogram_->assign(value);
}
inline void HeaderBlock::set_writingprogram(const char* value) {
  _set_bit(3);
  if (writingprogram_ == &_default_writingprogram_) {
    writingprogram_ = new ::std::string;
  }
  writingprogram_->assign(value);
}
inline void HeaderBlock::set_writingprogram(const char* value, size_t size) {
  _set_bit(3);
  if (writingprogram_ == &_default_writingprogram_) {
    writingprogram_ = new ::std::string;
  }
  writingprogram_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* HeaderBlock::mutable_writingprogram() {
  _set_bit(3);
  if (writingprogram_ == &_default_writingprogram_) {
    writingprogram_ = new ::std::string;
  }
  return writingprogram_;
}

// optional string source = 17;
inline bool HeaderBlock::has_source() const {
  return _has_bit(4);
}
inline void HeaderBlock::clear_source() {
  if (source_ != &_default_source_) {
    source_->clear();
  }
  _clear_bit(4);
}
inline const ::std::string& HeaderBlock::source() const {
  return *source_;
}
inline void HeaderBlock::set_source(const ::std::string& value) {
  _set_bit(4);
  if (source_ == &_default_source_) {
    source_ = new ::std::string;
  }
  source_->assign(value);
}
inline void HeaderBlock::set_source(const char* value) {
  _set_bit(4);
  if (source_ == &_default_source_) {
    source_ = new ::std::string;
  }
  source_->assign(value);
}
inline void HeaderBlock::set_source(const char* value, size_t size) {
  _set_bit(4);
  if (source_ == &_default_source_) {
    source_ = new ::std::string;
  }
  source_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* HeaderBlock::mutable_source() {
  _set_bit(4);
  if (source_ == &_default_source_) {
    source_ = new ::std::string;
  }
  return source_;
}

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

// HeaderBBox

// required sint64 left = 1;
inline bool HeaderBBox::has_left() const {
  return _has_bit(0);
}
inline void HeaderBBox::clear_left() {
  left_ = GOOGLE_LONGLONG(0);
  _clear_bit(0);
}
inline ::google::protobuf::int64 HeaderBBox::left() const {
  return left_;
}
inline void HeaderBBox::set_left(::google::protobuf::int64 value) {
  _set_bit(0);
  left_ = value;
}

// required sint64 right = 2;
inline bool HeaderBBox::has_right() const {
  return _has_bit(1);
}
inline void HeaderBBox::clear_right() {
  right_ = GOOGLE_LONGLONG(0);
  _clear_bit(1);
}
inline ::google::protobuf::int64 HeaderBBox::right() const {
  return right_;
}
inline void HeaderBBox::set_right(::google::protobuf::int64 value) {
  _set_bit(1);
  right_ = value;
}

// required sint64 top = 3;
inline bool HeaderBBox::has_top() const {
  return _has_bit(2);
}
inline void HeaderBBox::clear_top() {
  top_ = GOOGLE_LONGLONG(0);
  _clear_bit(2);
}
inline ::google::protobuf::int64 HeaderBBox::top() const {
  return top_;
}
inline void HeaderBBox::set_top(::google::protobuf::int64 value) {
  _set_bit(2);
  top_ = value;
}

// required sint64 bottom = 4;
inline bool HeaderBBox::has_bottom() const {
  return _has_bit(3);
}
inline void HeaderBBox::clear_bottom() {
  bottom_ = GOOGLE_LONGLONG(0);
  _clear_bit(3);
}
inline ::google::protobuf::int64 HeaderBBox::bottom() const {
  return bottom_;
}
inline void HeaderBBox::set_bottom(::google::protobuf::int64 value) {
  _set_bit(3);
  bottom_ = value;
}

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

// PrimitiveBlock

// required .OSMPBF.StringTable stringtable = 1;
inline bool PrimitiveBlock::has_stringtable() const {
  return _has_bit(0);
}
inline void PrimitiveBlock::clear_stringtable() {
  if (stringtable_ != NULL) stringtable_->::OSMPBF::StringTable::Clear();
  _clear_bit(0);
}
inline const ::OSMPBF::StringTable& PrimitiveBlock::stringtable() const {
  return stringtable_ != NULL ? *stringtable_ : *default_instance_->stringtable_;
}
inline ::OSMPBF::StringTable* PrimitiveBlock::mutable_stringtable() {
  _set_bit(0);
  if (stringtable_ == NULL) stringtable_ = new ::OSMPBF::StringTable;
  return stringtable_;
}

// repeated .OSMPBF.PrimitiveGroup primitivegroup = 2;
inline int PrimitiveBlock::primitivegroup_size() const {
  return primitivegroup_.size();
}
inline void PrimitiveBlock::clear_primitivegroup() {
  primitivegroup_.Clear();
}
inline const ::OSMPBF::PrimitiveGroup& PrimitiveBlock::primitivegroup(int index) const {
  return primitivegroup_.Get(index);
}
inline ::OSMPBF::PrimitiveGroup* PrimitiveBlock::mutable_primitivegroup(int index) {
  return primitivegroup_.Mutable(index);
}
inline ::OSMPBF::PrimitiveGroup* PrimitiveBlock::add_primitivegroup() {
  return primitivegroup_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >&
PrimitiveBlock::primitivegroup() const {
  return primitivegroup_;
}
inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::PrimitiveGroup >*
PrimitiveBlock::mutable_primitivegroup() {
  return &primitivegroup_;
}

// optional int32 granularity = 17 [default = 100];
inline bool PrimitiveBlock::has_granularity() const {
  return _has_bit(2);
}
inline void PrimitiveBlock::clear_granularity() {
  granularity_ = 100;
  _clear_bit(2);
}
inline ::google::protobuf::int32 PrimitiveBlock::granularity() const {
  return granularity_;
}
inline void PrimitiveBlock::set_granularity(::google::protobuf::int32 value) {
  _set_bit(2);
  granularity_ = value;
}

// optional int64 lat_offset = 19 [default = 0];
inline bool PrimitiveBlock::has_lat_offset() const {
  return _has_bit(3);
}
inline void PrimitiveBlock::clear_lat_offset() {
  lat_offset_ = GOOGLE_LONGLONG(0);
  _clear_bit(3);
}
inline ::google::protobuf::int64 PrimitiveBlock::lat_offset() const {
  return lat_offset_;
}
inline void PrimitiveBlock::set_lat_offset(::google::protobuf::int64 value) {
  _set_bit(3);
  lat_offset_ = value;
}

// optional int64 lon_offset = 20 [default = 0];
inline bool PrimitiveBlock::has_lon_offset() const {
  return _has_bit(4);
}
inline void PrimitiveBlock::clear_lon_offset() {
  lon_offset_ = GOOGLE_LONGLONG(0);
  _clear_bit(4);
}
inline ::google::protobuf::int64 PrimitiveBlock::lon_offset() const {
  return lon_offset_;
}
inline void PrimitiveBlock::set_lon_offset(::google::protobuf::int64 value) {
  _set_bit(4);
  lon_offset_ = value;
}

// optional int32 date_granularity = 18 [default = 1000];
inline bool PrimitiveBlock::has_date_granularity() const {
  return _has_bit(5);
}
inline void PrimitiveBlock::clear_date_granularity() {
  date_granularity_ = 1000;
  _clear_bit(5);
}
inline ::google::protobuf::int32 PrimitiveBlock::date_granularity() const {
  return date_granularity_;
}
inline void PrimitiveBlock::set_date_granularity(::google::protobuf::int32 value) {
  _set_bit(5);
  date_granularity_ = value;
}

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

// PrimitiveGroup

// repeated .OSMPBF.Node nodes = 1;
inline int PrimitiveGroup::nodes_size() const {
  return nodes_.size();
}
inline void PrimitiveGroup::clear_nodes() {
  nodes_.Clear();
}
inline const ::OSMPBF::Node& PrimitiveGroup::nodes(int index) const {
  return nodes_.Get(index);
}
inline ::OSMPBF::Node* PrimitiveGroup::mutable_nodes(int index) {
  return nodes_.Mutable(index);
}
inline ::OSMPBF::Node* PrimitiveGroup::add_nodes() {
  return nodes_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >&
PrimitiveGroup::nodes() const {
  return nodes_;
}
inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Node >*
PrimitiveGroup::mutable_nodes() {
  return &nodes_;
}

// optional .OSMPBF.DenseNodes dense = 2;
inline bool PrimitiveGroup::has_dense() const {
  return _has_bit(1);
}
inline void PrimitiveGroup::clear_dense() {
  if (dense_ != NULL) dense_->::OSMPBF::DenseNodes::Clear();
  _clear_bit(1);
}
inline const ::OSMPBF::DenseNodes& PrimitiveGroup::dense() const {
  return dense_ != NULL ? *dense_ : *default_instance_->dense_;
}
inline ::OSMPBF::DenseNodes* PrimitiveGroup::mutable_dense() {
  _set_bit(1);
  if (dense_ == NULL) dense_ = new ::OSMPBF::DenseNodes;
  return dense_;
}

// repeated .OSMPBF.Way ways = 3;
inline int PrimitiveGroup::ways_size() const {
  return ways_.size();
}
inline void PrimitiveGroup::clear_ways() {
  ways_.Clear();
}
inline const ::OSMPBF::Way& PrimitiveGroup::ways(int index) const {
  return ways_.Get(index);
}
inline ::OSMPBF::Way* PrimitiveGroup::mutable_ways(int index) {
  return ways_.Mutable(index);
}
inline ::OSMPBF::Way* PrimitiveGroup::add_ways() {
  return ways_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >&
PrimitiveGroup::ways() const {
  return ways_;
}
inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Way >*
PrimitiveGroup::mutable_ways() {
  return &ways_;
}

// repeated .OSMPBF.Relation relations = 4;
inline int PrimitiveGroup::relations_size() const {
  return relations_.size();
}
inline void PrimitiveGroup::clear_relations() {
  relations_.Clear();
}
inline const ::OSMPBF::Relation& PrimitiveGroup::relations(int index) const {
  return relations_.Get(index);
}
inline ::OSMPBF::Relation* PrimitiveGroup::mutable_relations(int index) {
  return relations_.Mutable(index);
}
inline ::OSMPBF::Relation* PrimitiveGroup::add_relations() {
  return relations_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >&
PrimitiveGroup::relations() const {
  return relations_;
}
inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::Relation >*
PrimitiveGroup::mutable_relations() {
  return &relations_;
}

// repeated .OSMPBF.ChangeSet changesets = 5;
inline int PrimitiveGroup::changesets_size() const {
  return changesets_.size();
}
inline void PrimitiveGroup::clear_changesets() {
  changesets_.Clear();
}
inline const ::OSMPBF::ChangeSet& PrimitiveGroup::changesets(int index) const {
  return changesets_.Get(index);
}
inline ::OSMPBF::ChangeSet* PrimitiveGroup::mutable_changesets(int index) {
  return changesets_.Mutable(index);
}
inline ::OSMPBF::ChangeSet* PrimitiveGroup::add_changesets() {
  return changesets_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >&
PrimitiveGroup::changesets() const {
  return changesets_;
}
inline ::google::protobuf::RepeatedPtrField< ::OSMPBF::ChangeSet >*
PrimitiveGroup::mutable_changesets() {
  return &changesets_;
}

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

// StringTable

// repeated bytes s = 1;
inline int StringTable::s_size() const {
  return s_.size();
}
inline void StringTable::clear_s() {
  s_.Clear();
}
inline const ::std::string& StringTable::s(int index) const {
  return s_.Get(index);
}
inline ::std::string* StringTable::mutable_s(int index) {
  return s_.Mutable(index);
}
inline void StringTable::set_s(int index, const ::std::string& value) {
  s_.Mutable(index)->assign(value);
}
inline void StringTable::set_s(int index, const char* value) {
  s_.Mutable(index)->assign(value);
}
inline void StringTable::set_s(int index, const void* value, size_t size) {
  s_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* StringTable::add_s() {
  return s_.Add();
}
inline void StringTable::add_s(const ::std::string& value) {
  s_.Add()->assign(value);
}
inline void StringTable::add_s(const char* value) {
  s_.Add()->assign(value);
}
inline void StringTable::add_s(const void* value, size_t size) {
  s_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
StringTable::s() const {
  return s_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
StringTable::mutable_s() {
  return &s_;
}

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

// Info

// optional int32 version = 1 [default = -1];
inline bool Info::has_version() const {
  return _has_bit(0);
}
inline void Info::clear_version() {
  version_ = -1;
  _clear_bit(0);
}
inline ::google::protobuf::int32 Info::version() const {
  return version_;
}
inline void Info::set_version(::google::protobuf::int32 value) {
  _set_bit(0);
  version_ = value;
}

// optional int64 timestamp = 2;
inline bool Info::has_timestamp() const {
  return _has_bit(1);
}
inline void Info::clear_timestamp() {
  timestamp_ = GOOGLE_LONGLONG(0);
  _clear_bit(1);
}
inline ::google::protobuf::int64 Info::timestamp() const {
  return timestamp_;
}
inline void Info::set_timestamp(::google::protobuf::int64 value) {
  _set_bit(1);
  timestamp_ = value;
}

// optional int64 changeset = 3;
inline bool Info::has_changeset() const {
  return _has_bit(2);
}
inline void Info::clear_changeset() {
  changeset_ = GOOGLE_LONGLONG(0);
  _clear_bit(2);
}
inline ::google::protobuf::int64 Info::changeset() const {
  return changeset_;
}
inline void Info::set_changeset(::google::protobuf::int64 value) {
  _set_bit(2);
  changeset_ = value;
}

// optional int32 uid = 4;
inline bool Info::has_uid() const {
  return _has_bit(3);
}
inline void Info::clear_uid() {
  uid_ = 0;
  _clear_bit(3);
}
inline ::google::protobuf::int32 Info::uid() const {
  return uid_;
}
inline void Info::set_uid(::google::protobuf::int32 value) {
  _set_bit(3);
  uid_ = value;
}

// optional uint32 user_sid = 5;
inline bool Info::has_user_sid() const {
  return _has_bit(4);
}
inline void Info::clear_user_sid() {
  user_sid_ = 0u;
  _clear_bit(4);
}
inline ::google::protobuf::uint32 Info::user_sid() const {
  return user_sid_;
}
inline void Info::set_user_sid(::google::protobuf::uint32 value) {
  _set_bit(4);
  user_sid_ = value;
}

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

// DenseInfo

// repeated int32 version = 1 [packed = true];
inline int DenseInfo::version_size() const {
  return version_.size();
}
inline void DenseInfo::clear_version() {
  version_.Clear();
}
inline ::google::protobuf::int32 DenseInfo::version(int index) const {
  return version_.Get(index);
}
inline void DenseInfo::set_version(int index, ::google::protobuf::int32 value) {
  version_.Set(index, value);
}
inline void DenseInfo::add_version(::google::protobuf::int32 value) {
  version_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
DenseInfo::version() const {
  return version_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
DenseInfo::mutable_version() {
  return &version_;
}

// repeated sint64 timestamp = 2 [packed = true];
inline int DenseInfo::timestamp_size() const {
  return timestamp_.size();
}
inline void DenseInfo::clear_timestamp() {
  timestamp_.Clear();
}
inline ::google::protobuf::int64 DenseInfo::timestamp(int index) const {
  return timestamp_.Get(index);
}
inline void DenseInfo::set_timestamp(int index, ::google::protobuf::int64 value) {
  timestamp_.Set(index, value);
}
inline void DenseInfo::add_timestamp(::google::protobuf::int64 value) {
  timestamp_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
DenseInfo::timestamp() const {
  return timestamp_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
DenseInfo::mutable_timestamp() {
  return &timestamp_;
}

// repeated sint64 changeset = 3 [packed = true];
inline int DenseInfo::changeset_size() const {
  return changeset_.size();
}
inline void DenseInfo::clear_changeset() {
  changeset_.Clear();
}
inline ::google::protobuf::int64 DenseInfo::changeset(int index) const {
  return changeset_.Get(index);
}
inline void DenseInfo::set_changeset(int index, ::google::protobuf::int64 value) {
  changeset_.Set(index, value);
}
inline void DenseInfo::add_changeset(::google::protobuf::int64 value) {
  changeset_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
DenseInfo::changeset() const {
  return changeset_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
DenseInfo::mutable_changeset() {
  return &changeset_;
}

// repeated sint32 uid = 4 [packed = true];
inline int DenseInfo::uid_size() const {
  return uid_.size();
}
inline void DenseInfo::clear_uid() {
  uid_.Clear();
}
inline ::google::protobuf::int32 DenseInfo::uid(int index) const {
  return uid_.Get(index);
}
inline void DenseInfo::set_uid(int index, ::google::protobuf::int32 value) {
  uid_.Set(index, value);
}
inline void DenseInfo::add_uid(::google::protobuf::int32 value) {
  uid_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
DenseInfo::uid() const {
  return uid_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
DenseInfo::mutable_uid() {
  return &uid_;
}

// repeated sint32 user_sid = 5 [packed = true];
inline int DenseInfo::user_sid_size() const {
  return user_sid_.size();
}
inline void DenseInfo::clear_user_sid() {
  user_sid_.Clear();
}
inline ::google::protobuf::int32 DenseInfo::user_sid(int index) const {
  return user_sid_.Get(index);
}
inline void DenseInfo::set_user_sid(int index, ::google::protobuf::int32 value) {
  user_sid_.Set(index, value);
}
inline void DenseInfo::add_user_sid(::google::protobuf::int32 value) {
  user_sid_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
DenseInfo::user_sid() const {
  return user_sid_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
DenseInfo::mutable_user_sid() {
  return &user_sid_;
}

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

// ChangeSet

// required int64 id = 1;
inline bool ChangeSet::has_id() const {
  return _has_bit(0);
}
inline void ChangeSet::clear_id() {
  id_ = GOOGLE_LONGLONG(0);
  _clear_bit(0);
}
inline ::google::protobuf::int64 ChangeSet::id() const {
  return id_;
}
inline void ChangeSet::set_id(::google::protobuf::int64 value) {
  _set_bit(0);
  id_ = value;
}

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

// Node

// required sint64 id = 1;
inline bool Node::has_id() const {
  return _has_bit(0);
}
inline void Node::clear_id() {
  id_ = GOOGLE_LONGLONG(0);
  _clear_bit(0);
}
inline ::google::protobuf::int64 Node::id() const {
  return id_;
}
inline void Node::set_id(::google::protobuf::int64 value) {
  _set_bit(0);
  id_ = value;
}

// repeated uint32 keys = 2 [packed = true];
inline int Node::keys_size() const {
  return keys_.size();
}
inline void Node::clear_keys() {
  keys_.Clear();
}
inline ::google::protobuf::uint32 Node::keys(int index) const {
  return keys_.Get(index);
}
inline void Node::set_keys(int index, ::google::protobuf::uint32 value) {
  keys_.Set(index, value);
}
inline void Node::add_keys(::google::protobuf::uint32 value) {
  keys_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
Node::keys() const {
  return keys_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
Node::mutable_keys() {
  return &keys_;
}

// repeated uint32 vals = 3 [packed = true];
inline int Node::vals_size() const {
  return vals_.size();
}
inline void Node::clear_vals() {
  vals_.Clear();
}
inline ::google::protobuf::uint32 Node::vals(int index) const {
  return vals_.Get(index);
}
inline void Node::set_vals(int index, ::google::protobuf::uint32 value) {
  vals_.Set(index, value);
}
inline void Node::add_vals(::google::protobuf::uint32 value) {
  vals_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
Node::vals() const {
  return vals_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
Node::mutable_vals() {
  return &vals_;
}

// optional .OSMPBF.Info info = 4;
inline bool Node::has_info() const {
  return _has_bit(3);
}
inline void Node::clear_info() {
  if (info_ != NULL) info_->::OSMPBF::Info::Clear();
  _clear_bit(3);
}
inline const ::OSMPBF::Info& Node::info() const {
  return info_ != NULL ? *info_ : *default_instance_->info_;
}
inline ::OSMPBF::Info* Node::mutable_info() {
  _set_bit(3);
  if (info_ == NULL) info_ = new ::OSMPBF::Info;
  return info_;
}

// required sint64 lat = 8;
inline bool Node::has_lat() const {
  return _has_bit(4);
}
inline void Node::clear_lat() {
  lat_ = GOOGLE_LONGLONG(0);
  _clear_bit(4);
}
inline ::google::protobuf::int64 Node::lat() const {
  return lat_;
}
inline void Node::set_lat(::google::protobuf::int64 value) {
  _set_bit(4);
  lat_ = value;
}

// required sint64 lon = 9;
inline bool Node::has_lon() const {
  return _has_bit(5);
}
inline void Node::clear_lon() {
  lon_ = GOOGLE_LONGLONG(0);
  _clear_bit(5);
}
inline ::google::protobuf::int64 Node::lon() const {
  return lon_;
}
inline void Node::set_lon(::google::protobuf::int64 value) {
  _set_bit(5);
  lon_ = value;
}

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

// DenseNodes

// repeated sint64 id = 1 [packed = true];
inline int DenseNodes::id_size() const {
  return id_.size();
}
inline void DenseNodes::clear_id() {
  id_.Clear();
}
inline ::google::protobuf::int64 DenseNodes::id(int index) const {
  return id_.Get(index);
}
inline void DenseNodes::set_id(int index, ::google::protobuf::int64 value) {
  id_.Set(index, value);
}
inline void DenseNodes::add_id(::google::protobuf::int64 value) {
  id_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
DenseNodes::id() const {
  return id_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
DenseNodes::mutable_id() {
  return &id_;
}

// optional .OSMPBF.DenseInfo denseinfo = 5;
inline bool DenseNodes::has_denseinfo() const {
  return _has_bit(1);
}
inline void DenseNodes::clear_denseinfo() {
  if (denseinfo_ != NULL) denseinfo_->::OSMPBF::DenseInfo::Clear();
  _clear_bit(1);
}
inline const ::OSMPBF::DenseInfo& DenseNodes::denseinfo() const {
  return denseinfo_ != NULL ? *denseinfo_ : *default_instance_->denseinfo_;
}
inline ::OSMPBF::DenseInfo* DenseNodes::mutable_denseinfo() {
  _set_bit(1);
  if (denseinfo_ == NULL) denseinfo_ = new ::OSMPBF::DenseInfo;
  return denseinfo_;
}

// repeated sint64 lat = 8 [packed = true];
inline int DenseNodes::lat_size() const {
  return lat_.size();
}
inline void DenseNodes::clear_lat() {
  lat_.Clear();
}
inline ::google::protobuf::int64 DenseNodes::lat(int index) const {
  return lat_.Get(index);
}
inline void DenseNodes::set_lat(int index, ::google::protobuf::int64 value) {
  lat_.Set(index, value);
}
inline void DenseNodes::add_lat(::google::protobuf::int64 value) {
  lat_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
DenseNodes::lat() const {
  return lat_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
DenseNodes::mutable_lat() {
  return &lat_;
}

// repeated sint64 lon = 9 [packed = true];
inline int DenseNodes::lon_size() const {
  return lon_.size();
}
inline void DenseNodes::clear_lon() {
  lon_.Clear();
}
inline ::google::protobuf::int64 DenseNodes::lon(int index) const {
  return lon_.Get(index);
}
inline void DenseNodes::set_lon(int index, ::google::protobuf::int64 value) {
  lon_.Set(index, value);
}
inline void DenseNodes::add_lon(::google::protobuf::int64 value) {
  lon_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
DenseNodes::lon() const {
  return lon_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
DenseNodes::mutable_lon() {
  return &lon_;
}

// repeated int32 keys_vals = 10 [packed = true];
inline int DenseNodes::keys_vals_size() const {
  return keys_vals_.size();
}
inline void DenseNodes::clear_keys_vals() {
  keys_vals_.Clear();
}
inline ::google::protobuf::int32 DenseNodes::keys_vals(int index) const {
  return keys_vals_.Get(index);
}
inline void DenseNodes::set_keys_vals(int index, ::google::protobuf::int32 value) {
  keys_vals_.Set(index, value);
}
inline void DenseNodes::add_keys_vals(::google::protobuf::int32 value) {
  keys_vals_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
DenseNodes::keys_vals() const {
  return keys_vals_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
DenseNodes::mutable_keys_vals() {
  return &keys_vals_;
}

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

// Way

// required int64 id = 1;
inline bool Way::has_id() const {
  return _has_bit(0);
}
inline void Way::clear_id() {
  id_ = GOOGLE_LONGLONG(0);
  _clear_bit(0);
}
inline ::google::protobuf::int64 Way::id() const {
  return id_;
}
inline void Way::set_id(::google::protobuf::int64 value) {
  _set_bit(0);
  id_ = value;
}

// repeated uint32 keys = 2 [packed = true];
inline int Way::keys_size() const {
  return keys_.size();
}
inline void Way::clear_keys() {
  keys_.Clear();
}
inline ::google::protobuf::uint32 Way::keys(int index) const {
  return keys_.Get(index);
}
inline void Way::set_keys(int index, ::google::protobuf::uint32 value) {
  keys_.Set(index, value);
}
inline void Way::add_keys(::google::protobuf::uint32 value) {
  keys_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
Way::keys() const {
  return keys_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
Way::mutable_keys() {
  return &keys_;
}

// repeated uint32 vals = 3 [packed = true];
inline int Way::vals_size() const {
  return vals_.size();
}
inline void Way::clear_vals() {
  vals_.Clear();
}
inline ::google::protobuf::uint32 Way::vals(int index) const {
  return vals_.Get(index);
}
inline void Way::set_vals(int index, ::google::protobuf::uint32 value) {
  vals_.Set(index, value);
}
inline void Way::add_vals(::google::protobuf::uint32 value) {
  vals_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
Way::vals() const {
  return vals_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
Way::mutable_vals() {
  return &vals_;
}

// optional .OSMPBF.Info info = 4;
inline bool Way::has_info() const {
  return _has_bit(3);
}
inline void Way::clear_info() {
  if (info_ != NULL) info_->::OSMPBF::Info::Clear();
  _clear_bit(3);
}
inline const ::OSMPBF::Info& Way::info() const {
  return info_ != NULL ? *info_ : *default_instance_->info_;
}
inline ::OSMPBF::Info* Way::mutable_info() {
  _set_bit(3);
  if (info_ == NULL) info_ = new ::OSMPBF::Info;
  return info_;
}

// repeated sint64 refs = 8 [packed = true];
inline int Way::refs_size() const {
  return refs_.size();
}
inline void Way::clear_refs() {
  refs_.Clear();
}
inline ::google::protobuf::int64 Way::refs(int index) const {
  return refs_.Get(index);
}
inline void Way::set_refs(int index, ::google::protobuf::int64 value) {
  refs_.Set(index, value);
}
inline void Way::add_refs(::google::protobuf::int64 value) {
  refs_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
Way::refs() const {
  return refs_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
Way::mutable_refs() {
  return &refs_;
}

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

// Relation

// required int64 id = 1;
inline bool Relation::has_id() const {
  return _has_bit(0);
}
inline void Relation::clear_id() {
  id_ = GOOGLE_LONGLONG(0);
  _clear_bit(0);
}
inline ::google::protobuf::int64 Relation::id() const {
  return id_;
}
inline void Relation::set_id(::google::protobuf::int64 value) {
  _set_bit(0);
  id_ = value;
}

// repeated uint32 keys = 2 [packed = true];
inline int Relation::keys_size() const {
  return keys_.size();
}
inline void Relation::clear_keys() {
  keys_.Clear();
}
inline ::google::protobuf::uint32 Relation::keys(int index) const {
  return keys_.Get(index);
}
inline void Relation::set_keys(int index, ::google::protobuf::uint32 value) {
  keys_.Set(index, value);
}
inline void Relation::add_keys(::google::protobuf::uint32 value) {
  keys_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
Relation::keys() const {
  return keys_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
Relation::mutable_keys() {
  return &keys_;
}

// repeated uint32 vals = 3 [packed = true];
inline int Relation::vals_size() const {
  return vals_.size();
}
inline void Relation::clear_vals() {
  vals_.Clear();
}
inline ::google::protobuf::uint32 Relation::vals(int index) const {
  return vals_.Get(index);
}
inline void Relation::set_vals(int index, ::google::protobuf::uint32 value) {
  vals_.Set(index, value);
}
inline void Relation::add_vals(::google::protobuf::uint32 value) {
  vals_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
Relation::vals() const {
  return vals_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
Relation::mutable_vals() {
  return &vals_;
}

// optional .OSMPBF.Info info = 4;
inline bool Relation::has_info() const {
  return _has_bit(3);
}
inline void Relation::clear_info() {
  if (info_ != NULL) info_->::OSMPBF::Info::Clear();
  _clear_bit(3);
}
inline const ::OSMPBF::Info& Relation::info() const {
  return info_ != NULL ? *info_ : *default_instance_->info_;
}
inline ::OSMPBF::Info* Relation::mutable_info() {
  _set_bit(3);
  if (info_ == NULL) info_ = new ::OSMPBF::Info;
  return info_;
}

// repeated int32 roles_sid = 8 [packed = true];
inline int Relation::roles_sid_size() const {
  return roles_sid_.size();
}
inline void Relation::clear_roles_sid() {
  roles_sid_.Clear();
}
inline ::google::protobuf::int32 Relation::roles_sid(int index) const {
  return roles_sid_.Get(index);
}
inline void Relation::set_roles_sid(int index, ::google::protobuf::int32 value) {
  roles_sid_.Set(index, value);
}
inline void Relation::add_roles_sid(::google::protobuf::int32 value) {
  roles_sid_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
Relation::roles_sid() const {
  return roles_sid_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
Relation::mutable_roles_sid() {
  return &roles_sid_;
}

// repeated sint64 memids = 9 [packed = true];
inline int Relation::memids_size() const {
  return memids_.size();
}
inline void Relation::clear_memids() {
  memids_.Clear();
}
inline ::google::protobuf::int64 Relation::memids(int index) const {
  return memids_.Get(index);
}
inline void Relation::set_memids(int index, ::google::protobuf::int64 value) {
  memids_.Set(index, value);
}
inline void Relation::add_memids(::google::protobuf::int64 value) {
  memids_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int64 >&
Relation::memids() const {
  return memids_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int64 >*
Relation::mutable_memids() {
  return &memids_;
}

// repeated .OSMPBF.Relation.MemberType types = 10 [packed = true];
inline int Relation::types_size() const {
  return types_.size();
}
inline void Relation::clear_types() {
  types_.Clear();
}
inline ::OSMPBF::Relation_MemberType Relation::types(int index) const {
  return static_cast< ::OSMPBF::Relation_MemberType >(types_.Get(index));
}
inline void Relation::set_types(int index, ::OSMPBF::Relation_MemberType value) {
  GOOGLE_DCHECK(::OSMPBF::Relation_MemberType_IsValid(value));
  types_.Set(index, value);
}
inline void Relation::add_types(::OSMPBF::Relation_MemberType value) {
  GOOGLE_DCHECK(::OSMPBF::Relation_MemberType_IsValid(value));
  types_.Add(value);
}
inline const ::google::protobuf::RepeatedField<int>&
Relation::types() const {
  return types_;
}
inline ::google::protobuf::RepeatedField<int>*
Relation::mutable_types() {
  return &types_;
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace OSMPBF

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_osmformat_2eproto__INCLUDED
