diff --git a/v2/build.sh b/v2/build.sh
index efcd77f..51c612d 100755
--- a/v2/build.sh
+++ b/v2/build.sh
@@ -29,5 +29,3 @@ find $DIR/go $DIR/python $DIR/js $DIR/cpp -type f -delete
 
 
 protoc --proto_path="$DIR/proto" --python_out="$DIR/python" --go_out="$DIR/go" --js_out="import_style=commonjs,binary:$DIR/js" --cpp_out="$DIR/cpp" $DIR/proto/*.proto
-
-ls "$DIR"/go/*.pb.go | xargs -n1 -IX bash -c "sed -e 's/,omitempty//' X > X.tmp && mv X{.tmp,}"
diff --git a/v2/cpp/claim.pb.cc b/v2/cpp/claim.pb.cc
index d36caad..a5fc5ce 100644
--- a/v2/cpp/claim.pb.cc
+++ b/v2/cpp/claim.pb.cc
@@ -6,93 +6,87 @@
 #include <algorithm>
 
 #include <google/protobuf/stubs/common.h>
+#include <google/protobuf/stubs/port.h>
+#include <google/protobuf/stubs/once.h>
 #include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/extension_set.h>
 #include <google/protobuf/wire_format_lite_inl.h>
 #include <google/protobuf/descriptor.h>
 #include <google/protobuf/generated_message_reflection.h>
 #include <google/protobuf/reflection_ops.h>
 #include <google/protobuf/wire_format.h>
+// This is a temporary google only hack
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+#include "third_party/protobuf/version.h"
+#endif
 // @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Audio_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ClaimReference_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Fee_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Image_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Language_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Location_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Software_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Source_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ClaimList_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_Video_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Channel_claim_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_claim_2eproto ::google::protobuf::internal::SCCInfo<6> scc_info_Stream_claim_2eproto;
 namespace pb {
 class ClaimDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Claim> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Claim>
+      _instance;
   const ::pb::Stream* stream_;
   const ::pb::Channel* channel_;
-  const ::pb::ClaimList* collection_;
-  const ::pb::ClaimReference* repost_;
 } _Claim_default_instance_;
+class ChannelDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Channel>
+      _instance;
+} _Channel_default_instance_;
 class StreamDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Stream> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Stream>
+      _instance;
   const ::pb::Image* image_;
   const ::pb::Video* video_;
   const ::pb::Audio* audio_;
-  const ::pb::Software* software_;
 } _Stream_default_instance_;
-class ChannelDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Channel> _instance;
-} _Channel_default_instance_;
-class ClaimReferenceDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<ClaimReference> _instance;
-} _ClaimReference_default_instance_;
-class ClaimListDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<ClaimList> _instance;
-} _ClaimList_default_instance_;
-class SourceDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Source> _instance;
-} _Source_default_instance_;
 class FeeDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Fee> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Fee>
+      _instance;
 } _Fee_default_instance_;
+class FileDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<File>
+      _instance;
+} _File_default_instance_;
 class ImageDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Image> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Image>
+      _instance;
 } _Image_default_instance_;
 class VideoDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Video> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Video>
+      _instance;
 } _Video_default_instance_;
 class AudioDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Audio> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Audio>
+      _instance;
 } _Audio_default_instance_;
-class SoftwareDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Software> _instance;
-} _Software_default_instance_;
 class LanguageDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Language> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Language>
+      _instance;
 } _Language_default_instance_;
 class LocationDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Location> _instance;
+  ::google::protobuf::internal::ExplicitlyConstructed<Location>
+      _instance;
 } _Location_default_instance_;
 }  // namespace pb
-static void InitDefaultsClaim_claim_2eproto() {
+namespace protobuf_claim_2eproto {
+void InitDefaultsClaimImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_claim_2eproto::InitDefaultsStream();
+  protobuf_claim_2eproto::InitDefaultsChannel();
   {
     void* ptr = &::pb::_Claim_default_instance_;
     new (ptr) ::pb::Claim();
@@ -101,39 +95,21 @@ static void InitDefaultsClaim_claim_2eproto() {
   ::pb::Claim::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<7> scc_info_Claim_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 7, InitDefaultsClaim_claim_2eproto}, {
-      &scc_info_Stream_claim_2eproto.base,
-      &scc_info_Channel_claim_2eproto.base,
-      &scc_info_ClaimList_claim_2eproto.base,
-      &scc_info_ClaimReference_claim_2eproto.base,
-      &scc_info_Source_claim_2eproto.base,
-      &scc_info_Language_claim_2eproto.base,
-      &scc_info_Location_claim_2eproto.base,}};
-
-static void InitDefaultsStream_claim_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_Stream_default_instance_;
-    new (ptr) ::pb::Stream();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::Stream::InitAsDefaultInstance();
+void InitDefaultsClaim() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsClaimImpl);
 }
 
-::google::protobuf::internal::SCCInfo<6> scc_info_Stream_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 6, InitDefaultsStream_claim_2eproto}, {
-      &scc_info_Source_claim_2eproto.base,
-      &scc_info_Fee_claim_2eproto.base,
-      &scc_info_Image_claim_2eproto.base,
-      &scc_info_Video_claim_2eproto.base,
-      &scc_info_Audio_claim_2eproto.base,
-      &scc_info_Software_claim_2eproto.base,}};
-
-static void InitDefaultsChannel_claim_2eproto() {
+void InitDefaultsChannelImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_claim_2eproto::InitDefaultsLanguage();
+  protobuf_claim_2eproto::InitDefaultsLocation();
   {
     void* ptr = &::pb::_Channel_default_instance_;
     new (ptr) ::pb::Channel();
@@ -142,57 +118,47 @@ static void InitDefaultsChannel_claim_2eproto() {
   ::pb::Channel::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<2> scc_info_Channel_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsChannel_claim_2eproto}, {
-      &scc_info_Source_claim_2eproto.base,
-      &scc_info_ClaimList_claim_2eproto.base,}};
-
-static void InitDefaultsClaimReference_claim_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_ClaimReference_default_instance_;
-    new (ptr) ::pb::ClaimReference();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::ClaimReference::InitAsDefaultInstance();
+void InitDefaultsChannel() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsChannelImpl);
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_ClaimReference_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsClaimReference_claim_2eproto}, {}};
-
-static void InitDefaultsClaimList_claim_2eproto() {
+void InitDefaultsStreamImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_claim_2eproto::InitDefaultsLanguage();
+  protobuf_claim_2eproto::InitDefaultsLocation();
+  protobuf_claim_2eproto::InitDefaultsFile();
+  protobuf_claim_2eproto::InitDefaultsFee();
+  protobuf_claim_2eproto::InitDefaultsImage();
+  protobuf_claim_2eproto::InitDefaultsVideo();
+  protobuf_claim_2eproto::InitDefaultsAudio();
   {
-    void* ptr = &::pb::_ClaimList_default_instance_;
-    new (ptr) ::pb::ClaimList();
+    void* ptr = &::pb::_Stream_default_instance_;
+    new (ptr) ::pb::Stream();
     ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
   }
-  ::pb::ClaimList::InitAsDefaultInstance();
+  ::pb::Stream::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_ClaimList_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsClaimList_claim_2eproto}, {
-      &scc_info_ClaimReference_claim_2eproto.base,}};
-
-static void InitDefaultsSource_claim_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_Source_default_instance_;
-    new (ptr) ::pb::Source();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::Source::InitAsDefaultInstance();
+void InitDefaultsStream() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsStreamImpl);
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Source_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSource_claim_2eproto}, {}};
-
-static void InitDefaultsFee_claim_2eproto() {
+void InitDefaultsFeeImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::pb::_Fee_default_instance_;
     new (ptr) ::pb::Fee();
@@ -201,12 +167,40 @@ static void InitDefaultsFee_claim_2eproto() {
   ::pb::Fee::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Fee_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsFee_claim_2eproto}, {}};
+void InitDefaultsFee() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsFeeImpl);
+}
 
-static void InitDefaultsImage_claim_2eproto() {
+void InitDefaultsFileImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::pb::_File_default_instance_;
+    new (ptr) ::pb::File();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::pb::File::InitAsDefaultInstance();
+}
+
+void InitDefaultsFile() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsFileImpl);
+}
+
+void InitDefaultsImageImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::pb::_Image_default_instance_;
     new (ptr) ::pb::Image();
@@ -215,12 +209,19 @@ static void InitDefaultsImage_claim_2eproto() {
   ::pb::Image::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Image_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsImage_claim_2eproto}, {}};
+void InitDefaultsImage() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsImageImpl);
+}
 
-static void InitDefaultsVideo_claim_2eproto() {
+void InitDefaultsVideoImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::pb::_Video_default_instance_;
     new (ptr) ::pb::Video();
@@ -229,13 +230,19 @@ static void InitDefaultsVideo_claim_2eproto() {
   ::pb::Video::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_Video_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsVideo_claim_2eproto}, {
-      &scc_info_Audio_claim_2eproto.base,}};
+void InitDefaultsVideo() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsVideoImpl);
+}
 
-static void InitDefaultsAudio_claim_2eproto() {
+void InitDefaultsAudioImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::pb::_Audio_default_instance_;
     new (ptr) ::pb::Audio();
@@ -244,26 +251,19 @@ static void InitDefaultsAudio_claim_2eproto() {
   ::pb::Audio::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Audio_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsAudio_claim_2eproto}, {}};
-
-static void InitDefaultsSoftware_claim_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_Software_default_instance_;
-    new (ptr) ::pb::Software();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::Software::InitAsDefaultInstance();
+void InitDefaultsAudio() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsAudioImpl);
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Software_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSoftware_claim_2eproto}, {}};
-
-static void InitDefaultsLanguage_claim_2eproto() {
+void InitDefaultsLanguageImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::pb::_Language_default_instance_;
     new (ptr) ::pb::Language();
@@ -272,12 +272,19 @@ static void InitDefaultsLanguage_claim_2eproto() {
   ::pb::Language::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Language_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsLanguage_claim_2eproto}, {}};
+void InitDefaultsLanguage() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsLanguageImpl);
+}
 
-static void InitDefaultsLocation_claim_2eproto() {
+void InitDefaultsLocationImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
     void* ptr = &::pb::_Location_default_instance_;
     new (ptr) ::pb::Location();
@@ -286,498 +293,366 @@ static void InitDefaultsLocation_claim_2eproto() {
   ::pb::Location::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_Location_claim_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsLocation_claim_2eproto}, {}};
-
-void InitDefaults_claim_2eproto() {
-  ::google::protobuf::internal::InitSCC(&scc_info_Claim_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Stream_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Channel_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_ClaimReference_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_ClaimList_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Source_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Fee_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Image_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Video_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Audio_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Software_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Language_claim_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Location_claim_2eproto.base);
+void InitDefaultsLocation() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsLocationImpl);
 }
 
-::google::protobuf::Metadata file_level_metadata_claim_2eproto[13];
-const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_claim_2eproto[6];
-constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_claim_2eproto = nullptr;
+::google::protobuf::Metadata file_level_metadata[10];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[4];
 
-const ::google::protobuf::uint32 TableStruct_claim_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Claim, _internal_metadata_),
   ~0u,  // no _extensions_
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, _oneof_case_[0]),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Claim, _oneof_case_[0]),
   ~0u,  // no _weak_field_map_
   offsetof(::pb::ClaimDefaultTypeInternal, stream_),
   offsetof(::pb::ClaimDefaultTypeInternal, channel_),
-  offsetof(::pb::ClaimDefaultTypeInternal, collection_),
-  offsetof(::pb::ClaimDefaultTypeInternal, repost_),
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, title_),
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, description_),
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, thumbnail_),
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, tags_),
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, languages_),
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, locations_),
-  PROTOBUF_FIELD_OFFSET(::pb::Claim, type_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Claim, type_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, _internal_metadata_),
   ~0u,  // no _extensions_
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, _oneof_case_[0]),
+  ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, source_),
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, author_),
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, license_),
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, license_url_),
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, release_time_),
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, fee_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, public_key_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, title_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, description_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, thumbnail_url_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, tags_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, languages_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, locations_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, contact_email_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, homepage_url_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Channel, cover_url_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, _internal_metadata_),
+  ~0u,  // no _extensions_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, _oneof_case_[0]),
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, sd_hash_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, title_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, description_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, thumbnail_url_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, tags_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, languages_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, locations_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, author_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, license_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, license_url_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, release_time_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, media_type_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, file_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, fee_),
   offsetof(::pb::StreamDefaultTypeInternal, image_),
   offsetof(::pb::StreamDefaultTypeInternal, video_),
   offsetof(::pb::StreamDefaultTypeInternal, audio_),
-  offsetof(::pb::StreamDefaultTypeInternal, software_),
-  PROTOBUF_FIELD_OFFSET(::pb::Stream, type_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Stream, type_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Channel, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Fee, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Channel, public_key_),
-  PROTOBUF_FIELD_OFFSET(::pb::Channel, email_),
-  PROTOBUF_FIELD_OFFSET(::pb::Channel, website_url_),
-  PROTOBUF_FIELD_OFFSET(::pb::Channel, cover_),
-  PROTOBUF_FIELD_OFFSET(::pb::Channel, featured_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Fee, currency_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Fee, address_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Fee, amount_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimReference, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::File, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimReference, claim_hash_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::File, hash_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::File, name_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::File, size_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimList, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Image, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimList, list_type_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimList, claim_references_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Image, width_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Image, height_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Source, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Video, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Source, hash_),
-  PROTOBUF_FIELD_OFFSET(::pb::Source, name_),
-  PROTOBUF_FIELD_OFFSET(::pb::Source, size_),
-  PROTOBUF_FIELD_OFFSET(::pb::Source, media_type_),
-  PROTOBUF_FIELD_OFFSET(::pb::Source, url_),
-  PROTOBUF_FIELD_OFFSET(::pb::Source, sd_hash_),
-  PROTOBUF_FIELD_OFFSET(::pb::Source, bt_infohash_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Video, width_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Video, height_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Video, duration_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Fee, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Audio, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Fee, currency_),
-  PROTOBUF_FIELD_OFFSET(::pb::Fee, address_),
-  PROTOBUF_FIELD_OFFSET(::pb::Fee, amount_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Audio, duration_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Image, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Language, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Image, width_),
-  PROTOBUF_FIELD_OFFSET(::pb::Image, height_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Language, language_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Language, script_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Language, region_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Video, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Location, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Video, width_),
-  PROTOBUF_FIELD_OFFSET(::pb::Video, height_),
-  PROTOBUF_FIELD_OFFSET(::pb::Video, duration_),
-  PROTOBUF_FIELD_OFFSET(::pb::Video, audio_),
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Audio, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Audio, duration_),
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Software, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Software, os_),
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Language, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Language, language_),
-  PROTOBUF_FIELD_OFFSET(::pb::Language, script_),
-  PROTOBUF_FIELD_OFFSET(::pb::Language, region_),
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Location, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Location, country_),
-  PROTOBUF_FIELD_OFFSET(::pb::Location, state_),
-  PROTOBUF_FIELD_OFFSET(::pb::Location, city_),
-  PROTOBUF_FIELD_OFFSET(::pb::Location, code_),
-  PROTOBUF_FIELD_OFFSET(::pb::Location, latitude_),
-  PROTOBUF_FIELD_OFFSET(::pb::Location, longitude_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Location, country_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Location, state_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Location, city_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Location, code_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Location, latitude_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::pb::Location, longitude_),
 };
-static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   { 0, -1, sizeof(::pb::Claim)},
-  { 16, -1, sizeof(::pb::Stream)},
-  { 32, -1, sizeof(::pb::Channel)},
-  { 42, -1, sizeof(::pb::ClaimReference)},
-  { 48, -1, sizeof(::pb::ClaimList)},
-  { 55, -1, sizeof(::pb::Source)},
-  { 67, -1, sizeof(::pb::Fee)},
-  { 75, -1, sizeof(::pb::Image)},
-  { 82, -1, sizeof(::pb::Video)},
-  { 91, -1, sizeof(::pb::Audio)},
-  { 97, -1, sizeof(::pb::Software)},
-  { 103, -1, sizeof(::pb::Language)},
-  { 111, -1, sizeof(::pb::Location)},
+  { 8, -1, sizeof(::pb::Channel)},
+  { 23, -1, sizeof(::pb::Stream)},
+  { 46, -1, sizeof(::pb::Fee)},
+  { 54, -1, sizeof(::pb::File)},
+  { 62, -1, sizeof(::pb::Image)},
+  { 69, -1, sizeof(::pb::Video)},
+  { 77, -1, sizeof(::pb::Audio)},
+  { 83, -1, sizeof(::pb::Language)},
+  { 91, -1, sizeof(::pb::Location)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Claim_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Stream_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Channel_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_ClaimReference_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_ClaimList_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Source_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Stream_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Fee_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_File_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Image_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Video_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Audio_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Software_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Language_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Location_default_instance_),
 };
 
-::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_claim_2eproto = {
-  {}, AddDescriptors_claim_2eproto, "claim.proto", schemas,
-  file_default_instances, TableStruct_claim_2eproto::offsets,
-  file_level_metadata_claim_2eproto, 13, file_level_enum_descriptors_claim_2eproto, file_level_service_descriptors_claim_2eproto,
-};
+void protobuf_AssignDescriptors() {
+  AddDescriptors();
+  ::google::protobuf::MessageFactory* factory = NULL;
+  AssignDescriptors(
+      "claim.proto", schemas, file_default_instances, TableStruct::offsets, factory,
+      file_level_metadata, file_level_enum_descriptors, NULL);
+}
 
-const char descriptor_table_protodef_claim_2eproto[] =
-  "\n\013claim.proto\022\002pb\"\253\002\n\005Claim\022\034\n\006stream\030\001 "
-  "\001(\0132\n.pb.StreamH\000\022\036\n\007channel\030\002 \001(\0132\013.pb."
-  "ChannelH\000\022#\n\ncollection\030\003 \001(\0132\r.pb.Claim"
-  "ListH\000\022$\n\006repost\030\004 \001(\0132\022.pb.ClaimReferen"
-  "ceH\000\022\r\n\005title\030\010 \001(\t\022\023\n\013description\030\t \001(\t"
-  "\022\035\n\tthumbnail\030\n \001(\0132\n.pb.Source\022\014\n\004tags\030"
-  "\013 \003(\t\022\037\n\tlanguages\030\014 \003(\0132\014.pb.Language\022\037"
-  "\n\tlocations\030\r \003(\0132\014.pb.LocationB\006\n\004type\""
-  "\204\002\n\006Stream\022\032\n\006source\030\001 \001(\0132\n.pb.Source\022\016"
-  "\n\006author\030\002 \001(\t\022\017\n\007license\030\003 \001(\t\022\023\n\013licen"
-  "se_url\030\004 \001(\t\022\024\n\014release_time\030\005 \001(\003\022\024\n\003fe"
-  "e\030\006 \001(\0132\007.pb.Fee\022\032\n\005image\030\n \001(\0132\t.pb.Ima"
-  "geH\000\022\032\n\005video\030\013 \001(\0132\t.pb.VideoH\000\022\032\n\005audi"
-  "o\030\014 \001(\0132\t.pb.AudioH\000\022 \n\010software\030\r \001(\0132\014"
-  ".pb.SoftwareH\000B\006\n\004type\"}\n\007Channel\022\022\n\npub"
-  "lic_key\030\001 \001(\014\022\r\n\005email\030\002 \001(\t\022\023\n\013website_"
-  "url\030\003 \001(\t\022\031\n\005cover\030\004 \001(\0132\n.pb.Source\022\037\n\010"
-  "featured\030\005 \001(\0132\r.pb.ClaimList\"$\n\016ClaimRe"
-  "ference\022\022\n\nclaim_hash\030\001 \001(\014\"\220\001\n\tClaimLis"
-  "t\022)\n\tlist_type\030\001 \001(\0162\026.pb.ClaimList.List"
-  "Type\022,\n\020claim_references\030\002 \003(\0132\022.pb.Clai"
-  "mReference\"*\n\010ListType\022\016\n\nCOLLECTION\020\000\022\016"
-  "\n\nDERIVATION\020\002\"y\n\006Source\022\014\n\004hash\030\001 \001(\014\022\014"
-  "\n\004name\030\002 \001(\t\022\014\n\004size\030\003 \001(\004\022\022\n\nmedia_type"
-  "\030\004 \001(\t\022\013\n\003url\030\005 \001(\t\022\017\n\007sd_hash\030\006 \001(\014\022\023\n\013"
-  "bt_infohash\030\007 \001(\014\"\207\001\n\003Fee\022\"\n\010currency\030\001 "
-  "\001(\0162\020.pb.Fee.Currency\022\017\n\007address\030\002 \001(\014\022\016"
-  "\n\006amount\030\003 \001(\004\";\n\010Currency\022\024\n\020UNKNOWN_CU"
-  "RRENCY\020\000\022\007\n\003LBC\020\001\022\007\n\003BTC\020\002\022\007\n\003USD\020\003\"&\n\005I"
-  "mage\022\r\n\005width\030\001 \001(\r\022\016\n\006height\030\002 \001(\r\"R\n\005V"
-  "ideo\022\r\n\005width\030\001 \001(\r\022\016\n\006height\030\002 \001(\r\022\020\n\010d"
-  "uration\030\003 \001(\r\022\030\n\005audio\030\017 \001(\0132\t.pb.Audio\""
-  "\031\n\005Audio\022\020\n\010duration\030\001 \001(\r\"l\n\010Software\022\n"
-  "\n\002os\030\001 \001(\t\"T\n\002OS\022\016\n\nUNKNOWN_OS\020\000\022\007\n\003ANY\020"
-  "\001\022\t\n\005LINUX\020\002\022\013\n\007WINDOWS\020\003\022\007\n\003MAC\020\004\022\013\n\007AN"
-  "DROID\020\005\022\007\n\003IOS\020\006\"\307\035\n\010Language\022\'\n\010languag"
-  "e\030\001 \001(\0162\025.pb.Language.Language\022#\n\006script"
-  "\030\002 \001(\0162\023.pb.Language.Script\022$\n\006region\030\003 "
-  "\001(\0162\024.pb.Location.Country\"\231\014\n\010Language\022\024"
-  "\n\020UNKNOWN_LANGUAGE\020\000\022\006\n\002en\020\001\022\006\n\002aa\020\002\022\006\n\002"
-  "ab\020\003\022\006\n\002ae\020\004\022\006\n\002af\020\005\022\006\n\002ak\020\006\022\006\n\002am\020\007\022\006\n\002"
-  "an\020\010\022\006\n\002ar\020\t\022\006\n\002as\020\n\022\006\n\002av\020\013\022\006\n\002ay\020\014\022\006\n\002"
-  "az\020\r\022\006\n\002ba\020\016\022\006\n\002be\020\017\022\006\n\002bg\020\020\022\006\n\002bh\020\021\022\006\n\002"
-  "bi\020\022\022\006\n\002bm\020\023\022\006\n\002bn\020\024\022\006\n\002bo\020\025\022\006\n\002br\020\026\022\006\n\002"
-  "bs\020\027\022\006\n\002ca\020\030\022\006\n\002ce\020\031\022\006\n\002ch\020\032\022\006\n\002co\020\033\022\006\n\002"
-  "cr\020\034\022\006\n\002cs\020\035\022\006\n\002cu\020\036\022\006\n\002cv\020\037\022\006\n\002cy\020 \022\006\n\002"
-  "da\020!\022\006\n\002de\020\"\022\006\n\002dv\020#\022\006\n\002dz\020$\022\006\n\002ee\020%\022\006\n\002"
-  "el\020&\022\006\n\002eo\020\'\022\006\n\002es\020(\022\006\n\002et\020)\022\006\n\002eu\020*\022\006\n\002"
-  "fa\020+\022\006\n\002ff\020,\022\006\n\002fi\020-\022\006\n\002fj\020.\022\006\n\002fo\020/\022\006\n\002"
-  "fr\0200\022\006\n\002fy\0201\022\006\n\002ga\0202\022\006\n\002gd\0203\022\006\n\002gl\0204\022\006\n\002"
-  "gn\0205\022\006\n\002gu\0206\022\006\n\002gv\0207\022\006\n\002ha\0208\022\006\n\002he\0209\022\006\n\002"
-  "hi\020:\022\006\n\002ho\020;\022\006\n\002hr\020<\022\006\n\002ht\020=\022\006\n\002hu\020>\022\006\n\002"
-  "hy\020\?\022\006\n\002hz\020@\022\006\n\002ia\020A\022\006\n\002id\020B\022\006\n\002ie\020C\022\006\n\002"
-  "ig\020D\022\006\n\002ii\020E\022\006\n\002ik\020F\022\006\n\002io\020G\022\006\n\002is\020H\022\006\n\002"
-  "it\020I\022\006\n\002iu\020J\022\006\n\002ja\020K\022\006\n\002jv\020L\022\006\n\002ka\020M\022\006\n\002"
-  "kg\020N\022\006\n\002ki\020O\022\006\n\002kj\020P\022\006\n\002kk\020Q\022\006\n\002kl\020R\022\006\n\002"
-  "km\020S\022\006\n\002kn\020T\022\006\n\002ko\020U\022\006\n\002kr\020V\022\006\n\002ks\020W\022\006\n\002"
-  "ku\020X\022\006\n\002kv\020Y\022\006\n\002kw\020Z\022\006\n\002ky\020[\022\006\n\002la\020\\\022\006\n\002"
-  "lb\020]\022\006\n\002lg\020^\022\006\n\002li\020_\022\006\n\002ln\020`\022\006\n\002lo\020a\022\006\n\002"
-  "lt\020b\022\006\n\002lu\020c\022\006\n\002lv\020d\022\006\n\002mg\020e\022\006\n\002mh\020f\022\006\n\002"
-  "mi\020g\022\006\n\002mk\020h\022\006\n\002ml\020i\022\006\n\002mn\020j\022\006\n\002mr\020k\022\006\n\002"
-  "ms\020l\022\006\n\002mt\020m\022\006\n\002my\020n\022\006\n\002na\020o\022\006\n\002nb\020p\022\006\n\002"
-  "nd\020q\022\006\n\002ne\020r\022\006\n\002ng\020s\022\006\n\002nl\020t\022\006\n\002nn\020u\022\006\n\002"
-  "no\020v\022\006\n\002nr\020w\022\006\n\002nv\020x\022\006\n\002ny\020y\022\006\n\002oc\020z\022\006\n\002"
-  "oj\020{\022\006\n\002om\020|\022\006\n\002or\020}\022\006\n\002os\020~\022\006\n\002pa\020\177\022\007\n\002"
-  "pi\020\200\001\022\007\n\002pl\020\201\001\022\007\n\002ps\020\202\001\022\007\n\002pt\020\203\001\022\007\n\002qu\020\204"
-  "\001\022\007\n\002rm\020\205\001\022\007\n\002rn\020\206\001\022\007\n\002ro\020\207\001\022\007\n\002ru\020\210\001\022\007\n"
-  "\002rw\020\211\001\022\007\n\002sa\020\212\001\022\007\n\002sc\020\213\001\022\007\n\002sd\020\214\001\022\007\n\002se\020"
-  "\215\001\022\007\n\002sg\020\216\001\022\007\n\002si\020\217\001\022\007\n\002sk\020\220\001\022\007\n\002sl\020\221\001\022\007"
-  "\n\002sm\020\222\001\022\007\n\002sn\020\223\001\022\007\n\002so\020\224\001\022\007\n\002sq\020\225\001\022\007\n\002sr"
-  "\020\226\001\022\007\n\002ss\020\227\001\022\007\n\002st\020\230\001\022\007\n\002su\020\231\001\022\007\n\002sv\020\232\001\022"
-  "\007\n\002sw\020\233\001\022\007\n\002ta\020\234\001\022\007\n\002te\020\235\001\022\007\n\002tg\020\236\001\022\007\n\002t"
-  "h\020\237\001\022\007\n\002ti\020\240\001\022\007\n\002tk\020\241\001\022\007\n\002tl\020\242\001\022\007\n\002tn\020\243\001"
-  "\022\007\n\002to\020\244\001\022\007\n\002tr\020\245\001\022\007\n\002ts\020\246\001\022\007\n\002tt\020\247\001\022\007\n\002"
-  "tw\020\250\001\022\007\n\002ty\020\251\001\022\007\n\002ug\020\252\001\022\007\n\002uk\020\253\001\022\007\n\002ur\020\254"
-  "\001\022\007\n\002uz\020\255\001\022\007\n\002ve\020\256\001\022\007\n\002vi\020\257\001\022\007\n\002vo\020\260\001\022\007\n"
-  "\002wa\020\261\001\022\007\n\002wo\020\262\001\022\007\n\002xh\020\263\001\022\007\n\002yi\020\264\001\022\007\n\002yo\020"
-  "\265\001\022\007\n\002za\020\266\001\022\007\n\002zh\020\267\001\022\007\n\002zu\020\270\001\"\252\020\n\006Script"
-  "\022\022\n\016UNKNOWN_SCRIPT\020\000\022\010\n\004Adlm\020\001\022\010\n\004Afak\020\002"
-  "\022\010\n\004Aghb\020\003\022\010\n\004Ahom\020\004\022\010\n\004Arab\020\005\022\010\n\004Aran\020\006"
-  "\022\010\n\004Armi\020\007\022\010\n\004Armn\020\010\022\010\n\004Avst\020\t\022\010\n\004Bali\020\n"
-  "\022\010\n\004Bamu\020\013\022\010\n\004Bass\020\014\022\010\n\004Batk\020\r\022\010\n\004Beng\020\016"
-  "\022\010\n\004Bhks\020\017\022\010\n\004Blis\020\020\022\010\n\004Bopo\020\021\022\010\n\004Brah\020\022"
-  "\022\010\n\004Brai\020\023\022\010\n\004Bugi\020\024\022\010\n\004Buhd\020\025\022\010\n\004Cakm\020\026"
-  "\022\010\n\004Cans\020\027\022\010\n\004Cari\020\030\022\010\n\004Cham\020\031\022\010\n\004Cher\020\032"
-  "\022\010\n\004Cirt\020\033\022\010\n\004Copt\020\034\022\010\n\004Cpmn\020\035\022\010\n\004Cprt\020\036"
-  "\022\010\n\004Cyrl\020\037\022\010\n\004Cyrs\020 \022\010\n\004Deva\020!\022\010\n\004Dogr\020\""
-  "\022\010\n\004Dsrt\020#\022\010\n\004Dupl\020$\022\010\n\004Egyd\020%\022\010\n\004Egyh\020&"
-  "\022\010\n\004Egyp\020\'\022\010\n\004Elba\020(\022\010\n\004Elym\020)\022\010\n\004Ethi\020*"
-  "\022\010\n\004Geok\020+\022\010\n\004Geor\020,\022\010\n\004Glag\020-\022\010\n\004Gong\020."
-  "\022\010\n\004Gonm\020/\022\010\n\004Goth\0200\022\010\n\004Gran\0201\022\010\n\004Grek\0202"
-  "\022\010\n\004Gujr\0203\022\010\n\004Guru\0204\022\010\n\004Hanb\0205\022\010\n\004Hang\0206"
-  "\022\010\n\004Hani\0207\022\010\n\004Hano\0208\022\010\n\004Hans\0209\022\010\n\004Hant\020:"
-  "\022\010\n\004Hatr\020;\022\010\n\004Hebr\020<\022\010\n\004Hira\020=\022\010\n\004Hluw\020>"
-  "\022\010\n\004Hmng\020\?\022\010\n\004Hmnp\020@\022\010\n\004Hrkt\020A\022\010\n\004Hung\020B"
-  "\022\010\n\004Inds\020C\022\010\n\004Ital\020D\022\010\n\004Jamo\020E\022\010\n\004Java\020F"
-  "\022\010\n\004Jpan\020G\022\010\n\004Jurc\020H\022\010\n\004Kali\020I\022\010\n\004Kana\020J"
-  "\022\010\n\004Khar\020K\022\010\n\004Khmr\020L\022\010\n\004Khoj\020M\022\010\n\004Kitl\020N"
-  "\022\010\n\004Kits\020O\022\010\n\004Knda\020P\022\010\n\004Kore\020Q\022\010\n\004Kpel\020R"
-  "\022\010\n\004Kthi\020S\022\010\n\004Lana\020T\022\010\n\004Laoo\020U\022\010\n\004Latf\020V"
-  "\022\010\n\004Latg\020W\022\010\n\004Latn\020X\022\010\n\004Leke\020Y\022\010\n\004Lepc\020Z"
-  "\022\010\n\004Limb\020[\022\010\n\004Lina\020\\\022\010\n\004Linb\020]\022\010\n\004Lisu\020^"
-  "\022\010\n\004Loma\020_\022\010\n\004Lyci\020`\022\010\n\004Lydi\020a\022\010\n\004Mahj\020b"
-  "\022\010\n\004Maka\020c\022\010\n\004Mand\020d\022\010\n\004Mani\020e\022\010\n\004Marc\020f"
-  "\022\010\n\004Maya\020g\022\010\n\004Medf\020h\022\010\n\004Mend\020i\022\010\n\004Merc\020j"
-  "\022\010\n\004Mero\020k\022\010\n\004Mlym\020l\022\010\n\004Modi\020m\022\010\n\004Mong\020n"
-  "\022\010\n\004Moon\020o\022\010\n\004Mroo\020p\022\010\n\004Mtei\020q\022\010\n\004Mult\020r"
-  "\022\010\n\004Mymr\020s\022\010\n\004Nand\020t\022\010\n\004Narb\020u\022\010\n\004Nbat\020v"
-  "\022\010\n\004Newa\020w\022\010\n\004Nkdb\020x\022\010\n\004Nkgb\020y\022\010\n\004Nkoo\020z"
-  "\022\010\n\004Nshu\020{\022\010\n\004Ogam\020|\022\010\n\004Olck\020}\022\010\n\004Orkh\020~"
-  "\022\010\n\004Orya\020\177\022\t\n\004Osge\020\200\001\022\t\n\004Osma\020\201\001\022\t\n\004Palm"
-  "\020\202\001\022\t\n\004Pauc\020\203\001\022\t\n\004Perm\020\204\001\022\t\n\004Phag\020\205\001\022\t\n\004"
-  "Phli\020\206\001\022\t\n\004Phlp\020\207\001\022\t\n\004Phlv\020\210\001\022\t\n\004Phnx\020\211\001"
-  "\022\t\n\004Plrd\020\212\001\022\t\n\004Piqd\020\213\001\022\t\n\004Prti\020\214\001\022\t\n\004Qaa"
-  "a\020\215\001\022\t\n\004Qabx\020\216\001\022\t\n\004Rjng\020\217\001\022\t\n\004Rohg\020\220\001\022\t\n"
-  "\004Roro\020\221\001\022\t\n\004Runr\020\222\001\022\t\n\004Samr\020\223\001\022\t\n\004Sara\020\224"
-  "\001\022\t\n\004Sarb\020\225\001\022\t\n\004Saur\020\226\001\022\t\n\004Sgnw\020\227\001\022\t\n\004Sh"
-  "aw\020\230\001\022\t\n\004Shrd\020\231\001\022\t\n\004Shui\020\232\001\022\t\n\004Sidd\020\233\001\022\t"
-  "\n\004Sind\020\234\001\022\t\n\004Sinh\020\235\001\022\t\n\004Sogd\020\236\001\022\t\n\004Sogo\020"
-  "\237\001\022\t\n\004Sora\020\240\001\022\t\n\004Soyo\020\241\001\022\t\n\004Sund\020\242\001\022\t\n\004S"
-  "ylo\020\243\001\022\t\n\004Syrc\020\244\001\022\t\n\004Syre\020\245\001\022\t\n\004Syrj\020\246\001\022"
-  "\t\n\004Syrn\020\247\001\022\t\n\004Tagb\020\250\001\022\t\n\004Takr\020\251\001\022\t\n\004Tale"
-  "\020\252\001\022\t\n\004Talu\020\253\001\022\t\n\004Taml\020\254\001\022\t\n\004Tang\020\255\001\022\t\n\004"
-  "Tavt\020\256\001\022\t\n\004Telu\020\257\001\022\t\n\004Teng\020\260\001\022\t\n\004Tfng\020\261\001"
-  "\022\t\n\004Tglg\020\262\001\022\t\n\004Thaa\020\263\001\022\t\n\004Thai\020\264\001\022\t\n\004Tib"
-  "t\020\265\001\022\t\n\004Tirh\020\266\001\022\t\n\004Ugar\020\267\001\022\t\n\004Vaii\020\270\001\022\t\n"
-  "\004Visp\020\271\001\022\t\n\004Wara\020\272\001\022\t\n\004Wcho\020\273\001\022\t\n\004Wole\020\274"
-  "\001\022\t\n\004Xpeo\020\275\001\022\t\n\004Xsux\020\276\001\022\t\n\004Yiii\020\277\001\022\t\n\004Za"
-  "nb\020\300\001\022\t\n\004Zinh\020\301\001\022\t\n\004Zmth\020\302\001\022\t\n\004Zsye\020\303\001\022\t"
-  "\n\004Zsym\020\304\001\022\t\n\004Zxxx\020\305\001\022\t\n\004Zyyy\020\306\001\022\t\n\004Zzzz\020"
-  "\307\001\"\354)\n\010Location\022%\n\007country\030\001 \001(\0162\024.pb.Lo"
-  "cation.Country\022\r\n\005state\030\002 \001(\t\022\014\n\004city\030\003 "
-  "\001(\t\022\014\n\004code\030\004 \001(\t\022\020\n\010latitude\030\005 \001(\021\022\021\n\tl"
-  "ongitude\030\006 \001(\021\"\350(\n\007Country\022\023\n\017UNKNOWN_CO"
-  "UNTRY\020\000\022\006\n\002AF\020\001\022\006\n\002AX\020\002\022\006\n\002AL\020\003\022\006\n\002DZ\020\004\022"
-  "\006\n\002AS\020\005\022\006\n\002AD\020\006\022\006\n\002AO\020\007\022\006\n\002AI\020\010\022\006\n\002AQ\020\t\022"
-  "\006\n\002AG\020\n\022\006\n\002AR\020\013\022\006\n\002AM\020\014\022\006\n\002AW\020\r\022\006\n\002AU\020\016\022"
-  "\006\n\002AT\020\017\022\006\n\002AZ\020\020\022\006\n\002BS\020\021\022\006\n\002BH\020\022\022\006\n\002BD\020\023\022"
-  "\006\n\002BB\020\024\022\006\n\002BY\020\025\022\006\n\002BE\020\026\022\006\n\002BZ\020\027\022\006\n\002BJ\020\030\022"
-  "\006\n\002BM\020\031\022\006\n\002BT\020\032\022\006\n\002BO\020\033\022\006\n\002BQ\020\034\022\006\n\002BA\020\035\022"
-  "\006\n\002BW\020\036\022\006\n\002BV\020\037\022\006\n\002BR\020 \022\006\n\002IO\020!\022\006\n\002BN\020\"\022"
-  "\006\n\002BG\020#\022\006\n\002BF\020$\022\006\n\002BI\020%\022\006\n\002KH\020&\022\006\n\002CM\020\'\022"
-  "\006\n\002CA\020(\022\006\n\002CV\020)\022\006\n\002KY\020*\022\006\n\002CF\020+\022\006\n\002TD\020,\022"
-  "\006\n\002CL\020-\022\006\n\002CN\020.\022\006\n\002CX\020/\022\006\n\002CC\0200\022\006\n\002CO\0201\022"
-  "\006\n\002KM\0202\022\006\n\002CG\0203\022\006\n\002CD\0204\022\006\n\002CK\0205\022\006\n\002CR\0206\022"
-  "\006\n\002CI\0207\022\006\n\002HR\0208\022\006\n\002CU\0209\022\006\n\002CW\020:\022\006\n\002CY\020;\022"
-  "\006\n\002CZ\020<\022\006\n\002DK\020=\022\006\n\002DJ\020>\022\006\n\002DM\020\?\022\006\n\002DO\020@\022"
-  "\006\n\002EC\020A\022\006\n\002EG\020B\022\006\n\002SV\020C\022\006\n\002GQ\020D\022\006\n\002ER\020E\022"
-  "\006\n\002EE\020F\022\006\n\002ET\020G\022\006\n\002FK\020H\022\006\n\002FO\020I\022\006\n\002FJ\020J\022"
-  "\006\n\002FI\020K\022\006\n\002FR\020L\022\006\n\002GF\020M\022\006\n\002PF\020N\022\006\n\002TF\020O\022"
-  "\006\n\002GA\020P\022\006\n\002GM\020Q\022\006\n\002GE\020R\022\006\n\002DE\020S\022\006\n\002GH\020T\022"
-  "\006\n\002GI\020U\022\006\n\002GR\020V\022\006\n\002GL\020W\022\006\n\002GD\020X\022\006\n\002GP\020Y\022"
-  "\006\n\002GU\020Z\022\006\n\002GT\020[\022\006\n\002GG\020\\\022\006\n\002GN\020]\022\006\n\002GW\020^\022"
-  "\006\n\002GY\020_\022\006\n\002HT\020`\022\006\n\002HM\020a\022\006\n\002VA\020b\022\006\n\002HN\020c\022"
-  "\006\n\002HK\020d\022\006\n\002HU\020e\022\006\n\002IS\020f\022\006\n\002IN\020g\022\006\n\002ID\020h\022"
-  "\006\n\002IR\020i\022\006\n\002IQ\020j\022\006\n\002IE\020k\022\006\n\002IM\020l\022\006\n\002IL\020m\022"
-  "\006\n\002IT\020n\022\006\n\002JM\020o\022\006\n\002JP\020p\022\006\n\002JE\020q\022\006\n\002JO\020r\022"
-  "\006\n\002KZ\020s\022\006\n\002KE\020t\022\006\n\002KI\020u\022\006\n\002KP\020v\022\006\n\002KR\020w\022"
-  "\006\n\002KW\020x\022\006\n\002KG\020y\022\006\n\002LA\020z\022\006\n\002LV\020{\022\006\n\002LB\020|\022"
-  "\006\n\002LS\020}\022\006\n\002LR\020~\022\006\n\002LY\020\177\022\007\n\002LI\020\200\001\022\007\n\002LT\020\201"
-  "\001\022\007\n\002LU\020\202\001\022\007\n\002MO\020\203\001\022\007\n\002MK\020\204\001\022\007\n\002MG\020\205\001\022\007\n"
-  "\002MW\020\206\001\022\007\n\002MY\020\207\001\022\007\n\002MV\020\210\001\022\007\n\002ML\020\211\001\022\007\n\002MT\020"
-  "\212\001\022\007\n\002MH\020\213\001\022\007\n\002MQ\020\214\001\022\007\n\002MR\020\215\001\022\007\n\002MU\020\216\001\022\007"
-  "\n\002YT\020\217\001\022\007\n\002MX\020\220\001\022\007\n\002FM\020\221\001\022\007\n\002MD\020\222\001\022\007\n\002MC"
-  "\020\223\001\022\007\n\002MN\020\224\001\022\007\n\002ME\020\225\001\022\007\n\002MS\020\226\001\022\007\n\002MA\020\227\001\022"
-  "\007\n\002MZ\020\230\001\022\007\n\002MM\020\231\001\022\007\n\002NA\020\232\001\022\007\n\002NR\020\233\001\022\007\n\002N"
-  "P\020\234\001\022\007\n\002NL\020\235\001\022\007\n\002NC\020\236\001\022\007\n\002NZ\020\237\001\022\007\n\002NI\020\240\001"
-  "\022\007\n\002NE\020\241\001\022\007\n\002NG\020\242\001\022\007\n\002NU\020\243\001\022\007\n\002NF\020\244\001\022\007\n\002"
-  "MP\020\245\001\022\007\n\002NO\020\246\001\022\007\n\002OM\020\247\001\022\007\n\002PK\020\250\001\022\007\n\002PW\020\251"
-  "\001\022\007\n\002PS\020\252\001\022\007\n\002PA\020\253\001\022\007\n\002PG\020\254\001\022\007\n\002PY\020\255\001\022\007\n"
-  "\002PE\020\256\001\022\007\n\002PH\020\257\001\022\007\n\002PN\020\260\001\022\007\n\002PL\020\261\001\022\007\n\002PT\020"
-  "\262\001\022\007\n\002PR\020\263\001\022\007\n\002QA\020\264\001\022\007\n\002RE\020\265\001\022\007\n\002RO\020\266\001\022\007"
-  "\n\002RU\020\267\001\022\007\n\002RW\020\270\001\022\007\n\002BL\020\271\001\022\007\n\002SH\020\272\001\022\007\n\002KN"
-  "\020\273\001\022\007\n\002LC\020\274\001\022\007\n\002MF\020\275\001\022\007\n\002PM\020\276\001\022\007\n\002VC\020\277\001\022"
-  "\007\n\002WS\020\300\001\022\007\n\002SM\020\301\001\022\007\n\002ST\020\302\001\022\007\n\002SA\020\303\001\022\007\n\002S"
-  "N\020\304\001\022\007\n\002RS\020\305\001\022\007\n\002SC\020\306\001\022\007\n\002SL\020\307\001\022\007\n\002SG\020\310\001"
-  "\022\007\n\002SX\020\311\001\022\007\n\002SK\020\312\001\022\007\n\002SI\020\313\001\022\007\n\002SB\020\314\001\022\007\n\002"
-  "SO\020\315\001\022\007\n\002ZA\020\316\001\022\007\n\002GS\020\317\001\022\007\n\002SS\020\320\001\022\007\n\002ES\020\321"
-  "\001\022\007\n\002LK\020\322\001\022\007\n\002SD\020\323\001\022\007\n\002SR\020\324\001\022\007\n\002SJ\020\325\001\022\007\n"
-  "\002SZ\020\326\001\022\007\n\002SE\020\327\001\022\007\n\002CH\020\330\001\022\007\n\002SY\020\331\001\022\007\n\002TW\020"
-  "\332\001\022\007\n\002TJ\020\333\001\022\007\n\002TZ\020\334\001\022\007\n\002TH\020\335\001\022\007\n\002TL\020\336\001\022\007"
-  "\n\002TG\020\337\001\022\007\n\002TK\020\340\001\022\007\n\002TO\020\341\001\022\007\n\002TT\020\342\001\022\007\n\002TN"
-  "\020\343\001\022\007\n\002TR\020\344\001\022\007\n\002TM\020\345\001\022\007\n\002TC\020\346\001\022\007\n\002TV\020\347\001\022"
-  "\007\n\002UG\020\350\001\022\007\n\002UA\020\351\001\022\007\n\002AE\020\352\001\022\007\n\002GB\020\353\001\022\007\n\002U"
-  "S\020\354\001\022\007\n\002UM\020\355\001\022\007\n\002UY\020\356\001\022\007\n\002UZ\020\357\001\022\007\n\002VU\020\360\001"
-  "\022\007\n\002VE\020\361\001\022\007\n\002VN\020\362\001\022\007\n\002VG\020\363\001\022\007\n\002VI\020\364\001\022\007\n\002"
-  "WF\020\365\001\022\007\n\002EH\020\366\001\022\007\n\002YE\020\367\001\022\007\n\002ZM\020\370\001\022\007\n\002ZW\020\371"
-  "\001\022\t\n\004R001\020\372\001\022\t\n\004R002\020\373\001\022\t\n\004R015\020\374\001\022\t\n\004R0"
-  "12\020\375\001\022\t\n\004R818\020\376\001\022\t\n\004R434\020\377\001\022\t\n\004R504\020\200\002\022\t"
-  "\n\004R729\020\201\002\022\t\n\004R788\020\202\002\022\t\n\004R732\020\203\002\022\t\n\004R202\020"
-  "\204\002\022\t\n\004R014\020\205\002\022\t\n\004R086\020\206\002\022\t\n\004R108\020\207\002\022\t\n\004R"
-  "174\020\210\002\022\t\n\004R262\020\211\002\022\t\n\004R232\020\212\002\022\t\n\004R231\020\213\002\022"
-  "\t\n\004R260\020\214\002\022\t\n\004R404\020\215\002\022\t\n\004R450\020\216\002\022\t\n\004R454"
-  "\020\217\002\022\t\n\004R480\020\220\002\022\t\n\004R175\020\221\002\022\t\n\004R508\020\222\002\022\t\n\004"
-  "R638\020\223\002\022\t\n\004R646\020\224\002\022\t\n\004R690\020\225\002\022\t\n\004R706\020\226\002"
-  "\022\t\n\004R728\020\227\002\022\t\n\004R800\020\230\002\022\t\n\004R834\020\231\002\022\t\n\004R89"
-  "4\020\232\002\022\t\n\004R716\020\233\002\022\t\n\004R017\020\234\002\022\t\n\004R024\020\235\002\022\t\n"
-  "\004R120\020\236\002\022\t\n\004R140\020\237\002\022\t\n\004R148\020\240\002\022\t\n\004R178\020\241"
-  "\002\022\t\n\004R180\020\242\002\022\t\n\004R226\020\243\002\022\t\n\004R266\020\244\002\022\t\n\004R6"
-  "78\020\245\002\022\t\n\004R018\020\246\002\022\t\n\004R072\020\247\002\022\t\n\004R748\020\250\002\022\t"
-  "\n\004R426\020\251\002\022\t\n\004R516\020\252\002\022\t\n\004R710\020\253\002\022\t\n\004R011\020"
-  "\254\002\022\t\n\004R204\020\255\002\022\t\n\004R854\020\256\002\022\t\n\004R132\020\257\002\022\t\n\004R"
-  "384\020\260\002\022\t\n\004R270\020\261\002\022\t\n\004R288\020\262\002\022\t\n\004R324\020\263\002\022"
-  "\t\n\004R624\020\264\002\022\t\n\004R430\020\265\002\022\t\n\004R466\020\266\002\022\t\n\004R478"
-  "\020\267\002\022\t\n\004R562\020\270\002\022\t\n\004R566\020\271\002\022\t\n\004R654\020\272\002\022\t\n\004"
-  "R686\020\273\002\022\t\n\004R694\020\274\002\022\t\n\004R768\020\275\002\022\t\n\004R019\020\276\002"
-  "\022\t\n\004R419\020\277\002\022\t\n\004R029\020\300\002\022\t\n\004R660\020\301\002\022\t\n\004R02"
-  "8\020\302\002\022\t\n\004R533\020\303\002\022\t\n\004R044\020\304\002\022\t\n\004R052\020\305\002\022\t\n"
-  "\004R535\020\306\002\022\t\n\004R092\020\307\002\022\t\n\004R136\020\310\002\022\t\n\004R192\020\311"
-  "\002\022\t\n\004R531\020\312\002\022\t\n\004R212\020\313\002\022\t\n\004R214\020\314\002\022\t\n\004R3"
-  "08\020\315\002\022\t\n\004R312\020\316\002\022\t\n\004R332\020\317\002\022\t\n\004R388\020\320\002\022\t"
-  "\n\004R474\020\321\002\022\t\n\004R500\020\322\002\022\t\n\004R630\020\323\002\022\t\n\004R652\020"
-  "\324\002\022\t\n\004R659\020\325\002\022\t\n\004R662\020\326\002\022\t\n\004R663\020\327\002\022\t\n\004R"
-  "670\020\330\002\022\t\n\004R534\020\331\002\022\t\n\004R780\020\332\002\022\t\n\004R796\020\333\002\022"
-  "\t\n\004R850\020\334\002\022\t\n\004R013\020\335\002\022\t\n\004R084\020\336\002\022\t\n\004R188"
-  "\020\337\002\022\t\n\004R222\020\340\002\022\t\n\004R320\020\341\002\022\t\n\004R340\020\342\002\022\t\n\004"
-  "R484\020\343\002\022\t\n\004R558\020\344\002\022\t\n\004R591\020\345\002\022\t\n\004R005\020\346\002"
-  "\022\t\n\004R032\020\347\002\022\t\n\004R068\020\350\002\022\t\n\004R074\020\351\002\022\t\n\004R07"
-  "6\020\352\002\022\t\n\004R152\020\353\002\022\t\n\004R170\020\354\002\022\t\n\004R218\020\355\002\022\t\n"
-  "\004R238\020\356\002\022\t\n\004R254\020\357\002\022\t\n\004R328\020\360\002\022\t\n\004R600\020\361"
-  "\002\022\t\n\004R604\020\362\002\022\t\n\004R239\020\363\002\022\t\n\004R740\020\364\002\022\t\n\004R8"
-  "58\020\365\002\022\t\n\004R862\020\366\002\022\t\n\004R021\020\367\002\022\t\n\004R060\020\370\002\022\t"
-  "\n\004R124\020\371\002\022\t\n\004R304\020\372\002\022\t\n\004R666\020\373\002\022\t\n\004R840\020"
-  "\374\002\022\t\n\004R010\020\375\002\022\t\n\004R142\020\376\002\022\t\n\004R143\020\377\002\022\t\n\004R"
-  "398\020\200\003\022\t\n\004R417\020\201\003\022\t\n\004R762\020\202\003\022\t\n\004R795\020\203\003\022"
-  "\t\n\004R860\020\204\003\022\t\n\004R030\020\205\003\022\t\n\004R156\020\206\003\022\t\n\004R344"
-  "\020\207\003\022\t\n\004R446\020\210\003\022\t\n\004R408\020\211\003\022\t\n\004R392\020\212\003\022\t\n\004"
-  "R496\020\213\003\022\t\n\004R410\020\214\003\022\t\n\004R035\020\215\003\022\t\n\004R096\020\216\003"
-  "\022\t\n\004R116\020\217\003\022\t\n\004R360\020\220\003\022\t\n\004R418\020\221\003\022\t\n\004R45"
-  "8\020\222\003\022\t\n\004R104\020\223\003\022\t\n\004R608\020\224\003\022\t\n\004R702\020\225\003\022\t\n"
-  "\004R764\020\226\003\022\t\n\004R626\020\227\003\022\t\n\004R704\020\230\003\022\t\n\004R034\020\231"
-  "\003\022\t\n\004R004\020\232\003\022\t\n\004R050\020\233\003\022\t\n\004R064\020\234\003\022\t\n\004R3"
-  "56\020\235\003\022\t\n\004R364\020\236\003\022\t\n\004R462\020\237\003\022\t\n\004R524\020\240\003\022\t"
-  "\n\004R586\020\241\003\022\t\n\004R144\020\242\003\022\t\n\004R145\020\243\003\022\t\n\004R051\020"
-  "\244\003\022\t\n\004R031\020\245\003\022\t\n\004R048\020\246\003\022\t\n\004R196\020\247\003\022\t\n\004R"
-  "268\020\250\003\022\t\n\004R368\020\251\003\022\t\n\004R376\020\252\003\022\t\n\004R400\020\253\003\022"
-  "\t\n\004R414\020\254\003\022\t\n\004R422\020\255\003\022\t\n\004R512\020\256\003\022\t\n\004R634"
-  "\020\257\003\022\t\n\004R682\020\260\003\022\t\n\004R275\020\261\003\022\t\n\004R760\020\262\003\022\t\n\004"
-  "R792\020\263\003\022\t\n\004R784\020\264\003\022\t\n\004R887\020\265\003\022\t\n\004R150\020\266\003"
-  "\022\t\n\004R151\020\267\003\022\t\n\004R112\020\270\003\022\t\n\004R100\020\271\003\022\t\n\004R20"
-  "3\020\272\003\022\t\n\004R348\020\273\003\022\t\n\004R616\020\274\003\022\t\n\004R498\020\275\003\022\t\n"
-  "\004R642\020\276\003\022\t\n\004R643\020\277\003\022\t\n\004R703\020\300\003\022\t\n\004R804\020\301"
-  "\003\022\t\n\004R154\020\302\003\022\t\n\004R248\020\303\003\022\t\n\004R830\020\304\003\022\t\n\004R8"
-  "31\020\305\003\022\t\n\004R832\020\306\003\022\t\n\004R680\020\307\003\022\t\n\004R208\020\310\003\022\t"
-  "\n\004R233\020\311\003\022\t\n\004R234\020\312\003\022\t\n\004R246\020\313\003\022\t\n\004R352\020"
-  "\314\003\022\t\n\004R372\020\315\003\022\t\n\004R833\020\316\003\022\t\n\004R428\020\317\003\022\t\n\004R"
-  "440\020\320\003\022\t\n\004R578\020\321\003\022\t\n\004R744\020\322\003\022\t\n\004R752\020\323\003\022"
-  "\t\n\004R826\020\324\003\022\t\n\004R039\020\325\003\022\t\n\004R008\020\326\003\022\t\n\004R020"
-  "\020\327\003\022\t\n\004R070\020\330\003\022\t\n\004R191\020\331\003\022\t\n\004R292\020\332\003\022\t\n\004"
-  "R300\020\333\003\022\t\n\004R336\020\334\003\022\t\n\004R380\020\335\003\022\t\n\004R470\020\336\003"
-  "\022\t\n\004R499\020\337\003\022\t\n\004R807\020\340\003\022\t\n\004R620\020\341\003\022\t\n\004R67"
-  "4\020\342\003\022\t\n\004R688\020\343\003\022\t\n\004R705\020\344\003\022\t\n\004R724\020\345\003\022\t\n"
-  "\004R155\020\346\003\022\t\n\004R040\020\347\003\022\t\n\004R056\020\350\003\022\t\n\004R250\020\351"
-  "\003\022\t\n\004R276\020\352\003\022\t\n\004R438\020\353\003\022\t\n\004R442\020\354\003\022\t\n\004R4"
-  "92\020\355\003\022\t\n\004R528\020\356\003\022\t\n\004R756\020\357\003\022\t\n\004R009\020\360\003\022\t"
-  "\n\004R053\020\361\003\022\t\n\004R036\020\362\003\022\t\n\004R162\020\363\003\022\t\n\004R166\020"
-  "\364\003\022\t\n\004R334\020\365\003\022\t\n\004R554\020\366\003\022\t\n\004R574\020\367\003\022\t\n\004R"
-  "054\020\370\003\022\t\n\004R242\020\371\003\022\t\n\004R540\020\372\003\022\t\n\004R598\020\373\003\022"
-  "\t\n\004R090\020\374\003\022\t\n\004R548\020\375\003\022\t\n\004R057\020\376\003\022\t\n\004R316"
-  "\020\377\003\022\t\n\004R296\020\200\004\022\t\n\004R584\020\201\004\022\t\n\004R583\020\202\004\022\t\n\004"
-  "R520\020\203\004\022\t\n\004R580\020\204\004\022\t\n\004R585\020\205\004\022\t\n\004R581\020\206\004"
-  "\022\t\n\004R061\020\207\004\022\t\n\004R016\020\210\004\022\t\n\004R184\020\211\004\022\t\n\004R25"
-  "8\020\212\004\022\t\n\004R570\020\213\004\022\t\n\004R612\020\214\004\022\t\n\004R882\020\215\004\022\t\n"
-  "\004R772\020\216\004\022\t\n\004R776\020\217\004\022\t\n\004R798\020\220\004\022\t\n\004R876\020\221"
-  "\004b\006proto3"
-  ;
-::google::protobuf::internal::DescriptorTable descriptor_table_claim_2eproto = {
-  false, InitDefaults_claim_2eproto, 
-  descriptor_table_protodef_claim_2eproto,
-  "claim.proto", &assign_descriptors_table_claim_2eproto, 10569,
-};
+void protobuf_AssignDescriptorsOnce() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
+}
 
-void AddDescriptors_claim_2eproto() {
-  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
-  {
+void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
+void protobuf_RegisterTypes(const ::std::string&) {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 10);
+}
+
+void AddDescriptorsImpl() {
+  InitDefaults();
+  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
+      "\n\013claim.proto\022\002pb\"M\n\005Claim\022\034\n\006stream\030\001 \001"
+      "(\0132\n.pb.StreamH\000\022\036\n\007channel\030\002 \001(\0132\013.pb.C"
+      "hannelH\000B\006\n\004type\"\350\001\n\007Channel\022\022\n\npublic_k"
+      "ey\030\001 \001(\014\022\r\n\005title\030\002 \001(\t\022\023\n\013description\030\003"
+      " \001(\t\022\025\n\rthumbnail_url\030\004 \001(\t\022\014\n\004tags\030\005 \003("
+      "\t\022\037\n\tlanguages\030\006 \003(\0132\014.pb.Language\022\037\n\tlo"
+      "cations\030\007 \003(\0132\014.pb.Location\022\025\n\rcontact_e"
+      "mail\030\010 \001(\t\022\024\n\014homepage_url\030\t \001(\t\022\021\n\tcove"
+      "r_url\030\n \001(\t\"\216\003\n\006Stream\022\017\n\007sd_hash\030\001 \001(\014\022"
+      "\r\n\005title\030\002 \001(\t\022\023\n\013description\030\003 \001(\t\022\025\n\rt"
+      "humbnail_url\030\004 \001(\t\022\014\n\004tags\030\005 \003(\t\022\037\n\tlang"
+      "uages\030\006 \003(\0132\014.pb.Language\022\037\n\tlocations\030\007"
+      " \003(\0132\014.pb.Location\022\016\n\006author\030\010 \001(\t\022\017\n\007li"
+      "cense\030\t \001(\t\022\023\n\013license_url\030\n \001(\t\022\024\n\014rele"
+      "ase_time\030\013 \001(\003\022\022\n\nmedia_type\030\r \001(\t\022\026\n\004fi"
+      "le\030\016 \001(\0132\010.pb.File\022\024\n\003fee\030\017 \001(\0132\007.pb.Fee"
+      "\022\032\n\005image\030\020 \001(\0132\t.pb.ImageH\000\022\032\n\005video\030\021 "
+      "\001(\0132\t.pb.VideoH\000\022\032\n\005audio\030\022 \001(\0132\t.pb.Aud"
+      "ioH\000B\006\n\004type\"\207\001\n\003Fee\022\"\n\010currency\030\001 \001(\0162\020"
+      ".pb.Fee.Currency\022\017\n\007address\030\002 \001(\014\022\016\n\006amo"
+      "unt\030\003 \001(\004\";\n\010Currency\022\024\n\020UNKNOWN_CURRENC"
+      "Y\020\000\022\007\n\003LBC\020\001\022\007\n\003BTC\020\002\022\007\n\003USD\020\003\"0\n\004File\022\014"
+      "\n\004hash\030\003 \001(\014\022\014\n\004name\030\001 \001(\t\022\014\n\004size\030\002 \001(\004"
+      "\"&\n\005Image\022\r\n\005width\030\001 \001(\r\022\016\n\006height\030\002 \001(\r"
+      "\"8\n\005Video\022\r\n\005width\030\001 \001(\r\022\016\n\006height\030\002 \001(\r"
+      "\022\020\n\010duration\030\003 \001(\r\"\031\n\005Audio\022\020\n\010duration\030"
+      "\001 \001(\r\"\307\035\n\010Language\022\'\n\010language\030\001 \001(\0162\025.p"
+      "b.Language.Language\022#\n\006script\030\002 \001(\0162\023.pb"
+      ".Language.Script\022$\n\006region\030\003 \001(\0162\024.pb.Lo"
+      "cation.Country\"\231\014\n\010Language\022\024\n\020UNKNOWN_L"
+      "ANGUAGE\020\000\022\006\n\002en\020\001\022\006\n\002aa\020\002\022\006\n\002ab\020\003\022\006\n\002ae\020"
+      "\004\022\006\n\002af\020\005\022\006\n\002ak\020\006\022\006\n\002am\020\007\022\006\n\002an\020\010\022\006\n\002ar\020"
+      "\t\022\006\n\002as\020\n\022\006\n\002av\020\013\022\006\n\002ay\020\014\022\006\n\002az\020\r\022\006\n\002ba\020"
+      "\016\022\006\n\002be\020\017\022\006\n\002bg\020\020\022\006\n\002bh\020\021\022\006\n\002bi\020\022\022\006\n\002bm\020"
+      "\023\022\006\n\002bn\020\024\022\006\n\002bo\020\025\022\006\n\002br\020\026\022\006\n\002bs\020\027\022\006\n\002ca\020"
+      "\030\022\006\n\002ce\020\031\022\006\n\002ch\020\032\022\006\n\002co\020\033\022\006\n\002cr\020\034\022\006\n\002cs\020"
+      "\035\022\006\n\002cu\020\036\022\006\n\002cv\020\037\022\006\n\002cy\020 \022\006\n\002da\020!\022\006\n\002de\020"
+      "\"\022\006\n\002dv\020#\022\006\n\002dz\020$\022\006\n\002ee\020%\022\006\n\002el\020&\022\006\n\002eo\020"
+      "\'\022\006\n\002es\020(\022\006\n\002et\020)\022\006\n\002eu\020*\022\006\n\002fa\020+\022\006\n\002ff\020"
+      ",\022\006\n\002fi\020-\022\006\n\002fj\020.\022\006\n\002fo\020/\022\006\n\002fr\0200\022\006\n\002fy\020"
+      "1\022\006\n\002ga\0202\022\006\n\002gd\0203\022\006\n\002gl\0204\022\006\n\002gn\0205\022\006\n\002gu\020"
+      "6\022\006\n\002gv\0207\022\006\n\002ha\0208\022\006\n\002he\0209\022\006\n\002hi\020:\022\006\n\002ho\020"
+      ";\022\006\n\002hr\020<\022\006\n\002ht\020=\022\006\n\002hu\020>\022\006\n\002hy\020\?\022\006\n\002hz\020"
+      "@\022\006\n\002ia\020A\022\006\n\002id\020B\022\006\n\002ie\020C\022\006\n\002ig\020D\022\006\n\002ii\020"
+      "E\022\006\n\002ik\020F\022\006\n\002io\020G\022\006\n\002is\020H\022\006\n\002it\020I\022\006\n\002iu\020"
+      "J\022\006\n\002ja\020K\022\006\n\002jv\020L\022\006\n\002ka\020M\022\006\n\002kg\020N\022\006\n\002ki\020"
+      "O\022\006\n\002kj\020P\022\006\n\002kk\020Q\022\006\n\002kl\020R\022\006\n\002km\020S\022\006\n\002kn\020"
+      "T\022\006\n\002ko\020U\022\006\n\002kr\020V\022\006\n\002ks\020W\022\006\n\002ku\020X\022\006\n\002kv\020"
+      "Y\022\006\n\002kw\020Z\022\006\n\002ky\020[\022\006\n\002la\020\\\022\006\n\002lb\020]\022\006\n\002lg\020"
+      "^\022\006\n\002li\020_\022\006\n\002ln\020`\022\006\n\002lo\020a\022\006\n\002lt\020b\022\006\n\002lu\020"
+      "c\022\006\n\002lv\020d\022\006\n\002mg\020e\022\006\n\002mh\020f\022\006\n\002mi\020g\022\006\n\002mk\020"
+      "h\022\006\n\002ml\020i\022\006\n\002mn\020j\022\006\n\002mr\020k\022\006\n\002ms\020l\022\006\n\002mt\020"
+      "m\022\006\n\002my\020n\022\006\n\002na\020o\022\006\n\002nb\020p\022\006\n\002nd\020q\022\006\n\002ne\020"
+      "r\022\006\n\002ng\020s\022\006\n\002nl\020t\022\006\n\002nn\020u\022\006\n\002no\020v\022\006\n\002nr\020"
+      "w\022\006\n\002nv\020x\022\006\n\002ny\020y\022\006\n\002oc\020z\022\006\n\002oj\020{\022\006\n\002om\020"
+      "|\022\006\n\002or\020}\022\006\n\002os\020~\022\006\n\002pa\020\177\022\007\n\002pi\020\200\001\022\007\n\002pl"
+      "\020\201\001\022\007\n\002ps\020\202\001\022\007\n\002pt\020\203\001\022\007\n\002qu\020\204\001\022\007\n\002rm\020\205\001\022"
+      "\007\n\002rn\020\206\001\022\007\n\002ro\020\207\001\022\007\n\002ru\020\210\001\022\007\n\002rw\020\211\001\022\007\n\002s"
+      "a\020\212\001\022\007\n\002sc\020\213\001\022\007\n\002sd\020\214\001\022\007\n\002se\020\215\001\022\007\n\002sg\020\216\001"
+      "\022\007\n\002si\020\217\001\022\007\n\002sk\020\220\001\022\007\n\002sl\020\221\001\022\007\n\002sm\020\222\001\022\007\n\002"
+      "sn\020\223\001\022\007\n\002so\020\224\001\022\007\n\002sq\020\225\001\022\007\n\002sr\020\226\001\022\007\n\002ss\020\227"
+      "\001\022\007\n\002st\020\230\001\022\007\n\002su\020\231\001\022\007\n\002sv\020\232\001\022\007\n\002sw\020\233\001\022\007\n"
+      "\002ta\020\234\001\022\007\n\002te\020\235\001\022\007\n\002tg\020\236\001\022\007\n\002th\020\237\001\022\007\n\002ti\020"
+      "\240\001\022\007\n\002tk\020\241\001\022\007\n\002tl\020\242\001\022\007\n\002tn\020\243\001\022\007\n\002to\020\244\001\022\007"
+      "\n\002tr\020\245\001\022\007\n\002ts\020\246\001\022\007\n\002tt\020\247\001\022\007\n\002tw\020\250\001\022\007\n\002ty"
+      "\020\251\001\022\007\n\002ug\020\252\001\022\007\n\002uk\020\253\001\022\007\n\002ur\020\254\001\022\007\n\002uz\020\255\001\022"
+      "\007\n\002ve\020\256\001\022\007\n\002vi\020\257\001\022\007\n\002vo\020\260\001\022\007\n\002wa\020\261\001\022\007\n\002w"
+      "o\020\262\001\022\007\n\002xh\020\263\001\022\007\n\002yi\020\264\001\022\007\n\002yo\020\265\001\022\007\n\002za\020\266\001"
+      "\022\007\n\002zh\020\267\001\022\007\n\002zu\020\270\001\"\252\020\n\006Script\022\022\n\016UNKNOWN"
+      "_SCRIPT\020\000\022\010\n\004Adlm\020\001\022\010\n\004Afak\020\002\022\010\n\004Aghb\020\003\022"
+      "\010\n\004Ahom\020\004\022\010\n\004Arab\020\005\022\010\n\004Aran\020\006\022\010\n\004Armi\020\007\022"
+      "\010\n\004Armn\020\010\022\010\n\004Avst\020\t\022\010\n\004Bali\020\n\022\010\n\004Bamu\020\013\022"
+      "\010\n\004Bass\020\014\022\010\n\004Batk\020\r\022\010\n\004Beng\020\016\022\010\n\004Bhks\020\017\022"
+      "\010\n\004Blis\020\020\022\010\n\004Bopo\020\021\022\010\n\004Brah\020\022\022\010\n\004Brai\020\023\022"
+      "\010\n\004Bugi\020\024\022\010\n\004Buhd\020\025\022\010\n\004Cakm\020\026\022\010\n\004Cans\020\027\022"
+      "\010\n\004Cari\020\030\022\010\n\004Cham\020\031\022\010\n\004Cher\020\032\022\010\n\004Cirt\020\033\022"
+      "\010\n\004Copt\020\034\022\010\n\004Cpmn\020\035\022\010\n\004Cprt\020\036\022\010\n\004Cyrl\020\037\022"
+      "\010\n\004Cyrs\020 \022\010\n\004Deva\020!\022\010\n\004Dogr\020\"\022\010\n\004Dsrt\020#\022"
+      "\010\n\004Dupl\020$\022\010\n\004Egyd\020%\022\010\n\004Egyh\020&\022\010\n\004Egyp\020\'\022"
+      "\010\n\004Elba\020(\022\010\n\004Elym\020)\022\010\n\004Ethi\020*\022\010\n\004Geok\020+\022"
+      "\010\n\004Geor\020,\022\010\n\004Glag\020-\022\010\n\004Gong\020.\022\010\n\004Gonm\020/\022"
+      "\010\n\004Goth\0200\022\010\n\004Gran\0201\022\010\n\004Grek\0202\022\010\n\004Gujr\0203\022"
+      "\010\n\004Guru\0204\022\010\n\004Hanb\0205\022\010\n\004Hang\0206\022\010\n\004Hani\0207\022"
+      "\010\n\004Hano\0208\022\010\n\004Hans\0209\022\010\n\004Hant\020:\022\010\n\004Hatr\020;\022"
+      "\010\n\004Hebr\020<\022\010\n\004Hira\020=\022\010\n\004Hluw\020>\022\010\n\004Hmng\020\?\022"
+      "\010\n\004Hmnp\020@\022\010\n\004Hrkt\020A\022\010\n\004Hung\020B\022\010\n\004Inds\020C\022"
+      "\010\n\004Ital\020D\022\010\n\004Jamo\020E\022\010\n\004Java\020F\022\010\n\004Jpan\020G\022"
+      "\010\n\004Jurc\020H\022\010\n\004Kali\020I\022\010\n\004Kana\020J\022\010\n\004Khar\020K\022"
+      "\010\n\004Khmr\020L\022\010\n\004Khoj\020M\022\010\n\004Kitl\020N\022\010\n\004Kits\020O\022"
+      "\010\n\004Knda\020P\022\010\n\004Kore\020Q\022\010\n\004Kpel\020R\022\010\n\004Kthi\020S\022"
+      "\010\n\004Lana\020T\022\010\n\004Laoo\020U\022\010\n\004Latf\020V\022\010\n\004Latg\020W\022"
+      "\010\n\004Latn\020X\022\010\n\004Leke\020Y\022\010\n\004Lepc\020Z\022\010\n\004Limb\020[\022"
+      "\010\n\004Lina\020\\\022\010\n\004Linb\020]\022\010\n\004Lisu\020^\022\010\n\004Loma\020_\022"
+      "\010\n\004Lyci\020`\022\010\n\004Lydi\020a\022\010\n\004Mahj\020b\022\010\n\004Maka\020c\022"
+      "\010\n\004Mand\020d\022\010\n\004Mani\020e\022\010\n\004Marc\020f\022\010\n\004Maya\020g\022"
+      "\010\n\004Medf\020h\022\010\n\004Mend\020i\022\010\n\004Merc\020j\022\010\n\004Mero\020k\022"
+      "\010\n\004Mlym\020l\022\010\n\004Modi\020m\022\010\n\004Mong\020n\022\010\n\004Moon\020o\022"
+      "\010\n\004Mroo\020p\022\010\n\004Mtei\020q\022\010\n\004Mult\020r\022\010\n\004Mymr\020s\022"
+      "\010\n\004Nand\020t\022\010\n\004Narb\020u\022\010\n\004Nbat\020v\022\010\n\004Newa\020w\022"
+      "\010\n\004Nkdb\020x\022\010\n\004Nkgb\020y\022\010\n\004Nkoo\020z\022\010\n\004Nshu\020{\022"
+      "\010\n\004Ogam\020|\022\010\n\004Olck\020}\022\010\n\004Orkh\020~\022\010\n\004Orya\020\177\022"
+      "\t\n\004Osge\020\200\001\022\t\n\004Osma\020\201\001\022\t\n\004Palm\020\202\001\022\t\n\004Pauc"
+      "\020\203\001\022\t\n\004Perm\020\204\001\022\t\n\004Phag\020\205\001\022\t\n\004Phli\020\206\001\022\t\n\004"
+      "Phlp\020\207\001\022\t\n\004Phlv\020\210\001\022\t\n\004Phnx\020\211\001\022\t\n\004Plrd\020\212\001"
+      "\022\t\n\004Piqd\020\213\001\022\t\n\004Prti\020\214\001\022\t\n\004Qaaa\020\215\001\022\t\n\004Qab"
+      "x\020\216\001\022\t\n\004Rjng\020\217\001\022\t\n\004Rohg\020\220\001\022\t\n\004Roro\020\221\001\022\t\n"
+      "\004Runr\020\222\001\022\t\n\004Samr\020\223\001\022\t\n\004Sara\020\224\001\022\t\n\004Sarb\020\225"
+      "\001\022\t\n\004Saur\020\226\001\022\t\n\004Sgnw\020\227\001\022\t\n\004Shaw\020\230\001\022\t\n\004Sh"
+      "rd\020\231\001\022\t\n\004Shui\020\232\001\022\t\n\004Sidd\020\233\001\022\t\n\004Sind\020\234\001\022\t"
+      "\n\004Sinh\020\235\001\022\t\n\004Sogd\020\236\001\022\t\n\004Sogo\020\237\001\022\t\n\004Sora\020"
+      "\240\001\022\t\n\004Soyo\020\241\001\022\t\n\004Sund\020\242\001\022\t\n\004Sylo\020\243\001\022\t\n\004S"
+      "yrc\020\244\001\022\t\n\004Syre\020\245\001\022\t\n\004Syrj\020\246\001\022\t\n\004Syrn\020\247\001\022"
+      "\t\n\004Tagb\020\250\001\022\t\n\004Takr\020\251\001\022\t\n\004Tale\020\252\001\022\t\n\004Talu"
+      "\020\253\001\022\t\n\004Taml\020\254\001\022\t\n\004Tang\020\255\001\022\t\n\004Tavt\020\256\001\022\t\n\004"
+      "Telu\020\257\001\022\t\n\004Teng\020\260\001\022\t\n\004Tfng\020\261\001\022\t\n\004Tglg\020\262\001"
+      "\022\t\n\004Thaa\020\263\001\022\t\n\004Thai\020\264\001\022\t\n\004Tibt\020\265\001\022\t\n\004Tir"
+      "h\020\266\001\022\t\n\004Ugar\020\267\001\022\t\n\004Vaii\020\270\001\022\t\n\004Visp\020\271\001\022\t\n"
+      "\004Wara\020\272\001\022\t\n\004Wcho\020\273\001\022\t\n\004Wole\020\274\001\022\t\n\004Xpeo\020\275"
+      "\001\022\t\n\004Xsux\020\276\001\022\t\n\004Yiii\020\277\001\022\t\n\004Zanb\020\300\001\022\t\n\004Zi"
+      "nh\020\301\001\022\t\n\004Zmth\020\302\001\022\t\n\004Zsye\020\303\001\022\t\n\004Zsym\020\304\001\022\t"
+      "\n\004Zxxx\020\305\001\022\t\n\004Zyyy\020\306\001\022\t\n\004Zzzz\020\307\001\"\344\021\n\010Loca"
+      "tion\022%\n\007country\030\001 \001(\0162\024.pb.Location.Coun"
+      "try\022\r\n\005state\030\002 \001(\t\022\014\n\004city\030\003 \001(\t\022\014\n\004code"
+      "\030\004 \001(\t\022\020\n\010latitude\030\005 \001(\021\022\021\n\tlongitude\030\006 "
+      "\001(\021\"\340\020\n\007Country\022\023\n\017UNKNOWN_COUNTRY\020\000\022\006\n\002"
+      "AF\020\001\022\006\n\002AX\020\002\022\006\n\002AL\020\003\022\006\n\002DZ\020\004\022\006\n\002AS\020\005\022\006\n\002"
+      "AD\020\006\022\006\n\002AO\020\007\022\006\n\002AI\020\010\022\006\n\002AQ\020\t\022\006\n\002AG\020\n\022\006\n\002"
+      "AR\020\013\022\006\n\002AM\020\014\022\006\n\002AW\020\r\022\006\n\002AU\020\016\022\006\n\002AT\020\017\022\006\n\002"
+      "AZ\020\020\022\006\n\002BS\020\021\022\006\n\002BH\020\022\022\006\n\002BD\020\023\022\006\n\002BB\020\024\022\006\n\002"
+      "BY\020\025\022\006\n\002BE\020\026\022\006\n\002BZ\020\027\022\006\n\002BJ\020\030\022\006\n\002BM\020\031\022\006\n\002"
+      "BT\020\032\022\006\n\002BO\020\033\022\006\n\002BQ\020\034\022\006\n\002BA\020\035\022\006\n\002BW\020\036\022\006\n\002"
+      "BV\020\037\022\006\n\002BR\020 \022\006\n\002IO\020!\022\006\n\002BN\020\"\022\006\n\002BG\020#\022\006\n\002"
+      "BF\020$\022\006\n\002BI\020%\022\006\n\002KH\020&\022\006\n\002CM\020\'\022\006\n\002CA\020(\022\006\n\002"
+      "CV\020)\022\006\n\002KY\020*\022\006\n\002CF\020+\022\006\n\002TD\020,\022\006\n\002CL\020-\022\006\n\002"
+      "CN\020.\022\006\n\002CX\020/\022\006\n\002CC\0200\022\006\n\002CO\0201\022\006\n\002KM\0202\022\006\n\002"
+      "CG\0203\022\006\n\002CD\0204\022\006\n\002CK\0205\022\006\n\002CR\0206\022\006\n\002CI\0207\022\006\n\002"
+      "HR\0208\022\006\n\002CU\0209\022\006\n\002CW\020:\022\006\n\002CY\020;\022\006\n\002CZ\020<\022\006\n\002"
+      "DK\020=\022\006\n\002DJ\020>\022\006\n\002DM\020\?\022\006\n\002DO\020@\022\006\n\002EC\020A\022\006\n\002"
+      "EG\020B\022\006\n\002SV\020C\022\006\n\002GQ\020D\022\006\n\002ER\020E\022\006\n\002EE\020F\022\006\n\002"
+      "ET\020G\022\006\n\002FK\020H\022\006\n\002FO\020I\022\006\n\002FJ\020J\022\006\n\002FI\020K\022\006\n\002"
+      "FR\020L\022\006\n\002GF\020M\022\006\n\002PF\020N\022\006\n\002TF\020O\022\006\n\002GA\020P\022\006\n\002"
+      "GM\020Q\022\006\n\002GE\020R\022\006\n\002DE\020S\022\006\n\002GH\020T\022\006\n\002GI\020U\022\006\n\002"
+      "GR\020V\022\006\n\002GL\020W\022\006\n\002GD\020X\022\006\n\002GP\020Y\022\006\n\002GU\020Z\022\006\n\002"
+      "GT\020[\022\006\n\002GG\020\\\022\006\n\002GN\020]\022\006\n\002GW\020^\022\006\n\002GY\020_\022\006\n\002"
+      "HT\020`\022\006\n\002HM\020a\022\006\n\002VA\020b\022\006\n\002HN\020c\022\006\n\002HK\020d\022\006\n\002"
+      "HU\020e\022\006\n\002IS\020f\022\006\n\002IN\020g\022\006\n\002ID\020h\022\006\n\002IR\020i\022\006\n\002"
+      "IQ\020j\022\006\n\002IE\020k\022\006\n\002IM\020l\022\006\n\002IL\020m\022\006\n\002IT\020n\022\006\n\002"
+      "JM\020o\022\006\n\002JP\020p\022\006\n\002JE\020q\022\006\n\002JO\020r\022\006\n\002KZ\020s\022\006\n\002"
+      "KE\020t\022\006\n\002KI\020u\022\006\n\002KP\020v\022\006\n\002KR\020w\022\006\n\002KW\020x\022\006\n\002"
+      "KG\020y\022\006\n\002LA\020z\022\006\n\002LV\020{\022\006\n\002LB\020|\022\006\n\002LS\020}\022\006\n\002"
+      "LR\020~\022\006\n\002LY\020\177\022\007\n\002LI\020\200\001\022\007\n\002LT\020\201\001\022\007\n\002LU\020\202\001\022"
+      "\007\n\002MO\020\203\001\022\007\n\002MK\020\204\001\022\007\n\002MG\020\205\001\022\007\n\002MW\020\206\001\022\007\n\002M"
+      "Y\020\207\001\022\007\n\002MV\020\210\001\022\007\n\002ML\020\211\001\022\007\n\002MT\020\212\001\022\007\n\002MH\020\213\001"
+      "\022\007\n\002MQ\020\214\001\022\007\n\002MR\020\215\001\022\007\n\002MU\020\216\001\022\007\n\002YT\020\217\001\022\007\n\002"
+      "MX\020\220\001\022\007\n\002FM\020\221\001\022\007\n\002MD\020\222\001\022\007\n\002MC\020\223\001\022\007\n\002MN\020\224"
+      "\001\022\007\n\002ME\020\225\001\022\007\n\002MS\020\226\001\022\007\n\002MA\020\227\001\022\007\n\002MZ\020\230\001\022\007\n"
+      "\002MM\020\231\001\022\007\n\002NA\020\232\001\022\007\n\002NR\020\233\001\022\007\n\002NP\020\234\001\022\007\n\002NL\020"
+      "\235\001\022\007\n\002NC\020\236\001\022\007\n\002NZ\020\237\001\022\007\n\002NI\020\240\001\022\007\n\002NE\020\241\001\022\007"
+      "\n\002NG\020\242\001\022\007\n\002NU\020\243\001\022\007\n\002NF\020\244\001\022\007\n\002MP\020\245\001\022\007\n\002NO"
+      "\020\246\001\022\007\n\002OM\020\247\001\022\007\n\002PK\020\250\001\022\007\n\002PW\020\251\001\022\007\n\002PS\020\252\001\022"
+      "\007\n\002PA\020\253\001\022\007\n\002PG\020\254\001\022\007\n\002PY\020\255\001\022\007\n\002PE\020\256\001\022\007\n\002P"
+      "H\020\257\001\022\007\n\002PN\020\260\001\022\007\n\002PL\020\261\001\022\007\n\002PT\020\262\001\022\007\n\002PR\020\263\001"
+      "\022\007\n\002QA\020\264\001\022\007\n\002RE\020\265\001\022\007\n\002RO\020\266\001\022\007\n\002RU\020\267\001\022\007\n\002"
+      "RW\020\270\001\022\007\n\002BL\020\271\001\022\007\n\002SH\020\272\001\022\007\n\002KN\020\273\001\022\007\n\002LC\020\274"
+      "\001\022\007\n\002MF\020\275\001\022\007\n\002PM\020\276\001\022\007\n\002VC\020\277\001\022\007\n\002WS\020\300\001\022\007\n"
+      "\002SM\020\301\001\022\007\n\002ST\020\302\001\022\007\n\002SA\020\303\001\022\007\n\002SN\020\304\001\022\007\n\002RS\020"
+      "\305\001\022\007\n\002SC\020\306\001\022\007\n\002SL\020\307\001\022\007\n\002SG\020\310\001\022\007\n\002SX\020\311\001\022\007"
+      "\n\002SK\020\312\001\022\007\n\002SI\020\313\001\022\007\n\002SB\020\314\001\022\007\n\002SO\020\315\001\022\007\n\002ZA"
+      "\020\316\001\022\007\n\002GS\020\317\001\022\007\n\002SS\020\320\001\022\007\n\002ES\020\321\001\022\007\n\002LK\020\322\001\022"
+      "\007\n\002SD\020\323\001\022\007\n\002SR\020\324\001\022\007\n\002SJ\020\325\001\022\007\n\002SZ\020\326\001\022\007\n\002S"
+      "E\020\327\001\022\007\n\002CH\020\330\001\022\007\n\002SY\020\331\001\022\007\n\002TW\020\332\001\022\007\n\002TJ\020\333\001"
+      "\022\007\n\002TZ\020\334\001\022\007\n\002TH\020\335\001\022\007\n\002TL\020\336\001\022\007\n\002TG\020\337\001\022\007\n\002"
+      "TK\020\340\001\022\007\n\002TO\020\341\001\022\007\n\002TT\020\342\001\022\007\n\002TN\020\343\001\022\007\n\002TR\020\344"
+      "\001\022\007\n\002TM\020\345\001\022\007\n\002TC\020\346\001\022\007\n\002TV\020\347\001\022\007\n\002UG\020\350\001\022\007\n"
+      "\002UA\020\351\001\022\007\n\002AE\020\352\001\022\007\n\002GB\020\353\001\022\007\n\002US\020\354\001\022\007\n\002UM\020"
+      "\355\001\022\007\n\002UY\020\356\001\022\007\n\002UZ\020\357\001\022\007\n\002VU\020\360\001\022\007\n\002VE\020\361\001\022\007"
+      "\n\002VN\020\362\001\022\007\n\002VG\020\363\001\022\007\n\002VI\020\364\001\022\007\n\002WF\020\365\001\022\007\n\002EH"
+      "\020\366\001\022\007\n\002YE\020\367\001\022\007\n\002ZM\020\370\001\022\007\n\002ZW\020\371\001b\006proto3"
   };
- ::google::protobuf::internal::AddDescriptors(&descriptor_table_claim_2eproto, deps, 0);
+  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
+      descriptor, 7118);
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
+    "claim.proto", &protobuf_RegisterTypes);
 }
 
-// Force running AddDescriptors() at dynamic initialization time.
-static bool dynamic_init_dummy_claim_2eproto = []() { AddDescriptors_claim_2eproto(); return true; }();
-namespace pb {
-const ::google::protobuf::EnumDescriptor* ClaimList_ListType_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_claim_2eproto);
-  return file_level_enum_descriptors_claim_2eproto[0];
+void AddDescriptors() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
 }
-bool ClaimList_ListType_IsValid(int value) {
-  switch (value) {
-    case 0:
-    case 2:
-      return true;
-    default:
-      return false;
+// Force AddDescriptors() to be called at dynamic initialization time.
+struct StaticDescriptorInitializer {
+  StaticDescriptorInitializer() {
+    AddDescriptors();
   }
-}
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const ClaimList_ListType ClaimList::COLLECTION;
-const ClaimList_ListType ClaimList::DERIVATION;
-const ClaimList_ListType ClaimList::ListType_MIN;
-const ClaimList_ListType ClaimList::ListType_MAX;
-const int ClaimList::ListType_ARRAYSIZE;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+} static_descriptor_initializer;
+}  // namespace protobuf_claim_2eproto
+namespace pb {
 const ::google::protobuf::EnumDescriptor* Fee_Currency_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_claim_2eproto);
-  return file_level_enum_descriptors_claim_2eproto[1];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return protobuf_claim_2eproto::file_level_enum_descriptors[0];
 }
 bool Fee_Currency_IsValid(int value) {
   switch (value) {
@@ -800,40 +675,9 @@ const Fee_Currency Fee::Currency_MIN;
 const Fee_Currency Fee::Currency_MAX;
 const int Fee::Currency_ARRAYSIZE;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-const ::google::protobuf::EnumDescriptor* Software_OS_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_claim_2eproto);
-  return file_level_enum_descriptors_claim_2eproto[2];
-}
-bool Software_OS_IsValid(int value) {
-  switch (value) {
-    case 0:
-    case 1:
-    case 2:
-    case 3:
-    case 4:
-    case 5:
-    case 6:
-      return true;
-    default:
-      return false;
-  }
-}
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const Software_OS Software::UNKNOWN_OS;
-const Software_OS Software::ANY;
-const Software_OS Software::LINUX;
-const Software_OS Software::WINDOWS;
-const Software_OS Software::MAC;
-const Software_OS Software::ANDROID;
-const Software_OS Software::IOS;
-const Software_OS Software::OS_MIN;
-const Software_OS Software::OS_MAX;
-const int Software::OS_ARRAYSIZE;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 const ::google::protobuf::EnumDescriptor* Language_Language_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_claim_2eproto);
-  return file_level_enum_descriptors_claim_2eproto[3];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return protobuf_claim_2eproto::file_level_enum_descriptors[1];
 }
 bool Language_Language_IsValid(int value) {
   switch (value) {
@@ -1219,8 +1063,8 @@ const Language_Language Language::Language_MAX;
 const int Language::Language_ARRAYSIZE;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 const ::google::protobuf::EnumDescriptor* Language_Script_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_claim_2eproto);
-  return file_level_enum_descriptors_claim_2eproto[4];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return protobuf_claim_2eproto::file_level_enum_descriptors[2];
 }
 bool Language_Script_IsValid(int value) {
   switch (value) {
@@ -1636,8 +1480,8 @@ const Language_Script Language::Script_MAX;
 const int Language::Script_ARRAYSIZE;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 const ::google::protobuf::EnumDescriptor* Location_Country_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_claim_2eproto);
-  return file_level_enum_descriptors_claim_2eproto[5];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return protobuf_claim_2eproto::file_level_enum_descriptors[3];
 }
 bool Location_Country_IsValid(int value) {
   switch (value) {
@@ -1891,286 +1735,6 @@ bool Location_Country_IsValid(int value) {
     case 247:
     case 248:
     case 249:
-    case 250:
-    case 251:
-    case 252:
-    case 253:
-    case 254:
-    case 255:
-    case 256:
-    case 257:
-    case 258:
-    case 259:
-    case 260:
-    case 261:
-    case 262:
-    case 263:
-    case 264:
-    case 265:
-    case 266:
-    case 267:
-    case 268:
-    case 269:
-    case 270:
-    case 271:
-    case 272:
-    case 273:
-    case 274:
-    case 275:
-    case 276:
-    case 277:
-    case 278:
-    case 279:
-    case 280:
-    case 281:
-    case 282:
-    case 283:
-    case 284:
-    case 285:
-    case 286:
-    case 287:
-    case 288:
-    case 289:
-    case 290:
-    case 291:
-    case 292:
-    case 293:
-    case 294:
-    case 295:
-    case 296:
-    case 297:
-    case 298:
-    case 299:
-    case 300:
-    case 301:
-    case 302:
-    case 303:
-    case 304:
-    case 305:
-    case 306:
-    case 307:
-    case 308:
-    case 309:
-    case 310:
-    case 311:
-    case 312:
-    case 313:
-    case 314:
-    case 315:
-    case 316:
-    case 317:
-    case 318:
-    case 319:
-    case 320:
-    case 321:
-    case 322:
-    case 323:
-    case 324:
-    case 325:
-    case 326:
-    case 327:
-    case 328:
-    case 329:
-    case 330:
-    case 331:
-    case 332:
-    case 333:
-    case 334:
-    case 335:
-    case 336:
-    case 337:
-    case 338:
-    case 339:
-    case 340:
-    case 341:
-    case 342:
-    case 343:
-    case 344:
-    case 345:
-    case 346:
-    case 347:
-    case 348:
-    case 349:
-    case 350:
-    case 351:
-    case 352:
-    case 353:
-    case 354:
-    case 355:
-    case 356:
-    case 357:
-    case 358:
-    case 359:
-    case 360:
-    case 361:
-    case 362:
-    case 363:
-    case 364:
-    case 365:
-    case 366:
-    case 367:
-    case 368:
-    case 369:
-    case 370:
-    case 371:
-    case 372:
-    case 373:
-    case 374:
-    case 375:
-    case 376:
-    case 377:
-    case 378:
-    case 379:
-    case 380:
-    case 381:
-    case 382:
-    case 383:
-    case 384:
-    case 385:
-    case 386:
-    case 387:
-    case 388:
-    case 389:
-    case 390:
-    case 391:
-    case 392:
-    case 393:
-    case 394:
-    case 395:
-    case 396:
-    case 397:
-    case 398:
-    case 399:
-    case 400:
-    case 401:
-    case 402:
-    case 403:
-    case 404:
-    case 405:
-    case 406:
-    case 407:
-    case 408:
-    case 409:
-    case 410:
-    case 411:
-    case 412:
-    case 413:
-    case 414:
-    case 415:
-    case 416:
-    case 417:
-    case 418:
-    case 419:
-    case 420:
-    case 421:
-    case 422:
-    case 423:
-    case 424:
-    case 425:
-    case 426:
-    case 427:
-    case 428:
-    case 429:
-    case 430:
-    case 431:
-    case 432:
-    case 433:
-    case 434:
-    case 435:
-    case 436:
-    case 437:
-    case 438:
-    case 439:
-    case 440:
-    case 441:
-    case 442:
-    case 443:
-    case 444:
-    case 445:
-    case 446:
-    case 447:
-    case 448:
-    case 449:
-    case 450:
-    case 451:
-    case 452:
-    case 453:
-    case 454:
-    case 455:
-    case 456:
-    case 457:
-    case 458:
-    case 459:
-    case 460:
-    case 461:
-    case 462:
-    case 463:
-    case 464:
-    case 465:
-    case 466:
-    case 467:
-    case 468:
-    case 469:
-    case 470:
-    case 471:
-    case 472:
-    case 473:
-    case 474:
-    case 475:
-    case 476:
-    case 477:
-    case 478:
-    case 479:
-    case 480:
-    case 481:
-    case 482:
-    case 483:
-    case 484:
-    case 485:
-    case 486:
-    case 487:
-    case 488:
-    case 489:
-    case 490:
-    case 491:
-    case 492:
-    case 493:
-    case 494:
-    case 495:
-    case 496:
-    case 497:
-    case 498:
-    case 499:
-    case 500:
-    case 501:
-    case 502:
-    case 503:
-    case 504:
-    case 505:
-    case 506:
-    case 507:
-    case 508:
-    case 509:
-    case 510:
-    case 511:
-    case 512:
-    case 513:
-    case 514:
-    case 515:
-    case 516:
-    case 517:
-    case 518:
-    case 519:
-    case 520:
-    case 521:
-    case 522:
-    case 523:
-    case 524:
-    case 525:
-    case 526:
-    case 527:
-    case 528:
-    case 529:
       return true;
     default:
       return false;
@@ -2428,286 +1992,6 @@ const Location_Country Location::EH;
 const Location_Country Location::YE;
 const Location_Country Location::ZM;
 const Location_Country Location::ZW;
-const Location_Country Location::R001;
-const Location_Country Location::R002;
-const Location_Country Location::R015;
-const Location_Country Location::R012;
-const Location_Country Location::R818;
-const Location_Country Location::R434;
-const Location_Country Location::R504;
-const Location_Country Location::R729;
-const Location_Country Location::R788;
-const Location_Country Location::R732;
-const Location_Country Location::R202;
-const Location_Country Location::R014;
-const Location_Country Location::R086;
-const Location_Country Location::R108;
-const Location_Country Location::R174;
-const Location_Country Location::R262;
-const Location_Country Location::R232;
-const Location_Country Location::R231;
-const Location_Country Location::R260;
-const Location_Country Location::R404;
-const Location_Country Location::R450;
-const Location_Country Location::R454;
-const Location_Country Location::R480;
-const Location_Country Location::R175;
-const Location_Country Location::R508;
-const Location_Country Location::R638;
-const Location_Country Location::R646;
-const Location_Country Location::R690;
-const Location_Country Location::R706;
-const Location_Country Location::R728;
-const Location_Country Location::R800;
-const Location_Country Location::R834;
-const Location_Country Location::R894;
-const Location_Country Location::R716;
-const Location_Country Location::R017;
-const Location_Country Location::R024;
-const Location_Country Location::R120;
-const Location_Country Location::R140;
-const Location_Country Location::R148;
-const Location_Country Location::R178;
-const Location_Country Location::R180;
-const Location_Country Location::R226;
-const Location_Country Location::R266;
-const Location_Country Location::R678;
-const Location_Country Location::R018;
-const Location_Country Location::R072;
-const Location_Country Location::R748;
-const Location_Country Location::R426;
-const Location_Country Location::R516;
-const Location_Country Location::R710;
-const Location_Country Location::R011;
-const Location_Country Location::R204;
-const Location_Country Location::R854;
-const Location_Country Location::R132;
-const Location_Country Location::R384;
-const Location_Country Location::R270;
-const Location_Country Location::R288;
-const Location_Country Location::R324;
-const Location_Country Location::R624;
-const Location_Country Location::R430;
-const Location_Country Location::R466;
-const Location_Country Location::R478;
-const Location_Country Location::R562;
-const Location_Country Location::R566;
-const Location_Country Location::R654;
-const Location_Country Location::R686;
-const Location_Country Location::R694;
-const Location_Country Location::R768;
-const Location_Country Location::R019;
-const Location_Country Location::R419;
-const Location_Country Location::R029;
-const Location_Country Location::R660;
-const Location_Country Location::R028;
-const Location_Country Location::R533;
-const Location_Country Location::R044;
-const Location_Country Location::R052;
-const Location_Country Location::R535;
-const Location_Country Location::R092;
-const Location_Country Location::R136;
-const Location_Country Location::R192;
-const Location_Country Location::R531;
-const Location_Country Location::R212;
-const Location_Country Location::R214;
-const Location_Country Location::R308;
-const Location_Country Location::R312;
-const Location_Country Location::R332;
-const Location_Country Location::R388;
-const Location_Country Location::R474;
-const Location_Country Location::R500;
-const Location_Country Location::R630;
-const Location_Country Location::R652;
-const Location_Country Location::R659;
-const Location_Country Location::R662;
-const Location_Country Location::R663;
-const Location_Country Location::R670;
-const Location_Country Location::R534;
-const Location_Country Location::R780;
-const Location_Country Location::R796;
-const Location_Country Location::R850;
-const Location_Country Location::R013;
-const Location_Country Location::R084;
-const Location_Country Location::R188;
-const Location_Country Location::R222;
-const Location_Country Location::R320;
-const Location_Country Location::R340;
-const Location_Country Location::R484;
-const Location_Country Location::R558;
-const Location_Country Location::R591;
-const Location_Country Location::R005;
-const Location_Country Location::R032;
-const Location_Country Location::R068;
-const Location_Country Location::R074;
-const Location_Country Location::R076;
-const Location_Country Location::R152;
-const Location_Country Location::R170;
-const Location_Country Location::R218;
-const Location_Country Location::R238;
-const Location_Country Location::R254;
-const Location_Country Location::R328;
-const Location_Country Location::R600;
-const Location_Country Location::R604;
-const Location_Country Location::R239;
-const Location_Country Location::R740;
-const Location_Country Location::R858;
-const Location_Country Location::R862;
-const Location_Country Location::R021;
-const Location_Country Location::R060;
-const Location_Country Location::R124;
-const Location_Country Location::R304;
-const Location_Country Location::R666;
-const Location_Country Location::R840;
-const Location_Country Location::R010;
-const Location_Country Location::R142;
-const Location_Country Location::R143;
-const Location_Country Location::R398;
-const Location_Country Location::R417;
-const Location_Country Location::R762;
-const Location_Country Location::R795;
-const Location_Country Location::R860;
-const Location_Country Location::R030;
-const Location_Country Location::R156;
-const Location_Country Location::R344;
-const Location_Country Location::R446;
-const Location_Country Location::R408;
-const Location_Country Location::R392;
-const Location_Country Location::R496;
-const Location_Country Location::R410;
-const Location_Country Location::R035;
-const Location_Country Location::R096;
-const Location_Country Location::R116;
-const Location_Country Location::R360;
-const Location_Country Location::R418;
-const Location_Country Location::R458;
-const Location_Country Location::R104;
-const Location_Country Location::R608;
-const Location_Country Location::R702;
-const Location_Country Location::R764;
-const Location_Country Location::R626;
-const Location_Country Location::R704;
-const Location_Country Location::R034;
-const Location_Country Location::R004;
-const Location_Country Location::R050;
-const Location_Country Location::R064;
-const Location_Country Location::R356;
-const Location_Country Location::R364;
-const Location_Country Location::R462;
-const Location_Country Location::R524;
-const Location_Country Location::R586;
-const Location_Country Location::R144;
-const Location_Country Location::R145;
-const Location_Country Location::R051;
-const Location_Country Location::R031;
-const Location_Country Location::R048;
-const Location_Country Location::R196;
-const Location_Country Location::R268;
-const Location_Country Location::R368;
-const Location_Country Location::R376;
-const Location_Country Location::R400;
-const Location_Country Location::R414;
-const Location_Country Location::R422;
-const Location_Country Location::R512;
-const Location_Country Location::R634;
-const Location_Country Location::R682;
-const Location_Country Location::R275;
-const Location_Country Location::R760;
-const Location_Country Location::R792;
-const Location_Country Location::R784;
-const Location_Country Location::R887;
-const Location_Country Location::R150;
-const Location_Country Location::R151;
-const Location_Country Location::R112;
-const Location_Country Location::R100;
-const Location_Country Location::R203;
-const Location_Country Location::R348;
-const Location_Country Location::R616;
-const Location_Country Location::R498;
-const Location_Country Location::R642;
-const Location_Country Location::R643;
-const Location_Country Location::R703;
-const Location_Country Location::R804;
-const Location_Country Location::R154;
-const Location_Country Location::R248;
-const Location_Country Location::R830;
-const Location_Country Location::R831;
-const Location_Country Location::R832;
-const Location_Country Location::R680;
-const Location_Country Location::R208;
-const Location_Country Location::R233;
-const Location_Country Location::R234;
-const Location_Country Location::R246;
-const Location_Country Location::R352;
-const Location_Country Location::R372;
-const Location_Country Location::R833;
-const Location_Country Location::R428;
-const Location_Country Location::R440;
-const Location_Country Location::R578;
-const Location_Country Location::R744;
-const Location_Country Location::R752;
-const Location_Country Location::R826;
-const Location_Country Location::R039;
-const Location_Country Location::R008;
-const Location_Country Location::R020;
-const Location_Country Location::R070;
-const Location_Country Location::R191;
-const Location_Country Location::R292;
-const Location_Country Location::R300;
-const Location_Country Location::R336;
-const Location_Country Location::R380;
-const Location_Country Location::R470;
-const Location_Country Location::R499;
-const Location_Country Location::R807;
-const Location_Country Location::R620;
-const Location_Country Location::R674;
-const Location_Country Location::R688;
-const Location_Country Location::R705;
-const Location_Country Location::R724;
-const Location_Country Location::R155;
-const Location_Country Location::R040;
-const Location_Country Location::R056;
-const Location_Country Location::R250;
-const Location_Country Location::R276;
-const Location_Country Location::R438;
-const Location_Country Location::R442;
-const Location_Country Location::R492;
-const Location_Country Location::R528;
-const Location_Country Location::R756;
-const Location_Country Location::R009;
-const Location_Country Location::R053;
-const Location_Country Location::R036;
-const Location_Country Location::R162;
-const Location_Country Location::R166;
-const Location_Country Location::R334;
-const Location_Country Location::R554;
-const Location_Country Location::R574;
-const Location_Country Location::R054;
-const Location_Country Location::R242;
-const Location_Country Location::R540;
-const Location_Country Location::R598;
-const Location_Country Location::R090;
-const Location_Country Location::R548;
-const Location_Country Location::R057;
-const Location_Country Location::R316;
-const Location_Country Location::R296;
-const Location_Country Location::R584;
-const Location_Country Location::R583;
-const Location_Country Location::R520;
-const Location_Country Location::R580;
-const Location_Country Location::R585;
-const Location_Country Location::R581;
-const Location_Country Location::R061;
-const Location_Country Location::R016;
-const Location_Country Location::R184;
-const Location_Country Location::R258;
-const Location_Country Location::R570;
-const Location_Country Location::R612;
-const Location_Country Location::R882;
-const Location_Country Location::R772;
-const Location_Country Location::R776;
-const Location_Country Location::R798;
-const Location_Country Location::R876;
 const Location_Country Location::Country_MIN;
 const Location_Country Location::Country_MAX;
 const int Location::Country_ARRAYSIZE;
@@ -2720,47 +2004,12 @@ void Claim::InitAsDefaultInstance() {
       ::pb::Stream::internal_default_instance());
   ::pb::_Claim_default_instance_.channel_ = const_cast< ::pb::Channel*>(
       ::pb::Channel::internal_default_instance());
-  ::pb::_Claim_default_instance_.collection_ = const_cast< ::pb::ClaimList*>(
-      ::pb::ClaimList::internal_default_instance());
-  ::pb::_Claim_default_instance_.repost_ = const_cast< ::pb::ClaimReference*>(
-      ::pb::ClaimReference::internal_default_instance());
-  ::pb::_Claim_default_instance_._instance.get_mutable()->thumbnail_ = const_cast< ::pb::Source*>(
-      ::pb::Source::internal_default_instance());
-}
-class Claim::HasBitSetters {
- public:
-  static const ::pb::Stream& stream(const Claim* msg);
-  static const ::pb::Channel& channel(const Claim* msg);
-  static const ::pb::ClaimList& collection(const Claim* msg);
-  static const ::pb::ClaimReference& repost(const Claim* msg);
-  static const ::pb::Source& thumbnail(const Claim* msg);
-};
-
-const ::pb::Stream&
-Claim::HasBitSetters::stream(const Claim* msg) {
-  return *msg->type_.stream_;
-}
-const ::pb::Channel&
-Claim::HasBitSetters::channel(const Claim* msg) {
-  return *msg->type_.channel_;
-}
-const ::pb::ClaimList&
-Claim::HasBitSetters::collection(const Claim* msg) {
-  return *msg->type_.collection_;
-}
-const ::pb::ClaimReference&
-Claim::HasBitSetters::repost(const Claim* msg) {
-  return *msg->type_.repost_;
-}
-const ::pb::Source&
-Claim::HasBitSetters::thumbnail(const Claim* msg) {
-  return *msg->thumbnail_;
 }
 void Claim::set_allocated_stream(::pb::Stream* stream) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   clear_type();
   if (stream) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
+    ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
       stream = ::google::protobuf::internal::GetOwnedMessage(
           message_arena, stream, submessage_arena);
@@ -2774,7 +2023,7 @@ void Claim::set_allocated_channel(::pb::Channel* channel) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   clear_type();
   if (channel) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
+    ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
       channel = ::google::protobuf::internal::GetOwnedMessage(
           message_arena, channel, submessage_arena);
@@ -2784,72 +2033,24 @@ void Claim::set_allocated_channel(::pb::Channel* channel) {
   }
   // @@protoc_insertion_point(field_set_allocated:pb.Claim.channel)
 }
-void Claim::set_allocated_collection(::pb::ClaimList* collection) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  clear_type();
-  if (collection) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      collection = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, collection, submessage_arena);
-    }
-    set_has_collection();
-    type_.collection_ = collection;
-  }
-  // @@protoc_insertion_point(field_set_allocated:pb.Claim.collection)
-}
-void Claim::set_allocated_repost(::pb::ClaimReference* repost) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  clear_type();
-  if (repost) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      repost = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, repost, submessage_arena);
-    }
-    set_has_repost();
-    type_.repost_ = repost;
-  }
-  // @@protoc_insertion_point(field_set_allocated:pb.Claim.repost)
-}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Claim::kStreamFieldNumber;
 const int Claim::kChannelFieldNumber;
-const int Claim::kCollectionFieldNumber;
-const int Claim::kRepostFieldNumber;
-const int Claim::kTitleFieldNumber;
-const int Claim::kDescriptionFieldNumber;
-const int Claim::kThumbnailFieldNumber;
-const int Claim::kTagsFieldNumber;
-const int Claim::kLanguagesFieldNumber;
-const int Claim::kLocationsFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Claim::Claim()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsClaim();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Claim)
 }
 Claim::Claim(const Claim& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr),
-      tags_(from.tags_),
-      languages_(from.languages_),
-      locations_(from.locations_) {
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  title_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.title().size() > 0) {
-    title_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.title_);
-  }
-  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.description().size() > 0) {
-    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
-  }
-  if (from.has_thumbnail()) {
-    thumbnail_ = new ::pb::Source(*from.thumbnail_);
-  } else {
-    thumbnail_ = nullptr;
-  }
   clear_has_type();
   switch (from.type_case()) {
     case kStream: {
@@ -2860,14 +2061,6 @@ Claim::Claim(const Claim& from)
       mutable_channel()->::pb::Channel::MergeFrom(from.channel());
       break;
     }
-    case kCollection: {
-      mutable_collection()->::pb::ClaimList::MergeFrom(from.collection());
-      break;
-    }
-    case kRepost: {
-      mutable_repost()->::pb::ClaimReference::MergeFrom(from.repost());
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
@@ -2876,12 +2069,8 @@ Claim::Claim(const Claim& from)
 }
 
 void Claim::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Claim_claim_2eproto.base);
-  title_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  thumbnail_ = nullptr;
   clear_has_type();
+  _cached_size_ = 0;
 }
 
 Claim::~Claim() {
@@ -2890,22 +2079,33 @@ Claim::~Claim() {
 }
 
 void Claim::SharedDtor() {
-  title_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (this != internal_default_instance()) delete thumbnail_;
   if (has_type()) {
     clear_type();
   }
 }
 
 void Claim::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Claim::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Claim& Claim::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Claim_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsClaim();
   return *internal_default_instance();
 }
 
+Claim* Claim::New(::google::protobuf::Arena* arena) const {
+  Claim* n = new Claim;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Claim::clear_type() {
 // @@protoc_insertion_point(one_of_clear_start:pb.Claim)
@@ -2918,14 +2118,6 @@ void Claim::clear_type() {
       delete type_.channel_;
       break;
     }
-    case kCollection: {
-      delete type_.collection_;
-      break;
-    }
-    case kRepost: {
-      delete type_.repost_;
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
@@ -2940,217 +2132,24 @@ void Claim::Clear() {
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  tags_.Clear();
-  languages_.Clear();
-  locations_.Clear();
-  title_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (GetArenaNoVirtual() == nullptr && thumbnail_ != nullptr) {
-    delete thumbnail_;
-  }
-  thumbnail_ = nullptr;
   clear_type();
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Claim::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Claim*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.Stream stream = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Stream::_InternalParse;
-        object = msg->mutable_stream();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.Channel channel = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Channel::_InternalParse;
-        object = msg->mutable_channel();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.ClaimList collection = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::ClaimList::_InternalParse;
-        object = msg->mutable_collection();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.ClaimReference repost = 4;
-      case 4: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::ClaimReference::_InternalParse;
-        object = msg->mutable_repost();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // string title = 8;
-      case 8: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Claim.title");
-        object = msg->mutable_title();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string description = 9;
-      case 9: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 74) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Claim.description");
-        object = msg->mutable_description();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // .pb.Source thumbnail = 10;
-      case 10: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Source::_InternalParse;
-        object = msg->mutable_thumbnail();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // repeated string tags = 11;
-      case 11: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 90) goto handle_unusual;
-        do {
-          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-          ctx->extra_parse_data().SetFieldName("pb.Claim.tags");
-          object = msg->add_tags();
-          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-            goto string_till_end;
-          }
-          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-          ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-          ptr += size;
-          if (ptr >= end) break;
-        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 90 && (ptr += 1));
-        break;
-      }
-      // repeated .pb.Language languages = 12;
-      case 12: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 98) goto handle_unusual;
-        do {
-          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-          parser_till_end = ::pb::Language::_InternalParse;
-          object = msg->add_languages();
-          if (size > end - ptr) goto len_delim_till_end;
-          ptr += size;
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-              {parser_till_end, object}, ptr - size, ptr));
-          if (ptr >= end) break;
-        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 98 && (ptr += 1));
-        break;
-      }
-      // repeated .pb.Location locations = 13;
-      case 13: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 106) goto handle_unusual;
-        do {
-          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-          parser_till_end = ::pb::Location::_InternalParse;
-          object = msg->add_locations();
-          if (size > end - ptr) goto len_delim_till_end;
-          ptr += size;
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-              {parser_till_end, object}, ptr - size, ptr));
-          if (ptr >= end) break;
-        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 106 && (ptr += 1));
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Claim::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Claim)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // .pb.Stream stream = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_stream()));
         } else {
@@ -3161,7 +2160,8 @@ bool Claim::MergePartialFromCodedStream(
 
       // .pb.Channel channel = 2;
       case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_channel()));
         } else {
@@ -3170,107 +2170,6 @@ bool Claim::MergePartialFromCodedStream(
         break;
       }
 
-      // .pb.ClaimList collection = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_collection()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // .pb.ClaimReference repost = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_repost()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string title = 8;
-      case 8: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_title()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->title().data(), static_cast<int>(this->title().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Claim.title"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string description = 9;
-      case 9: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (74 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_description()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->description().data(), static_cast<int>(this->description().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Claim.description"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // .pb.Source thumbnail = 10;
-      case 10: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_thumbnail()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated string tags = 11;
-      case 11: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (90 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->add_tags()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->tags(this->tags_size() - 1).data(),
-            static_cast<int>(this->tags(this->tags_size() - 1).length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Claim.tags"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated .pb.Language languages = 12;
-      case 12: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (98 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_languages()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated .pb.Location locations = 13;
-      case 13: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (106 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_locations()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -3290,7 +2189,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Claim::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -3301,90 +2199,25 @@ void Claim::SerializeWithCachedSizes(
   // .pb.Stream stream = 1;
   if (has_stream()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, HasBitSetters::stream(this), output);
+      1, *type_.stream_, output);
   }
 
   // .pb.Channel channel = 2;
   if (has_channel()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2, HasBitSetters::channel(this), output);
+      2, *type_.channel_, output);
   }
 
-  // .pb.ClaimList collection = 3;
-  if (has_collection()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      3, HasBitSetters::collection(this), output);
-  }
-
-  // .pb.ClaimReference repost = 4;
-  if (has_repost()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      4, HasBitSetters::repost(this), output);
-  }
-
-  // string title = 8;
-  if (this->title().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->title().data(), static_cast<int>(this->title().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Claim.title");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      8, this->title(), output);
-  }
-
-  // string description = 9;
-  if (this->description().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->description().data(), static_cast<int>(this->description().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Claim.description");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      9, this->description(), output);
-  }
-
-  // .pb.Source thumbnail = 10;
-  if (this->has_thumbnail()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      10, HasBitSetters::thumbnail(this), output);
-  }
-
-  // repeated string tags = 11;
-  for (int i = 0, n = this->tags_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Claim.tags");
-    ::google::protobuf::internal::WireFormatLite::WriteString(
-      11, this->tags(i), output);
-  }
-
-  // repeated .pb.Language languages = 12;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->languages_size()); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      12,
-      this->languages(static_cast<int>(i)),
-      output);
-  }
-
-  // repeated .pb.Location locations = 13;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->locations_size()); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      13,
-      this->locations(static_cast<int>(i)),
-      output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Claim)
 }
 
 ::google::protobuf::uint8* Claim::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Claim)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -3393,88 +2226,19 @@ void Claim::SerializeWithCachedSizes(
   if (has_stream()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, HasBitSetters::stream(this), target);
+        1, *type_.stream_, deterministic, target);
   }
 
   // .pb.Channel channel = 2;
   if (has_channel()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        2, HasBitSetters::channel(this), target);
+        2, *type_.channel_, deterministic, target);
   }
 
-  // .pb.ClaimList collection = 3;
-  if (has_collection()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        3, HasBitSetters::collection(this), target);
-  }
-
-  // .pb.ClaimReference repost = 4;
-  if (has_repost()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        4, HasBitSetters::repost(this), target);
-  }
-
-  // string title = 8;
-  if (this->title().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->title().data(), static_cast<int>(this->title().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Claim.title");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        8, this->title(), target);
-  }
-
-  // string description = 9;
-  if (this->description().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->description().data(), static_cast<int>(this->description().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Claim.description");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        9, this->description(), target);
-  }
-
-  // .pb.Source thumbnail = 10;
-  if (this->has_thumbnail()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        10, HasBitSetters::thumbnail(this), target);
-  }
-
-  // repeated string tags = 11;
-  for (int i = 0, n = this->tags_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Claim.tags");
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteStringToArray(11, this->tags(i), target);
-  }
-
-  // repeated .pb.Language languages = 12;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->languages_size()); i < n; i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        12, this->languages(static_cast<int>(i)), target);
-  }
-
-  // repeated .pb.Location locations = 13;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->locations_size()); i < n; i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        13, this->locations(static_cast<int>(i)), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Claim)
   return target;
@@ -3484,66 +2248,11 @@ size_t Claim::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Claim)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // repeated string tags = 11;
-  total_size += 1 *
-      ::google::protobuf::internal::FromIntSize(this->tags_size());
-  for (int i = 0, n = this->tags_size(); i < n; i++) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-      this->tags(i));
-  }
-
-  // repeated .pb.Language languages = 12;
-  {
-    unsigned int count = static_cast<unsigned int>(this->languages_size());
-    total_size += 1UL * count;
-    for (unsigned int i = 0; i < count; i++) {
-      total_size +=
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          this->languages(static_cast<int>(i)));
-    }
-  }
-
-  // repeated .pb.Location locations = 13;
-  {
-    unsigned int count = static_cast<unsigned int>(this->locations_size());
-    total_size += 1UL * count;
-    for (unsigned int i = 0; i < count; i++) {
-      total_size +=
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          this->locations(static_cast<int>(i)));
-    }
-  }
-
-  // string title = 8;
-  if (this->title().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->title());
-  }
-
-  // string description = 9;
-  if (this->description().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->description());
-  }
-
-  // .pb.Source thumbnail = 10;
-  if (this->has_thumbnail()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *thumbnail_);
-  }
-
   switch (type_case()) {
     // .pb.Stream stream = 1;
     case kStream: {
@@ -3559,26 +2268,14 @@ size_t Claim::ByteSizeLong() const {
           *type_.channel_);
       break;
     }
-    // .pb.ClaimList collection = 3;
-    case kCollection: {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          *type_.collection_);
-      break;
-    }
-    // .pb.ClaimReference repost = 4;
-    case kRepost: {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          *type_.repost_);
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -3586,9 +2283,9 @@ void Claim::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Claim)
   GOOGLE_DCHECK_NE(&from, this);
   const Claim* source =
-      ::google::protobuf::DynamicCastToGenerated<Claim>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Claim>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Claim)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -3604,20 +2301,6 @@ void Claim::MergeFrom(const Claim& from) {
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  tags_.MergeFrom(from.tags_);
-  languages_.MergeFrom(from.languages_);
-  locations_.MergeFrom(from.locations_);
-  if (from.title().size() > 0) {
-
-    title_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.title_);
-  }
-  if (from.description().size() > 0) {
-
-    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
-  }
-  if (from.has_thumbnail()) {
-    mutable_thumbnail()->::pb::Source::MergeFrom(from.thumbnail());
-  }
   switch (from.type_case()) {
     case kStream: {
       mutable_stream()->::pb::Stream::MergeFrom(from.stream());
@@ -3627,14 +2310,6 @@ void Claim::MergeFrom(const Claim& from) {
       mutable_channel()->::pb::Channel::MergeFrom(from.channel());
       break;
     }
-    case kCollection: {
-      mutable_collection()->::pb::ClaimList::MergeFrom(from.collection());
-      break;
-    }
-    case kRepost: {
-      mutable_repost()->::pb::ClaimReference::MergeFrom(from.repost());
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
@@ -3665,30 +2340,743 @@ void Claim::Swap(Claim* other) {
 }
 void Claim::InternalSwap(Claim* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  tags_.InternalSwap(CastToBase(&other->tags_));
-  CastToBase(&languages_)->InternalSwap(CastToBase(&other->languages_));
-  CastToBase(&locations_)->InternalSwap(CastToBase(&other->locations_));
-  title_.Swap(&other->title_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  swap(thumbnail_, other->thumbnail_);
   swap(type_, other->type_);
   swap(_oneof_case_[0], other->_oneof_case_[0]);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Claim::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void Channel::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Channel::kPublicKeyFieldNumber;
+const int Channel::kTitleFieldNumber;
+const int Channel::kDescriptionFieldNumber;
+const int Channel::kThumbnailUrlFieldNumber;
+const int Channel::kTagsFieldNumber;
+const int Channel::kLanguagesFieldNumber;
+const int Channel::kLocationsFieldNumber;
+const int Channel::kContactEmailFieldNumber;
+const int Channel::kHomepageUrlFieldNumber;
+const int Channel::kCoverUrlFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Channel::Channel()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsChannel();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:pb.Channel)
+}
+Channel::Channel(const Channel& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      tags_(from.tags_),
+      languages_(from.languages_),
+      locations_(from.locations_),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  public_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.public_key().size() > 0) {
+    public_key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.public_key_);
+  }
+  title_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.title().size() > 0) {
+    title_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.title_);
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
+  }
+  thumbnail_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.thumbnail_url().size() > 0) {
+    thumbnail_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.thumbnail_url_);
+  }
+  contact_email_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.contact_email().size() > 0) {
+    contact_email_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.contact_email_);
+  }
+  homepage_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.homepage_url().size() > 0) {
+    homepage_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.homepage_url_);
+  }
+  cover_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.cover_url().size() > 0) {
+    cover_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.cover_url_);
+  }
+  // @@protoc_insertion_point(copy_constructor:pb.Channel)
+}
+
+void Channel::SharedCtor() {
+  public_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  title_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  thumbnail_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  contact_email_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  homepage_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  cover_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  _cached_size_ = 0;
+}
+
+Channel::~Channel() {
+  // @@protoc_insertion_point(destructor:pb.Channel)
+  SharedDtor();
+}
+
+void Channel::SharedDtor() {
+  public_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  title_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  thumbnail_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  contact_email_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  homepage_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  cover_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void Channel::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* Channel::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const Channel& Channel::default_instance() {
+  ::protobuf_claim_2eproto::InitDefaultsChannel();
+  return *internal_default_instance();
+}
+
+Channel* Channel::New(::google::protobuf::Arena* arena) const {
+  Channel* n = new Channel;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void Channel::Clear() {
+// @@protoc_insertion_point(message_clear_start:pb.Channel)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  tags_.Clear();
+  languages_.Clear();
+  locations_.Clear();
+  public_key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  title_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  thumbnail_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  contact_email_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  homepage_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  cover_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  _internal_metadata_.Clear();
+}
+
+bool Channel::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:pb.Channel)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bytes public_key = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_public_key()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string title = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_title()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->title().data(), static_cast<int>(this->title().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Channel.title"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Channel.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string thumbnail_url = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_thumbnail_url()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->thumbnail_url().data(), static_cast<int>(this->thumbnail_url().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Channel.thumbnail_url"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string tags = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_tags()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->tags(this->tags_size() - 1).data(),
+            static_cast<int>(this->tags(this->tags_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Channel.tags"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .pb.Language languages = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_languages()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .pb.Location locations = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_locations()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string contact_email = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_contact_email()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->contact_email().data(), static_cast<int>(this->contact_email().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Channel.contact_email"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string homepage_url = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_homepage_url()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->homepage_url().data(), static_cast<int>(this->homepage_url().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Channel.homepage_url"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string cover_url = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_cover_url()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->cover_url().data(), static_cast<int>(this->cover_url().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Channel.cover_url"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:pb.Channel)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:pb.Channel)
+  return false;
+#undef DO_
+}
+
+void Channel::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:pb.Channel)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bytes public_key = 1;
+  if (this->public_key().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      1, this->public_key(), output);
+  }
+
+  // string title = 2;
+  if (this->title().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->title().data(), static_cast<int>(this->title().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.title");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->title(), output);
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->description(), output);
+  }
+
+  // string thumbnail_url = 4;
+  if (this->thumbnail_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->thumbnail_url().data(), static_cast<int>(this->thumbnail_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.thumbnail_url");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->thumbnail_url(), output);
+  }
+
+  // repeated string tags = 5;
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.tags");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      5, this->tags(i), output);
+  }
+
+  // repeated .pb.Language languages = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->languages_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, this->languages(static_cast<int>(i)), output);
+  }
+
+  // repeated .pb.Location locations = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->locations_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7, this->locations(static_cast<int>(i)), output);
+  }
+
+  // string contact_email = 8;
+  if (this->contact_email().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->contact_email().data(), static_cast<int>(this->contact_email().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.contact_email");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      8, this->contact_email(), output);
+  }
+
+  // string homepage_url = 9;
+  if (this->homepage_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->homepage_url().data(), static_cast<int>(this->homepage_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.homepage_url");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      9, this->homepage_url(), output);
+  }
+
+  // string cover_url = 10;
+  if (this->cover_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->cover_url().data(), static_cast<int>(this->cover_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.cover_url");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      10, this->cover_url(), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:pb.Channel)
+}
+
+::google::protobuf::uint8* Channel::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:pb.Channel)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bytes public_key = 1;
+  if (this->public_key().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        1, this->public_key(), target);
+  }
+
+  // string title = 2;
+  if (this->title().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->title().data(), static_cast<int>(this->title().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.title");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->title(), target);
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->description(), target);
+  }
+
+  // string thumbnail_url = 4;
+  if (this->thumbnail_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->thumbnail_url().data(), static_cast<int>(this->thumbnail_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.thumbnail_url");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->thumbnail_url(), target);
+  }
+
+  // repeated string tags = 5;
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.tags");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(5, this->tags(i), target);
+  }
+
+  // repeated .pb.Language languages = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->languages_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->languages(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .pb.Location locations = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->locations_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, this->locations(static_cast<int>(i)), deterministic, target);
+  }
+
+  // string contact_email = 8;
+  if (this->contact_email().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->contact_email().data(), static_cast<int>(this->contact_email().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.contact_email");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        8, this->contact_email(), target);
+  }
+
+  // string homepage_url = 9;
+  if (this->homepage_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->homepage_url().data(), static_cast<int>(this->homepage_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.homepage_url");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        9, this->homepage_url(), target);
+  }
+
+  // string cover_url = 10;
+  if (this->cover_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->cover_url().data(), static_cast<int>(this->cover_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Channel.cover_url");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        10, this->cover_url(), target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:pb.Channel)
+  return target;
+}
+
+size_t Channel::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:pb.Channel)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // repeated string tags = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->tags_size());
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->tags(i));
+  }
+
+  // repeated .pb.Language languages = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->languages_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->languages(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .pb.Location locations = 7;
+  {
+    unsigned int count = static_cast<unsigned int>(this->locations_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->locations(static_cast<int>(i)));
+    }
+  }
+
+  // bytes public_key = 1;
+  if (this->public_key().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->public_key());
+  }
+
+  // string title = 2;
+  if (this->title().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->title());
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // string thumbnail_url = 4;
+  if (this->thumbnail_url().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->thumbnail_url());
+  }
+
+  // string contact_email = 8;
+  if (this->contact_email().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->contact_email());
+  }
+
+  // string homepage_url = 9;
+  if (this->homepage_url().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->homepage_url());
+  }
+
+  // string cover_url = 10;
+  if (this->cover_url().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->cover_url());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void Channel::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:pb.Channel)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Channel* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const Channel>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Channel)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Channel)
+    MergeFrom(*source);
+  }
+}
+
+void Channel::MergeFrom(const Channel& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:pb.Channel)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  tags_.MergeFrom(from.tags_);
+  languages_.MergeFrom(from.languages_);
+  locations_.MergeFrom(from.locations_);
+  if (from.public_key().size() > 0) {
+
+    public_key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.public_key_);
+  }
+  if (from.title().size() > 0) {
+
+    title_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.title_);
+  }
+  if (from.description().size() > 0) {
+
+    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
+  }
+  if (from.thumbnail_url().size() > 0) {
+
+    thumbnail_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.thumbnail_url_);
+  }
+  if (from.contact_email().size() > 0) {
+
+    contact_email_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.contact_email_);
+  }
+  if (from.homepage_url().size() > 0) {
+
+    homepage_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.homepage_url_);
+  }
+  if (from.cover_url().size() > 0) {
+
+    cover_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.cover_url_);
+  }
+}
+
+void Channel::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:pb.Channel)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Channel::CopyFrom(const Channel& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:pb.Channel)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Channel::IsInitialized() const {
+  return true;
+}
+
+void Channel::Swap(Channel* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void Channel::InternalSwap(Channel* other) {
+  using std::swap;
+  tags_.InternalSwap(&other->tags_);
+  languages_.InternalSwap(&other->languages_);
+  locations_.InternalSwap(&other->locations_);
+  public_key_.Swap(&other->public_key_);
+  title_.Swap(&other->title_);
+  description_.Swap(&other->description_);
+  thumbnail_url_.Swap(&other->thumbnail_url_);
+  contact_email_.Swap(&other->contact_email_);
+  homepage_url_.Swap(&other->homepage_url_);
+  cover_url_.Swap(&other->cover_url_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata Channel::GetMetadata() const {
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
 // ===================================================================
 
 void Stream::InitAsDefaultInstance() {
-  ::pb::_Stream_default_instance_._instance.get_mutable()->source_ = const_cast< ::pb::Source*>(
-      ::pb::Source::internal_default_instance());
+  ::pb::_Stream_default_instance_._instance.get_mutable()->file_ = const_cast< ::pb::File*>(
+      ::pb::File::internal_default_instance());
   ::pb::_Stream_default_instance_._instance.get_mutable()->fee_ = const_cast< ::pb::Fee*>(
       ::pb::Fee::internal_default_instance());
   ::pb::_Stream_default_instance_.image_ = const_cast< ::pb::Image*>(
@@ -3697,48 +3085,12 @@ void Stream::InitAsDefaultInstance() {
       ::pb::Video::internal_default_instance());
   ::pb::_Stream_default_instance_.audio_ = const_cast< ::pb::Audio*>(
       ::pb::Audio::internal_default_instance());
-  ::pb::_Stream_default_instance_.software_ = const_cast< ::pb::Software*>(
-      ::pb::Software::internal_default_instance());
-}
-class Stream::HasBitSetters {
- public:
-  static const ::pb::Source& source(const Stream* msg);
-  static const ::pb::Fee& fee(const Stream* msg);
-  static const ::pb::Image& image(const Stream* msg);
-  static const ::pb::Video& video(const Stream* msg);
-  static const ::pb::Audio& audio(const Stream* msg);
-  static const ::pb::Software& software(const Stream* msg);
-};
-
-const ::pb::Source&
-Stream::HasBitSetters::source(const Stream* msg) {
-  return *msg->source_;
-}
-const ::pb::Fee&
-Stream::HasBitSetters::fee(const Stream* msg) {
-  return *msg->fee_;
-}
-const ::pb::Image&
-Stream::HasBitSetters::image(const Stream* msg) {
-  return *msg->type_.image_;
-}
-const ::pb::Video&
-Stream::HasBitSetters::video(const Stream* msg) {
-  return *msg->type_.video_;
-}
-const ::pb::Audio&
-Stream::HasBitSetters::audio(const Stream* msg) {
-  return *msg->type_.audio_;
-}
-const ::pb::Software&
-Stream::HasBitSetters::software(const Stream* msg) {
-  return *msg->type_.software_;
 }
 void Stream::set_allocated_image(::pb::Image* image) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   clear_type();
   if (image) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
+    ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
       image = ::google::protobuf::internal::GetOwnedMessage(
           message_arena, image, submessage_arena);
@@ -3752,7 +3104,7 @@ void Stream::set_allocated_video(::pb::Video* video) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   clear_type();
   if (video) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
+    ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
       video = ::google::protobuf::internal::GetOwnedMessage(
           message_arena, video, submessage_arena);
@@ -3766,7 +3118,7 @@ void Stream::set_allocated_audio(::pb::Audio* audio) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   clear_type();
   if (audio) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
+    ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
       audio = ::google::protobuf::internal::GetOwnedMessage(
           message_arena, audio, submessage_arena);
@@ -3776,42 +3128,58 @@ void Stream::set_allocated_audio(::pb::Audio* audio) {
   }
   // @@protoc_insertion_point(field_set_allocated:pb.Stream.audio)
 }
-void Stream::set_allocated_software(::pb::Software* software) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  clear_type();
-  if (software) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      software = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, software, submessage_arena);
-    }
-    set_has_software();
-    type_.software_ = software;
-  }
-  // @@protoc_insertion_point(field_set_allocated:pb.Stream.software)
-}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Stream::kSourceFieldNumber;
+const int Stream::kSdHashFieldNumber;
+const int Stream::kTitleFieldNumber;
+const int Stream::kDescriptionFieldNumber;
+const int Stream::kThumbnailUrlFieldNumber;
+const int Stream::kTagsFieldNumber;
+const int Stream::kLanguagesFieldNumber;
+const int Stream::kLocationsFieldNumber;
 const int Stream::kAuthorFieldNumber;
 const int Stream::kLicenseFieldNumber;
 const int Stream::kLicenseUrlFieldNumber;
 const int Stream::kReleaseTimeFieldNumber;
+const int Stream::kMediaTypeFieldNumber;
+const int Stream::kFileFieldNumber;
 const int Stream::kFeeFieldNumber;
 const int Stream::kImageFieldNumber;
 const int Stream::kVideoFieldNumber;
 const int Stream::kAudioFieldNumber;
-const int Stream::kSoftwareFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Stream::Stream()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsStream();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Stream)
 }
 Stream::Stream(const Stream& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
+      _internal_metadata_(NULL),
+      tags_(from.tags_),
+      languages_(from.languages_),
+      locations_(from.locations_),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
+  sd_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.sd_hash().size() > 0) {
+    sd_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sd_hash_);
+  }
+  title_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.title().size() > 0) {
+    title_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.title_);
+  }
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
+  }
+  thumbnail_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.thumbnail_url().size() > 0) {
+    thumbnail_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.thumbnail_url_);
+  }
   author_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.author().size() > 0) {
     author_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.author_);
@@ -3824,15 +3192,19 @@ Stream::Stream(const Stream& from)
   if (from.license_url().size() > 0) {
     license_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.license_url_);
   }
-  if (from.has_source()) {
-    source_ = new ::pb::Source(*from.source_);
+  media_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.media_type().size() > 0) {
+    media_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.media_type_);
+  }
+  if (from.has_file()) {
+    file_ = new ::pb::File(*from.file_);
   } else {
-    source_ = nullptr;
+    file_ = NULL;
   }
   if (from.has_fee()) {
     fee_ = new ::pb::Fee(*from.fee_);
   } else {
-    fee_ = nullptr;
+    fee_ = NULL;
   }
   release_time_ = from.release_time_;
   clear_has_type();
@@ -3849,10 +3221,6 @@ Stream::Stream(const Stream& from)
       mutable_audio()->::pb::Audio::MergeFrom(from.audio());
       break;
     }
-    case kSoftware: {
-      mutable_software()->::pb::Software::MergeFrom(from.software());
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
@@ -3861,15 +3229,19 @@ Stream::Stream(const Stream& from)
 }
 
 void Stream::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Stream_claim_2eproto.base);
+  sd_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  title_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  thumbnail_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   author_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   license_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   license_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&source_, 0, static_cast<size_t>(
+  media_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&file_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&release_time_) -
-      reinterpret_cast<char*>(&source_)) + sizeof(release_time_));
+      reinterpret_cast<char*>(&file_)) + sizeof(release_time_));
   clear_has_type();
+  _cached_size_ = 0;
 }
 
 Stream::~Stream() {
@@ -3878,10 +3250,15 @@ Stream::~Stream() {
 }
 
 void Stream::SharedDtor() {
+  sd_hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  title_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  thumbnail_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   author_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   license_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   license_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (this != internal_default_instance()) delete source_;
+  media_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete file_;
   if (this != internal_default_instance()) delete fee_;
   if (has_type()) {
     clear_type();
@@ -3889,13 +3266,27 @@ void Stream::SharedDtor() {
 }
 
 void Stream::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Stream::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Stream& Stream::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Stream_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsStream();
   return *internal_default_instance();
 }
 
+Stream* Stream::New(::google::protobuf::Arena* arena) const {
+  Stream* n = new Stream;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Stream::clear_type() {
 // @@protoc_insertion_point(one_of_clear_start:pb.Stream)
@@ -3912,10 +3303,6 @@ void Stream::clear_type() {
       delete type_.audio_;
       break;
     }
-    case kSoftware: {
-      delete type_.software_;
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
@@ -3930,216 +3317,143 @@ void Stream::Clear() {
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
+  tags_.Clear();
+  languages_.Clear();
+  locations_.Clear();
+  sd_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  title_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  thumbnail_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   author_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   license_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   license_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (GetArenaNoVirtual() == nullptr && source_ != nullptr) {
-    delete source_;
+  media_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (GetArenaNoVirtual() == NULL && file_ != NULL) {
+    delete file_;
   }
-  source_ = nullptr;
-  if (GetArenaNoVirtual() == nullptr && fee_ != nullptr) {
+  file_ = NULL;
+  if (GetArenaNoVirtual() == NULL && fee_ != NULL) {
     delete fee_;
   }
-  fee_ = nullptr;
-  release_time_ = PROTOBUF_LONGLONG(0);
+  fee_ = NULL;
+  release_time_ = GOOGLE_LONGLONG(0);
   clear_type();
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Stream::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Stream*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.Source source = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Source::_InternalParse;
-        object = msg->mutable_source();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // string author = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Stream.author");
-        object = msg->mutable_author();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string license = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Stream.license");
-        object = msg->mutable_license();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string license_url = 4;
-      case 4: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Stream.license_url");
-        object = msg->mutable_license_url();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // int64 release_time = 5;
-      case 5: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
-        msg->set_release_time(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // .pb.Fee fee = 6;
-      case 6: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Fee::_InternalParse;
-        object = msg->mutable_fee();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.Image image = 10;
-      case 10: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 82) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Image::_InternalParse;
-        object = msg->mutable_image();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.Video video = 11;
-      case 11: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 90) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Video::_InternalParse;
-        object = msg->mutable_video();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.Audio audio = 12;
-      case 12: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 98) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Audio::_InternalParse;
-        object = msg->mutable_audio();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.Software software = 13;
-      case 13: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 106) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Software::_InternalParse;
-        object = msg->mutable_software();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Stream::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Stream)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .pb.Source source = 1;
+      // bytes sd_hash = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_source()));
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_sd_hash()));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // string author = 2;
+      // string title = 2;
       case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_title()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->title().data(), static_cast<int>(this->title().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Stream.title"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Stream.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string thumbnail_url = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_thumbnail_url()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->thumbnail_url().data(), static_cast<int>(this->thumbnail_url().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Stream.thumbnail_url"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string tags = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_tags()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->tags(this->tags_size() - 1).data(),
+            static_cast<int>(this->tags(this->tags_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Stream.tags"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .pb.Language languages = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_languages()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .pb.Location locations = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_locations()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string author = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_author()));
           DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
@@ -4152,9 +3466,10 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // string license = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+      // string license = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_license()));
           DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
@@ -4167,9 +3482,10 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // string license_url = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+      // string license_url = 10;
+      case 10: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_license_url()));
           DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
@@ -4182,9 +3498,10 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // int64 release_time = 5;
-      case 5: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+      // int64 release_time = 11;
+      case 11: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(88u /* 88 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
@@ -4195,9 +3512,38 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // .pb.Fee fee = 6;
-      case 6: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+      // string media_type = 13;
+      case 13: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(106u /* 106 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_media_type()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->media_type().data(), static_cast<int>(this->media_type().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.Stream.media_type"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .pb.File file = 14;
+      case 14: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(114u /* 114 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_file()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .pb.Fee fee = 15;
+      case 15: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(122u /* 122 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_fee()));
         } else {
@@ -4206,9 +3552,10 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // .pb.Image image = 10;
-      case 10: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (82 & 0xFF)) {
+      // .pb.Image image = 16;
+      case 16: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(130u /* 130 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_image()));
         } else {
@@ -4217,9 +3564,10 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // .pb.Video video = 11;
-      case 11: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (90 & 0xFF)) {
+      // .pb.Video video = 17;
+      case 17: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(138u /* 138 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_video()));
         } else {
@@ -4228,9 +3576,10 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // .pb.Audio audio = 12;
-      case 12: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (98 & 0xFF)) {
+      // .pb.Audio audio = 18;
+      case 18: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(146u /* 146 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_audio()));
         } else {
@@ -4239,17 +3588,6 @@ bool Stream::MergePartialFromCodedStream(
         break;
       }
 
-      // .pb.Software software = 13;
-      case 13: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (106 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_software()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -4269,7 +3607,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Stream::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -4277,98 +3614,222 @@ void Stream::SerializeWithCachedSizes(
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .pb.Source source = 1;
-  if (this->has_source()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, HasBitSetters::source(this), output);
+  // bytes sd_hash = 1;
+  if (this->sd_hash().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      1, this->sd_hash(), output);
   }
 
-  // string author = 2;
+  // string title = 2;
+  if (this->title().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->title().data(), static_cast<int>(this->title().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.title");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->title(), output);
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->description(), output);
+  }
+
+  // string thumbnail_url = 4;
+  if (this->thumbnail_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->thumbnail_url().data(), static_cast<int>(this->thumbnail_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.thumbnail_url");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->thumbnail_url(), output);
+  }
+
+  // repeated string tags = 5;
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.tags");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      5, this->tags(i), output);
+  }
+
+  // repeated .pb.Language languages = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->languages_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, this->languages(static_cast<int>(i)), output);
+  }
+
+  // repeated .pb.Location locations = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->locations_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7, this->locations(static_cast<int>(i)), output);
+  }
+
+  // string author = 8;
   if (this->author().size() > 0) {
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->author().data(), static_cast<int>(this->author().length()),
       ::google::protobuf::internal::WireFormatLite::SERIALIZE,
       "pb.Stream.author");
     ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      2, this->author(), output);
+      8, this->author(), output);
   }
 
-  // string license = 3;
+  // string license = 9;
   if (this->license().size() > 0) {
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->license().data(), static_cast<int>(this->license().length()),
       ::google::protobuf::internal::WireFormatLite::SERIALIZE,
       "pb.Stream.license");
     ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      3, this->license(), output);
+      9, this->license(), output);
   }
 
-  // string license_url = 4;
+  // string license_url = 10;
   if (this->license_url().size() > 0) {
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->license_url().data(), static_cast<int>(this->license_url().length()),
       ::google::protobuf::internal::WireFormatLite::SERIALIZE,
       "pb.Stream.license_url");
     ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      4, this->license_url(), output);
+      10, this->license_url(), output);
   }
 
-  // int64 release_time = 5;
+  // int64 release_time = 11;
   if (this->release_time() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt64(5, this->release_time(), output);
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(11, this->release_time(), output);
   }
 
-  // .pb.Fee fee = 6;
+  // string media_type = 13;
+  if (this->media_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->media_type().data(), static_cast<int>(this->media_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.media_type");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      13, this->media_type(), output);
+  }
+
+  // .pb.File file = 14;
+  if (this->has_file()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      14, *this->file_, output);
+  }
+
+  // .pb.Fee fee = 15;
   if (this->has_fee()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      6, HasBitSetters::fee(this), output);
+      15, *this->fee_, output);
   }
 
-  // .pb.Image image = 10;
+  // .pb.Image image = 16;
   if (has_image()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      10, HasBitSetters::image(this), output);
+      16, *type_.image_, output);
   }
 
-  // .pb.Video video = 11;
+  // .pb.Video video = 17;
   if (has_video()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      11, HasBitSetters::video(this), output);
+      17, *type_.video_, output);
   }
 
-  // .pb.Audio audio = 12;
+  // .pb.Audio audio = 18;
   if (has_audio()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      12, HasBitSetters::audio(this), output);
+      18, *type_.audio_, output);
   }
 
-  // .pb.Software software = 13;
-  if (has_software()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      13, HasBitSetters::software(this), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Stream)
 }
 
 ::google::protobuf::uint8* Stream::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Stream)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .pb.Source source = 1;
-  if (this->has_source()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        1, HasBitSetters::source(this), target);
+  // bytes sd_hash = 1;
+  if (this->sd_hash().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        1, this->sd_hash(), target);
   }
 
-  // string author = 2;
+  // string title = 2;
+  if (this->title().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->title().data(), static_cast<int>(this->title().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.title");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->title(), target);
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->description(), target);
+  }
+
+  // string thumbnail_url = 4;
+  if (this->thumbnail_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->thumbnail_url().data(), static_cast<int>(this->thumbnail_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.thumbnail_url");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->thumbnail_url(), target);
+  }
+
+  // repeated string tags = 5;
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->tags(i).data(), static_cast<int>(this->tags(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.tags");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(5, this->tags(i), target);
+  }
+
+  // repeated .pb.Language languages = 6;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->languages_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, this->languages(static_cast<int>(i)), deterministic, target);
+  }
+
+  // repeated .pb.Location locations = 7;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->locations_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, this->locations(static_cast<int>(i)), deterministic, target);
+  }
+
+  // string author = 8;
   if (this->author().size() > 0) {
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->author().data(), static_cast<int>(this->author().length()),
@@ -4376,10 +3837,10 @@ void Stream::SerializeWithCachedSizes(
       "pb.Stream.author");
     target =
       ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        2, this->author(), target);
+        8, this->author(), target);
   }
 
-  // string license = 3;
+  // string license = 9;
   if (this->license().size() > 0) {
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->license().data(), static_cast<int>(this->license().length()),
@@ -4387,10 +3848,10 @@ void Stream::SerializeWithCachedSizes(
       "pb.Stream.license");
     target =
       ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        3, this->license(), target);
+        9, this->license(), target);
   }
 
-  // string license_url = 4;
+  // string license_url = 10;
   if (this->license_url().size() > 0) {
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->license_url().data(), static_cast<int>(this->license_url().length()),
@@ -4398,52 +3859,63 @@ void Stream::SerializeWithCachedSizes(
       "pb.Stream.license_url");
     target =
       ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        4, this->license_url(), target);
+        10, this->license_url(), target);
   }
 
-  // int64 release_time = 5;
+  // int64 release_time = 11;
   if (this->release_time() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->release_time(), target);
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(11, this->release_time(), target);
   }
 
-  // .pb.Fee fee = 6;
+  // string media_type = 13;
+  if (this->media_type().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->media_type().data(), static_cast<int>(this->media_type().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.Stream.media_type");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        13, this->media_type(), target);
+  }
+
+  // .pb.File file = 14;
+  if (this->has_file()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        14, *this->file_, deterministic, target);
+  }
+
+  // .pb.Fee fee = 15;
   if (this->has_fee()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        6, HasBitSetters::fee(this), target);
+        15, *this->fee_, deterministic, target);
   }
 
-  // .pb.Image image = 10;
+  // .pb.Image image = 16;
   if (has_image()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        10, HasBitSetters::image(this), target);
+        16, *type_.image_, deterministic, target);
   }
 
-  // .pb.Video video = 11;
+  // .pb.Video video = 17;
   if (has_video()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        11, HasBitSetters::video(this), target);
+        17, *type_.video_, deterministic, target);
   }
 
-  // .pb.Audio audio = 12;
+  // .pb.Audio audio = 18;
   if (has_audio()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        12, HasBitSetters::audio(this), target);
+        18, *type_.audio_, deterministic, target);
   }
 
-  // .pb.Software software = 13;
-  if (has_software()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        13, HasBitSetters::software(this), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Stream)
   return target;
@@ -4453,51 +3925,112 @@ size_t Stream::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Stream)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // repeated string tags = 5;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->tags_size());
+  for (int i = 0, n = this->tags_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->tags(i));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
 
-  // string author = 2;
+  // repeated .pb.Language languages = 6;
+  {
+    unsigned int count = static_cast<unsigned int>(this->languages_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->languages(static_cast<int>(i)));
+    }
+  }
+
+  // repeated .pb.Location locations = 7;
+  {
+    unsigned int count = static_cast<unsigned int>(this->locations_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->locations(static_cast<int>(i)));
+    }
+  }
+
+  // bytes sd_hash = 1;
+  if (this->sd_hash().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->sd_hash());
+  }
+
+  // string title = 2;
+  if (this->title().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->title());
+  }
+
+  // string description = 3;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // string thumbnail_url = 4;
+  if (this->thumbnail_url().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->thumbnail_url());
+  }
+
+  // string author = 8;
   if (this->author().size() > 0) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::StringSize(
         this->author());
   }
 
-  // string license = 3;
+  // string license = 9;
   if (this->license().size() > 0) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::StringSize(
         this->license());
   }
 
-  // string license_url = 4;
+  // string license_url = 10;
   if (this->license_url().size() > 0) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::StringSize(
         this->license_url());
   }
 
-  // .pb.Source source = 1;
-  if (this->has_source()) {
+  // string media_type = 13;
+  if (this->media_type().size() > 0) {
     total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *source_);
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->media_type());
   }
 
-  // .pb.Fee fee = 6;
+  // .pb.File file = 14;
+  if (this->has_file()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->file_);
+  }
+
+  // .pb.Fee fee = 15;
   if (this->has_fee()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *fee_);
+        *this->fee_);
   }
 
-  // int64 release_time = 5;
+  // int64 release_time = 11;
   if (this->release_time() != 0) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::Int64Size(
@@ -4505,40 +4038,35 @@ size_t Stream::ByteSizeLong() const {
   }
 
   switch (type_case()) {
-    // .pb.Image image = 10;
+    // .pb.Image image = 16;
     case kImage: {
-      total_size += 1 +
+      total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::MessageSize(
           *type_.image_);
       break;
     }
-    // .pb.Video video = 11;
+    // .pb.Video video = 17;
     case kVideo: {
-      total_size += 1 +
+      total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::MessageSize(
           *type_.video_);
       break;
     }
-    // .pb.Audio audio = 12;
+    // .pb.Audio audio = 18;
     case kAudio: {
-      total_size += 1 +
+      total_size += 2 +
         ::google::protobuf::internal::WireFormatLite::MessageSize(
           *type_.audio_);
       break;
     }
-    // .pb.Software software = 13;
-    case kSoftware: {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          *type_.software_);
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -4546,9 +4074,9 @@ void Stream::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Stream)
   GOOGLE_DCHECK_NE(&from, this);
   const Stream* source =
-      ::google::protobuf::DynamicCastToGenerated<Stream>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Stream>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Stream)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -4564,6 +4092,25 @@ void Stream::MergeFrom(const Stream& from) {
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  tags_.MergeFrom(from.tags_);
+  languages_.MergeFrom(from.languages_);
+  locations_.MergeFrom(from.locations_);
+  if (from.sd_hash().size() > 0) {
+
+    sd_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sd_hash_);
+  }
+  if (from.title().size() > 0) {
+
+    title_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.title_);
+  }
+  if (from.description().size() > 0) {
+
+    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
+  }
+  if (from.thumbnail_url().size() > 0) {
+
+    thumbnail_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.thumbnail_url_);
+  }
   if (from.author().size() > 0) {
 
     author_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.author_);
@@ -4576,8 +4123,12 @@ void Stream::MergeFrom(const Stream& from) {
 
     license_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.license_url_);
   }
-  if (from.has_source()) {
-    mutable_source()->::pb::Source::MergeFrom(from.source());
+  if (from.media_type().size() > 0) {
+
+    media_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.media_type_);
+  }
+  if (from.has_file()) {
+    mutable_file()->::pb::File::MergeFrom(from.file());
   }
   if (from.has_fee()) {
     mutable_fee()->::pb::Fee::MergeFrom(from.fee());
@@ -4598,10 +4149,6 @@ void Stream::MergeFrom(const Stream& from) {
       mutable_audio()->::pb::Audio::MergeFrom(from.audio());
       break;
     }
-    case kSoftware: {
-      mutable_software()->::pb::Software::MergeFrom(from.software());
-      break;
-    }
     case TYPE_NOT_SET: {
       break;
     }
@@ -4632,1868 +4179,29 @@ void Stream::Swap(Stream* other) {
 }
 void Stream::InternalSwap(Stream* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  author_.Swap(&other->author_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  license_.Swap(&other->license_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  license_url_.Swap(&other->license_url_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  swap(source_, other->source_);
+  tags_.InternalSwap(&other->tags_);
+  languages_.InternalSwap(&other->languages_);
+  locations_.InternalSwap(&other->locations_);
+  sd_hash_.Swap(&other->sd_hash_);
+  title_.Swap(&other->title_);
+  description_.Swap(&other->description_);
+  thumbnail_url_.Swap(&other->thumbnail_url_);
+  author_.Swap(&other->author_);
+  license_.Swap(&other->license_);
+  license_url_.Swap(&other->license_url_);
+  media_type_.Swap(&other->media_type_);
+  swap(file_, other->file_);
   swap(fee_, other->fee_);
   swap(release_time_, other->release_time_);
   swap(type_, other->type_);
   swap(_oneof_case_[0], other->_oneof_case_[0]);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Stream::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void Channel::InitAsDefaultInstance() {
-  ::pb::_Channel_default_instance_._instance.get_mutable()->cover_ = const_cast< ::pb::Source*>(
-      ::pb::Source::internal_default_instance());
-  ::pb::_Channel_default_instance_._instance.get_mutable()->featured_ = const_cast< ::pb::ClaimList*>(
-      ::pb::ClaimList::internal_default_instance());
-}
-class Channel::HasBitSetters {
- public:
-  static const ::pb::Source& cover(const Channel* msg);
-  static const ::pb::ClaimList& featured(const Channel* msg);
-};
-
-const ::pb::Source&
-Channel::HasBitSetters::cover(const Channel* msg) {
-  return *msg->cover_;
-}
-const ::pb::ClaimList&
-Channel::HasBitSetters::featured(const Channel* msg) {
-  return *msg->featured_;
-}
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Channel::kPublicKeyFieldNumber;
-const int Channel::kEmailFieldNumber;
-const int Channel::kWebsiteUrlFieldNumber;
-const int Channel::kCoverFieldNumber;
-const int Channel::kFeaturedFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-Channel::Channel()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.Channel)
-}
-Channel::Channel(const Channel& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  public_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.public_key().size() > 0) {
-    public_key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.public_key_);
-  }
-  email_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.email().size() > 0) {
-    email_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.email_);
-  }
-  website_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.website_url().size() > 0) {
-    website_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.website_url_);
-  }
-  if (from.has_cover()) {
-    cover_ = new ::pb::Source(*from.cover_);
-  } else {
-    cover_ = nullptr;
-  }
-  if (from.has_featured()) {
-    featured_ = new ::pb::ClaimList(*from.featured_);
-  } else {
-    featured_ = nullptr;
-  }
-  // @@protoc_insertion_point(copy_constructor:pb.Channel)
-}
-
-void Channel::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Channel_claim_2eproto.base);
-  public_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  email_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  website_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&cover_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&featured_) -
-      reinterpret_cast<char*>(&cover_)) + sizeof(featured_));
-}
-
-Channel::~Channel() {
-  // @@protoc_insertion_point(destructor:pb.Channel)
-  SharedDtor();
-}
-
-void Channel::SharedDtor() {
-  public_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  email_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  website_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (this != internal_default_instance()) delete cover_;
-  if (this != internal_default_instance()) delete featured_;
-}
-
-void Channel::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const Channel& Channel::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Channel_claim_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void Channel::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.Channel)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  public_key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  email_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  website_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (GetArenaNoVirtual() == nullptr && cover_ != nullptr) {
-    delete cover_;
-  }
-  cover_ = nullptr;
-  if (GetArenaNoVirtual() == nullptr && featured_ != nullptr) {
-    delete featured_;
-  }
-  featured_ = nullptr;
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Channel::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Channel*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // bytes public_key = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_public_key();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string email = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Channel.email");
-        object = msg->mutable_email();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string website_url = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Channel.website_url");
-        object = msg->mutable_website_url();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // .pb.Source cover = 4;
-      case 4: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Source::_InternalParse;
-        object = msg->mutable_cover();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.ClaimList featured = 5;
-      case 5: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::ClaimList::_InternalParse;
-        object = msg->mutable_featured();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool Channel::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.Channel)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bytes public_key = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_public_key()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string email = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_email()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->email().data(), static_cast<int>(this->email().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Channel.email"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string website_url = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_website_url()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->website_url().data(), static_cast<int>(this->website_url().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Channel.website_url"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // .pb.Source cover = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_cover()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // .pb.ClaimList featured = 5;
-      case 5: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_featured()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.Channel)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.Channel)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void Channel::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.Channel)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes public_key = 1;
-  if (this->public_key().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      1, this->public_key(), output);
-  }
-
-  // string email = 2;
-  if (this->email().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->email().data(), static_cast<int>(this->email().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Channel.email");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      2, this->email(), output);
-  }
-
-  // string website_url = 3;
-  if (this->website_url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->website_url().data(), static_cast<int>(this->website_url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Channel.website_url");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      3, this->website_url(), output);
-  }
-
-  // .pb.Source cover = 4;
-  if (this->has_cover()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      4, HasBitSetters::cover(this), output);
-  }
-
-  // .pb.ClaimList featured = 5;
-  if (this->has_featured()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      5, HasBitSetters::featured(this), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.Channel)
-}
-
-::google::protobuf::uint8* Channel::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.Channel)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes public_key = 1;
-  if (this->public_key().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        1, this->public_key(), target);
-  }
-
-  // string email = 2;
-  if (this->email().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->email().data(), static_cast<int>(this->email().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Channel.email");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        2, this->email(), target);
-  }
-
-  // string website_url = 3;
-  if (this->website_url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->website_url().data(), static_cast<int>(this->website_url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Channel.website_url");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        3, this->website_url(), target);
-  }
-
-  // .pb.Source cover = 4;
-  if (this->has_cover()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        4, HasBitSetters::cover(this), target);
-  }
-
-  // .pb.ClaimList featured = 5;
-  if (this->has_featured()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        5, HasBitSetters::featured(this), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.Channel)
-  return target;
-}
-
-size_t Channel::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.Channel)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // bytes public_key = 1;
-  if (this->public_key().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->public_key());
-  }
-
-  // string email = 2;
-  if (this->email().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->email());
-  }
-
-  // string website_url = 3;
-  if (this->website_url().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->website_url());
-  }
-
-  // .pb.Source cover = 4;
-  if (this->has_cover()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *cover_);
-  }
-
-  // .pb.ClaimList featured = 5;
-  if (this->has_featured()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *featured_);
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void Channel::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.Channel)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Channel* source =
-      ::google::protobuf::DynamicCastToGenerated<Channel>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Channel)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Channel)
-    MergeFrom(*source);
-  }
-}
-
-void Channel::MergeFrom(const Channel& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.Channel)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.public_key().size() > 0) {
-
-    public_key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.public_key_);
-  }
-  if (from.email().size() > 0) {
-
-    email_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.email_);
-  }
-  if (from.website_url().size() > 0) {
-
-    website_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.website_url_);
-  }
-  if (from.has_cover()) {
-    mutable_cover()->::pb::Source::MergeFrom(from.cover());
-  }
-  if (from.has_featured()) {
-    mutable_featured()->::pb::ClaimList::MergeFrom(from.featured());
-  }
-}
-
-void Channel::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.Channel)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Channel::CopyFrom(const Channel& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.Channel)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Channel::IsInitialized() const {
-  return true;
-}
-
-void Channel::Swap(Channel* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void Channel::InternalSwap(Channel* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  public_key_.Swap(&other->public_key_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  email_.Swap(&other->email_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  website_url_.Swap(&other->website_url_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  swap(cover_, other->cover_);
-  swap(featured_, other->featured_);
-}
-
-::google::protobuf::Metadata Channel::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void ClaimReference::InitAsDefaultInstance() {
-}
-class ClaimReference::HasBitSetters {
- public:
-};
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int ClaimReference::kClaimHashFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-ClaimReference::ClaimReference()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.ClaimReference)
-}
-ClaimReference::ClaimReference(const ClaimReference& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  claim_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.claim_hash().size() > 0) {
-    claim_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.claim_hash_);
-  }
-  // @@protoc_insertion_point(copy_constructor:pb.ClaimReference)
-}
-
-void ClaimReference::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_ClaimReference_claim_2eproto.base);
-  claim_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-ClaimReference::~ClaimReference() {
-  // @@protoc_insertion_point(destructor:pb.ClaimReference)
-  SharedDtor();
-}
-
-void ClaimReference::SharedDtor() {
-  claim_hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-void ClaimReference::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const ClaimReference& ClaimReference::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_ClaimReference_claim_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void ClaimReference::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.ClaimReference)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  claim_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* ClaimReference::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<ClaimReference*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // bytes claim_hash = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_claim_hash();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool ClaimReference::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.ClaimReference)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bytes claim_hash = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_claim_hash()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.ClaimReference)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.ClaimReference)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void ClaimReference::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.ClaimReference)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes claim_hash = 1;
-  if (this->claim_hash().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      1, this->claim_hash(), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.ClaimReference)
-}
-
-::google::protobuf::uint8* ClaimReference::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.ClaimReference)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes claim_hash = 1;
-  if (this->claim_hash().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        1, this->claim_hash(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.ClaimReference)
-  return target;
-}
-
-size_t ClaimReference::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.ClaimReference)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // bytes claim_hash = 1;
-  if (this->claim_hash().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->claim_hash());
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void ClaimReference::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.ClaimReference)
-  GOOGLE_DCHECK_NE(&from, this);
-  const ClaimReference* source =
-      ::google::protobuf::DynamicCastToGenerated<ClaimReference>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.ClaimReference)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.ClaimReference)
-    MergeFrom(*source);
-  }
-}
-
-void ClaimReference::MergeFrom(const ClaimReference& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.ClaimReference)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.claim_hash().size() > 0) {
-
-    claim_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.claim_hash_);
-  }
-}
-
-void ClaimReference::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.ClaimReference)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void ClaimReference::CopyFrom(const ClaimReference& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.ClaimReference)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool ClaimReference::IsInitialized() const {
-  return true;
-}
-
-void ClaimReference::Swap(ClaimReference* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void ClaimReference::InternalSwap(ClaimReference* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  claim_hash_.Swap(&other->claim_hash_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-}
-
-::google::protobuf::Metadata ClaimReference::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void ClaimList::InitAsDefaultInstance() {
-}
-class ClaimList::HasBitSetters {
- public:
-};
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int ClaimList::kListTypeFieldNumber;
-const int ClaimList::kClaimReferencesFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-ClaimList::ClaimList()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.ClaimList)
-}
-ClaimList::ClaimList(const ClaimList& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr),
-      claim_references_(from.claim_references_) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  list_type_ = from.list_type_;
-  // @@protoc_insertion_point(copy_constructor:pb.ClaimList)
-}
-
-void ClaimList::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_ClaimList_claim_2eproto.base);
-  list_type_ = 0;
-}
-
-ClaimList::~ClaimList() {
-  // @@protoc_insertion_point(destructor:pb.ClaimList)
-  SharedDtor();
-}
-
-void ClaimList::SharedDtor() {
-}
-
-void ClaimList::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const ClaimList& ClaimList::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_ClaimList_claim_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void ClaimList::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.ClaimList)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  claim_references_.Clear();
-  list_type_ = 0;
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* ClaimList::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<ClaimList*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.ClaimList.ListType list_type = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_list_type(static_cast<::pb::ClaimList_ListType>(val));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // repeated .pb.ClaimReference claim_references = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        do {
-          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-          parser_till_end = ::pb::ClaimReference::_InternalParse;
-          object = msg->add_claim_references();
-          if (size > end - ptr) goto len_delim_till_end;
-          ptr += size;
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-              {parser_till_end, object}, ptr - size, ptr));
-          if (ptr >= end) break;
-        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool ClaimList::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.ClaimList)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .pb.ClaimList.ListType list_type = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
-          int value = 0;
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
-                 input, &value)));
-          set_list_type(static_cast< ::pb::ClaimList_ListType >(value));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated .pb.ClaimReference claim_references = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_claim_references()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.ClaimList)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.ClaimList)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void ClaimList::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.ClaimList)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // .pb.ClaimList.ListType list_type = 1;
-  if (this->list_type() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      1, this->list_type(), output);
-  }
-
-  // repeated .pb.ClaimReference claim_references = 2;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->claim_references_size()); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2,
-      this->claim_references(static_cast<int>(i)),
-      output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.ClaimList)
-}
-
-::google::protobuf::uint8* ClaimList::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.ClaimList)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // .pb.ClaimList.ListType list_type = 1;
-  if (this->list_type() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      1, this->list_type(), target);
-  }
-
-  // repeated .pb.ClaimReference claim_references = 2;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->claim_references_size()); i < n; i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        2, this->claim_references(static_cast<int>(i)), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.ClaimList)
-  return target;
-}
-
-size_t ClaimList::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.ClaimList)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // repeated .pb.ClaimReference claim_references = 2;
-  {
-    unsigned int count = static_cast<unsigned int>(this->claim_references_size());
-    total_size += 1UL * count;
-    for (unsigned int i = 0; i < count; i++) {
-      total_size +=
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          this->claim_references(static_cast<int>(i)));
-    }
-  }
-
-  // .pb.ClaimList.ListType list_type = 1;
-  if (this->list_type() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->list_type());
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void ClaimList::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.ClaimList)
-  GOOGLE_DCHECK_NE(&from, this);
-  const ClaimList* source =
-      ::google::protobuf::DynamicCastToGenerated<ClaimList>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.ClaimList)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.ClaimList)
-    MergeFrom(*source);
-  }
-}
-
-void ClaimList::MergeFrom(const ClaimList& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.ClaimList)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  claim_references_.MergeFrom(from.claim_references_);
-  if (from.list_type() != 0) {
-    set_list_type(from.list_type());
-  }
-}
-
-void ClaimList::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.ClaimList)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void ClaimList::CopyFrom(const ClaimList& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.ClaimList)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool ClaimList::IsInitialized() const {
-  return true;
-}
-
-void ClaimList::Swap(ClaimList* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void ClaimList::InternalSwap(ClaimList* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  CastToBase(&claim_references_)->InternalSwap(CastToBase(&other->claim_references_));
-  swap(list_type_, other->list_type_);
-}
-
-::google::protobuf::Metadata ClaimList::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void Source::InitAsDefaultInstance() {
-}
-class Source::HasBitSetters {
- public:
-};
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Source::kHashFieldNumber;
-const int Source::kNameFieldNumber;
-const int Source::kSizeFieldNumber;
-const int Source::kMediaTypeFieldNumber;
-const int Source::kUrlFieldNumber;
-const int Source::kSdHashFieldNumber;
-const int Source::kBtInfohashFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-Source::Source()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.Source)
-}
-Source::Source(const Source& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.hash().size() > 0) {
-    hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.hash_);
-  }
-  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.name().size() > 0) {
-    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
-  }
-  media_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.media_type().size() > 0) {
-    media_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.media_type_);
-  }
-  url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.url().size() > 0) {
-    url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.url_);
-  }
-  sd_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.sd_hash().size() > 0) {
-    sd_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sd_hash_);
-  }
-  bt_infohash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.bt_infohash().size() > 0) {
-    bt_infohash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.bt_infohash_);
-  }
-  size_ = from.size_;
-  // @@protoc_insertion_point(copy_constructor:pb.Source)
-}
-
-void Source::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Source_claim_2eproto.base);
-  hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  media_type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  sd_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  bt_infohash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  size_ = PROTOBUF_ULONGLONG(0);
-}
-
-Source::~Source() {
-  // @@protoc_insertion_point(destructor:pb.Source)
-  SharedDtor();
-}
-
-void Source::SharedDtor() {
-  hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  media_type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  sd_hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  bt_infohash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-void Source::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const Source& Source::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Source_claim_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void Source::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.Source)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  media_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  sd_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  bt_infohash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  size_ = PROTOBUF_ULONGLONG(0);
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Source::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Source*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // bytes hash = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_hash();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string name = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Source.name");
-        object = msg->mutable_name();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // uint64 size = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
-        msg->set_size(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // string media_type = 4;
-      case 4: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Source.media_type");
-        object = msg->mutable_media_type();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string url = 5;
-      case 5: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Source.url");
-        object = msg->mutable_url();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // bytes sd_hash = 6;
-      case 6: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_sd_hash();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // bytes bt_infohash = 7;
-      case 7: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_bt_infohash();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool Source::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.Source)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bytes hash = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_hash()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string name = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_name()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->name().data(), static_cast<int>(this->name().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Source.name"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint64 size = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &size_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string media_type = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_media_type()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->media_type().data(), static_cast<int>(this->media_type().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Source.media_type"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string url = 5;
-      case 5: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_url()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->url().data(), static_cast<int>(this->url().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Source.url"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // bytes sd_hash = 6;
-      case 6: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_sd_hash()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // bytes bt_infohash = 7;
-      case 7: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_bt_infohash()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.Source)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.Source)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void Source::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.Source)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes hash = 1;
-  if (this->hash().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      1, this->hash(), output);
-  }
-
-  // string name = 2;
-  if (this->name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->name().data(), static_cast<int>(this->name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Source.name");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      2, this->name(), output);
-  }
-
-  // uint64 size = 3;
-  if (this->size() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->size(), output);
-  }
-
-  // string media_type = 4;
-  if (this->media_type().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->media_type().data(), static_cast<int>(this->media_type().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Source.media_type");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      4, this->media_type(), output);
-  }
-
-  // string url = 5;
-  if (this->url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->url().data(), static_cast<int>(this->url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Source.url");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      5, this->url(), output);
-  }
-
-  // bytes sd_hash = 6;
-  if (this->sd_hash().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      6, this->sd_hash(), output);
-  }
-
-  // bytes bt_infohash = 7;
-  if (this->bt_infohash().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      7, this->bt_infohash(), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.Source)
-}
-
-::google::protobuf::uint8* Source::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.Source)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes hash = 1;
-  if (this->hash().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        1, this->hash(), target);
-  }
-
-  // string name = 2;
-  if (this->name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->name().data(), static_cast<int>(this->name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Source.name");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        2, this->name(), target);
-  }
-
-  // uint64 size = 3;
-  if (this->size() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->size(), target);
-  }
-
-  // string media_type = 4;
-  if (this->media_type().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->media_type().data(), static_cast<int>(this->media_type().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Source.media_type");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        4, this->media_type(), target);
-  }
-
-  // string url = 5;
-  if (this->url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->url().data(), static_cast<int>(this->url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Source.url");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        5, this->url(), target);
-  }
-
-  // bytes sd_hash = 6;
-  if (this->sd_hash().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        6, this->sd_hash(), target);
-  }
-
-  // bytes bt_infohash = 7;
-  if (this->bt_infohash().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        7, this->bt_infohash(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.Source)
-  return target;
-}
-
-size_t Source::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.Source)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // bytes hash = 1;
-  if (this->hash().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->hash());
-  }
-
-  // string name = 2;
-  if (this->name().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->name());
-  }
-
-  // string media_type = 4;
-  if (this->media_type().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->media_type());
-  }
-
-  // string url = 5;
-  if (this->url().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->url());
-  }
-
-  // bytes sd_hash = 6;
-  if (this->sd_hash().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->sd_hash());
-  }
-
-  // bytes bt_infohash = 7;
-  if (this->bt_infohash().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->bt_infohash());
-  }
-
-  // uint64 size = 3;
-  if (this->size() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt64Size(
-        this->size());
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void Source::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.Source)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Source* source =
-      ::google::protobuf::DynamicCastToGenerated<Source>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Source)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Source)
-    MergeFrom(*source);
-  }
-}
-
-void Source::MergeFrom(const Source& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.Source)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.hash().size() > 0) {
-
-    hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.hash_);
-  }
-  if (from.name().size() > 0) {
-
-    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
-  }
-  if (from.media_type().size() > 0) {
-
-    media_type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.media_type_);
-  }
-  if (from.url().size() > 0) {
-
-    url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.url_);
-  }
-  if (from.sd_hash().size() > 0) {
-
-    sd_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sd_hash_);
-  }
-  if (from.bt_infohash().size() > 0) {
-
-    bt_infohash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.bt_infohash_);
-  }
-  if (from.size() != 0) {
-    set_size(from.size());
-  }
-}
-
-void Source::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.Source)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Source::CopyFrom(const Source& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.Source)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Source::IsInitialized() const {
-  return true;
-}
-
-void Source::Swap(Source* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void Source::InternalSwap(Source* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  hash_.Swap(&other->hash_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  name_.Swap(&other->name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  media_type_.Swap(&other->media_type_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  url_.Swap(&other->url_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  sd_hash_.Swap(&other->sd_hash_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  bt_infohash_.Swap(&other->bt_infohash_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  swap(size_, other->size_);
-}
-
-::google::protobuf::Metadata Source::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
@@ -6501,10 +4209,6 @@ void Source::InternalSwap(Source* other) {
 
 void Fee::InitAsDefaultInstance() {
 }
-class Fee::HasBitSetters {
- public:
-};
-
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Fee::kCurrencyFieldNumber;
 const int Fee::kAddressFieldNumber;
@@ -6512,13 +4216,17 @@ const int Fee::kAmountFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Fee::Fee()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsFee();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Fee)
 }
 Fee::Fee(const Fee& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   address_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.address().size() > 0) {
@@ -6531,12 +4239,11 @@ Fee::Fee(const Fee& from)
 }
 
 void Fee::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Fee_claim_2eproto.base);
   address_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   ::memset(&amount_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&currency_) -
       reinterpret_cast<char*>(&amount_)) + sizeof(currency_));
+  _cached_size_ = 0;
 }
 
 Fee::~Fee() {
@@ -6549,13 +4256,27 @@ void Fee::SharedDtor() {
 }
 
 void Fee::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Fee::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Fee& Fee::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Fee_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsFee();
   return *internal_default_instance();
 }
 
+Fee* Fee::New(::google::protobuf::Arena* arena) const {
+  Fee* n = new Fee;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Fee::Clear() {
 // @@protoc_insertion_point(message_clear_start:pb.Fee)
@@ -6570,87 +4291,21 @@ void Fee::Clear() {
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Fee::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Fee*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.Fee.Currency currency = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_currency(static_cast<::pb::Fee_Currency>(val));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // bytes address = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_address();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // uint64 amount = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
-        msg->set_amount(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Fee::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Fee)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // .pb.Fee.Currency currency = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
-          int value = 0;
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                  input, &value)));
@@ -6663,7 +4318,8 @@ bool Fee::MergePartialFromCodedStream(
 
       // bytes address = 2;
       case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                 input, this->mutable_address()));
         } else {
@@ -6674,7 +4330,8 @@ bool Fee::MergePartialFromCodedStream(
 
       // uint64 amount = 3;
       case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
@@ -6704,7 +4361,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Fee::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -6729,15 +4385,16 @@ void Fee::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->amount(), output);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Fee)
 }
 
 ::google::protobuf::uint8* Fee::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Fee)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -6760,9 +4417,9 @@ void Fee::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->amount(), target);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Fee)
   return target;
@@ -6772,15 +4429,11 @@ size_t Fee::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Fee)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
   // bytes address = 2;
   if (this->address().size() > 0) {
     total_size += 1 +
@@ -6802,7 +4455,9 @@ size_t Fee::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -6810,9 +4465,9 @@ void Fee::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Fee)
   GOOGLE_DCHECK_NE(&from, this);
   const Fee* source =
-      ::google::protobuf::DynamicCastToGenerated<Fee>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Fee>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Fee)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -6864,16 +4519,356 @@ void Fee::Swap(Fee* other) {
 }
 void Fee::InternalSwap(Fee* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  address_.Swap(&other->address_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  address_.Swap(&other->address_);
   swap(amount_, other->amount_);
   swap(currency_, other->currency_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Fee::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void File::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int File::kHashFieldNumber;
+const int File::kNameFieldNumber;
+const int File::kSizeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+File::File()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsFile();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:pb.File)
+}
+File::File(const File& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.name().size() > 0) {
+    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
+  }
+  hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.hash().size() > 0) {
+    hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.hash_);
+  }
+  size_ = from.size_;
+  // @@protoc_insertion_point(copy_constructor:pb.File)
+}
+
+void File::SharedCtor() {
+  name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  size_ = GOOGLE_ULONGLONG(0);
+  _cached_size_ = 0;
+}
+
+File::~File() {
+  // @@protoc_insertion_point(destructor:pb.File)
+  SharedDtor();
+}
+
+void File::SharedDtor() {
+  name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void File::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* File::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const File& File::default_instance() {
+  ::protobuf_claim_2eproto::InitDefaultsFile();
+  return *internal_default_instance();
+}
+
+File* File::New(::google::protobuf::Arena* arena) const {
+  File* n = new File;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void File::Clear() {
+// @@protoc_insertion_point(message_clear_start:pb.File)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  size_ = GOOGLE_ULONGLONG(0);
+  _internal_metadata_.Clear();
+}
+
+bool File::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:pb.File)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->name().data(), static_cast<int>(this->name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "pb.File.name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint64 size = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 input, &size_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // bytes hash = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_hash()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:pb.File)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:pb.File)
+  return false;
+#undef DO_
+}
+
+void File::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:pb.File)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.File.name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->name(), output);
+  }
+
+  // uint64 size = 2;
+  if (this->size() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->size(), output);
+  }
+
+  // bytes hash = 3;
+  if (this->hash().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      3, this->hash(), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:pb.File)
+}
+
+::google::protobuf::uint8* File::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:pb.File)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string name = 1;
+  if (this->name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->name().data(), static_cast<int>(this->name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "pb.File.name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->name(), target);
+  }
+
+  // uint64 size = 2;
+  if (this->size() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->size(), target);
+  }
+
+  // bytes hash = 3;
+  if (this->hash().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        3, this->hash(), target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:pb.File)
+  return target;
+}
+
+size_t File::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:pb.File)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // string name = 1;
+  if (this->name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->name());
+  }
+
+  // bytes hash = 3;
+  if (this->hash().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->hash());
+  }
+
+  // uint64 size = 2;
+  if (this->size() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt64Size(
+        this->size());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void File::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:pb.File)
+  GOOGLE_DCHECK_NE(&from, this);
+  const File* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const File>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.File)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.File)
+    MergeFrom(*source);
+  }
+}
+
+void File::MergeFrom(const File& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:pb.File)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.name().size() > 0) {
+
+    name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.name_);
+  }
+  if (from.hash().size() > 0) {
+
+    hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.hash_);
+  }
+  if (from.size() != 0) {
+    set_size(from.size());
+  }
+}
+
+void File::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:pb.File)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void File::CopyFrom(const File& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:pb.File)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool File::IsInitialized() const {
+  return true;
+}
+
+void File::Swap(File* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void File::InternalSwap(File* other) {
+  using std::swap;
+  name_.Swap(&other->name_);
+  hash_.Swap(&other->hash_);
+  swap(size_, other->size_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata File::GetMetadata() const {
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
@@ -6881,23 +4876,23 @@ void Fee::InternalSwap(Fee* other) {
 
 void Image::InitAsDefaultInstance() {
 }
-class Image::HasBitSetters {
- public:
-};
-
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Image::kWidthFieldNumber;
 const int Image::kHeightFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Image::Image()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsImage();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Image)
 }
 Image::Image(const Image& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&width_, &from.width_,
     static_cast<size_t>(reinterpret_cast<char*>(&height_) -
@@ -6909,6 +4904,7 @@ void Image::SharedCtor() {
   ::memset(&width_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&height_) -
       reinterpret_cast<char*>(&width_)) + sizeof(height_));
+  _cached_size_ = 0;
 }
 
 Image::~Image() {
@@ -6920,13 +4916,27 @@ void Image::SharedDtor() {
 }
 
 void Image::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Image::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Image& Image::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Image_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsImage();
   return *internal_default_instance();
 }
 
+Image* Image::New(::google::protobuf::Arena* arena) const {
+  Image* n = new Image;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Image::Clear() {
 // @@protoc_insertion_point(message_clear_start:pb.Image)
@@ -6940,63 +4950,20 @@ void Image::Clear() {
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Image::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Image*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // uint32 width = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        msg->set_width(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 height = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
-        msg->set_height(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Image::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Image)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // uint32 width = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
@@ -7009,7 +4976,8 @@ bool Image::MergePartialFromCodedStream(
 
       // uint32 height = 2;
       case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
@@ -7039,7 +5007,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Image::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -7057,15 +5024,16 @@ void Image::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->height(), output);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Image)
 }
 
 ::google::protobuf::uint8* Image::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Image)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -7080,9 +5048,9 @@ void Image::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->height(), target);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Image)
   return target;
@@ -7092,15 +5060,11 @@ size_t Image::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Image)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
   // uint32 width = 1;
   if (this->width() != 0) {
     total_size += 1 +
@@ -7116,7 +5080,9 @@ size_t Image::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -7124,9 +5090,9 @@ void Image::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Image)
   GOOGLE_DCHECK_NE(&from, this);
   const Image* source =
-      ::google::protobuf::DynamicCastToGenerated<Image>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Image>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Image)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -7174,53 +5140,41 @@ void Image::Swap(Image* other) {
 }
 void Image::InternalSwap(Image* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(width_, other->width_);
   swap(height_, other->height_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Image::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
 // ===================================================================
 
 void Video::InitAsDefaultInstance() {
-  ::pb::_Video_default_instance_._instance.get_mutable()->audio_ = const_cast< ::pb::Audio*>(
-      ::pb::Audio::internal_default_instance());
-}
-class Video::HasBitSetters {
- public:
-  static const ::pb::Audio& audio(const Video* msg);
-};
-
-const ::pb::Audio&
-Video::HasBitSetters::audio(const Video* msg) {
-  return *msg->audio_;
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Video::kWidthFieldNumber;
 const int Video::kHeightFieldNumber;
 const int Video::kDurationFieldNumber;
-const int Video::kAudioFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Video::Video()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsVideo();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Video)
 }
 Video::Video(const Video& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_audio()) {
-    audio_ = new ::pb::Audio(*from.audio_);
-  } else {
-    audio_ = nullptr;
-  }
   ::memcpy(&width_, &from.width_,
     static_cast<size_t>(reinterpret_cast<char*>(&duration_) -
     reinterpret_cast<char*>(&width_)) + sizeof(duration_));
@@ -7228,11 +5182,10 @@ Video::Video(const Video& from)
 }
 
 void Video::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Video_claim_2eproto.base);
-  ::memset(&audio_, 0, static_cast<size_t>(
+  ::memset(&width_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&duration_) -
-      reinterpret_cast<char*>(&audio_)) + sizeof(duration_));
+      reinterpret_cast<char*>(&width_)) + sizeof(duration_));
+  _cached_size_ = 0;
 }
 
 Video::~Video() {
@@ -7241,17 +5194,30 @@ Video::~Video() {
 }
 
 void Video::SharedDtor() {
-  if (this != internal_default_instance()) delete audio_;
 }
 
 void Video::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Video::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Video& Video::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Video_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsVideo();
   return *internal_default_instance();
 }
 
+Video* Video::New(::google::protobuf::Arena* arena) const {
+  Video* n = new Video;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Video::Clear() {
 // @@protoc_insertion_point(message_clear_start:pb.Video)
@@ -7259,96 +5225,26 @@ void Video::Clear() {
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  if (GetArenaNoVirtual() == nullptr && audio_ != nullptr) {
-    delete audio_;
-  }
-  audio_ = nullptr;
   ::memset(&width_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&duration_) -
       reinterpret_cast<char*>(&width_)) + sizeof(duration_));
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Video::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Video*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // uint32 width = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        msg->set_width(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 height = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
-        msg->set_height(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 duration = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
-        msg->set_duration(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // .pb.Audio audio = 15;
-      case 15: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 122) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Audio::_InternalParse;
-        object = msg->mutable_audio();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Video::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Video)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // uint32 width = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
@@ -7361,7 +5257,8 @@ bool Video::MergePartialFromCodedStream(
 
       // uint32 height = 2;
       case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
@@ -7374,7 +5271,8 @@ bool Video::MergePartialFromCodedStream(
 
       // uint32 duration = 3;
       case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
@@ -7385,17 +5283,6 @@ bool Video::MergePartialFromCodedStream(
         break;
       }
 
-      // .pb.Audio audio = 15;
-      case 15: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (122 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_audio()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -7415,7 +5302,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Video::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -7438,21 +5324,16 @@ void Video::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->duration(), output);
   }
 
-  // .pb.Audio audio = 15;
-  if (this->has_audio()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      15, HasBitSetters::audio(this), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Video)
 }
 
 ::google::protobuf::uint8* Video::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Video)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -7472,16 +5353,9 @@ void Video::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->duration(), target);
   }
 
-  // .pb.Audio audio = 15;
-  if (this->has_audio()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        15, HasBitSetters::audio(this), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Video)
   return target;
@@ -7491,22 +5365,11 @@ size_t Video::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Video)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // .pb.Audio audio = 15;
-  if (this->has_audio()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *audio_);
-  }
-
   // uint32 width = 1;
   if (this->width() != 0) {
     total_size += 1 +
@@ -7529,7 +5392,9 @@ size_t Video::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -7537,9 +5402,9 @@ void Video::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Video)
   GOOGLE_DCHECK_NE(&from, this);
   const Video* source =
-      ::google::protobuf::DynamicCastToGenerated<Video>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Video>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Video)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -7555,9 +5420,6 @@ void Video::MergeFrom(const Video& from) {
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.has_audio()) {
-    mutable_audio()->::pb::Audio::MergeFrom(from.audio());
-  }
   if (from.width() != 0) {
     set_width(from.width());
   }
@@ -7593,16 +5455,16 @@ void Video::Swap(Video* other) {
 }
 void Video::InternalSwap(Video* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  swap(audio_, other->audio_);
   swap(width_, other->width_);
   swap(height_, other->height_);
   swap(duration_, other->duration_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Video::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
@@ -7610,22 +5472,22 @@ void Video::InternalSwap(Video* other) {
 
 void Audio::InitAsDefaultInstance() {
 }
-class Audio::HasBitSetters {
- public:
-};
-
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Audio::kDurationFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Audio::Audio()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsAudio();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Audio)
 }
 Audio::Audio(const Audio& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   duration_ = from.duration_;
   // @@protoc_insertion_point(copy_constructor:pb.Audio)
@@ -7633,6 +5495,7 @@ Audio::Audio(const Audio& from)
 
 void Audio::SharedCtor() {
   duration_ = 0u;
+  _cached_size_ = 0;
 }
 
 Audio::~Audio() {
@@ -7644,13 +5507,27 @@ void Audio::SharedDtor() {
 }
 
 void Audio::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Audio::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Audio& Audio::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Audio_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsAudio();
   return *internal_default_instance();
 }
 
+Audio* Audio::New(::google::protobuf::Arena* arena) const {
+  Audio* n = new Audio;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Audio::Clear() {
 // @@protoc_insertion_point(message_clear_start:pb.Audio)
@@ -7662,56 +5539,20 @@ void Audio::Clear() {
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Audio::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Audio*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // uint32 duration = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        msg->set_duration(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Audio::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Audio)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // uint32 duration = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
@@ -7741,7 +5582,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Audio::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -7754,15 +5594,16 @@ void Audio::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->duration(), output);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Audio)
 }
 
 ::google::protobuf::uint8* Audio::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Audio)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -7772,9 +5613,9 @@ void Audio::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->duration(), target);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Audio)
   return target;
@@ -7784,15 +5625,11 @@ size_t Audio::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Audio)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
   // uint32 duration = 1;
   if (this->duration() != 0) {
     total_size += 1 +
@@ -7801,7 +5638,9 @@ size_t Audio::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -7809,9 +5648,9 @@ void Audio::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Audio)
   GOOGLE_DCHECK_NE(&from, this);
   const Audio* source =
-      ::google::protobuf::DynamicCastToGenerated<Audio>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Audio>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Audio)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -7856,310 +5695,14 @@ void Audio::Swap(Audio* other) {
 }
 void Audio::InternalSwap(Audio* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(duration_, other->duration_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Audio::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void Software::InitAsDefaultInstance() {
-}
-class Software::HasBitSetters {
- public:
-};
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Software::kOsFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-Software::Software()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.Software)
-}
-Software::Software(const Software& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  os_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.os().size() > 0) {
-    os_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.os_);
-  }
-  // @@protoc_insertion_point(copy_constructor:pb.Software)
-}
-
-void Software::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Software_claim_2eproto.base);
-  os_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-Software::~Software() {
-  // @@protoc_insertion_point(destructor:pb.Software)
-  SharedDtor();
-}
-
-void Software::SharedDtor() {
-  os_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-void Software::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const Software& Software::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Software_claim_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void Software::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.Software)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  os_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Software::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Software*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // string os = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Software.os");
-        object = msg->mutable_os();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool Software::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.Software)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // string os = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_os()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->os().data(), static_cast<int>(this->os().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Software.os"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.Software)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.Software)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void Software::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.Software)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // string os = 1;
-  if (this->os().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->os().data(), static_cast<int>(this->os().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Software.os");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      1, this->os(), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.Software)
-}
-
-::google::protobuf::uint8* Software::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.Software)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // string os = 1;
-  if (this->os().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->os().data(), static_cast<int>(this->os().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Software.os");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        1, this->os(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.Software)
-  return target;
-}
-
-size_t Software::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.Software)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // string os = 1;
-  if (this->os().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->os());
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void Software::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.Software)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Software* source =
-      ::google::protobuf::DynamicCastToGenerated<Software>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Software)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Software)
-    MergeFrom(*source);
-  }
-}
-
-void Software::MergeFrom(const Software& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.Software)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.os().size() > 0) {
-
-    os_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.os_);
-  }
-}
-
-void Software::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.Software)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Software::CopyFrom(const Software& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.Software)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Software::IsInitialized() const {
-  return true;
-}
-
-void Software::Swap(Software* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void Software::InternalSwap(Software* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  os_.Swap(&other->os_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-}
-
-::google::protobuf::Metadata Software::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
@@ -8167,10 +5710,6 @@ void Software::InternalSwap(Software* other) {
 
 void Language::InitAsDefaultInstance() {
 }
-class Language::HasBitSetters {
- public:
-};
-
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Language::kLanguageFieldNumber;
 const int Language::kScriptFieldNumber;
@@ -8178,13 +5717,17 @@ const int Language::kRegionFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Language::Language()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsLanguage();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Language)
 }
 Language::Language(const Language& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::memcpy(&language_, &from.language_,
     static_cast<size_t>(reinterpret_cast<char*>(&region_) -
@@ -8196,6 +5739,7 @@ void Language::SharedCtor() {
   ::memset(&language_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&region_) -
       reinterpret_cast<char*>(&language_)) + sizeof(region_));
+  _cached_size_ = 0;
 }
 
 Language::~Language() {
@@ -8207,13 +5751,27 @@ void Language::SharedDtor() {
 }
 
 void Language::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Language::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Language& Language::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Language_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsLanguage();
   return *internal_default_instance();
 }
 
+Language* Language::New(::google::protobuf::Arena* arena) const {
+  Language* n = new Language;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Language::Clear() {
 // @@protoc_insertion_point(message_clear_start:pb.Language)
@@ -8227,74 +5785,21 @@ void Language::Clear() {
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Language::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Language*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.Language.Language language = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_language(static_cast<::pb::Language_Language>(val));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // .pb.Language.Script script = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
-        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_script(static_cast<::pb::Language_Script>(val));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // .pb.Location.Country region = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
-        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_region(static_cast<::pb::Location_Country>(val));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Language::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Language)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // .pb.Language.Language language = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
-          int value = 0;
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                  input, &value)));
@@ -8307,8 +5812,9 @@ bool Language::MergePartialFromCodedStream(
 
       // .pb.Language.Script script = 2;
       case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
-          int value = 0;
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                  input, &value)));
@@ -8321,8 +5827,9 @@ bool Language::MergePartialFromCodedStream(
 
       // .pb.Location.Country region = 3;
       case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
-          int value = 0;
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                  input, &value)));
@@ -8352,7 +5859,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Language::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -8378,15 +5884,16 @@ void Language::SerializeWithCachedSizes(
       3, this->region(), output);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Language)
 }
 
 ::google::protobuf::uint8* Language::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Language)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -8409,9 +5916,9 @@ void Language::SerializeWithCachedSizes(
       3, this->region(), target);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Language)
   return target;
@@ -8421,15 +5928,11 @@ size_t Language::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Language)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
   // .pb.Language.Language language = 1;
   if (this->language() != 0) {
     total_size += 1 +
@@ -8449,7 +5952,9 @@ size_t Language::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -8457,9 +5962,9 @@ void Language::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Language)
   GOOGLE_DCHECK_NE(&from, this);
   const Language* source =
-      ::google::protobuf::DynamicCastToGenerated<Language>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Language>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Language)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -8510,15 +6015,16 @@ void Language::Swap(Language* other) {
 }
 void Language::InternalSwap(Language* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(language_, other->language_);
   swap(script_, other->script_);
   swap(region_, other->region_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Language::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
@@ -8526,10 +6032,6 @@ void Language::InternalSwap(Language* other) {
 
 void Location::InitAsDefaultInstance() {
 }
-class Location::HasBitSetters {
- public:
-};
-
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Location::kCountryFieldNumber;
 const int Location::kStateFieldNumber;
@@ -8540,13 +6042,17 @@ const int Location::kLongitudeFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Location::Location()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_claim_2eproto::InitDefaultsLocation();
+  }
   SharedCtor();
   // @@protoc_insertion_point(constructor:pb.Location)
 }
 Location::Location(const Location& from)
   : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   state_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (from.state().size() > 0) {
@@ -8567,14 +6073,13 @@ Location::Location(const Location& from)
 }
 
 void Location::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Location_claim_2eproto.base);
   state_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   city_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   code_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   ::memset(&country_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&longitude_) -
       reinterpret_cast<char*>(&country_)) + sizeof(longitude_));
+  _cached_size_ = 0;
 }
 
 Location::~Location() {
@@ -8589,13 +6094,27 @@ void Location::SharedDtor() {
 }
 
 void Location::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
+const ::google::protobuf::Descriptor* Location::descriptor() {
+  ::protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
 const Location& Location::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Location_claim_2eproto.base);
+  ::protobuf_claim_2eproto::InitDefaultsLocation();
   return *internal_default_instance();
 }
 
+Location* Location::New(::google::protobuf::Arena* arena) const {
+  Location* n = new Location;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
 
 void Location::Clear() {
 // @@protoc_insertion_point(message_clear_start:pb.Location)
@@ -8612,127 +6131,21 @@ void Location::Clear() {
   _internal_metadata_.Clear();
 }
 
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Location::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Location*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.Location.Country country = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_country(static_cast<::pb::Location_Country>(val));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // string state = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Location.state");
-        object = msg->mutable_state();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string city = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Location.city");
-        object = msg->mutable_city();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string code = 4;
-      case 4: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Location.code");
-        object = msg->mutable_code();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // sint32 latitude = 5;
-      case 5: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
-        msg->set_latitude(::google::protobuf::internal::ReadVarintZigZag32(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // sint32 longitude = 6;
-      case 6: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
-        msg->set_longitude(::google::protobuf::internal::ReadVarintZigZag32(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 bool Location::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:pb.Location)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // .pb.Location.Country country = 1;
       case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
-          int value = 0;
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                  input, &value)));
@@ -8745,7 +6158,8 @@ bool Location::MergePartialFromCodedStream(
 
       // string state = 2;
       case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_state()));
           DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
@@ -8760,7 +6174,8 @@ bool Location::MergePartialFromCodedStream(
 
       // string city = 3;
       case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_city()));
           DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
@@ -8775,7 +6190,8 @@ bool Location::MergePartialFromCodedStream(
 
       // string code = 4;
       case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                 input, this->mutable_code()));
           DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
@@ -8790,7 +6206,8 @@ bool Location::MergePartialFromCodedStream(
 
       // sint32 latitude = 5;
       case 5: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
@@ -8803,7 +6220,8 @@ bool Location::MergePartialFromCodedStream(
 
       // sint32 longitude = 6;
       case 6: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
 
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
@@ -8833,7 +6251,6 @@ failure:
   return false;
 #undef DO_
 }
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
 
 void Location::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
@@ -8887,15 +6304,16 @@ void Location::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::WriteSInt32(6, this->longitude(), output);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
   // @@protoc_insertion_point(serialize_end:pb.Location)
 }
 
 ::google::protobuf::uint8* Location::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
   // @@protoc_insertion_point(serialize_to_array_start:pb.Location)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -8949,9 +6367,9 @@ void Location::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormatLite::WriteSInt32ToArray(6, this->longitude(), target);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
   // @@protoc_insertion_point(serialize_to_array_end:pb.Location)
   return target;
@@ -8961,15 +6379,11 @@ size_t Location::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:pb.Location)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     total_size +=
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
   // string state = 2;
   if (this->state().size() > 0) {
     total_size += 1 +
@@ -9012,7 +6426,9 @@ size_t Location::ByteSizeLong() const {
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
@@ -9020,9 +6436,9 @@ void Location::MergeFrom(const ::google::protobuf::Message& from) {
 // @@protoc_insertion_point(generalized_merge_from_start:pb.Location)
   GOOGLE_DCHECK_NE(&from, this);
   const Location* source =
-      ::google::protobuf::DynamicCastToGenerated<Location>(
+      ::google::protobuf::internal::DynamicCastToGenerated<const Location>(
           &from);
-  if (source == nullptr) {
+  if (source == NULL) {
   // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Location)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
@@ -9085,69 +6501,23 @@ void Location::Swap(Location* other) {
 }
 void Location::InternalSwap(Location* other) {
   using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  state_.Swap(&other->state_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  city_.Swap(&other->city_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  code_.Swap(&other->code_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
+  state_.Swap(&other->state_);
+  city_.Swap(&other->city_);
+  code_.Swap(&other->code_);
   swap(country_, other->country_);
   swap(latitude_, other->latitude_);
   swap(longitude_, other->longitude_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
 }
 
 ::google::protobuf::Metadata Location::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_claim_2eproto);
-  return ::file_level_metadata_claim_2eproto[kIndexInFileMessages];
+  protobuf_claim_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_claim_2eproto::file_level_metadata[kIndexInFileMessages];
 }
 
 
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace pb
-namespace google {
-namespace protobuf {
-template<> PROTOBUF_NOINLINE ::pb::Claim* Arena::CreateMaybeMessage< ::pb::Claim >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Claim >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Stream* Arena::CreateMaybeMessage< ::pb::Stream >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Stream >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Channel* Arena::CreateMaybeMessage< ::pb::Channel >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Channel >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::ClaimReference* Arena::CreateMaybeMessage< ::pb::ClaimReference >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::ClaimReference >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::ClaimList* Arena::CreateMaybeMessage< ::pb::ClaimList >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::ClaimList >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Source* Arena::CreateMaybeMessage< ::pb::Source >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Source >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Fee* Arena::CreateMaybeMessage< ::pb::Fee >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Fee >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Image* Arena::CreateMaybeMessage< ::pb::Image >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Image >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Video* Arena::CreateMaybeMessage< ::pb::Video >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Video >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Audio* Arena::CreateMaybeMessage< ::pb::Audio >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Audio >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Software* Arena::CreateMaybeMessage< ::pb::Software >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Software >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Language* Arena::CreateMaybeMessage< ::pb::Language >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Language >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Location* Arena::CreateMaybeMessage< ::pb::Location >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Location >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
 
 // @@protoc_insertion_point(global_scope)
-#include <google/protobuf/port_undef.inc>
diff --git a/v2/cpp/claim.pb.h b/v2/cpp/claim.pb.h
index 9530d88..def7e2c 100644
--- a/v2/cpp/claim.pb.h
+++ b/v2/cpp/claim.pb.h
@@ -1,31 +1,29 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: claim.proto
 
-#ifndef PROTOBUF_INCLUDED_claim_2eproto
-#define PROTOBUF_INCLUDED_claim_2eproto
+#ifndef PROTOBUF_claim_2eproto__INCLUDED
+#define PROTOBUF_claim_2eproto__INCLUDED
 
-#include <limits>
 #include <string>
 
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3007000
+#include <google/protobuf/stubs/common.h>
+
+#if GOOGLE_PROTOBUF_VERSION < 3005000
 #error This file was generated by a newer version of protoc which is
-#error incompatible with your Protocol Buffer headers. Please update
+#error incompatible with your Protocol Buffer headers.  Please update
 #error your headers.
 #endif
-#if 3007000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3005001 < 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 incompatible with your Protocol Buffer headers.  Please
 #error regenerate this file with a newer version of protoc.
 #endif
 
-#include <google/protobuf/port_undef.inc>
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/arena.h>
 #include <google/protobuf/arenastring.h>
 #include <google/protobuf/generated_message_table_driven.h>
 #include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
 #include <google/protobuf/metadata.h>
 #include <google/protobuf/message.h>
 #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
@@ -33,22 +31,51 @@
 #include <google/protobuf/generated_enum_reflection.h>
 #include <google/protobuf/unknown_field_set.h>
 // @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_claim_2eproto
 
+namespace protobuf_claim_2eproto {
 // Internal implementation detail -- do not use these members.
-struct TableStruct_claim_2eproto {
-  static const ::google::protobuf::internal::ParseTableField entries[]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[13]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
+struct TableStruct {
+  static const ::google::protobuf::internal::ParseTableField entries[];
+  static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
+  static const ::google::protobuf::internal::ParseTable schema[10];
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
   static const ::google::protobuf::uint32 offsets[];
 };
-void AddDescriptors_claim_2eproto();
+void AddDescriptors();
+void InitDefaultsClaimImpl();
+void InitDefaultsClaim();
+void InitDefaultsChannelImpl();
+void InitDefaultsChannel();
+void InitDefaultsStreamImpl();
+void InitDefaultsStream();
+void InitDefaultsFeeImpl();
+void InitDefaultsFee();
+void InitDefaultsFileImpl();
+void InitDefaultsFile();
+void InitDefaultsImageImpl();
+void InitDefaultsImage();
+void InitDefaultsVideoImpl();
+void InitDefaultsVideo();
+void InitDefaultsAudioImpl();
+void InitDefaultsAudio();
+void InitDefaultsLanguageImpl();
+void InitDefaultsLanguage();
+void InitDefaultsLocationImpl();
+void InitDefaultsLocation();
+inline void InitDefaults() {
+  InitDefaultsClaim();
+  InitDefaultsChannel();
+  InitDefaultsStream();
+  InitDefaultsFee();
+  InitDefaultsFile();
+  InitDefaultsImage();
+  InitDefaultsVideo();
+  InitDefaultsAudio();
+  InitDefaultsLanguage();
+  InitDefaultsLocation();
+}
+}  // namespace protobuf_claim_2eproto
 namespace pb {
 class Audio;
 class AudioDefaultTypeInternal;
@@ -59,15 +86,12 @@ extern ChannelDefaultTypeInternal _Channel_default_instance_;
 class Claim;
 class ClaimDefaultTypeInternal;
 extern ClaimDefaultTypeInternal _Claim_default_instance_;
-class ClaimList;
-class ClaimListDefaultTypeInternal;
-extern ClaimListDefaultTypeInternal _ClaimList_default_instance_;
-class ClaimReference;
-class ClaimReferenceDefaultTypeInternal;
-extern ClaimReferenceDefaultTypeInternal _ClaimReference_default_instance_;
 class Fee;
 class FeeDefaultTypeInternal;
 extern FeeDefaultTypeInternal _Fee_default_instance_;
+class File;
+class FileDefaultTypeInternal;
+extern FileDefaultTypeInternal _File_default_instance_;
 class Image;
 class ImageDefaultTypeInternal;
 extern ImageDefaultTypeInternal _Image_default_instance_;
@@ -77,12 +101,6 @@ extern LanguageDefaultTypeInternal _Language_default_instance_;
 class Location;
 class LocationDefaultTypeInternal;
 extern LocationDefaultTypeInternal _Location_default_instance_;
-class Software;
-class SoftwareDefaultTypeInternal;
-extern SoftwareDefaultTypeInternal _Software_default_instance_;
-class Source;
-class SourceDefaultTypeInternal;
-extern SourceDefaultTypeInternal _Source_default_instance_;
 class Stream;
 class StreamDefaultTypeInternal;
 extern StreamDefaultTypeInternal _Stream_default_instance_;
@@ -90,53 +108,15 @@ class Video;
 class VideoDefaultTypeInternal;
 extern VideoDefaultTypeInternal _Video_default_instance_;
 }  // namespace pb
-namespace google {
-namespace protobuf {
-template<> ::pb::Audio* Arena::CreateMaybeMessage<::pb::Audio>(Arena*);
-template<> ::pb::Channel* Arena::CreateMaybeMessage<::pb::Channel>(Arena*);
-template<> ::pb::Claim* Arena::CreateMaybeMessage<::pb::Claim>(Arena*);
-template<> ::pb::ClaimList* Arena::CreateMaybeMessage<::pb::ClaimList>(Arena*);
-template<> ::pb::ClaimReference* Arena::CreateMaybeMessage<::pb::ClaimReference>(Arena*);
-template<> ::pb::Fee* Arena::CreateMaybeMessage<::pb::Fee>(Arena*);
-template<> ::pb::Image* Arena::CreateMaybeMessage<::pb::Image>(Arena*);
-template<> ::pb::Language* Arena::CreateMaybeMessage<::pb::Language>(Arena*);
-template<> ::pb::Location* Arena::CreateMaybeMessage<::pb::Location>(Arena*);
-template<> ::pb::Software* Arena::CreateMaybeMessage<::pb::Software>(Arena*);
-template<> ::pb::Source* Arena::CreateMaybeMessage<::pb::Source>(Arena*);
-template<> ::pb::Stream* Arena::CreateMaybeMessage<::pb::Stream>(Arena*);
-template<> ::pb::Video* Arena::CreateMaybeMessage<::pb::Video>(Arena*);
-}  // namespace protobuf
-}  // namespace google
 namespace pb {
 
-enum ClaimList_ListType {
-  ClaimList_ListType_COLLECTION = 0,
-  ClaimList_ListType_DERIVATION = 2,
-  ClaimList_ListType_ClaimList_ListType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  ClaimList_ListType_ClaimList_ListType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
-};
-bool ClaimList_ListType_IsValid(int value);
-const ClaimList_ListType ClaimList_ListType_ListType_MIN = ClaimList_ListType_COLLECTION;
-const ClaimList_ListType ClaimList_ListType_ListType_MAX = ClaimList_ListType_DERIVATION;
-const int ClaimList_ListType_ListType_ARRAYSIZE = ClaimList_ListType_ListType_MAX + 1;
-
-const ::google::protobuf::EnumDescriptor* ClaimList_ListType_descriptor();
-inline const ::std::string& ClaimList_ListType_Name(ClaimList_ListType value) {
-  return ::google::protobuf::internal::NameOfEnum(
-    ClaimList_ListType_descriptor(), value);
-}
-inline bool ClaimList_ListType_Parse(
-    const ::std::string& name, ClaimList_ListType* value) {
-  return ::google::protobuf::internal::ParseNamedEnum<ClaimList_ListType>(
-    ClaimList_ListType_descriptor(), name, value);
-}
 enum Fee_Currency {
   Fee_Currency_UNKNOWN_CURRENCY = 0,
   Fee_Currency_LBC = 1,
   Fee_Currency_BTC = 2,
   Fee_Currency_USD = 3,
-  Fee_Currency_Fee_Currency_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  Fee_Currency_Fee_Currency_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+  Fee_Currency_Fee_Currency_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
+  Fee_Currency_Fee_Currency_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
 };
 bool Fee_Currency_IsValid(int value);
 const Fee_Currency Fee_Currency_Currency_MIN = Fee_Currency_UNKNOWN_CURRENCY;
@@ -153,32 +133,6 @@ inline bool Fee_Currency_Parse(
   return ::google::protobuf::internal::ParseNamedEnum<Fee_Currency>(
     Fee_Currency_descriptor(), name, value);
 }
-enum Software_OS {
-  Software_OS_UNKNOWN_OS = 0,
-  Software_OS_ANY = 1,
-  Software_OS_LINUX = 2,
-  Software_OS_WINDOWS = 3,
-  Software_OS_MAC = 4,
-  Software_OS_ANDROID = 5,
-  Software_OS_IOS = 6,
-  Software_OS_Software_OS_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  Software_OS_Software_OS_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
-};
-bool Software_OS_IsValid(int value);
-const Software_OS Software_OS_OS_MIN = Software_OS_UNKNOWN_OS;
-const Software_OS Software_OS_OS_MAX = Software_OS_IOS;
-const int Software_OS_OS_ARRAYSIZE = Software_OS_OS_MAX + 1;
-
-const ::google::protobuf::EnumDescriptor* Software_OS_descriptor();
-inline const ::std::string& Software_OS_Name(Software_OS value) {
-  return ::google::protobuf::internal::NameOfEnum(
-    Software_OS_descriptor(), value);
-}
-inline bool Software_OS_Parse(
-    const ::std::string& name, Software_OS* value) {
-  return ::google::protobuf::internal::ParseNamedEnum<Software_OS>(
-    Software_OS_descriptor(), name, value);
-}
 enum Language_Language {
   Language_Language_UNKNOWN_LANGUAGE = 0,
   Language_Language_en = 1,
@@ -365,8 +319,8 @@ enum Language_Language {
   Language_Language_za = 182,
   Language_Language_zh = 183,
   Language_Language_zu = 184,
-  Language_Language_Language_Language_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  Language_Language_Language_Language_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+  Language_Language_Language_Language_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
+  Language_Language_Language_Language_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
 };
 bool Language_Language_IsValid(int value);
 const Language_Language Language_Language_Language_MIN = Language_Language_UNKNOWN_LANGUAGE;
@@ -584,8 +538,8 @@ enum Language_Script {
   Language_Script_Zxxx = 197,
   Language_Script_Zyyy = 198,
   Language_Script_Zzzz = 199,
-  Language_Script_Language_Script_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  Language_Script_Language_Script_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+  Language_Script_Language_Script_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
+  Language_Script_Language_Script_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
 };
 bool Language_Script_IsValid(int value);
 const Language_Script Language_Script_Script_MIN = Language_Script_UNKNOWN_SCRIPT;
@@ -853,292 +807,12 @@ enum Location_Country {
   Location_Country_YE = 247,
   Location_Country_ZM = 248,
   Location_Country_ZW = 249,
-  Location_Country_R001 = 250,
-  Location_Country_R002 = 251,
-  Location_Country_R015 = 252,
-  Location_Country_R012 = 253,
-  Location_Country_R818 = 254,
-  Location_Country_R434 = 255,
-  Location_Country_R504 = 256,
-  Location_Country_R729 = 257,
-  Location_Country_R788 = 258,
-  Location_Country_R732 = 259,
-  Location_Country_R202 = 260,
-  Location_Country_R014 = 261,
-  Location_Country_R086 = 262,
-  Location_Country_R108 = 263,
-  Location_Country_R174 = 264,
-  Location_Country_R262 = 265,
-  Location_Country_R232 = 266,
-  Location_Country_R231 = 267,
-  Location_Country_R260 = 268,
-  Location_Country_R404 = 269,
-  Location_Country_R450 = 270,
-  Location_Country_R454 = 271,
-  Location_Country_R480 = 272,
-  Location_Country_R175 = 273,
-  Location_Country_R508 = 274,
-  Location_Country_R638 = 275,
-  Location_Country_R646 = 276,
-  Location_Country_R690 = 277,
-  Location_Country_R706 = 278,
-  Location_Country_R728 = 279,
-  Location_Country_R800 = 280,
-  Location_Country_R834 = 281,
-  Location_Country_R894 = 282,
-  Location_Country_R716 = 283,
-  Location_Country_R017 = 284,
-  Location_Country_R024 = 285,
-  Location_Country_R120 = 286,
-  Location_Country_R140 = 287,
-  Location_Country_R148 = 288,
-  Location_Country_R178 = 289,
-  Location_Country_R180 = 290,
-  Location_Country_R226 = 291,
-  Location_Country_R266 = 292,
-  Location_Country_R678 = 293,
-  Location_Country_R018 = 294,
-  Location_Country_R072 = 295,
-  Location_Country_R748 = 296,
-  Location_Country_R426 = 297,
-  Location_Country_R516 = 298,
-  Location_Country_R710 = 299,
-  Location_Country_R011 = 300,
-  Location_Country_R204 = 301,
-  Location_Country_R854 = 302,
-  Location_Country_R132 = 303,
-  Location_Country_R384 = 304,
-  Location_Country_R270 = 305,
-  Location_Country_R288 = 306,
-  Location_Country_R324 = 307,
-  Location_Country_R624 = 308,
-  Location_Country_R430 = 309,
-  Location_Country_R466 = 310,
-  Location_Country_R478 = 311,
-  Location_Country_R562 = 312,
-  Location_Country_R566 = 313,
-  Location_Country_R654 = 314,
-  Location_Country_R686 = 315,
-  Location_Country_R694 = 316,
-  Location_Country_R768 = 317,
-  Location_Country_R019 = 318,
-  Location_Country_R419 = 319,
-  Location_Country_R029 = 320,
-  Location_Country_R660 = 321,
-  Location_Country_R028 = 322,
-  Location_Country_R533 = 323,
-  Location_Country_R044 = 324,
-  Location_Country_R052 = 325,
-  Location_Country_R535 = 326,
-  Location_Country_R092 = 327,
-  Location_Country_R136 = 328,
-  Location_Country_R192 = 329,
-  Location_Country_R531 = 330,
-  Location_Country_R212 = 331,
-  Location_Country_R214 = 332,
-  Location_Country_R308 = 333,
-  Location_Country_R312 = 334,
-  Location_Country_R332 = 335,
-  Location_Country_R388 = 336,
-  Location_Country_R474 = 337,
-  Location_Country_R500 = 338,
-  Location_Country_R630 = 339,
-  Location_Country_R652 = 340,
-  Location_Country_R659 = 341,
-  Location_Country_R662 = 342,
-  Location_Country_R663 = 343,
-  Location_Country_R670 = 344,
-  Location_Country_R534 = 345,
-  Location_Country_R780 = 346,
-  Location_Country_R796 = 347,
-  Location_Country_R850 = 348,
-  Location_Country_R013 = 349,
-  Location_Country_R084 = 350,
-  Location_Country_R188 = 351,
-  Location_Country_R222 = 352,
-  Location_Country_R320 = 353,
-  Location_Country_R340 = 354,
-  Location_Country_R484 = 355,
-  Location_Country_R558 = 356,
-  Location_Country_R591 = 357,
-  Location_Country_R005 = 358,
-  Location_Country_R032 = 359,
-  Location_Country_R068 = 360,
-  Location_Country_R074 = 361,
-  Location_Country_R076 = 362,
-  Location_Country_R152 = 363,
-  Location_Country_R170 = 364,
-  Location_Country_R218 = 365,
-  Location_Country_R238 = 366,
-  Location_Country_R254 = 367,
-  Location_Country_R328 = 368,
-  Location_Country_R600 = 369,
-  Location_Country_R604 = 370,
-  Location_Country_R239 = 371,
-  Location_Country_R740 = 372,
-  Location_Country_R858 = 373,
-  Location_Country_R862 = 374,
-  Location_Country_R021 = 375,
-  Location_Country_R060 = 376,
-  Location_Country_R124 = 377,
-  Location_Country_R304 = 378,
-  Location_Country_R666 = 379,
-  Location_Country_R840 = 380,
-  Location_Country_R010 = 381,
-  Location_Country_R142 = 382,
-  Location_Country_R143 = 383,
-  Location_Country_R398 = 384,
-  Location_Country_R417 = 385,
-  Location_Country_R762 = 386,
-  Location_Country_R795 = 387,
-  Location_Country_R860 = 388,
-  Location_Country_R030 = 389,
-  Location_Country_R156 = 390,
-  Location_Country_R344 = 391,
-  Location_Country_R446 = 392,
-  Location_Country_R408 = 393,
-  Location_Country_R392 = 394,
-  Location_Country_R496 = 395,
-  Location_Country_R410 = 396,
-  Location_Country_R035 = 397,
-  Location_Country_R096 = 398,
-  Location_Country_R116 = 399,
-  Location_Country_R360 = 400,
-  Location_Country_R418 = 401,
-  Location_Country_R458 = 402,
-  Location_Country_R104 = 403,
-  Location_Country_R608 = 404,
-  Location_Country_R702 = 405,
-  Location_Country_R764 = 406,
-  Location_Country_R626 = 407,
-  Location_Country_R704 = 408,
-  Location_Country_R034 = 409,
-  Location_Country_R004 = 410,
-  Location_Country_R050 = 411,
-  Location_Country_R064 = 412,
-  Location_Country_R356 = 413,
-  Location_Country_R364 = 414,
-  Location_Country_R462 = 415,
-  Location_Country_R524 = 416,
-  Location_Country_R586 = 417,
-  Location_Country_R144 = 418,
-  Location_Country_R145 = 419,
-  Location_Country_R051 = 420,
-  Location_Country_R031 = 421,
-  Location_Country_R048 = 422,
-  Location_Country_R196 = 423,
-  Location_Country_R268 = 424,
-  Location_Country_R368 = 425,
-  Location_Country_R376 = 426,
-  Location_Country_R400 = 427,
-  Location_Country_R414 = 428,
-  Location_Country_R422 = 429,
-  Location_Country_R512 = 430,
-  Location_Country_R634 = 431,
-  Location_Country_R682 = 432,
-  Location_Country_R275 = 433,
-  Location_Country_R760 = 434,
-  Location_Country_R792 = 435,
-  Location_Country_R784 = 436,
-  Location_Country_R887 = 437,
-  Location_Country_R150 = 438,
-  Location_Country_R151 = 439,
-  Location_Country_R112 = 440,
-  Location_Country_R100 = 441,
-  Location_Country_R203 = 442,
-  Location_Country_R348 = 443,
-  Location_Country_R616 = 444,
-  Location_Country_R498 = 445,
-  Location_Country_R642 = 446,
-  Location_Country_R643 = 447,
-  Location_Country_R703 = 448,
-  Location_Country_R804 = 449,
-  Location_Country_R154 = 450,
-  Location_Country_R248 = 451,
-  Location_Country_R830 = 452,
-  Location_Country_R831 = 453,
-  Location_Country_R832 = 454,
-  Location_Country_R680 = 455,
-  Location_Country_R208 = 456,
-  Location_Country_R233 = 457,
-  Location_Country_R234 = 458,
-  Location_Country_R246 = 459,
-  Location_Country_R352 = 460,
-  Location_Country_R372 = 461,
-  Location_Country_R833 = 462,
-  Location_Country_R428 = 463,
-  Location_Country_R440 = 464,
-  Location_Country_R578 = 465,
-  Location_Country_R744 = 466,
-  Location_Country_R752 = 467,
-  Location_Country_R826 = 468,
-  Location_Country_R039 = 469,
-  Location_Country_R008 = 470,
-  Location_Country_R020 = 471,
-  Location_Country_R070 = 472,
-  Location_Country_R191 = 473,
-  Location_Country_R292 = 474,
-  Location_Country_R300 = 475,
-  Location_Country_R336 = 476,
-  Location_Country_R380 = 477,
-  Location_Country_R470 = 478,
-  Location_Country_R499 = 479,
-  Location_Country_R807 = 480,
-  Location_Country_R620 = 481,
-  Location_Country_R674 = 482,
-  Location_Country_R688 = 483,
-  Location_Country_R705 = 484,
-  Location_Country_R724 = 485,
-  Location_Country_R155 = 486,
-  Location_Country_R040 = 487,
-  Location_Country_R056 = 488,
-  Location_Country_R250 = 489,
-  Location_Country_R276 = 490,
-  Location_Country_R438 = 491,
-  Location_Country_R442 = 492,
-  Location_Country_R492 = 493,
-  Location_Country_R528 = 494,
-  Location_Country_R756 = 495,
-  Location_Country_R009 = 496,
-  Location_Country_R053 = 497,
-  Location_Country_R036 = 498,
-  Location_Country_R162 = 499,
-  Location_Country_R166 = 500,
-  Location_Country_R334 = 501,
-  Location_Country_R554 = 502,
-  Location_Country_R574 = 503,
-  Location_Country_R054 = 504,
-  Location_Country_R242 = 505,
-  Location_Country_R540 = 506,
-  Location_Country_R598 = 507,
-  Location_Country_R090 = 508,
-  Location_Country_R548 = 509,
-  Location_Country_R057 = 510,
-  Location_Country_R316 = 511,
-  Location_Country_R296 = 512,
-  Location_Country_R584 = 513,
-  Location_Country_R583 = 514,
-  Location_Country_R520 = 515,
-  Location_Country_R580 = 516,
-  Location_Country_R585 = 517,
-  Location_Country_R581 = 518,
-  Location_Country_R061 = 519,
-  Location_Country_R016 = 520,
-  Location_Country_R184 = 521,
-  Location_Country_R258 = 522,
-  Location_Country_R570 = 523,
-  Location_Country_R612 = 524,
-  Location_Country_R882 = 525,
-  Location_Country_R772 = 526,
-  Location_Country_R776 = 527,
-  Location_Country_R798 = 528,
-  Location_Country_R876 = 529,
-  Location_Country_Location_Country_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  Location_Country_Location_Country_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+  Location_Country_Location_Country_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
+  Location_Country_Location_Country_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
 };
 bool Location_Country_IsValid(int value);
 const Location_Country Location_Country_Country_MIN = Location_Country_UNKNOWN_COUNTRY;
-const Location_Country Location_Country_Country_MAX = Location_Country_R876;
+const Location_Country Location_Country_Country_MAX = Location_Country_ZW;
 const int Location_Country_Country_ARRAYSIZE = Location_Country_Country_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* Location_Country_descriptor();
@@ -1153,8 +827,7 @@ inline bool Location_Country_Parse(
 }
 // ===================================================================
 
-class Claim final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Claim) */ {
+class Claim : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Claim) */ {
  public:
   Claim();
   virtual ~Claim();
@@ -1180,16 +853,12 @@ class Claim final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Claim& default_instance();
 
   enum TypeCase {
     kStream = 1,
     kChannel = 2,
-    kCollection = 3,
-    kRepost = 4,
     TYPE_NOT_SET = 0,
   };
 
@@ -1198,7 +867,7 @@ class Claim final :
     return reinterpret_cast<const Claim*>(
                &_Claim_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
   void Swap(Claim* other);
@@ -1208,137 +877,44 @@ class Claim final :
 
   // implements Message ----------------------------------------------
 
-  inline Claim* New() const final {
-    return CreateMaybeMessage<Claim>(nullptr);
-  }
+  inline Claim* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Claim* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Claim>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Claim* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Claim& from);
   void MergeFrom(const Claim& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Claim* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
-  // repeated string tags = 11;
-  int tags_size() const;
-  void clear_tags();
-  static const int kTagsFieldNumber = 11;
-  const ::std::string& tags(int index) const;
-  ::std::string* mutable_tags(int index);
-  void set_tags(int index, const ::std::string& value);
-  #if LANG_CXX11
-  void set_tags(int index, ::std::string&& value);
-  #endif
-  void set_tags(int index, const char* value);
-  void set_tags(int index, const char* value, size_t size);
-  ::std::string* add_tags();
-  void add_tags(const ::std::string& value);
-  #if LANG_CXX11
-  void add_tags(::std::string&& value);
-  #endif
-  void add_tags(const char* value);
-  void add_tags(const char* value, size_t size);
-  const ::google::protobuf::RepeatedPtrField<::std::string>& tags() const;
-  ::google::protobuf::RepeatedPtrField<::std::string>* mutable_tags();
-
-  // repeated .pb.Language languages = 12;
-  int languages_size() const;
-  void clear_languages();
-  static const int kLanguagesFieldNumber = 12;
-  ::pb::Language* mutable_languages(int index);
-  ::google::protobuf::RepeatedPtrField< ::pb::Language >*
-      mutable_languages();
-  const ::pb::Language& languages(int index) const;
-  ::pb::Language* add_languages();
-  const ::google::protobuf::RepeatedPtrField< ::pb::Language >&
-      languages() const;
-
-  // repeated .pb.Location locations = 13;
-  int locations_size() const;
-  void clear_locations();
-  static const int kLocationsFieldNumber = 13;
-  ::pb::Location* mutable_locations(int index);
-  ::google::protobuf::RepeatedPtrField< ::pb::Location >*
-      mutable_locations();
-  const ::pb::Location& locations(int index) const;
-  ::pb::Location* add_locations();
-  const ::google::protobuf::RepeatedPtrField< ::pb::Location >&
-      locations() const;
-
-  // string title = 8;
-  void clear_title();
-  static const int kTitleFieldNumber = 8;
-  const ::std::string& title() const;
-  void set_title(const ::std::string& value);
-  #if LANG_CXX11
-  void set_title(::std::string&& value);
-  #endif
-  void set_title(const char* value);
-  void set_title(const char* value, size_t size);
-  ::std::string* mutable_title();
-  ::std::string* release_title();
-  void set_allocated_title(::std::string* title);
-
-  // string description = 9;
-  void clear_description();
-  static const int kDescriptionFieldNumber = 9;
-  const ::std::string& description() const;
-  void set_description(const ::std::string& value);
-  #if LANG_CXX11
-  void set_description(::std::string&& value);
-  #endif
-  void set_description(const char* value);
-  void set_description(const char* value, size_t size);
-  ::std::string* mutable_description();
-  ::std::string* release_description();
-  void set_allocated_description(::std::string* description);
-
-  // .pb.Source thumbnail = 10;
-  bool has_thumbnail() const;
-  void clear_thumbnail();
-  static const int kThumbnailFieldNumber = 10;
-  const ::pb::Source& thumbnail() const;
-  ::pb::Source* release_thumbnail();
-  ::pb::Source* mutable_thumbnail();
-  void set_allocated_thumbnail(::pb::Source* thumbnail);
-
   // .pb.Stream stream = 1;
   bool has_stream() const;
   void clear_stream();
@@ -1357,299 +933,31 @@ class Claim final :
   ::pb::Channel* mutable_channel();
   void set_allocated_channel(::pb::Channel* channel);
 
-  // .pb.ClaimList collection = 3;
-  bool has_collection() const;
-  void clear_collection();
-  static const int kCollectionFieldNumber = 3;
-  const ::pb::ClaimList& collection() const;
-  ::pb::ClaimList* release_collection();
-  ::pb::ClaimList* mutable_collection();
-  void set_allocated_collection(::pb::ClaimList* collection);
-
-  // .pb.ClaimReference repost = 4;
-  bool has_repost() const;
-  void clear_repost();
-  static const int kRepostFieldNumber = 4;
-  const ::pb::ClaimReference& repost() const;
-  ::pb::ClaimReference* release_repost();
-  ::pb::ClaimReference* mutable_repost();
-  void set_allocated_repost(::pb::ClaimReference* repost);
-
-  void clear_type();
   TypeCase type_case() const;
   // @@protoc_insertion_point(class_scope:pb.Claim)
  private:
-  class HasBitSetters;
   void set_has_stream();
   void set_has_channel();
-  void set_has_collection();
-  void set_has_repost();
 
   inline bool has_type() const;
+  void clear_type();
   inline void clear_has_type();
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::RepeatedPtrField<::std::string> tags_;
-  ::google::protobuf::RepeatedPtrField< ::pb::Language > languages_;
-  ::google::protobuf::RepeatedPtrField< ::pb::Location > locations_;
-  ::google::protobuf::internal::ArenaStringPtr title_;
-  ::google::protobuf::internal::ArenaStringPtr description_;
-  ::pb::Source* thumbnail_;
   union TypeUnion {
     TypeUnion() {}
     ::pb::Stream* stream_;
     ::pb::Channel* channel_;
-    ::pb::ClaimList* collection_;
-    ::pb::ClaimReference* repost_;
   } type_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  mutable int _cached_size_;
   ::google::protobuf::uint32 _oneof_case_[1];
 
-  friend struct ::TableStruct_claim_2eproto;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsClaimImpl();
 };
 // -------------------------------------------------------------------
 
-class Stream final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Stream) */ {
- public:
-  Stream();
-  virtual ~Stream();
-
-  Stream(const Stream& from);
-
-  inline Stream& operator=(const Stream& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  Stream(Stream&& from) noexcept
-    : Stream() {
-    *this = ::std::move(from);
-  }
-
-  inline Stream& operator=(Stream&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const Stream& default_instance();
-
-  enum TypeCase {
-    kImage = 10,
-    kVideo = 11,
-    kAudio = 12,
-    kSoftware = 13,
-    TYPE_NOT_SET = 0,
-  };
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Stream* internal_default_instance() {
-    return reinterpret_cast<const Stream*>(
-               &_Stream_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    1;
-
-  void Swap(Stream* other);
-  friend void swap(Stream& a, Stream& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline Stream* New() const final {
-    return CreateMaybeMessage<Stream>(nullptr);
-  }
-
-  Stream* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Stream>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const Stream& from);
-  void MergeFrom(const Stream& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(Stream* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  // accessors -------------------------------------------------------
-
-  // string author = 2;
-  void clear_author();
-  static const int kAuthorFieldNumber = 2;
-  const ::std::string& author() const;
-  void set_author(const ::std::string& value);
-  #if LANG_CXX11
-  void set_author(::std::string&& value);
-  #endif
-  void set_author(const char* value);
-  void set_author(const char* value, size_t size);
-  ::std::string* mutable_author();
-  ::std::string* release_author();
-  void set_allocated_author(::std::string* author);
-
-  // string license = 3;
-  void clear_license();
-  static const int kLicenseFieldNumber = 3;
-  const ::std::string& license() const;
-  void set_license(const ::std::string& value);
-  #if LANG_CXX11
-  void set_license(::std::string&& value);
-  #endif
-  void set_license(const char* value);
-  void set_license(const char* value, size_t size);
-  ::std::string* mutable_license();
-  ::std::string* release_license();
-  void set_allocated_license(::std::string* license);
-
-  // string license_url = 4;
-  void clear_license_url();
-  static const int kLicenseUrlFieldNumber = 4;
-  const ::std::string& license_url() const;
-  void set_license_url(const ::std::string& value);
-  #if LANG_CXX11
-  void set_license_url(::std::string&& value);
-  #endif
-  void set_license_url(const char* value);
-  void set_license_url(const char* value, size_t size);
-  ::std::string* mutable_license_url();
-  ::std::string* release_license_url();
-  void set_allocated_license_url(::std::string* license_url);
-
-  // .pb.Source source = 1;
-  bool has_source() const;
-  void clear_source();
-  static const int kSourceFieldNumber = 1;
-  const ::pb::Source& source() const;
-  ::pb::Source* release_source();
-  ::pb::Source* mutable_source();
-  void set_allocated_source(::pb::Source* source);
-
-  // .pb.Fee fee = 6;
-  bool has_fee() const;
-  void clear_fee();
-  static const int kFeeFieldNumber = 6;
-  const ::pb::Fee& fee() const;
-  ::pb::Fee* release_fee();
-  ::pb::Fee* mutable_fee();
-  void set_allocated_fee(::pb::Fee* fee);
-
-  // int64 release_time = 5;
-  void clear_release_time();
-  static const int kReleaseTimeFieldNumber = 5;
-  ::google::protobuf::int64 release_time() const;
-  void set_release_time(::google::protobuf::int64 value);
-
-  // .pb.Image image = 10;
-  bool has_image() const;
-  void clear_image();
-  static const int kImageFieldNumber = 10;
-  const ::pb::Image& image() const;
-  ::pb::Image* release_image();
-  ::pb::Image* mutable_image();
-  void set_allocated_image(::pb::Image* image);
-
-  // .pb.Video video = 11;
-  bool has_video() const;
-  void clear_video();
-  static const int kVideoFieldNumber = 11;
-  const ::pb::Video& video() const;
-  ::pb::Video* release_video();
-  ::pb::Video* mutable_video();
-  void set_allocated_video(::pb::Video* video);
-
-  // .pb.Audio audio = 12;
-  bool has_audio() const;
-  void clear_audio();
-  static const int kAudioFieldNumber = 12;
-  const ::pb::Audio& audio() const;
-  ::pb::Audio* release_audio();
-  ::pb::Audio* mutable_audio();
-  void set_allocated_audio(::pb::Audio* audio);
-
-  // .pb.Software software = 13;
-  bool has_software() const;
-  void clear_software();
-  static const int kSoftwareFieldNumber = 13;
-  const ::pb::Software& software() const;
-  ::pb::Software* release_software();
-  ::pb::Software* mutable_software();
-  void set_allocated_software(::pb::Software* software);
-
-  void clear_type();
-  TypeCase type_case() const;
-  // @@protoc_insertion_point(class_scope:pb.Stream)
- private:
-  class HasBitSetters;
-  void set_has_image();
-  void set_has_video();
-  void set_has_audio();
-  void set_has_software();
-
-  inline bool has_type() const;
-  inline void clear_has_type();
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr author_;
-  ::google::protobuf::internal::ArenaStringPtr license_;
-  ::google::protobuf::internal::ArenaStringPtr license_url_;
-  ::pb::Source* source_;
-  ::pb::Fee* fee_;
-  ::google::protobuf::int64 release_time_;
-  union TypeUnion {
-    TypeUnion() {}
-    ::pb::Image* image_;
-    ::pb::Video* video_;
-    ::pb::Audio* audio_;
-    ::pb::Software* software_;
-  } type_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  ::google::protobuf::uint32 _oneof_case_[1];
-
-  friend struct ::TableStruct_claim_2eproto;
-};
-// -------------------------------------------------------------------
-
-class Channel final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Channel) */ {
+class Channel : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Channel) */ {
  public:
   Channel();
   virtual ~Channel();
@@ -1675,9 +983,7 @@ class Channel final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Channel& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
@@ -1685,8 +991,8 @@ class Channel final :
     return reinterpret_cast<const Channel*>(
                &_Channel_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    2;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    1;
 
   void Swap(Channel* other);
   friend void swap(Channel& a, Channel& b) {
@@ -1695,54 +1001,90 @@ class Channel final :
 
   // implements Message ----------------------------------------------
 
-  inline Channel* New() const final {
-    return CreateMaybeMessage<Channel>(nullptr);
-  }
+  inline Channel* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Channel* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Channel>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Channel* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Channel& from);
   void MergeFrom(const Channel& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Channel* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
+  // repeated string tags = 5;
+  int tags_size() const;
+  void clear_tags();
+  static const int kTagsFieldNumber = 5;
+  const ::std::string& tags(int index) const;
+  ::std::string* mutable_tags(int index);
+  void set_tags(int index, const ::std::string& value);
+  #if LANG_CXX11
+  void set_tags(int index, ::std::string&& value);
+  #endif
+  void set_tags(int index, const char* value);
+  void set_tags(int index, const char* value, size_t size);
+  ::std::string* add_tags();
+  void add_tags(const ::std::string& value);
+  #if LANG_CXX11
+  void add_tags(::std::string&& value);
+  #endif
+  void add_tags(const char* value);
+  void add_tags(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField< ::std::string>& tags() const;
+  ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_tags();
+
+  // repeated .pb.Language languages = 6;
+  int languages_size() const;
+  void clear_languages();
+  static const int kLanguagesFieldNumber = 6;
+  const ::pb::Language& languages(int index) const;
+  ::pb::Language* mutable_languages(int index);
+  ::pb::Language* add_languages();
+  ::google::protobuf::RepeatedPtrField< ::pb::Language >*
+      mutable_languages();
+  const ::google::protobuf::RepeatedPtrField< ::pb::Language >&
+      languages() const;
+
+  // repeated .pb.Location locations = 7;
+  int locations_size() const;
+  void clear_locations();
+  static const int kLocationsFieldNumber = 7;
+  const ::pb::Location& locations(int index) const;
+  ::pb::Location* mutable_locations(int index);
+  ::pb::Location* add_locations();
+  ::google::protobuf::RepeatedPtrField< ::pb::Location >*
+      mutable_locations();
+  const ::google::protobuf::RepeatedPtrField< ::pb::Location >&
+      locations() const;
+
   // bytes public_key = 1;
   void clear_public_key();
   static const int kPublicKeyFieldNumber = 1;
@@ -1757,86 +1099,128 @@ class Channel final :
   ::std::string* release_public_key();
   void set_allocated_public_key(::std::string* public_key);
 
-  // string email = 2;
-  void clear_email();
-  static const int kEmailFieldNumber = 2;
-  const ::std::string& email() const;
-  void set_email(const ::std::string& value);
+  // string title = 2;
+  void clear_title();
+  static const int kTitleFieldNumber = 2;
+  const ::std::string& title() const;
+  void set_title(const ::std::string& value);
   #if LANG_CXX11
-  void set_email(::std::string&& value);
+  void set_title(::std::string&& value);
   #endif
-  void set_email(const char* value);
-  void set_email(const char* value, size_t size);
-  ::std::string* mutable_email();
-  ::std::string* release_email();
-  void set_allocated_email(::std::string* email);
+  void set_title(const char* value);
+  void set_title(const char* value, size_t size);
+  ::std::string* mutable_title();
+  ::std::string* release_title();
+  void set_allocated_title(::std::string* title);
 
-  // string website_url = 3;
-  void clear_website_url();
-  static const int kWebsiteUrlFieldNumber = 3;
-  const ::std::string& website_url() const;
-  void set_website_url(const ::std::string& value);
+  // string description = 3;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 3;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
   #if LANG_CXX11
-  void set_website_url(::std::string&& value);
+  void set_description(::std::string&& value);
   #endif
-  void set_website_url(const char* value);
-  void set_website_url(const char* value, size_t size);
-  ::std::string* mutable_website_url();
-  ::std::string* release_website_url();
-  void set_allocated_website_url(::std::string* website_url);
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
 
-  // .pb.Source cover = 4;
-  bool has_cover() const;
-  void clear_cover();
-  static const int kCoverFieldNumber = 4;
-  const ::pb::Source& cover() const;
-  ::pb::Source* release_cover();
-  ::pb::Source* mutable_cover();
-  void set_allocated_cover(::pb::Source* cover);
+  // string thumbnail_url = 4;
+  void clear_thumbnail_url();
+  static const int kThumbnailUrlFieldNumber = 4;
+  const ::std::string& thumbnail_url() const;
+  void set_thumbnail_url(const ::std::string& value);
+  #if LANG_CXX11
+  void set_thumbnail_url(::std::string&& value);
+  #endif
+  void set_thumbnail_url(const char* value);
+  void set_thumbnail_url(const char* value, size_t size);
+  ::std::string* mutable_thumbnail_url();
+  ::std::string* release_thumbnail_url();
+  void set_allocated_thumbnail_url(::std::string* thumbnail_url);
 
-  // .pb.ClaimList featured = 5;
-  bool has_featured() const;
-  void clear_featured();
-  static const int kFeaturedFieldNumber = 5;
-  const ::pb::ClaimList& featured() const;
-  ::pb::ClaimList* release_featured();
-  ::pb::ClaimList* mutable_featured();
-  void set_allocated_featured(::pb::ClaimList* featured);
+  // string contact_email = 8;
+  void clear_contact_email();
+  static const int kContactEmailFieldNumber = 8;
+  const ::std::string& contact_email() const;
+  void set_contact_email(const ::std::string& value);
+  #if LANG_CXX11
+  void set_contact_email(::std::string&& value);
+  #endif
+  void set_contact_email(const char* value);
+  void set_contact_email(const char* value, size_t size);
+  ::std::string* mutable_contact_email();
+  ::std::string* release_contact_email();
+  void set_allocated_contact_email(::std::string* contact_email);
+
+  // string homepage_url = 9;
+  void clear_homepage_url();
+  static const int kHomepageUrlFieldNumber = 9;
+  const ::std::string& homepage_url() const;
+  void set_homepage_url(const ::std::string& value);
+  #if LANG_CXX11
+  void set_homepage_url(::std::string&& value);
+  #endif
+  void set_homepage_url(const char* value);
+  void set_homepage_url(const char* value, size_t size);
+  ::std::string* mutable_homepage_url();
+  ::std::string* release_homepage_url();
+  void set_allocated_homepage_url(::std::string* homepage_url);
+
+  // string cover_url = 10;
+  void clear_cover_url();
+  static const int kCoverUrlFieldNumber = 10;
+  const ::std::string& cover_url() const;
+  void set_cover_url(const ::std::string& value);
+  #if LANG_CXX11
+  void set_cover_url(::std::string&& value);
+  #endif
+  void set_cover_url(const char* value);
+  void set_cover_url(const char* value, size_t size);
+  ::std::string* mutable_cover_url();
+  ::std::string* release_cover_url();
+  void set_allocated_cover_url(::std::string* cover_url);
 
   // @@protoc_insertion_point(class_scope:pb.Channel)
  private:
-  class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedPtrField< ::std::string> tags_;
+  ::google::protobuf::RepeatedPtrField< ::pb::Language > languages_;
+  ::google::protobuf::RepeatedPtrField< ::pb::Location > locations_;
   ::google::protobuf::internal::ArenaStringPtr public_key_;
-  ::google::protobuf::internal::ArenaStringPtr email_;
-  ::google::protobuf::internal::ArenaStringPtr website_url_;
-  ::pb::Source* cover_;
-  ::pb::ClaimList* featured_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  ::google::protobuf::internal::ArenaStringPtr title_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  ::google::protobuf::internal::ArenaStringPtr thumbnail_url_;
+  ::google::protobuf::internal::ArenaStringPtr contact_email_;
+  ::google::protobuf::internal::ArenaStringPtr homepage_url_;
+  ::google::protobuf::internal::ArenaStringPtr cover_url_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsChannelImpl();
 };
 // -------------------------------------------------------------------
 
-class ClaimReference final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.ClaimReference) */ {
+class Stream : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Stream) */ {
  public:
-  ClaimReference();
-  virtual ~ClaimReference();
+  Stream();
+  virtual ~Stream();
 
-  ClaimReference(const ClaimReference& from);
+  Stream(const Stream& from);
 
-  inline ClaimReference& operator=(const ClaimReference& from) {
+  inline Stream& operator=(const Stream& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  ClaimReference(ClaimReference&& from) noexcept
-    : ClaimReference() {
+  Stream(Stream&& from) noexcept
+    : Stream() {
     *this = ::std::move(from);
   }
 
-  inline ClaimReference& operator=(ClaimReference&& from) noexcept {
+  inline Stream& operator=(Stream&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -1845,404 +1229,118 @@ class ClaimReference final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const ClaimReference& default_instance();
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const Stream& default_instance();
+
+  enum TypeCase {
+    kImage = 16,
+    kVideo = 17,
+    kAudio = 18,
+    TYPE_NOT_SET = 0,
+  };
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const ClaimReference* internal_default_instance() {
-    return reinterpret_cast<const ClaimReference*>(
-               &_ClaimReference_default_instance_);
+  static inline const Stream* internal_default_instance() {
+    return reinterpret_cast<const Stream*>(
+               &_Stream_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    3;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    2;
 
-  void Swap(ClaimReference* other);
-  friend void swap(ClaimReference& a, ClaimReference& b) {
+  void Swap(Stream* other);
+  friend void swap(Stream& a, Stream& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline ClaimReference* New() const final {
-    return CreateMaybeMessage<ClaimReference>(nullptr);
-  }
+  inline Stream* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  ClaimReference* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<ClaimReference>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const ClaimReference& from);
-  void MergeFrom(const ClaimReference& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  Stream* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const Stream& from);
+  void MergeFrom(const Stream& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(ClaimReference* other);
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(Stream* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
-  // bytes claim_hash = 1;
-  void clear_claim_hash();
-  static const int kClaimHashFieldNumber = 1;
-  const ::std::string& claim_hash() const;
-  void set_claim_hash(const ::std::string& value);
+  // repeated string tags = 5;
+  int tags_size() const;
+  void clear_tags();
+  static const int kTagsFieldNumber = 5;
+  const ::std::string& tags(int index) const;
+  ::std::string* mutable_tags(int index);
+  void set_tags(int index, const ::std::string& value);
   #if LANG_CXX11
-  void set_claim_hash(::std::string&& value);
+  void set_tags(int index, ::std::string&& value);
   #endif
-  void set_claim_hash(const char* value);
-  void set_claim_hash(const void* value, size_t size);
-  ::std::string* mutable_claim_hash();
-  ::std::string* release_claim_hash();
-  void set_allocated_claim_hash(::std::string* claim_hash);
-
-  // @@protoc_insertion_point(class_scope:pb.ClaimReference)
- private:
-  class HasBitSetters;
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr claim_hash_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
-};
-// -------------------------------------------------------------------
-
-class ClaimList final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.ClaimList) */ {
- public:
-  ClaimList();
-  virtual ~ClaimList();
-
-  ClaimList(const ClaimList& from);
-
-  inline ClaimList& operator=(const ClaimList& from) {
-    CopyFrom(from);
-    return *this;
-  }
+  void set_tags(int index, const char* value);
+  void set_tags(int index, const char* value, size_t size);
+  ::std::string* add_tags();
+  void add_tags(const ::std::string& value);
   #if LANG_CXX11
-  ClaimList(ClaimList&& from) noexcept
-    : ClaimList() {
-    *this = ::std::move(from);
-  }
-
-  inline ClaimList& operator=(ClaimList&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
+  void add_tags(::std::string&& value);
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const ClaimList& default_instance();
+  void add_tags(const char* value);
+  void add_tags(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField< ::std::string>& tags() const;
+  ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_tags();
 
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const ClaimList* internal_default_instance() {
-    return reinterpret_cast<const ClaimList*>(
-               &_ClaimList_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    4;
+  // repeated .pb.Language languages = 6;
+  int languages_size() const;
+  void clear_languages();
+  static const int kLanguagesFieldNumber = 6;
+  const ::pb::Language& languages(int index) const;
+  ::pb::Language* mutable_languages(int index);
+  ::pb::Language* add_languages();
+  ::google::protobuf::RepeatedPtrField< ::pb::Language >*
+      mutable_languages();
+  const ::google::protobuf::RepeatedPtrField< ::pb::Language >&
+      languages() const;
 
-  void Swap(ClaimList* other);
-  friend void swap(ClaimList& a, ClaimList& b) {
-    a.Swap(&b);
-  }
+  // repeated .pb.Location locations = 7;
+  int locations_size() const;
+  void clear_locations();
+  static const int kLocationsFieldNumber = 7;
+  const ::pb::Location& locations(int index) const;
+  ::pb::Location* mutable_locations(int index);
+  ::pb::Location* add_locations();
+  ::google::protobuf::RepeatedPtrField< ::pb::Location >*
+      mutable_locations();
+  const ::google::protobuf::RepeatedPtrField< ::pb::Location >&
+      locations() const;
 
-  // implements Message ----------------------------------------------
-
-  inline ClaimList* New() const final {
-    return CreateMaybeMessage<ClaimList>(nullptr);
-  }
-
-  ClaimList* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<ClaimList>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const ClaimList& from);
-  void MergeFrom(const ClaimList& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(ClaimList* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  typedef ClaimList_ListType ListType;
-  static const ListType COLLECTION =
-    ClaimList_ListType_COLLECTION;
-  static const ListType DERIVATION =
-    ClaimList_ListType_DERIVATION;
-  static inline bool ListType_IsValid(int value) {
-    return ClaimList_ListType_IsValid(value);
-  }
-  static const ListType ListType_MIN =
-    ClaimList_ListType_ListType_MIN;
-  static const ListType ListType_MAX =
-    ClaimList_ListType_ListType_MAX;
-  static const int ListType_ARRAYSIZE =
-    ClaimList_ListType_ListType_ARRAYSIZE;
-  static inline const ::google::protobuf::EnumDescriptor*
-  ListType_descriptor() {
-    return ClaimList_ListType_descriptor();
-  }
-  static inline const ::std::string& ListType_Name(ListType value) {
-    return ClaimList_ListType_Name(value);
-  }
-  static inline bool ListType_Parse(const ::std::string& name,
-      ListType* value) {
-    return ClaimList_ListType_Parse(name, value);
-  }
-
-  // accessors -------------------------------------------------------
-
-  // repeated .pb.ClaimReference claim_references = 2;
-  int claim_references_size() const;
-  void clear_claim_references();
-  static const int kClaimReferencesFieldNumber = 2;
-  ::pb::ClaimReference* mutable_claim_references(int index);
-  ::google::protobuf::RepeatedPtrField< ::pb::ClaimReference >*
-      mutable_claim_references();
-  const ::pb::ClaimReference& claim_references(int index) const;
-  ::pb::ClaimReference* add_claim_references();
-  const ::google::protobuf::RepeatedPtrField< ::pb::ClaimReference >&
-      claim_references() const;
-
-  // .pb.ClaimList.ListType list_type = 1;
-  void clear_list_type();
-  static const int kListTypeFieldNumber = 1;
-  ::pb::ClaimList_ListType list_type() const;
-  void set_list_type(::pb::ClaimList_ListType value);
-
-  // @@protoc_insertion_point(class_scope:pb.ClaimList)
- private:
-  class HasBitSetters;
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::RepeatedPtrField< ::pb::ClaimReference > claim_references_;
-  int list_type_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
-};
-// -------------------------------------------------------------------
-
-class Source final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Source) */ {
- public:
-  Source();
-  virtual ~Source();
-
-  Source(const Source& from);
-
-  inline Source& operator=(const Source& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  Source(Source&& from) noexcept
-    : Source() {
-    *this = ::std::move(from);
-  }
-
-  inline Source& operator=(Source&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const Source& default_instance();
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Source* internal_default_instance() {
-    return reinterpret_cast<const Source*>(
-               &_Source_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    5;
-
-  void Swap(Source* other);
-  friend void swap(Source& a, Source& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline Source* New() const final {
-    return CreateMaybeMessage<Source>(nullptr);
-  }
-
-  Source* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Source>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const Source& from);
-  void MergeFrom(const Source& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(Source* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  // accessors -------------------------------------------------------
-
-  // bytes hash = 1;
-  void clear_hash();
-  static const int kHashFieldNumber = 1;
-  const ::std::string& hash() const;
-  void set_hash(const ::std::string& value);
-  #if LANG_CXX11
-  void set_hash(::std::string&& value);
-  #endif
-  void set_hash(const char* value);
-  void set_hash(const void* value, size_t size);
-  ::std::string* mutable_hash();
-  ::std::string* release_hash();
-  void set_allocated_hash(::std::string* hash);
-
-  // string name = 2;
-  void clear_name();
-  static const int kNameFieldNumber = 2;
-  const ::std::string& name() const;
-  void set_name(const ::std::string& value);
-  #if LANG_CXX11
-  void set_name(::std::string&& value);
-  #endif
-  void set_name(const char* value);
-  void set_name(const char* value, size_t size);
-  ::std::string* mutable_name();
-  ::std::string* release_name();
-  void set_allocated_name(::std::string* name);
-
-  // string media_type = 4;
-  void clear_media_type();
-  static const int kMediaTypeFieldNumber = 4;
-  const ::std::string& media_type() const;
-  void set_media_type(const ::std::string& value);
-  #if LANG_CXX11
-  void set_media_type(::std::string&& value);
-  #endif
-  void set_media_type(const char* value);
-  void set_media_type(const char* value, size_t size);
-  ::std::string* mutable_media_type();
-  ::std::string* release_media_type();
-  void set_allocated_media_type(::std::string* media_type);
-
-  // string url = 5;
-  void clear_url();
-  static const int kUrlFieldNumber = 5;
-  const ::std::string& url() const;
-  void set_url(const ::std::string& value);
-  #if LANG_CXX11
-  void set_url(::std::string&& value);
-  #endif
-  void set_url(const char* value);
-  void set_url(const char* value, size_t size);
-  ::std::string* mutable_url();
-  ::std::string* release_url();
-  void set_allocated_url(::std::string* url);
-
-  // bytes sd_hash = 6;
+  // bytes sd_hash = 1;
   void clear_sd_hash();
-  static const int kSdHashFieldNumber = 6;
+  static const int kSdHashFieldNumber = 1;
   const ::std::string& sd_hash() const;
   void set_sd_hash(const ::std::string& value);
   #if LANG_CXX11
@@ -2254,45 +1352,196 @@ class Source final :
   ::std::string* release_sd_hash();
   void set_allocated_sd_hash(::std::string* sd_hash);
 
-  // bytes bt_infohash = 7;
-  void clear_bt_infohash();
-  static const int kBtInfohashFieldNumber = 7;
-  const ::std::string& bt_infohash() const;
-  void set_bt_infohash(const ::std::string& value);
+  // string title = 2;
+  void clear_title();
+  static const int kTitleFieldNumber = 2;
+  const ::std::string& title() const;
+  void set_title(const ::std::string& value);
   #if LANG_CXX11
-  void set_bt_infohash(::std::string&& value);
+  void set_title(::std::string&& value);
   #endif
-  void set_bt_infohash(const char* value);
-  void set_bt_infohash(const void* value, size_t size);
-  ::std::string* mutable_bt_infohash();
-  ::std::string* release_bt_infohash();
-  void set_allocated_bt_infohash(::std::string* bt_infohash);
+  void set_title(const char* value);
+  void set_title(const char* value, size_t size);
+  ::std::string* mutable_title();
+  ::std::string* release_title();
+  void set_allocated_title(::std::string* title);
 
-  // uint64 size = 3;
-  void clear_size();
-  static const int kSizeFieldNumber = 3;
-  ::google::protobuf::uint64 size() const;
-  void set_size(::google::protobuf::uint64 value);
+  // string description = 3;
+  void clear_description();
+  static const int kDescriptionFieldNumber = 3;
+  const ::std::string& description() const;
+  void set_description(const ::std::string& value);
+  #if LANG_CXX11
+  void set_description(::std::string&& value);
+  #endif
+  void set_description(const char* value);
+  void set_description(const char* value, size_t size);
+  ::std::string* mutable_description();
+  ::std::string* release_description();
+  void set_allocated_description(::std::string* description);
 
-  // @@protoc_insertion_point(class_scope:pb.Source)
+  // string thumbnail_url = 4;
+  void clear_thumbnail_url();
+  static const int kThumbnailUrlFieldNumber = 4;
+  const ::std::string& thumbnail_url() const;
+  void set_thumbnail_url(const ::std::string& value);
+  #if LANG_CXX11
+  void set_thumbnail_url(::std::string&& value);
+  #endif
+  void set_thumbnail_url(const char* value);
+  void set_thumbnail_url(const char* value, size_t size);
+  ::std::string* mutable_thumbnail_url();
+  ::std::string* release_thumbnail_url();
+  void set_allocated_thumbnail_url(::std::string* thumbnail_url);
+
+  // string author = 8;
+  void clear_author();
+  static const int kAuthorFieldNumber = 8;
+  const ::std::string& author() const;
+  void set_author(const ::std::string& value);
+  #if LANG_CXX11
+  void set_author(::std::string&& value);
+  #endif
+  void set_author(const char* value);
+  void set_author(const char* value, size_t size);
+  ::std::string* mutable_author();
+  ::std::string* release_author();
+  void set_allocated_author(::std::string* author);
+
+  // string license = 9;
+  void clear_license();
+  static const int kLicenseFieldNumber = 9;
+  const ::std::string& license() const;
+  void set_license(const ::std::string& value);
+  #if LANG_CXX11
+  void set_license(::std::string&& value);
+  #endif
+  void set_license(const char* value);
+  void set_license(const char* value, size_t size);
+  ::std::string* mutable_license();
+  ::std::string* release_license();
+  void set_allocated_license(::std::string* license);
+
+  // string license_url = 10;
+  void clear_license_url();
+  static const int kLicenseUrlFieldNumber = 10;
+  const ::std::string& license_url() const;
+  void set_license_url(const ::std::string& value);
+  #if LANG_CXX11
+  void set_license_url(::std::string&& value);
+  #endif
+  void set_license_url(const char* value);
+  void set_license_url(const char* value, size_t size);
+  ::std::string* mutable_license_url();
+  ::std::string* release_license_url();
+  void set_allocated_license_url(::std::string* license_url);
+
+  // string media_type = 13;
+  void clear_media_type();
+  static const int kMediaTypeFieldNumber = 13;
+  const ::std::string& media_type() const;
+  void set_media_type(const ::std::string& value);
+  #if LANG_CXX11
+  void set_media_type(::std::string&& value);
+  #endif
+  void set_media_type(const char* value);
+  void set_media_type(const char* value, size_t size);
+  ::std::string* mutable_media_type();
+  ::std::string* release_media_type();
+  void set_allocated_media_type(::std::string* media_type);
+
+  // .pb.File file = 14;
+  bool has_file() const;
+  void clear_file();
+  static const int kFileFieldNumber = 14;
+  const ::pb::File& file() const;
+  ::pb::File* release_file();
+  ::pb::File* mutable_file();
+  void set_allocated_file(::pb::File* file);
+
+  // .pb.Fee fee = 15;
+  bool has_fee() const;
+  void clear_fee();
+  static const int kFeeFieldNumber = 15;
+  const ::pb::Fee& fee() const;
+  ::pb::Fee* release_fee();
+  ::pb::Fee* mutable_fee();
+  void set_allocated_fee(::pb::Fee* fee);
+
+  // int64 release_time = 11;
+  void clear_release_time();
+  static const int kReleaseTimeFieldNumber = 11;
+  ::google::protobuf::int64 release_time() const;
+  void set_release_time(::google::protobuf::int64 value);
+
+  // .pb.Image image = 16;
+  bool has_image() const;
+  void clear_image();
+  static const int kImageFieldNumber = 16;
+  const ::pb::Image& image() const;
+  ::pb::Image* release_image();
+  ::pb::Image* mutable_image();
+  void set_allocated_image(::pb::Image* image);
+
+  // .pb.Video video = 17;
+  bool has_video() const;
+  void clear_video();
+  static const int kVideoFieldNumber = 17;
+  const ::pb::Video& video() const;
+  ::pb::Video* release_video();
+  ::pb::Video* mutable_video();
+  void set_allocated_video(::pb::Video* video);
+
+  // .pb.Audio audio = 18;
+  bool has_audio() const;
+  void clear_audio();
+  static const int kAudioFieldNumber = 18;
+  const ::pb::Audio& audio() const;
+  ::pb::Audio* release_audio();
+  ::pb::Audio* mutable_audio();
+  void set_allocated_audio(::pb::Audio* audio);
+
+  TypeCase type_case() const;
+  // @@protoc_insertion_point(class_scope:pb.Stream)
  private:
-  class HasBitSetters;
+  void set_has_image();
+  void set_has_video();
+  void set_has_audio();
+
+  inline bool has_type() const;
+  void clear_type();
+  inline void clear_has_type();
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr hash_;
-  ::google::protobuf::internal::ArenaStringPtr name_;
-  ::google::protobuf::internal::ArenaStringPtr media_type_;
-  ::google::protobuf::internal::ArenaStringPtr url_;
+  ::google::protobuf::RepeatedPtrField< ::std::string> tags_;
+  ::google::protobuf::RepeatedPtrField< ::pb::Language > languages_;
+  ::google::protobuf::RepeatedPtrField< ::pb::Location > locations_;
   ::google::protobuf::internal::ArenaStringPtr sd_hash_;
-  ::google::protobuf::internal::ArenaStringPtr bt_infohash_;
-  ::google::protobuf::uint64 size_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  ::google::protobuf::internal::ArenaStringPtr title_;
+  ::google::protobuf::internal::ArenaStringPtr description_;
+  ::google::protobuf::internal::ArenaStringPtr thumbnail_url_;
+  ::google::protobuf::internal::ArenaStringPtr author_;
+  ::google::protobuf::internal::ArenaStringPtr license_;
+  ::google::protobuf::internal::ArenaStringPtr license_url_;
+  ::google::protobuf::internal::ArenaStringPtr media_type_;
+  ::pb::File* file_;
+  ::pb::Fee* fee_;
+  ::google::protobuf::int64 release_time_;
+  union TypeUnion {
+    TypeUnion() {}
+    ::pb::Image* image_;
+    ::pb::Video* video_;
+    ::pb::Audio* audio_;
+  } type_;
+  mutable int _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsStreamImpl();
 };
 // -------------------------------------------------------------------
 
-class Fee final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Fee) */ {
+class Fee : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Fee) */ {
  public:
   Fee();
   virtual ~Fee();
@@ -2318,9 +1567,7 @@ class Fee final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Fee& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
@@ -2328,8 +1575,8 @@ class Fee final :
     return reinterpret_cast<const Fee*>(
                &_Fee_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    6;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    3;
 
   void Swap(Fee* other);
   friend void swap(Fee& a, Fee& b) {
@@ -2338,49 +1585,39 @@ class Fee final :
 
   // implements Message ----------------------------------------------
 
-  inline Fee* New() const final {
-    return CreateMaybeMessage<Fee>(nullptr);
-  }
+  inline Fee* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Fee* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Fee>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Fee* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Fee& from);
   void MergeFrom(const Fee& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Fee* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -2444,19 +1681,147 @@ class Fee final :
 
   // @@protoc_insertion_point(class_scope:pb.Fee)
  private:
-  class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::ArenaStringPtr address_;
   ::google::protobuf::uint64 amount_;
   int currency_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsFeeImpl();
 };
 // -------------------------------------------------------------------
 
-class Image final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Image) */ {
+class File : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.File) */ {
+ public:
+  File();
+  virtual ~File();
+
+  File(const File& from);
+
+  inline File& operator=(const File& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  File(File&& from) noexcept
+    : File() {
+    *this = ::std::move(from);
+  }
+
+  inline File& operator=(File&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const File& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const File* internal_default_instance() {
+    return reinterpret_cast<const File*>(
+               &_File_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    4;
+
+  void Swap(File* other);
+  friend void swap(File& a, File& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline File* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  File* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const File& from);
+  void MergeFrom(const File& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(File* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string name = 1;
+  void clear_name();
+  static const int kNameFieldNumber = 1;
+  const ::std::string& name() const;
+  void set_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_name(::std::string&& value);
+  #endif
+  void set_name(const char* value);
+  void set_name(const char* value, size_t size);
+  ::std::string* mutable_name();
+  ::std::string* release_name();
+  void set_allocated_name(::std::string* name);
+
+  // bytes hash = 3;
+  void clear_hash();
+  static const int kHashFieldNumber = 3;
+  const ::std::string& hash() const;
+  void set_hash(const ::std::string& value);
+  #if LANG_CXX11
+  void set_hash(::std::string&& value);
+  #endif
+  void set_hash(const char* value);
+  void set_hash(const void* value, size_t size);
+  ::std::string* mutable_hash();
+  ::std::string* release_hash();
+  void set_allocated_hash(::std::string* hash);
+
+  // uint64 size = 2;
+  void clear_size();
+  static const int kSizeFieldNumber = 2;
+  ::google::protobuf::uint64 size() const;
+  void set_size(::google::protobuf::uint64 value);
+
+  // @@protoc_insertion_point(class_scope:pb.File)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr name_;
+  ::google::protobuf::internal::ArenaStringPtr hash_;
+  ::google::protobuf::uint64 size_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsFileImpl();
+};
+// -------------------------------------------------------------------
+
+class Image : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Image) */ {
  public:
   Image();
   virtual ~Image();
@@ -2482,9 +1847,7 @@ class Image final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Image& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
@@ -2492,8 +1855,8 @@ class Image final :
     return reinterpret_cast<const Image*>(
                &_Image_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    7;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    5;
 
   void Swap(Image* other);
   friend void swap(Image& a, Image& b) {
@@ -2502,49 +1865,39 @@ class Image final :
 
   // implements Message ----------------------------------------------
 
-  inline Image* New() const final {
-    return CreateMaybeMessage<Image>(nullptr);
-  }
+  inline Image* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Image* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Image>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Image* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Image& from);
   void MergeFrom(const Image& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Image* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -2564,18 +1917,17 @@ class Image final :
 
   // @@protoc_insertion_point(class_scope:pb.Image)
  private:
-  class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::uint32 width_;
   ::google::protobuf::uint32 height_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsImageImpl();
 };
 // -------------------------------------------------------------------
 
-class Video final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Video) */ {
+class Video : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Video) */ {
  public:
   Video();
   virtual ~Video();
@@ -2601,9 +1953,7 @@ class Video final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Video& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
@@ -2611,8 +1961,8 @@ class Video final :
     return reinterpret_cast<const Video*>(
                &_Video_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    8;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    6;
 
   void Swap(Video* other);
   friend void swap(Video& a, Video& b) {
@@ -2621,63 +1971,44 @@ class Video final :
 
   // implements Message ----------------------------------------------
 
-  inline Video* New() const final {
-    return CreateMaybeMessage<Video>(nullptr);
-  }
+  inline Video* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Video* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Video>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Video* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Video& from);
   void MergeFrom(const Video& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Video* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
-  // .pb.Audio audio = 15;
-  bool has_audio() const;
-  void clear_audio();
-  static const int kAudioFieldNumber = 15;
-  const ::pb::Audio& audio() const;
-  ::pb::Audio* release_audio();
-  ::pb::Audio* mutable_audio();
-  void set_allocated_audio(::pb::Audio* audio);
-
   // uint32 width = 1;
   void clear_width();
   static const int kWidthFieldNumber = 1;
@@ -2698,20 +2029,18 @@ class Video final :
 
   // @@protoc_insertion_point(class_scope:pb.Video)
  private:
-  class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::pb::Audio* audio_;
   ::google::protobuf::uint32 width_;
   ::google::protobuf::uint32 height_;
   ::google::protobuf::uint32 duration_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsVideoImpl();
 };
 // -------------------------------------------------------------------
 
-class Audio final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Audio) */ {
+class Audio : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Audio) */ {
  public:
   Audio();
   virtual ~Audio();
@@ -2737,9 +2066,7 @@ class Audio final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Audio& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
@@ -2747,8 +2074,8 @@ class Audio final :
     return reinterpret_cast<const Audio*>(
                &_Audio_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    9;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    7;
 
   void Swap(Audio* other);
   friend void swap(Audio& a, Audio& b) {
@@ -2757,49 +2084,39 @@ class Audio final :
 
   // implements Message ----------------------------------------------
 
-  inline Audio* New() const final {
-    return CreateMaybeMessage<Audio>(nullptr);
-  }
+  inline Audio* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Audio* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Audio>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Audio* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Audio& from);
   void MergeFrom(const Audio& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Audio* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -2813,173 +2130,16 @@ class Audio final :
 
   // @@protoc_insertion_point(class_scope:pb.Audio)
  private:
-  class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::uint32 duration_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsAudioImpl();
 };
 // -------------------------------------------------------------------
 
-class Software final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Software) */ {
- public:
-  Software();
-  virtual ~Software();
-
-  Software(const Software& from);
-
-  inline Software& operator=(const Software& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  Software(Software&& from) noexcept
-    : Software() {
-    *this = ::std::move(from);
-  }
-
-  inline Software& operator=(Software&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const Software& default_instance();
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Software* internal_default_instance() {
-    return reinterpret_cast<const Software*>(
-               &_Software_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    10;
-
-  void Swap(Software* other);
-  friend void swap(Software& a, Software& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline Software* New() const final {
-    return CreateMaybeMessage<Software>(nullptr);
-  }
-
-  Software* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Software>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const Software& from);
-  void MergeFrom(const Software& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(Software* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  typedef Software_OS OS;
-  static const OS UNKNOWN_OS =
-    Software_OS_UNKNOWN_OS;
-  static const OS ANY =
-    Software_OS_ANY;
-  static const OS LINUX =
-    Software_OS_LINUX;
-  static const OS WINDOWS =
-    Software_OS_WINDOWS;
-  static const OS MAC =
-    Software_OS_MAC;
-  static const OS ANDROID =
-    Software_OS_ANDROID;
-  static const OS IOS =
-    Software_OS_IOS;
-  static inline bool OS_IsValid(int value) {
-    return Software_OS_IsValid(value);
-  }
-  static const OS OS_MIN =
-    Software_OS_OS_MIN;
-  static const OS OS_MAX =
-    Software_OS_OS_MAX;
-  static const int OS_ARRAYSIZE =
-    Software_OS_OS_ARRAYSIZE;
-  static inline const ::google::protobuf::EnumDescriptor*
-  OS_descriptor() {
-    return Software_OS_descriptor();
-  }
-  static inline const ::std::string& OS_Name(OS value) {
-    return Software_OS_Name(value);
-  }
-  static inline bool OS_Parse(const ::std::string& name,
-      OS* value) {
-    return Software_OS_Parse(name, value);
-  }
-
-  // accessors -------------------------------------------------------
-
-  // string os = 1;
-  void clear_os();
-  static const int kOsFieldNumber = 1;
-  const ::std::string& os() const;
-  void set_os(const ::std::string& value);
-  #if LANG_CXX11
-  void set_os(::std::string&& value);
-  #endif
-  void set_os(const char* value);
-  void set_os(const char* value, size_t size);
-  ::std::string* mutable_os();
-  ::std::string* release_os();
-  void set_allocated_os(::std::string* os);
-
-  // @@protoc_insertion_point(class_scope:pb.Software)
- private:
-  class HasBitSetters;
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr os_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
-};
-// -------------------------------------------------------------------
-
-class Language final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Language) */ {
+class Language : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Language) */ {
  public:
   Language();
   virtual ~Language();
@@ -3005,9 +2165,7 @@ class Language final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Language& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
@@ -3015,8 +2173,8 @@ class Language final :
     return reinterpret_cast<const Language*>(
                &_Language_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    11;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    8;
 
   void Swap(Language* other);
   friend void swap(Language& a, Language& b) {
@@ -3025,49 +2183,39 @@ class Language final :
 
   // implements Message ----------------------------------------------
 
-  inline Language* New() const final {
-    return CreateMaybeMessage<Language>(nullptr);
-  }
+  inline Language* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Language* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Language>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Language* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Language& from);
   void MergeFrom(const Language& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Language* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -3907,19 +3055,18 @@ class Language final :
 
   // @@protoc_insertion_point(class_scope:pb.Language)
  private:
-  class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   int language_;
   int script_;
   int region_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsLanguageImpl();
 };
 // -------------------------------------------------------------------
 
-class Location final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Location) */ {
+class Location : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Location) */ {
  public:
   Location();
   virtual ~Location();
@@ -3945,9 +3092,7 @@ class Location final :
     return *this;
   }
   #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
+  static const ::google::protobuf::Descriptor* descriptor();
   static const Location& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
@@ -3955,8 +3100,8 @@ class Location final :
     return reinterpret_cast<const Location*>(
                &_Location_default_instance_);
   }
-  static constexpr int kIndexInFileMessages =
-    12;
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    9;
 
   void Swap(Location* other);
   friend void swap(Location& a, Location& b) {
@@ -3965,49 +3110,39 @@ class Location final :
 
   // implements Message ----------------------------------------------
 
-  inline Location* New() const final {
-    return CreateMaybeMessage<Location>(nullptr);
-  }
+  inline Location* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Location* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Location>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
+  Location* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void CopyFrom(const Location& from);
   void MergeFrom(const Location& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
 
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
   ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const final;
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
   void InternalSwap(Location* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
+    return NULL;
   }
   inline void* MaybeArenaPtr() const {
-    return nullptr;
+    return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const final;
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
@@ -4512,566 +3647,6 @@ class Location final :
     Location_Country_ZM;
   static const Country ZW =
     Location_Country_ZW;
-  static const Country R001 =
-    Location_Country_R001;
-  static const Country R002 =
-    Location_Country_R002;
-  static const Country R015 =
-    Location_Country_R015;
-  static const Country R012 =
-    Location_Country_R012;
-  static const Country R818 =
-    Location_Country_R818;
-  static const Country R434 =
-    Location_Country_R434;
-  static const Country R504 =
-    Location_Country_R504;
-  static const Country R729 =
-    Location_Country_R729;
-  static const Country R788 =
-    Location_Country_R788;
-  static const Country R732 =
-    Location_Country_R732;
-  static const Country R202 =
-    Location_Country_R202;
-  static const Country R014 =
-    Location_Country_R014;
-  static const Country R086 =
-    Location_Country_R086;
-  static const Country R108 =
-    Location_Country_R108;
-  static const Country R174 =
-    Location_Country_R174;
-  static const Country R262 =
-    Location_Country_R262;
-  static const Country R232 =
-    Location_Country_R232;
-  static const Country R231 =
-    Location_Country_R231;
-  static const Country R260 =
-    Location_Country_R260;
-  static const Country R404 =
-    Location_Country_R404;
-  static const Country R450 =
-    Location_Country_R450;
-  static const Country R454 =
-    Location_Country_R454;
-  static const Country R480 =
-    Location_Country_R480;
-  static const Country R175 =
-    Location_Country_R175;
-  static const Country R508 =
-    Location_Country_R508;
-  static const Country R638 =
-    Location_Country_R638;
-  static const Country R646 =
-    Location_Country_R646;
-  static const Country R690 =
-    Location_Country_R690;
-  static const Country R706 =
-    Location_Country_R706;
-  static const Country R728 =
-    Location_Country_R728;
-  static const Country R800 =
-    Location_Country_R800;
-  static const Country R834 =
-    Location_Country_R834;
-  static const Country R894 =
-    Location_Country_R894;
-  static const Country R716 =
-    Location_Country_R716;
-  static const Country R017 =
-    Location_Country_R017;
-  static const Country R024 =
-    Location_Country_R024;
-  static const Country R120 =
-    Location_Country_R120;
-  static const Country R140 =
-    Location_Country_R140;
-  static const Country R148 =
-    Location_Country_R148;
-  static const Country R178 =
-    Location_Country_R178;
-  static const Country R180 =
-    Location_Country_R180;
-  static const Country R226 =
-    Location_Country_R226;
-  static const Country R266 =
-    Location_Country_R266;
-  static const Country R678 =
-    Location_Country_R678;
-  static const Country R018 =
-    Location_Country_R018;
-  static const Country R072 =
-    Location_Country_R072;
-  static const Country R748 =
-    Location_Country_R748;
-  static const Country R426 =
-    Location_Country_R426;
-  static const Country R516 =
-    Location_Country_R516;
-  static const Country R710 =
-    Location_Country_R710;
-  static const Country R011 =
-    Location_Country_R011;
-  static const Country R204 =
-    Location_Country_R204;
-  static const Country R854 =
-    Location_Country_R854;
-  static const Country R132 =
-    Location_Country_R132;
-  static const Country R384 =
-    Location_Country_R384;
-  static const Country R270 =
-    Location_Country_R270;
-  static const Country R288 =
-    Location_Country_R288;
-  static const Country R324 =
-    Location_Country_R324;
-  static const Country R624 =
-    Location_Country_R624;
-  static const Country R430 =
-    Location_Country_R430;
-  static const Country R466 =
-    Location_Country_R466;
-  static const Country R478 =
-    Location_Country_R478;
-  static const Country R562 =
-    Location_Country_R562;
-  static const Country R566 =
-    Location_Country_R566;
-  static const Country R654 =
-    Location_Country_R654;
-  static const Country R686 =
-    Location_Country_R686;
-  static const Country R694 =
-    Location_Country_R694;
-  static const Country R768 =
-    Location_Country_R768;
-  static const Country R019 =
-    Location_Country_R019;
-  static const Country R419 =
-    Location_Country_R419;
-  static const Country R029 =
-    Location_Country_R029;
-  static const Country R660 =
-    Location_Country_R660;
-  static const Country R028 =
-    Location_Country_R028;
-  static const Country R533 =
-    Location_Country_R533;
-  static const Country R044 =
-    Location_Country_R044;
-  static const Country R052 =
-    Location_Country_R052;
-  static const Country R535 =
-    Location_Country_R535;
-  static const Country R092 =
-    Location_Country_R092;
-  static const Country R136 =
-    Location_Country_R136;
-  static const Country R192 =
-    Location_Country_R192;
-  static const Country R531 =
-    Location_Country_R531;
-  static const Country R212 =
-    Location_Country_R212;
-  static const Country R214 =
-    Location_Country_R214;
-  static const Country R308 =
-    Location_Country_R308;
-  static const Country R312 =
-    Location_Country_R312;
-  static const Country R332 =
-    Location_Country_R332;
-  static const Country R388 =
-    Location_Country_R388;
-  static const Country R474 =
-    Location_Country_R474;
-  static const Country R500 =
-    Location_Country_R500;
-  static const Country R630 =
-    Location_Country_R630;
-  static const Country R652 =
-    Location_Country_R652;
-  static const Country R659 =
-    Location_Country_R659;
-  static const Country R662 =
-    Location_Country_R662;
-  static const Country R663 =
-    Location_Country_R663;
-  static const Country R670 =
-    Location_Country_R670;
-  static const Country R534 =
-    Location_Country_R534;
-  static const Country R780 =
-    Location_Country_R780;
-  static const Country R796 =
-    Location_Country_R796;
-  static const Country R850 =
-    Location_Country_R850;
-  static const Country R013 =
-    Location_Country_R013;
-  static const Country R084 =
-    Location_Country_R084;
-  static const Country R188 =
-    Location_Country_R188;
-  static const Country R222 =
-    Location_Country_R222;
-  static const Country R320 =
-    Location_Country_R320;
-  static const Country R340 =
-    Location_Country_R340;
-  static const Country R484 =
-    Location_Country_R484;
-  static const Country R558 =
-    Location_Country_R558;
-  static const Country R591 =
-    Location_Country_R591;
-  static const Country R005 =
-    Location_Country_R005;
-  static const Country R032 =
-    Location_Country_R032;
-  static const Country R068 =
-    Location_Country_R068;
-  static const Country R074 =
-    Location_Country_R074;
-  static const Country R076 =
-    Location_Country_R076;
-  static const Country R152 =
-    Location_Country_R152;
-  static const Country R170 =
-    Location_Country_R170;
-  static const Country R218 =
-    Location_Country_R218;
-  static const Country R238 =
-    Location_Country_R238;
-  static const Country R254 =
-    Location_Country_R254;
-  static const Country R328 =
-    Location_Country_R328;
-  static const Country R600 =
-    Location_Country_R600;
-  static const Country R604 =
-    Location_Country_R604;
-  static const Country R239 =
-    Location_Country_R239;
-  static const Country R740 =
-    Location_Country_R740;
-  static const Country R858 =
-    Location_Country_R858;
-  static const Country R862 =
-    Location_Country_R862;
-  static const Country R021 =
-    Location_Country_R021;
-  static const Country R060 =
-    Location_Country_R060;
-  static const Country R124 =
-    Location_Country_R124;
-  static const Country R304 =
-    Location_Country_R304;
-  static const Country R666 =
-    Location_Country_R666;
-  static const Country R840 =
-    Location_Country_R840;
-  static const Country R010 =
-    Location_Country_R010;
-  static const Country R142 =
-    Location_Country_R142;
-  static const Country R143 =
-    Location_Country_R143;
-  static const Country R398 =
-    Location_Country_R398;
-  static const Country R417 =
-    Location_Country_R417;
-  static const Country R762 =
-    Location_Country_R762;
-  static const Country R795 =
-    Location_Country_R795;
-  static const Country R860 =
-    Location_Country_R860;
-  static const Country R030 =
-    Location_Country_R030;
-  static const Country R156 =
-    Location_Country_R156;
-  static const Country R344 =
-    Location_Country_R344;
-  static const Country R446 =
-    Location_Country_R446;
-  static const Country R408 =
-    Location_Country_R408;
-  static const Country R392 =
-    Location_Country_R392;
-  static const Country R496 =
-    Location_Country_R496;
-  static const Country R410 =
-    Location_Country_R410;
-  static const Country R035 =
-    Location_Country_R035;
-  static const Country R096 =
-    Location_Country_R096;
-  static const Country R116 =
-    Location_Country_R116;
-  static const Country R360 =
-    Location_Country_R360;
-  static const Country R418 =
-    Location_Country_R418;
-  static const Country R458 =
-    Location_Country_R458;
-  static const Country R104 =
-    Location_Country_R104;
-  static const Country R608 =
-    Location_Country_R608;
-  static const Country R702 =
-    Location_Country_R702;
-  static const Country R764 =
-    Location_Country_R764;
-  static const Country R626 =
-    Location_Country_R626;
-  static const Country R704 =
-    Location_Country_R704;
-  static const Country R034 =
-    Location_Country_R034;
-  static const Country R004 =
-    Location_Country_R004;
-  static const Country R050 =
-    Location_Country_R050;
-  static const Country R064 =
-    Location_Country_R064;
-  static const Country R356 =
-    Location_Country_R356;
-  static const Country R364 =
-    Location_Country_R364;
-  static const Country R462 =
-    Location_Country_R462;
-  static const Country R524 =
-    Location_Country_R524;
-  static const Country R586 =
-    Location_Country_R586;
-  static const Country R144 =
-    Location_Country_R144;
-  static const Country R145 =
-    Location_Country_R145;
-  static const Country R051 =
-    Location_Country_R051;
-  static const Country R031 =
-    Location_Country_R031;
-  static const Country R048 =
-    Location_Country_R048;
-  static const Country R196 =
-    Location_Country_R196;
-  static const Country R268 =
-    Location_Country_R268;
-  static const Country R368 =
-    Location_Country_R368;
-  static const Country R376 =
-    Location_Country_R376;
-  static const Country R400 =
-    Location_Country_R400;
-  static const Country R414 =
-    Location_Country_R414;
-  static const Country R422 =
-    Location_Country_R422;
-  static const Country R512 =
-    Location_Country_R512;
-  static const Country R634 =
-    Location_Country_R634;
-  static const Country R682 =
-    Location_Country_R682;
-  static const Country R275 =
-    Location_Country_R275;
-  static const Country R760 =
-    Location_Country_R760;
-  static const Country R792 =
-    Location_Country_R792;
-  static const Country R784 =
-    Location_Country_R784;
-  static const Country R887 =
-    Location_Country_R887;
-  static const Country R150 =
-    Location_Country_R150;
-  static const Country R151 =
-    Location_Country_R151;
-  static const Country R112 =
-    Location_Country_R112;
-  static const Country R100 =
-    Location_Country_R100;
-  static const Country R203 =
-    Location_Country_R203;
-  static const Country R348 =
-    Location_Country_R348;
-  static const Country R616 =
-    Location_Country_R616;
-  static const Country R498 =
-    Location_Country_R498;
-  static const Country R642 =
-    Location_Country_R642;
-  static const Country R643 =
-    Location_Country_R643;
-  static const Country R703 =
-    Location_Country_R703;
-  static const Country R804 =
-    Location_Country_R804;
-  static const Country R154 =
-    Location_Country_R154;
-  static const Country R248 =
-    Location_Country_R248;
-  static const Country R830 =
-    Location_Country_R830;
-  static const Country R831 =
-    Location_Country_R831;
-  static const Country R832 =
-    Location_Country_R832;
-  static const Country R680 =
-    Location_Country_R680;
-  static const Country R208 =
-    Location_Country_R208;
-  static const Country R233 =
-    Location_Country_R233;
-  static const Country R234 =
-    Location_Country_R234;
-  static const Country R246 =
-    Location_Country_R246;
-  static const Country R352 =
-    Location_Country_R352;
-  static const Country R372 =
-    Location_Country_R372;
-  static const Country R833 =
-    Location_Country_R833;
-  static const Country R428 =
-    Location_Country_R428;
-  static const Country R440 =
-    Location_Country_R440;
-  static const Country R578 =
-    Location_Country_R578;
-  static const Country R744 =
-    Location_Country_R744;
-  static const Country R752 =
-    Location_Country_R752;
-  static const Country R826 =
-    Location_Country_R826;
-  static const Country R039 =
-    Location_Country_R039;
-  static const Country R008 =
-    Location_Country_R008;
-  static const Country R020 =
-    Location_Country_R020;
-  static const Country R070 =
-    Location_Country_R070;
-  static const Country R191 =
-    Location_Country_R191;
-  static const Country R292 =
-    Location_Country_R292;
-  static const Country R300 =
-    Location_Country_R300;
-  static const Country R336 =
-    Location_Country_R336;
-  static const Country R380 =
-    Location_Country_R380;
-  static const Country R470 =
-    Location_Country_R470;
-  static const Country R499 =
-    Location_Country_R499;
-  static const Country R807 =
-    Location_Country_R807;
-  static const Country R620 =
-    Location_Country_R620;
-  static const Country R674 =
-    Location_Country_R674;
-  static const Country R688 =
-    Location_Country_R688;
-  static const Country R705 =
-    Location_Country_R705;
-  static const Country R724 =
-    Location_Country_R724;
-  static const Country R155 =
-    Location_Country_R155;
-  static const Country R040 =
-    Location_Country_R040;
-  static const Country R056 =
-    Location_Country_R056;
-  static const Country R250 =
-    Location_Country_R250;
-  static const Country R276 =
-    Location_Country_R276;
-  static const Country R438 =
-    Location_Country_R438;
-  static const Country R442 =
-    Location_Country_R442;
-  static const Country R492 =
-    Location_Country_R492;
-  static const Country R528 =
-    Location_Country_R528;
-  static const Country R756 =
-    Location_Country_R756;
-  static const Country R009 =
-    Location_Country_R009;
-  static const Country R053 =
-    Location_Country_R053;
-  static const Country R036 =
-    Location_Country_R036;
-  static const Country R162 =
-    Location_Country_R162;
-  static const Country R166 =
-    Location_Country_R166;
-  static const Country R334 =
-    Location_Country_R334;
-  static const Country R554 =
-    Location_Country_R554;
-  static const Country R574 =
-    Location_Country_R574;
-  static const Country R054 =
-    Location_Country_R054;
-  static const Country R242 =
-    Location_Country_R242;
-  static const Country R540 =
-    Location_Country_R540;
-  static const Country R598 =
-    Location_Country_R598;
-  static const Country R090 =
-    Location_Country_R090;
-  static const Country R548 =
-    Location_Country_R548;
-  static const Country R057 =
-    Location_Country_R057;
-  static const Country R316 =
-    Location_Country_R316;
-  static const Country R296 =
-    Location_Country_R296;
-  static const Country R584 =
-    Location_Country_R584;
-  static const Country R583 =
-    Location_Country_R583;
-  static const Country R520 =
-    Location_Country_R520;
-  static const Country R580 =
-    Location_Country_R580;
-  static const Country R585 =
-    Location_Country_R585;
-  static const Country R581 =
-    Location_Country_R581;
-  static const Country R061 =
-    Location_Country_R061;
-  static const Country R016 =
-    Location_Country_R016;
-  static const Country R184 =
-    Location_Country_R184;
-  static const Country R258 =
-    Location_Country_R258;
-  static const Country R570 =
-    Location_Country_R570;
-  static const Country R612 =
-    Location_Country_R612;
-  static const Country R882 =
-    Location_Country_R882;
-  static const Country R772 =
-    Location_Country_R772;
-  static const Country R776 =
-    Location_Country_R776;
-  static const Country R798 =
-    Location_Country_R798;
-  static const Country R876 =
-    Location_Country_R876;
   static inline bool Country_IsValid(int value) {
     return Location_Country_IsValid(value);
   }
@@ -5157,7 +3732,6 @@ class Location final :
 
   // @@protoc_insertion_point(class_scope:pb.Location)
  private:
-  class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::ArenaStringPtr state_;
@@ -5166,8 +3740,9 @@ class Location final :
   int country_;
   ::google::protobuf::int32 latitude_;
   ::google::protobuf::int32 longitude_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_claim_2eproto;
+  mutable int _cached_size_;
+  friend struct ::protobuf_claim_2eproto::TableStruct;
+  friend void ::protobuf_claim_2eproto::InitDefaultsLocationImpl();
 };
 // ===================================================================
 
@@ -5198,10 +3773,10 @@ inline ::pb::Stream* Claim::release_stream() {
   if (has_stream()) {
     clear_has_type();
       ::pb::Stream* temp = type_.stream_;
-    type_.stream_ = nullptr;
+    type_.stream_ = NULL;
     return temp;
   } else {
-    return nullptr;
+    return NULL;
   }
 }
 inline const ::pb::Stream& Claim::stream() const {
@@ -5214,8 +3789,7 @@ inline ::pb::Stream* Claim::mutable_stream() {
   if (!has_stream()) {
     clear_type();
     set_has_stream();
-    type_.stream_ = CreateMaybeMessage< ::pb::Stream >(
-        GetArenaNoVirtual());
+    type_.stream_ = new ::pb::Stream;
   }
   // @@protoc_insertion_point(field_mutable:pb.Claim.stream)
   return type_.stream_;
@@ -5239,10 +3813,10 @@ inline ::pb::Channel* Claim::release_channel() {
   if (has_channel()) {
     clear_has_type();
       ::pb::Channel* temp = type_.channel_;
-    type_.channel_ = nullptr;
+    type_.channel_ = NULL;
     return temp;
   } else {
-    return nullptr;
+    return NULL;
   }
 }
 inline const ::pb::Channel& Claim::channel() const {
@@ -5255,381 +3829,12 @@ inline ::pb::Channel* Claim::mutable_channel() {
   if (!has_channel()) {
     clear_type();
     set_has_channel();
-    type_.channel_ = CreateMaybeMessage< ::pb::Channel >(
-        GetArenaNoVirtual());
+    type_.channel_ = new ::pb::Channel;
   }
   // @@protoc_insertion_point(field_mutable:pb.Claim.channel)
   return type_.channel_;
 }
 
-// .pb.ClaimList collection = 3;
-inline bool Claim::has_collection() const {
-  return type_case() == kCollection;
-}
-inline void Claim::set_has_collection() {
-  _oneof_case_[0] = kCollection;
-}
-inline void Claim::clear_collection() {
-  if (has_collection()) {
-    delete type_.collection_;
-    clear_has_type();
-  }
-}
-inline ::pb::ClaimList* Claim::release_collection() {
-  // @@protoc_insertion_point(field_release:pb.Claim.collection)
-  if (has_collection()) {
-    clear_has_type();
-      ::pb::ClaimList* temp = type_.collection_;
-    type_.collection_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::ClaimList& Claim::collection() const {
-  // @@protoc_insertion_point(field_get:pb.Claim.collection)
-  return has_collection()
-      ? *type_.collection_
-      : *reinterpret_cast< ::pb::ClaimList*>(&::pb::_ClaimList_default_instance_);
-}
-inline ::pb::ClaimList* Claim::mutable_collection() {
-  if (!has_collection()) {
-    clear_type();
-    set_has_collection();
-    type_.collection_ = CreateMaybeMessage< ::pb::ClaimList >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Claim.collection)
-  return type_.collection_;
-}
-
-// .pb.ClaimReference repost = 4;
-inline bool Claim::has_repost() const {
-  return type_case() == kRepost;
-}
-inline void Claim::set_has_repost() {
-  _oneof_case_[0] = kRepost;
-}
-inline void Claim::clear_repost() {
-  if (has_repost()) {
-    delete type_.repost_;
-    clear_has_type();
-  }
-}
-inline ::pb::ClaimReference* Claim::release_repost() {
-  // @@protoc_insertion_point(field_release:pb.Claim.repost)
-  if (has_repost()) {
-    clear_has_type();
-      ::pb::ClaimReference* temp = type_.repost_;
-    type_.repost_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::ClaimReference& Claim::repost() const {
-  // @@protoc_insertion_point(field_get:pb.Claim.repost)
-  return has_repost()
-      ? *type_.repost_
-      : *reinterpret_cast< ::pb::ClaimReference*>(&::pb::_ClaimReference_default_instance_);
-}
-inline ::pb::ClaimReference* Claim::mutable_repost() {
-  if (!has_repost()) {
-    clear_type();
-    set_has_repost();
-    type_.repost_ = CreateMaybeMessage< ::pb::ClaimReference >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Claim.repost)
-  return type_.repost_;
-}
-
-// string title = 8;
-inline void Claim::clear_title() {
-  title_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Claim::title() const {
-  // @@protoc_insertion_point(field_get:pb.Claim.title)
-  return title_.GetNoArena();
-}
-inline void Claim::set_title(const ::std::string& value) {
-  
-  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Claim.title)
-}
-#if LANG_CXX11
-inline void Claim::set_title(::std::string&& value) {
-  
-  title_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Claim.title)
-}
-#endif
-inline void Claim::set_title(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Claim.title)
-}
-inline void Claim::set_title(const char* value, size_t size) {
-  
-  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Claim.title)
-}
-inline ::std::string* Claim::mutable_title() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Claim.title)
-  return title_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Claim::release_title() {
-  // @@protoc_insertion_point(field_release:pb.Claim.title)
-  
-  return title_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Claim::set_allocated_title(::std::string* title) {
-  if (title != nullptr) {
-    
-  } else {
-    
-  }
-  title_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), title);
-  // @@protoc_insertion_point(field_set_allocated:pb.Claim.title)
-}
-
-// string description = 9;
-inline void Claim::clear_description() {
-  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Claim::description() const {
-  // @@protoc_insertion_point(field_get:pb.Claim.description)
-  return description_.GetNoArena();
-}
-inline void Claim::set_description(const ::std::string& value) {
-  
-  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Claim.description)
-}
-#if LANG_CXX11
-inline void Claim::set_description(::std::string&& value) {
-  
-  description_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Claim.description)
-}
-#endif
-inline void Claim::set_description(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Claim.description)
-}
-inline void Claim::set_description(const char* value, size_t size) {
-  
-  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Claim.description)
-}
-inline ::std::string* Claim::mutable_description() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Claim.description)
-  return description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Claim::release_description() {
-  // @@protoc_insertion_point(field_release:pb.Claim.description)
-  
-  return description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Claim::set_allocated_description(::std::string* description) {
-  if (description != nullptr) {
-    
-  } else {
-    
-  }
-  description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description);
-  // @@protoc_insertion_point(field_set_allocated:pb.Claim.description)
-}
-
-// .pb.Source thumbnail = 10;
-inline bool Claim::has_thumbnail() const {
-  return this != internal_default_instance() && thumbnail_ != nullptr;
-}
-inline void Claim::clear_thumbnail() {
-  if (GetArenaNoVirtual() == nullptr && thumbnail_ != nullptr) {
-    delete thumbnail_;
-  }
-  thumbnail_ = nullptr;
-}
-inline const ::pb::Source& Claim::thumbnail() const {
-  const ::pb::Source* p = thumbnail_;
-  // @@protoc_insertion_point(field_get:pb.Claim.thumbnail)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::Source*>(
-      &::pb::_Source_default_instance_);
-}
-inline ::pb::Source* Claim::release_thumbnail() {
-  // @@protoc_insertion_point(field_release:pb.Claim.thumbnail)
-  
-  ::pb::Source* temp = thumbnail_;
-  thumbnail_ = nullptr;
-  return temp;
-}
-inline ::pb::Source* Claim::mutable_thumbnail() {
-  
-  if (thumbnail_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::Source>(GetArenaNoVirtual());
-    thumbnail_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Claim.thumbnail)
-  return thumbnail_;
-}
-inline void Claim::set_allocated_thumbnail(::pb::Source* thumbnail) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete thumbnail_;
-  }
-  if (thumbnail) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      thumbnail = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, thumbnail, submessage_arena);
-    }
-    
-  } else {
-    
-  }
-  thumbnail_ = thumbnail;
-  // @@protoc_insertion_point(field_set_allocated:pb.Claim.thumbnail)
-}
-
-// repeated string tags = 11;
-inline int Claim::tags_size() const {
-  return tags_.size();
-}
-inline void Claim::clear_tags() {
-  tags_.Clear();
-}
-inline const ::std::string& Claim::tags(int index) const {
-  // @@protoc_insertion_point(field_get:pb.Claim.tags)
-  return tags_.Get(index);
-}
-inline ::std::string* Claim::mutable_tags(int index) {
-  // @@protoc_insertion_point(field_mutable:pb.Claim.tags)
-  return tags_.Mutable(index);
-}
-inline void Claim::set_tags(int index, const ::std::string& value) {
-  // @@protoc_insertion_point(field_set:pb.Claim.tags)
-  tags_.Mutable(index)->assign(value);
-}
-#if LANG_CXX11
-inline void Claim::set_tags(int index, ::std::string&& value) {
-  // @@protoc_insertion_point(field_set:pb.Claim.tags)
-  tags_.Mutable(index)->assign(std::move(value));
-}
-#endif
-inline void Claim::set_tags(int index, const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  tags_.Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:pb.Claim.tags)
-}
-inline void Claim::set_tags(int index, const char* value, size_t size) {
-  tags_.Mutable(index)->assign(
-    reinterpret_cast<const char*>(value), size);
-  // @@protoc_insertion_point(field_set_pointer:pb.Claim.tags)
-}
-inline ::std::string* Claim::add_tags() {
-  // @@protoc_insertion_point(field_add_mutable:pb.Claim.tags)
-  return tags_.Add();
-}
-inline void Claim::add_tags(const ::std::string& value) {
-  tags_.Add()->assign(value);
-  // @@protoc_insertion_point(field_add:pb.Claim.tags)
-}
-#if LANG_CXX11
-inline void Claim::add_tags(::std::string&& value) {
-  tags_.Add(std::move(value));
-  // @@protoc_insertion_point(field_add:pb.Claim.tags)
-}
-#endif
-inline void Claim::add_tags(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  tags_.Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:pb.Claim.tags)
-}
-inline void Claim::add_tags(const char* value, size_t size) {
-  tags_.Add()->assign(reinterpret_cast<const char*>(value), size);
-  // @@protoc_insertion_point(field_add_pointer:pb.Claim.tags)
-}
-inline const ::google::protobuf::RepeatedPtrField<::std::string>&
-Claim::tags() const {
-  // @@protoc_insertion_point(field_list:pb.Claim.tags)
-  return tags_;
-}
-inline ::google::protobuf::RepeatedPtrField<::std::string>*
-Claim::mutable_tags() {
-  // @@protoc_insertion_point(field_mutable_list:pb.Claim.tags)
-  return &tags_;
-}
-
-// repeated .pb.Language languages = 12;
-inline int Claim::languages_size() const {
-  return languages_.size();
-}
-inline void Claim::clear_languages() {
-  languages_.Clear();
-}
-inline ::pb::Language* Claim::mutable_languages(int index) {
-  // @@protoc_insertion_point(field_mutable:pb.Claim.languages)
-  return languages_.Mutable(index);
-}
-inline ::google::protobuf::RepeatedPtrField< ::pb::Language >*
-Claim::mutable_languages() {
-  // @@protoc_insertion_point(field_mutable_list:pb.Claim.languages)
-  return &languages_;
-}
-inline const ::pb::Language& Claim::languages(int index) const {
-  // @@protoc_insertion_point(field_get:pb.Claim.languages)
-  return languages_.Get(index);
-}
-inline ::pb::Language* Claim::add_languages() {
-  // @@protoc_insertion_point(field_add:pb.Claim.languages)
-  return languages_.Add();
-}
-inline const ::google::protobuf::RepeatedPtrField< ::pb::Language >&
-Claim::languages() const {
-  // @@protoc_insertion_point(field_list:pb.Claim.languages)
-  return languages_;
-}
-
-// repeated .pb.Location locations = 13;
-inline int Claim::locations_size() const {
-  return locations_.size();
-}
-inline void Claim::clear_locations() {
-  locations_.Clear();
-}
-inline ::pb::Location* Claim::mutable_locations(int index) {
-  // @@protoc_insertion_point(field_mutable:pb.Claim.locations)
-  return locations_.Mutable(index);
-}
-inline ::google::protobuf::RepeatedPtrField< ::pb::Location >*
-Claim::mutable_locations() {
-  // @@protoc_insertion_point(field_mutable_list:pb.Claim.locations)
-  return &locations_;
-}
-inline const ::pb::Location& Claim::locations(int index) const {
-  // @@protoc_insertion_point(field_get:pb.Claim.locations)
-  return locations_.Get(index);
-}
-inline ::pb::Location* Claim::add_locations() {
-  // @@protoc_insertion_point(field_add:pb.Claim.locations)
-  return locations_.Add();
-}
-inline const ::google::protobuf::RepeatedPtrField< ::pb::Location >&
-Claim::locations() const {
-  // @@protoc_insertion_point(field_list:pb.Claim.locations)
-  return locations_;
-}
-
 inline bool Claim::has_type() const {
   return type_case() != TYPE_NOT_SET;
 }
@@ -5641,458 +3846,6 @@ inline Claim::TypeCase Claim::type_case() const {
 }
 // -------------------------------------------------------------------
 
-// Stream
-
-// .pb.Source source = 1;
-inline bool Stream::has_source() const {
-  return this != internal_default_instance() && source_ != nullptr;
-}
-inline void Stream::clear_source() {
-  if (GetArenaNoVirtual() == nullptr && source_ != nullptr) {
-    delete source_;
-  }
-  source_ = nullptr;
-}
-inline const ::pb::Source& Stream::source() const {
-  const ::pb::Source* p = source_;
-  // @@protoc_insertion_point(field_get:pb.Stream.source)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::Source*>(
-      &::pb::_Source_default_instance_);
-}
-inline ::pb::Source* Stream::release_source() {
-  // @@protoc_insertion_point(field_release:pb.Stream.source)
-  
-  ::pb::Source* temp = source_;
-  source_ = nullptr;
-  return temp;
-}
-inline ::pb::Source* Stream::mutable_source() {
-  
-  if (source_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::Source>(GetArenaNoVirtual());
-    source_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Stream.source)
-  return source_;
-}
-inline void Stream::set_allocated_source(::pb::Source* source) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete source_;
-  }
-  if (source) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      source = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, source, submessage_arena);
-    }
-    
-  } else {
-    
-  }
-  source_ = source;
-  // @@protoc_insertion_point(field_set_allocated:pb.Stream.source)
-}
-
-// string author = 2;
-inline void Stream::clear_author() {
-  author_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Stream::author() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.author)
-  return author_.GetNoArena();
-}
-inline void Stream::set_author(const ::std::string& value) {
-  
-  author_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Stream.author)
-}
-#if LANG_CXX11
-inline void Stream::set_author(::std::string&& value) {
-  
-  author_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.author)
-}
-#endif
-inline void Stream::set_author(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  author_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Stream.author)
-}
-inline void Stream::set_author(const char* value, size_t size) {
-  
-  author_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Stream.author)
-}
-inline ::std::string* Stream::mutable_author() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Stream.author)
-  return author_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Stream::release_author() {
-  // @@protoc_insertion_point(field_release:pb.Stream.author)
-  
-  return author_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Stream::set_allocated_author(::std::string* author) {
-  if (author != nullptr) {
-    
-  } else {
-    
-  }
-  author_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), author);
-  // @@protoc_insertion_point(field_set_allocated:pb.Stream.author)
-}
-
-// string license = 3;
-inline void Stream::clear_license() {
-  license_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Stream::license() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.license)
-  return license_.GetNoArena();
-}
-inline void Stream::set_license(const ::std::string& value) {
-  
-  license_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Stream.license)
-}
-#if LANG_CXX11
-inline void Stream::set_license(::std::string&& value) {
-  
-  license_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.license)
-}
-#endif
-inline void Stream::set_license(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  license_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Stream.license)
-}
-inline void Stream::set_license(const char* value, size_t size) {
-  
-  license_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Stream.license)
-}
-inline ::std::string* Stream::mutable_license() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Stream.license)
-  return license_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Stream::release_license() {
-  // @@protoc_insertion_point(field_release:pb.Stream.license)
-  
-  return license_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Stream::set_allocated_license(::std::string* license) {
-  if (license != nullptr) {
-    
-  } else {
-    
-  }
-  license_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), license);
-  // @@protoc_insertion_point(field_set_allocated:pb.Stream.license)
-}
-
-// string license_url = 4;
-inline void Stream::clear_license_url() {
-  license_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Stream::license_url() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.license_url)
-  return license_url_.GetNoArena();
-}
-inline void Stream::set_license_url(const ::std::string& value) {
-  
-  license_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Stream.license_url)
-}
-#if LANG_CXX11
-inline void Stream::set_license_url(::std::string&& value) {
-  
-  license_url_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.license_url)
-}
-#endif
-inline void Stream::set_license_url(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  license_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Stream.license_url)
-}
-inline void Stream::set_license_url(const char* value, size_t size) {
-  
-  license_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Stream.license_url)
-}
-inline ::std::string* Stream::mutable_license_url() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Stream.license_url)
-  return license_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Stream::release_license_url() {
-  // @@protoc_insertion_point(field_release:pb.Stream.license_url)
-  
-  return license_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Stream::set_allocated_license_url(::std::string* license_url) {
-  if (license_url != nullptr) {
-    
-  } else {
-    
-  }
-  license_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), license_url);
-  // @@protoc_insertion_point(field_set_allocated:pb.Stream.license_url)
-}
-
-// int64 release_time = 5;
-inline void Stream::clear_release_time() {
-  release_time_ = PROTOBUF_LONGLONG(0);
-}
-inline ::google::protobuf::int64 Stream::release_time() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.release_time)
-  return release_time_;
-}
-inline void Stream::set_release_time(::google::protobuf::int64 value) {
-  
-  release_time_ = value;
-  // @@protoc_insertion_point(field_set:pb.Stream.release_time)
-}
-
-// .pb.Fee fee = 6;
-inline bool Stream::has_fee() const {
-  return this != internal_default_instance() && fee_ != nullptr;
-}
-inline void Stream::clear_fee() {
-  if (GetArenaNoVirtual() == nullptr && fee_ != nullptr) {
-    delete fee_;
-  }
-  fee_ = nullptr;
-}
-inline const ::pb::Fee& Stream::fee() const {
-  const ::pb::Fee* p = fee_;
-  // @@protoc_insertion_point(field_get:pb.Stream.fee)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::Fee*>(
-      &::pb::_Fee_default_instance_);
-}
-inline ::pb::Fee* Stream::release_fee() {
-  // @@protoc_insertion_point(field_release:pb.Stream.fee)
-  
-  ::pb::Fee* temp = fee_;
-  fee_ = nullptr;
-  return temp;
-}
-inline ::pb::Fee* Stream::mutable_fee() {
-  
-  if (fee_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::Fee>(GetArenaNoVirtual());
-    fee_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Stream.fee)
-  return fee_;
-}
-inline void Stream::set_allocated_fee(::pb::Fee* fee) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete fee_;
-  }
-  if (fee) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      fee = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, fee, submessage_arena);
-    }
-    
-  } else {
-    
-  }
-  fee_ = fee;
-  // @@protoc_insertion_point(field_set_allocated:pb.Stream.fee)
-}
-
-// .pb.Image image = 10;
-inline bool Stream::has_image() const {
-  return type_case() == kImage;
-}
-inline void Stream::set_has_image() {
-  _oneof_case_[0] = kImage;
-}
-inline void Stream::clear_image() {
-  if (has_image()) {
-    delete type_.image_;
-    clear_has_type();
-  }
-}
-inline ::pb::Image* Stream::release_image() {
-  // @@protoc_insertion_point(field_release:pb.Stream.image)
-  if (has_image()) {
-    clear_has_type();
-      ::pb::Image* temp = type_.image_;
-    type_.image_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::Image& Stream::image() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.image)
-  return has_image()
-      ? *type_.image_
-      : *reinterpret_cast< ::pb::Image*>(&::pb::_Image_default_instance_);
-}
-inline ::pb::Image* Stream::mutable_image() {
-  if (!has_image()) {
-    clear_type();
-    set_has_image();
-    type_.image_ = CreateMaybeMessage< ::pb::Image >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Stream.image)
-  return type_.image_;
-}
-
-// .pb.Video video = 11;
-inline bool Stream::has_video() const {
-  return type_case() == kVideo;
-}
-inline void Stream::set_has_video() {
-  _oneof_case_[0] = kVideo;
-}
-inline void Stream::clear_video() {
-  if (has_video()) {
-    delete type_.video_;
-    clear_has_type();
-  }
-}
-inline ::pb::Video* Stream::release_video() {
-  // @@protoc_insertion_point(field_release:pb.Stream.video)
-  if (has_video()) {
-    clear_has_type();
-      ::pb::Video* temp = type_.video_;
-    type_.video_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::Video& Stream::video() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.video)
-  return has_video()
-      ? *type_.video_
-      : *reinterpret_cast< ::pb::Video*>(&::pb::_Video_default_instance_);
-}
-inline ::pb::Video* Stream::mutable_video() {
-  if (!has_video()) {
-    clear_type();
-    set_has_video();
-    type_.video_ = CreateMaybeMessage< ::pb::Video >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Stream.video)
-  return type_.video_;
-}
-
-// .pb.Audio audio = 12;
-inline bool Stream::has_audio() const {
-  return type_case() == kAudio;
-}
-inline void Stream::set_has_audio() {
-  _oneof_case_[0] = kAudio;
-}
-inline void Stream::clear_audio() {
-  if (has_audio()) {
-    delete type_.audio_;
-    clear_has_type();
-  }
-}
-inline ::pb::Audio* Stream::release_audio() {
-  // @@protoc_insertion_point(field_release:pb.Stream.audio)
-  if (has_audio()) {
-    clear_has_type();
-      ::pb::Audio* temp = type_.audio_;
-    type_.audio_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::Audio& Stream::audio() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.audio)
-  return has_audio()
-      ? *type_.audio_
-      : *reinterpret_cast< ::pb::Audio*>(&::pb::_Audio_default_instance_);
-}
-inline ::pb::Audio* Stream::mutable_audio() {
-  if (!has_audio()) {
-    clear_type();
-    set_has_audio();
-    type_.audio_ = CreateMaybeMessage< ::pb::Audio >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Stream.audio)
-  return type_.audio_;
-}
-
-// .pb.Software software = 13;
-inline bool Stream::has_software() const {
-  return type_case() == kSoftware;
-}
-inline void Stream::set_has_software() {
-  _oneof_case_[0] = kSoftware;
-}
-inline void Stream::clear_software() {
-  if (has_software()) {
-    delete type_.software_;
-    clear_has_type();
-  }
-}
-inline ::pb::Software* Stream::release_software() {
-  // @@protoc_insertion_point(field_release:pb.Stream.software)
-  if (has_software()) {
-    clear_has_type();
-      ::pb::Software* temp = type_.software_;
-    type_.software_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::Software& Stream::software() const {
-  // @@protoc_insertion_point(field_get:pb.Stream.software)
-  return has_software()
-      ? *type_.software_
-      : *reinterpret_cast< ::pb::Software*>(&::pb::_Software_default_instance_);
-}
-inline ::pb::Software* Stream::mutable_software() {
-  if (!has_software()) {
-    clear_type();
-    set_has_software();
-    type_.software_ = CreateMaybeMessage< ::pb::Software >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Stream.software)
-  return type_.software_;
-}
-
-inline bool Stream::has_type() const {
-  return type_case() != TYPE_NOT_SET;
-}
-inline void Stream::clear_has_type() {
-  _oneof_case_[0] = TYPE_NOT_SET;
-}
-inline Stream::TypeCase Stream::type_case() const {
-  return Stream::TypeCase(_oneof_case_[0]);
-}
-// -------------------------------------------------------------------
-
 // Channel
 
 // bytes public_key = 1;
@@ -6117,7 +3870,7 @@ inline void Channel::set_public_key(::std::string&& value) {
 }
 #endif
 inline void Channel::set_public_key(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+  GOOGLE_DCHECK(value != NULL);
   
   public_key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
   // @@protoc_insertion_point(field_set_char:pb.Channel.public_key)
@@ -6139,7 +3892,7 @@ inline ::std::string* Channel::release_public_key() {
   return public_key_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Channel::set_allocated_public_key(::std::string* public_key) {
-  if (public_key != nullptr) {
+  if (public_key != NULL) {
     
   } else {
     
@@ -6148,655 +3901,1253 @@ inline void Channel::set_allocated_public_key(::std::string* public_key) {
   // @@protoc_insertion_point(field_set_allocated:pb.Channel.public_key)
 }
 
-// string email = 2;
-inline void Channel::clear_email() {
-  email_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+// string title = 2;
+inline void Channel::clear_title() {
+  title_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline const ::std::string& Channel::email() const {
-  // @@protoc_insertion_point(field_get:pb.Channel.email)
-  return email_.GetNoArena();
+inline const ::std::string& Channel::title() const {
+  // @@protoc_insertion_point(field_get:pb.Channel.title)
+  return title_.GetNoArena();
 }
-inline void Channel::set_email(const ::std::string& value) {
+inline void Channel::set_title(const ::std::string& value) {
   
-  email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Channel.email)
+  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Channel.title)
 }
 #if LANG_CXX11
-inline void Channel::set_email(::std::string&& value) {
+inline void Channel::set_title(::std::string&& value) {
   
-  email_.SetNoArena(
+  title_.SetNoArena(
     &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.email)
+  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.title)
 }
 #endif
-inline void Channel::set_email(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+inline void Channel::set_title(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
   
-  email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Channel.email)
+  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Channel.title)
 }
-inline void Channel::set_email(const char* value, size_t size) {
+inline void Channel::set_title(const char* value, size_t size) {
   
-  email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
       ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Channel.email)
+  // @@protoc_insertion_point(field_set_pointer:pb.Channel.title)
 }
-inline ::std::string* Channel::mutable_email() {
+inline ::std::string* Channel::mutable_title() {
   
-  // @@protoc_insertion_point(field_mutable:pb.Channel.email)
-  return email_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  // @@protoc_insertion_point(field_mutable:pb.Channel.title)
+  return title_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* Channel::release_email() {
-  // @@protoc_insertion_point(field_release:pb.Channel.email)
+inline ::std::string* Channel::release_title() {
+  // @@protoc_insertion_point(field_release:pb.Channel.title)
   
-  return email_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return title_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void Channel::set_allocated_email(::std::string* email) {
-  if (email != nullptr) {
+inline void Channel::set_allocated_title(::std::string* title) {
+  if (title != NULL) {
     
   } else {
     
   }
-  email_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), email);
-  // @@protoc_insertion_point(field_set_allocated:pb.Channel.email)
+  title_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), title);
+  // @@protoc_insertion_point(field_set_allocated:pb.Channel.title)
 }
 
-// string website_url = 3;
-inline void Channel::clear_website_url() {
-  website_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+// string description = 3;
+inline void Channel::clear_description() {
+  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline const ::std::string& Channel::website_url() const {
-  // @@protoc_insertion_point(field_get:pb.Channel.website_url)
-  return website_url_.GetNoArena();
+inline const ::std::string& Channel::description() const {
+  // @@protoc_insertion_point(field_get:pb.Channel.description)
+  return description_.GetNoArena();
 }
-inline void Channel::set_website_url(const ::std::string& value) {
+inline void Channel::set_description(const ::std::string& value) {
   
-  website_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Channel.website_url)
+  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Channel.description)
 }
 #if LANG_CXX11
-inline void Channel::set_website_url(::std::string&& value) {
+inline void Channel::set_description(::std::string&& value) {
   
-  website_url_.SetNoArena(
+  description_.SetNoArena(
     &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.website_url)
+  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.description)
 }
 #endif
-inline void Channel::set_website_url(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+inline void Channel::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
   
-  website_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Channel.website_url)
+  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Channel.description)
 }
-inline void Channel::set_website_url(const char* value, size_t size) {
+inline void Channel::set_description(const char* value, size_t size) {
   
-  website_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
       ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Channel.website_url)
+  // @@protoc_insertion_point(field_set_pointer:pb.Channel.description)
 }
-inline ::std::string* Channel::mutable_website_url() {
+inline ::std::string* Channel::mutable_description() {
   
-  // @@protoc_insertion_point(field_mutable:pb.Channel.website_url)
-  return website_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  // @@protoc_insertion_point(field_mutable:pb.Channel.description)
+  return description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* Channel::release_website_url() {
-  // @@protoc_insertion_point(field_release:pb.Channel.website_url)
+inline ::std::string* Channel::release_description() {
+  // @@protoc_insertion_point(field_release:pb.Channel.description)
   
-  return website_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void Channel::set_allocated_website_url(::std::string* website_url) {
-  if (website_url != nullptr) {
+inline void Channel::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
     
   } else {
     
   }
-  website_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), website_url);
-  // @@protoc_insertion_point(field_set_allocated:pb.Channel.website_url)
+  description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description);
+  // @@protoc_insertion_point(field_set_allocated:pb.Channel.description)
 }
 
-// .pb.Source cover = 4;
-inline bool Channel::has_cover() const {
-  return this != internal_default_instance() && cover_ != nullptr;
+// string thumbnail_url = 4;
+inline void Channel::clear_thumbnail_url() {
+  thumbnail_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void Channel::clear_cover() {
-  if (GetArenaNoVirtual() == nullptr && cover_ != nullptr) {
-    delete cover_;
-  }
-  cover_ = nullptr;
+inline const ::std::string& Channel::thumbnail_url() const {
+  // @@protoc_insertion_point(field_get:pb.Channel.thumbnail_url)
+  return thumbnail_url_.GetNoArena();
 }
-inline const ::pb::Source& Channel::cover() const {
-  const ::pb::Source* p = cover_;
-  // @@protoc_insertion_point(field_get:pb.Channel.cover)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::Source*>(
-      &::pb::_Source_default_instance_);
-}
-inline ::pb::Source* Channel::release_cover() {
-  // @@protoc_insertion_point(field_release:pb.Channel.cover)
+inline void Channel::set_thumbnail_url(const ::std::string& value) {
   
-  ::pb::Source* temp = cover_;
-  cover_ = nullptr;
-  return temp;
+  thumbnail_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Channel.thumbnail_url)
 }
-inline ::pb::Source* Channel::mutable_cover() {
+#if LANG_CXX11
+inline void Channel::set_thumbnail_url(::std::string&& value) {
   
-  if (cover_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::Source>(GetArenaNoVirtual());
-    cover_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Channel.cover)
-  return cover_;
+  thumbnail_url_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.thumbnail_url)
 }
-inline void Channel::set_allocated_cover(::pb::Source* cover) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete cover_;
-  }
-  if (cover) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      cover = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, cover, submessage_arena);
-    }
+#endif
+inline void Channel::set_thumbnail_url(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  thumbnail_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Channel.thumbnail_url)
+}
+inline void Channel::set_thumbnail_url(const char* value, size_t size) {
+  
+  thumbnail_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Channel.thumbnail_url)
+}
+inline ::std::string* Channel::mutable_thumbnail_url() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Channel.thumbnail_url)
+  return thumbnail_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Channel::release_thumbnail_url() {
+  // @@protoc_insertion_point(field_release:pb.Channel.thumbnail_url)
+  
+  return thumbnail_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Channel::set_allocated_thumbnail_url(::std::string* thumbnail_url) {
+  if (thumbnail_url != NULL) {
     
   } else {
     
   }
-  cover_ = cover;
-  // @@protoc_insertion_point(field_set_allocated:pb.Channel.cover)
+  thumbnail_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), thumbnail_url);
+  // @@protoc_insertion_point(field_set_allocated:pb.Channel.thumbnail_url)
 }
 
-// .pb.ClaimList featured = 5;
-inline bool Channel::has_featured() const {
-  return this != internal_default_instance() && featured_ != nullptr;
+// repeated string tags = 5;
+inline int Channel::tags_size() const {
+  return tags_.size();
 }
-inline void Channel::clear_featured() {
-  if (GetArenaNoVirtual() == nullptr && featured_ != nullptr) {
-    delete featured_;
-  }
-  featured_ = nullptr;
+inline void Channel::clear_tags() {
+  tags_.Clear();
 }
-inline const ::pb::ClaimList& Channel::featured() const {
-  const ::pb::ClaimList* p = featured_;
-  // @@protoc_insertion_point(field_get:pb.Channel.featured)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::ClaimList*>(
-      &::pb::_ClaimList_default_instance_);
+inline const ::std::string& Channel::tags(int index) const {
+  // @@protoc_insertion_point(field_get:pb.Channel.tags)
+  return tags_.Get(index);
 }
-inline ::pb::ClaimList* Channel::release_featured() {
-  // @@protoc_insertion_point(field_release:pb.Channel.featured)
+inline ::std::string* Channel::mutable_tags(int index) {
+  // @@protoc_insertion_point(field_mutable:pb.Channel.tags)
+  return tags_.Mutable(index);
+}
+inline void Channel::set_tags(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:pb.Channel.tags)
+  tags_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void Channel::set_tags(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:pb.Channel.tags)
+  tags_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void Channel::set_tags(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  tags_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:pb.Channel.tags)
+}
+inline void Channel::set_tags(int index, const char* value, size_t size) {
+  tags_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:pb.Channel.tags)
+}
+inline ::std::string* Channel::add_tags() {
+  // @@protoc_insertion_point(field_add_mutable:pb.Channel.tags)
+  return tags_.Add();
+}
+inline void Channel::add_tags(const ::std::string& value) {
+  tags_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:pb.Channel.tags)
+}
+#if LANG_CXX11
+inline void Channel::add_tags(::std::string&& value) {
+  tags_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:pb.Channel.tags)
+}
+#endif
+inline void Channel::add_tags(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  tags_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:pb.Channel.tags)
+}
+inline void Channel::add_tags(const char* value, size_t size) {
+  tags_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:pb.Channel.tags)
+}
+inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
+Channel::tags() const {
+  // @@protoc_insertion_point(field_list:pb.Channel.tags)
+  return tags_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::std::string>*
+Channel::mutable_tags() {
+  // @@protoc_insertion_point(field_mutable_list:pb.Channel.tags)
+  return &tags_;
+}
+
+// repeated .pb.Language languages = 6;
+inline int Channel::languages_size() const {
+  return languages_.size();
+}
+inline void Channel::clear_languages() {
+  languages_.Clear();
+}
+inline const ::pb::Language& Channel::languages(int index) const {
+  // @@protoc_insertion_point(field_get:pb.Channel.languages)
+  return languages_.Get(index);
+}
+inline ::pb::Language* Channel::mutable_languages(int index) {
+  // @@protoc_insertion_point(field_mutable:pb.Channel.languages)
+  return languages_.Mutable(index);
+}
+inline ::pb::Language* Channel::add_languages() {
+  // @@protoc_insertion_point(field_add:pb.Channel.languages)
+  return languages_.Add();
+}
+inline ::google::protobuf::RepeatedPtrField< ::pb::Language >*
+Channel::mutable_languages() {
+  // @@protoc_insertion_point(field_mutable_list:pb.Channel.languages)
+  return &languages_;
+}
+inline const ::google::protobuf::RepeatedPtrField< ::pb::Language >&
+Channel::languages() const {
+  // @@protoc_insertion_point(field_list:pb.Channel.languages)
+  return languages_;
+}
+
+// repeated .pb.Location locations = 7;
+inline int Channel::locations_size() const {
+  return locations_.size();
+}
+inline void Channel::clear_locations() {
+  locations_.Clear();
+}
+inline const ::pb::Location& Channel::locations(int index) const {
+  // @@protoc_insertion_point(field_get:pb.Channel.locations)
+  return locations_.Get(index);
+}
+inline ::pb::Location* Channel::mutable_locations(int index) {
+  // @@protoc_insertion_point(field_mutable:pb.Channel.locations)
+  return locations_.Mutable(index);
+}
+inline ::pb::Location* Channel::add_locations() {
+  // @@protoc_insertion_point(field_add:pb.Channel.locations)
+  return locations_.Add();
+}
+inline ::google::protobuf::RepeatedPtrField< ::pb::Location >*
+Channel::mutable_locations() {
+  // @@protoc_insertion_point(field_mutable_list:pb.Channel.locations)
+  return &locations_;
+}
+inline const ::google::protobuf::RepeatedPtrField< ::pb::Location >&
+Channel::locations() const {
+  // @@protoc_insertion_point(field_list:pb.Channel.locations)
+  return locations_;
+}
+
+// string contact_email = 8;
+inline void Channel::clear_contact_email() {
+  contact_email_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Channel::contact_email() const {
+  // @@protoc_insertion_point(field_get:pb.Channel.contact_email)
+  return contact_email_.GetNoArena();
+}
+inline void Channel::set_contact_email(const ::std::string& value) {
   
-  ::pb::ClaimList* temp = featured_;
-  featured_ = nullptr;
-  return temp;
+  contact_email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Channel.contact_email)
 }
-inline ::pb::ClaimList* Channel::mutable_featured() {
+#if LANG_CXX11
+inline void Channel::set_contact_email(::std::string&& value) {
   
-  if (featured_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::ClaimList>(GetArenaNoVirtual());
-    featured_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Channel.featured)
-  return featured_;
+  contact_email_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.contact_email)
 }
-inline void Channel::set_allocated_featured(::pb::ClaimList* featured) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete featured_;
-  }
-  if (featured) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      featured = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, featured, submessage_arena);
-    }
+#endif
+inline void Channel::set_contact_email(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  contact_email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Channel.contact_email)
+}
+inline void Channel::set_contact_email(const char* value, size_t size) {
+  
+  contact_email_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Channel.contact_email)
+}
+inline ::std::string* Channel::mutable_contact_email() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Channel.contact_email)
+  return contact_email_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Channel::release_contact_email() {
+  // @@protoc_insertion_point(field_release:pb.Channel.contact_email)
+  
+  return contact_email_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Channel::set_allocated_contact_email(::std::string* contact_email) {
+  if (contact_email != NULL) {
     
   } else {
     
   }
-  featured_ = featured;
-  // @@protoc_insertion_point(field_set_allocated:pb.Channel.featured)
+  contact_email_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), contact_email);
+  // @@protoc_insertion_point(field_set_allocated:pb.Channel.contact_email)
+}
+
+// string homepage_url = 9;
+inline void Channel::clear_homepage_url() {
+  homepage_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Channel::homepage_url() const {
+  // @@protoc_insertion_point(field_get:pb.Channel.homepage_url)
+  return homepage_url_.GetNoArena();
+}
+inline void Channel::set_homepage_url(const ::std::string& value) {
+  
+  homepage_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Channel.homepage_url)
+}
+#if LANG_CXX11
+inline void Channel::set_homepage_url(::std::string&& value) {
+  
+  homepage_url_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.homepage_url)
+}
+#endif
+inline void Channel::set_homepage_url(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  homepage_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Channel.homepage_url)
+}
+inline void Channel::set_homepage_url(const char* value, size_t size) {
+  
+  homepage_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Channel.homepage_url)
+}
+inline ::std::string* Channel::mutable_homepage_url() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Channel.homepage_url)
+  return homepage_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Channel::release_homepage_url() {
+  // @@protoc_insertion_point(field_release:pb.Channel.homepage_url)
+  
+  return homepage_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Channel::set_allocated_homepage_url(::std::string* homepage_url) {
+  if (homepage_url != NULL) {
+    
+  } else {
+    
+  }
+  homepage_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), homepage_url);
+  // @@protoc_insertion_point(field_set_allocated:pb.Channel.homepage_url)
+}
+
+// string cover_url = 10;
+inline void Channel::clear_cover_url() {
+  cover_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Channel::cover_url() const {
+  // @@protoc_insertion_point(field_get:pb.Channel.cover_url)
+  return cover_url_.GetNoArena();
+}
+inline void Channel::set_cover_url(const ::std::string& value) {
+  
+  cover_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Channel.cover_url)
+}
+#if LANG_CXX11
+inline void Channel::set_cover_url(::std::string&& value) {
+  
+  cover_url_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Channel.cover_url)
+}
+#endif
+inline void Channel::set_cover_url(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  cover_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Channel.cover_url)
+}
+inline void Channel::set_cover_url(const char* value, size_t size) {
+  
+  cover_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Channel.cover_url)
+}
+inline ::std::string* Channel::mutable_cover_url() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Channel.cover_url)
+  return cover_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Channel::release_cover_url() {
+  // @@protoc_insertion_point(field_release:pb.Channel.cover_url)
+  
+  return cover_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Channel::set_allocated_cover_url(::std::string* cover_url) {
+  if (cover_url != NULL) {
+    
+  } else {
+    
+  }
+  cover_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), cover_url);
+  // @@protoc_insertion_point(field_set_allocated:pb.Channel.cover_url)
 }
 
 // -------------------------------------------------------------------
 
-// ClaimReference
+// Stream
 
-// bytes claim_hash = 1;
-inline void ClaimReference::clear_claim_hash() {
-  claim_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& ClaimReference::claim_hash() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimReference.claim_hash)
-  return claim_hash_.GetNoArena();
-}
-inline void ClaimReference::set_claim_hash(const ::std::string& value) {
-  
-  claim_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.ClaimReference.claim_hash)
-}
-#if LANG_CXX11
-inline void ClaimReference::set_claim_hash(::std::string&& value) {
-  
-  claim_hash_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.ClaimReference.claim_hash)
-}
-#endif
-inline void ClaimReference::set_claim_hash(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  claim_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.ClaimReference.claim_hash)
-}
-inline void ClaimReference::set_claim_hash(const void* value, size_t size) {
-  
-  claim_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.ClaimReference.claim_hash)
-}
-inline ::std::string* ClaimReference::mutable_claim_hash() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.ClaimReference.claim_hash)
-  return claim_hash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* ClaimReference::release_claim_hash() {
-  // @@protoc_insertion_point(field_release:pb.ClaimReference.claim_hash)
-  
-  return claim_hash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void ClaimReference::set_allocated_claim_hash(::std::string* claim_hash) {
-  if (claim_hash != nullptr) {
-    
-  } else {
-    
-  }
-  claim_hash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), claim_hash);
-  // @@protoc_insertion_point(field_set_allocated:pb.ClaimReference.claim_hash)
-}
-
-// -------------------------------------------------------------------
-
-// ClaimList
-
-// .pb.ClaimList.ListType list_type = 1;
-inline void ClaimList::clear_list_type() {
-  list_type_ = 0;
-}
-inline ::pb::ClaimList_ListType ClaimList::list_type() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimList.list_type)
-  return static_cast< ::pb::ClaimList_ListType >(list_type_);
-}
-inline void ClaimList::set_list_type(::pb::ClaimList_ListType value) {
-  
-  list_type_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimList.list_type)
-}
-
-// repeated .pb.ClaimReference claim_references = 2;
-inline int ClaimList::claim_references_size() const {
-  return claim_references_.size();
-}
-inline void ClaimList::clear_claim_references() {
-  claim_references_.Clear();
-}
-inline ::pb::ClaimReference* ClaimList::mutable_claim_references(int index) {
-  // @@protoc_insertion_point(field_mutable:pb.ClaimList.claim_references)
-  return claim_references_.Mutable(index);
-}
-inline ::google::protobuf::RepeatedPtrField< ::pb::ClaimReference >*
-ClaimList::mutable_claim_references() {
-  // @@protoc_insertion_point(field_mutable_list:pb.ClaimList.claim_references)
-  return &claim_references_;
-}
-inline const ::pb::ClaimReference& ClaimList::claim_references(int index) const {
-  // @@protoc_insertion_point(field_get:pb.ClaimList.claim_references)
-  return claim_references_.Get(index);
-}
-inline ::pb::ClaimReference* ClaimList::add_claim_references() {
-  // @@protoc_insertion_point(field_add:pb.ClaimList.claim_references)
-  return claim_references_.Add();
-}
-inline const ::google::protobuf::RepeatedPtrField< ::pb::ClaimReference >&
-ClaimList::claim_references() const {
-  // @@protoc_insertion_point(field_list:pb.ClaimList.claim_references)
-  return claim_references_;
-}
-
-// -------------------------------------------------------------------
-
-// Source
-
-// bytes hash = 1;
-inline void Source::clear_hash() {
-  hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Source::hash() const {
-  // @@protoc_insertion_point(field_get:pb.Source.hash)
-  return hash_.GetNoArena();
-}
-inline void Source::set_hash(const ::std::string& value) {
-  
-  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Source.hash)
-}
-#if LANG_CXX11
-inline void Source::set_hash(::std::string&& value) {
-  
-  hash_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Source.hash)
-}
-#endif
-inline void Source::set_hash(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Source.hash)
-}
-inline void Source::set_hash(const void* value, size_t size) {
-  
-  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Source.hash)
-}
-inline ::std::string* Source::mutable_hash() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Source.hash)
-  return hash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Source::release_hash() {
-  // @@protoc_insertion_point(field_release:pb.Source.hash)
-  
-  return hash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Source::set_allocated_hash(::std::string* hash) {
-  if (hash != nullptr) {
-    
-  } else {
-    
-  }
-  hash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), hash);
-  // @@protoc_insertion_point(field_set_allocated:pb.Source.hash)
-}
-
-// string name = 2;
-inline void Source::clear_name() {
-  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Source::name() const {
-  // @@protoc_insertion_point(field_get:pb.Source.name)
-  return name_.GetNoArena();
-}
-inline void Source::set_name(const ::std::string& value) {
-  
-  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Source.name)
-}
-#if LANG_CXX11
-inline void Source::set_name(::std::string&& value) {
-  
-  name_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Source.name)
-}
-#endif
-inline void Source::set_name(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Source.name)
-}
-inline void Source::set_name(const char* value, size_t size) {
-  
-  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Source.name)
-}
-inline ::std::string* Source::mutable_name() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Source.name)
-  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Source::release_name() {
-  // @@protoc_insertion_point(field_release:pb.Source.name)
-  
-  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Source::set_allocated_name(::std::string* name) {
-  if (name != nullptr) {
-    
-  } else {
-    
-  }
-  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
-  // @@protoc_insertion_point(field_set_allocated:pb.Source.name)
-}
-
-// uint64 size = 3;
-inline void Source::clear_size() {
-  size_ = PROTOBUF_ULONGLONG(0);
-}
-inline ::google::protobuf::uint64 Source::size() const {
-  // @@protoc_insertion_point(field_get:pb.Source.size)
-  return size_;
-}
-inline void Source::set_size(::google::protobuf::uint64 value) {
-  
-  size_ = value;
-  // @@protoc_insertion_point(field_set:pb.Source.size)
-}
-
-// string media_type = 4;
-inline void Source::clear_media_type() {
-  media_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Source::media_type() const {
-  // @@protoc_insertion_point(field_get:pb.Source.media_type)
-  return media_type_.GetNoArena();
-}
-inline void Source::set_media_type(const ::std::string& value) {
-  
-  media_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Source.media_type)
-}
-#if LANG_CXX11
-inline void Source::set_media_type(::std::string&& value) {
-  
-  media_type_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Source.media_type)
-}
-#endif
-inline void Source::set_media_type(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  media_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Source.media_type)
-}
-inline void Source::set_media_type(const char* value, size_t size) {
-  
-  media_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Source.media_type)
-}
-inline ::std::string* Source::mutable_media_type() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Source.media_type)
-  return media_type_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Source::release_media_type() {
-  // @@protoc_insertion_point(field_release:pb.Source.media_type)
-  
-  return media_type_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Source::set_allocated_media_type(::std::string* media_type) {
-  if (media_type != nullptr) {
-    
-  } else {
-    
-  }
-  media_type_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), media_type);
-  // @@protoc_insertion_point(field_set_allocated:pb.Source.media_type)
-}
-
-// string url = 5;
-inline void Source::clear_url() {
-  url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Source::url() const {
-  // @@protoc_insertion_point(field_get:pb.Source.url)
-  return url_.GetNoArena();
-}
-inline void Source::set_url(const ::std::string& value) {
-  
-  url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Source.url)
-}
-#if LANG_CXX11
-inline void Source::set_url(::std::string&& value) {
-  
-  url_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Source.url)
-}
-#endif
-inline void Source::set_url(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Source.url)
-}
-inline void Source::set_url(const char* value, size_t size) {
-  
-  url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Source.url)
-}
-inline ::std::string* Source::mutable_url() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Source.url)
-  return url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Source::release_url() {
-  // @@protoc_insertion_point(field_release:pb.Source.url)
-  
-  return url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Source::set_allocated_url(::std::string* url) {
-  if (url != nullptr) {
-    
-  } else {
-    
-  }
-  url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), url);
-  // @@protoc_insertion_point(field_set_allocated:pb.Source.url)
-}
-
-// bytes sd_hash = 6;
-inline void Source::clear_sd_hash() {
+// bytes sd_hash = 1;
+inline void Stream::clear_sd_hash() {
   sd_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline const ::std::string& Source::sd_hash() const {
-  // @@protoc_insertion_point(field_get:pb.Source.sd_hash)
+inline const ::std::string& Stream::sd_hash() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.sd_hash)
   return sd_hash_.GetNoArena();
 }
-inline void Source::set_sd_hash(const ::std::string& value) {
+inline void Stream::set_sd_hash(const ::std::string& value) {
   
   sd_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Source.sd_hash)
+  // @@protoc_insertion_point(field_set:pb.Stream.sd_hash)
 }
 #if LANG_CXX11
-inline void Source::set_sd_hash(::std::string&& value) {
+inline void Stream::set_sd_hash(::std::string&& value) {
   
   sd_hash_.SetNoArena(
     &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Source.sd_hash)
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.sd_hash)
 }
 #endif
-inline void Source::set_sd_hash(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+inline void Stream::set_sd_hash(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
   
   sd_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Source.sd_hash)
+  // @@protoc_insertion_point(field_set_char:pb.Stream.sd_hash)
 }
-inline void Source::set_sd_hash(const void* value, size_t size) {
+inline void Stream::set_sd_hash(const void* value, size_t size) {
   
   sd_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
       ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Source.sd_hash)
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.sd_hash)
 }
-inline ::std::string* Source::mutable_sd_hash() {
+inline ::std::string* Stream::mutable_sd_hash() {
   
-  // @@protoc_insertion_point(field_mutable:pb.Source.sd_hash)
+  // @@protoc_insertion_point(field_mutable:pb.Stream.sd_hash)
   return sd_hash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* Source::release_sd_hash() {
-  // @@protoc_insertion_point(field_release:pb.Source.sd_hash)
+inline ::std::string* Stream::release_sd_hash() {
+  // @@protoc_insertion_point(field_release:pb.Stream.sd_hash)
   
   return sd_hash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void Source::set_allocated_sd_hash(::std::string* sd_hash) {
-  if (sd_hash != nullptr) {
+inline void Stream::set_allocated_sd_hash(::std::string* sd_hash) {
+  if (sd_hash != NULL) {
     
   } else {
     
   }
   sd_hash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), sd_hash);
-  // @@protoc_insertion_point(field_set_allocated:pb.Source.sd_hash)
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.sd_hash)
 }
 
-// bytes bt_infohash = 7;
-inline void Source::clear_bt_infohash() {
-  bt_infohash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+// string title = 2;
+inline void Stream::clear_title() {
+  title_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline const ::std::string& Source::bt_infohash() const {
-  // @@protoc_insertion_point(field_get:pb.Source.bt_infohash)
-  return bt_infohash_.GetNoArena();
+inline const ::std::string& Stream::title() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.title)
+  return title_.GetNoArena();
 }
-inline void Source::set_bt_infohash(const ::std::string& value) {
+inline void Stream::set_title(const ::std::string& value) {
   
-  bt_infohash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Source.bt_infohash)
+  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Stream.title)
 }
 #if LANG_CXX11
-inline void Source::set_bt_infohash(::std::string&& value) {
+inline void Stream::set_title(::std::string&& value) {
   
-  bt_infohash_.SetNoArena(
+  title_.SetNoArena(
     &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Source.bt_infohash)
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.title)
 }
 #endif
-inline void Source::set_bt_infohash(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+inline void Stream::set_title(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
   
-  bt_infohash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Source.bt_infohash)
+  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Stream.title)
 }
-inline void Source::set_bt_infohash(const void* value, size_t size) {
+inline void Stream::set_title(const char* value, size_t size) {
   
-  bt_infohash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+  title_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
       ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Source.bt_infohash)
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.title)
 }
-inline ::std::string* Source::mutable_bt_infohash() {
+inline ::std::string* Stream::mutable_title() {
   
-  // @@protoc_insertion_point(field_mutable:pb.Source.bt_infohash)
-  return bt_infohash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  // @@protoc_insertion_point(field_mutable:pb.Stream.title)
+  return title_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* Source::release_bt_infohash() {
-  // @@protoc_insertion_point(field_release:pb.Source.bt_infohash)
+inline ::std::string* Stream::release_title() {
+  // @@protoc_insertion_point(field_release:pb.Stream.title)
   
-  return bt_infohash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return title_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void Source::set_allocated_bt_infohash(::std::string* bt_infohash) {
-  if (bt_infohash != nullptr) {
+inline void Stream::set_allocated_title(::std::string* title) {
+  if (title != NULL) {
     
   } else {
     
   }
-  bt_infohash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), bt_infohash);
-  // @@protoc_insertion_point(field_set_allocated:pb.Source.bt_infohash)
+  title_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), title);
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.title)
 }
 
+// string description = 3;
+inline void Stream::clear_description() {
+  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Stream::description() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.description)
+  return description_.GetNoArena();
+}
+inline void Stream::set_description(const ::std::string& value) {
+  
+  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Stream.description)
+}
+#if LANG_CXX11
+inline void Stream::set_description(::std::string&& value) {
+  
+  description_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.description)
+}
+#endif
+inline void Stream::set_description(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Stream.description)
+}
+inline void Stream::set_description(const char* value, size_t size) {
+  
+  description_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.description)
+}
+inline ::std::string* Stream::mutable_description() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Stream.description)
+  return description_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Stream::release_description() {
+  // @@protoc_insertion_point(field_release:pb.Stream.description)
+  
+  return description_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Stream::set_allocated_description(::std::string* description) {
+  if (description != NULL) {
+    
+  } else {
+    
+  }
+  description_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), description);
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.description)
+}
+
+// string thumbnail_url = 4;
+inline void Stream::clear_thumbnail_url() {
+  thumbnail_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Stream::thumbnail_url() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.thumbnail_url)
+  return thumbnail_url_.GetNoArena();
+}
+inline void Stream::set_thumbnail_url(const ::std::string& value) {
+  
+  thumbnail_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Stream.thumbnail_url)
+}
+#if LANG_CXX11
+inline void Stream::set_thumbnail_url(::std::string&& value) {
+  
+  thumbnail_url_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.thumbnail_url)
+}
+#endif
+inline void Stream::set_thumbnail_url(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  thumbnail_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Stream.thumbnail_url)
+}
+inline void Stream::set_thumbnail_url(const char* value, size_t size) {
+  
+  thumbnail_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.thumbnail_url)
+}
+inline ::std::string* Stream::mutable_thumbnail_url() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Stream.thumbnail_url)
+  return thumbnail_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Stream::release_thumbnail_url() {
+  // @@protoc_insertion_point(field_release:pb.Stream.thumbnail_url)
+  
+  return thumbnail_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Stream::set_allocated_thumbnail_url(::std::string* thumbnail_url) {
+  if (thumbnail_url != NULL) {
+    
+  } else {
+    
+  }
+  thumbnail_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), thumbnail_url);
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.thumbnail_url)
+}
+
+// repeated string tags = 5;
+inline int Stream::tags_size() const {
+  return tags_.size();
+}
+inline void Stream::clear_tags() {
+  tags_.Clear();
+}
+inline const ::std::string& Stream::tags(int index) const {
+  // @@protoc_insertion_point(field_get:pb.Stream.tags)
+  return tags_.Get(index);
+}
+inline ::std::string* Stream::mutable_tags(int index) {
+  // @@protoc_insertion_point(field_mutable:pb.Stream.tags)
+  return tags_.Mutable(index);
+}
+inline void Stream::set_tags(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:pb.Stream.tags)
+  tags_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void Stream::set_tags(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:pb.Stream.tags)
+  tags_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void Stream::set_tags(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  tags_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:pb.Stream.tags)
+}
+inline void Stream::set_tags(int index, const char* value, size_t size) {
+  tags_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.tags)
+}
+inline ::std::string* Stream::add_tags() {
+  // @@protoc_insertion_point(field_add_mutable:pb.Stream.tags)
+  return tags_.Add();
+}
+inline void Stream::add_tags(const ::std::string& value) {
+  tags_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:pb.Stream.tags)
+}
+#if LANG_CXX11
+inline void Stream::add_tags(::std::string&& value) {
+  tags_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:pb.Stream.tags)
+}
+#endif
+inline void Stream::add_tags(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  tags_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:pb.Stream.tags)
+}
+inline void Stream::add_tags(const char* value, size_t size) {
+  tags_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:pb.Stream.tags)
+}
+inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
+Stream::tags() const {
+  // @@protoc_insertion_point(field_list:pb.Stream.tags)
+  return tags_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::std::string>*
+Stream::mutable_tags() {
+  // @@protoc_insertion_point(field_mutable_list:pb.Stream.tags)
+  return &tags_;
+}
+
+// repeated .pb.Language languages = 6;
+inline int Stream::languages_size() const {
+  return languages_.size();
+}
+inline void Stream::clear_languages() {
+  languages_.Clear();
+}
+inline const ::pb::Language& Stream::languages(int index) const {
+  // @@protoc_insertion_point(field_get:pb.Stream.languages)
+  return languages_.Get(index);
+}
+inline ::pb::Language* Stream::mutable_languages(int index) {
+  // @@protoc_insertion_point(field_mutable:pb.Stream.languages)
+  return languages_.Mutable(index);
+}
+inline ::pb::Language* Stream::add_languages() {
+  // @@protoc_insertion_point(field_add:pb.Stream.languages)
+  return languages_.Add();
+}
+inline ::google::protobuf::RepeatedPtrField< ::pb::Language >*
+Stream::mutable_languages() {
+  // @@protoc_insertion_point(field_mutable_list:pb.Stream.languages)
+  return &languages_;
+}
+inline const ::google::protobuf::RepeatedPtrField< ::pb::Language >&
+Stream::languages() const {
+  // @@protoc_insertion_point(field_list:pb.Stream.languages)
+  return languages_;
+}
+
+// repeated .pb.Location locations = 7;
+inline int Stream::locations_size() const {
+  return locations_.size();
+}
+inline void Stream::clear_locations() {
+  locations_.Clear();
+}
+inline const ::pb::Location& Stream::locations(int index) const {
+  // @@protoc_insertion_point(field_get:pb.Stream.locations)
+  return locations_.Get(index);
+}
+inline ::pb::Location* Stream::mutable_locations(int index) {
+  // @@protoc_insertion_point(field_mutable:pb.Stream.locations)
+  return locations_.Mutable(index);
+}
+inline ::pb::Location* Stream::add_locations() {
+  // @@protoc_insertion_point(field_add:pb.Stream.locations)
+  return locations_.Add();
+}
+inline ::google::protobuf::RepeatedPtrField< ::pb::Location >*
+Stream::mutable_locations() {
+  // @@protoc_insertion_point(field_mutable_list:pb.Stream.locations)
+  return &locations_;
+}
+inline const ::google::protobuf::RepeatedPtrField< ::pb::Location >&
+Stream::locations() const {
+  // @@protoc_insertion_point(field_list:pb.Stream.locations)
+  return locations_;
+}
+
+// string author = 8;
+inline void Stream::clear_author() {
+  author_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Stream::author() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.author)
+  return author_.GetNoArena();
+}
+inline void Stream::set_author(const ::std::string& value) {
+  
+  author_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Stream.author)
+}
+#if LANG_CXX11
+inline void Stream::set_author(::std::string&& value) {
+  
+  author_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.author)
+}
+#endif
+inline void Stream::set_author(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  author_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Stream.author)
+}
+inline void Stream::set_author(const char* value, size_t size) {
+  
+  author_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.author)
+}
+inline ::std::string* Stream::mutable_author() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Stream.author)
+  return author_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Stream::release_author() {
+  // @@protoc_insertion_point(field_release:pb.Stream.author)
+  
+  return author_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Stream::set_allocated_author(::std::string* author) {
+  if (author != NULL) {
+    
+  } else {
+    
+  }
+  author_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), author);
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.author)
+}
+
+// string license = 9;
+inline void Stream::clear_license() {
+  license_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Stream::license() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.license)
+  return license_.GetNoArena();
+}
+inline void Stream::set_license(const ::std::string& value) {
+  
+  license_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Stream.license)
+}
+#if LANG_CXX11
+inline void Stream::set_license(::std::string&& value) {
+  
+  license_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.license)
+}
+#endif
+inline void Stream::set_license(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  license_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Stream.license)
+}
+inline void Stream::set_license(const char* value, size_t size) {
+  
+  license_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.license)
+}
+inline ::std::string* Stream::mutable_license() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Stream.license)
+  return license_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Stream::release_license() {
+  // @@protoc_insertion_point(field_release:pb.Stream.license)
+  
+  return license_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Stream::set_allocated_license(::std::string* license) {
+  if (license != NULL) {
+    
+  } else {
+    
+  }
+  license_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), license);
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.license)
+}
+
+// string license_url = 10;
+inline void Stream::clear_license_url() {
+  license_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Stream::license_url() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.license_url)
+  return license_url_.GetNoArena();
+}
+inline void Stream::set_license_url(const ::std::string& value) {
+  
+  license_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Stream.license_url)
+}
+#if LANG_CXX11
+inline void Stream::set_license_url(::std::string&& value) {
+  
+  license_url_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.license_url)
+}
+#endif
+inline void Stream::set_license_url(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  license_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Stream.license_url)
+}
+inline void Stream::set_license_url(const char* value, size_t size) {
+  
+  license_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.license_url)
+}
+inline ::std::string* Stream::mutable_license_url() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Stream.license_url)
+  return license_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Stream::release_license_url() {
+  // @@protoc_insertion_point(field_release:pb.Stream.license_url)
+  
+  return license_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Stream::set_allocated_license_url(::std::string* license_url) {
+  if (license_url != NULL) {
+    
+  } else {
+    
+  }
+  license_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), license_url);
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.license_url)
+}
+
+// int64 release_time = 11;
+inline void Stream::clear_release_time() {
+  release_time_ = GOOGLE_LONGLONG(0);
+}
+inline ::google::protobuf::int64 Stream::release_time() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.release_time)
+  return release_time_;
+}
+inline void Stream::set_release_time(::google::protobuf::int64 value) {
+  
+  release_time_ = value;
+  // @@protoc_insertion_point(field_set:pb.Stream.release_time)
+}
+
+// string media_type = 13;
+inline void Stream::clear_media_type() {
+  media_type_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& Stream::media_type() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.media_type)
+  return media_type_.GetNoArena();
+}
+inline void Stream::set_media_type(const ::std::string& value) {
+  
+  media_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.Stream.media_type)
+}
+#if LANG_CXX11
+inline void Stream::set_media_type(::std::string&& value) {
+  
+  media_type_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.Stream.media_type)
+}
+#endif
+inline void Stream::set_media_type(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  media_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.Stream.media_type)
+}
+inline void Stream::set_media_type(const char* value, size_t size) {
+  
+  media_type_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.Stream.media_type)
+}
+inline ::std::string* Stream::mutable_media_type() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.Stream.media_type)
+  return media_type_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Stream::release_media_type() {
+  // @@protoc_insertion_point(field_release:pb.Stream.media_type)
+  
+  return media_type_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Stream::set_allocated_media_type(::std::string* media_type) {
+  if (media_type != NULL) {
+    
+  } else {
+    
+  }
+  media_type_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), media_type);
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.media_type)
+}
+
+// .pb.File file = 14;
+inline bool Stream::has_file() const {
+  return this != internal_default_instance() && file_ != NULL;
+}
+inline void Stream::clear_file() {
+  if (GetArenaNoVirtual() == NULL && file_ != NULL) {
+    delete file_;
+  }
+  file_ = NULL;
+}
+inline const ::pb::File& Stream::file() const {
+  const ::pb::File* p = file_;
+  // @@protoc_insertion_point(field_get:pb.Stream.file)
+  return p != NULL ? *p : *reinterpret_cast<const ::pb::File*>(
+      &::pb::_File_default_instance_);
+}
+inline ::pb::File* Stream::release_file() {
+  // @@protoc_insertion_point(field_release:pb.Stream.file)
+  
+  ::pb::File* temp = file_;
+  file_ = NULL;
+  return temp;
+}
+inline ::pb::File* Stream::mutable_file() {
+  
+  if (file_ == NULL) {
+    file_ = new ::pb::File;
+  }
+  // @@protoc_insertion_point(field_mutable:pb.Stream.file)
+  return file_;
+}
+inline void Stream::set_allocated_file(::pb::File* file) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete file_;
+  }
+  if (file) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      file = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, file, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  file_ = file;
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.file)
+}
+
+// .pb.Fee fee = 15;
+inline bool Stream::has_fee() const {
+  return this != internal_default_instance() && fee_ != NULL;
+}
+inline void Stream::clear_fee() {
+  if (GetArenaNoVirtual() == NULL && fee_ != NULL) {
+    delete fee_;
+  }
+  fee_ = NULL;
+}
+inline const ::pb::Fee& Stream::fee() const {
+  const ::pb::Fee* p = fee_;
+  // @@protoc_insertion_point(field_get:pb.Stream.fee)
+  return p != NULL ? *p : *reinterpret_cast<const ::pb::Fee*>(
+      &::pb::_Fee_default_instance_);
+}
+inline ::pb::Fee* Stream::release_fee() {
+  // @@protoc_insertion_point(field_release:pb.Stream.fee)
+  
+  ::pb::Fee* temp = fee_;
+  fee_ = NULL;
+  return temp;
+}
+inline ::pb::Fee* Stream::mutable_fee() {
+  
+  if (fee_ == NULL) {
+    fee_ = new ::pb::Fee;
+  }
+  // @@protoc_insertion_point(field_mutable:pb.Stream.fee)
+  return fee_;
+}
+inline void Stream::set_allocated_fee(::pb::Fee* fee) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete fee_;
+  }
+  if (fee) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      fee = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, fee, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  fee_ = fee;
+  // @@protoc_insertion_point(field_set_allocated:pb.Stream.fee)
+}
+
+// .pb.Image image = 16;
+inline bool Stream::has_image() const {
+  return type_case() == kImage;
+}
+inline void Stream::set_has_image() {
+  _oneof_case_[0] = kImage;
+}
+inline void Stream::clear_image() {
+  if (has_image()) {
+    delete type_.image_;
+    clear_has_type();
+  }
+}
+inline ::pb::Image* Stream::release_image() {
+  // @@protoc_insertion_point(field_release:pb.Stream.image)
+  if (has_image()) {
+    clear_has_type();
+      ::pb::Image* temp = type_.image_;
+    type_.image_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::pb::Image& Stream::image() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.image)
+  return has_image()
+      ? *type_.image_
+      : *reinterpret_cast< ::pb::Image*>(&::pb::_Image_default_instance_);
+}
+inline ::pb::Image* Stream::mutable_image() {
+  if (!has_image()) {
+    clear_type();
+    set_has_image();
+    type_.image_ = new ::pb::Image;
+  }
+  // @@protoc_insertion_point(field_mutable:pb.Stream.image)
+  return type_.image_;
+}
+
+// .pb.Video video = 17;
+inline bool Stream::has_video() const {
+  return type_case() == kVideo;
+}
+inline void Stream::set_has_video() {
+  _oneof_case_[0] = kVideo;
+}
+inline void Stream::clear_video() {
+  if (has_video()) {
+    delete type_.video_;
+    clear_has_type();
+  }
+}
+inline ::pb::Video* Stream::release_video() {
+  // @@protoc_insertion_point(field_release:pb.Stream.video)
+  if (has_video()) {
+    clear_has_type();
+      ::pb::Video* temp = type_.video_;
+    type_.video_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::pb::Video& Stream::video() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.video)
+  return has_video()
+      ? *type_.video_
+      : *reinterpret_cast< ::pb::Video*>(&::pb::_Video_default_instance_);
+}
+inline ::pb::Video* Stream::mutable_video() {
+  if (!has_video()) {
+    clear_type();
+    set_has_video();
+    type_.video_ = new ::pb::Video;
+  }
+  // @@protoc_insertion_point(field_mutable:pb.Stream.video)
+  return type_.video_;
+}
+
+// .pb.Audio audio = 18;
+inline bool Stream::has_audio() const {
+  return type_case() == kAudio;
+}
+inline void Stream::set_has_audio() {
+  _oneof_case_[0] = kAudio;
+}
+inline void Stream::clear_audio() {
+  if (has_audio()) {
+    delete type_.audio_;
+    clear_has_type();
+  }
+}
+inline ::pb::Audio* Stream::release_audio() {
+  // @@protoc_insertion_point(field_release:pb.Stream.audio)
+  if (has_audio()) {
+    clear_has_type();
+      ::pb::Audio* temp = type_.audio_;
+    type_.audio_ = NULL;
+    return temp;
+  } else {
+    return NULL;
+  }
+}
+inline const ::pb::Audio& Stream::audio() const {
+  // @@protoc_insertion_point(field_get:pb.Stream.audio)
+  return has_audio()
+      ? *type_.audio_
+      : *reinterpret_cast< ::pb::Audio*>(&::pb::_Audio_default_instance_);
+}
+inline ::pb::Audio* Stream::mutable_audio() {
+  if (!has_audio()) {
+    clear_type();
+    set_has_audio();
+    type_.audio_ = new ::pb::Audio;
+  }
+  // @@protoc_insertion_point(field_mutable:pb.Stream.audio)
+  return type_.audio_;
+}
+
+inline bool Stream::has_type() const {
+  return type_case() != TYPE_NOT_SET;
+}
+inline void Stream::clear_has_type() {
+  _oneof_case_[0] = TYPE_NOT_SET;
+}
+inline Stream::TypeCase Stream::type_case() const {
+  return Stream::TypeCase(_oneof_case_[0]);
+}
 // -------------------------------------------------------------------
 
 // Fee
@@ -6837,7 +5188,7 @@ inline void Fee::set_address(::std::string&& value) {
 }
 #endif
 inline void Fee::set_address(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+  GOOGLE_DCHECK(value != NULL);
   
   address_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
   // @@protoc_insertion_point(field_set_char:pb.Fee.address)
@@ -6859,7 +5210,7 @@ inline ::std::string* Fee::release_address() {
   return address_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Fee::set_allocated_address(::std::string* address) {
-  if (address != nullptr) {
+  if (address != NULL) {
     
   } else {
     
@@ -6870,7 +5221,7 @@ inline void Fee::set_allocated_address(::std::string* address) {
 
 // uint64 amount = 3;
 inline void Fee::clear_amount() {
-  amount_ = PROTOBUF_ULONGLONG(0);
+  amount_ = GOOGLE_ULONGLONG(0);
 }
 inline ::google::protobuf::uint64 Fee::amount() const {
   // @@protoc_insertion_point(field_get:pb.Fee.amount)
@@ -6884,6 +5235,130 @@ inline void Fee::set_amount(::google::protobuf::uint64 value) {
 
 // -------------------------------------------------------------------
 
+// File
+
+// bytes hash = 3;
+inline void File::clear_hash() {
+  hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& File::hash() const {
+  // @@protoc_insertion_point(field_get:pb.File.hash)
+  return hash_.GetNoArena();
+}
+inline void File::set_hash(const ::std::string& value) {
+  
+  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.File.hash)
+}
+#if LANG_CXX11
+inline void File::set_hash(::std::string&& value) {
+  
+  hash_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.File.hash)
+}
+#endif
+inline void File::set_hash(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.File.hash)
+}
+inline void File::set_hash(const void* value, size_t size) {
+  
+  hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.File.hash)
+}
+inline ::std::string* File::mutable_hash() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.File.hash)
+  return hash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* File::release_hash() {
+  // @@protoc_insertion_point(field_release:pb.File.hash)
+  
+  return hash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void File::set_allocated_hash(::std::string* hash) {
+  if (hash != NULL) {
+    
+  } else {
+    
+  }
+  hash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), hash);
+  // @@protoc_insertion_point(field_set_allocated:pb.File.hash)
+}
+
+// string name = 1;
+inline void File::clear_name() {
+  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& File::name() const {
+  // @@protoc_insertion_point(field_get:pb.File.name)
+  return name_.GetNoArena();
+}
+inline void File::set_name(const ::std::string& value) {
+  
+  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:pb.File.name)
+}
+#if LANG_CXX11
+inline void File::set_name(::std::string&& value) {
+  
+  name_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:pb.File.name)
+}
+#endif
+inline void File::set_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:pb.File.name)
+}
+inline void File::set_name(const char* value, size_t size) {
+  
+  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:pb.File.name)
+}
+inline ::std::string* File::mutable_name() {
+  
+  // @@protoc_insertion_point(field_mutable:pb.File.name)
+  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* File::release_name() {
+  // @@protoc_insertion_point(field_release:pb.File.name)
+  
+  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void File::set_allocated_name(::std::string* name) {
+  if (name != NULL) {
+    
+  } else {
+    
+  }
+  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
+  // @@protoc_insertion_point(field_set_allocated:pb.File.name)
+}
+
+// uint64 size = 2;
+inline void File::clear_size() {
+  size_ = GOOGLE_ULONGLONG(0);
+}
+inline ::google::protobuf::uint64 File::size() const {
+  // @@protoc_insertion_point(field_get:pb.File.size)
+  return size_;
+}
+inline void File::set_size(::google::protobuf::uint64 value) {
+  
+  size_ = value;
+  // @@protoc_insertion_point(field_set:pb.File.size)
+}
+
+// -------------------------------------------------------------------
+
 // Image
 
 // uint32 width = 1;
@@ -6960,57 +5435,6 @@ inline void Video::set_duration(::google::protobuf::uint32 value) {
   // @@protoc_insertion_point(field_set:pb.Video.duration)
 }
 
-// .pb.Audio audio = 15;
-inline bool Video::has_audio() const {
-  return this != internal_default_instance() && audio_ != nullptr;
-}
-inline void Video::clear_audio() {
-  if (GetArenaNoVirtual() == nullptr && audio_ != nullptr) {
-    delete audio_;
-  }
-  audio_ = nullptr;
-}
-inline const ::pb::Audio& Video::audio() const {
-  const ::pb::Audio* p = audio_;
-  // @@protoc_insertion_point(field_get:pb.Video.audio)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::Audio*>(
-      &::pb::_Audio_default_instance_);
-}
-inline ::pb::Audio* Video::release_audio() {
-  // @@protoc_insertion_point(field_release:pb.Video.audio)
-  
-  ::pb::Audio* temp = audio_;
-  audio_ = nullptr;
-  return temp;
-}
-inline ::pb::Audio* Video::mutable_audio() {
-  
-  if (audio_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::Audio>(GetArenaNoVirtual());
-    audio_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Video.audio)
-  return audio_;
-}
-inline void Video::set_allocated_audio(::pb::Audio* audio) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete audio_;
-  }
-  if (audio) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      audio = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, audio, submessage_arena);
-    }
-    
-  } else {
-    
-  }
-  audio_ = audio;
-  // @@protoc_insertion_point(field_set_allocated:pb.Video.audio)
-}
-
 // -------------------------------------------------------------------
 
 // Audio
@@ -7031,63 +5455,6 @@ inline void Audio::set_duration(::google::protobuf::uint32 value) {
 
 // -------------------------------------------------------------------
 
-// Software
-
-// string os = 1;
-inline void Software::clear_os() {
-  os_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Software::os() const {
-  // @@protoc_insertion_point(field_get:pb.Software.os)
-  return os_.GetNoArena();
-}
-inline void Software::set_os(const ::std::string& value) {
-  
-  os_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Software.os)
-}
-#if LANG_CXX11
-inline void Software::set_os(::std::string&& value) {
-  
-  os_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Software.os)
-}
-#endif
-inline void Software::set_os(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  os_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Software.os)
-}
-inline void Software::set_os(const char* value, size_t size) {
-  
-  os_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Software.os)
-}
-inline ::std::string* Software::mutable_os() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Software.os)
-  return os_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Software::release_os() {
-  // @@protoc_insertion_point(field_release:pb.Software.os)
-  
-  return os_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Software::set_allocated_os(::std::string* os) {
-  if (os != nullptr) {
-    
-  } else {
-    
-  }
-  os_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), os);
-  // @@protoc_insertion_point(field_set_allocated:pb.Software.os)
-}
-
-// -------------------------------------------------------------------
-
 // Language
 
 // .pb.Language.Language language = 1;
@@ -7172,7 +5539,7 @@ inline void Location::set_state(::std::string&& value) {
 }
 #endif
 inline void Location::set_state(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+  GOOGLE_DCHECK(value != NULL);
   
   state_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
   // @@protoc_insertion_point(field_set_char:pb.Location.state)
@@ -7194,7 +5561,7 @@ inline ::std::string* Location::release_state() {
   return state_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Location::set_allocated_state(::std::string* state) {
-  if (state != nullptr) {
+  if (state != NULL) {
     
   } else {
     
@@ -7225,7 +5592,7 @@ inline void Location::set_city(::std::string&& value) {
 }
 #endif
 inline void Location::set_city(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+  GOOGLE_DCHECK(value != NULL);
   
   city_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
   // @@protoc_insertion_point(field_set_char:pb.Location.city)
@@ -7247,7 +5614,7 @@ inline ::std::string* Location::release_city() {
   return city_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Location::set_allocated_city(::std::string* city) {
-  if (city != nullptr) {
+  if (city != NULL) {
     
   } else {
     
@@ -7278,7 +5645,7 @@ inline void Location::set_code(::std::string&& value) {
 }
 #endif
 inline void Location::set_code(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
+  GOOGLE_DCHECK(value != NULL);
   
   code_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
   // @@protoc_insertion_point(field_set_char:pb.Location.code)
@@ -7300,7 +5667,7 @@ inline ::std::string* Location::release_code() {
   return code_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 inline void Location::set_allocated_code(::std::string* code) {
-  if (code != nullptr) {
+  if (code != NULL) {
     
   } else {
     
@@ -7358,12 +5725,6 @@ inline void Location::set_longitude(::google::protobuf::int32 value) {
 
 // -------------------------------------------------------------------
 
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
 
 // @@protoc_insertion_point(namespace_scope)
 
@@ -7372,32 +5733,22 @@ inline void Location::set_longitude(::google::protobuf::int32 value) {
 namespace google {
 namespace protobuf {
 
-template <> struct is_proto_enum< ::pb::ClaimList_ListType> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::pb::ClaimList_ListType>() {
-  return ::pb::ClaimList_ListType_descriptor();
-}
-template <> struct is_proto_enum< ::pb::Fee_Currency> : ::std::true_type {};
+template <> struct is_proto_enum< ::pb::Fee_Currency> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::pb::Fee_Currency>() {
   return ::pb::Fee_Currency_descriptor();
 }
-template <> struct is_proto_enum< ::pb::Software_OS> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::pb::Software_OS>() {
-  return ::pb::Software_OS_descriptor();
-}
-template <> struct is_proto_enum< ::pb::Language_Language> : ::std::true_type {};
+template <> struct is_proto_enum< ::pb::Language_Language> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::pb::Language_Language>() {
   return ::pb::Language_Language_descriptor();
 }
-template <> struct is_proto_enum< ::pb::Language_Script> : ::std::true_type {};
+template <> struct is_proto_enum< ::pb::Language_Script> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::pb::Language_Script>() {
   return ::pb::Language_Script_descriptor();
 }
-template <> struct is_proto_enum< ::pb::Location_Country> : ::std::true_type {};
+template <> struct is_proto_enum< ::pb::Location_Country> : ::google::protobuf::internal::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::pb::Location_Country>() {
   return ::pb::Location_Country_descriptor();
@@ -7408,5 +5759,4 @@ inline const EnumDescriptor* GetEnumDescriptor< ::pb::Location_Country>() {
 
 // @@protoc_insertion_point(global_scope)
 
-#include <google/protobuf/port_undef.inc>
-#endif  // PROTOBUF_INCLUDED_claim_2eproto
+#endif  // PROTOBUF_claim_2eproto__INCLUDED
diff --git a/v2/cpp/purchase.pb.cc b/v2/cpp/purchase.pb.cc
deleted file mode 100644
index 14c7569..0000000
--- a/v2/cpp/purchase.pb.cc
+++ /dev/null
@@ -1,385 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: purchase.proto
-
-#include "purchase.pb.h"
-
-#include <algorithm>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/extension_set.h>
-#include <google/protobuf/wire_format_lite_inl.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/reflection_ops.h>
-#include <google/protobuf/wire_format.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-
-namespace pb {
-class PurchaseDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Purchase> _instance;
-} _Purchase_default_instance_;
-}  // namespace pb
-static void InitDefaultsPurchase_purchase_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_Purchase_default_instance_;
-    new (ptr) ::pb::Purchase();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::Purchase::InitAsDefaultInstance();
-}
-
-::google::protobuf::internal::SCCInfo<0> scc_info_Purchase_purchase_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsPurchase_purchase_2eproto}, {}};
-
-void InitDefaults_purchase_2eproto() {
-  ::google::protobuf::internal::InitSCC(&scc_info_Purchase_purchase_2eproto.base);
-}
-
-::google::protobuf::Metadata file_level_metadata_purchase_2eproto[1];
-constexpr ::google::protobuf::EnumDescriptor const** file_level_enum_descriptors_purchase_2eproto = nullptr;
-constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_purchase_2eproto = nullptr;
-
-const ::google::protobuf::uint32 TableStruct_purchase_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Purchase, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Purchase, claim_hash_),
-};
-static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
-  { 0, -1, sizeof(::pb::Purchase)},
-};
-
-static ::google::protobuf::Message const * const file_default_instances[] = {
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Purchase_default_instance_),
-};
-
-::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_purchase_2eproto = {
-  {}, AddDescriptors_purchase_2eproto, "purchase.proto", schemas,
-  file_default_instances, TableStruct_purchase_2eproto::offsets,
-  file_level_metadata_purchase_2eproto, 1, file_level_enum_descriptors_purchase_2eproto, file_level_service_descriptors_purchase_2eproto,
-};
-
-const char descriptor_table_protodef_purchase_2eproto[] =
-  "\n\016purchase.proto\022\002pb\"\036\n\010Purchase\022\022\n\nclai"
-  "m_hash\030\001 \001(\014b\006proto3"
-  ;
-::google::protobuf::internal::DescriptorTable descriptor_table_purchase_2eproto = {
-  false, InitDefaults_purchase_2eproto, 
-  descriptor_table_protodef_purchase_2eproto,
-  "purchase.proto", &assign_descriptors_table_purchase_2eproto, 60,
-};
-
-void AddDescriptors_purchase_2eproto() {
-  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
-  {
-  };
- ::google::protobuf::internal::AddDescriptors(&descriptor_table_purchase_2eproto, deps, 0);
-}
-
-// Force running AddDescriptors() at dynamic initialization time.
-static bool dynamic_init_dummy_purchase_2eproto = []() { AddDescriptors_purchase_2eproto(); return true; }();
-namespace pb {
-
-// ===================================================================
-
-void Purchase::InitAsDefaultInstance() {
-}
-class Purchase::HasBitSetters {
- public:
-};
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Purchase::kClaimHashFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-Purchase::Purchase()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.Purchase)
-}
-Purchase::Purchase(const Purchase& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  claim_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.claim_hash().size() > 0) {
-    claim_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.claim_hash_);
-  }
-  // @@protoc_insertion_point(copy_constructor:pb.Purchase)
-}
-
-void Purchase::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Purchase_purchase_2eproto.base);
-  claim_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-Purchase::~Purchase() {
-  // @@protoc_insertion_point(destructor:pb.Purchase)
-  SharedDtor();
-}
-
-void Purchase::SharedDtor() {
-  claim_hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-void Purchase::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const Purchase& Purchase::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Purchase_purchase_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void Purchase::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.Purchase)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  claim_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Purchase::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Purchase*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // bytes claim_hash = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_claim_hash();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool Purchase::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.Purchase)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bytes claim_hash = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_claim_hash()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.Purchase)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.Purchase)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void Purchase::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.Purchase)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes claim_hash = 1;
-  if (this->claim_hash().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      1, this->claim_hash(), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.Purchase)
-}
-
-::google::protobuf::uint8* Purchase::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.Purchase)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes claim_hash = 1;
-  if (this->claim_hash().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        1, this->claim_hash(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.Purchase)
-  return target;
-}
-
-size_t Purchase::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.Purchase)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // bytes claim_hash = 1;
-  if (this->claim_hash().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->claim_hash());
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void Purchase::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.Purchase)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Purchase* source =
-      ::google::protobuf::DynamicCastToGenerated<Purchase>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Purchase)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Purchase)
-    MergeFrom(*source);
-  }
-}
-
-void Purchase::MergeFrom(const Purchase& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.Purchase)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.claim_hash().size() > 0) {
-
-    claim_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.claim_hash_);
-  }
-}
-
-void Purchase::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.Purchase)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Purchase::CopyFrom(const Purchase& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.Purchase)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Purchase::IsInitialized() const {
-  return true;
-}
-
-void Purchase::Swap(Purchase* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void Purchase::InternalSwap(Purchase* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  claim_hash_.Swap(&other->claim_hash_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-}
-
-::google::protobuf::Metadata Purchase::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_purchase_2eproto);
-  return ::file_level_metadata_purchase_2eproto[kIndexInFileMessages];
-}
-
-
-// @@protoc_insertion_point(namespace_scope)
-}  // namespace pb
-namespace google {
-namespace protobuf {
-template<> PROTOBUF_NOINLINE ::pb::Purchase* Arena::CreateMaybeMessage< ::pb::Purchase >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Purchase >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
-
-// @@protoc_insertion_point(global_scope)
-#include <google/protobuf/port_undef.inc>
diff --git a/v2/cpp/purchase.pb.h b/v2/cpp/purchase.pb.h
deleted file mode 100644
index 85afb11..0000000
--- a/v2/cpp/purchase.pb.h
+++ /dev/null
@@ -1,258 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: purchase.proto
-
-#ifndef PROTOBUF_INCLUDED_purchase_2eproto
-#define PROTOBUF_INCLUDED_purchase_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3007000
-#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 3007000 < 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/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_table_driven.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
-#include <google/protobuf/metadata.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
-#include <google/protobuf/extension_set.h>  // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_purchase_2eproto
-
-// Internal implementation detail -- do not use these members.
-struct TableStruct_purchase_2eproto {
-  static const ::google::protobuf::internal::ParseTableField entries[]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[1]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
-  static const ::google::protobuf::internal::SerializationTable serialization_table[];
-  static const ::google::protobuf::uint32 offsets[];
-};
-void AddDescriptors_purchase_2eproto();
-namespace pb {
-class Purchase;
-class PurchaseDefaultTypeInternal;
-extern PurchaseDefaultTypeInternal _Purchase_default_instance_;
-}  // namespace pb
-namespace google {
-namespace protobuf {
-template<> ::pb::Purchase* Arena::CreateMaybeMessage<::pb::Purchase>(Arena*);
-}  // namespace protobuf
-}  // namespace google
-namespace pb {
-
-// ===================================================================
-
-class Purchase final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Purchase) */ {
- public:
-  Purchase();
-  virtual ~Purchase();
-
-  Purchase(const Purchase& from);
-
-  inline Purchase& operator=(const Purchase& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  Purchase(Purchase&& from) noexcept
-    : Purchase() {
-    *this = ::std::move(from);
-  }
-
-  inline Purchase& operator=(Purchase&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const Purchase& default_instance();
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Purchase* internal_default_instance() {
-    return reinterpret_cast<const Purchase*>(
-               &_Purchase_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    0;
-
-  void Swap(Purchase* other);
-  friend void swap(Purchase& a, Purchase& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline Purchase* New() const final {
-    return CreateMaybeMessage<Purchase>(nullptr);
-  }
-
-  Purchase* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Purchase>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const Purchase& from);
-  void MergeFrom(const Purchase& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(Purchase* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  // accessors -------------------------------------------------------
-
-  // bytes claim_hash = 1;
-  void clear_claim_hash();
-  static const int kClaimHashFieldNumber = 1;
-  const ::std::string& claim_hash() const;
-  void set_claim_hash(const ::std::string& value);
-  #if LANG_CXX11
-  void set_claim_hash(::std::string&& value);
-  #endif
-  void set_claim_hash(const char* value);
-  void set_claim_hash(const void* value, size_t size);
-  ::std::string* mutable_claim_hash();
-  ::std::string* release_claim_hash();
-  void set_allocated_claim_hash(::std::string* claim_hash);
-
-  // @@protoc_insertion_point(class_scope:pb.Purchase)
- private:
-  class HasBitSetters;
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr claim_hash_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_purchase_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
-  #pragma GCC diagnostic push
-  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif  // __GNUC__
-// Purchase
-
-// bytes claim_hash = 1;
-inline void Purchase::clear_claim_hash() {
-  claim_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Purchase::claim_hash() const {
-  // @@protoc_insertion_point(field_get:pb.Purchase.claim_hash)
-  return claim_hash_.GetNoArena();
-}
-inline void Purchase::set_claim_hash(const ::std::string& value) {
-  
-  claim_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Purchase.claim_hash)
-}
-#if LANG_CXX11
-inline void Purchase::set_claim_hash(::std::string&& value) {
-  
-  claim_hash_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Purchase.claim_hash)
-}
-#endif
-inline void Purchase::set_claim_hash(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  claim_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Purchase.claim_hash)
-}
-inline void Purchase::set_claim_hash(const void* value, size_t size) {
-  
-  claim_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Purchase.claim_hash)
-}
-inline ::std::string* Purchase::mutable_claim_hash() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Purchase.claim_hash)
-  return claim_hash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Purchase::release_claim_hash() {
-  // @@protoc_insertion_point(field_release:pb.Purchase.claim_hash)
-  
-  return claim_hash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Purchase::set_allocated_claim_hash(::std::string* claim_hash) {
-  if (claim_hash != nullptr) {
-    
-  } else {
-    
-  }
-  claim_hash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), claim_hash);
-  // @@protoc_insertion_point(field_set_allocated:pb.Purchase.claim_hash)
-}
-
-#ifdef __GNUC__
-  #pragma GCC diagnostic pop
-#endif  // __GNUC__
-
-// @@protoc_insertion_point(namespace_scope)
-
-}  // namespace pb
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif  // PROTOBUF_INCLUDED_purchase_2eproto
diff --git a/v2/cpp/result.pb.cc b/v2/cpp/result.pb.cc
deleted file mode 100644
index 8e9170e..0000000
--- a/v2/cpp/result.pb.cc
+++ /dev/null
@@ -1,2648 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: result.proto
-
-#include "result.pb.h"
-
-#include <algorithm>
-
-#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/extension_set.h>
-#include <google/protobuf/wire_format_lite_inl.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/reflection_ops.h>
-#include <google/protobuf/wire_format.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-
-extern PROTOBUF_INTERNAL_EXPORT_result_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Error_result_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_result_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ClaimMeta_result_2eproto;
-namespace pb {
-class OutputsDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Outputs> _instance;
-} _Outputs_default_instance_;
-class OutputDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Output> _instance;
-  const ::pb::ClaimMeta* claim_;
-  const ::pb::Error* error_;
-} _Output_default_instance_;
-class ClaimMetaDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<ClaimMeta> _instance;
-} _ClaimMeta_default_instance_;
-class ErrorDefaultTypeInternal {
- public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Error> _instance;
-} _Error_default_instance_;
-}  // namespace pb
-static void InitDefaultsOutputs_result_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_Outputs_default_instance_;
-    new (ptr) ::pb::Outputs();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::Outputs::InitAsDefaultInstance();
-}
-
-::google::protobuf::internal::SCCInfo<1> scc_info_Outputs_result_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsOutputs_result_2eproto}, {
-      &scc_info_ClaimMeta_result_2eproto.base,}};
-
-static void InitDefaultsClaimMeta_result_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_Output_default_instance_;
-    new (ptr) ::pb::Output();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  {
-    void* ptr = &::pb::_ClaimMeta_default_instance_;
-    new (ptr) ::pb::ClaimMeta();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::Output::InitAsDefaultInstance();
-  ::pb::ClaimMeta::InitAsDefaultInstance();
-}
-
-::google::protobuf::internal::SCCInfo<1> scc_info_ClaimMeta_result_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsClaimMeta_result_2eproto}, {
-      &scc_info_Error_result_2eproto.base,}};
-
-static void InitDefaultsError_result_2eproto() {
-  GOOGLE_PROTOBUF_VERIFY_VERSION;
-
-  {
-    void* ptr = &::pb::_Error_default_instance_;
-    new (ptr) ::pb::Error();
-    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
-  }
-  ::pb::Error::InitAsDefaultInstance();
-}
-
-::google::protobuf::internal::SCCInfo<0> scc_info_Error_result_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsError_result_2eproto}, {}};
-
-void InitDefaults_result_2eproto() {
-  ::google::protobuf::internal::InitSCC(&scc_info_Outputs_result_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_ClaimMeta_result_2eproto.base);
-  ::google::protobuf::internal::InitSCC(&scc_info_Error_result_2eproto.base);
-}
-
-::google::protobuf::Metadata file_level_metadata_result_2eproto[4];
-const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_result_2eproto[1];
-constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_result_2eproto = nullptr;
-
-const ::google::protobuf::uint32 TableStruct_result_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Outputs, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Outputs, txos_),
-  PROTOBUF_FIELD_OFFSET(::pb::Outputs, extra_txos_),
-  PROTOBUF_FIELD_OFFSET(::pb::Outputs, total_),
-  PROTOBUF_FIELD_OFFSET(::pb::Outputs, offset_),
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Output, _internal_metadata_),
-  ~0u,  // no _extensions_
-  PROTOBUF_FIELD_OFFSET(::pb::Output, _oneof_case_[0]),
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Output, tx_hash_),
-  PROTOBUF_FIELD_OFFSET(::pb::Output, nout_),
-  PROTOBUF_FIELD_OFFSET(::pb::Output, height_),
-  offsetof(::pb::OutputDefaultTypeInternal, claim_),
-  offsetof(::pb::OutputDefaultTypeInternal, error_),
-  PROTOBUF_FIELD_OFFSET(::pb::Output, meta_),
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, channel_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, repost_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, short_url_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, canonical_url_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, is_controlling_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, take_over_height_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, creation_height_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, activation_height_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, expiration_height_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, claims_in_channel_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, reposted_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, effective_amount_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, support_amount_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, trending_group_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, trending_mixed_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, trending_local_),
-  PROTOBUF_FIELD_OFFSET(::pb::ClaimMeta, trending_global_),
-  ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::pb::Error, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  PROTOBUF_FIELD_OFFSET(::pb::Error, code_),
-  PROTOBUF_FIELD_OFFSET(::pb::Error, text_),
-};
-static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
-  { 0, -1, sizeof(::pb::Outputs)},
-  { 9, -1, sizeof(::pb::Output)},
-  { 20, -1, sizeof(::pb::ClaimMeta)},
-  { 42, -1, sizeof(::pb::Error)},
-};
-
-static ::google::protobuf::Message const * const file_default_instances[] = {
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Outputs_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Output_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_ClaimMeta_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::pb::_Error_default_instance_),
-};
-
-::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_result_2eproto = {
-  {}, AddDescriptors_result_2eproto, "result.proto", schemas,
-  file_default_instances, TableStruct_result_2eproto::offsets,
-  file_level_metadata_result_2eproto, 4, file_level_enum_descriptors_result_2eproto, file_level_service_descriptors_result_2eproto,
-};
-
-const char descriptor_table_protodef_result_2eproto[] =
-  "\n\014result.proto\022\002pb\"b\n\007Outputs\022\030\n\004txos\030\001 "
-  "\003(\0132\n.pb.Output\022\036\n\nextra_txos\030\002 \003(\0132\n.pb"
-  ".Output\022\r\n\005total\030\003 \001(\r\022\016\n\006offset\030\004 \001(\r\"{"
-  "\n\006Output\022\017\n\007tx_hash\030\001 \001(\014\022\014\n\004nout\030\002 \001(\r\022"
-  "\016\n\006height\030\003 \001(\r\022\036\n\005claim\030\007 \001(\0132\r.pb.Clai"
-  "mMetaH\000\022\032\n\005error\030\017 \001(\0132\t.pb.ErrorH\000B\006\n\004m"
-  "eta\"\257\003\n\tClaimMeta\022\033\n\007channel\030\001 \001(\0132\n.pb."
-  "Output\022\032\n\006repost\030\002 \001(\0132\n.pb.Output\022\021\n\tsh"
-  "ort_url\030\003 \001(\t\022\025\n\rcanonical_url\030\004 \001(\t\022\026\n\016"
-  "is_controlling\030\005 \001(\010\022\030\n\020take_over_height"
-  "\030\006 \001(\r\022\027\n\017creation_height\030\007 \001(\r\022\031\n\021activ"
-  "ation_height\030\010 \001(\r\022\031\n\021expiration_height\030"
-  "\t \001(\r\022\031\n\021claims_in_channel\030\n \001(\r\022\020\n\010repo"
-  "sted\030\013 \001(\r\022\030\n\020effective_amount\030\024 \001(\004\022\026\n\016"
-  "support_amount\030\025 \001(\004\022\026\n\016trending_group\030\026"
-  " \001(\r\022\026\n\016trending_mixed\030\027 \001(\002\022\026\n\016trending"
-  "_local\030\030 \001(\002\022\027\n\017trending_global\030\031 \001(\002\"i\n"
-  "\005Error\022\034\n\004code\030\001 \001(\0162\016.pb.Error.Code\022\014\n\004"
-  "text\030\002 \001(\t\"4\n\004Code\022\020\n\014UNKNOWN_CODE\020\000\022\r\n\t"
-  "NOT_FOUND\020\001\022\013\n\007INVALID\020\002b\006proto3"
-  ;
-::google::protobuf::internal::DescriptorTable descriptor_table_result_2eproto = {
-  false, InitDefaults_result_2eproto, 
-  descriptor_table_protodef_result_2eproto,
-  "result.proto", &assign_descriptors_table_result_2eproto, 792,
-};
-
-void AddDescriptors_result_2eproto() {
-  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
-  {
-  };
- ::google::protobuf::internal::AddDescriptors(&descriptor_table_result_2eproto, deps, 0);
-}
-
-// Force running AddDescriptors() at dynamic initialization time.
-static bool dynamic_init_dummy_result_2eproto = []() { AddDescriptors_result_2eproto(); return true; }();
-namespace pb {
-const ::google::protobuf::EnumDescriptor* Error_Code_descriptor() {
-  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_result_2eproto);
-  return file_level_enum_descriptors_result_2eproto[0];
-}
-bool Error_Code_IsValid(int value) {
-  switch (value) {
-    case 0:
-    case 1:
-    case 2:
-      return true;
-    default:
-      return false;
-  }
-}
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const Error_Code Error::UNKNOWN_CODE;
-const Error_Code Error::NOT_FOUND;
-const Error_Code Error::INVALID;
-const Error_Code Error::Code_MIN;
-const Error_Code Error::Code_MAX;
-const int Error::Code_ARRAYSIZE;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-// ===================================================================
-
-void Outputs::InitAsDefaultInstance() {
-}
-class Outputs::HasBitSetters {
- public:
-};
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Outputs::kTxosFieldNumber;
-const int Outputs::kExtraTxosFieldNumber;
-const int Outputs::kTotalFieldNumber;
-const int Outputs::kOffsetFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-Outputs::Outputs()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.Outputs)
-}
-Outputs::Outputs(const Outputs& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr),
-      txos_(from.txos_),
-      extra_txos_(from.extra_txos_) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::memcpy(&total_, &from.total_,
-    static_cast<size_t>(reinterpret_cast<char*>(&offset_) -
-    reinterpret_cast<char*>(&total_)) + sizeof(offset_));
-  // @@protoc_insertion_point(copy_constructor:pb.Outputs)
-}
-
-void Outputs::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Outputs_result_2eproto.base);
-  ::memset(&total_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&offset_) -
-      reinterpret_cast<char*>(&total_)) + sizeof(offset_));
-}
-
-Outputs::~Outputs() {
-  // @@protoc_insertion_point(destructor:pb.Outputs)
-  SharedDtor();
-}
-
-void Outputs::SharedDtor() {
-}
-
-void Outputs::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const Outputs& Outputs::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Outputs_result_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void Outputs::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.Outputs)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  txos_.Clear();
-  extra_txos_.Clear();
-  ::memset(&total_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&offset_) -
-      reinterpret_cast<char*>(&total_)) + sizeof(offset_));
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Outputs::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Outputs*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // repeated .pb.Output txos = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        do {
-          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-          parser_till_end = ::pb::Output::_InternalParse;
-          object = msg->add_txos();
-          if (size > end - ptr) goto len_delim_till_end;
-          ptr += size;
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-              {parser_till_end, object}, ptr - size, ptr));
-          if (ptr >= end) break;
-        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 10 && (ptr += 1));
-        break;
-      }
-      // repeated .pb.Output extra_txos = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        do {
-          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-          parser_till_end = ::pb::Output::_InternalParse;
-          object = msg->add_extra_txos();
-          if (size > end - ptr) goto len_delim_till_end;
-          ptr += size;
-          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-              {parser_till_end, object}, ptr - size, ptr));
-          if (ptr >= end) break;
-        } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
-        break;
-      }
-      // uint32 total = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
-        msg->set_total(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 offset = 4;
-      case 4: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 32) goto handle_unusual;
-        msg->set_offset(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool Outputs::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.Outputs)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // repeated .pb.Output txos = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_txos()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated .pb.Output extra_txos = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-                input, add_extra_txos()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 total = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &total_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 offset = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (32 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &offset_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.Outputs)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.Outputs)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void Outputs::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.Outputs)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // repeated .pb.Output txos = 1;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->txos_size()); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1,
-      this->txos(static_cast<int>(i)),
-      output);
-  }
-
-  // repeated .pb.Output extra_txos = 2;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->extra_txos_size()); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2,
-      this->extra_txos(static_cast<int>(i)),
-      output);
-  }
-
-  // uint32 total = 3;
-  if (this->total() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->total(), output);
-  }
-
-  // uint32 offset = 4;
-  if (this->offset() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->offset(), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.Outputs)
-}
-
-::google::protobuf::uint8* Outputs::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.Outputs)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // repeated .pb.Output txos = 1;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->txos_size()); i < n; i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        1, this->txos(static_cast<int>(i)), target);
-  }
-
-  // repeated .pb.Output extra_txos = 2;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->extra_txos_size()); i < n; i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        2, this->extra_txos(static_cast<int>(i)), target);
-  }
-
-  // uint32 total = 3;
-  if (this->total() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->total(), target);
-  }
-
-  // uint32 offset = 4;
-  if (this->offset() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(4, this->offset(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.Outputs)
-  return target;
-}
-
-size_t Outputs::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.Outputs)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // repeated .pb.Output txos = 1;
-  {
-    unsigned int count = static_cast<unsigned int>(this->txos_size());
-    total_size += 1UL * count;
-    for (unsigned int i = 0; i < count; i++) {
-      total_size +=
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          this->txos(static_cast<int>(i)));
-    }
-  }
-
-  // repeated .pb.Output extra_txos = 2;
-  {
-    unsigned int count = static_cast<unsigned int>(this->extra_txos_size());
-    total_size += 1UL * count;
-    for (unsigned int i = 0; i < count; i++) {
-      total_size +=
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          this->extra_txos(static_cast<int>(i)));
-    }
-  }
-
-  // uint32 total = 3;
-  if (this->total() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->total());
-  }
-
-  // uint32 offset = 4;
-  if (this->offset() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->offset());
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void Outputs::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.Outputs)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Outputs* source =
-      ::google::protobuf::DynamicCastToGenerated<Outputs>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Outputs)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Outputs)
-    MergeFrom(*source);
-  }
-}
-
-void Outputs::MergeFrom(const Outputs& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.Outputs)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  txos_.MergeFrom(from.txos_);
-  extra_txos_.MergeFrom(from.extra_txos_);
-  if (from.total() != 0) {
-    set_total(from.total());
-  }
-  if (from.offset() != 0) {
-    set_offset(from.offset());
-  }
-}
-
-void Outputs::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.Outputs)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Outputs::CopyFrom(const Outputs& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.Outputs)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Outputs::IsInitialized() const {
-  return true;
-}
-
-void Outputs::Swap(Outputs* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void Outputs::InternalSwap(Outputs* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  CastToBase(&txos_)->InternalSwap(CastToBase(&other->txos_));
-  CastToBase(&extra_txos_)->InternalSwap(CastToBase(&other->extra_txos_));
-  swap(total_, other->total_);
-  swap(offset_, other->offset_);
-}
-
-::google::protobuf::Metadata Outputs::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_result_2eproto);
-  return ::file_level_metadata_result_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void Output::InitAsDefaultInstance() {
-  ::pb::_Output_default_instance_.claim_ = const_cast< ::pb::ClaimMeta*>(
-      ::pb::ClaimMeta::internal_default_instance());
-  ::pb::_Output_default_instance_.error_ = const_cast< ::pb::Error*>(
-      ::pb::Error::internal_default_instance());
-}
-class Output::HasBitSetters {
- public:
-  static const ::pb::ClaimMeta& claim(const Output* msg);
-  static const ::pb::Error& error(const Output* msg);
-};
-
-const ::pb::ClaimMeta&
-Output::HasBitSetters::claim(const Output* msg) {
-  return *msg->meta_.claim_;
-}
-const ::pb::Error&
-Output::HasBitSetters::error(const Output* msg) {
-  return *msg->meta_.error_;
-}
-void Output::set_allocated_claim(::pb::ClaimMeta* claim) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  clear_meta();
-  if (claim) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      claim = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, claim, submessage_arena);
-    }
-    set_has_claim();
-    meta_.claim_ = claim;
-  }
-  // @@protoc_insertion_point(field_set_allocated:pb.Output.claim)
-}
-void Output::set_allocated_error(::pb::Error* error) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  clear_meta();
-  if (error) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      error = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, error, submessage_arena);
-    }
-    set_has_error();
-    meta_.error_ = error;
-  }
-  // @@protoc_insertion_point(field_set_allocated:pb.Output.error)
-}
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Output::kTxHashFieldNumber;
-const int Output::kNoutFieldNumber;
-const int Output::kHeightFieldNumber;
-const int Output::kClaimFieldNumber;
-const int Output::kErrorFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-Output::Output()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.Output)
-}
-Output::Output(const Output& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  tx_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.tx_hash().size() > 0) {
-    tx_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tx_hash_);
-  }
-  ::memcpy(&nout_, &from.nout_,
-    static_cast<size_t>(reinterpret_cast<char*>(&height_) -
-    reinterpret_cast<char*>(&nout_)) + sizeof(height_));
-  clear_has_meta();
-  switch (from.meta_case()) {
-    case kClaim: {
-      mutable_claim()->::pb::ClaimMeta::MergeFrom(from.claim());
-      break;
-    }
-    case kError: {
-      mutable_error()->::pb::Error::MergeFrom(from.error());
-      break;
-    }
-    case META_NOT_SET: {
-      break;
-    }
-  }
-  // @@protoc_insertion_point(copy_constructor:pb.Output)
-}
-
-void Output::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_ClaimMeta_result_2eproto.base);
-  tx_hash_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&nout_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&height_) -
-      reinterpret_cast<char*>(&nout_)) + sizeof(height_));
-  clear_has_meta();
-}
-
-Output::~Output() {
-  // @@protoc_insertion_point(destructor:pb.Output)
-  SharedDtor();
-}
-
-void Output::SharedDtor() {
-  tx_hash_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (has_meta()) {
-    clear_meta();
-  }
-}
-
-void Output::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const Output& Output::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_ClaimMeta_result_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void Output::clear_meta() {
-// @@protoc_insertion_point(one_of_clear_start:pb.Output)
-  switch (meta_case()) {
-    case kClaim: {
-      delete meta_.claim_;
-      break;
-    }
-    case kError: {
-      delete meta_.error_;
-      break;
-    }
-    case META_NOT_SET: {
-      break;
-    }
-  }
-  _oneof_case_[0] = META_NOT_SET;
-}
-
-
-void Output::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.Output)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  tx_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&nout_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&height_) -
-      reinterpret_cast<char*>(&nout_)) + sizeof(height_));
-  clear_meta();
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Output::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Output*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // bytes tx_hash = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        object = msg->mutable_tx_hash();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // uint32 nout = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
-        msg->set_nout(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 height = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
-        msg->set_height(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // .pb.ClaimMeta claim = 7;
-      case 7: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::ClaimMeta::_InternalParse;
-        object = msg->mutable_claim();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.Error error = 15;
-      case 15: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 122) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Error::_InternalParse;
-        object = msg->mutable_error();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool Output::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.Output)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bytes tx_hash = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_tx_hash()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 nout = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &nout_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 height = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &height_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // .pb.ClaimMeta claim = 7;
-      case 7: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_claim()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // .pb.Error error = 15;
-      case 15: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (122 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_error()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.Output)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.Output)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void Output::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.Output)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes tx_hash = 1;
-  if (this->tx_hash().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      1, this->tx_hash(), output);
-  }
-
-  // uint32 nout = 2;
-  if (this->nout() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->nout(), output);
-  }
-
-  // uint32 height = 3;
-  if (this->height() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->height(), output);
-  }
-
-  // .pb.ClaimMeta claim = 7;
-  if (has_claim()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      7, HasBitSetters::claim(this), output);
-  }
-
-  // .pb.Error error = 15;
-  if (has_error()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      15, HasBitSetters::error(this), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.Output)
-}
-
-::google::protobuf::uint8* Output::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.Output)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // bytes tx_hash = 1;
-  if (this->tx_hash().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        1, this->tx_hash(), target);
-  }
-
-  // uint32 nout = 2;
-  if (this->nout() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->nout(), target);
-  }
-
-  // uint32 height = 3;
-  if (this->height() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->height(), target);
-  }
-
-  // .pb.ClaimMeta claim = 7;
-  if (has_claim()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        7, HasBitSetters::claim(this), target);
-  }
-
-  // .pb.Error error = 15;
-  if (has_error()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        15, HasBitSetters::error(this), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.Output)
-  return target;
-}
-
-size_t Output::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.Output)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // bytes tx_hash = 1;
-  if (this->tx_hash().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->tx_hash());
-  }
-
-  // uint32 nout = 2;
-  if (this->nout() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->nout());
-  }
-
-  // uint32 height = 3;
-  if (this->height() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->height());
-  }
-
-  switch (meta_case()) {
-    // .pb.ClaimMeta claim = 7;
-    case kClaim: {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          *meta_.claim_);
-      break;
-    }
-    // .pb.Error error = 15;
-    case kError: {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          *meta_.error_);
-      break;
-    }
-    case META_NOT_SET: {
-      break;
-    }
-  }
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void Output::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.Output)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Output* source =
-      ::google::protobuf::DynamicCastToGenerated<Output>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Output)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Output)
-    MergeFrom(*source);
-  }
-}
-
-void Output::MergeFrom(const Output& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.Output)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.tx_hash().size() > 0) {
-
-    tx_hash_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.tx_hash_);
-  }
-  if (from.nout() != 0) {
-    set_nout(from.nout());
-  }
-  if (from.height() != 0) {
-    set_height(from.height());
-  }
-  switch (from.meta_case()) {
-    case kClaim: {
-      mutable_claim()->::pb::ClaimMeta::MergeFrom(from.claim());
-      break;
-    }
-    case kError: {
-      mutable_error()->::pb::Error::MergeFrom(from.error());
-      break;
-    }
-    case META_NOT_SET: {
-      break;
-    }
-  }
-}
-
-void Output::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.Output)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Output::CopyFrom(const Output& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.Output)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Output::IsInitialized() const {
-  return true;
-}
-
-void Output::Swap(Output* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void Output::InternalSwap(Output* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  tx_hash_.Swap(&other->tx_hash_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  swap(nout_, other->nout_);
-  swap(height_, other->height_);
-  swap(meta_, other->meta_);
-  swap(_oneof_case_[0], other->_oneof_case_[0]);
-}
-
-::google::protobuf::Metadata Output::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_result_2eproto);
-  return ::file_level_metadata_result_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void ClaimMeta::InitAsDefaultInstance() {
-  ::pb::_ClaimMeta_default_instance_._instance.get_mutable()->channel_ = const_cast< ::pb::Output*>(
-      ::pb::Output::internal_default_instance());
-  ::pb::_ClaimMeta_default_instance_._instance.get_mutable()->repost_ = const_cast< ::pb::Output*>(
-      ::pb::Output::internal_default_instance());
-}
-class ClaimMeta::HasBitSetters {
- public:
-  static const ::pb::Output& channel(const ClaimMeta* msg);
-  static const ::pb::Output& repost(const ClaimMeta* msg);
-};
-
-const ::pb::Output&
-ClaimMeta::HasBitSetters::channel(const ClaimMeta* msg) {
-  return *msg->channel_;
-}
-const ::pb::Output&
-ClaimMeta::HasBitSetters::repost(const ClaimMeta* msg) {
-  return *msg->repost_;
-}
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int ClaimMeta::kChannelFieldNumber;
-const int ClaimMeta::kRepostFieldNumber;
-const int ClaimMeta::kShortUrlFieldNumber;
-const int ClaimMeta::kCanonicalUrlFieldNumber;
-const int ClaimMeta::kIsControllingFieldNumber;
-const int ClaimMeta::kTakeOverHeightFieldNumber;
-const int ClaimMeta::kCreationHeightFieldNumber;
-const int ClaimMeta::kActivationHeightFieldNumber;
-const int ClaimMeta::kExpirationHeightFieldNumber;
-const int ClaimMeta::kClaimsInChannelFieldNumber;
-const int ClaimMeta::kRepostedFieldNumber;
-const int ClaimMeta::kEffectiveAmountFieldNumber;
-const int ClaimMeta::kSupportAmountFieldNumber;
-const int ClaimMeta::kTrendingGroupFieldNumber;
-const int ClaimMeta::kTrendingMixedFieldNumber;
-const int ClaimMeta::kTrendingLocalFieldNumber;
-const int ClaimMeta::kTrendingGlobalFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-ClaimMeta::ClaimMeta()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.ClaimMeta)
-}
-ClaimMeta::ClaimMeta(const ClaimMeta& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  short_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.short_url().size() > 0) {
-    short_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_url_);
-  }
-  canonical_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.canonical_url().size() > 0) {
-    canonical_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.canonical_url_);
-  }
-  if (from.has_channel()) {
-    channel_ = new ::pb::Output(*from.channel_);
-  } else {
-    channel_ = nullptr;
-  }
-  if (from.has_repost()) {
-    repost_ = new ::pb::Output(*from.repost_);
-  } else {
-    repost_ = nullptr;
-  }
-  ::memcpy(&is_controlling_, &from.is_controlling_,
-    static_cast<size_t>(reinterpret_cast<char*>(&trending_local_) -
-    reinterpret_cast<char*>(&is_controlling_)) + sizeof(trending_local_));
-  // @@protoc_insertion_point(copy_constructor:pb.ClaimMeta)
-}
-
-void ClaimMeta::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_ClaimMeta_result_2eproto.base);
-  short_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  canonical_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&channel_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&trending_local_) -
-      reinterpret_cast<char*>(&channel_)) + sizeof(trending_local_));
-}
-
-ClaimMeta::~ClaimMeta() {
-  // @@protoc_insertion_point(destructor:pb.ClaimMeta)
-  SharedDtor();
-}
-
-void ClaimMeta::SharedDtor() {
-  short_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  canonical_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (this != internal_default_instance()) delete channel_;
-  if (this != internal_default_instance()) delete repost_;
-}
-
-void ClaimMeta::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const ClaimMeta& ClaimMeta::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_ClaimMeta_result_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void ClaimMeta::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.ClaimMeta)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  short_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  canonical_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (GetArenaNoVirtual() == nullptr && channel_ != nullptr) {
-    delete channel_;
-  }
-  channel_ = nullptr;
-  if (GetArenaNoVirtual() == nullptr && repost_ != nullptr) {
-    delete repost_;
-  }
-  repost_ = nullptr;
-  ::memset(&is_controlling_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&trending_local_) -
-      reinterpret_cast<char*>(&is_controlling_)) + sizeof(trending_local_));
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* ClaimMeta::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<ClaimMeta*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.Output channel = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Output::_InternalParse;
-        object = msg->mutable_channel();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // .pb.Output repost = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        parser_till_end = ::pb::Output::_InternalParse;
-        object = msg->mutable_repost();
-        if (size > end - ptr) goto len_delim_till_end;
-        ptr += size;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
-            {parser_till_end, object}, ptr - size, ptr));
-        break;
-      }
-      // string short_url = 3;
-      case 3: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.ClaimMeta.short_url");
-        object = msg->mutable_short_url();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // string canonical_url = 4;
-      case 4: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.ClaimMeta.canonical_url");
-        object = msg->mutable_canonical_url();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      // bool is_controlling = 5;
-      case 5: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
-        msg->set_is_controlling(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 take_over_height = 6;
-      case 6: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
-        msg->set_take_over_height(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 creation_height = 7;
-      case 7: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
-        msg->set_creation_height(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 activation_height = 8;
-      case 8: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
-        msg->set_activation_height(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 expiration_height = 9;
-      case 9: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 72) goto handle_unusual;
-        msg->set_expiration_height(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 claims_in_channel = 10;
-      case 10: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 80) goto handle_unusual;
-        msg->set_claims_in_channel(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 reposted = 11;
-      case 11: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 88) goto handle_unusual;
-        msg->set_reposted(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint64 effective_amount = 20;
-      case 20: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 160) goto handle_unusual;
-        msg->set_effective_amount(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint64 support_amount = 21;
-      case 21: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 168) goto handle_unusual;
-        msg->set_support_amount(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // uint32 trending_group = 22;
-      case 22: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 176) goto handle_unusual;
-        msg->set_trending_group(::google::protobuf::internal::ReadVarint(&ptr));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // float trending_mixed = 23;
-      case 23: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 189) goto handle_unusual;
-        msg->set_trending_mixed(::google::protobuf::io::UnalignedLoad<float>(ptr));
-        ptr += sizeof(float);
-        break;
-      }
-      // float trending_local = 24;
-      case 24: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 197) goto handle_unusual;
-        msg->set_trending_local(::google::protobuf::io::UnalignedLoad<float>(ptr));
-        ptr += sizeof(float);
-        break;
-      }
-      // float trending_global = 25;
-      case 25: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 205) goto handle_unusual;
-        msg->set_trending_global(::google::protobuf::io::UnalignedLoad<float>(ptr));
-        ptr += sizeof(float);
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool ClaimMeta::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.ClaimMeta)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .pb.Output channel = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_channel()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // .pb.Output repost = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_repost()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string short_url = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_short_url()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->short_url().data(), static_cast<int>(this->short_url().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.ClaimMeta.short_url"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string canonical_url = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_canonical_url()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->canonical_url().data(), static_cast<int>(this->canonical_url().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.ClaimMeta.canonical_url"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // bool is_controlling = 5;
-      case 5: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (40 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
-                 input, &is_controlling_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 take_over_height = 6;
-      case 6: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (48 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &take_over_height_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 creation_height = 7;
-      case 7: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (56 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &creation_height_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 activation_height = 8;
-      case 8: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (64 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &activation_height_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 expiration_height = 9;
-      case 9: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (72 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &expiration_height_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 claims_in_channel = 10;
-      case 10: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (80 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &claims_in_channel_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 reposted = 11;
-      case 11: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (88 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &reposted_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint64 effective_amount = 20;
-      case 20: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (160 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &effective_amount_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint64 support_amount = 21;
-      case 21: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (168 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
-                 input, &support_amount_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 trending_group = 22;
-      case 22: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (176 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &trending_group_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // float trending_mixed = 23;
-      case 23: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (189 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &trending_mixed_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // float trending_local = 24;
-      case 24: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (197 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &trending_local_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // float trending_global = 25;
-      case 25: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (205 & 0xFF)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
-                 input, &trending_global_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.ClaimMeta)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.ClaimMeta)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void ClaimMeta::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.ClaimMeta)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // .pb.Output channel = 1;
-  if (this->has_channel()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, HasBitSetters::channel(this), output);
-  }
-
-  // .pb.Output repost = 2;
-  if (this->has_repost()) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      2, HasBitSetters::repost(this), output);
-  }
-
-  // string short_url = 3;
-  if (this->short_url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->short_url().data(), static_cast<int>(this->short_url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.ClaimMeta.short_url");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      3, this->short_url(), output);
-  }
-
-  // string canonical_url = 4;
-  if (this->canonical_url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->canonical_url().data(), static_cast<int>(this->canonical_url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.ClaimMeta.canonical_url");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      4, this->canonical_url(), output);
-  }
-
-  // bool is_controlling = 5;
-  if (this->is_controlling() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->is_controlling(), output);
-  }
-
-  // uint32 take_over_height = 6;
-  if (this->take_over_height() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->take_over_height(), output);
-  }
-
-  // uint32 creation_height = 7;
-  if (this->creation_height() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(7, this->creation_height(), output);
-  }
-
-  // uint32 activation_height = 8;
-  if (this->activation_height() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(8, this->activation_height(), output);
-  }
-
-  // uint32 expiration_height = 9;
-  if (this->expiration_height() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(9, this->expiration_height(), output);
-  }
-
-  // uint32 claims_in_channel = 10;
-  if (this->claims_in_channel() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(10, this->claims_in_channel(), output);
-  }
-
-  // uint32 reposted = 11;
-  if (this->reposted() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(11, this->reposted(), output);
-  }
-
-  // uint64 effective_amount = 20;
-  if (this->effective_amount() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(20, this->effective_amount(), output);
-  }
-
-  // uint64 support_amount = 21;
-  if (this->support_amount() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt64(21, this->support_amount(), output);
-  }
-
-  // uint32 trending_group = 22;
-  if (this->trending_group() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(22, this->trending_group(), output);
-  }
-
-  // float trending_mixed = 23;
-  if (this->trending_mixed() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(23, this->trending_mixed(), output);
-  }
-
-  // float trending_local = 24;
-  if (this->trending_local() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(24, this->trending_local(), output);
-  }
-
-  // float trending_global = 25;
-  if (this->trending_global() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteFloat(25, this->trending_global(), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.ClaimMeta)
-}
-
-::google::protobuf::uint8* ClaimMeta::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.ClaimMeta)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // .pb.Output channel = 1;
-  if (this->has_channel()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        1, HasBitSetters::channel(this), target);
-  }
-
-  // .pb.Output repost = 2;
-  if (this->has_repost()) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        2, HasBitSetters::repost(this), target);
-  }
-
-  // string short_url = 3;
-  if (this->short_url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->short_url().data(), static_cast<int>(this->short_url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.ClaimMeta.short_url");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        3, this->short_url(), target);
-  }
-
-  // string canonical_url = 4;
-  if (this->canonical_url().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->canonical_url().data(), static_cast<int>(this->canonical_url().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.ClaimMeta.canonical_url");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        4, this->canonical_url(), target);
-  }
-
-  // bool is_controlling = 5;
-  if (this->is_controlling() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->is_controlling(), target);
-  }
-
-  // uint32 take_over_height = 6;
-  if (this->take_over_height() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(6, this->take_over_height(), target);
-  }
-
-  // uint32 creation_height = 7;
-  if (this->creation_height() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(7, this->creation_height(), target);
-  }
-
-  // uint32 activation_height = 8;
-  if (this->activation_height() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(8, this->activation_height(), target);
-  }
-
-  // uint32 expiration_height = 9;
-  if (this->expiration_height() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(9, this->expiration_height(), target);
-  }
-
-  // uint32 claims_in_channel = 10;
-  if (this->claims_in_channel() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(10, this->claims_in_channel(), target);
-  }
-
-  // uint32 reposted = 11;
-  if (this->reposted() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(11, this->reposted(), target);
-  }
-
-  // uint64 effective_amount = 20;
-  if (this->effective_amount() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(20, this->effective_amount(), target);
-  }
-
-  // uint64 support_amount = 21;
-  if (this->support_amount() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(21, this->support_amount(), target);
-  }
-
-  // uint32 trending_group = 22;
-  if (this->trending_group() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(22, this->trending_group(), target);
-  }
-
-  // float trending_mixed = 23;
-  if (this->trending_mixed() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(23, this->trending_mixed(), target);
-  }
-
-  // float trending_local = 24;
-  if (this->trending_local() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(24, this->trending_local(), target);
-  }
-
-  // float trending_global = 25;
-  if (this->trending_global() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(25, this->trending_global(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.ClaimMeta)
-  return target;
-}
-
-size_t ClaimMeta::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.ClaimMeta)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // string short_url = 3;
-  if (this->short_url().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->short_url());
-  }
-
-  // string canonical_url = 4;
-  if (this->canonical_url().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->canonical_url());
-  }
-
-  // .pb.Output channel = 1;
-  if (this->has_channel()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *channel_);
-  }
-
-  // .pb.Output repost = 2;
-  if (this->has_repost()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *repost_);
-  }
-
-  // bool is_controlling = 5;
-  if (this->is_controlling() != 0) {
-    total_size += 1 + 1;
-  }
-
-  // uint32 take_over_height = 6;
-  if (this->take_over_height() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->take_over_height());
-  }
-
-  // uint32 creation_height = 7;
-  if (this->creation_height() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->creation_height());
-  }
-
-  // uint32 activation_height = 8;
-  if (this->activation_height() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->activation_height());
-  }
-
-  // uint32 expiration_height = 9;
-  if (this->expiration_height() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->expiration_height());
-  }
-
-  // uint32 claims_in_channel = 10;
-  if (this->claims_in_channel() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->claims_in_channel());
-  }
-
-  // uint32 reposted = 11;
-  if (this->reposted() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->reposted());
-  }
-
-  // uint32 trending_group = 22;
-  if (this->trending_group() != 0) {
-    total_size += 2 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->trending_group());
-  }
-
-  // float trending_global = 25;
-  if (this->trending_global() != 0) {
-    total_size += 2 + 4;
-  }
-
-  // uint64 effective_amount = 20;
-  if (this->effective_amount() != 0) {
-    total_size += 2 +
-      ::google::protobuf::internal::WireFormatLite::UInt64Size(
-        this->effective_amount());
-  }
-
-  // uint64 support_amount = 21;
-  if (this->support_amount() != 0) {
-    total_size += 2 +
-      ::google::protobuf::internal::WireFormatLite::UInt64Size(
-        this->support_amount());
-  }
-
-  // float trending_mixed = 23;
-  if (this->trending_mixed() != 0) {
-    total_size += 2 + 4;
-  }
-
-  // float trending_local = 24;
-  if (this->trending_local() != 0) {
-    total_size += 2 + 4;
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void ClaimMeta::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.ClaimMeta)
-  GOOGLE_DCHECK_NE(&from, this);
-  const ClaimMeta* source =
-      ::google::protobuf::DynamicCastToGenerated<ClaimMeta>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.ClaimMeta)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.ClaimMeta)
-    MergeFrom(*source);
-  }
-}
-
-void ClaimMeta::MergeFrom(const ClaimMeta& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.ClaimMeta)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.short_url().size() > 0) {
-
-    short_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.short_url_);
-  }
-  if (from.canonical_url().size() > 0) {
-
-    canonical_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.canonical_url_);
-  }
-  if (from.has_channel()) {
-    mutable_channel()->::pb::Output::MergeFrom(from.channel());
-  }
-  if (from.has_repost()) {
-    mutable_repost()->::pb::Output::MergeFrom(from.repost());
-  }
-  if (from.is_controlling() != 0) {
-    set_is_controlling(from.is_controlling());
-  }
-  if (from.take_over_height() != 0) {
-    set_take_over_height(from.take_over_height());
-  }
-  if (from.creation_height() != 0) {
-    set_creation_height(from.creation_height());
-  }
-  if (from.activation_height() != 0) {
-    set_activation_height(from.activation_height());
-  }
-  if (from.expiration_height() != 0) {
-    set_expiration_height(from.expiration_height());
-  }
-  if (from.claims_in_channel() != 0) {
-    set_claims_in_channel(from.claims_in_channel());
-  }
-  if (from.reposted() != 0) {
-    set_reposted(from.reposted());
-  }
-  if (from.trending_group() != 0) {
-    set_trending_group(from.trending_group());
-  }
-  if (from.trending_global() != 0) {
-    set_trending_global(from.trending_global());
-  }
-  if (from.effective_amount() != 0) {
-    set_effective_amount(from.effective_amount());
-  }
-  if (from.support_amount() != 0) {
-    set_support_amount(from.support_amount());
-  }
-  if (from.trending_mixed() != 0) {
-    set_trending_mixed(from.trending_mixed());
-  }
-  if (from.trending_local() != 0) {
-    set_trending_local(from.trending_local());
-  }
-}
-
-void ClaimMeta::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.ClaimMeta)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void ClaimMeta::CopyFrom(const ClaimMeta& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.ClaimMeta)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool ClaimMeta::IsInitialized() const {
-  return true;
-}
-
-void ClaimMeta::Swap(ClaimMeta* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void ClaimMeta::InternalSwap(ClaimMeta* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  short_url_.Swap(&other->short_url_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  canonical_url_.Swap(&other->canonical_url_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  swap(channel_, other->channel_);
-  swap(repost_, other->repost_);
-  swap(is_controlling_, other->is_controlling_);
-  swap(take_over_height_, other->take_over_height_);
-  swap(creation_height_, other->creation_height_);
-  swap(activation_height_, other->activation_height_);
-  swap(expiration_height_, other->expiration_height_);
-  swap(claims_in_channel_, other->claims_in_channel_);
-  swap(reposted_, other->reposted_);
-  swap(trending_group_, other->trending_group_);
-  swap(trending_global_, other->trending_global_);
-  swap(effective_amount_, other->effective_amount_);
-  swap(support_amount_, other->support_amount_);
-  swap(trending_mixed_, other->trending_mixed_);
-  swap(trending_local_, other->trending_local_);
-}
-
-::google::protobuf::Metadata ClaimMeta::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_result_2eproto);
-  return ::file_level_metadata_result_2eproto[kIndexInFileMessages];
-}
-
-
-// ===================================================================
-
-void Error::InitAsDefaultInstance() {
-}
-class Error::HasBitSetters {
- public:
-};
-
-#if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Error::kCodeFieldNumber;
-const int Error::kTextFieldNumber;
-#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-
-Error::Error()
-  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
-  SharedCtor();
-  // @@protoc_insertion_point(constructor:pb.Error)
-}
-Error::Error(const Error& from)
-  : ::google::protobuf::Message(),
-      _internal_metadata_(nullptr) {
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  text_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.text().size() > 0) {
-    text_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.text_);
-  }
-  code_ = from.code_;
-  // @@protoc_insertion_point(copy_constructor:pb.Error)
-}
-
-void Error::SharedCtor() {
-  ::google::protobuf::internal::InitSCC(
-      &scc_info_Error_result_2eproto.base);
-  text_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  code_ = 0;
-}
-
-Error::~Error() {
-  // @@protoc_insertion_point(destructor:pb.Error)
-  SharedDtor();
-}
-
-void Error::SharedDtor() {
-  text_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-
-void Error::SetCachedSize(int size) const {
-  _cached_size_.Set(size);
-}
-const Error& Error::default_instance() {
-  ::google::protobuf::internal::InitSCC(&::scc_info_Error_result_2eproto.base);
-  return *internal_default_instance();
-}
-
-
-void Error::Clear() {
-// @@protoc_insertion_point(message_clear_start:pb.Error)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  text_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  code_ = 0;
-  _internal_metadata_.Clear();
-}
-
-#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-const char* Error::_InternalParse(const char* begin, const char* end, void* object,
-                  ::google::protobuf::internal::ParseContext* ctx) {
-  auto msg = static_cast<Error*>(object);
-  ::google::protobuf::int32 size; (void)size;
-  int depth; (void)depth;
-  ::google::protobuf::uint32 tag;
-  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
-  auto ptr = begin;
-  while (ptr < end) {
-    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
-    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-    switch (tag >> 3) {
-      // .pb.Error.Code code = 1;
-      case 1: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
-        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
-        msg->set_code(static_cast<::pb::Error_Code>(val));
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        break;
-      }
-      // string text = 2;
-      case 2: {
-        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
-        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
-        ctx->extra_parse_data().SetFieldName("pb.Error.text");
-        object = msg->mutable_text();
-        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
-          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
-          goto string_till_end;
-        }
-        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
-        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
-        ptr += size;
-        break;
-      }
-      default: {
-      handle_unusual:
-        if ((tag & 7) == 4 || tag == 0) {
-          ctx->EndGroup(tag);
-          return ptr;
-        }
-        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
-          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
-        ptr = res.first;
-        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
-        if (res.second) return ptr;
-      }
-    }  // switch
-  }  // while
-  return ptr;
-string_till_end:
-  static_cast<::std::string*>(object)->clear();
-  static_cast<::std::string*>(object)->reserve(size);
-  goto len_delim_till_end;
-len_delim_till_end:
-  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
-                               {parser_till_end, object}, size);
-}
-#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-bool Error::MergePartialFromCodedStream(
-    ::google::protobuf::io::CodedInputStream* input) {
-#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
-  ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:pb.Error)
-  for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
-    tag = p.first;
-    if (!p.second) goto handle_unusual;
-    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .pb.Error.Code code = 1;
-      case 1: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
-          int value = 0;
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
-                 input, &value)));
-          set_code(static_cast< ::pb::Error_Code >(value));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string text = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_text()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->text().data(), static_cast<int>(this->text().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "pb.Error.text"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:pb.Error)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:pb.Error)
-  return false;
-#undef DO_
-}
-#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-
-void Error::SerializeWithCachedSizes(
-    ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:pb.Error)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // .pb.Error.Code code = 1;
-  if (this->code() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      1, this->code(), output);
-  }
-
-  // string text = 2;
-  if (this->text().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->text().data(), static_cast<int>(this->text().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Error.text");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      2, this->text(), output);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
-  // @@protoc_insertion_point(serialize_end:pb.Error)
-}
-
-::google::protobuf::uint8* Error::InternalSerializeWithCachedSizesToArray(
-    ::google::protobuf::uint8* target) const {
-  // @@protoc_insertion_point(serialize_to_array_start:pb.Error)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  // .pb.Error.Code code = 1;
-  if (this->code() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      1, this->code(), target);
-  }
-
-  // string text = 2;
-  if (this->text().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->text().data(), static_cast<int>(this->text().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "pb.Error.text");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        2, this->text(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:pb.Error)
-  return target;
-}
-
-size_t Error::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:pb.Error)
-  size_t total_size = 0;
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  // string text = 2;
-  if (this->text().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->text());
-  }
-
-  // .pb.Error.Code code = 1;
-  if (this->code() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->code());
-  }
-
-  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
-  SetCachedSize(cached_size);
-  return total_size;
-}
-
-void Error::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:pb.Error)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Error* source =
-      ::google::protobuf::DynamicCastToGenerated<Error>(
-          &from);
-  if (source == nullptr) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:pb.Error)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:pb.Error)
-    MergeFrom(*source);
-  }
-}
-
-void Error::MergeFrom(const Error& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:pb.Error)
-  GOOGLE_DCHECK_NE(&from, this);
-  _internal_metadata_.MergeFrom(from._internal_metadata_);
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from.text().size() > 0) {
-
-    text_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.text_);
-  }
-  if (from.code() != 0) {
-    set_code(from.code());
-  }
-}
-
-void Error::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:pb.Error)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-void Error::CopyFrom(const Error& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:pb.Error)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
-bool Error::IsInitialized() const {
-  return true;
-}
-
-void Error::Swap(Error* other) {
-  if (other == this) return;
-  InternalSwap(other);
-}
-void Error::InternalSwap(Error* other) {
-  using std::swap;
-  _internal_metadata_.Swap(&other->_internal_metadata_);
-  text_.Swap(&other->text_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-    GetArenaNoVirtual());
-  swap(code_, other->code_);
-}
-
-::google::protobuf::Metadata Error::GetMetadata() const {
-  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_result_2eproto);
-  return ::file_level_metadata_result_2eproto[kIndexInFileMessages];
-}
-
-
-// @@protoc_insertion_point(namespace_scope)
-}  // namespace pb
-namespace google {
-namespace protobuf {
-template<> PROTOBUF_NOINLINE ::pb::Outputs* Arena::CreateMaybeMessage< ::pb::Outputs >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Outputs >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Output* Arena::CreateMaybeMessage< ::pb::Output >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Output >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::ClaimMeta* Arena::CreateMaybeMessage< ::pb::ClaimMeta >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::ClaimMeta >(arena);
-}
-template<> PROTOBUF_NOINLINE ::pb::Error* Arena::CreateMaybeMessage< ::pb::Error >(Arena* arena) {
-  return Arena::CreateInternal< ::pb::Error >(arena);
-}
-}  // namespace protobuf
-}  // namespace google
-
-// @@protoc_insertion_point(global_scope)
-#include <google/protobuf/port_undef.inc>
diff --git a/v2/cpp/result.pb.h b/v2/cpp/result.pb.h
deleted file mode 100644
index b2b4ff3..0000000
--- a/v2/cpp/result.pb.h
+++ /dev/null
@@ -1,1585 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: result.proto
-
-#ifndef PROTOBUF_INCLUDED_result_2eproto
-#define PROTOBUF_INCLUDED_result_2eproto
-
-#include <limits>
-#include <string>
-
-#include <google/protobuf/port_def.inc>
-#if PROTOBUF_VERSION < 3007000
-#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 3007000 < 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/port_undef.inc>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/arena.h>
-#include <google/protobuf/arenastring.h>
-#include <google/protobuf/generated_message_table_driven.h>
-#include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/inlined_string_field.h>
-#include <google/protobuf/metadata.h>
-#include <google/protobuf/message.h>
-#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
-#include <google/protobuf/extension_set.h>  // IWYU pragma: export
-#include <google/protobuf/generated_enum_reflection.h>
-#include <google/protobuf/unknown_field_set.h>
-// @@protoc_insertion_point(includes)
-#include <google/protobuf/port_def.inc>
-#define PROTOBUF_INTERNAL_EXPORT_result_2eproto
-
-// Internal implementation detail -- do not use these members.
-struct TableStruct_result_2eproto {
-  static const ::google::protobuf::internal::ParseTableField entries[]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[4]
-    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::FieldMetadata field_metadata[];
-  static const ::google::protobuf::internal::SerializationTable serialization_table[];
-  static const ::google::protobuf::uint32 offsets[];
-};
-void AddDescriptors_result_2eproto();
-namespace pb {
-class ClaimMeta;
-class ClaimMetaDefaultTypeInternal;
-extern ClaimMetaDefaultTypeInternal _ClaimMeta_default_instance_;
-class Error;
-class ErrorDefaultTypeInternal;
-extern ErrorDefaultTypeInternal _Error_default_instance_;
-class Output;
-class OutputDefaultTypeInternal;
-extern OutputDefaultTypeInternal _Output_default_instance_;
-class Outputs;
-class OutputsDefaultTypeInternal;
-extern OutputsDefaultTypeInternal _Outputs_default_instance_;
-}  // namespace pb
-namespace google {
-namespace protobuf {
-template<> ::pb::ClaimMeta* Arena::CreateMaybeMessage<::pb::ClaimMeta>(Arena*);
-template<> ::pb::Error* Arena::CreateMaybeMessage<::pb::Error>(Arena*);
-template<> ::pb::Output* Arena::CreateMaybeMessage<::pb::Output>(Arena*);
-template<> ::pb::Outputs* Arena::CreateMaybeMessage<::pb::Outputs>(Arena*);
-}  // namespace protobuf
-}  // namespace google
-namespace pb {
-
-enum Error_Code {
-  Error_Code_UNKNOWN_CODE = 0,
-  Error_Code_NOT_FOUND = 1,
-  Error_Code_INVALID = 2,
-  Error_Code_Error_Code_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
-  Error_Code_Error_Code_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
-};
-bool Error_Code_IsValid(int value);
-const Error_Code Error_Code_Code_MIN = Error_Code_UNKNOWN_CODE;
-const Error_Code Error_Code_Code_MAX = Error_Code_INVALID;
-const int Error_Code_Code_ARRAYSIZE = Error_Code_Code_MAX + 1;
-
-const ::google::protobuf::EnumDescriptor* Error_Code_descriptor();
-inline const ::std::string& Error_Code_Name(Error_Code value) {
-  return ::google::protobuf::internal::NameOfEnum(
-    Error_Code_descriptor(), value);
-}
-inline bool Error_Code_Parse(
-    const ::std::string& name, Error_Code* value) {
-  return ::google::protobuf::internal::ParseNamedEnum<Error_Code>(
-    Error_Code_descriptor(), name, value);
-}
-// ===================================================================
-
-class Outputs final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Outputs) */ {
- public:
-  Outputs();
-  virtual ~Outputs();
-
-  Outputs(const Outputs& from);
-
-  inline Outputs& operator=(const Outputs& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  Outputs(Outputs&& from) noexcept
-    : Outputs() {
-    *this = ::std::move(from);
-  }
-
-  inline Outputs& operator=(Outputs&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const Outputs& default_instance();
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Outputs* internal_default_instance() {
-    return reinterpret_cast<const Outputs*>(
-               &_Outputs_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    0;
-
-  void Swap(Outputs* other);
-  friend void swap(Outputs& a, Outputs& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline Outputs* New() const final {
-    return CreateMaybeMessage<Outputs>(nullptr);
-  }
-
-  Outputs* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Outputs>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const Outputs& from);
-  void MergeFrom(const Outputs& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(Outputs* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  // accessors -------------------------------------------------------
-
-  // repeated .pb.Output txos = 1;
-  int txos_size() const;
-  void clear_txos();
-  static const int kTxosFieldNumber = 1;
-  ::pb::Output* mutable_txos(int index);
-  ::google::protobuf::RepeatedPtrField< ::pb::Output >*
-      mutable_txos();
-  const ::pb::Output& txos(int index) const;
-  ::pb::Output* add_txos();
-  const ::google::protobuf::RepeatedPtrField< ::pb::Output >&
-      txos() const;
-
-  // repeated .pb.Output extra_txos = 2;
-  int extra_txos_size() const;
-  void clear_extra_txos();
-  static const int kExtraTxosFieldNumber = 2;
-  ::pb::Output* mutable_extra_txos(int index);
-  ::google::protobuf::RepeatedPtrField< ::pb::Output >*
-      mutable_extra_txos();
-  const ::pb::Output& extra_txos(int index) const;
-  ::pb::Output* add_extra_txos();
-  const ::google::protobuf::RepeatedPtrField< ::pb::Output >&
-      extra_txos() const;
-
-  // uint32 total = 3;
-  void clear_total();
-  static const int kTotalFieldNumber = 3;
-  ::google::protobuf::uint32 total() const;
-  void set_total(::google::protobuf::uint32 value);
-
-  // uint32 offset = 4;
-  void clear_offset();
-  static const int kOffsetFieldNumber = 4;
-  ::google::protobuf::uint32 offset() const;
-  void set_offset(::google::protobuf::uint32 value);
-
-  // @@protoc_insertion_point(class_scope:pb.Outputs)
- private:
-  class HasBitSetters;
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::RepeatedPtrField< ::pb::Output > txos_;
-  ::google::protobuf::RepeatedPtrField< ::pb::Output > extra_txos_;
-  ::google::protobuf::uint32 total_;
-  ::google::protobuf::uint32 offset_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_result_2eproto;
-};
-// -------------------------------------------------------------------
-
-class Output final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Output) */ {
- public:
-  Output();
-  virtual ~Output();
-
-  Output(const Output& from);
-
-  inline Output& operator=(const Output& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  Output(Output&& from) noexcept
-    : Output() {
-    *this = ::std::move(from);
-  }
-
-  inline Output& operator=(Output&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const Output& default_instance();
-
-  enum MetaCase {
-    kClaim = 7,
-    kError = 15,
-    META_NOT_SET = 0,
-  };
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Output* internal_default_instance() {
-    return reinterpret_cast<const Output*>(
-               &_Output_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    1;
-
-  void Swap(Output* other);
-  friend void swap(Output& a, Output& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline Output* New() const final {
-    return CreateMaybeMessage<Output>(nullptr);
-  }
-
-  Output* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Output>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const Output& from);
-  void MergeFrom(const Output& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(Output* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  // accessors -------------------------------------------------------
-
-  // bytes tx_hash = 1;
-  void clear_tx_hash();
-  static const int kTxHashFieldNumber = 1;
-  const ::std::string& tx_hash() const;
-  void set_tx_hash(const ::std::string& value);
-  #if LANG_CXX11
-  void set_tx_hash(::std::string&& value);
-  #endif
-  void set_tx_hash(const char* value);
-  void set_tx_hash(const void* value, size_t size);
-  ::std::string* mutable_tx_hash();
-  ::std::string* release_tx_hash();
-  void set_allocated_tx_hash(::std::string* tx_hash);
-
-  // uint32 nout = 2;
-  void clear_nout();
-  static const int kNoutFieldNumber = 2;
-  ::google::protobuf::uint32 nout() const;
-  void set_nout(::google::protobuf::uint32 value);
-
-  // uint32 height = 3;
-  void clear_height();
-  static const int kHeightFieldNumber = 3;
-  ::google::protobuf::uint32 height() const;
-  void set_height(::google::protobuf::uint32 value);
-
-  // .pb.ClaimMeta claim = 7;
-  bool has_claim() const;
-  void clear_claim();
-  static const int kClaimFieldNumber = 7;
-  const ::pb::ClaimMeta& claim() const;
-  ::pb::ClaimMeta* release_claim();
-  ::pb::ClaimMeta* mutable_claim();
-  void set_allocated_claim(::pb::ClaimMeta* claim);
-
-  // .pb.Error error = 15;
-  bool has_error() const;
-  void clear_error();
-  static const int kErrorFieldNumber = 15;
-  const ::pb::Error& error() const;
-  ::pb::Error* release_error();
-  ::pb::Error* mutable_error();
-  void set_allocated_error(::pb::Error* error);
-
-  void clear_meta();
-  MetaCase meta_case() const;
-  // @@protoc_insertion_point(class_scope:pb.Output)
- private:
-  class HasBitSetters;
-  void set_has_claim();
-  void set_has_error();
-
-  inline bool has_meta() const;
-  inline void clear_has_meta();
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr tx_hash_;
-  ::google::protobuf::uint32 nout_;
-  ::google::protobuf::uint32 height_;
-  union MetaUnion {
-    MetaUnion() {}
-    ::pb::ClaimMeta* claim_;
-    ::pb::Error* error_;
-  } meta_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  ::google::protobuf::uint32 _oneof_case_[1];
-
-  friend struct ::TableStruct_result_2eproto;
-};
-// -------------------------------------------------------------------
-
-class ClaimMeta final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.ClaimMeta) */ {
- public:
-  ClaimMeta();
-  virtual ~ClaimMeta();
-
-  ClaimMeta(const ClaimMeta& from);
-
-  inline ClaimMeta& operator=(const ClaimMeta& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  ClaimMeta(ClaimMeta&& from) noexcept
-    : ClaimMeta() {
-    *this = ::std::move(from);
-  }
-
-  inline ClaimMeta& operator=(ClaimMeta&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const ClaimMeta& default_instance();
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const ClaimMeta* internal_default_instance() {
-    return reinterpret_cast<const ClaimMeta*>(
-               &_ClaimMeta_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    2;
-
-  void Swap(ClaimMeta* other);
-  friend void swap(ClaimMeta& a, ClaimMeta& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline ClaimMeta* New() const final {
-    return CreateMaybeMessage<ClaimMeta>(nullptr);
-  }
-
-  ClaimMeta* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<ClaimMeta>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const ClaimMeta& from);
-  void MergeFrom(const ClaimMeta& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(ClaimMeta* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  // accessors -------------------------------------------------------
-
-  // string short_url = 3;
-  void clear_short_url();
-  static const int kShortUrlFieldNumber = 3;
-  const ::std::string& short_url() const;
-  void set_short_url(const ::std::string& value);
-  #if LANG_CXX11
-  void set_short_url(::std::string&& value);
-  #endif
-  void set_short_url(const char* value);
-  void set_short_url(const char* value, size_t size);
-  ::std::string* mutable_short_url();
-  ::std::string* release_short_url();
-  void set_allocated_short_url(::std::string* short_url);
-
-  // string canonical_url = 4;
-  void clear_canonical_url();
-  static const int kCanonicalUrlFieldNumber = 4;
-  const ::std::string& canonical_url() const;
-  void set_canonical_url(const ::std::string& value);
-  #if LANG_CXX11
-  void set_canonical_url(::std::string&& value);
-  #endif
-  void set_canonical_url(const char* value);
-  void set_canonical_url(const char* value, size_t size);
-  ::std::string* mutable_canonical_url();
-  ::std::string* release_canonical_url();
-  void set_allocated_canonical_url(::std::string* canonical_url);
-
-  // .pb.Output channel = 1;
-  bool has_channel() const;
-  void clear_channel();
-  static const int kChannelFieldNumber = 1;
-  const ::pb::Output& channel() const;
-  ::pb::Output* release_channel();
-  ::pb::Output* mutable_channel();
-  void set_allocated_channel(::pb::Output* channel);
-
-  // .pb.Output repost = 2;
-  bool has_repost() const;
-  void clear_repost();
-  static const int kRepostFieldNumber = 2;
-  const ::pb::Output& repost() const;
-  ::pb::Output* release_repost();
-  ::pb::Output* mutable_repost();
-  void set_allocated_repost(::pb::Output* repost);
-
-  // bool is_controlling = 5;
-  void clear_is_controlling();
-  static const int kIsControllingFieldNumber = 5;
-  bool is_controlling() const;
-  void set_is_controlling(bool value);
-
-  // uint32 take_over_height = 6;
-  void clear_take_over_height();
-  static const int kTakeOverHeightFieldNumber = 6;
-  ::google::protobuf::uint32 take_over_height() const;
-  void set_take_over_height(::google::protobuf::uint32 value);
-
-  // uint32 creation_height = 7;
-  void clear_creation_height();
-  static const int kCreationHeightFieldNumber = 7;
-  ::google::protobuf::uint32 creation_height() const;
-  void set_creation_height(::google::protobuf::uint32 value);
-
-  // uint32 activation_height = 8;
-  void clear_activation_height();
-  static const int kActivationHeightFieldNumber = 8;
-  ::google::protobuf::uint32 activation_height() const;
-  void set_activation_height(::google::protobuf::uint32 value);
-
-  // uint32 expiration_height = 9;
-  void clear_expiration_height();
-  static const int kExpirationHeightFieldNumber = 9;
-  ::google::protobuf::uint32 expiration_height() const;
-  void set_expiration_height(::google::protobuf::uint32 value);
-
-  // uint32 claims_in_channel = 10;
-  void clear_claims_in_channel();
-  static const int kClaimsInChannelFieldNumber = 10;
-  ::google::protobuf::uint32 claims_in_channel() const;
-  void set_claims_in_channel(::google::protobuf::uint32 value);
-
-  // uint32 reposted = 11;
-  void clear_reposted();
-  static const int kRepostedFieldNumber = 11;
-  ::google::protobuf::uint32 reposted() const;
-  void set_reposted(::google::protobuf::uint32 value);
-
-  // uint32 trending_group = 22;
-  void clear_trending_group();
-  static const int kTrendingGroupFieldNumber = 22;
-  ::google::protobuf::uint32 trending_group() const;
-  void set_trending_group(::google::protobuf::uint32 value);
-
-  // float trending_global = 25;
-  void clear_trending_global();
-  static const int kTrendingGlobalFieldNumber = 25;
-  float trending_global() const;
-  void set_trending_global(float value);
-
-  // uint64 effective_amount = 20;
-  void clear_effective_amount();
-  static const int kEffectiveAmountFieldNumber = 20;
-  ::google::protobuf::uint64 effective_amount() const;
-  void set_effective_amount(::google::protobuf::uint64 value);
-
-  // uint64 support_amount = 21;
-  void clear_support_amount();
-  static const int kSupportAmountFieldNumber = 21;
-  ::google::protobuf::uint64 support_amount() const;
-  void set_support_amount(::google::protobuf::uint64 value);
-
-  // float trending_mixed = 23;
-  void clear_trending_mixed();
-  static const int kTrendingMixedFieldNumber = 23;
-  float trending_mixed() const;
-  void set_trending_mixed(float value);
-
-  // float trending_local = 24;
-  void clear_trending_local();
-  static const int kTrendingLocalFieldNumber = 24;
-  float trending_local() const;
-  void set_trending_local(float value);
-
-  // @@protoc_insertion_point(class_scope:pb.ClaimMeta)
- private:
-  class HasBitSetters;
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr short_url_;
-  ::google::protobuf::internal::ArenaStringPtr canonical_url_;
-  ::pb::Output* channel_;
-  ::pb::Output* repost_;
-  bool is_controlling_;
-  ::google::protobuf::uint32 take_over_height_;
-  ::google::protobuf::uint32 creation_height_;
-  ::google::protobuf::uint32 activation_height_;
-  ::google::protobuf::uint32 expiration_height_;
-  ::google::protobuf::uint32 claims_in_channel_;
-  ::google::protobuf::uint32 reposted_;
-  ::google::protobuf::uint32 trending_group_;
-  float trending_global_;
-  ::google::protobuf::uint64 effective_amount_;
-  ::google::protobuf::uint64 support_amount_;
-  float trending_mixed_;
-  float trending_local_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_result_2eproto;
-};
-// -------------------------------------------------------------------
-
-class Error final :
-    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:pb.Error) */ {
- public:
-  Error();
-  virtual ~Error();
-
-  Error(const Error& from);
-
-  inline Error& operator=(const Error& from) {
-    CopyFrom(from);
-    return *this;
-  }
-  #if LANG_CXX11
-  Error(Error&& from) noexcept
-    : Error() {
-    *this = ::std::move(from);
-  }
-
-  inline Error& operator=(Error&& from) noexcept {
-    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
-      if (this != &from) InternalSwap(&from);
-    } else {
-      CopyFrom(from);
-    }
-    return *this;
-  }
-  #endif
-  static const ::google::protobuf::Descriptor* descriptor() {
-    return default_instance().GetDescriptor();
-  }
-  static const Error& default_instance();
-
-  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Error* internal_default_instance() {
-    return reinterpret_cast<const Error*>(
-               &_Error_default_instance_);
-  }
-  static constexpr int kIndexInFileMessages =
-    3;
-
-  void Swap(Error* other);
-  friend void swap(Error& a, Error& b) {
-    a.Swap(&b);
-  }
-
-  // implements Message ----------------------------------------------
-
-  inline Error* New() const final {
-    return CreateMaybeMessage<Error>(nullptr);
-  }
-
-  Error* New(::google::protobuf::Arena* arena) const final {
-    return CreateMaybeMessage<Error>(arena);
-  }
-  void CopyFrom(const ::google::protobuf::Message& from) final;
-  void MergeFrom(const ::google::protobuf::Message& from) final;
-  void CopyFrom(const Error& from);
-  void MergeFrom(const Error& from);
-  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
-  bool IsInitialized() const final;
-
-  size_t ByteSizeLong() const final;
-  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
-  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
-  #else
-  bool MergePartialFromCodedStream(
-      ::google::protobuf::io::CodedInputStream* input) final;
-  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
-  void SerializeWithCachedSizes(
-      ::google::protobuf::io::CodedOutputStream* output) const final;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      ::google::protobuf::uint8* target) const final;
-  int GetCachedSize() const final { return _cached_size_.Get(); }
-
-  private:
-  void SharedCtor();
-  void SharedDtor();
-  void SetCachedSize(int size) const final;
-  void InternalSwap(Error* other);
-  private:
-  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
-    return nullptr;
-  }
-  inline void* MaybeArenaPtr() const {
-    return nullptr;
-  }
-  public:
-
-  ::google::protobuf::Metadata GetMetadata() const final;
-
-  // nested types ----------------------------------------------------
-
-  typedef Error_Code Code;
-  static const Code UNKNOWN_CODE =
-    Error_Code_UNKNOWN_CODE;
-  static const Code NOT_FOUND =
-    Error_Code_NOT_FOUND;
-  static const Code INVALID =
-    Error_Code_INVALID;
-  static inline bool Code_IsValid(int value) {
-    return Error_Code_IsValid(value);
-  }
-  static const Code Code_MIN =
-    Error_Code_Code_MIN;
-  static const Code Code_MAX =
-    Error_Code_Code_MAX;
-  static const int Code_ARRAYSIZE =
-    Error_Code_Code_ARRAYSIZE;
-  static inline const ::google::protobuf::EnumDescriptor*
-  Code_descriptor() {
-    return Error_Code_descriptor();
-  }
-  static inline const ::std::string& Code_Name(Code value) {
-    return Error_Code_Name(value);
-  }
-  static inline bool Code_Parse(const ::std::string& name,
-      Code* value) {
-    return Error_Code_Parse(name, value);
-  }
-
-  // accessors -------------------------------------------------------
-
-  // string text = 2;
-  void clear_text();
-  static const int kTextFieldNumber = 2;
-  const ::std::string& text() const;
-  void set_text(const ::std::string& value);
-  #if LANG_CXX11
-  void set_text(::std::string&& value);
-  #endif
-  void set_text(const char* value);
-  void set_text(const char* value, size_t size);
-  ::std::string* mutable_text();
-  ::std::string* release_text();
-  void set_allocated_text(::std::string* text);
-
-  // .pb.Error.Code code = 1;
-  void clear_code();
-  static const int kCodeFieldNumber = 1;
-  ::pb::Error_Code code() const;
-  void set_code(::pb::Error_Code value);
-
-  // @@protoc_insertion_point(class_scope:pb.Error)
- private:
-  class HasBitSetters;
-
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr text_;
-  int code_;
-  mutable ::google::protobuf::internal::CachedSize _cached_size_;
-  friend struct ::TableStruct_result_2eproto;
-};
-// ===================================================================
-
-
-// ===================================================================
-
-#ifdef __GNUC__
-  #pragma GCC diagnostic push
-  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif  // __GNUC__
-// Outputs
-
-// repeated .pb.Output txos = 1;
-inline int Outputs::txos_size() const {
-  return txos_.size();
-}
-inline void Outputs::clear_txos() {
-  txos_.Clear();
-}
-inline ::pb::Output* Outputs::mutable_txos(int index) {
-  // @@protoc_insertion_point(field_mutable:pb.Outputs.txos)
-  return txos_.Mutable(index);
-}
-inline ::google::protobuf::RepeatedPtrField< ::pb::Output >*
-Outputs::mutable_txos() {
-  // @@protoc_insertion_point(field_mutable_list:pb.Outputs.txos)
-  return &txos_;
-}
-inline const ::pb::Output& Outputs::txos(int index) const {
-  // @@protoc_insertion_point(field_get:pb.Outputs.txos)
-  return txos_.Get(index);
-}
-inline ::pb::Output* Outputs::add_txos() {
-  // @@protoc_insertion_point(field_add:pb.Outputs.txos)
-  return txos_.Add();
-}
-inline const ::google::protobuf::RepeatedPtrField< ::pb::Output >&
-Outputs::txos() const {
-  // @@protoc_insertion_point(field_list:pb.Outputs.txos)
-  return txos_;
-}
-
-// repeated .pb.Output extra_txos = 2;
-inline int Outputs::extra_txos_size() const {
-  return extra_txos_.size();
-}
-inline void Outputs::clear_extra_txos() {
-  extra_txos_.Clear();
-}
-inline ::pb::Output* Outputs::mutable_extra_txos(int index) {
-  // @@protoc_insertion_point(field_mutable:pb.Outputs.extra_txos)
-  return extra_txos_.Mutable(index);
-}
-inline ::google::protobuf::RepeatedPtrField< ::pb::Output >*
-Outputs::mutable_extra_txos() {
-  // @@protoc_insertion_point(field_mutable_list:pb.Outputs.extra_txos)
-  return &extra_txos_;
-}
-inline const ::pb::Output& Outputs::extra_txos(int index) const {
-  // @@protoc_insertion_point(field_get:pb.Outputs.extra_txos)
-  return extra_txos_.Get(index);
-}
-inline ::pb::Output* Outputs::add_extra_txos() {
-  // @@protoc_insertion_point(field_add:pb.Outputs.extra_txos)
-  return extra_txos_.Add();
-}
-inline const ::google::protobuf::RepeatedPtrField< ::pb::Output >&
-Outputs::extra_txos() const {
-  // @@protoc_insertion_point(field_list:pb.Outputs.extra_txos)
-  return extra_txos_;
-}
-
-// uint32 total = 3;
-inline void Outputs::clear_total() {
-  total_ = 0u;
-}
-inline ::google::protobuf::uint32 Outputs::total() const {
-  // @@protoc_insertion_point(field_get:pb.Outputs.total)
-  return total_;
-}
-inline void Outputs::set_total(::google::protobuf::uint32 value) {
-  
-  total_ = value;
-  // @@protoc_insertion_point(field_set:pb.Outputs.total)
-}
-
-// uint32 offset = 4;
-inline void Outputs::clear_offset() {
-  offset_ = 0u;
-}
-inline ::google::protobuf::uint32 Outputs::offset() const {
-  // @@protoc_insertion_point(field_get:pb.Outputs.offset)
-  return offset_;
-}
-inline void Outputs::set_offset(::google::protobuf::uint32 value) {
-  
-  offset_ = value;
-  // @@protoc_insertion_point(field_set:pb.Outputs.offset)
-}
-
-// -------------------------------------------------------------------
-
-// Output
-
-// bytes tx_hash = 1;
-inline void Output::clear_tx_hash() {
-  tx_hash_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Output::tx_hash() const {
-  // @@protoc_insertion_point(field_get:pb.Output.tx_hash)
-  return tx_hash_.GetNoArena();
-}
-inline void Output::set_tx_hash(const ::std::string& value) {
-  
-  tx_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Output.tx_hash)
-}
-#if LANG_CXX11
-inline void Output::set_tx_hash(::std::string&& value) {
-  
-  tx_hash_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Output.tx_hash)
-}
-#endif
-inline void Output::set_tx_hash(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  tx_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Output.tx_hash)
-}
-inline void Output::set_tx_hash(const void* value, size_t size) {
-  
-  tx_hash_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Output.tx_hash)
-}
-inline ::std::string* Output::mutable_tx_hash() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Output.tx_hash)
-  return tx_hash_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Output::release_tx_hash() {
-  // @@protoc_insertion_point(field_release:pb.Output.tx_hash)
-  
-  return tx_hash_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Output::set_allocated_tx_hash(::std::string* tx_hash) {
-  if (tx_hash != nullptr) {
-    
-  } else {
-    
-  }
-  tx_hash_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), tx_hash);
-  // @@protoc_insertion_point(field_set_allocated:pb.Output.tx_hash)
-}
-
-// uint32 nout = 2;
-inline void Output::clear_nout() {
-  nout_ = 0u;
-}
-inline ::google::protobuf::uint32 Output::nout() const {
-  // @@protoc_insertion_point(field_get:pb.Output.nout)
-  return nout_;
-}
-inline void Output::set_nout(::google::protobuf::uint32 value) {
-  
-  nout_ = value;
-  // @@protoc_insertion_point(field_set:pb.Output.nout)
-}
-
-// uint32 height = 3;
-inline void Output::clear_height() {
-  height_ = 0u;
-}
-inline ::google::protobuf::uint32 Output::height() const {
-  // @@protoc_insertion_point(field_get:pb.Output.height)
-  return height_;
-}
-inline void Output::set_height(::google::protobuf::uint32 value) {
-  
-  height_ = value;
-  // @@protoc_insertion_point(field_set:pb.Output.height)
-}
-
-// .pb.ClaimMeta claim = 7;
-inline bool Output::has_claim() const {
-  return meta_case() == kClaim;
-}
-inline void Output::set_has_claim() {
-  _oneof_case_[0] = kClaim;
-}
-inline void Output::clear_claim() {
-  if (has_claim()) {
-    delete meta_.claim_;
-    clear_has_meta();
-  }
-}
-inline ::pb::ClaimMeta* Output::release_claim() {
-  // @@protoc_insertion_point(field_release:pb.Output.claim)
-  if (has_claim()) {
-    clear_has_meta();
-      ::pb::ClaimMeta* temp = meta_.claim_;
-    meta_.claim_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::ClaimMeta& Output::claim() const {
-  // @@protoc_insertion_point(field_get:pb.Output.claim)
-  return has_claim()
-      ? *meta_.claim_
-      : *reinterpret_cast< ::pb::ClaimMeta*>(&::pb::_ClaimMeta_default_instance_);
-}
-inline ::pb::ClaimMeta* Output::mutable_claim() {
-  if (!has_claim()) {
-    clear_meta();
-    set_has_claim();
-    meta_.claim_ = CreateMaybeMessage< ::pb::ClaimMeta >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Output.claim)
-  return meta_.claim_;
-}
-
-// .pb.Error error = 15;
-inline bool Output::has_error() const {
-  return meta_case() == kError;
-}
-inline void Output::set_has_error() {
-  _oneof_case_[0] = kError;
-}
-inline void Output::clear_error() {
-  if (has_error()) {
-    delete meta_.error_;
-    clear_has_meta();
-  }
-}
-inline ::pb::Error* Output::release_error() {
-  // @@protoc_insertion_point(field_release:pb.Output.error)
-  if (has_error()) {
-    clear_has_meta();
-      ::pb::Error* temp = meta_.error_;
-    meta_.error_ = nullptr;
-    return temp;
-  } else {
-    return nullptr;
-  }
-}
-inline const ::pb::Error& Output::error() const {
-  // @@protoc_insertion_point(field_get:pb.Output.error)
-  return has_error()
-      ? *meta_.error_
-      : *reinterpret_cast< ::pb::Error*>(&::pb::_Error_default_instance_);
-}
-inline ::pb::Error* Output::mutable_error() {
-  if (!has_error()) {
-    clear_meta();
-    set_has_error();
-    meta_.error_ = CreateMaybeMessage< ::pb::Error >(
-        GetArenaNoVirtual());
-  }
-  // @@protoc_insertion_point(field_mutable:pb.Output.error)
-  return meta_.error_;
-}
-
-inline bool Output::has_meta() const {
-  return meta_case() != META_NOT_SET;
-}
-inline void Output::clear_has_meta() {
-  _oneof_case_[0] = META_NOT_SET;
-}
-inline Output::MetaCase Output::meta_case() const {
-  return Output::MetaCase(_oneof_case_[0]);
-}
-// -------------------------------------------------------------------
-
-// ClaimMeta
-
-// .pb.Output channel = 1;
-inline bool ClaimMeta::has_channel() const {
-  return this != internal_default_instance() && channel_ != nullptr;
-}
-inline void ClaimMeta::clear_channel() {
-  if (GetArenaNoVirtual() == nullptr && channel_ != nullptr) {
-    delete channel_;
-  }
-  channel_ = nullptr;
-}
-inline const ::pb::Output& ClaimMeta::channel() const {
-  const ::pb::Output* p = channel_;
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.channel)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::Output*>(
-      &::pb::_Output_default_instance_);
-}
-inline ::pb::Output* ClaimMeta::release_channel() {
-  // @@protoc_insertion_point(field_release:pb.ClaimMeta.channel)
-  
-  ::pb::Output* temp = channel_;
-  channel_ = nullptr;
-  return temp;
-}
-inline ::pb::Output* ClaimMeta::mutable_channel() {
-  
-  if (channel_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::Output>(GetArenaNoVirtual());
-    channel_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.ClaimMeta.channel)
-  return channel_;
-}
-inline void ClaimMeta::set_allocated_channel(::pb::Output* channel) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete channel_;
-  }
-  if (channel) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      channel = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, channel, submessage_arena);
-    }
-    
-  } else {
-    
-  }
-  channel_ = channel;
-  // @@protoc_insertion_point(field_set_allocated:pb.ClaimMeta.channel)
-}
-
-// .pb.Output repost = 2;
-inline bool ClaimMeta::has_repost() const {
-  return this != internal_default_instance() && repost_ != nullptr;
-}
-inline void ClaimMeta::clear_repost() {
-  if (GetArenaNoVirtual() == nullptr && repost_ != nullptr) {
-    delete repost_;
-  }
-  repost_ = nullptr;
-}
-inline const ::pb::Output& ClaimMeta::repost() const {
-  const ::pb::Output* p = repost_;
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.repost)
-  return p != nullptr ? *p : *reinterpret_cast<const ::pb::Output*>(
-      &::pb::_Output_default_instance_);
-}
-inline ::pb::Output* ClaimMeta::release_repost() {
-  // @@protoc_insertion_point(field_release:pb.ClaimMeta.repost)
-  
-  ::pb::Output* temp = repost_;
-  repost_ = nullptr;
-  return temp;
-}
-inline ::pb::Output* ClaimMeta::mutable_repost() {
-  
-  if (repost_ == nullptr) {
-    auto* p = CreateMaybeMessage<::pb::Output>(GetArenaNoVirtual());
-    repost_ = p;
-  }
-  // @@protoc_insertion_point(field_mutable:pb.ClaimMeta.repost)
-  return repost_;
-}
-inline void ClaimMeta::set_allocated_repost(::pb::Output* repost) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == nullptr) {
-    delete repost_;
-  }
-  if (repost) {
-    ::google::protobuf::Arena* submessage_arena = nullptr;
-    if (message_arena != submessage_arena) {
-      repost = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, repost, submessage_arena);
-    }
-    
-  } else {
-    
-  }
-  repost_ = repost;
-  // @@protoc_insertion_point(field_set_allocated:pb.ClaimMeta.repost)
-}
-
-// string short_url = 3;
-inline void ClaimMeta::clear_short_url() {
-  short_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& ClaimMeta::short_url() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.short_url)
-  return short_url_.GetNoArena();
-}
-inline void ClaimMeta::set_short_url(const ::std::string& value) {
-  
-  short_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.short_url)
-}
-#if LANG_CXX11
-inline void ClaimMeta::set_short_url(::std::string&& value) {
-  
-  short_url_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.ClaimMeta.short_url)
-}
-#endif
-inline void ClaimMeta::set_short_url(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  short_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.ClaimMeta.short_url)
-}
-inline void ClaimMeta::set_short_url(const char* value, size_t size) {
-  
-  short_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.ClaimMeta.short_url)
-}
-inline ::std::string* ClaimMeta::mutable_short_url() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.ClaimMeta.short_url)
-  return short_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* ClaimMeta::release_short_url() {
-  // @@protoc_insertion_point(field_release:pb.ClaimMeta.short_url)
-  
-  return short_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void ClaimMeta::set_allocated_short_url(::std::string* short_url) {
-  if (short_url != nullptr) {
-    
-  } else {
-    
-  }
-  short_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), short_url);
-  // @@protoc_insertion_point(field_set_allocated:pb.ClaimMeta.short_url)
-}
-
-// string canonical_url = 4;
-inline void ClaimMeta::clear_canonical_url() {
-  canonical_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& ClaimMeta::canonical_url() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.canonical_url)
-  return canonical_url_.GetNoArena();
-}
-inline void ClaimMeta::set_canonical_url(const ::std::string& value) {
-  
-  canonical_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.canonical_url)
-}
-#if LANG_CXX11
-inline void ClaimMeta::set_canonical_url(::std::string&& value) {
-  
-  canonical_url_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.ClaimMeta.canonical_url)
-}
-#endif
-inline void ClaimMeta::set_canonical_url(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  canonical_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.ClaimMeta.canonical_url)
-}
-inline void ClaimMeta::set_canonical_url(const char* value, size_t size) {
-  
-  canonical_url_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.ClaimMeta.canonical_url)
-}
-inline ::std::string* ClaimMeta::mutable_canonical_url() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.ClaimMeta.canonical_url)
-  return canonical_url_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* ClaimMeta::release_canonical_url() {
-  // @@protoc_insertion_point(field_release:pb.ClaimMeta.canonical_url)
-  
-  return canonical_url_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void ClaimMeta::set_allocated_canonical_url(::std::string* canonical_url) {
-  if (canonical_url != nullptr) {
-    
-  } else {
-    
-  }
-  canonical_url_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), canonical_url);
-  // @@protoc_insertion_point(field_set_allocated:pb.ClaimMeta.canonical_url)
-}
-
-// bool is_controlling = 5;
-inline void ClaimMeta::clear_is_controlling() {
-  is_controlling_ = false;
-}
-inline bool ClaimMeta::is_controlling() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.is_controlling)
-  return is_controlling_;
-}
-inline void ClaimMeta::set_is_controlling(bool value) {
-  
-  is_controlling_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.is_controlling)
-}
-
-// uint32 take_over_height = 6;
-inline void ClaimMeta::clear_take_over_height() {
-  take_over_height_ = 0u;
-}
-inline ::google::protobuf::uint32 ClaimMeta::take_over_height() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.take_over_height)
-  return take_over_height_;
-}
-inline void ClaimMeta::set_take_over_height(::google::protobuf::uint32 value) {
-  
-  take_over_height_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.take_over_height)
-}
-
-// uint32 creation_height = 7;
-inline void ClaimMeta::clear_creation_height() {
-  creation_height_ = 0u;
-}
-inline ::google::protobuf::uint32 ClaimMeta::creation_height() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.creation_height)
-  return creation_height_;
-}
-inline void ClaimMeta::set_creation_height(::google::protobuf::uint32 value) {
-  
-  creation_height_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.creation_height)
-}
-
-// uint32 activation_height = 8;
-inline void ClaimMeta::clear_activation_height() {
-  activation_height_ = 0u;
-}
-inline ::google::protobuf::uint32 ClaimMeta::activation_height() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.activation_height)
-  return activation_height_;
-}
-inline void ClaimMeta::set_activation_height(::google::protobuf::uint32 value) {
-  
-  activation_height_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.activation_height)
-}
-
-// uint32 expiration_height = 9;
-inline void ClaimMeta::clear_expiration_height() {
-  expiration_height_ = 0u;
-}
-inline ::google::protobuf::uint32 ClaimMeta::expiration_height() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.expiration_height)
-  return expiration_height_;
-}
-inline void ClaimMeta::set_expiration_height(::google::protobuf::uint32 value) {
-  
-  expiration_height_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.expiration_height)
-}
-
-// uint32 claims_in_channel = 10;
-inline void ClaimMeta::clear_claims_in_channel() {
-  claims_in_channel_ = 0u;
-}
-inline ::google::protobuf::uint32 ClaimMeta::claims_in_channel() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.claims_in_channel)
-  return claims_in_channel_;
-}
-inline void ClaimMeta::set_claims_in_channel(::google::protobuf::uint32 value) {
-  
-  claims_in_channel_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.claims_in_channel)
-}
-
-// uint32 reposted = 11;
-inline void ClaimMeta::clear_reposted() {
-  reposted_ = 0u;
-}
-inline ::google::protobuf::uint32 ClaimMeta::reposted() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.reposted)
-  return reposted_;
-}
-inline void ClaimMeta::set_reposted(::google::protobuf::uint32 value) {
-  
-  reposted_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.reposted)
-}
-
-// uint64 effective_amount = 20;
-inline void ClaimMeta::clear_effective_amount() {
-  effective_amount_ = PROTOBUF_ULONGLONG(0);
-}
-inline ::google::protobuf::uint64 ClaimMeta::effective_amount() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.effective_amount)
-  return effective_amount_;
-}
-inline void ClaimMeta::set_effective_amount(::google::protobuf::uint64 value) {
-  
-  effective_amount_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.effective_amount)
-}
-
-// uint64 support_amount = 21;
-inline void ClaimMeta::clear_support_amount() {
-  support_amount_ = PROTOBUF_ULONGLONG(0);
-}
-inline ::google::protobuf::uint64 ClaimMeta::support_amount() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.support_amount)
-  return support_amount_;
-}
-inline void ClaimMeta::set_support_amount(::google::protobuf::uint64 value) {
-  
-  support_amount_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.support_amount)
-}
-
-// uint32 trending_group = 22;
-inline void ClaimMeta::clear_trending_group() {
-  trending_group_ = 0u;
-}
-inline ::google::protobuf::uint32 ClaimMeta::trending_group() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.trending_group)
-  return trending_group_;
-}
-inline void ClaimMeta::set_trending_group(::google::protobuf::uint32 value) {
-  
-  trending_group_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.trending_group)
-}
-
-// float trending_mixed = 23;
-inline void ClaimMeta::clear_trending_mixed() {
-  trending_mixed_ = 0;
-}
-inline float ClaimMeta::trending_mixed() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.trending_mixed)
-  return trending_mixed_;
-}
-inline void ClaimMeta::set_trending_mixed(float value) {
-  
-  trending_mixed_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.trending_mixed)
-}
-
-// float trending_local = 24;
-inline void ClaimMeta::clear_trending_local() {
-  trending_local_ = 0;
-}
-inline float ClaimMeta::trending_local() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.trending_local)
-  return trending_local_;
-}
-inline void ClaimMeta::set_trending_local(float value) {
-  
-  trending_local_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.trending_local)
-}
-
-// float trending_global = 25;
-inline void ClaimMeta::clear_trending_global() {
-  trending_global_ = 0;
-}
-inline float ClaimMeta::trending_global() const {
-  // @@protoc_insertion_point(field_get:pb.ClaimMeta.trending_global)
-  return trending_global_;
-}
-inline void ClaimMeta::set_trending_global(float value) {
-  
-  trending_global_ = value;
-  // @@protoc_insertion_point(field_set:pb.ClaimMeta.trending_global)
-}
-
-// -------------------------------------------------------------------
-
-// Error
-
-// .pb.Error.Code code = 1;
-inline void Error::clear_code() {
-  code_ = 0;
-}
-inline ::pb::Error_Code Error::code() const {
-  // @@protoc_insertion_point(field_get:pb.Error.code)
-  return static_cast< ::pb::Error_Code >(code_);
-}
-inline void Error::set_code(::pb::Error_Code value) {
-  
-  code_ = value;
-  // @@protoc_insertion_point(field_set:pb.Error.code)
-}
-
-// string text = 2;
-inline void Error::clear_text() {
-  text_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Error::text() const {
-  // @@protoc_insertion_point(field_get:pb.Error.text)
-  return text_.GetNoArena();
-}
-inline void Error::set_text(const ::std::string& value) {
-  
-  text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:pb.Error.text)
-}
-#if LANG_CXX11
-inline void Error::set_text(::std::string&& value) {
-  
-  text_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:pb.Error.text)
-}
-#endif
-inline void Error::set_text(const char* value) {
-  GOOGLE_DCHECK(value != nullptr);
-  
-  text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:pb.Error.text)
-}
-inline void Error::set_text(const char* value, size_t size) {
-  
-  text_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:pb.Error.text)
-}
-inline ::std::string* Error::mutable_text() {
-  
-  // @@protoc_insertion_point(field_mutable:pb.Error.text)
-  return text_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Error::release_text() {
-  // @@protoc_insertion_point(field_release:pb.Error.text)
-  
-  return text_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Error::set_allocated_text(::std::string* text) {
-  if (text != nullptr) {
-    
-  } else {
-    
-  }
-  text_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), text);
-  // @@protoc_insertion_point(field_set_allocated:pb.Error.text)
-}
-
-#ifdef __GNUC__
-  #pragma GCC diagnostic pop
-#endif  // __GNUC__
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-// -------------------------------------------------------------------
-
-
-// @@protoc_insertion_point(namespace_scope)
-
-}  // namespace pb
-
-namespace google {
-namespace protobuf {
-
-template <> struct is_proto_enum< ::pb::Error_Code> : ::std::true_type {};
-template <>
-inline const EnumDescriptor* GetEnumDescriptor< ::pb::Error_Code>() {
-  return ::pb::Error_Code_descriptor();
-}
-
-}  // namespace protobuf
-}  // namespace google
-
-// @@protoc_insertion_point(global_scope)
-
-#include <google/protobuf/port_undef.inc>
-#endif  // PROTOBUF_INCLUDED_result_2eproto
diff --git a/v2/go/claim.pb.go b/v2/go/claim.pb.go
index 21ae9e1..86a4230 100644
--- a/v2/go/claim.pb.go
+++ b/v2/go/claim.pb.go
@@ -20,31 +20,6 @@ var _ = math.Inf
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
-type ClaimList_ListType int32
-
-const (
-	ClaimList_COLLECTION ClaimList_ListType = 0
-	ClaimList_DERIVATION ClaimList_ListType = 2
-)
-
-var ClaimList_ListType_name = map[int32]string{
-	0: "COLLECTION",
-	2: "DERIVATION",
-}
-
-var ClaimList_ListType_value = map[string]int32{
-	"COLLECTION": 0,
-	"DERIVATION": 2,
-}
-
-func (x ClaimList_ListType) String() string {
-	return proto.EnumName(ClaimList_ListType_name, int32(x))
-}
-
-func (ClaimList_ListType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{4, 0}
-}
-
 type Fee_Currency int32
 
 const (
@@ -73,47 +48,7 @@ func (x Fee_Currency) String() string {
 }
 
 func (Fee_Currency) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{6, 0}
-}
-
-type Software_OS int32
-
-const (
-	Software_UNKNOWN_OS Software_OS = 0
-	Software_ANY        Software_OS = 1
-	Software_LINUX      Software_OS = 2
-	Software_WINDOWS    Software_OS = 3
-	Software_MAC        Software_OS = 4
-	Software_ANDROID    Software_OS = 5
-	Software_IOS        Software_OS = 6
-)
-
-var Software_OS_name = map[int32]string{
-	0: "UNKNOWN_OS",
-	1: "ANY",
-	2: "LINUX",
-	3: "WINDOWS",
-	4: "MAC",
-	5: "ANDROID",
-	6: "IOS",
-}
-
-var Software_OS_value = map[string]int32{
-	"UNKNOWN_OS": 0,
-	"ANY":        1,
-	"LINUX":      2,
-	"WINDOWS":    3,
-	"MAC":        4,
-	"ANDROID":    5,
-	"IOS":        6,
-}
-
-func (x Software_OS) String() string {
-	return proto.EnumName(Software_OS_name, int32(x))
-}
-
-func (Software_OS) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{10, 0}
+	return fileDescriptor_bae86789b513b1db, []int{3, 0}
 }
 
 // ISO 639-1
@@ -688,7 +623,7 @@ func (x Language_Language) String() string {
 }
 
 func (Language_Language) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{11, 0}
+	return fileDescriptor_bae86789b513b1db, []int{8, 0}
 }
 
 // ISO 15924
@@ -1308,7 +1243,7 @@ func (x Language_Script) String() string {
 }
 
 func (Language_Script) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{11, 1}
+	return fileDescriptor_bae86789b513b1db, []int{8, 1}
 }
 
 type Location_Country int32
@@ -1564,287 +1499,6 @@ const (
 	Location_YE              Location_Country = 247
 	Location_ZM              Location_Country = 248
 	Location_ZW              Location_Country = 249
-	// UN M.49 Geographic Regions
-	Location_R001 Location_Country = 250
-	Location_R002 Location_Country = 251
-	Location_R015 Location_Country = 252
-	Location_R012 Location_Country = 253
-	Location_R818 Location_Country = 254
-	Location_R434 Location_Country = 255
-	Location_R504 Location_Country = 256
-	Location_R729 Location_Country = 257
-	Location_R788 Location_Country = 258
-	Location_R732 Location_Country = 259
-	Location_R202 Location_Country = 260
-	Location_R014 Location_Country = 261
-	Location_R086 Location_Country = 262
-	Location_R108 Location_Country = 263
-	Location_R174 Location_Country = 264
-	Location_R262 Location_Country = 265
-	Location_R232 Location_Country = 266
-	Location_R231 Location_Country = 267
-	Location_R260 Location_Country = 268
-	Location_R404 Location_Country = 269
-	Location_R450 Location_Country = 270
-	Location_R454 Location_Country = 271
-	Location_R480 Location_Country = 272
-	Location_R175 Location_Country = 273
-	Location_R508 Location_Country = 274
-	Location_R638 Location_Country = 275
-	Location_R646 Location_Country = 276
-	Location_R690 Location_Country = 277
-	Location_R706 Location_Country = 278
-	Location_R728 Location_Country = 279
-	Location_R800 Location_Country = 280
-	Location_R834 Location_Country = 281
-	Location_R894 Location_Country = 282
-	Location_R716 Location_Country = 283
-	Location_R017 Location_Country = 284
-	Location_R024 Location_Country = 285
-	Location_R120 Location_Country = 286
-	Location_R140 Location_Country = 287
-	Location_R148 Location_Country = 288
-	Location_R178 Location_Country = 289
-	Location_R180 Location_Country = 290
-	Location_R226 Location_Country = 291
-	Location_R266 Location_Country = 292
-	Location_R678 Location_Country = 293
-	Location_R018 Location_Country = 294
-	Location_R072 Location_Country = 295
-	Location_R748 Location_Country = 296
-	Location_R426 Location_Country = 297
-	Location_R516 Location_Country = 298
-	Location_R710 Location_Country = 299
-	Location_R011 Location_Country = 300
-	Location_R204 Location_Country = 301
-	Location_R854 Location_Country = 302
-	Location_R132 Location_Country = 303
-	Location_R384 Location_Country = 304
-	Location_R270 Location_Country = 305
-	Location_R288 Location_Country = 306
-	Location_R324 Location_Country = 307
-	Location_R624 Location_Country = 308
-	Location_R430 Location_Country = 309
-	Location_R466 Location_Country = 310
-	Location_R478 Location_Country = 311
-	Location_R562 Location_Country = 312
-	Location_R566 Location_Country = 313
-	Location_R654 Location_Country = 314
-	Location_R686 Location_Country = 315
-	Location_R694 Location_Country = 316
-	Location_R768 Location_Country = 317
-	Location_R019 Location_Country = 318
-	Location_R419 Location_Country = 319
-	Location_R029 Location_Country = 320
-	Location_R660 Location_Country = 321
-	Location_R028 Location_Country = 322
-	Location_R533 Location_Country = 323
-	Location_R044 Location_Country = 324
-	Location_R052 Location_Country = 325
-	Location_R535 Location_Country = 326
-	Location_R092 Location_Country = 327
-	Location_R136 Location_Country = 328
-	Location_R192 Location_Country = 329
-	Location_R531 Location_Country = 330
-	Location_R212 Location_Country = 331
-	Location_R214 Location_Country = 332
-	Location_R308 Location_Country = 333
-	Location_R312 Location_Country = 334
-	Location_R332 Location_Country = 335
-	Location_R388 Location_Country = 336
-	Location_R474 Location_Country = 337
-	Location_R500 Location_Country = 338
-	Location_R630 Location_Country = 339
-	Location_R652 Location_Country = 340
-	Location_R659 Location_Country = 341
-	Location_R662 Location_Country = 342
-	Location_R663 Location_Country = 343
-	Location_R670 Location_Country = 344
-	Location_R534 Location_Country = 345
-	Location_R780 Location_Country = 346
-	Location_R796 Location_Country = 347
-	Location_R850 Location_Country = 348
-	Location_R013 Location_Country = 349
-	Location_R084 Location_Country = 350
-	Location_R188 Location_Country = 351
-	Location_R222 Location_Country = 352
-	Location_R320 Location_Country = 353
-	Location_R340 Location_Country = 354
-	Location_R484 Location_Country = 355
-	Location_R558 Location_Country = 356
-	Location_R591 Location_Country = 357
-	Location_R005 Location_Country = 358
-	Location_R032 Location_Country = 359
-	Location_R068 Location_Country = 360
-	Location_R074 Location_Country = 361
-	Location_R076 Location_Country = 362
-	Location_R152 Location_Country = 363
-	Location_R170 Location_Country = 364
-	Location_R218 Location_Country = 365
-	Location_R238 Location_Country = 366
-	Location_R254 Location_Country = 367
-	Location_R328 Location_Country = 368
-	Location_R600 Location_Country = 369
-	Location_R604 Location_Country = 370
-	Location_R239 Location_Country = 371
-	Location_R740 Location_Country = 372
-	Location_R858 Location_Country = 373
-	Location_R862 Location_Country = 374
-	Location_R021 Location_Country = 375
-	Location_R060 Location_Country = 376
-	Location_R124 Location_Country = 377
-	Location_R304 Location_Country = 378
-	Location_R666 Location_Country = 379
-	Location_R840 Location_Country = 380
-	Location_R010 Location_Country = 381
-	Location_R142 Location_Country = 382
-	Location_R143 Location_Country = 383
-	Location_R398 Location_Country = 384
-	Location_R417 Location_Country = 385
-	Location_R762 Location_Country = 386
-	Location_R795 Location_Country = 387
-	Location_R860 Location_Country = 388
-	Location_R030 Location_Country = 389
-	Location_R156 Location_Country = 390
-	Location_R344 Location_Country = 391
-	Location_R446 Location_Country = 392
-	Location_R408 Location_Country = 393
-	Location_R392 Location_Country = 394
-	Location_R496 Location_Country = 395
-	Location_R410 Location_Country = 396
-	Location_R035 Location_Country = 397
-	Location_R096 Location_Country = 398
-	Location_R116 Location_Country = 399
-	Location_R360 Location_Country = 400
-	Location_R418 Location_Country = 401
-	Location_R458 Location_Country = 402
-	Location_R104 Location_Country = 403
-	Location_R608 Location_Country = 404
-	Location_R702 Location_Country = 405
-	Location_R764 Location_Country = 406
-	Location_R626 Location_Country = 407
-	Location_R704 Location_Country = 408
-	Location_R034 Location_Country = 409
-	Location_R004 Location_Country = 410
-	Location_R050 Location_Country = 411
-	Location_R064 Location_Country = 412
-	Location_R356 Location_Country = 413
-	Location_R364 Location_Country = 414
-	Location_R462 Location_Country = 415
-	Location_R524 Location_Country = 416
-	Location_R586 Location_Country = 417
-	Location_R144 Location_Country = 418
-	Location_R145 Location_Country = 419
-	Location_R051 Location_Country = 420
-	Location_R031 Location_Country = 421
-	Location_R048 Location_Country = 422
-	Location_R196 Location_Country = 423
-	Location_R268 Location_Country = 424
-	Location_R368 Location_Country = 425
-	Location_R376 Location_Country = 426
-	Location_R400 Location_Country = 427
-	Location_R414 Location_Country = 428
-	Location_R422 Location_Country = 429
-	Location_R512 Location_Country = 430
-	Location_R634 Location_Country = 431
-	Location_R682 Location_Country = 432
-	Location_R275 Location_Country = 433
-	Location_R760 Location_Country = 434
-	Location_R792 Location_Country = 435
-	Location_R784 Location_Country = 436
-	Location_R887 Location_Country = 437
-	Location_R150 Location_Country = 438
-	Location_R151 Location_Country = 439
-	Location_R112 Location_Country = 440
-	Location_R100 Location_Country = 441
-	Location_R203 Location_Country = 442
-	Location_R348 Location_Country = 443
-	Location_R616 Location_Country = 444
-	Location_R498 Location_Country = 445
-	Location_R642 Location_Country = 446
-	Location_R643 Location_Country = 447
-	Location_R703 Location_Country = 448
-	Location_R804 Location_Country = 449
-	Location_R154 Location_Country = 450
-	Location_R248 Location_Country = 451
-	Location_R830 Location_Country = 452
-	Location_R831 Location_Country = 453
-	Location_R832 Location_Country = 454
-	Location_R680 Location_Country = 455
-	Location_R208 Location_Country = 456
-	Location_R233 Location_Country = 457
-	Location_R234 Location_Country = 458
-	Location_R246 Location_Country = 459
-	Location_R352 Location_Country = 460
-	Location_R372 Location_Country = 461
-	Location_R833 Location_Country = 462
-	Location_R428 Location_Country = 463
-	Location_R440 Location_Country = 464
-	Location_R578 Location_Country = 465
-	Location_R744 Location_Country = 466
-	Location_R752 Location_Country = 467
-	Location_R826 Location_Country = 468
-	Location_R039 Location_Country = 469
-	Location_R008 Location_Country = 470
-	Location_R020 Location_Country = 471
-	Location_R070 Location_Country = 472
-	Location_R191 Location_Country = 473
-	Location_R292 Location_Country = 474
-	Location_R300 Location_Country = 475
-	Location_R336 Location_Country = 476
-	Location_R380 Location_Country = 477
-	Location_R470 Location_Country = 478
-	Location_R499 Location_Country = 479
-	Location_R807 Location_Country = 480
-	Location_R620 Location_Country = 481
-	Location_R674 Location_Country = 482
-	Location_R688 Location_Country = 483
-	Location_R705 Location_Country = 484
-	Location_R724 Location_Country = 485
-	Location_R155 Location_Country = 486
-	Location_R040 Location_Country = 487
-	Location_R056 Location_Country = 488
-	Location_R250 Location_Country = 489
-	Location_R276 Location_Country = 490
-	Location_R438 Location_Country = 491
-	Location_R442 Location_Country = 492
-	Location_R492 Location_Country = 493
-	Location_R528 Location_Country = 494
-	Location_R756 Location_Country = 495
-	Location_R009 Location_Country = 496
-	Location_R053 Location_Country = 497
-	Location_R036 Location_Country = 498
-	Location_R162 Location_Country = 499
-	Location_R166 Location_Country = 500
-	Location_R334 Location_Country = 501
-	Location_R554 Location_Country = 502
-	Location_R574 Location_Country = 503
-	Location_R054 Location_Country = 504
-	Location_R242 Location_Country = 505
-	Location_R540 Location_Country = 506
-	Location_R598 Location_Country = 507
-	Location_R090 Location_Country = 508
-	Location_R548 Location_Country = 509
-	Location_R057 Location_Country = 510
-	Location_R316 Location_Country = 511
-	Location_R296 Location_Country = 512
-	Location_R584 Location_Country = 513
-	Location_R583 Location_Country = 514
-	Location_R520 Location_Country = 515
-	Location_R580 Location_Country = 516
-	Location_R585 Location_Country = 517
-	Location_R581 Location_Country = 518
-	Location_R061 Location_Country = 519
-	Location_R016 Location_Country = 520
-	Location_R184 Location_Country = 521
-	Location_R258 Location_Country = 522
-	Location_R570 Location_Country = 523
-	Location_R612 Location_Country = 524
-	Location_R882 Location_Country = 525
-	Location_R772 Location_Country = 526
-	Location_R776 Location_Country = 527
-	Location_R798 Location_Country = 528
-	Location_R876 Location_Country = 529
 )
 
 var Location_Country_name = map[int32]string{
@@ -2098,286 +1752,6 @@ var Location_Country_name = map[int32]string{
 	247: "YE",
 	248: "ZM",
 	249: "ZW",
-	250: "R001",
-	251: "R002",
-	252: "R015",
-	253: "R012",
-	254: "R818",
-	255: "R434",
-	256: "R504",
-	257: "R729",
-	258: "R788",
-	259: "R732",
-	260: "R202",
-	261: "R014",
-	262: "R086",
-	263: "R108",
-	264: "R174",
-	265: "R262",
-	266: "R232",
-	267: "R231",
-	268: "R260",
-	269: "R404",
-	270: "R450",
-	271: "R454",
-	272: "R480",
-	273: "R175",
-	274: "R508",
-	275: "R638",
-	276: "R646",
-	277: "R690",
-	278: "R706",
-	279: "R728",
-	280: "R800",
-	281: "R834",
-	282: "R894",
-	283: "R716",
-	284: "R017",
-	285: "R024",
-	286: "R120",
-	287: "R140",
-	288: "R148",
-	289: "R178",
-	290: "R180",
-	291: "R226",
-	292: "R266",
-	293: "R678",
-	294: "R018",
-	295: "R072",
-	296: "R748",
-	297: "R426",
-	298: "R516",
-	299: "R710",
-	300: "R011",
-	301: "R204",
-	302: "R854",
-	303: "R132",
-	304: "R384",
-	305: "R270",
-	306: "R288",
-	307: "R324",
-	308: "R624",
-	309: "R430",
-	310: "R466",
-	311: "R478",
-	312: "R562",
-	313: "R566",
-	314: "R654",
-	315: "R686",
-	316: "R694",
-	317: "R768",
-	318: "R019",
-	319: "R419",
-	320: "R029",
-	321: "R660",
-	322: "R028",
-	323: "R533",
-	324: "R044",
-	325: "R052",
-	326: "R535",
-	327: "R092",
-	328: "R136",
-	329: "R192",
-	330: "R531",
-	331: "R212",
-	332: "R214",
-	333: "R308",
-	334: "R312",
-	335: "R332",
-	336: "R388",
-	337: "R474",
-	338: "R500",
-	339: "R630",
-	340: "R652",
-	341: "R659",
-	342: "R662",
-	343: "R663",
-	344: "R670",
-	345: "R534",
-	346: "R780",
-	347: "R796",
-	348: "R850",
-	349: "R013",
-	350: "R084",
-	351: "R188",
-	352: "R222",
-	353: "R320",
-	354: "R340",
-	355: "R484",
-	356: "R558",
-	357: "R591",
-	358: "R005",
-	359: "R032",
-	360: "R068",
-	361: "R074",
-	362: "R076",
-	363: "R152",
-	364: "R170",
-	365: "R218",
-	366: "R238",
-	367: "R254",
-	368: "R328",
-	369: "R600",
-	370: "R604",
-	371: "R239",
-	372: "R740",
-	373: "R858",
-	374: "R862",
-	375: "R021",
-	376: "R060",
-	377: "R124",
-	378: "R304",
-	379: "R666",
-	380: "R840",
-	381: "R010",
-	382: "R142",
-	383: "R143",
-	384: "R398",
-	385: "R417",
-	386: "R762",
-	387: "R795",
-	388: "R860",
-	389: "R030",
-	390: "R156",
-	391: "R344",
-	392: "R446",
-	393: "R408",
-	394: "R392",
-	395: "R496",
-	396: "R410",
-	397: "R035",
-	398: "R096",
-	399: "R116",
-	400: "R360",
-	401: "R418",
-	402: "R458",
-	403: "R104",
-	404: "R608",
-	405: "R702",
-	406: "R764",
-	407: "R626",
-	408: "R704",
-	409: "R034",
-	410: "R004",
-	411: "R050",
-	412: "R064",
-	413: "R356",
-	414: "R364",
-	415: "R462",
-	416: "R524",
-	417: "R586",
-	418: "R144",
-	419: "R145",
-	420: "R051",
-	421: "R031",
-	422: "R048",
-	423: "R196",
-	424: "R268",
-	425: "R368",
-	426: "R376",
-	427: "R400",
-	428: "R414",
-	429: "R422",
-	430: "R512",
-	431: "R634",
-	432: "R682",
-	433: "R275",
-	434: "R760",
-	435: "R792",
-	436: "R784",
-	437: "R887",
-	438: "R150",
-	439: "R151",
-	440: "R112",
-	441: "R100",
-	442: "R203",
-	443: "R348",
-	444: "R616",
-	445: "R498",
-	446: "R642",
-	447: "R643",
-	448: "R703",
-	449: "R804",
-	450: "R154",
-	451: "R248",
-	452: "R830",
-	453: "R831",
-	454: "R832",
-	455: "R680",
-	456: "R208",
-	457: "R233",
-	458: "R234",
-	459: "R246",
-	460: "R352",
-	461: "R372",
-	462: "R833",
-	463: "R428",
-	464: "R440",
-	465: "R578",
-	466: "R744",
-	467: "R752",
-	468: "R826",
-	469: "R039",
-	470: "R008",
-	471: "R020",
-	472: "R070",
-	473: "R191",
-	474: "R292",
-	475: "R300",
-	476: "R336",
-	477: "R380",
-	478: "R470",
-	479: "R499",
-	480: "R807",
-	481: "R620",
-	482: "R674",
-	483: "R688",
-	484: "R705",
-	485: "R724",
-	486: "R155",
-	487: "R040",
-	488: "R056",
-	489: "R250",
-	490: "R276",
-	491: "R438",
-	492: "R442",
-	493: "R492",
-	494: "R528",
-	495: "R756",
-	496: "R009",
-	497: "R053",
-	498: "R036",
-	499: "R162",
-	500: "R166",
-	501: "R334",
-	502: "R554",
-	503: "R574",
-	504: "R054",
-	505: "R242",
-	506: "R540",
-	507: "R598",
-	508: "R090",
-	509: "R548",
-	510: "R057",
-	511: "R316",
-	512: "R296",
-	513: "R584",
-	514: "R583",
-	515: "R520",
-	516: "R580",
-	517: "R585",
-	518: "R581",
-	519: "R061",
-	520: "R016",
-	521: "R184",
-	522: "R258",
-	523: "R570",
-	524: "R612",
-	525: "R882",
-	526: "R772",
-	527: "R776",
-	528: "R798",
-	529: "R876",
 }
 
 var Location_Country_value = map[string]int32{
@@ -2631,286 +2005,6 @@ var Location_Country_value = map[string]int32{
 	"YE":              247,
 	"ZM":              248,
 	"ZW":              249,
-	"R001":            250,
-	"R002":            251,
-	"R015":            252,
-	"R012":            253,
-	"R818":            254,
-	"R434":            255,
-	"R504":            256,
-	"R729":            257,
-	"R788":            258,
-	"R732":            259,
-	"R202":            260,
-	"R014":            261,
-	"R086":            262,
-	"R108":            263,
-	"R174":            264,
-	"R262":            265,
-	"R232":            266,
-	"R231":            267,
-	"R260":            268,
-	"R404":            269,
-	"R450":            270,
-	"R454":            271,
-	"R480":            272,
-	"R175":            273,
-	"R508":            274,
-	"R638":            275,
-	"R646":            276,
-	"R690":            277,
-	"R706":            278,
-	"R728":            279,
-	"R800":            280,
-	"R834":            281,
-	"R894":            282,
-	"R716":            283,
-	"R017":            284,
-	"R024":            285,
-	"R120":            286,
-	"R140":            287,
-	"R148":            288,
-	"R178":            289,
-	"R180":            290,
-	"R226":            291,
-	"R266":            292,
-	"R678":            293,
-	"R018":            294,
-	"R072":            295,
-	"R748":            296,
-	"R426":            297,
-	"R516":            298,
-	"R710":            299,
-	"R011":            300,
-	"R204":            301,
-	"R854":            302,
-	"R132":            303,
-	"R384":            304,
-	"R270":            305,
-	"R288":            306,
-	"R324":            307,
-	"R624":            308,
-	"R430":            309,
-	"R466":            310,
-	"R478":            311,
-	"R562":            312,
-	"R566":            313,
-	"R654":            314,
-	"R686":            315,
-	"R694":            316,
-	"R768":            317,
-	"R019":            318,
-	"R419":            319,
-	"R029":            320,
-	"R660":            321,
-	"R028":            322,
-	"R533":            323,
-	"R044":            324,
-	"R052":            325,
-	"R535":            326,
-	"R092":            327,
-	"R136":            328,
-	"R192":            329,
-	"R531":            330,
-	"R212":            331,
-	"R214":            332,
-	"R308":            333,
-	"R312":            334,
-	"R332":            335,
-	"R388":            336,
-	"R474":            337,
-	"R500":            338,
-	"R630":            339,
-	"R652":            340,
-	"R659":            341,
-	"R662":            342,
-	"R663":            343,
-	"R670":            344,
-	"R534":            345,
-	"R780":            346,
-	"R796":            347,
-	"R850":            348,
-	"R013":            349,
-	"R084":            350,
-	"R188":            351,
-	"R222":            352,
-	"R320":            353,
-	"R340":            354,
-	"R484":            355,
-	"R558":            356,
-	"R591":            357,
-	"R005":            358,
-	"R032":            359,
-	"R068":            360,
-	"R074":            361,
-	"R076":            362,
-	"R152":            363,
-	"R170":            364,
-	"R218":            365,
-	"R238":            366,
-	"R254":            367,
-	"R328":            368,
-	"R600":            369,
-	"R604":            370,
-	"R239":            371,
-	"R740":            372,
-	"R858":            373,
-	"R862":            374,
-	"R021":            375,
-	"R060":            376,
-	"R124":            377,
-	"R304":            378,
-	"R666":            379,
-	"R840":            380,
-	"R010":            381,
-	"R142":            382,
-	"R143":            383,
-	"R398":            384,
-	"R417":            385,
-	"R762":            386,
-	"R795":            387,
-	"R860":            388,
-	"R030":            389,
-	"R156":            390,
-	"R344":            391,
-	"R446":            392,
-	"R408":            393,
-	"R392":            394,
-	"R496":            395,
-	"R410":            396,
-	"R035":            397,
-	"R096":            398,
-	"R116":            399,
-	"R360":            400,
-	"R418":            401,
-	"R458":            402,
-	"R104":            403,
-	"R608":            404,
-	"R702":            405,
-	"R764":            406,
-	"R626":            407,
-	"R704":            408,
-	"R034":            409,
-	"R004":            410,
-	"R050":            411,
-	"R064":            412,
-	"R356":            413,
-	"R364":            414,
-	"R462":            415,
-	"R524":            416,
-	"R586":            417,
-	"R144":            418,
-	"R145":            419,
-	"R051":            420,
-	"R031":            421,
-	"R048":            422,
-	"R196":            423,
-	"R268":            424,
-	"R368":            425,
-	"R376":            426,
-	"R400":            427,
-	"R414":            428,
-	"R422":            429,
-	"R512":            430,
-	"R634":            431,
-	"R682":            432,
-	"R275":            433,
-	"R760":            434,
-	"R792":            435,
-	"R784":            436,
-	"R887":            437,
-	"R150":            438,
-	"R151":            439,
-	"R112":            440,
-	"R100":            441,
-	"R203":            442,
-	"R348":            443,
-	"R616":            444,
-	"R498":            445,
-	"R642":            446,
-	"R643":            447,
-	"R703":            448,
-	"R804":            449,
-	"R154":            450,
-	"R248":            451,
-	"R830":            452,
-	"R831":            453,
-	"R832":            454,
-	"R680":            455,
-	"R208":            456,
-	"R233":            457,
-	"R234":            458,
-	"R246":            459,
-	"R352":            460,
-	"R372":            461,
-	"R833":            462,
-	"R428":            463,
-	"R440":            464,
-	"R578":            465,
-	"R744":            466,
-	"R752":            467,
-	"R826":            468,
-	"R039":            469,
-	"R008":            470,
-	"R020":            471,
-	"R070":            472,
-	"R191":            473,
-	"R292":            474,
-	"R300":            475,
-	"R336":            476,
-	"R380":            477,
-	"R470":            478,
-	"R499":            479,
-	"R807":            480,
-	"R620":            481,
-	"R674":            482,
-	"R688":            483,
-	"R705":            484,
-	"R724":            485,
-	"R155":            486,
-	"R040":            487,
-	"R056":            488,
-	"R250":            489,
-	"R276":            490,
-	"R438":            491,
-	"R442":            492,
-	"R492":            493,
-	"R528":            494,
-	"R756":            495,
-	"R009":            496,
-	"R053":            497,
-	"R036":            498,
-	"R162":            499,
-	"R166":            500,
-	"R334":            501,
-	"R554":            502,
-	"R574":            503,
-	"R054":            504,
-	"R242":            505,
-	"R540":            506,
-	"R598":            507,
-	"R090":            508,
-	"R548":            509,
-	"R057":            510,
-	"R316":            511,
-	"R296":            512,
-	"R584":            513,
-	"R583":            514,
-	"R520":            515,
-	"R580":            516,
-	"R585":            517,
-	"R581":            518,
-	"R061":            519,
-	"R016":            520,
-	"R184":            521,
-	"R258":            522,
-	"R570":            523,
-	"R612":            524,
-	"R882":            525,
-	"R772":            526,
-	"R776":            527,
-	"R798":            528,
-	"R876":            529,
 }
 
 func (x Location_Country) String() string {
@@ -2918,22 +2012,14 @@ func (x Location_Country) String() string {
 }
 
 func (Location_Country) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{12, 0}
+	return fileDescriptor_bae86789b513b1db, []int{9, 0}
 }
 
 type Claim struct {
 	// Types that are valid to be assigned to Type:
 	//	*Claim_Stream
 	//	*Claim_Channel
-	//	*Claim_Collection
-	//	*Claim_Repost
 	Type                 isClaim_Type `protobuf_oneof:"type"`
-	Title                string       `protobuf:"bytes,8,opt,name=title,proto3" json:"title"`
-	Description          string       `protobuf:"bytes,9,opt,name=description,proto3" json:"description"`
-	Thumbnail            *Source      `protobuf:"bytes,10,opt,name=thumbnail,proto3" json:"thumbnail"`
-	Tags                 []string     `protobuf:"bytes,11,rep,name=tags,proto3" json:"tags"`
-	Languages            []*Language  `protobuf:"bytes,12,rep,name=languages,proto3" json:"languages"`
-	Locations            []*Location  `protobuf:"bytes,13,rep,name=locations,proto3" json:"locations"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
 	XXX_unrecognized     []byte       `json:"-"`
 	XXX_sizecache        int32        `json:"-"`
@@ -2976,22 +2062,10 @@ type Claim_Channel struct {
 	Channel *Channel `protobuf:"bytes,2,opt,name=channel,proto3,oneof"`
 }
 
-type Claim_Collection struct {
-	Collection *ClaimList `protobuf:"bytes,3,opt,name=collection,proto3,oneof"`
-}
-
-type Claim_Repost struct {
-	Repost *ClaimReference `protobuf:"bytes,4,opt,name=repost,proto3,oneof"`
-}
-
 func (*Claim_Stream) isClaim_Type() {}
 
 func (*Claim_Channel) isClaim_Type() {}
 
-func (*Claim_Collection) isClaim_Type() {}
-
-func (*Claim_Repost) isClaim_Type() {}
-
 func (m *Claim) GetType() isClaim_Type {
 	if m != nil {
 		return m.Type
@@ -3013,84 +2087,144 @@ func (m *Claim) GetChannel() *Channel {
 	return nil
 }
 
-func (m *Claim) GetCollection() *ClaimList {
-	if x, ok := m.GetType().(*Claim_Collection); ok {
-		return x.Collection
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Claim) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Claim_Stream)(nil),
+		(*Claim_Channel)(nil),
+	}
+}
+
+type Channel struct {
+	PublicKey            []byte      `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+	Title                string      `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
+	Description          string      `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+	ThumbnailUrl         string      `protobuf:"bytes,4,opt,name=thumbnail_url,json=thumbnailUrl,proto3" json:"thumbnail_url,omitempty"`
+	Tags                 []string    `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"`
+	Languages            []*Language `protobuf:"bytes,6,rep,name=languages,proto3" json:"languages,omitempty"`
+	Locations            []*Location `protobuf:"bytes,7,rep,name=locations,proto3" json:"locations,omitempty"`
+	ContactEmail         string      `protobuf:"bytes,8,opt,name=contact_email,json=contactEmail,proto3" json:"contact_email,omitempty"`
+	HomepageUrl          string      `protobuf:"bytes,9,opt,name=homepage_url,json=homepageUrl,proto3" json:"homepage_url,omitempty"`
+	CoverUrl             string      `protobuf:"bytes,10,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *Channel) Reset()         { *m = Channel{} }
+func (m *Channel) String() string { return proto.CompactTextString(m) }
+func (*Channel) ProtoMessage()    {}
+func (*Channel) Descriptor() ([]byte, []int) {
+	return fileDescriptor_bae86789b513b1db, []int{1}
+}
+
+func (m *Channel) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Channel.Unmarshal(m, b)
+}
+func (m *Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Channel.Marshal(b, m, deterministic)
+}
+func (m *Channel) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Channel.Merge(m, src)
+}
+func (m *Channel) XXX_Size() int {
+	return xxx_messageInfo_Channel.Size(m)
+}
+func (m *Channel) XXX_DiscardUnknown() {
+	xxx_messageInfo_Channel.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Channel proto.InternalMessageInfo
+
+func (m *Channel) GetPublicKey() []byte {
+	if m != nil {
+		return m.PublicKey
 	}
 	return nil
 }
 
-func (m *Claim) GetRepost() *ClaimReference {
-	if x, ok := m.GetType().(*Claim_Repost); ok {
-		return x.Repost
-	}
-	return nil
-}
-
-func (m *Claim) GetTitle() string {
+func (m *Channel) GetTitle() string {
 	if m != nil {
 		return m.Title
 	}
 	return ""
 }
 
-func (m *Claim) GetDescription() string {
+func (m *Channel) GetDescription() string {
 	if m != nil {
 		return m.Description
 	}
 	return ""
 }
 
-func (m *Claim) GetThumbnail() *Source {
+func (m *Channel) GetThumbnailUrl() string {
 	if m != nil {
-		return m.Thumbnail
+		return m.ThumbnailUrl
 	}
-	return nil
+	return ""
 }
 
-func (m *Claim) GetTags() []string {
+func (m *Channel) GetTags() []string {
 	if m != nil {
 		return m.Tags
 	}
 	return nil
 }
 
-func (m *Claim) GetLanguages() []*Language {
+func (m *Channel) GetLanguages() []*Language {
 	if m != nil {
 		return m.Languages
 	}
 	return nil
 }
 
-func (m *Claim) GetLocations() []*Location {
+func (m *Channel) GetLocations() []*Location {
 	if m != nil {
 		return m.Locations
 	}
 	return nil
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Claim) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Claim_Stream)(nil),
-		(*Claim_Channel)(nil),
-		(*Claim_Collection)(nil),
-		(*Claim_Repost)(nil),
+func (m *Channel) GetContactEmail() string {
+	if m != nil {
+		return m.ContactEmail
 	}
+	return ""
+}
+
+func (m *Channel) GetHomepageUrl() string {
+	if m != nil {
+		return m.HomepageUrl
+	}
+	return ""
+}
+
+func (m *Channel) GetCoverUrl() string {
+	if m != nil {
+		return m.CoverUrl
+	}
+	return ""
 }
 
 type Stream struct {
-	Source      *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source"`
-	Author      string  `protobuf:"bytes,2,opt,name=author,proto3" json:"author"`
-	License     string  `protobuf:"bytes,3,opt,name=license,proto3" json:"license"`
-	LicenseUrl  string  `protobuf:"bytes,4,opt,name=license_url,json=licenseUrl,proto3" json:"license_url"`
-	ReleaseTime int64   `protobuf:"varint,5,opt,name=release_time,json=releaseTime,proto3" json:"release_time"`
-	Fee         *Fee    `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee"`
+	SdHash       []byte      `protobuf:"bytes,1,opt,name=sd_hash,json=sdHash,proto3" json:"sd_hash,omitempty"`
+	Title        string      `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
+	Description  string      `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+	ThumbnailUrl string      `protobuf:"bytes,4,opt,name=thumbnail_url,json=thumbnailUrl,proto3" json:"thumbnail_url,omitempty"`
+	Tags         []string    `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"`
+	Languages    []*Language `protobuf:"bytes,6,rep,name=languages,proto3" json:"languages,omitempty"`
+	Locations    []*Location `protobuf:"bytes,7,rep,name=locations,proto3" json:"locations,omitempty"`
+	Author       string      `protobuf:"bytes,8,opt,name=author,proto3" json:"author,omitempty"`
+	License      string      `protobuf:"bytes,9,opt,name=license,proto3" json:"license,omitempty"`
+	LicenseUrl   string      `protobuf:"bytes,10,opt,name=license_url,json=licenseUrl,proto3" json:"license_url,omitempty"`
+	ReleaseTime  int64       `protobuf:"varint,11,opt,name=release_time,json=releaseTime,proto3" json:"release_time,omitempty"`
+	MediaType    string      `protobuf:"bytes,13,opt,name=media_type,json=mediaType,proto3" json:"media_type,omitempty"`
+	File         *File       `protobuf:"bytes,14,opt,name=file,proto3" json:"file,omitempty"`
+	Fee          *Fee        `protobuf:"bytes,15,opt,name=fee,proto3" json:"fee,omitempty"`
 	// Types that are valid to be assigned to Type:
 	//	*Stream_Image
 	//	*Stream_Video
 	//	*Stream_Audio
-	//	*Stream_Software
 	Type                 isStream_Type `protobuf_oneof:"type"`
 	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
 	XXX_unrecognized     []byte        `json:"-"`
@@ -3101,7 +2235,7 @@ func (m *Stream) Reset()         { *m = Stream{} }
 func (m *Stream) String() string { return proto.CompactTextString(m) }
 func (*Stream) ProtoMessage()    {}
 func (*Stream) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{1}
+	return fileDescriptor_bae86789b513b1db, []int{2}
 }
 
 func (m *Stream) XXX_Unmarshal(b []byte) error {
@@ -3122,9 +2256,51 @@ func (m *Stream) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_Stream proto.InternalMessageInfo
 
-func (m *Stream) GetSource() *Source {
+func (m *Stream) GetSdHash() []byte {
 	if m != nil {
-		return m.Source
+		return m.SdHash
+	}
+	return nil
+}
+
+func (m *Stream) GetTitle() string {
+	if m != nil {
+		return m.Title
+	}
+	return ""
+}
+
+func (m *Stream) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *Stream) GetThumbnailUrl() string {
+	if m != nil {
+		return m.ThumbnailUrl
+	}
+	return ""
+}
+
+func (m *Stream) GetTags() []string {
+	if m != nil {
+		return m.Tags
+	}
+	return nil
+}
+
+func (m *Stream) GetLanguages() []*Language {
+	if m != nil {
+		return m.Languages
+	}
+	return nil
+}
+
+func (m *Stream) GetLocations() []*Location {
+	if m != nil {
+		return m.Locations
 	}
 	return nil
 }
@@ -3157,6 +2333,20 @@ func (m *Stream) GetReleaseTime() int64 {
 	return 0
 }
 
+func (m *Stream) GetMediaType() string {
+	if m != nil {
+		return m.MediaType
+	}
+	return ""
+}
+
+func (m *Stream) GetFile() *File {
+	if m != nil {
+		return m.File
+	}
+	return nil
+}
+
 func (m *Stream) GetFee() *Fee {
 	if m != nil {
 		return m.Fee
@@ -3169,19 +2359,15 @@ type isStream_Type interface {
 }
 
 type Stream_Image struct {
-	Image *Image `protobuf:"bytes,10,opt,name=image,proto3,oneof"`
+	Image *Image `protobuf:"bytes,16,opt,name=image,proto3,oneof"`
 }
 
 type Stream_Video struct {
-	Video *Video `protobuf:"bytes,11,opt,name=video,proto3,oneof"`
+	Video *Video `protobuf:"bytes,17,opt,name=video,proto3,oneof"`
 }
 
 type Stream_Audio struct {
-	Audio *Audio `protobuf:"bytes,12,opt,name=audio,proto3,oneof"`
-}
-
-type Stream_Software struct {
-	Software *Software `protobuf:"bytes,13,opt,name=software,proto3,oneof"`
+	Audio *Audio `protobuf:"bytes,18,opt,name=audio,proto3,oneof"`
 }
 
 func (*Stream_Image) isStream_Type() {}
@@ -3190,8 +2376,6 @@ func (*Stream_Video) isStream_Type() {}
 
 func (*Stream_Audio) isStream_Type() {}
 
-func (*Stream_Software) isStream_Type() {}
-
 func (m *Stream) GetType() isStream_Type {
 	if m != nil {
 		return m.Type
@@ -3220,271 +2404,19 @@ func (m *Stream) GetAudio() *Audio {
 	return nil
 }
 
-func (m *Stream) GetSoftware() *Software {
-	if x, ok := m.GetType().(*Stream_Software); ok {
-		return x.Software
-	}
-	return nil
-}
-
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*Stream) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
 		(*Stream_Image)(nil),
 		(*Stream_Video)(nil),
 		(*Stream_Audio)(nil),
-		(*Stream_Software)(nil),
 	}
 }
 
-type Channel struct {
-	PublicKey            []byte     `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key"`
-	Email                string     `protobuf:"bytes,2,opt,name=email,proto3" json:"email"`
-	WebsiteUrl           string     `protobuf:"bytes,3,opt,name=website_url,json=websiteUrl,proto3" json:"website_url"`
-	Cover                *Source    `protobuf:"bytes,4,opt,name=cover,proto3" json:"cover"`
-	Featured             *ClaimList `protobuf:"bytes,5,opt,name=featured,proto3" json:"featured"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *Channel) Reset()         { *m = Channel{} }
-func (m *Channel) String() string { return proto.CompactTextString(m) }
-func (*Channel) ProtoMessage()    {}
-func (*Channel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{2}
-}
-
-func (m *Channel) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Channel.Unmarshal(m, b)
-}
-func (m *Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Channel.Marshal(b, m, deterministic)
-}
-func (m *Channel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Channel.Merge(m, src)
-}
-func (m *Channel) XXX_Size() int {
-	return xxx_messageInfo_Channel.Size(m)
-}
-func (m *Channel) XXX_DiscardUnknown() {
-	xxx_messageInfo_Channel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Channel proto.InternalMessageInfo
-
-func (m *Channel) GetPublicKey() []byte {
-	if m != nil {
-		return m.PublicKey
-	}
-	return nil
-}
-
-func (m *Channel) GetEmail() string {
-	if m != nil {
-		return m.Email
-	}
-	return ""
-}
-
-func (m *Channel) GetWebsiteUrl() string {
-	if m != nil {
-		return m.WebsiteUrl
-	}
-	return ""
-}
-
-func (m *Channel) GetCover() *Source {
-	if m != nil {
-		return m.Cover
-	}
-	return nil
-}
-
-func (m *Channel) GetFeatured() *ClaimList {
-	if m != nil {
-		return m.Featured
-	}
-	return nil
-}
-
-type ClaimReference struct {
-	ClaimHash            []byte   `protobuf:"bytes,1,opt,name=claim_hash,json=claimHash,proto3" json:"claim_hash"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ClaimReference) Reset()         { *m = ClaimReference{} }
-func (m *ClaimReference) String() string { return proto.CompactTextString(m) }
-func (*ClaimReference) ProtoMessage()    {}
-func (*ClaimReference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{3}
-}
-
-func (m *ClaimReference) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClaimReference.Unmarshal(m, b)
-}
-func (m *ClaimReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClaimReference.Marshal(b, m, deterministic)
-}
-func (m *ClaimReference) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClaimReference.Merge(m, src)
-}
-func (m *ClaimReference) XXX_Size() int {
-	return xxx_messageInfo_ClaimReference.Size(m)
-}
-func (m *ClaimReference) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClaimReference.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClaimReference proto.InternalMessageInfo
-
-func (m *ClaimReference) GetClaimHash() []byte {
-	if m != nil {
-		return m.ClaimHash
-	}
-	return nil
-}
-
-type ClaimList struct {
-	ListType             ClaimList_ListType `protobuf:"varint,1,opt,name=list_type,json=listType,proto3,enum=pb.ClaimList_ListType" json:"list_type"`
-	ClaimReferences      []*ClaimReference  `protobuf:"bytes,2,rep,name=claim_references,json=claimReferences,proto3" json:"claim_references"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *ClaimList) Reset()         { *m = ClaimList{} }
-func (m *ClaimList) String() string { return proto.CompactTextString(m) }
-func (*ClaimList) ProtoMessage()    {}
-func (*ClaimList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{4}
-}
-
-func (m *ClaimList) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClaimList.Unmarshal(m, b)
-}
-func (m *ClaimList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClaimList.Marshal(b, m, deterministic)
-}
-func (m *ClaimList) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClaimList.Merge(m, src)
-}
-func (m *ClaimList) XXX_Size() int {
-	return xxx_messageInfo_ClaimList.Size(m)
-}
-func (m *ClaimList) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClaimList.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClaimList proto.InternalMessageInfo
-
-func (m *ClaimList) GetListType() ClaimList_ListType {
-	if m != nil {
-		return m.ListType
-	}
-	return ClaimList_COLLECTION
-}
-
-func (m *ClaimList) GetClaimReferences() []*ClaimReference {
-	if m != nil {
-		return m.ClaimReferences
-	}
-	return nil
-}
-
-type Source struct {
-	Hash                 []byte   `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash"`
-	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name"`
-	Size                 uint64   `protobuf:"varint,3,opt,name=size,proto3" json:"size"`
-	MediaType            string   `protobuf:"bytes,4,opt,name=media_type,json=mediaType,proto3" json:"media_type"`
-	Url                  string   `protobuf:"bytes,5,opt,name=url,proto3" json:"url"`
-	SdHash               []byte   `protobuf:"bytes,6,opt,name=sd_hash,json=sdHash,proto3" json:"sd_hash"`
-	BtInfohash           []byte   `protobuf:"bytes,7,opt,name=bt_infohash,json=btInfohash,proto3" json:"bt_infohash"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Source) Reset()         { *m = Source{} }
-func (m *Source) String() string { return proto.CompactTextString(m) }
-func (*Source) ProtoMessage()    {}
-func (*Source) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{5}
-}
-
-func (m *Source) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Source.Unmarshal(m, b)
-}
-func (m *Source) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Source.Marshal(b, m, deterministic)
-}
-func (m *Source) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Source.Merge(m, src)
-}
-func (m *Source) XXX_Size() int {
-	return xxx_messageInfo_Source.Size(m)
-}
-func (m *Source) XXX_DiscardUnknown() {
-	xxx_messageInfo_Source.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Source proto.InternalMessageInfo
-
-func (m *Source) GetHash() []byte {
-	if m != nil {
-		return m.Hash
-	}
-	return nil
-}
-
-func (m *Source) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *Source) GetSize() uint64 {
-	if m != nil {
-		return m.Size
-	}
-	return 0
-}
-
-func (m *Source) GetMediaType() string {
-	if m != nil {
-		return m.MediaType
-	}
-	return ""
-}
-
-func (m *Source) GetUrl() string {
-	if m != nil {
-		return m.Url
-	}
-	return ""
-}
-
-func (m *Source) GetSdHash() []byte {
-	if m != nil {
-		return m.SdHash
-	}
-	return nil
-}
-
-func (m *Source) GetBtInfohash() []byte {
-	if m != nil {
-		return m.BtInfohash
-	}
-	return nil
-}
-
 type Fee struct {
-	Currency             Fee_Currency `protobuf:"varint,1,opt,name=currency,proto3,enum=pb.Fee_Currency" json:"currency"`
-	Address              []byte       `protobuf:"bytes,2,opt,name=address,proto3" json:"address"`
-	Amount               uint64       `protobuf:"varint,3,opt,name=amount,proto3" json:"amount"`
+	Currency             Fee_Currency `protobuf:"varint,1,opt,name=currency,proto3,enum=pb.Fee_Currency" json:"currency,omitempty"`
+	Address              []byte       `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
+	Amount               uint64       `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
 	XXX_unrecognized     []byte       `json:"-"`
 	XXX_sizecache        int32        `json:"-"`
@@ -3494,7 +2426,7 @@ func (m *Fee) Reset()         { *m = Fee{} }
 func (m *Fee) String() string { return proto.CompactTextString(m) }
 func (*Fee) ProtoMessage()    {}
 func (*Fee) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{6}
+	return fileDescriptor_bae86789b513b1db, []int{3}
 }
 
 func (m *Fee) XXX_Unmarshal(b []byte) error {
@@ -3536,9 +2468,64 @@ func (m *Fee) GetAmount() uint64 {
 	return 0
 }
 
+type File struct {
+	Hash                 []byte   `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"`
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Size                 uint64   `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *File) Reset()         { *m = File{} }
+func (m *File) String() string { return proto.CompactTextString(m) }
+func (*File) ProtoMessage()    {}
+func (*File) Descriptor() ([]byte, []int) {
+	return fileDescriptor_bae86789b513b1db, []int{4}
+}
+
+func (m *File) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_File.Unmarshal(m, b)
+}
+func (m *File) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_File.Marshal(b, m, deterministic)
+}
+func (m *File) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_File.Merge(m, src)
+}
+func (m *File) XXX_Size() int {
+	return xxx_messageInfo_File.Size(m)
+}
+func (m *File) XXX_DiscardUnknown() {
+	xxx_messageInfo_File.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_File proto.InternalMessageInfo
+
+func (m *File) GetHash() []byte {
+	if m != nil {
+		return m.Hash
+	}
+	return nil
+}
+
+func (m *File) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *File) GetSize() uint64 {
+	if m != nil {
+		return m.Size
+	}
+	return 0
+}
+
 type Image struct {
-	Width                uint32   `protobuf:"varint,1,opt,name=width,proto3" json:"width"`
-	Height               uint32   `protobuf:"varint,2,opt,name=height,proto3" json:"height"`
+	Width                uint32   `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
+	Height               uint32   `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -3548,7 +2535,7 @@ func (m *Image) Reset()         { *m = Image{} }
 func (m *Image) String() string { return proto.CompactTextString(m) }
 func (*Image) ProtoMessage()    {}
 func (*Image) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{7}
+	return fileDescriptor_bae86789b513b1db, []int{5}
 }
 
 func (m *Image) XXX_Unmarshal(b []byte) error {
@@ -3584,10 +2571,9 @@ func (m *Image) GetHeight() uint32 {
 }
 
 type Video struct {
-	Width                uint32   `protobuf:"varint,1,opt,name=width,proto3" json:"width"`
-	Height               uint32   `protobuf:"varint,2,opt,name=height,proto3" json:"height"`
-	Duration             uint32   `protobuf:"varint,3,opt,name=duration,proto3" json:"duration"`
-	Audio                *Audio   `protobuf:"bytes,15,opt,name=audio,proto3" json:"audio"`
+	Width                uint32   `protobuf:"varint,1,opt,name=width,proto3" json:"width,omitempty"`
+	Height               uint32   `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
+	Duration             uint32   `protobuf:"varint,3,opt,name=duration,proto3" json:"duration,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -3597,7 +2583,7 @@ func (m *Video) Reset()         { *m = Video{} }
 func (m *Video) String() string { return proto.CompactTextString(m) }
 func (*Video) ProtoMessage()    {}
 func (*Video) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{8}
+	return fileDescriptor_bae86789b513b1db, []int{6}
 }
 
 func (m *Video) XXX_Unmarshal(b []byte) error {
@@ -3639,15 +2625,8 @@ func (m *Video) GetDuration() uint32 {
 	return 0
 }
 
-func (m *Video) GetAudio() *Audio {
-	if m != nil {
-		return m.Audio
-	}
-	return nil
-}
-
 type Audio struct {
-	Duration             uint32   `protobuf:"varint,1,opt,name=duration,proto3" json:"duration"`
+	Duration             uint32   `protobuf:"varint,1,opt,name=duration,proto3" json:"duration,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -3657,7 +2636,7 @@ func (m *Audio) Reset()         { *m = Audio{} }
 func (m *Audio) String() string { return proto.CompactTextString(m) }
 func (*Audio) ProtoMessage()    {}
 func (*Audio) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{9}
+	return fileDescriptor_bae86789b513b1db, []int{7}
 }
 
 func (m *Audio) XXX_Unmarshal(b []byte) error {
@@ -3685,50 +2664,11 @@ func (m *Audio) GetDuration() uint32 {
 	return 0
 }
 
-type Software struct {
-	Os                   string   `protobuf:"bytes,1,opt,name=os,proto3" json:"os"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Software) Reset()         { *m = Software{} }
-func (m *Software) String() string { return proto.CompactTextString(m) }
-func (*Software) ProtoMessage()    {}
-func (*Software) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{10}
-}
-
-func (m *Software) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Software.Unmarshal(m, b)
-}
-func (m *Software) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Software.Marshal(b, m, deterministic)
-}
-func (m *Software) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Software.Merge(m, src)
-}
-func (m *Software) XXX_Size() int {
-	return xxx_messageInfo_Software.Size(m)
-}
-func (m *Software) XXX_DiscardUnknown() {
-	xxx_messageInfo_Software.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Software proto.InternalMessageInfo
-
-func (m *Software) GetOs() string {
-	if m != nil {
-		return m.Os
-	}
-	return ""
-}
-
 // RFC 5646
 type Language struct {
-	Language             Language_Language `protobuf:"varint,1,opt,name=language,proto3,enum=pb.Language_Language" json:"language"`
-	Script               Language_Script   `protobuf:"varint,2,opt,name=script,proto3,enum=pb.Language_Script" json:"script"`
-	Region               Location_Country  `protobuf:"varint,3,opt,name=region,proto3,enum=pb.Location_Country" json:"region"`
+	Language             Language_Language `protobuf:"varint,1,opt,name=language,proto3,enum=pb.Language_Language" json:"language,omitempty"`
+	Script               Language_Script   `protobuf:"varint,2,opt,name=script,proto3,enum=pb.Language_Script" json:"script,omitempty"`
+	Region               Location_Country  `protobuf:"varint,3,opt,name=region,proto3,enum=pb.Location_Country" json:"region,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
 	XXX_unrecognized     []byte            `json:"-"`
 	XXX_sizecache        int32             `json:"-"`
@@ -3738,7 +2678,7 @@ func (m *Language) Reset()         { *m = Language{} }
 func (m *Language) String() string { return proto.CompactTextString(m) }
 func (*Language) ProtoMessage()    {}
 func (*Language) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{11}
+	return fileDescriptor_bae86789b513b1db, []int{8}
 }
 
 func (m *Language) XXX_Unmarshal(b []byte) error {
@@ -3781,12 +2721,12 @@ func (m *Language) GetRegion() Location_Country {
 }
 
 type Location struct {
-	Country              Location_Country `protobuf:"varint,1,opt,name=country,proto3,enum=pb.Location_Country" json:"country"`
-	State                string           `protobuf:"bytes,2,opt,name=state,proto3" json:"state"`
-	City                 string           `protobuf:"bytes,3,opt,name=city,proto3" json:"city"`
-	Code                 string           `protobuf:"bytes,4,opt,name=code,proto3" json:"code"`
-	Latitude             int32            `protobuf:"zigzag32,5,opt,name=latitude,proto3" json:"latitude"`
-	Longitude            int32            `protobuf:"zigzag32,6,opt,name=longitude,proto3" json:"longitude"`
+	Country              Location_Country `protobuf:"varint,1,opt,name=country,proto3,enum=pb.Location_Country" json:"country,omitempty"`
+	State                string           `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"`
+	City                 string           `protobuf:"bytes,3,opt,name=city,proto3" json:"city,omitempty"`
+	Code                 string           `protobuf:"bytes,4,opt,name=code,proto3" json:"code,omitempty"`
+	Latitude             int32            `protobuf:"zigzag32,5,opt,name=latitude,proto3" json:"latitude,omitempty"`
+	Longitude            int32            `protobuf:"zigzag32,6,opt,name=longitude,proto3" json:"longitude,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
 	XXX_unrecognized     []byte           `json:"-"`
 	XXX_sizecache        int32            `json:"-"`
@@ -3796,7 +2736,7 @@ func (m *Location) Reset()         { *m = Location{} }
 func (m *Location) String() string { return proto.CompactTextString(m) }
 func (*Location) ProtoMessage()    {}
 func (*Location) Descriptor() ([]byte, []int) {
-	return fileDescriptor_bae86789b513b1db, []int{12}
+	return fileDescriptor_bae86789b513b1db, []int{9}
 }
 
 func (m *Location) XXX_Unmarshal(b []byte) error {
@@ -3860,23 +2800,18 @@ func (m *Location) GetLongitude() int32 {
 }
 
 func init() {
-	proto.RegisterEnum("pb.ClaimList_ListType", ClaimList_ListType_name, ClaimList_ListType_value)
 	proto.RegisterEnum("pb.Fee_Currency", Fee_Currency_name, Fee_Currency_value)
-	proto.RegisterEnum("pb.Software_OS", Software_OS_name, Software_OS_value)
 	proto.RegisterEnum("pb.Language_Language", Language_Language_name, Language_Language_value)
 	proto.RegisterEnum("pb.Language_Script", Language_Script_name, Language_Script_value)
 	proto.RegisterEnum("pb.Location_Country", Location_Country_name, Location_Country_value)
 	proto.RegisterType((*Claim)(nil), "pb.Claim")
-	proto.RegisterType((*Stream)(nil), "pb.Stream")
 	proto.RegisterType((*Channel)(nil), "pb.Channel")
-	proto.RegisterType((*ClaimReference)(nil), "pb.ClaimReference")
-	proto.RegisterType((*ClaimList)(nil), "pb.ClaimList")
-	proto.RegisterType((*Source)(nil), "pb.Source")
+	proto.RegisterType((*Stream)(nil), "pb.Stream")
 	proto.RegisterType((*Fee)(nil), "pb.Fee")
+	proto.RegisterType((*File)(nil), "pb.File")
 	proto.RegisterType((*Image)(nil), "pb.Image")
 	proto.RegisterType((*Video)(nil), "pb.Video")
 	proto.RegisterType((*Audio)(nil), "pb.Audio")
-	proto.RegisterType((*Software)(nil), "pb.Software")
 	proto.RegisterType((*Language)(nil), "pb.Language")
 	proto.RegisterType((*Location)(nil), "pb.Location")
 }
@@ -3884,335 +2819,227 @@ func init() {
 func init() { proto.RegisterFile("claim.proto", fileDescriptor_bae86789b513b1db) }
 
 var fileDescriptor_bae86789b513b1db = []byte{
-	// 5269 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x9a, 0x67, 0x78, 0x1b, 0xc7,
-	0xb5, 0xfe, 0xc5, 0x22, 0x52, 0x5c, 0x15, 0xbf, 0x81, 0x1d, 0x87, 0x29, 0x8e, 0x15, 0xa6, 0x29,
-	0x8e, 0x23, 0x2f, 0x16, 0x0b, 0x70, 0x99, 0xfc, 0x53, 0x00, 0x90, 0x04, 0x21, 0x02, 0x20, 0xb5,
-	0x24, 0x45, 0x51, 0xf9, 0xdf, 0x28, 0x4b, 0x60, 0x05, 0xac, 0x08, 0x60, 0xe9, 0xc5, 0x82, 0x14,
-	0x94, 0x9b, 0x5c, 0xf7, 0x5e, 0xd3, 0x9d, 0xc4, 0x29, 0x4e, 0xb7, 0x9d, 0x38, 0x3d, 0x4e, 0xef,
-	0x71, 0x7a, 0xaf, 0x4e, 0x75, 0xaa, 0xd3, 0x7b, 0x6f, 0xf7, 0x99, 0x73, 0xce, 0xc8, 0x72, 0x9e,
-	0x7c, 0xb9, 0x5f, 0xfc, 0xfe, 0x76, 0x76, 0xb0, 0x33, 0x7b, 0x66, 0x66, 0x5f, 0xbf, 0x7c, 0x64,
-	0x6c, 0xaf, 0x36, 0xbd, 0xa0, 0xb5, 0x77, 0x3d, 0x0a, 0xe3, 0x30, 0xd1, 0xbf, 0xbe, 0x3a, 0x76,
-	0xe5, 0x80, 0xb1, 0x35, 0xaf, 0xda, 0x12, 0x0f, 0x33, 0x86, 0x3a, 0x71, 0xe4, 0x7b, 0xad, 0xd1,
-	0xbe, 0xdd, 0x7d, 0x7b, 0xb6, 0x5b, 0xc6, 0xde, 0xf5, 0xd5, 0xbd, 0x0b, 0xd4, 0x32, 0xb3, 0xc5,
-	0x95, 0x7b, 0x89, 0x47, 0x1a, 0xc3, 0xd5, 0x86, 0xd7, 0x6e, 0xfb, 0xcd, 0xd1, 0x7e, 0xea, 0xb6,
-	0x5d, 0x75, 0xcb, 0x73, 0xd3, 0xcc, 0x16, 0x57, 0xdf, 0x4d, 0x9c, 0x63, 0x18, 0xd5, 0xb0, 0xd9,
-	0xf4, 0xab, 0x71, 0x10, 0xb6, 0x47, 0x07, 0xa8, 0xef, 0x4e, 0xea, 0xab, 0x46, 0x2b, 0x05, 0x9d,
-	0x78, 0x66, 0x8b, 0x7b, 0x52, 0x97, 0xc4, 0xd9, 0xc6, 0x50, 0xe4, 0xaf, 0x87, 0x9d, 0x78, 0x74,
-	0x90, 0x3a, 0x27, 0x4e, 0x74, 0x76, 0xfd, 0x23, 0x7e, 0xe4, 0xb7, 0xab, 0xbe, 0x9a, 0x07, 0xf7,
-	0x49, 0x9c, 0x66, 0x6c, 0x8d, 0x83, 0xb8, 0xe9, 0x8f, 0x6e, 0xdb, 0xdd, 0xb7, 0x67, 0xc4, 0xe5,
-	0x8b, 0xc4, 0x6e, 0x63, 0x7b, 0xcd, 0xef, 0x54, 0xa3, 0x60, 0x9d, 0x46, 0x1d, 0xa1, 0x7b, 0x27,
-	0x37, 0x25, 0xf6, 0x18, 0x23, 0x71, 0xa3, 0xdb, 0x5a, 0x6d, 0x7b, 0x41, 0x73, 0xd4, 0x38, 0xe9,
-	0x45, 0xc3, 0x6e, 0x54, 0xf5, 0xdd, 0x7b, 0x6e, 0x26, 0x12, 0xc6, 0x60, 0xec, 0xd5, 0x3b, 0xa3,
-	0xdb, 0x77, 0x0f, 0xec, 0x19, 0x71, 0x89, 0x13, 0x67, 0x19, 0x23, 0x4d, 0xaf, 0x5d, 0xef, 0x7a,
-	0x75, 0xbf, 0x33, 0xba, 0x63, 0xf7, 0xc0, 0x9e, 0xed, 0xd6, 0x0e, 0xf5, 0xeb, 0x92, 0x34, 0xba,
-	0xf7, 0xdc, 0xa6, 0xbe, 0x61, 0xd5, 0x53, 0xa3, 0x76, 0x46, 0x77, 0x9e, 0xd4, 0x57, 0x1a, 0xdd,
-	0x7b, 0x6e, 0xe7, 0x86, 0x8c, 0xc1, 0xb8, 0xb7, 0xee, 0x8f, 0xdd, 0xd9, 0x6f, 0x0c, 0x71, 0xc9,
-	0x13, 0x63, 0xc6, 0x50, 0x87, 0xe6, 0x74, 0xaf, 0xe5, 0xe0, 0x59, 0xca, 0x9d, 0xc4, 0xe9, 0xc6,
-	0x90, 0xd7, 0x8d, 0x1b, 0x61, 0x44, 0x6b, 0x31, 0xe2, 0xca, 0x55, 0x62, 0xd4, 0x18, 0x6e, 0x06,
-	0x55, 0xbf, 0xdd, 0xf1, 0xa9, 0xf0, 0x23, 0xae, 0xbe, 0x4c, 0x9c, 0x69, 0x6c, 0x17, 0x3c, 0xdc,
-	0x8d, 0x9a, 0x54, 0xe9, 0x11, 0xd7, 0x90, 0xa6, 0xa5, 0xa8, 0x99, 0x78, 0x88, 0xb1, 0x23, 0xf2,
-	0x9b, 0xbe, 0xd7, 0xf1, 0x0f, 0xc7, 0x41, 0xcb, 0x1f, 0xdd, 0xba, 0xbb, 0x6f, 0xcf, 0x80, 0xbb,
-	0x5d, 0xda, 0x16, 0x83, 0x96, 0x9f, 0xb8, 0xbf, 0x31, 0x70, 0xc4, 0xf7, 0x47, 0x87, 0x68, 0x5a,
-	0xc3, 0x6a, 0x5a, 0xd3, 0xbe, 0xef, 0xaa, 0xb6, 0xc4, 0x43, 0x8c, 0xad, 0x41, 0xcb, 0xab, 0xfb,
-	0x52, 0xd9, 0x11, 0x75, 0xb3, 0xa8, 0x1a, 0x66, 0xb6, 0xb8, 0x7c, 0x47, 0x75, 0xd9, 0x08, 0x6a,
-	0x7e, 0x38, 0xba, 0xfd, 0x9e, 0x2e, 0x07, 0x54, 0x83, 0xea, 0x42, 0x77, 0x54, 0x17, 0xaf, 0x5b,
-	0x0b, 0xc2, 0xd1, 0x1d, 0xf7, 0x74, 0xc9, 0xaa, 0x06, 0xd5, 0x85, 0xee, 0x24, 0xce, 0x32, 0xb6,
-	0x75, 0xc2, 0x23, 0xf1, 0xa6, 0x17, 0xf9, 0xa3, 0x3b, 0xa9, 0xd7, 0x0e, 0xae, 0x0f, 0xb7, 0xcd,
-	0x6c, 0x71, 0x4f, 0xdc, 0x3f, 0x51, 0xdc, 0x5b, 0xfb, 0x8c, 0x61, 0xd9, 0xa8, 0x89, 0x33, 0x0c,
-	0x63, 0xbd, 0xbb, 0xda, 0x0c, 0xaa, 0x87, 0xd7, 0xfc, 0x1e, 0x55, 0x78, 0x87, 0x3b, 0xc2, 0x2d,
-	0xb3, 0x7e, 0x4f, 0xed, 0x2e, 0xbf, 0xa5, 0x76, 0x08, 0xd7, 0x95, 0x2f, 0x54, 0xf1, 0x36, 0xfd,
-	0xd5, 0x4e, 0x10, 0x73, 0xf1, 0xb8, 0xb4, 0x86, 0x34, 0xa9, 0xe2, 0xed, 0x36, 0xb6, 0x56, 0xc3,
-	0x0d, 0x3f, 0x92, 0x1d, 0x7c, 0xf2, 0x92, 0xf1, 0x8d, 0xc4, 0xa3, 0x8c, 0x6d, 0x47, 0x7c, 0x2f,
-	0xee, 0x46, 0x7e, 0x8d, 0x4a, 0xfb, 0xef, 0x67, 0xc2, 0x3d, 0x71, 0x7b, 0xec, 0x1c, 0x63, 0xd7,
-	0xbd, 0x77, 0xbf, 0x9a, 0x34, 0x1d, 0xdf, 0xc3, 0x0d, 0xaf, 0xd3, 0xd0, 0x93, 0xa6, 0x96, 0x19,
-	0xaf, 0xd3, 0x18, 0xbb, 0xa5, 0xcf, 0x18, 0x39, 0xf1, 0xa0, 0x44, 0xca, 0x18, 0x69, 0x06, 0x9d,
-	0xf8, 0xb0, 0x7a, 0x75, 0xea, 0xbb, 0xcb, 0x3a, 0xfd, 0x5e, 0x43, 0xed, 0x55, 0xff, 0x59, 0xec,
-	0xad, 0xfb, 0xee, 0xb6, 0xa6, 0x50, 0xe2, 0xf1, 0x06, 0x78, 0x84, 0x48, 0x0f, 0xda, 0x19, 0xed,
-	0xa7, 0xad, 0xfb, 0x1f, 0x4e, 0xa3, 0x7b, 0x4a, 0xf5, 0x5e, 0xd7, 0x9d, 0xb1, 0xb3, 0x8c, 0x6d,
-	0xfa, 0xa1, 0x89, 0x5d, 0x86, 0x91, 0x9f, 0x2b, 0x95, 0xa6, 0xf2, 0x8b, 0xc5, 0xb9, 0x0a, 0xb6,
-	0xa8, 0xeb, 0xc9, 0x29, 0xb7, 0x78, 0x20, 0x4b, 0xd7, 0xfd, 0x63, 0xb7, 0xf5, 0x19, 0x43, 0x5c,
-	0x1b, 0x75, 0xd2, 0x4e, 0x7a, 0x23, 0x62, 0xd5, 0xd6, 0xf6, 0x5a, 0xbe, 0x2c, 0x00, 0xb1, 0x6a,
-	0xeb, 0x04, 0xc7, 0x79, 0x4f, 0x0f, 0xba, 0xc4, 0xaa, 0x26, 0x2d, 0xbf, 0x16, 0x78, 0xfc, 0x9e,
-	0xbc, 0x9f, 0x47, 0xa8, 0x85, 0x66, 0x01, 0x63, 0x40, 0x2d, 0xd5, 0x56, 0x6a, 0x57, 0x98, 0xb8,
-	0x9f, 0x31, 0xdc, 0xa9, 0x71, 0x05, 0x87, 0x68, 0xbc, 0xa1, 0x4e, 0x4d, 0x95, 0x4f, 0xad, 0xee,
-	0x6a, 0x7c, 0x38, 0x68, 0x1f, 0x09, 0xe9, 0xe6, 0x30, 0xdd, 0x34, 0x56, 0xe3, 0xa2, 0xb4, 0x8c,
-	0xdd, 0xd4, 0x67, 0x0c, 0x4c, 0xfb, 0x7e, 0xe2, 0x6c, 0x63, 0x5b, 0xb5, 0x1b, 0xa9, 0x57, 0xee,
-	0x49, 0x61, 0x21, 0x87, 0x60, 0x6f, 0x5e, 0xda, 0xdd, 0x13, 0x3d, 0xd4, 0x59, 0xf4, 0x6a, 0xb5,
-	0xc8, 0xef, 0x74, 0xe8, 0x5d, 0x76, 0xb8, 0xfa, 0x92, 0x4e, 0x6f, 0x2b, 0xec, 0xb6, 0x63, 0x79,
-	0x21, 0xb9, 0x1a, 0x7b, 0x9c, 0xb1, 0x4d, 0x3f, 0x27, 0x71, 0x9a, 0x81, 0xa5, 0xca, 0x6c, 0x65,
-	0x6e, 0xb9, 0x72, 0x38, 0xbf, 0xe4, 0xba, 0x53, 0x95, 0xfc, 0x0a, 0xb6, 0x24, 0x86, 0x8d, 0x81,
-	0x52, 0x2e, 0x8f, 0x3e, 0x05, 0xb9, 0xc5, 0x3c, 0xfa, 0x15, 0x2c, 0x2d, 0x4c, 0x62, 0x60, 0x2c,
-	0x6d, 0x6c, 0xa5, 0x03, 0xa7, 0xb6, 0xf0, 0x66, 0x50, 0x8b, 0xb9, 0xaa, 0x3b, 0x5d, 0xbe, 0x50,
-	0x63, 0x36, 0xfc, 0xa0, 0xde, 0x88, 0x69, 0x32, 0x3b, 0x5d, 0xb9, 0x1a, 0x8b, 0x8c, 0xad, 0x74,
-	0x08, 0xff, 0x6f, 0x3f, 0x4b, 0x3c, 0xc0, 0xd8, 0x56, 0xeb, 0x46, 0xde, 0x89, 0x4f, 0xfc, 0x4e,
-	0xf7, 0xc4, 0x75, 0xe2, 0x4c, 0x7d, 0x8a, 0x4f, 0xf9, 0xb7, 0x53, 0x2c, 0x67, 0x78, 0xec, 0xa1,
-	0xc6, 0x56, 0xba, 0xbe, 0xd7, 0x53, 0xfa, 0xee, 0xfd, 0x94, 0xb1, 0x75, 0x63, 0x9b, 0x3e, 0xd4,
-	0x89, 0x5d, 0x46, 0x7f, 0xd8, 0xa1, 0x1e, 0x23, 0x6e, 0x7f, 0xd8, 0x19, 0x5b, 0x34, 0xfa, 0xe7,
-	0x16, 0xd4, 0xc6, 0xd2, 0x25, 0x9a, 0x5b, 0xe0, 0xe2, 0x64, 0x2b, 0x2b, 0xe8, 0x4b, 0x8c, 0x18,
-	0x5b, 0x4b, 0xc5, 0xca, 0xd2, 0x41, 0xf4, 0x27, 0xb6, 0x1b, 0xc3, 0xcb, 0xc5, 0xca, 0xe4, 0xdc,
-	0xf2, 0x02, 0x06, 0x54, 0x87, 0x72, 0x36, 0x8f, 0x41, 0xd5, 0x9a, 0xad, 0x4c, 0xba, 0x73, 0xc5,
-	0x49, 0x6c, 0x55, 0xad, 0xc5, 0xb9, 0x05, 0x0c, 0x8d, 0xdd, 0x75, 0x86, 0xb1, 0x4d, 0x7f, 0xcf,
-	0x13, 0x49, 0x63, 0x9b, 0xfe, 0xa2, 0xcb, 0x5a, 0xdf, 0xf7, 0xe4, 0xef, 0xfd, 0x3d, 0x1f, 0xfe,
-	0x13, 0xdd, 0x12, 0x8f, 0x36, 0x86, 0xd8, 0x6e, 0xa8, 0x56, 0xbb, 0xac, 0x53, 0xef, 0xf5, 0x83,
-	0x05, 0xba, 0xe5, 0x4a, 0x17, 0x36, 0xbd, 0xba, 0x2e, 0xdf, 0x2e, 0xeb, 0xb4, 0x93, 0x1d, 0x62,
-	0x6f, 0x5e, 0xed, 0x87, 0xa8, 0xe7, 0x4a, 0x9f, 0xb1, 0x1b, 0x76, 0x9c, 0x34, 0xb5, 0x93, 0xb6,
-	0x46, 0x29, 0x5b, 0x29, 0x2c, 0x65, 0x0b, 0x53, 0xd8, 0x92, 0x18, 0x32, 0xfa, 0xfd, 0x36, 0xfa,
-	0x94, 0x7a, 0x1e, 0xfa, 0x49, 0x57, 0x31, 0x40, 0xea, 0x63, 0x90, 0xf4, 0x08, 0xb6, 0x92, 0xae,
-	0x61, 0x88, 0xb4, 0x85, 0x61, 0xd2, 0x36, 0xb6, 0x91, 0x46, 0x18, 0x21, 0xed, 0xc0, 0x20, 0xdd,
-	0xc0, 0x76, 0xd2, 0x1e, 0x76, 0x90, 0x1e, 0xc7, 0x4e, 0xa5, 0xab, 0x1e, 0x76, 0x91, 0xfa, 0x38,
-	0x85, 0xb4, 0x0e, 0x90, 0x36, 0x70, 0x1f, 0xd2, 0x00, 0x09, 0xd2, 0x16, 0x4e, 0x25, 0x6d, 0xe3,
-	0x34, 0xd2, 0x10, 0xf7, 0x25, 0x8d, 0x70, 0x3a, 0x69, 0x07, 0xf7, 0x53, 0x5a, 0xf5, 0x30, 0x4a,
-	0xea, 0xe3, 0xfe, 0xa4, 0x0d, 0x3c, 0x80, 0x34, 0xc4, 0x03, 0x49, 0x23, 0x3c, 0x88, 0xb4, 0x83,
-	0x33, 0x48, 0xbb, 0x78, 0x30, 0xe9, 0x06, 0xce, 0x24, 0xed, 0x61, 0xb7, 0xd2, 0x9a, 0x87, 0x87,
-	0x90, 0xfa, 0x18, 0x23, 0xdd, 0xc0, 0x43, 0x49, 0x8f, 0xe3, 0x61, 0x54, 0x1f, 0x1f, 0x0f, 0x27,
-	0x6d, 0xe2, 0x11, 0xa4, 0x21, 0x1e, 0x49, 0xda, 0xc1, 0x1e, 0xd2, 0x18, 0x8f, 0x22, 0xed, 0xe2,
-	0x2c, 0xa5, 0x47, 0x3c, 0x3c, 0x9a, 0xf4, 0x08, 0xce, 0x26, 0x0d, 0xf0, 0x18, 0xd2, 0xa3, 0xd8,
-	0x4b, 0x1a, 0xe2, 0x1c, 0xd2, 0x08, 0x26, 0x69, 0x0f, 0x49, 0xa5, 0x75, 0x0f, 0x16, 0x69, 0x0d,
-	0x29, 0xd2, 0x26, 0x6c, 0xd2, 0x36, 0xd2, 0xa4, 0x5d, 0x64, 0x48, 0x37, 0x30, 0xae, 0xb4, 0xe1,
-	0xc1, 0x21, 0xf5, 0x31, 0x41, 0x1a, 0xe0, 0xb1, 0xa4, 0x21, 0x1e, 0x47, 0x1a, 0xe1, 0xff, 0x91,
-	0xc6, 0x78, 0x3c, 0x69, 0x17, 0x4f, 0x20, 0xed, 0xe1, 0x89, 0xa4, 0xc7, 0xf1, 0x24, 0xa5, 0x81,
-	0x87, 0x2c, 0x69, 0x0d, 0x39, 0x52, 0x1f, 0x79, 0xd2, 0x3a, 0x26, 0x49, 0x03, 0x4c, 0x91, 0xae,
-	0x61, 0x9a, 0x34, 0x44, 0x81, 0xb4, 0x83, 0x19, 0xd2, 0x18, 0x45, 0xd2, 0x2e, 0xf6, 0x29, 0x3d,
-	0xea, 0x61, 0x96, 0x74, 0x03, 0x25, 0xa5, 0x6b, 0x1e, 0xca, 0xa4, 0x75, 0x54, 0x48, 0x03, 0xcc,
-	0x91, 0x1e, 0xc5, 0x3c, 0xe9, 0x1a, 0xf6, 0x93, 0x36, 0xe1, 0x92, 0xb6, 0xb0, 0x40, 0xda, 0xc6,
-	0x22, 0x69, 0x88, 0x25, 0xd2, 0x08, 0x07, 0x48, 0x3b, 0x58, 0x26, 0xed, 0xe2, 0x20, 0xe9, 0x06,
-	0x56, 0x48, 0x37, 0x71, 0x88, 0xb4, 0x87, 0x27, 0x2b, 0x6d, 0x7a, 0xf8, 0xff, 0xa4, 0xab, 0xf8,
-	0x2f, 0xd2, 0x3a, 0x9e, 0x42, 0x1a, 0xe0, 0x30, 0x69, 0x1b, 0x4f, 0x25, 0x0d, 0xe1, 0x91, 0xc6,
-	0x58, 0x25, 0xed, 0xa2, 0x4a, 0xba, 0x81, 0x9a, 0xd2, 0x56, 0x1d, 0x3e, 0x69, 0x03, 0x47, 0x48,
-	0x03, 0xd4, 0x49, 0xd7, 0xd0, 0x20, 0x6d, 0x22, 0x20, 0x6d, 0xe3, 0x28, 0x69, 0x84, 0x35, 0xd2,
-	0x0e, 0x9a, 0xa4, 0x31, 0x5a, 0xa4, 0x3d, 0xb4, 0x95, 0xb6, 0x3d, 0x84, 0xa4, 0xab, 0x58, 0x27,
-	0xad, 0xe1, 0x5c, 0x52, 0x1f, 0x11, 0x69, 0x1d, 0x1d, 0xd2, 0x26, 0x62, 0xd2, 0x36, 0xba, 0xa4,
-	0x21, 0x36, 0x48, 0x23, 0x6c, 0x92, 0x6e, 0xe0, 0x18, 0x69, 0x0f, 0x3d, 0xa5, 0x61, 0x15, 0xc7,
-	0x49, 0x8f, 0xe2, 0x69, 0xa4, 0x2d, 0xfc, 0x37, 0x69, 0x84, 0xa7, 0x93, 0x76, 0xf0, 0x0c, 0xa5,
-	0xeb, 0x1e, 0xfe, 0x27, 0x31, 0x6c, 0xf4, 0xaf, 0x07, 0x38, 0xaf, 0x8f, 0xa0, 0x89, 0xf3, 0x19,
-	0x3a, 0xb8, 0x80, 0x21, 0xc6, 0x85, 0x04, 0xe7, 0x76, 0x71, 0x11, 0x41, 0xd4, 0xc2, 0xc5, 0x0c,
-	0x6d, 0x5c, 0xc2, 0x10, 0xe2, 0x52, 0x86, 0x2e, 0x2e, 0x63, 0xd8, 0xc4, 0xe5, 0x04, 0x1d, 0x0f,
-	0x57, 0x30, 0x54, 0x71, 0x25, 0x43, 0x0d, 0x57, 0x31, 0xf8, 0xb8, 0x9a, 0xa1, 0x8e, 0x6b, 0x18,
-	0x02, 0x5c, 0xcb, 0xb0, 0x86, 0xeb, 0x18, 0x9a, 0xb8, 0x9e, 0xa1, 0x85, 0x67, 0x32, 0xb4, 0xf1,
-	0x2c, 0x86, 0x10, 0xcf, 0x66, 0x38, 0x17, 0xcf, 0x61, 0x88, 0xf0, 0x5c, 0x86, 0x0e, 0x9e, 0xc7,
-	0x10, 0xe3, 0xf9, 0x0c, 0x5d, 0xdc, 0xc0, 0xb0, 0x81, 0x17, 0x30, 0x6c, 0xe2, 0x85, 0x04, 0xb1,
-	0x87, 0x17, 0x31, 0xf8, 0xb8, 0x91, 0xa1, 0x8e, 0x17, 0x33, 0x34, 0xf0, 0x12, 0x86, 0x00, 0x2f,
-	0x65, 0x58, 0xc3, 0xcb, 0x18, 0x9a, 0xb8, 0x89, 0xa1, 0x8d, 0x97, 0x33, 0x84, 0x78, 0x05, 0x43,
-	0x84, 0x57, 0x32, 0x74, 0xf0, 0x2a, 0x86, 0x18, 0xaf, 0x66, 0xd8, 0xc4, 0x6b, 0x18, 0x7a, 0x78,
-	0x2d, 0x41, 0xb7, 0x8e, 0x9b, 0x19, 0xd6, 0x70, 0x0b, 0x43, 0x84, 0x5b, 0x19, 0x8e, 0xe3, 0x75,
-	0x04, 0x1b, 0x3e, 0x5e, 0xcf, 0x10, 0xe0, 0x36, 0x86, 0x10, 0x6f, 0x20, 0xd8, 0xf4, 0xf0, 0x46,
-	0x86, 0x10, 0x6f, 0x22, 0x38, 0xd6, 0xc0, 0x9b, 0x09, 0x7a, 0x01, 0xde, 0xc2, 0x10, 0xe2, 0xad,
-	0x04, 0xc7, 0x3d, 0xbc, 0x8d, 0xa1, 0x81, 0xb7, 0x33, 0x74, 0x71, 0x7b, 0xdf, 0xd8, 0xcd, 0x30,
-	0x86, 0xd8, 0x5c, 0x12, 0x09, 0x63, 0x97, 0x76, 0x86, 0x85, 0xbc, 0x5b, 0x9c, 0x5f, 0xc4, 0x96,
-	0xc4, 0x36, 0x63, 0x30, 0x5b, 0x6b, 0xb6, 0xd0, 0x47, 0x74, 0xc4, 0x5b, 0x43, 0x3f, 0x51, 0xbd,
-	0xa1, 0xdc, 0x41, 0x51, 0x23, 0x6c, 0x61, 0x90, 0x28, 0xf2, 0x56, 0xb1, 0x55, 0xa8, 0x8d, 0x21,
-	0xa6, 0x56, 0x80, 0x61, 0x21, 0xe5, 0x13, 0x8a, 0x36, 0x3a, 0x31, 0x46, 0x14, 0xe5, 0xbc, 0x66,
-	0x00, 0x83, 0xa9, 0xd5, 0xc5, 0x76, 0xa6, 0x4e, 0x07, 0x3b, 0x98, 0xe2, 0x35, 0xec, 0x24, 0xf2,
-	0xdb, 0x75, 0xec, 0x22, 0x6a, 0xac, 0x75, 0x70, 0x0a, 0x51, 0x33, 0xe8, 0x00, 0x44, 0xe1, 0x7a,
-	0x88, 0xfb, 0x10, 0x45, 0x5e, 0x03, 0x09, 0xa1, 0x00, 0xa7, 0x12, 0x75, 0xeb, 0x01, 0x4e, 0x63,
-	0x6a, 0xd4, 0x70, 0x5f, 0x45, 0x79, 0x6f, 0xad, 0x85, 0xd3, 0x99, 0xda, 0xca, 0x45, 0x88, 0xa2,
-	0x00, 0xa3, 0x44, 0x0d, 0xaf, 0x85, 0xfb, 0x33, 0xf9, 0x11, 0x1e, 0x40, 0x14, 0x44, 0x31, 0x1e,
-	0x48, 0x14, 0xae, 0xc7, 0x78, 0x10, 0xd1, 0x7a, 0xab, 0x8d, 0x33, 0x98, 0xa2, 0x18, 0x0f, 0x26,
-	0xea, 0x45, 0x4d, 0x9c, 0x29, 0xd4, 0xc1, 0x6e, 0x45, 0x93, 0xfe, 0x86, 0x72, 0x16, 0x45, 0x61,
-	0x3d, 0xc2, 0x18, 0x51, 0x27, 0x8a, 0xf1, 0x50, 0xa2, 0xee, 0x7a, 0x13, 0x0f, 0x53, 0x34, 0x55,
-	0xef, 0xd5, 0xf0, 0x70, 0xa1, 0x06, 0x1e, 0x21, 0xb4, 0x8e, 0x47, 0x12, 0x35, 0x57, 0x3d, 0xec,
-	0x61, 0xea, 0xb5, 0xf0, 0x28, 0xa2, 0xb8, 0x11, 0xe0, 0x2c, 0x45, 0x05, 0x3f, 0x5c, 0xc3, 0xa3,
-	0x85, 0x22, 0x9c, 0x4d, 0xd4, 0xf4, 0xea, 0x78, 0x0c, 0x51, 0xd8, 0xae, 0x63, 0xaf, 0x50, 0x0b,
-	0xe7, 0x30, 0xc5, 0x0d, 0x98, 0x44, 0x6a, 0xb5, 0x92, 0x4c, 0xfe, 0x1a, 0x2c, 0xa2, 0xee, 0xd1,
-	0x08, 0x29, 0xa6, 0xa8, 0x0b, 0x5b, 0xd1, 0x8c, 0xd7, 0x5e, 0x45, 0x5a, 0xa8, 0x8e, 0x8c, 0x50,
-	0x80, 0x71, 0xa1, 0x10, 0x8e, 0x50, 0x07, 0x13, 0x42, 0x31, 0x1e, 0xcb, 0x14, 0x47, 0x78, 0x1c,
-	0x91, 0xbf, 0xaa, 0xfc, 0x48, 0x51, 0x10, 0x79, 0x78, 0x3c, 0x51, 0xb3, 0xbb, 0x89, 0x27, 0x10,
-	0xb5, 0xda, 0x75, 0x3c, 0x51, 0x68, 0x1d, 0x4f, 0x22, 0x8a, 0xd6, 0x62, 0x64, 0x89, 0xba, 0xed,
-	0x3a, 0x72, 0x8a, 0x8a, 0xed, 0x5a, 0x07, 0x79, 0xa2, 0xd8, 0x6b, 0x62, 0x52, 0xd1, 0x3e, 0xaf,
-	0x15, 0x62, 0x8a, 0x69, 0xc3, 0xc3, 0x34, 0xd1, 0xba, 0xd7, 0x46, 0x81, 0xa8, 0x1b, 0x55, 0x31,
-	0xa3, 0x68, 0x56, 0xed, 0xba, 0x22, 0x53, 0xdb, 0xc3, 0x3e, 0xa2, 0x86, 0x17, 0x61, 0x96, 0xa9,
-	0x15, 0xa1, 0xc4, 0x14, 0x1e, 0x45, 0x99, 0x28, 0x88, 0x9b, 0xa8, 0x08, 0x75, 0x30, 0x47, 0xd4,
-	0xae, 0x79, 0x98, 0x27, 0x0a, 0x23, 0x1f, 0xfb, 0x89, 0xd6, 0x7d, 0xe5, 0x5d, 0x8a, 0xd4, 0xca,
-	0x2c, 0x28, 0x2a, 0xa9, 0x31, 0x16, 0x99, 0x42, 0xe5, 0x60, 0x44, 0xf1, 0x11, 0x1c, 0x10, 0xaa,
-	0x63, 0x59, 0xa8, 0x8d, 0x83, 0x44, 0xfe, 0x9a, 0x8f, 0x15, 0xa6, 0xf5, 0x2a, 0x0e, 0x11, 0x05,
-	0xad, 0x55, 0x3c, 0x99, 0xa9, 0xad, 0xfc, 0x8c, 0x49, 0x39, 0x1a, 0x51, 0xa7, 0x8b, 0xa7, 0x10,
-	0x85, 0x2d, 0x0f, 0x87, 0x89, 0x7a, 0xd5, 0x00, 0x4f, 0x65, 0xaa, 0x05, 0xf0, 0x14, 0x95, 0xbd,
-	0xc6, 0x51, 0xac, 0x32, 0xad, 0x79, 0xa8, 0x32, 0xb5, 0x6b, 0xa8, 0x09, 0x05, 0xf0, 0x99, 0xa2,
-	0x2a, 0x8e, 0x30, 0xf5, 0x3c, 0xd4, 0x89, 0xfc, 0xda, 0x11, 0x34, 0x98, 0xda, 0x35, 0x04, 0x4c,
-	0x51, 0x15, 0x47, 0x85, 0x42, 0xac, 0x11, 0xa9, 0xdd, 0xd9, 0x24, 0x0a, 0x6b, 0x01, 0x5a, 0x4c,
-	0xed, 0x3a, 0xda, 0x4c, 0x61, 0x1b, 0x21, 0x51, 0x14, 0x86, 0x58, 0x27, 0x8a, 0xfd, 0x00, 0xe7,
-	0x12, 0x75, 0x9b, 0x31, 0x22, 0xa2, 0x5e, 0x2b, 0x42, 0x47, 0x51, 0x45, 0xcd, 0x2f, 0x66, 0x8a,
-	0x56, 0xd1, 0x25, 0x5a, 0xf5, 0x62, 0x6c, 0x10, 0xf9, 0x9b, 0x1e, 0x36, 0x89, 0xd6, 0x6a, 0xab,
-	0x38, 0xc6, 0x54, 0x5f, 0x45, 0x8f, 0x29, 0x0c, 0x71, 0x9c, 0xa8, 0xd3, 0xe8, 0xe2, 0x69, 0x8a,
-	0xe6, 0xea, 0x9e, 0xf2, 0x43, 0x45, 0xcd, 0xea, 0x1a, 0x9e, 0x4e, 0x14, 0xad, 0x35, 0xf0, 0x0c,
-	0xa6, 0x9e, 0x72, 0xc5, 0x11, 0x63, 0x70, 0xae, 0x53, 0xf7, 0x95, 0x2f, 0x12, 0xb6, 0x3c, 0xe5,
-	0x8c, 0x23, 0xc6, 0xe0, 0xbc, 0xd7, 0x6c, 0x29, 0x6f, 0x24, 0xec, 0x56, 0x95, 0x3b, 0x2a, 0xf4,
-	0xa3, 0x96, 0xf2, 0x47, 0x85, 0x0d, 0xaf, 0xae, 0x1c, 0x92, 0xb0, 0x19, 0x28, 0x8f, 0x64, 0x5c,
-	0x57, 0x2e, 0xc9, 0xb8, 0xa1, 0x7c, 0x92, 0xb0, 0x7d, 0x4c, 0x39, 0xa5, 0xc2, 0x66, 0x54, 0x53,
-	0x5e, 0xa9, 0x30, 0x38, 0xb7, 0xa6, 0xdc, 0x52, 0x61, 0x14, 0x07, 0xca, 0x2f, 0x47, 0x8c, 0xc1,
-	0xfd, 0x9e, 0xe7, 0x29, 0xc7, 0x24, 0x5c, 0x3d, 0xa6, 0x3c, 0x73, 0xc4, 0x18, 0x74, 0x8f, 0xb6,
-	0xeb, 0xca, 0x35, 0x15, 0x86, 0x8d, 0xba, 0xf2, 0x4d, 0xc2, 0x28, 0x54, 0xce, 0xa9, 0xb0, 0xdb,
-	0x8e, 0x94, 0x77, 0x8e, 0x18, 0x83, 0x0b, 0x5e, 0x2b, 0x52, 0xee, 0x49, 0x18, 0x79, 0xca, 0x3f,
-	0x19, 0x57, 0x95, 0x83, 0x12, 0x76, 0xc9, 0x43, 0x15, 0xd6, 0xdb, 0x9b, 0xca, 0x45, 0x15, 0x36,
-	0xbc, 0x4d, 0xe5, 0xa3, 0x84, 0x51, 0x4d, 0x39, 0x29, 0x61, 0x37, 0x50, 0x5e, 0xaa, 0x30, 0xa8,
-	0xd5, 0x94, 0x9b, 0x12, 0xb6, 0x6b, 0xca, 0x4f, 0x19, 0x1b, 0xca, 0x51, 0x15, 0x86, 0xf5, 0x9a,
-	0xf2, 0x54, 0xc6, 0x50, 0xb9, 0x2a, 0x61, 0xe4, 0x29, 0x5f, 0x25, 0xec, 0x85, 0xca, 0x59, 0x15,
-	0x76, 0xdb, 0x35, 0xe5, 0xad, 0x0a, 0x7b, 0xcd, 0x50, 0xb9, 0x2b, 0x61, 0x54, 0x55, 0xfe, 0xca,
-	0xe8, 0x2b, 0x87, 0x65, 0x3c, 0xaa, 0x3c, 0x96, 0xb1, 0xad, 0x5c, 0x76, 0xc4, 0x18, 0x5c, 0xf4,
-	0xea, 0xab, 0xca, 0x67, 0x09, 0xd7, 0x22, 0xe5, 0xb4, 0x84, 0x4d, 0x5f, 0x79, 0x2d, 0x63, 0x57,
-	0xb9, 0x2d, 0x61, 0xab, 0xa9, 0xfc, 0x96, 0xb0, 0x5d, 0x57, 0x8e, 0x4b, 0xb8, 0x11, 0x2b, 0xcf,
-	0x55, 0xe8, 0x37, 0xbb, 0xca, 0x75, 0x09, 0xdb, 0x75, 0xe5, 0xbb, 0x0a, 0x8f, 0xb4, 0xeb, 0xca,
-	0x79, 0x15, 0xd6, 0x9b, 0x75, 0xe5, 0xbd, 0x0a, 0x1b, 0x9e, 0xa7, 0xdc, 0x97, 0x91, 0xfc, 0x57,
-	0x61, 0xb0, 0x1a, 0x2b, 0x07, 0x26, 0x8c, 0x1a, 0xca, 0x83, 0x47, 0x8c, 0xc1, 0xa5, 0xba, 0x17,
-	0x29, 0x17, 0x1e, 0x31, 0x06, 0x0f, 0x78, 0x41, 0x80, 0xdb, 0x19, 0x83, 0xce, 0x3a, 0xde, 0x41,
-	0xb8, 0xac, 0x56, 0xe8, 0x9d, 0x8c, 0xd5, 0x46, 0x88, 0x77, 0x31, 0x86, 0x4d, 0x1f, 0xef, 0x26,
-	0x3c, 0xb8, 0xee, 0x87, 0x78, 0x0f, 0x63, 0xa7, 0x7b, 0x0c, 0xef, 0x25, 0x5c, 0x09, 0x82, 0x00,
-	0xef, 0x23, 0x3c, 0xa4, 0xbe, 0xd6, 0xef, 0x67, 0x54, 0x6b, 0xf1, 0x01, 0xc6, 0x56, 0xdc, 0xc0,
-	0x07, 0x19, 0x3b, 0x3d, 0x1f, 0x1f, 0xd2, 0xd8, 0xc2, 0x87, 0x19, 0x8f, 0x1d, 0x3b, 0x86, 0x8f,
-	0x30, 0xf6, 0x7a, 0x3d, 0x7c, 0x94, 0xf1, 0xf8, 0xf1, 0xe3, 0xb8, 0xa3, 0x6f, 0xec, 0xc6, 0xb3,
-	0x8c, 0x6d, 0x3a, 0x65, 0x26, 0xf6, 0x1a, 0xc3, 0x55, 0x0e, 0x9a, 0x12, 0x71, 0xff, 0x73, 0x08,
-	0xd5, 0x9d, 0x12, 0xa7, 0x19, 0x5b, 0x3b, 0xb1, 0x17, 0xeb, 0xbf, 0xcd, 0xf0, 0x45, 0x22, 0x61,
-	0x0c, 0x56, 0x83, 0xb8, 0x27, 0x7f, 0x15, 0x23, 0xa6, 0xb6, 0xb0, 0xa6, 0xff, 0x2c, 0x43, 0xac,
-	0xc2, 0x7e, 0xd3, 0x8b, 0x83, 0xb8, 0x5b, 0xe3, 0x3f, 0x2e, 0xde, 0xc7, 0x3d, 0x71, 0x9d, 0x78,
-	0x90, 0x31, 0xd2, 0x0c, 0xdb, 0x75, 0xbe, 0x39, 0x44, 0x37, 0xef, 0x69, 0x18, 0xbb, 0x7b, 0x8f,
-	0x31, 0x2c, 0x93, 0x49, 0x9c, 0x6a, 0x9c, 0x72, 0xe2, 0xef, 0x22, 0x73, 0x4b, 0x95, 0x45, 0x77,
-	0x85, 0xb3, 0x6f, 0x76, 0x9a, 0xb3, 0x6f, 0xf6, 0x20, 0x67, 0xdf, 0x6c, 0x89, 0xb3, 0xef, 0xe4,
-	0x21, 0xce, 0xbe, 0xd9, 0x05, 0xce, 0xbe, 0xd9, 0x49, 0xce, 0xbe, 0xd9, 0x39, 0xce, 0xbe, 0xd9,
-	0x22, 0x67, 0xdf, 0xec, 0x7e, 0xce, 0xbe, 0xd9, 0x02, 0x67, 0xdf, 0xac, 0xcb, 0xd9, 0x37, 0x5b,
-	0xe6, 0xec, 0x9b, 0x5d, 0xe6, 0xec, 0x9b, 0x5d, 0xe2, 0xec, 0x9b, 0x5d, 0xe4, 0xec, 0x9b, 0x3d,
-	0xc4, 0xd9, 0x37, 0xb7, 0xc0, 0xd9, 0x37, 0x37, 0xc3, 0xd9, 0x37, 0x37, 0xc9, 0xd9, 0x37, 0x97,
-	0xe3, 0xec, 0x9b, 0x5b, 0xe1, 0xec, 0x9b, 0x9b, 0xe2, 0xec, 0x9b, 0x3b, 0xc4, 0xd9, 0x37, 0xb7,
-	0x8f, 0xb3, 0x6f, 0xae, 0xcc, 0xd9, 0x37, 0xb7, 0xc8, 0xd9, 0x37, 0x37, 0xc7, 0xd9, 0x37, 0xb7,
-	0x9f, 0xb3, 0x6f, 0x2e, 0xcb, 0xd9, 0x37, 0xb7, 0xcc, 0xd9, 0x37, 0x77, 0x80, 0xb3, 0x6f, 0xce,
-	0xe5, 0xec, 0x5b, 0x9c, 0xe3, 0xec, 0x9b, 0xab, 0x70, 0xf6, 0xcd, 0x15, 0x38, 0xfb, 0xe6, 0xa6,
-	0x39, 0xfb, 0xe6, 0x8a, 0x9c, 0x7d, 0x67, 0x67, 0x38, 0xfb, 0xe6, 0xcb, 0x9c, 0x7d, 0xf3, 0x59,
-	0xce, 0xbe, 0xf9, 0x03, 0x9c, 0x7d, 0x67, 0x57, 0x38, 0xfb, 0xe6, 0xa7, 0x39, 0xfb, 0x2e, 0x4e,
-	0x72, 0xf6, 0xcd, 0x97, 0x38, 0xfb, 0xe6, 0x2b, 0x9c, 0x7d, 0xf3, 0x07, 0x39, 0xfb, 0xe6, 0xf3,
-	0x9c, 0x7d, 0xf3, 0x73, 0x9c, 0x7d, 0x67, 0xcb, 0x9c, 0x7d, 0xf3, 0x05, 0xce, 0xbe, 0xf9, 0x49,
-	0xce, 0xbe, 0xf9, 0x59, 0xce, 0xbe, 0x79, 0x97, 0xb3, 0x6f, 0xbe, 0xc8, 0xd9, 0x77, 0xc6, 0xe5,
-	0xec, 0x9b, 0x5f, 0xe2, 0xec, 0x9b, 0x5f, 0xe6, 0xec, 0x9b, 0x5f, 0xe1, 0xec, 0x9b, 0x3f, 0xc4,
-	0xd9, 0x77, 0x72, 0x96, 0xb3, 0xef, 0xe4, 0x3e, 0xce, 0xbe, 0x93, 0x65, 0xce, 0xbe, 0x93, 0x73,
-	0x9c, 0x7d, 0xa7, 0xf2, 0x9c, 0x7d, 0xa7, 0x0a, 0x9c, 0x7d, 0x17, 0x0e, 0x70, 0xf6, 0x2d, 0xec,
-	0xe7, 0xec, 0x3b, 0xe5, 0x72, 0xf6, 0x9d, 0x9a, 0xe2, 0xec, 0x3b, 0xb5, 0xc8, 0xd9, 0x77, 0x7a,
-	0x96, 0xb3, 0xef, 0xf4, 0x1c, 0x67, 0xdf, 0xe9, 0x7d, 0x9c, 0x7d, 0xa7, 0x8b, 0x9c, 0x7d, 0xa7,
-	0x5d, 0xce, 0xbe, 0x85, 0x69, 0xce, 0xbe, 0xf3, 0xd3, 0x9c, 0x7d, 0x17, 0xa7, 0x39, 0xfb, 0x16,
-	0xb2, 0x9c, 0x7d, 0x0b, 0x65, 0xce, 0xbe, 0x85, 0x29, 0xce, 0xbe, 0x93, 0x53, 0x9c, 0x7d, 0x0b,
-	0x33, 0x9c, 0x7d, 0x0b, 0x45, 0xce, 0xbe, 0x05, 0x97, 0xb3, 0x6f, 0xa1, 0xc4, 0xd9, 0xb7, 0x30,
-	0xc9, 0xd9, 0xb7, 0x30, 0xcf, 0xd9, 0xb7, 0xb0, 0xc4, 0xd9, 0xb7, 0xb0, 0xc8, 0xd9, 0xb7, 0x50,
-	0xe0, 0xec, 0x5b, 0xa8, 0x70, 0xf6, 0x2d, 0x2c, 0x73, 0xf6, 0x2d, 0xac, 0x70, 0xf6, 0x9d, 0x59,
-	0xe4, 0xec, 0x3b, 0x53, 0xe6, 0xec, 0x7b, 0x20, 0xcb, 0xd9, 0x77, 0xa6, 0xc2, 0xd9, 0x77, 0x66,
-	0x96, 0xb3, 0xef, 0xcc, 0x12, 0x67, 0xdf, 0xe2, 0x02, 0x67, 0xdf, 0x62, 0x85, 0xb3, 0x6f, 0x71,
-	0x92, 0xb3, 0x6f, 0xd1, 0xe5, 0xec, 0x5b, 0xdc, 0xcf, 0xd9, 0xb7, 0x38, 0xc5, 0xd9, 0xb7, 0x58,
-	0xe6, 0xec, 0x5b, 0x2c, 0x71, 0xf6, 0x2d, 0x2e, 0x72, 0xf6, 0xdd, 0x57, 0xe6, 0xec, 0xbb, 0x6f,
-	0x9e, 0xb3, 0xef, 0xbe, 0x29, 0xce, 0xbe, 0xfb, 0xe6, 0x38, 0xfb, 0xce, 0x1e, 0xe2, 0xec, 0x3b,
-	0x3b, 0xc5, 0xd9, 0x77, 0xb6, 0xc8, 0xd9, 0x77, 0x76, 0x9e, 0xb3, 0xef, 0xac, 0xcb, 0xd9, 0x77,
-	0x76, 0x99, 0xb3, 0xef, 0x6c, 0x81, 0xb3, 0x6f, 0x29, 0xcb, 0xd9, 0xb7, 0x74, 0x80, 0xb3, 0x6f,
-	0x29, 0xc7, 0xd9, 0xb7, 0xb4, 0xc0, 0xd9, 0xb7, 0xe4, 0x72, 0xf6, 0x2d, 0xad, 0x70, 0xf6, 0x2d,
-	0x15, 0x25, 0xfb, 0x96, 0x16, 0x25, 0xfb, 0x96, 0x96, 0x24, 0xfb, 0x96, 0xe7, 0x24, 0xfb, 0x96,
-	0x67, 0x25, 0xfb, 0x96, 0x0b, 0x92, 0x7d, 0xcb, 0xcb, 0x92, 0x7d, 0xcb, 0x2b, 0x92, 0x7d, 0xcb,
-	0x07, 0x24, 0xfb, 0x96, 0x4b, 0x92, 0x7d, 0xcb, 0x8b, 0x92, 0x7d, 0xcb, 0x33, 0x92, 0x7d, 0xcb,
-	0xfb, 0x25, 0xfb, 0x96, 0x5d, 0xc9, 0xbe, 0xe5, 0x25, 0xc9, 0xbe, 0x2b, 0x8b, 0x92, 0x7d, 0xcb,
-	0x07, 0x25, 0xfb, 0x4e, 0x97, 0x25, 0xfb, 0x96, 0x27, 0x25, 0xfb, 0x96, 0xf3, 0x92, 0x7d, 0xcb,
-	0x15, 0xc9, 0xbe, 0xe5, 0x29, 0xc9, 0xbe, 0xe5, 0x05, 0xc9, 0xbe, 0xe5, 0xac, 0x64, 0xdf, 0xf2,
-	0x21, 0xc9, 0xbe, 0xe5, 0xb2, 0x64, 0xdf, 0x4a, 0x56, 0xb2, 0x6f, 0xc5, 0x95, 0xec, 0x5b, 0x99,
-	0x97, 0xec, 0x5b, 0x29, 0x49, 0xf6, 0xad, 0xe4, 0x25, 0xfb, 0x56, 0x0e, 0x49, 0xf6, 0xad, 0x14,
-	0x25, 0xfb, 0x56, 0xa6, 0x24, 0xfb, 0x56, 0x0a, 0x92, 0x7d, 0x2b, 0x4b, 0x92, 0x7d, 0x2b, 0xd3,
-	0x92, 0x7d, 0xcb, 0xf3, 0x92, 0x7d, 0x2b, 0x73, 0x92, 0x7d, 0xe7, 0xca, 0x92, 0x7d, 0xe7, 0x67,
-	0x25, 0xfb, 0xce, 0x2f, 0x4b, 0xf6, 0x9d, 0x5f, 0x90, 0xec, 0x3b, 0x9f, 0x95, 0xec, 0x3b, 0x5f,
-	0x90, 0xec, 0x3b, 0xbf, 0x22, 0xd9, 0x77, 0x7e, 0x4a, 0xb2, 0xef, 0xfc, 0x8c, 0x64, 0xdf, 0xf9,
-	0x8a, 0x64, 0xdf, 0xf9, 0x92, 0x64, 0xdf, 0xf9, 0x45, 0xc9, 0xbe, 0xf3, 0xae, 0x64, 0xdf, 0xfd,
-	0x59, 0xc9, 0xbe, 0xee, 0x94, 0x64, 0x5f, 0x77, 0x4e, 0xb2, 0xaf, 0xbb, 0x24, 0xd9, 0xd7, 0x5d,
-	0x56, 0x9e, 0x3b, 0x6c, 0xf4, 0xe7, 0x4a, 0xca, 0x71, 0x87, 0x8d, 0xfe, 0x85, 0x19, 0xe5, 0xb7,
-	0xc3, 0x46, 0xff, 0x6c, 0x45, 0xb9, 0xad, 0xda, 0x09, 0x79, 0xe5, 0xb5, 0xea, 0xbd, 0xa6, 0x95,
-	0xd3, 0xaa, 0x21, 0xca, 0xca, 0x67, 0x87, 0x8d, 0xfe, 0x03, 0x79, 0xe5, 0xb2, 0xc3, 0x46, 0xff,
-	0xf2, 0x82, 0xf2, 0x58, 0xf5, 0xf3, 0xb2, 0x72, 0x58, 0x05, 0x8b, 0xca, 0x5f, 0x15, 0x64, 0x95,
-	0xbb, 0x2a, 0xa8, 0x28, 0x6f, 0x55, 0x83, 0x2e, 0x28, 0x67, 0x55, 0x2d, 0x79, 0xe5, 0xab, 0x0a,
-	0x4a, 0xb8, 0x83, 0xa1, 0x80, 0x8f, 0x31, 0x1c, 0xc4, 0xc7, 0x19, 0x66, 0xf1, 0x09, 0x86, 0x22,
-	0x3e, 0xc9, 0x90, 0xc3, 0xa7, 0x18, 0xe6, 0xf0, 0x69, 0x82, 0x43, 0x59, 0x7c, 0x86, 0xa0, 0xb0,
-	0x80, 0xcf, 0xf2, 0xad, 0x05, 0x7c, 0x8e, 0x60, 0x6a, 0x01, 0x9f, 0xe7, 0xb7, 0x98, 0xc5, 0x17,
-	0xf8, 0xd6, 0x24, 0xbe, 0xc8, 0xe0, 0xe2, 0x4b, 0x0c, 0xfb, 0xf0, 0x65, 0x86, 0x43, 0xf8, 0x0a,
-	0xc3, 0x14, 0xbe, 0x4a, 0x90, 0x9f, 0xc1, 0xd7, 0xb8, 0x65, 0x05, 0x5f, 0x27, 0x58, 0x5c, 0xc6,
-	0x9d, 0x0c, 0xfb, 0xf0, 0x0d, 0x86, 0x43, 0xf8, 0x26, 0xc3, 0x0c, 0xbe, 0xc5, 0x50, 0xc2, 0xb7,
-	0x19, 0x0a, 0xf8, 0x0e, 0xc3, 0x2c, 0xbe, 0xcb, 0x30, 0x87, 0xbb, 0x18, 0x16, 0xf1, 0x3d, 0x86,
-	0x0a, 0xbe, 0xcf, 0xe0, 0xe2, 0x07, 0x0c, 0x65, 0xfc, 0x90, 0x21, 0x8f, 0x1f, 0x31, 0x1c, 0xc0,
-	0x8f, 0x09, 0x96, 0x0a, 0xb8, 0x9b, 0x21, 0x8b, 0x9f, 0x10, 0x64, 0xa7, 0xf0, 0x53, 0x7e, 0xf7,
-	0x1c, 0x7e, 0xc6, 0xb7, 0x16, 0xf0, 0x73, 0x86, 0x32, 0x7e, 0xc1, 0xb0, 0x82, 0x5f, 0x32, 0x1c,
-	0xc2, 0xaf, 0x78, 0xe1, 0x96, 0xf0, 0x6b, 0x86, 0x29, 0xfc, 0x86, 0xa1, 0x82, 0xdf, 0x32, 0x14,
-	0xf0, 0x3b, 0x86, 0x22, 0x7e, 0xcf, 0x8b, 0x3b, 0x8d, 0x3f, 0x70, 0x31, 0x67, 0xf0, 0x47, 0x3e,
-	0xa7, 0x53, 0xf8, 0x13, 0x57, 0xbe, 0x8c, 0x3f, 0x33, 0x2c, 0xe3, 0x2f, 0xfc, 0x7f, 0xda, 0xa6,
-	0x99, 0xc4, 0x5f, 0x35, 0x5a, 0xf8, 0x9b, 0x60, 0x32, 0x8d, 0xbf, 0x6b, 0xb4, 0xf0, 0x0f, 0x46,
-	0x27, 0xe9, 0xe0, 0x9f, 0x8c, 0x76, 0xca, 0xc6, 0xbf, 0x18, 0xd3, 0xa6, 0x8d, 0xf3, 0xfa, 0x09,
-	0xc7, 0xad, 0x09, 0x9c, 0x2f, 0xe8, 0x38, 0xb8, 0x40, 0x30, 0x65, 0xe1, 0x42, 0x46, 0xcb, 0xb4,
-	0x70, 0x51, 0xbf, 0x3c, 0xd7, 0xc6, 0xc5, 0x82, 0x4e, 0x06, 0x97, 0x30, 0x26, 0x4d, 0x07, 0x97,
-	0x0a, 0x8e, 0xdb, 0xb8, 0x4c, 0x7e, 0x96, 0xb1, 0x70, 0xb9, 0x60, 0xca, 0xc2, 0x15, 0x1a, 0x93,
-	0xb8, 0x52, 0x77, 0x30, 0x71, 0x15, 0xa3, 0x6d, 0xda, 0xb8, 0x5a, 0x30, 0x6d, 0xe2, 0x1a, 0x8d,
-	0x36, 0xae, 0x15, 0x74, 0x4c, 0x5c, 0xa7, 0x87, 0x48, 0xe3, 0xfa, 0x7e, 0x79, 0x0b, 0x07, 0xcf,
-	0x64, 0xcc, 0xa4, 0x1c, 0x3c, 0x4b, 0xd0, 0xce, 0xe0, 0xd9, 0x82, 0x13, 0x26, 0x9e, 0x23, 0x2f,
-	0x64, 0x66, 0xf0, 0x5c, 0xfd, 0xc6, 0x0e, 0x9e, 0xc7, 0xe8, 0x98, 0x26, 0x9e, 0x2f, 0x98, 0xb2,
-	0x71, 0x83, 0xe0, 0x84, 0x8d, 0x17, 0x48, 0xdf, 0x64, 0x06, 0x2f, 0xd4, 0x2f, 0x3f, 0x8e, 0x17,
-	0x09, 0x5a, 0x36, 0x6e, 0x94, 0xe9, 0x58, 0x26, 0x5e, 0x2c, 0x68, 0x9b, 0x78, 0x89, 0x46, 0x07,
-	0x2f, 0xd5, 0xf3, 0x75, 0xf0, 0x32, 0x41, 0xc7, 0xc4, 0x4d, 0xf2, 0xf2, 0x56, 0x06, 0x2f, 0xd7,
-	0x75, 0xc8, 0xe0, 0x15, 0x32, 0xdf, 0x71, 0x07, 0xaf, 0xd4, 0xa3, 0x39, 0x78, 0x95, 0xe0, 0xb8,
-	0x85, 0x57, 0xcb, 0x74, 0x6c, 0x07, 0xaf, 0x91, 0x92, 0x58, 0x19, 0xbc, 0x56, 0xea, 0x90, 0xcc,
-	0xe0, 0x66, 0x3d, 0x5f, 0x13, 0xb7, 0xe8, 0x27, 0x24, 0x71, 0xab, 0x5e, 0x42, 0x1b, 0xaf, 0x93,
-	0x77, 0x4b, 0xdb, 0x78, 0xbd, 0x4c, 0x27, 0x65, 0xe1, 0x36, 0xc6, 0x94, 0x63, 0xe3, 0x0d, 0xd2,
-	0x77, 0xdc, 0xc4, 0x1b, 0x05, 0x1d, 0x07, 0x6f, 0x92, 0x0e, 0x96, 0x8d, 0x37, 0xcb, 0x24, 0x2d,
-	0x1b, 0x6f, 0x91, 0x39, 0xa4, 0x4c, 0xbc, 0x55, 0x30, 0x93, 0xc1, 0xdb, 0x04, 0xc7, 0x1d, 0xbc,
-	0x5d, 0x66, 0x96, 0xb1, 0x70, 0xbb, 0xc6, 0x0c, 0xde, 0x21, 0x4f, 0x48, 0xdb, 0x78, 0xa7, 0xa0,
-	0x93, 0xc1, 0xbb, 0xf4, 0x62, 0xd9, 0x78, 0xb7, 0xbc, 0x45, 0xc6, 0xc1, 0x7b, 0xf4, 0x5b, 0x4c,
-	0xe0, 0xbd, 0xf2, 0xdc, 0xe4, 0x04, 0xde, 0xa7, 0x17, 0x60, 0x02, 0xef, 0x97, 0x9f, 0x65, 0x4c,
-	0x7c, 0x40, 0xb7, 0x3a, 0xf8, 0xa0, 0x8c, 0x96, 0x4a, 0xe1, 0x43, 0xd2, 0x6a, 0xdb, 0xf8, 0xb0,
-	0x60, 0xda, 0xc2, 0x47, 0x74, 0x87, 0x34, 0x3e, 0x2a, 0xad, 0x13, 0x16, 0xee, 0xd0, 0x25, 0xc9,
-	0xe0, 0x63, 0x82, 0x13, 0x16, 0x3e, 0xae, 0xfb, 0x26, 0xf1, 0x09, 0x29, 0x49, 0xd2, 0xc2, 0x27,
-	0x35, 0xda, 0xf8, 0x94, 0x54, 0xc7, 0x74, 0xf0, 0x69, 0xc1, 0xa4, 0x85, 0xcf, 0x08, 0xa6, 0x2c,
-	0x7c, 0x56, 0xd7, 0xd7, 0xc1, 0xe7, 0x74, 0x75, 0x6c, 0x7c, 0x5e, 0xef, 0x5f, 0x13, 0x5f, 0xd0,
-	0xfb, 0xd7, 0xc4, 0x17, 0x75, 0x75, 0x2c, 0x7c, 0x49, 0xe3, 0x04, 0xbe, 0xac, 0x5f, 0xd3, 0xc2,
-	0x57, 0x34, 0xa6, 0xf0, 0x55, 0xbd, 0x61, 0x4c, 0x7c, 0x4d, 0x4f, 0xd2, 0xc6, 0xd7, 0xf5, 0x39,
-	0x36, 0x71, 0xa7, 0xe0, 0x44, 0x06, 0xdf, 0xd0, 0x2b, 0x6f, 0xe2, 0x9b, 0xba, 0xa8, 0x29, 0x7c,
-	0x4b, 0x9f, 0x63, 0x1b, 0xdf, 0xd6, 0xdb, 0xd3, 0xc1, 0x77, 0xf4, 0xf6, 0xb4, 0xf0, 0x5d, 0xbd,
-	0xf2, 0x26, 0xee, 0x12, 0xb4, 0x4d, 0x7c, 0x4f, 0x1f, 0x48, 0x1b, 0xdf, 0x97, 0x81, 0xd3, 0x0e,
-	0x7e, 0x20, 0x38, 0x91, 0xc4, 0x0f, 0xe5, 0xb9, 0x66, 0x1a, 0x3f, 0x12, 0x4c, 0x59, 0xf8, 0xb1,
-	0x60, 0xc6, 0xc1, 0xdd, 0x7a, 0x57, 0xdb, 0xf8, 0x89, 0xc6, 0x0c, 0x7e, 0x2a, 0x73, 0x48, 0x5b,
-	0xf8, 0x99, 0x3e, 0x38, 0x26, 0x7e, 0xae, 0x4b, 0xed, 0xe0, 0x17, 0xfa, 0x03, 0xe2, 0xe0, 0x97,
-	0x82, 0x69, 0x1b, 0xbf, 0xd2, 0x93, 0x74, 0xf0, 0x6b, 0x29, 0x89, 0x69, 0xe2, 0x37, 0x1a, 0x6d,
-	0xfc, 0x56, 0xff, 0x6c, 0x02, 0xbf, 0xd3, 0x67, 0xc8, 0xc4, 0xef, 0x75, 0x49, 0x1c, 0xfc, 0x41,
-	0x30, 0x63, 0xe1, 0x8f, 0x7a, 0x1b, 0x25, 0xf1, 0x27, 0x3d, 0x5f, 0x13, 0x7f, 0xd6, 0x07, 0xdd,
-	0xc6, 0x5f, 0xf4, 0x72, 0xdb, 0xf8, 0xab, 0x5e, 0x8b, 0x0c, 0xfe, 0x26, 0x4f, 0xb0, 0x4d, 0xfc,
-	0x5d, 0xd7, 0xd7, 0xc4, 0x3f, 0xf4, 0x97, 0xc0, 0xc2, 0x3f, 0x35, 0xa6, 0xf0, 0x2f, 0x79, 0xc2,
-	0x84, 0x83, 0xf3, 0x06, 0x64, 0x57, 0x8f, 0xe3, 0xfc, 0x01, 0xd9, 0xf6, 0x16, 0x2e, 0x10, 0x9c,
-	0x48, 0xe3, 0xc2, 0x01, 0x99, 0x99, 0x89, 0x8b, 0x06, 0xa4, 0x92, 0x26, 0x2e, 0x1e, 0x90, 0x42,
-	0x65, 0x70, 0xc9, 0x80, 0x2c, 0x8b, 0x8d, 0x4b, 0xe5, 0x61, 0x76, 0x06, 0x97, 0x09, 0x9a, 0x0e,
-	0x2e, 0x97, 0x0e, 0x13, 0x16, 0xae, 0x90, 0xd6, 0x89, 0x0c, 0xae, 0xd4, 0x03, 0x9b, 0xb8, 0x4a,
-	0x3f, 0x37, 0x8d, 0xab, 0x05, 0x27, 0x32, 0xb8, 0x46, 0x86, 0x48, 0x66, 0x70, 0xad, 0x3c, 0x21,
-	0x63, 0xe2, 0x3a, 0xfd, 0x33, 0x07, 0xd7, 0x0b, 0xa6, 0x1d, 0x3c, 0x53, 0xfa, 0x9a, 0x36, 0x9e,
-	0x35, 0x20, 0x55, 0x77, 0xf0, 0x6c, 0x79, 0x0b, 0xd3, 0xc2, 0x73, 0xf4, 0xbb, 0xd9, 0x78, 0xae,
-	0x74, 0xb0, 0x32, 0x78, 0x9e, 0xee, 0x60, 0xe3, 0xf9, 0x7a, 0x0e, 0x36, 0x6e, 0x10, 0x34, 0x6d,
-	0xbc, 0x40, 0x30, 0x6d, 0xe2, 0x85, 0x82, 0x19, 0x1b, 0x2f, 0x92, 0xe9, 0xa4, 0x33, 0xb8, 0x51,
-	0xcf, 0xcc, 0xc6, 0x8b, 0x65, 0x3a, 0x19, 0x0b, 0x2f, 0x61, 0x4c, 0x5b, 0x36, 0x5e, 0x2a, 0xe8,
-	0x64, 0xf0, 0x32, 0x99, 0xa4, 0x6d, 0xe3, 0x26, 0x8d, 0x69, 0xbc, 0x5c, 0x0f, 0x91, 0xc4, 0x2b,
-	0xf4, 0x1c, 0x92, 0x78, 0xa5, 0xa0, 0xed, 0xe0, 0x55, 0xd2, 0x77, 0x22, 0x83, 0x57, 0x0f, 0xc8,
-	0xb7, 0xda, 0xc1, 0x6b, 0xf4, 0xc0, 0x0e, 0x5e, 0x2b, 0x38, 0x9e, 0xc1, 0xcd, 0xba, 0xea, 0x26,
-	0x6e, 0xd1, 0x85, 0xb2, 0x71, 0xab, 0xa0, 0x65, 0xe1, 0x75, 0x32, 0x9d, 0xa4, 0x85, 0xd7, 0x4b,
-	0x1d, 0x52, 0x36, 0x6e, 0x13, 0x74, 0x2c, 0xbc, 0x41, 0x86, 0x18, 0x4f, 0xe3, 0x8d, 0xba, 0x66,
-	0x26, 0xde, 0xa4, 0xf7, 0x83, 0x85, 0x37, 0x0b, 0x3a, 0x36, 0xde, 0x22, 0x5b, 0xc3, 0x19, 0xc7,
-	0x5b, 0xf5, 0x7e, 0x30, 0xf1, 0x36, 0x8d, 0x49, 0xbc, 0x5d, 0x2f, 0xa1, 0x85, 0xdb, 0xf5, 0x0a,
-	0x99, 0x78, 0x87, 0x0c, 0x61, 0xa6, 0xf0, 0x4e, 0xbd, 0x77, 0x1c, 0xbc, 0x4b, 0xe6, 0x90, 0xcc,
-	0xe0, 0xdd, 0x7a, 0x97, 0x38, 0x78, 0x8f, 0xb4, 0xda, 0x16, 0xde, 0xab, 0x31, 0x85, 0xf7, 0xe9,
-	0x75, 0x4b, 0xe1, 0xfd, 0x32, 0x07, 0xd3, 0xc6, 0x07, 0xf4, 0xc0, 0x36, 0x3e, 0x28, 0x43, 0xd8,
-	0x0e, 0x3e, 0x24, 0x1d, 0x52, 0x26, 0x3e, 0xac, 0x31, 0x89, 0x8f, 0x68, 0xb4, 0xf0, 0x51, 0xfd,
-	0xf2, 0x26, 0xee, 0xd0, 0x33, 0x73, 0xf0, 0x31, 0xc1, 0x54, 0x0a, 0x1f, 0xd7, 0x68, 0xe3, 0x13,
-	0xfa, 0xb9, 0x19, 0x7c, 0x52, 0x6f, 0x02, 0x0b, 0x9f, 0xd2, 0x0b, 0x60, 0xe1, 0xd3, 0xfa, 0xb9,
-	0x29, 0x7c, 0x46, 0x57, 0xdd, 0xc1, 0x67, 0xf5, 0xb9, 0x30, 0xf1, 0x39, 0x59, 0x80, 0x71, 0x07,
-	0x9f, 0x97, 0xb7, 0xb0, 0x6d, 0x7c, 0x41, 0x30, 0x6d, 0xe1, 0x8b, 0xf2, 0x04, 0x2b, 0x83, 0x2f,
-	0xe9, 0xfd, 0x30, 0x81, 0x2f, 0xeb, 0x3d, 0xe9, 0xe0, 0x2b, 0x82, 0x96, 0x89, 0xaf, 0x0a, 0xaa,
-	0xef, 0xaf, 0xde, 0x25, 0x49, 0x7c, 0x5d, 0x26, 0x39, 0x61, 0xe1, 0x4e, 0x99, 0x99, 0x69, 0xe2,
-	0x1b, 0x82, 0xa9, 0x0c, 0xbe, 0x29, 0xe8, 0x98, 0xf8, 0x96, 0xcc, 0x6c, 0xdc, 0xc4, 0xb7, 0x75,
-	0xd5, 0x27, 0xf0, 0x1d, 0x5d, 0xd4, 0x71, 0x7c, 0x57, 0x9f, 0x16, 0x13, 0x77, 0x09, 0x8e, 0xdb,
-	0xf8, 0x9e, 0xae, 0x99, 0x83, 0xef, 0xeb, 0xb5, 0x48, 0xe3, 0x07, 0x82, 0x96, 0x8d, 0x1f, 0xea,
-	0xb5, 0x48, 0xe3, 0x47, 0x7a, 0x2b, 0x9b, 0xf8, 0xb1, 0xde, 0xeb, 0x19, 0xdc, 0x2d, 0x93, 0x4c,
-	0x9b, 0xf8, 0x89, 0xde, 0x72, 0x19, 0xfc, 0x54, 0xe6, 0x90, 0x72, 0xf0, 0x33, 0x5d, 0x33, 0x0b,
-	0x3f, 0xd7, 0x33, 0xb3, 0xf0, 0x0b, 0x7d, 0xb2, 0x1c, 0xfc, 0x52, 0xd7, 0x2c, 0x83, 0x5f, 0xe9,
-	0xea, 0x4c, 0xe0, 0xd7, 0x7a, 0x88, 0x14, 0x7e, 0xa3, 0xcb, 0x97, 0xc1, 0x6f, 0x65, 0x3a, 0x19,
-	0x0b, 0xbf, 0xd3, 0x98, 0xc1, 0xef, 0x75, 0x49, 0x6c, 0xfc, 0x41, 0x9e, 0x9b, 0xb6, 0xf1, 0x47,
-	0xbd, 0x42, 0x36, 0xfe, 0xa4, 0x1f, 0x66, 0xe3, 0xcf, 0x7a, 0xe5, 0x2d, 0xfc, 0x45, 0x3a, 0xd8,
-	0x26, 0xfe, 0x2a, 0x38, 0xe1, 0xe0, 0x6f, 0xfa, 0xcb, 0x65, 0xe2, 0xef, 0xba, 0x83, 0x83, 0x7f,
-	0xe8, 0x27, 0x8c, 0xe3, 0x9f, 0x32, 0x5a, 0x32, 0x83, 0x7f, 0xe9, 0x15, 0xca, 0xe0, 0xbc, 0x41,
-	0xf9, 0x3e, 0xd8, 0x38, 0x5f, 0x63, 0x0a, 0x17, 0x08, 0x5a, 0x26, 0x2e, 0xd4, 0xad, 0x26, 0x2e,
-	0xd2, 0x98, 0xc6, 0xc5, 0x1a, 0x93, 0xb8, 0x64, 0x50, 0x3e, 0x4c, 0x49, 0x5c, 0x2a, 0x98, 0xcc,
-	0xe0, 0xb2, 0x41, 0x71, 0x53, 0x1b, 0x97, 0x0f, 0x4a, 0xa9, 0x1d, 0x5c, 0x21, 0x3f, 0x1b, 0x37,
-	0x71, 0xe5, 0xa0, 0x9c, 0x37, 0x0b, 0x57, 0x0d, 0xca, 0x39, 0xb6, 0x70, 0x35, 0xe3, 0xf8, 0xb8,
-	0x85, 0x6b, 0x34, 0x66, 0x70, 0xad, 0xe0, 0x84, 0x83, 0xeb, 0xa4, 0xef, 0x78, 0x06, 0xd7, 0x0f,
-	0xae, 0x0e, 0xd1, 0x3f, 0x90, 0x4d, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0xc1, 0x81,
-	0x1c, 0x2f, 0x2b, 0x00, 0x00,
+	// 3551 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x99, 0x57, 0x78, 0x23, 0xd7,
+	0x79, 0x86, 0x97, 0x9d, 0x18, 0xee, 0xae, 0x3e, 0x41, 0xb2, 0x4c, 0x35, 0x6b, 0x45, 0xc9, 0xd6,
+	0x5a, 0x92, 0xd7, 0xd6, 0xca, 0x72, 0x53, 0x5c, 0x80, 0x21, 0x08, 0x80, 0xc0, 0x80, 0xe0, 0x00,
+	0x20, 0x97, 0x74, 0xa2, 0xf5, 0x01, 0x66, 0x38, 0x33, 0xc4, 0x14, 0x68, 0x0a, 0xb8, 0xa0, 0x63,
+	0xa7, 0xf7, 0x5e, 0x9c, 0xc4, 0xe9, 0x71, 0xaa, 0x9d, 0xde, 0x9d, 0xde, 0xe3, 0xf4, 0x1e, 0xa7,
+	0x27, 0x76, 0x7a, 0xef, 0xf5, 0x2e, 0xcf, 0xff, 0xff, 0x87, 0xbb, 0xeb, 0x3c, 0xb9, 0xc9, 0x6d,
+	0xae, 0xbe, 0x77, 0xce, 0x39, 0xe0, 0x1c, 0x4c, 0xd9, 0xef, 0x79, 0xb1, 0xc6, 0xda, 0x28, 0x54,
+	0x41, 0x74, 0x65, 0x92, 0x26, 0x79, 0x52, 0x9e, 0x9f, 0x0c, 0x37, 0x9e, 0x33, 0x96, 0x4c, 0x1a,
+	0x2a, 0x3f, 0x6a, 0x2c, 0x67, 0x79, 0xea, 0xaa, 0x68, 0x7d, 0xee, 0xd2, 0xdc, 0xe5, 0xb5, 0xab,
+	0xc6, 0x95, 0xc9, 0xf0, 0x4a, 0x8f, 0x47, 0x1a, 0xe7, 0x6c, 0x3d, 0x57, 0x7e, 0xcc, 0x58, 0x19,
+	0xf9, 0x2a, 0x8e, 0xdd, 0x70, 0x7d, 0x9e, 0x97, 0xad, 0xd1, 0x32, 0x53, 0x86, 0x1a, 0xe7, 0xec,
+	0xb3, 0xd9, 0xea, 0xb2, 0xb1, 0x98, 0xcf, 0x26, 0xee, 0xc6, 0xfb, 0xe7, 0x8d, 0x15, 0x3d, 0x5d,
+	0x7e, 0xd0, 0x30, 0x26, 0xc5, 0x30, 0x0c, 0x46, 0xd7, 0xc7, 0xee, 0x8c, 0x4f, 0x73, 0xde, 0x2e,
+	0xc9, 0x48, 0xcb, 0x9d, 0x95, 0xef, 0x36, 0x96, 0xf2, 0x20, 0x0f, 0x5d, 0xfe, 0xcb, 0x25, 0x5b,
+	0x0e, 0xca, 0x97, 0x8c, 0x35, 0xc7, 0xcd, 0x46, 0x69, 0x30, 0xc9, 0x83, 0x24, 0x5e, 0x5f, 0xe0,
+	0xb9, 0xdb, 0x87, 0xca, 0x8f, 0x18, 0x17, 0x72, 0xbf, 0x88, 0x86, 0xb1, 0x0a, 0xc2, 0xeb, 0x45,
+	0x1a, 0xae, 0x2f, 0xf2, 0x9a, 0xf3, 0x37, 0x07, 0x07, 0x69, 0x58, 0x2e, 0x1b, 0x8b, 0xb9, 0xf2,
+	0xb2, 0xf5, 0xa5, 0x4b, 0x0b, 0x97, 0x4b, 0x36, 0x73, 0xf9, 0x71, 0xa3, 0x14, 0xaa, 0xd8, 0x2b,
+	0x94, 0xe7, 0x66, 0xeb, 0xcb, 0x97, 0x16, 0x2e, 0xaf, 0x5d, 0x3d, 0x4f, 0x5f, 0xa7, 0xad, 0x07,
+	0xed, 0x5b, 0xd3, 0xbc, 0x36, 0x19, 0x29, 0x3a, 0x61, 0xb6, 0xbe, 0x72, 0xdb, 0x5a, 0x3d, 0x68,
+	0xdf, 0x9a, 0xa6, 0x0d, 0x8d, 0x92, 0x38, 0x57, 0xa3, 0xfc, 0xba, 0x1b, 0xa9, 0x20, 0x5c, 0x5f,
+	0x95, 0x0d, 0xe9, 0xc1, 0x1a, 0x8d, 0x95, 0x1f, 0x36, 0xce, 0xfb, 0x49, 0xe4, 0x4e, 0x94, 0xe7,
+	0xf2, 0xa6, 0x4b, 0xf2, 0xc5, 0xce, 0xc6, 0x68, 0xcf, 0xf7, 0x1b, 0xa5, 0x51, 0x32, 0x75, 0x53,
+	0x9e, 0x37, 0x78, 0x7e, 0x95, 0x07, 0x06, 0x69, 0xb8, 0xf1, 0xee, 0x45, 0x63, 0x59, 0x6e, 0x4f,
+	0xf9, 0x85, 0xc6, 0x4a, 0xe6, 0x5c, 0xf7, 0x55, 0xe6, 0xeb, 0x8b, 0xba, 0x9c, 0x39, 0x0d, 0x95,
+	0xf9, 0xff, 0x7f, 0xae, 0xe8, 0x3d, 0xc6, 0xb2, 0x2a, 0x72, 0x3f, 0x49, 0xf5, 0xa5, 0xd4, 0x47,
+	0xe5, 0x75, 0x63, 0x25, 0x0c, 0x46, 0x6e, 0x9c, 0xb9, 0xfa, 0xfa, 0x9d, 0x1d, 0x96, 0x1f, 0x32,
+	0xd6, 0x34, 0xde, 0x76, 0xf5, 0x0c, 0x3d, 0x44, 0xdb, 0x7f, 0xd8, 0x38, 0x9f, 0xba, 0xa1, 0xab,
+	0x32, 0xf7, 0x7a, 0x1e, 0x44, 0xee, 0xfa, 0xda, 0xa5, 0xb9, 0xcb, 0x0b, 0xf6, 0x9a, 0x1e, 0xeb,
+	0x07, 0x91, 0x4b, 0xcf, 0x6b, 0xe4, 0x3a, 0x81, 0xba, 0x4e, 0x4f, 0xf2, 0xfa, 0x05, 0xfe, 0x13,
+	0x25, 0x1e, 0xe9, 0xcf, 0x26, 0x6e, 0xf9, 0x01, 0x63, 0xf1, 0x28, 0x08, 0xdd, 0xf5, 0x8b, 0xfc,
+	0x22, 0xac, 0xd2, 0xde, 0xb7, 0x82, 0xd0, 0xb5, 0x79, 0xb4, 0x7c, 0xaf, 0xb1, 0x70, 0xe4, 0xba,
+	0xeb, 0x77, 0xf0, 0xe4, 0x0a, 0x4f, 0xba, 0xae, 0x4d, 0x63, 0xe5, 0x87, 0x8d, 0xa5, 0x20, 0x52,
+	0x9e, 0xbb, 0x0e, 0x9e, 0x2c, 0xd1, 0x64, 0x93, 0x06, 0x1a, 0xe7, 0x6c, 0x99, 0xa1, 0x25, 0xd3,
+	0xc0, 0x71, 0x93, 0xf5, 0x3b, 0x6f, 0x2d, 0xd9, 0xa3, 0x01, 0x5a, 0xc2, 0x33, 0xb4, 0x44, 0x15,
+	0x4e, 0x90, 0xac, 0x97, 0x6f, 0x2d, 0xa9, 0xd0, 0x00, 0x2d, 0xe1, 0x99, 0x9b, 0x2f, 0xe1, 0xbb,
+	0xe6, 0x8c, 0x85, 0x2d, 0xd7, 0x2d, 0x3f, 0x69, 0xac, 0x8e, 0x8a, 0x34, 0x75, 0xe3, 0x91, 0xbc,
+	0x7e, 0x17, 0xaf, 0x42, 0x6f, 0xec, 0x8a, 0xa9, 0xc7, 0xed, 0x9b, 0x2b, 0xe8, 0xe2, 0x2a, 0xc7,
+	0x49, 0xdd, 0x2c, 0xe3, 0xe7, 0xe7, 0xbc, 0x7d, 0x76, 0xc8, 0xb7, 0x23, 0x4a, 0x8a, 0x38, 0xe7,
+	0x87, 0x67, 0xd1, 0xd6, 0x47, 0x1b, 0xcf, 0x1a, 0xab, 0x67, 0x7f, 0xa7, 0x7c, 0xb7, 0x81, 0x41,
+	0xa7, 0xd5, 0xd9, 0xd9, 0xef, 0x5c, 0x37, 0x07, 0xb6, 0x5d, 0xeb, 0x98, 0x07, 0x38, 0x57, 0x5e,
+	0x31, 0x16, 0xda, 0x55, 0x13, 0x73, 0x04, 0xd5, 0xbe, 0x89, 0x79, 0x82, 0x41, 0x6f, 0x13, 0x0b,
+	0x1b, 0x55, 0x63, 0x91, 0x2e, 0x1f, 0x3d, 0x57, 0xfc, 0x28, 0x2f, 0xf0, 0x39, 0x99, 0x69, 0x2c,
+	0x56, 0x91, 0xcb, 0x9b, 0x2e, 0xd9, 0xcc, 0x34, 0x96, 0x05, 0xa7, 0xf2, 0x6c, 0x2f, 0xda, 0xcc,
+	0x1b, 0xcf, 0x18, 0x4b, 0x7c, 0x21, 0xe9, 0xc9, 0x3f, 0x09, 0x9c, 0x5c, 0x5e, 0x88, 0x0b, 0xb6,
+	0x1c, 0xd0, 0xbe, 0x7d, 0x37, 0xf0, 0xfc, 0x9c, 0x3f, 0x74, 0xc1, 0xd6, 0x47, 0x1b, 0xbb, 0xc6,
+	0x12, 0x5f, 0xdc, 0xff, 0xdb, 0xc7, 0xca, 0xf7, 0x19, 0xab, 0x4e, 0x91, 0xaa, 0x9b, 0x6f, 0xd1,
+	0x05, 0xfb, 0xe6, 0xf1, 0xc6, 0x23, 0xc6, 0x12, 0xdf, 0x8c, 0x0f, 0x59, 0x34, 0xf7, 0x3f, 0x16,
+	0x7d, 0xf0, 0x41, 0x63, 0xf5, 0xec, 0xd5, 0x28, 0x3f, 0x65, 0xac, 0x9e, 0xbd, 0x1c, 0xfa, 0xe6,
+	0xbc, 0xe0, 0xf6, 0x57, 0xe7, 0xd6, 0x3b, 0x74, 0x73, 0x59, 0xf9, 0x09, 0x63, 0x59, 0x5e, 0x5a,
+	0xde, 0xd8, 0xc5, 0xab, 0x77, 0x7d, 0xc8, 0x07, 0x7a, 0x3c, 0x65, 0xeb, 0x25, 0xe5, 0x27, 0x8d,
+	0xe5, 0xd4, 0xf5, 0xce, 0xf6, 0x7a, 0xf1, 0xea, 0xdd, 0xb7, 0xbf, 0x6c, 0x57, 0x4c, 0xba, 0x81,
+	0xe9, 0xcc, 0xd6, 0x6b, 0x36, 0xde, 0x79, 0xfe, 0xb6, 0xad, 0xdd, 0x76, 0x2f, 0xdb, 0x95, 0x4e,
+	0x7d, 0x50, 0xa9, 0xd7, 0x70, 0xae, 0xbc, 0x6c, 0xcc, 0xbb, 0x31, 0xe6, 0x28, 0x95, 0xc2, 0x3c,
+	0xe7, 0x10, 0x0b, 0x9c, 0x2e, 0x16, 0x39, 0x8f, 0xb0, 0xc4, 0x39, 0xc6, 0x32, 0x67, 0x84, 0x15,
+	0xce, 0x18, 0xab, 0x9c, 0x29, 0x4a, 0x9c, 0x19, 0x0c, 0xce, 0x29, 0xd6, 0x38, 0x67, 0x38, 0xcf,
+	0x79, 0x8a, 0x0b, 0x94, 0x43, 0x85, 0x8b, 0x9c, 0x2e, 0xee, 0xe0, 0xf4, 0x00, 0x4e, 0x1f, 0x77,
+	0x72, 0x06, 0x28, 0x73, 0x46, 0xb8, 0x8b, 0x33, 0xc6, 0xdd, 0x9c, 0x09, 0x5e, 0xc0, 0x99, 0xe2,
+	0x1e, 0xce, 0x0c, 0x2f, 0xa4, 0x1c, 0x29, 0xac, 0x73, 0xba, 0xb8, 0x97, 0xd3, 0xc7, 0x7d, 0x9c,
+	0x09, 0xee, 0xe7, 0x4c, 0xf1, 0x00, 0x67, 0x86, 0x07, 0x39, 0x0b, 0xbc, 0x88, 0x73, 0x8a, 0x87,
+	0x38, 0x67, 0xb8, 0x44, 0xe9, 0x28, 0x3c, 0xcc, 0xe9, 0x62, 0x83, 0x73, 0x8a, 0x47, 0x38, 0x4f,
+	0xf1, 0x28, 0x5f, 0x1f, 0x17, 0x2f, 0xe6, 0x0c, 0xf1, 0x12, 0xce, 0x04, 0x8f, 0x71, 0x66, 0xb8,
+	0xcc, 0x99, 0xe3, 0xa5, 0x9c, 0x05, 0x1e, 0xa7, 0x3c, 0x52, 0x78, 0x82, 0xf3, 0x08, 0x4f, 0x72,
+	0x06, 0x78, 0x19, 0xe7, 0x31, 0xae, 0x70, 0x26, 0x78, 0x39, 0x67, 0x8a, 0x57, 0x70, 0xce, 0xf0,
+	0x14, 0xa5, 0xa7, 0x70, 0x95, 0xd3, 0xc1, 0xd3, 0x9c, 0x21, 0x5e, 0xc9, 0x19, 0xe3, 0x19, 0xce,
+	0x02, 0xaf, 0xe2, 0x9c, 0xe2, 0xd5, 0x94, 0xbe, 0xc2, 0x6b, 0x38, 0x5d, 0xbc, 0x96, 0x33, 0xc0,
+	0xeb, 0x38, 0x13, 0x3c, 0xcb, 0x99, 0xe2, 0xc3, 0x38, 0x73, 0xbc, 0x9e, 0xb3, 0xc0, 0x1b, 0x38,
+	0x67, 0x78, 0x23, 0xe7, 0x29, 0xde, 0x44, 0x19, 0x28, 0x54, 0x38, 0x1d, 0x54, 0x39, 0x5d, 0x98,
+	0x9c, 0x1e, 0x36, 0x39, 0x03, 0xd4, 0x38, 0xc7, 0xd8, 0xe2, 0x4c, 0x50, 0xe7, 0xcc, 0xd0, 0xe0,
+	0xcc, 0xd1, 0xe4, 0x2c, 0xb0, 0x4d, 0x79, 0xac, 0xd0, 0xe2, 0x9c, 0xa2, 0x4d, 0x39, 0x56, 0xb0,
+	0x38, 0x3d, 0x74, 0x38, 0x03, 0xec, 0x70, 0x1e, 0xa3, 0xcb, 0x39, 0xc6, 0x2e, 0x67, 0x08, 0x9b,
+	0x33, 0x42, 0x8f, 0x33, 0x46, 0x9f, 0x33, 0xc1, 0x80, 0x33, 0xc5, 0x1e, 0x67, 0x86, 0x7d, 0xce,
+	0x02, 0xd7, 0x38, 0xa7, 0x38, 0xe0, 0x3c, 0xc1, 0x21, 0xe7, 0x0c, 0x6f, 0xa6, 0x0c, 0x15, 0x3e,
+	0x9c, 0x73, 0x88, 0x8f, 0xe0, 0xf4, 0xf0, 0x1c, 0x67, 0x80, 0xeb, 0x9c, 0x31, 0xde, 0xc2, 0x99,
+	0x40, 0x71, 0xe6, 0x18, 0x72, 0x16, 0x18, 0x71, 0x4e, 0xe1, 0x50, 0x46, 0x1e, 0x5c, 0x4e, 0x1f,
+	0x47, 0x9c, 0x01, 0x3c, 0xce, 0x31, 0x7c, 0xce, 0x10, 0x01, 0x67, 0x8c, 0x63, 0xce, 0x14, 0x63,
+	0xce, 0x0c, 0x21, 0x67, 0x8e, 0x88, 0x73, 0x86, 0x98, 0x32, 0x56, 0x48, 0x38, 0x87, 0x98, 0x70,
+	0x3a, 0x78, 0x9e, 0xd3, 0x45, 0xca, 0xe9, 0x21, 0xe3, 0x0c, 0x91, 0x73, 0xc6, 0x28, 0x38, 0x13,
+	0x4c, 0x39, 0x53, 0x9c, 0x70, 0x4e, 0x71, 0x83, 0x73, 0x86, 0x19, 0x65, 0x32, 0xc2, 0x29, 0xe7,
+	0x31, 0xde, 0xca, 0x19, 0xe1, 0x23, 0x39, 0x53, 0xbc, 0x8d, 0x33, 0xc3, 0xdb, 0x29, 0x27, 0x0a,
+	0x1f, 0x55, 0x5e, 0x31, 0xe6, 0x27, 0x01, 0x3e, 0x7a, 0x8e, 0x21, 0xc4, 0xc7, 0x08, 0x64, 0xf8,
+	0x58, 0x81, 0x1c, 0x1f, 0xc7, 0xf0, 0x7c, 0x81, 0x8f, 0x67, 0x48, 0x23, 0x7c, 0x82, 0x40, 0x8c,
+	0x4f, 0x14, 0x48, 0xf0, 0x49, 0x02, 0x05, 0x3e, 0x59, 0xe0, 0x04, 0x9f, 0xc2, 0x90, 0x29, 0x7c,
+	0xaa, 0xc0, 0x08, 0x9f, 0x26, 0xe0, 0xe0, 0xd3, 0x05, 0x5c, 0x7c, 0x86, 0x80, 0x87, 0xcf, 0x14,
+	0x08, 0xf0, 0x59, 0x02, 0x63, 0x7c, 0xb6, 0x40, 0x88, 0xcf, 0x11, 0x88, 0xf0, 0xb9, 0x02, 0x31,
+	0x3e, 0x4f, 0x20, 0xc1, 0xe7, 0x0b, 0x3c, 0x8f, 0x77, 0x08, 0xa4, 0xf8, 0x02, 0x81, 0x0c, 0x5f,
+	0x28, 0x90, 0xe3, 0x8b, 0x04, 0x0a, 0xbc, 0x53, 0x60, 0x8a, 0x2f, 0x16, 0x38, 0xc1, 0x97, 0x30,
+	0xe4, 0x0a, 0x5f, 0x2a, 0xe0, 0xe2, 0xcb, 0x04, 0x3c, 0x7c, 0xb9, 0x80, 0x8f, 0xaf, 0x10, 0x08,
+	0xf0, 0x95, 0x02, 0x63, 0x7c, 0x95, 0x40, 0x88, 0x77, 0x09, 0xc4, 0xf8, 0x6a, 0x81, 0x04, 0x5f,
+	0x23, 0x90, 0xe2, 0x6b, 0x05, 0x32, 0x7c, 0x9d, 0x40, 0x8e, 0xaf, 0x17, 0x38, 0xc1, 0x37, 0x08,
+	0xcc, 0xf0, 0x6e, 0x86, 0xc2, 0xc3, 0x7b, 0x04, 0xc6, 0xf8, 0x46, 0x81, 0x14, 0xdf, 0x24, 0x70,
+	0x8a, 0x6f, 0x66, 0x98, 0xba, 0xf8, 0x16, 0x81, 0x00, 0xdf, 0x2a, 0x90, 0xe0, 0xdb, 0x18, 0x4e,
+	0x14, 0xbe, 0x5d, 0x20, 0xc1, 0x77, 0x30, 0xdc, 0xf0, 0xf1, 0x9d, 0x0c, 0xb3, 0x00, 0xdf, 0x25,
+	0x90, 0xe0, 0xbb, 0x19, 0x4e, 0x15, 0xbe, 0x47, 0xc0, 0xc7, 0xf7, 0x0a, 0x14, 0x78, 0xef, 0xdc,
+	0xc6, 0x7b, 0x60, 0x2c, 0x4b, 0xb9, 0x94, 0xcb, 0xc6, 0xc5, 0xb3, 0x66, 0xe8, 0x99, 0x76, 0xb3,
+	0xdb, 0xc7, 0xb9, 0xf2, 0xaa, 0xb1, 0x58, 0x71, 0xc2, 0x08, 0x73, 0x4c, 0x47, 0x6a, 0x8c, 0x79,
+	0x26, 0xcf, 0xa7, 0x76, 0x20, 0xf2, 0x93, 0x08, 0x8b, 0x4c, 0xa9, 0x1a, 0x62, 0x49, 0x53, 0x8c,
+	0x65, 0xa1, 0x28, 0xc0, 0x8a, 0x26, 0xea, 0x09, 0xa2, 0x69, 0x96, 0xa3, 0x44, 0x54, 0x55, 0x61,
+	0x00, 0x43, 0x28, 0x2a, 0xb0, 0x26, 0x94, 0x65, 0x38, 0x2f, 0x94, 0x8f, 0x71, 0x81, 0xc9, 0x8d,
+	0x3d, 0x5c, 0x64, 0xf2, 0xc7, 0x19, 0xee, 0x60, 0x0a, 0x83, 0x0c, 0x60, 0x4a, 0x26, 0x09, 0xee,
+	0x64, 0x4a, 0x95, 0x8f, 0xb2, 0xa6, 0x00, 0x77, 0x31, 0x15, 0x5e, 0x80, 0xbb, 0x85, 0x7c, 0x07,
+	0x2f, 0x20, 0x32, 0xd5, 0x38, 0xc2, 0x3d, 0x42, 0x31, 0xb5, 0x08, 0x53, 0x1a, 0x60, 0x9d, 0xc9,
+	0x57, 0x11, 0xee, 0x15, 0x72, 0x53, 0xdc, 0xc7, 0x14, 0xa4, 0x39, 0xee, 0x67, 0x4a, 0x26, 0x39,
+	0x1e, 0x60, 0x9a, 0x44, 0x31, 0x1e, 0x14, 0x4a, 0x73, 0xbc, 0x88, 0x69, 0x96, 0x86, 0x78, 0x48,
+	0x53, 0x86, 0x4b, 0x44, 0x9b, 0xee, 0x94, 0x9a, 0x85, 0x28, 0xf1, 0x52, 0x6c, 0x30, 0x65, 0x69,
+	0x8e, 0x47, 0x98, 0x8a, 0x49, 0x88, 0x47, 0x89, 0x6a, 0xde, 0xcc, 0xc1, 0x8b, 0x35, 0xf9, 0x78,
+	0x89, 0xa6, 0x09, 0x1e, 0x63, 0x0a, 0x87, 0x0a, 0x97, 0x85, 0x66, 0x11, 0x5e, 0xca, 0x94, 0xfb,
+	0x01, 0x1e, 0x27, 0xaa, 0xbb, 0xc9, 0x18, 0x4f, 0x68, 0x4a, 0xf1, 0x24, 0x53, 0xa8, 0x3c, 0xbc,
+	0x8c, 0x29, 0x89, 0x3d, 0x5c, 0xd1, 0x14, 0xe1, 0xe5, 0x42, 0xb9, 0x8f, 0x57, 0x30, 0xd1, 0xdd,
+	0x7a, 0x4a, 0xc8, 0x1d, 0xe3, 0x2a, 0x53, 0x71, 0x9c, 0xe2, 0x69, 0xa1, 0xb4, 0xc0, 0x2b, 0x89,
+	0x1a, 0x2a, 0x1e, 0xe2, 0x19, 0x4d, 0x1e, 0x5e, 0xa5, 0x29, 0xc0, 0xab, 0x35, 0x25, 0x78, 0x8d,
+	0xa6, 0x0c, 0xaf, 0xd5, 0x94, 0xe3, 0x75, 0x42, 0x79, 0x8a, 0x67, 0x99, 0xdc, 0x21, 0xf5, 0x11,
+	0x51, 0x90, 0x2a, 0xbc, 0x9e, 0x29, 0x2c, 0x4e, 0xf0, 0x06, 0xa6, 0x28, 0xf6, 0xf0, 0x46, 0x4d,
+	0x13, 0xbc, 0x89, 0x29, 0x1d, 0xe7, 0xa8, 0x30, 0x15, 0xb1, 0x87, 0x2a, 0x51, 0x33, 0x76, 0x32,
+	0x98, 0x4c, 0xb9, 0x0a, 0xb1, 0x49, 0xb4, 0xad, 0xa2, 0x04, 0x35, 0xa1, 0xa9, 0xc2, 0x16, 0xd3,
+	0x44, 0xc5, 0xa8, 0x33, 0x15, 0xe9, 0x08, 0x0d, 0xa2, 0x16, 0x3d, 0x75, 0x4d, 0xa1, 0x58, 0x61,
+	0x9b, 0xc9, 0x57, 0x29, 0x5a, 0x42, 0x51, 0x8a, 0xb6, 0x50, 0x72, 0x0c, 0x8b, 0x29, 0xc8, 0x43,
+	0x74, 0x34, 0x65, 0xd8, 0x61, 0x8a, 0x1d, 0x85, 0x2e, 0x53, 0x92, 0xba, 0xd8, 0x65, 0x9a, 0xb8,
+	0xd4, 0x5d, 0x44, 0x74, 0x67, 0x7a, 0x44, 0x6d, 0x3a, 0x47, 0x5f, 0x28, 0xa1, 0x06, 0x63, 0xca,
+	0x8f, 0xb0, 0xa7, 0xc9, 0xc3, 0xbe, 0xa6, 0x18, 0xd7, 0x98, 0xdc, 0xb1, 0x8b, 0x03, 0xa1, 0xc9,
+	0x08, 0x87, 0x4c, 0x41, 0x34, 0xc4, 0x9b, 0x85, 0x62, 0xea, 0x33, 0x21, 0x6a, 0x34, 0xa6, 0xac,
+	0xc0, 0x73, 0x4c, 0x49, 0xa4, 0x70, 0x9d, 0x69, 0x36, 0x0a, 0xf0, 0x16, 0x21, 0x27, 0x80, 0x22,
+	0xb2, 0x94, 0x7f, 0x8c, 0xa1, 0xd0, 0x58, 0x61, 0x24, 0x14, 0x3b, 0x70, 0x34, 0x05, 0x70, 0x85,
+	0xd2, 0x11, 0x8e, 0x84, 0x66, 0x0a, 0x1e, 0x93, 0xeb, 0x1c, 0xc1, 0x17, 0x8a, 0x1d, 0x04, 0x42,
+	0xe9, 0x08, 0xc7, 0x9a, 0x12, 0x8c, 0x99, 0xe8, 0xe9, 0x0c, 0x99, 0x12, 0x27, 0x40, 0x24, 0x14,
+	0x7b, 0x88, 0x85, 0x92, 0x18, 0x09, 0x53, 0x9a, 0x24, 0x98, 0x30, 0xe5, 0x6e, 0x80, 0xe7, 0x99,
+	0x8a, 0x30, 0x47, 0xca, 0x34, 0x8b, 0x52, 0x64, 0x44, 0x1d, 0xda, 0x5f, 0x2e, 0x94, 0x0e, 0x51,
+	0x30, 0x0d, 0x55, 0x8e, 0x29, 0x93, 0x7b, 0xa2, 0x70, 0xc2, 0x34, 0x76, 0x86, 0xb8, 0x21, 0xe4,
+	0x0d, 0x31, 0x13, 0x4a, 0x12, 0x9c, 0x32, 0x65, 0x7e, 0x81, 0xb7, 0x12, 0xed, 0x78, 0x8a, 0xfa,
+	0x90, 0x28, 0x1c, 0x8d, 0xf1, 0x36, 0xa6, 0x74, 0xec, 0xe3, 0xed, 0x42, 0x33, 0x6a, 0xc5, 0x92,
+	0xb1, 0xb8, 0x93, 0x79, 0x2e, 0xf5, 0x22, 0x63, 0xa4, 0xa8, 0x19, 0x4b, 0xc6, 0x62, 0x57, 0x85,
+	0x11, 0x75, 0x23, 0x63, 0x31, 0xa2, 0x76, 0x24, 0x74, 0xd3, 0x88, 0xfa, 0x91, 0xd0, 0x57, 0x1e,
+	0x35, 0x24, 0x63, 0x18, 0x50, 0x47, 0x0a, 0x4e, 0xa8, 0x25, 0x05, 0xa7, 0xd4, 0x93, 0x8c, 0xf1,
+	0x0d, 0x6a, 0x4a, 0xc2, 0x30, 0x75, 0xa8, 0x2b, 0x09, 0x83, 0xe7, 0x1d, 0x6a, 0x4b, 0xc2, 0x34,
+	0x0f, 0xa8, 0x2f, 0x4b, 0xc6, 0xe2, 0xae, 0x52, 0x8a, 0x1a, 0x93, 0x71, 0x78, 0x83, 0x3a, 0xb3,
+	0x64, 0x2c, 0xda, 0xc7, 0xb1, 0x47, 0xad, 0x49, 0x98, 0xf8, 0x1e, 0xf5, 0x26, 0x63, 0x9a, 0x50,
+	0x73, 0x12, 0x16, 0x71, 0x4a, 0xdd, 0x59, 0x32, 0x16, 0x7b, 0x2a, 0x4a, 0xa9, 0x3d, 0x19, 0x53,
+	0x45, 0xfd, 0x29, 0x38, 0xa4, 0x06, 0x65, 0x2c, 0xb8, 0x43, 0x09, 0xbd, 0xf8, 0x84, 0x5a, 0x94,
+	0xd0, 0x57, 0x27, 0xd4, 0xa3, 0x8c, 0xa9, 0x43, 0x4d, 0xca, 0x58, 0x04, 0xd4, 0xa5, 0x84, 0x81,
+	0xe3, 0x50, 0x9b, 0x32, 0xc6, 0x0e, 0xf5, 0xa9, 0xa0, 0x4f, 0x8d, 0x4a, 0x98, 0x78, 0x0e, 0x75,
+	0xaa, 0x60, 0x42, 0xad, 0xca, 0x98, 0x2a, 0xea, 0x55, 0xc6, 0x59, 0x42, 0xcd, 0x4a, 0x58, 0xc4,
+	0x0e, 0x75, 0x2b, 0xe1, 0x2c, 0x4c, 0xa8, 0x5d, 0x19, 0xd3, 0x11, 0xf5, 0xab, 0xa0, 0x4b, 0x0d,
+	0x2b, 0x78, 0x4c, 0x1d, 0x2b, 0x18, 0x53, 0xcb, 0x96, 0x8c, 0xc5, 0xbe, 0xf2, 0x86, 0xd4, 0xb3,
+	0x8c, 0xe3, 0x94, 0x9a, 0x96, 0x31, 0x74, 0xa9, 0x6b, 0x05, 0x0b, 0x6a, 0x5b, 0xc6, 0x28, 0xa4,
+	0xbe, 0x65, 0x8c, 0x3d, 0x6a, 0x5c, 0xc6, 0x69, 0x4e, 0x9d, 0x4b, 0xe8, 0x86, 0x05, 0xb5, 0x2e,
+	0x63, 0xec, 0x51, 0xef, 0x12, 0x1e, 0xc5, 0x1e, 0x35, 0x2f, 0xa1, 0x17, 0x7a, 0xd4, 0xbd, 0x84,
+	0xbe, 0x52, 0xd4, 0xbe, 0x82, 0xdc, 0xbf, 0x84, 0xc1, 0x30, 0xa7, 0x06, 0x66, 0x4c, 0x7d, 0xea,
+	0xe0, 0x92, 0xb1, 0x38, 0xf0, 0x54, 0x4a, 0x2d, 0x5c, 0x32, 0x16, 0xf7, 0x54, 0x10, 0xe0, 0xbd,
+	0x82, 0x41, 0x36, 0xc1, 0xf7, 0x31, 0xee, 0xd3, 0x1d, 0xfa, 0x7e, 0xc1, 0x91, 0x9f, 0xe0, 0x07,
+	0x04, 0x93, 0xd0, 0xc5, 0x0f, 0x32, 0x5e, 0x9b, 0xb8, 0x09, 0x7e, 0x48, 0x30, 0x2b, 0x6e, 0xe0,
+	0x87, 0x19, 0x0f, 0x82, 0x20, 0xc0, 0x8f, 0x30, 0x1e, 0xd2, 0xbf, 0xd6, 0x3f, 0x2a, 0x48, 0xf7,
+	0xe2, 0xc7, 0x04, 0xa3, 0xdc, 0xc7, 0x8f, 0x0b, 0x66, 0x33, 0x17, 0x3f, 0x71, 0x86, 0x11, 0x7e,
+	0x52, 0xf0, 0xc6, 0x8d, 0x1b, 0xf8, 0x29, 0xc1, 0xd9, 0x6c, 0x86, 0x9f, 0x16, 0x3c, 0x3d, 0x3d,
+	0xc5, 0xfb, 0xe6, 0x36, 0xde, 0x51, 0x36, 0x56, 0xcf, 0x2c, 0xb3, 0x7c, 0xc5, 0x58, 0x19, 0x89,
+	0x68, 0x6a, 0xc5, 0xfd, 0xdf, 0x25, 0xf4, 0x6c, 0x11, 0xf9, 0x78, 0x96, 0xab, 0xfc, 0xe6, 0x0f,
+	0x58, 0x7c, 0x40, 0xe6, 0x3f, 0x0a, 0xf2, 0x99, 0xfe, 0xe5, 0x8a, 0x99, 0xc7, 0x12, 0xc7, 0xd5,
+	0xbf, 0x54, 0x31, 0x93, 0x7a, 0x87, 0x2a, 0x0f, 0xf2, 0xc2, 0x71, 0xd7, 0x97, 0x2e, 0xcd, 0x5d,
+	0xbe, 0xd3, 0xbe, 0x79, 0x5c, 0x7e, 0xc0, 0x28, 0x85, 0x49, 0xec, 0xc9, 0xe4, 0x32, 0x4f, 0xde,
+	0x1a, 0xd8, 0xf8, 0x00, 0x8c, 0x15, 0xbd, 0x99, 0xf2, 0x5d, 0xc6, 0x1d, 0x37, 0x7f, 0xc8, 0xd8,
+	0x19, 0x74, 0xfa, 0xf6, 0x81, 0xb8, 0x6f, 0x65, 0x4b, 0xdc, 0xb7, 0x72, 0x4d, 0xdc, 0xb7, 0xd2,
+	0x16, 0xf7, 0xdd, 0x3c, 0x14, 0xf7, 0xad, 0xf4, 0xc4, 0x7d, 0x2b, 0x9b, 0xe2, 0xbe, 0x95, 0x1d,
+	0x71, 0xdf, 0x4a, 0x53, 0xdc, 0xb7, 0xb2, 0x2b, 0xee, 0x5b, 0xa9, 0x8b, 0xfb, 0x56, 0x6c, 0x71,
+	0xdf, 0x8a, 0x25, 0xee, 0x5b, 0xd9, 0x17, 0xf7, 0xad, 0x0c, 0xc4, 0x7d, 0x2b, 0x7d, 0x71, 0xdf,
+	0xca, 0xa1, 0xb8, 0x6f, 0xb5, 0x27, 0xee, 0x5b, 0x6d, 0x88, 0xfb, 0x56, 0x37, 0xc5, 0x7d, 0xab,
+	0x55, 0x71, 0xdf, 0xea, 0x81, 0xb8, 0x6f, 0xb5, 0x26, 0xee, 0x5b, 0x3d, 0x14, 0xf7, 0xad, 0x6e,
+	0x8b, 0xfb, 0x56, 0x2d, 0x71, 0xdf, 0x6a, 0x5f, 0xdc, 0xb7, 0xba, 0x23, 0xee, 0x5b, 0xdd, 0x15,
+	0xf7, 0xad, 0x56, 0xc4, 0x7d, 0xab, 0xfb, 0xe2, 0xbe, 0xd5, 0x3d, 0x71, 0xdf, 0xaa, 0x2d, 0xee,
+	0xdb, 0xdc, 0x11, 0xf7, 0xad, 0x76, 0xc4, 0x7d, 0xab, 0x75, 0x71, 0xdf, 0xea, 0x96, 0xb8, 0x6f,
+	0xb5, 0x29, 0xee, 0xdb, 0x6a, 0x88, 0xfb, 0x9a, 0x96, 0xb8, 0xaf, 0x59, 0x11, 0xf7, 0x35, 0xf7,
+	0xc4, 0x7d, 0x5b, 0x07, 0xe2, 0xbe, 0xe6, 0x96, 0xb8, 0x6f, 0x7f, 0x53, 0xdc, 0xd7, 0x6c, 0x8b,
+	0xfb, 0x9a, 0x1d, 0x71, 0x5f, 0xf3, 0x9a, 0xb8, 0xaf, 0x69, 0x8a, 0xfb, 0x9a, 0x3b, 0xe2, 0xbe,
+	0x2d, 0x4b, 0xdc, 0xd7, 0xac, 0x8b, 0xfb, 0x9a, 0x9b, 0xe2, 0xbe, 0x66, 0x4b, 0xdc, 0xd7, 0xb4,
+	0xc5, 0x7d, 0xcd, 0xa6, 0xb8, 0x6f, 0xc3, 0x16, 0xf7, 0x35, 0x07, 0xe2, 0xbe, 0xe6, 0xbe, 0xb8,
+	0xaf, 0x79, 0x20, 0xee, 0x6b, 0x1e, 0x8a, 0xfb, 0x6e, 0xb6, 0xc4, 0x7d, 0x37, 0xb7, 0xc5, 0x7d,
+	0x37, 0x2d, 0x71, 0xdf, 0xcd, 0x1d, 0x71, 0xdf, 0x9a, 0x29, 0xee, 0x5b, 0xab, 0x8b, 0xfb, 0xf6,
+	0xf6, 0xc4, 0x7d, 0xeb, 0xbb, 0xe2, 0xbe, 0x35, 0x5b, 0xdc, 0xb7, 0x56, 0x13, 0xf7, 0xad, 0xf5,
+	0xc5, 0x7d, 0xb7, 0x5a, 0xe2, 0xbe, 0x5b, 0x3b, 0xe2, 0xbe, 0x5b, 0xdb, 0xe2, 0xbe, 0x5b, 0x4d,
+	0x71, 0xdf, 0x2d, 0x5b, 0xdc, 0xb7, 0xbe, 0x25, 0xee, 0xdb, 0xdd, 0x12, 0xf7, 0xed, 0x6f, 0x89,
+	0xfb, 0xd6, 0x2b, 0xe2, 0xbe, 0x75, 0x4b, 0xdc, 0xb7, 0x5e, 0x13, 0xf7, 0xdd, 0xac, 0x89, 0xfb,
+	0xd6, 0x1b, 0xe2, 0xbe, 0xf5, 0xa6, 0xb8, 0x6f, 0xdd, 0x16, 0xf7, 0xad, 0xb7, 0xc5, 0x7d, 0xeb,
+	0x9b, 0xe2, 0xbe, 0xf5, 0xae, 0xb8, 0x6f, 0x7d, 0x20, 0xee, 0x5b, 0xef, 0x8b, 0xfb, 0xd6, 0xeb,
+	0xe2, 0xbe, 0xf5, 0x8e, 0xb8, 0x6f, 0x7d, 0x5f, 0xdc, 0xb7, 0x7e, 0x20, 0xee, 0xdb, 0xe8, 0x8b,
+	0xfb, 0x36, 0x2c, 0x71, 0xdf, 0xbd, 0x8a, 0xb8, 0x6f, 0xa3, 0x23, 0xee, 0xdb, 0x68, 0x89, 0xfb,
+	0x36, 0x06, 0xe2, 0xbe, 0xcd, 0x9e, 0xb8, 0x6f, 0xb3, 0x23, 0xee, 0xdb, 0xdc, 0x14, 0xf7, 0x6d,
+	0xda, 0xe2, 0xbe, 0xcd, 0x5d, 0x71, 0xdf, 0x66, 0x4d, 0xdc, 0xb7, 0x69, 0x89, 0xfb, 0x36, 0xdb,
+	0xe2, 0xbe, 0xcd, 0xbe, 0xb8, 0xef, 0xb6, 0x25, 0xee, 0xbb, 0xdd, 0x15, 0xf7, 0xdd, 0xae, 0x89,
+	0xfb, 0x6e, 0xef, 0x88, 0xfb, 0xb6, 0x0e, 0xc5, 0x7d, 0x5b, 0x35, 0x71, 0xdf, 0x56, 0x53, 0xdc,
+	0xb7, 0xd5, 0x15, 0xf7, 0x6d, 0xd9, 0xe2, 0xbe, 0xad, 0x7d, 0x71, 0xdf, 0x56, 0x5d, 0xdc, 0xb7,
+	0x5d, 0x11, 0xf7, 0x6d, 0xef, 0x89, 0xfb, 0xb6, 0xab, 0xe2, 0xbe, 0xed, 0x9e, 0xb8, 0x6f, 0xdb,
+	0x16, 0xf7, 0x6d, 0x1f, 0x88, 0xfb, 0xb6, 0x9b, 0xda, 0x7d, 0xdb, 0x7d, 0xed, 0xbe, 0xed, 0x81,
+	0x76, 0x5f, 0x6b, 0x47, 0xbb, 0xaf, 0xd5, 0xd2, 0xee, 0x6b, 0xd5, 0xb5, 0xfb, 0x5a, 0xfb, 0xda,
+	0x7d, 0xad, 0x03, 0xed, 0xbe, 0xd6, 0x9e, 0x76, 0x5f, 0xab, 0xad, 0xdd, 0xd7, 0xea, 0x6b, 0xf7,
+	0xb5, 0x1a, 0xda, 0x7d, 0xad, 0x5d, 0xed, 0xbe, 0x96, 0xad, 0xdd, 0xd7, 0x1a, 0x68, 0xf7, 0x3d,
+	0xe8, 0x6b, 0xf7, 0xb5, 0xae, 0x69, 0xf7, 0xdd, 0xb2, 0xb4, 0xfb, 0x5a, 0x9b, 0xda, 0x7d, 0x2d,
+	0x53, 0xbb, 0xaf, 0xd5, 0xd1, 0xee, 0x6b, 0xd5, 0xb4, 0xfb, 0x5a, 0x3d, 0xed, 0xbe, 0x56, 0x45,
+	0xbb, 0xaf, 0x75, 0xa8, 0xdd, 0xd7, 0xb2, 0xb4, 0xfb, 0x76, 0x2a, 0xda, 0x7d, 0x3b, 0xb6, 0x76,
+	0xdf, 0x4e, 0x57, 0xbb, 0x6f, 0xa7, 0xad, 0xdd, 0xb7, 0x63, 0x6a, 0xf7, 0xed, 0x1c, 0x6a, 0xf7,
+	0xed, 0x34, 0xb5, 0xfb, 0x76, 0x6a, 0xda, 0x7d, 0x3b, 0x75, 0xed, 0xbe, 0x9d, 0x81, 0x76, 0xdf,
+	0xce, 0x96, 0x76, 0x5f, 0xab, 0xab, 0xdd, 0xb7, 0xb3, 0xa3, 0xdd, 0x77, 0xc7, 0xd2, 0xee, 0xdb,
+	0x6d, 0x69, 0xf7, 0xed, 0xee, 0x6b, 0xf7, 0xed, 0xf6, 0xb4, 0xfb, 0x76, 0x2b, 0xda, 0x7d, 0xbb,
+	0x75, 0xed, 0xbe, 0xdd, 0x03, 0xed, 0xbe, 0xdd, 0x9a, 0x76, 0xdf, 0x6e, 0x43, 0xbb, 0x6f, 0xb7,
+	0xa3, 0xdd, 0xb7, 0xdb, 0xd6, 0xee, 0xdb, 0xed, 0x6b, 0xf7, 0xed, 0xda, 0xda, 0x7d, 0x77, 0x2b,
+	0xda, 0x7d, 0xed, 0x9a, 0x76, 0x5f, 0x7b, 0x47, 0xbb, 0xaf, 0x3d, 0xd0, 0xee, 0x6b, 0xef, 0x53,
+	0xe7, 0xae, 0x18, 0xf3, 0xd5, 0x36, 0x35, 0xee, 0x8a, 0x31, 0xdf, 0x6b, 0x50, 0xdf, 0xae, 0x18,
+	0xf3, 0xad, 0x0e, 0xb5, 0x2d, 0x3d, 0x09, 0x26, 0x75, 0x2d, 0x7d, 0xaf, 0x2d, 0x6a, 0x5a, 0x3a,
+	0x85, 0x45, 0x3d, 0xbb, 0x62, 0xcc, 0xef, 0x99, 0xd4, 0xb2, 0x2b, 0xc6, 0xfc, 0x7e, 0x8f, 0x3a,
+	0x96, 0x3e, 0x6e, 0x51, 0xc3, 0x12, 0xf4, 0xa9, 0x5f, 0x09, 0x2a, 0xd4, 0xae, 0x04, 0x1d, 0xea,
+	0x56, 0x3a, 0x69, 0x8f, 0x9a, 0x95, 0x46, 0x4c, 0xea, 0x55, 0x82, 0x36, 0xde, 0x27, 0x50, 0xc7,
+	0xcf, 0x08, 0x5c, 0xc3, 0xcf, 0x0a, 0xb4, 0xf0, 0x73, 0x02, 0x4d, 0xfc, 0xbc, 0x40, 0x15, 0xbf,
+	0x20, 0xb0, 0x83, 0x5f, 0x64, 0x38, 0xac, 0xe0, 0x97, 0x18, 0xea, 0x3d, 0xfc, 0xb2, 0x4c, 0xf5,
+	0xf0, 0x2b, 0x0c, 0xb5, 0x1e, 0x7e, 0x55, 0xbe, 0x45, 0x0b, 0xbf, 0x26, 0x53, 0x9b, 0xf8, 0x75,
+	0x01, 0x1b, 0xbf, 0x21, 0xb0, 0x8d, 0xdf, 0x14, 0x38, 0xc4, 0xfb, 0x05, 0x6a, 0xf8, 0x2d, 0x06,
+	0xb3, 0x81, 0xdf, 0x96, 0x91, 0x03, 0xfc, 0x0e, 0x43, 0x7f, 0x1f, 0xbf, 0x2b, 0xb0, 0x8d, 0xdf,
+	0x13, 0x38, 0xc4, 0xef, 0x0b, 0x34, 0xf0, 0x07, 0x02, 0x6d, 0xfc, 0xa1, 0x40, 0x1d, 0x7f, 0x24,
+	0xd0, 0xc2, 0x07, 0x04, 0x76, 0xf0, 0x41, 0x81, 0x3e, 0xfe, 0x58, 0xa0, 0x83, 0x3f, 0x11, 0xb0,
+	0xf1, 0xa7, 0x02, 0x16, 0xfe, 0x4c, 0xc0, 0xc4, 0x9f, 0x0b, 0xec, 0xe1, 0x2f, 0x18, 0x06, 0x75,
+	0xfc, 0xa5, 0x40, 0x05, 0x7f, 0xc5, 0x50, 0xa9, 0xe1, 0xaf, 0xe5, 0xbb, 0x57, 0xf1, 0x37, 0x32,
+	0xd5, 0xc3, 0xdf, 0x0a, 0x58, 0xf8, 0x3b, 0x81, 0x03, 0xfc, 0xbd, 0xc0, 0x21, 0xfe, 0x41, 0x6e,
+	0xdc, 0x00, 0xff, 0x28, 0x50, 0xc3, 0x3f, 0x09, 0x74, 0xf0, 0xcf, 0x02, 0x75, 0xfc, 0x8b, 0x40,
+	0x13, 0xff, 0x2a, 0x37, 0x77, 0x0b, 0xff, 0x26, 0x17, 0xb3, 0x81, 0x7f, 0x97, 0xf7, 0xb4, 0x86,
+	0xff, 0x90, 0x2b, 0x6f, 0xe1, 0x3f, 0x05, 0xf6, 0xf1, 0x5f, 0x73, 0xc3, 0x65, 0xfe, 0x3f, 0xd8,
+	0xa7, 0xff, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x96, 0xb0, 0xe9, 0x95, 0x92, 0x1d, 0x00, 0x00,
 }
diff --git a/v2/go/purchase.pb.go b/v2/go/purchase.pb.go
deleted file mode 100644
index 841f67b..0000000
--- a/v2/go/purchase.pb.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: purchase.proto
-
-package pb
-
-import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-type Purchase struct {
-	ClaimHash            []byte   `protobuf:"bytes,1,opt,name=claim_hash,json=claimHash,proto3" json:"claim_hash"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Purchase) Reset()         { *m = Purchase{} }
-func (m *Purchase) String() string { return proto.CompactTextString(m) }
-func (*Purchase) ProtoMessage()    {}
-func (*Purchase) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ea8c7f112c6b4e9e, []int{0}
-}
-
-func (m *Purchase) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Purchase.Unmarshal(m, b)
-}
-func (m *Purchase) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Purchase.Marshal(b, m, deterministic)
-}
-func (m *Purchase) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Purchase.Merge(m, src)
-}
-func (m *Purchase) XXX_Size() int {
-	return xxx_messageInfo_Purchase.Size(m)
-}
-func (m *Purchase) XXX_DiscardUnknown() {
-	xxx_messageInfo_Purchase.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Purchase proto.InternalMessageInfo
-
-func (m *Purchase) GetClaimHash() []byte {
-	if m != nil {
-		return m.ClaimHash
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*Purchase)(nil), "pb.Purchase")
-}
-
-func init() { proto.RegisterFile("purchase.proto", fileDescriptor_ea8c7f112c6b4e9e) }
-
-var fileDescriptor_ea8c7f112c6b4e9e = []byte{
-	// 84 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x28, 0x2d, 0x4a,
-	0xce, 0x48, 0x2c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x2a, 0x48, 0x52, 0xd2,
-	0xe4, 0xe2, 0x08, 0x80, 0x8a, 0x0a, 0xc9, 0x72, 0x71, 0x25, 0xe7, 0x24, 0x66, 0xe6, 0xc6, 0x67,
-	0x24, 0x16, 0x67, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0xf0, 0x04, 0x71, 0x82, 0x45, 0x3c, 0x12, 0x8b,
-	0x33, 0x92, 0xd8, 0xc0, 0xba, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xba, 0x94, 0x00,
-	0x47, 0x00, 0x00, 0x00,
-}
diff --git a/v2/go/result.pb.go b/v2/go/result.pb.go
deleted file mode 100644
index 02a78ec..0000000
--- a/v2/go/result.pb.go
+++ /dev/null
@@ -1,483 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: result.proto
-
-package pb
-
-import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-type Error_Code int32
-
-const (
-	Error_UNKNOWN_CODE Error_Code = 0
-	Error_NOT_FOUND    Error_Code = 1
-	Error_INVALID      Error_Code = 2
-)
-
-var Error_Code_name = map[int32]string{
-	0: "UNKNOWN_CODE",
-	1: "NOT_FOUND",
-	2: "INVALID",
-}
-
-var Error_Code_value = map[string]int32{
-	"UNKNOWN_CODE": 0,
-	"NOT_FOUND":    1,
-	"INVALID":      2,
-}
-
-func (x Error_Code) String() string {
-	return proto.EnumName(Error_Code_name, int32(x))
-}
-
-func (Error_Code) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_4feee897733d2100, []int{3, 0}
-}
-
-type Outputs struct {
-	Txos                 []*Output `protobuf:"bytes,1,rep,name=txos,proto3" json:"txos"`
-	ExtraTxos            []*Output `protobuf:"bytes,2,rep,name=extra_txos,json=extraTxos,proto3" json:"extra_txos"`
-	Total                uint32    `protobuf:"varint,3,opt,name=total,proto3" json:"total"`
-	Offset               uint32    `protobuf:"varint,4,opt,name=offset,proto3" json:"offset"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *Outputs) Reset()         { *m = Outputs{} }
-func (m *Outputs) String() string { return proto.CompactTextString(m) }
-func (*Outputs) ProtoMessage()    {}
-func (*Outputs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4feee897733d2100, []int{0}
-}
-
-func (m *Outputs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Outputs.Unmarshal(m, b)
-}
-func (m *Outputs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Outputs.Marshal(b, m, deterministic)
-}
-func (m *Outputs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Outputs.Merge(m, src)
-}
-func (m *Outputs) XXX_Size() int {
-	return xxx_messageInfo_Outputs.Size(m)
-}
-func (m *Outputs) XXX_DiscardUnknown() {
-	xxx_messageInfo_Outputs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Outputs proto.InternalMessageInfo
-
-func (m *Outputs) GetTxos() []*Output {
-	if m != nil {
-		return m.Txos
-	}
-	return nil
-}
-
-func (m *Outputs) GetExtraTxos() []*Output {
-	if m != nil {
-		return m.ExtraTxos
-	}
-	return nil
-}
-
-func (m *Outputs) GetTotal() uint32 {
-	if m != nil {
-		return m.Total
-	}
-	return 0
-}
-
-func (m *Outputs) GetOffset() uint32 {
-	if m != nil {
-		return m.Offset
-	}
-	return 0
-}
-
-type Output struct {
-	TxHash []byte `protobuf:"bytes,1,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash"`
-	Nout   uint32 `protobuf:"varint,2,opt,name=nout,proto3" json:"nout"`
-	Height uint32 `protobuf:"varint,3,opt,name=height,proto3" json:"height"`
-	// Types that are valid to be assigned to Meta:
-	//	*Output_Claim
-	//	*Output_Error
-	Meta                 isOutput_Meta `protobuf_oneof:"meta"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
-
-func (m *Output) Reset()         { *m = Output{} }
-func (m *Output) String() string { return proto.CompactTextString(m) }
-func (*Output) ProtoMessage()    {}
-func (*Output) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4feee897733d2100, []int{1}
-}
-
-func (m *Output) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Output.Unmarshal(m, b)
-}
-func (m *Output) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Output.Marshal(b, m, deterministic)
-}
-func (m *Output) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Output.Merge(m, src)
-}
-func (m *Output) XXX_Size() int {
-	return xxx_messageInfo_Output.Size(m)
-}
-func (m *Output) XXX_DiscardUnknown() {
-	xxx_messageInfo_Output.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Output proto.InternalMessageInfo
-
-func (m *Output) GetTxHash() []byte {
-	if m != nil {
-		return m.TxHash
-	}
-	return nil
-}
-
-func (m *Output) GetNout() uint32 {
-	if m != nil {
-		return m.Nout
-	}
-	return 0
-}
-
-func (m *Output) GetHeight() uint32 {
-	if m != nil {
-		return m.Height
-	}
-	return 0
-}
-
-type isOutput_Meta interface {
-	isOutput_Meta()
-}
-
-type Output_Claim struct {
-	Claim *ClaimMeta `protobuf:"bytes,7,opt,name=claim,proto3,oneof"`
-}
-
-type Output_Error struct {
-	Error *Error `protobuf:"bytes,15,opt,name=error,proto3,oneof"`
-}
-
-func (*Output_Claim) isOutput_Meta() {}
-
-func (*Output_Error) isOutput_Meta() {}
-
-func (m *Output) GetMeta() isOutput_Meta {
-	if m != nil {
-		return m.Meta
-	}
-	return nil
-}
-
-func (m *Output) GetClaim() *ClaimMeta {
-	if x, ok := m.GetMeta().(*Output_Claim); ok {
-		return x.Claim
-	}
-	return nil
-}
-
-func (m *Output) GetError() *Error {
-	if x, ok := m.GetMeta().(*Output_Error); ok {
-		return x.Error
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Output) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Output_Claim)(nil),
-		(*Output_Error)(nil),
-	}
-}
-
-type ClaimMeta struct {
-	Channel              *Output  `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel"`
-	Repost               *Output  `protobuf:"bytes,2,opt,name=repost,proto3" json:"repost"`
-	ShortUrl             string   `protobuf:"bytes,3,opt,name=short_url,json=shortUrl,proto3" json:"short_url"`
-	CanonicalUrl         string   `protobuf:"bytes,4,opt,name=canonical_url,json=canonicalUrl,proto3" json:"canonical_url"`
-	IsControlling        bool     `protobuf:"varint,5,opt,name=is_controlling,json=isControlling,proto3" json:"is_controlling"`
-	TakeOverHeight       uint32   `protobuf:"varint,6,opt,name=take_over_height,json=takeOverHeight,proto3" json:"take_over_height"`
-	CreationHeight       uint32   `protobuf:"varint,7,opt,name=creation_height,json=creationHeight,proto3" json:"creation_height"`
-	ActivationHeight     uint32   `protobuf:"varint,8,opt,name=activation_height,json=activationHeight,proto3" json:"activation_height"`
-	ExpirationHeight     uint32   `protobuf:"varint,9,opt,name=expiration_height,json=expirationHeight,proto3" json:"expiration_height"`
-	ClaimsInChannel      uint32   `protobuf:"varint,10,opt,name=claims_in_channel,json=claimsInChannel,proto3" json:"claims_in_channel"`
-	Reposted             uint32   `protobuf:"varint,11,opt,name=reposted,proto3" json:"reposted"`
-	EffectiveAmount      uint64   `protobuf:"varint,20,opt,name=effective_amount,json=effectiveAmount,proto3" json:"effective_amount"`
-	SupportAmount        uint64   `protobuf:"varint,21,opt,name=support_amount,json=supportAmount,proto3" json:"support_amount"`
-	TrendingGroup        uint32   `protobuf:"varint,22,opt,name=trending_group,json=trendingGroup,proto3" json:"trending_group"`
-	TrendingMixed        float32  `protobuf:"fixed32,23,opt,name=trending_mixed,json=trendingMixed,proto3" json:"trending_mixed"`
-	TrendingLocal        float32  `protobuf:"fixed32,24,opt,name=trending_local,json=trendingLocal,proto3" json:"trending_local"`
-	TrendingGlobal       float32  `protobuf:"fixed32,25,opt,name=trending_global,json=trendingGlobal,proto3" json:"trending_global"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ClaimMeta) Reset()         { *m = ClaimMeta{} }
-func (m *ClaimMeta) String() string { return proto.CompactTextString(m) }
-func (*ClaimMeta) ProtoMessage()    {}
-func (*ClaimMeta) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4feee897733d2100, []int{2}
-}
-
-func (m *ClaimMeta) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClaimMeta.Unmarshal(m, b)
-}
-func (m *ClaimMeta) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClaimMeta.Marshal(b, m, deterministic)
-}
-func (m *ClaimMeta) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClaimMeta.Merge(m, src)
-}
-func (m *ClaimMeta) XXX_Size() int {
-	return xxx_messageInfo_ClaimMeta.Size(m)
-}
-func (m *ClaimMeta) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClaimMeta.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClaimMeta proto.InternalMessageInfo
-
-func (m *ClaimMeta) GetChannel() *Output {
-	if m != nil {
-		return m.Channel
-	}
-	return nil
-}
-
-func (m *ClaimMeta) GetRepost() *Output {
-	if m != nil {
-		return m.Repost
-	}
-	return nil
-}
-
-func (m *ClaimMeta) GetShortUrl() string {
-	if m != nil {
-		return m.ShortUrl
-	}
-	return ""
-}
-
-func (m *ClaimMeta) GetCanonicalUrl() string {
-	if m != nil {
-		return m.CanonicalUrl
-	}
-	return ""
-}
-
-func (m *ClaimMeta) GetIsControlling() bool {
-	if m != nil {
-		return m.IsControlling
-	}
-	return false
-}
-
-func (m *ClaimMeta) GetTakeOverHeight() uint32 {
-	if m != nil {
-		return m.TakeOverHeight
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetCreationHeight() uint32 {
-	if m != nil {
-		return m.CreationHeight
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetActivationHeight() uint32 {
-	if m != nil {
-		return m.ActivationHeight
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetExpirationHeight() uint32 {
-	if m != nil {
-		return m.ExpirationHeight
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetClaimsInChannel() uint32 {
-	if m != nil {
-		return m.ClaimsInChannel
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetReposted() uint32 {
-	if m != nil {
-		return m.Reposted
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetEffectiveAmount() uint64 {
-	if m != nil {
-		return m.EffectiveAmount
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetSupportAmount() uint64 {
-	if m != nil {
-		return m.SupportAmount
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetTrendingGroup() uint32 {
-	if m != nil {
-		return m.TrendingGroup
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetTrendingMixed() float32 {
-	if m != nil {
-		return m.TrendingMixed
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetTrendingLocal() float32 {
-	if m != nil {
-		return m.TrendingLocal
-	}
-	return 0
-}
-
-func (m *ClaimMeta) GetTrendingGlobal() float32 {
-	if m != nil {
-		return m.TrendingGlobal
-	}
-	return 0
-}
-
-type Error struct {
-	Code                 Error_Code `protobuf:"varint,1,opt,name=code,proto3,enum=pb.Error_Code" json:"code"`
-	Text                 string     `protobuf:"bytes,2,opt,name=text,proto3" json:"text"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *Error) Reset()         { *m = Error{} }
-func (m *Error) String() string { return proto.CompactTextString(m) }
-func (*Error) ProtoMessage()    {}
-func (*Error) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4feee897733d2100, []int{3}
-}
-
-func (m *Error) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Error.Unmarshal(m, b)
-}
-func (m *Error) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Error.Marshal(b, m, deterministic)
-}
-func (m *Error) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Error.Merge(m, src)
-}
-func (m *Error) XXX_Size() int {
-	return xxx_messageInfo_Error.Size(m)
-}
-func (m *Error) XXX_DiscardUnknown() {
-	xxx_messageInfo_Error.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Error proto.InternalMessageInfo
-
-func (m *Error) GetCode() Error_Code {
-	if m != nil {
-		return m.Code
-	}
-	return Error_UNKNOWN_CODE
-}
-
-func (m *Error) GetText() string {
-	if m != nil {
-		return m.Text
-	}
-	return ""
-}
-
-func init() {
-	proto.RegisterEnum("pb.Error_Code", Error_Code_name, Error_Code_value)
-	proto.RegisterType((*Outputs)(nil), "pb.Outputs")
-	proto.RegisterType((*Output)(nil), "pb.Output")
-	proto.RegisterType((*ClaimMeta)(nil), "pb.ClaimMeta")
-	proto.RegisterType((*Error)(nil), "pb.Error")
-}
-
-func init() { proto.RegisterFile("result.proto", fileDescriptor_4feee897733d2100) }
-
-var fileDescriptor_4feee897733d2100 = []byte{
-	// 617 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x94, 0xdd, 0x6e, 0xd3, 0x30,
-	0x18, 0x86, 0x97, 0x2e, 0xfd, 0xc9, 0xd7, 0xdf, 0x59, 0x63, 0x33, 0x20, 0xa1, 0x10, 0x98, 0xc8,
-	0x40, 0xea, 0xc1, 0xe0, 0x06, 0x46, 0x37, 0xb6, 0x89, 0xad, 0x95, 0xa2, 0x0d, 0x0e, 0x23, 0x37,
-	0x75, 0x9b, 0x88, 0x34, 0x8e, 0x1c, 0x67, 0xca, 0x31, 0x37, 0xc2, 0x01, 0x37, 0x8a, 0xfc, 0x25,
-	0x6d, 0x14, 0x71, 0x16, 0x3f, 0xef, 0xe3, 0x1f, 0xbd, 0x76, 0x0b, 0x03, 0xc9, 0xb3, 0x3c, 0x56,
-	0xd3, 0x54, 0x0a, 0x25, 0x48, 0x2b, 0x5d, 0x3a, 0xbf, 0x0d, 0xe8, 0x2e, 0x72, 0x95, 0xe6, 0x2a,
-	0x23, 0x6f, 0xc0, 0x54, 0x85, 0xc8, 0xa8, 0x61, 0x1f, 0xba, 0xfd, 0x0b, 0x98, 0xa6, 0xcb, 0x69,
-	0x19, 0x79, 0xc8, 0xc9, 0x39, 0x00, 0x2f, 0x94, 0x64, 0x3e, 0x5a, 0xad, 0xff, 0x2c, 0x0b, 0xd3,
-	0x47, 0xad, 0x1e, 0x43, 0x5b, 0x09, 0xc5, 0x62, 0x7a, 0x68, 0x1b, 0xee, 0xd0, 0x2b, 0x07, 0xe4,
-	0x04, 0x3a, 0x62, 0xbd, 0xce, 0xb8, 0xa2, 0x26, 0xe2, 0x6a, 0xe4, 0xfc, 0x31, 0xa0, 0x53, 0xae,
-	0x41, 0x4e, 0xa1, 0xab, 0x0a, 0x3f, 0x64, 0x59, 0x48, 0x0d, 0xdb, 0x70, 0x07, 0x5e, 0x47, 0x15,
-	0xb7, 0x2c, 0x0b, 0x09, 0x01, 0x33, 0x11, 0xb9, 0xa2, 0x2d, 0x9c, 0x89, 0xdf, 0x7a, 0xbd, 0x90,
-	0x47, 0x9b, 0x50, 0x55, 0xdb, 0x54, 0x23, 0x72, 0x06, 0xed, 0x20, 0x66, 0xd1, 0x96, 0x76, 0x6d,
-	0xc3, 0xed, 0x5f, 0x0c, 0xf5, 0x19, 0x67, 0x1a, 0x3c, 0x70, 0xc5, 0x6e, 0x0f, 0xbc, 0x32, 0x25,
-	0x6f, 0xa1, 0xcd, 0xa5, 0x14, 0x92, 0x8e, 0x51, 0xb3, 0xb4, 0x76, 0xad, 0x81, 0x56, 0x30, 0xf9,
-	0xda, 0x01, 0x73, 0xcb, 0x15, 0x73, 0xfe, 0xb6, 0xc1, 0xda, 0xaf, 0x40, 0xde, 0x43, 0x37, 0x08,
-	0x59, 0x92, 0xf0, 0x18, 0x0f, 0xd9, 0x6c, 0x61, 0x17, 0x11, 0x07, 0x3a, 0x92, 0xa7, 0x22, 0x2b,
-	0xcf, 0xdc, 0x94, 0xaa, 0x84, 0xbc, 0x06, 0x2b, 0x0b, 0x85, 0x54, 0x7e, 0x2e, 0xcb, 0xae, 0x2c,
-	0xaf, 0x87, 0xe0, 0x49, 0xc6, 0xe4, 0x1d, 0x0c, 0x03, 0x96, 0x88, 0x24, 0x0a, 0x58, 0x8c, 0x82,
-	0x89, 0xc2, 0x60, 0x0f, 0xb5, 0x74, 0x06, 0xa3, 0x28, 0xf3, 0x03, 0x91, 0x28, 0x29, 0xe2, 0x38,
-	0x4a, 0x36, 0xb4, 0x6d, 0x1b, 0x6e, 0xcf, 0x1b, 0x46, 0xd9, 0xac, 0x86, 0xc4, 0x85, 0x89, 0x62,
-	0xbf, 0xb8, 0x2f, 0x9e, 0xb9, 0xf4, 0xab, 0xd2, 0x3a, 0x58, 0xda, 0x48, 0xf3, 0xc5, 0x33, 0x97,
-	0xb7, 0x65, 0x79, 0x1f, 0x60, 0x1c, 0x48, 0xce, 0x54, 0x24, 0x92, 0x9d, 0xd8, 0x2d, 0xc5, 0x1d,
-	0xae, 0xc4, 0x4f, 0x70, 0xc4, 0x02, 0x15, 0x3d, 0x37, 0xd4, 0x1e, 0xaa, 0x93, 0x3a, 0xa8, 0x65,
-	0x5e, 0xa4, 0x91, 0x6c, 0xc8, 0x56, 0x29, 0xd7, 0x41, 0x25, 0x7f, 0x84, 0x23, 0xbc, 0xa1, 0xcc,
-	0x8f, 0x12, 0x7f, 0xd7, 0x34, 0xa0, 0x3c, 0x2e, 0x83, 0xbb, 0x64, 0x56, 0xb5, 0xfc, 0x0a, 0x7a,
-	0x65, 0x97, 0x7c, 0x45, 0xfb, 0xa8, 0xec, 0xc7, 0xe4, 0x1c, 0x26, 0x7c, 0xbd, 0xe6, 0xfa, 0x2c,
-	0xdc, 0x67, 0x5b, 0x91, 0x27, 0x8a, 0x1e, 0xdb, 0x86, 0x6b, 0x7a, 0xe3, 0x3d, 0xbf, 0x44, 0xac,
-	0x6b, 0xcc, 0xf2, 0x34, 0xd5, 0x57, 0x51, 0x89, 0x2f, 0x50, 0x1c, 0x56, 0xb4, 0xd6, 0x94, 0xe4,
-	0xc9, 0x2a, 0x4a, 0x36, 0xfe, 0x46, 0x8a, 0x3c, 0xa5, 0x27, 0xb8, 0xe7, 0x70, 0x47, 0x6f, 0x34,
-	0x6c, 0x68, 0xdb, 0xa8, 0xe0, 0x2b, 0x7a, 0x6a, 0x1b, 0x6e, 0xab, 0xd6, 0x1e, 0x34, 0x6c, 0x68,
-	0xb1, 0x08, 0x58, 0x4c, 0x69, 0x53, 0xbb, 0xd7, 0x50, 0xdf, 0x48, 0xbd, 0x69, 0x2c, 0x96, 0x2c,
-	0xa6, 0x2f, 0xd1, 0xdb, 0xcf, 0xbe, 0x41, 0xea, 0xe4, 0xd0, 0xc6, 0xf7, 0x4b, 0x1c, 0x30, 0x03,
-	0xb1, 0xe2, 0xf8, 0x3a, 0x47, 0x17, 0xa3, 0xfd, 0xc3, 0x9e, 0xce, 0xc4, 0x8a, 0x7b, 0x98, 0xe9,
-	0x1f, 0x94, 0xe2, 0x45, 0xf9, 0x38, 0x2d, 0x0f, 0xbf, 0x9d, 0x2f, 0x60, 0x6a, 0x83, 0x4c, 0x60,
-	0xf0, 0x34, 0xff, 0x3e, 0x5f, 0xfc, 0x9c, 0xfb, 0xb3, 0xc5, 0xd5, 0xf5, 0xe4, 0x80, 0x0c, 0xc1,
-	0x9a, 0x2f, 0x1e, 0xfd, 0x6f, 0x8b, 0xa7, 0xf9, 0xd5, 0xc4, 0x20, 0x7d, 0xe8, 0xde, 0xcd, 0x7f,
-	0x5c, 0xde, 0xdf, 0x5d, 0x4d, 0x5a, 0xcb, 0x0e, 0xfe, 0x9d, 0x7c, 0xfe, 0x17, 0x00, 0x00, 0xff,
-	0xff, 0x89, 0x3e, 0xbd, 0x1e, 0x5e, 0x04, 0x00, 0x00,
-}
diff --git a/v2/js/claim_pb.js b/v2/js/claim_pb.js
index b1a0c25..ea52e2d 100644
--- a/v2/js/claim_pb.js
+++ b/v2/js/claim_pb.js
@@ -14,22 +14,18 @@ var global = Function('return this')();
 goog.exportSymbol('proto.pb.Audio', null, global);
 goog.exportSymbol('proto.pb.Channel', null, global);
 goog.exportSymbol('proto.pb.Claim', null, global);
-goog.exportSymbol('proto.pb.ClaimList', null, global);
-goog.exportSymbol('proto.pb.ClaimList.ListType', null, global);
-goog.exportSymbol('proto.pb.ClaimReference', null, global);
 goog.exportSymbol('proto.pb.Fee', null, global);
 goog.exportSymbol('proto.pb.Fee.Currency', null, global);
+goog.exportSymbol('proto.pb.File', null, global);
 goog.exportSymbol('proto.pb.Image', null, global);
 goog.exportSymbol('proto.pb.Language', null, global);
 goog.exportSymbol('proto.pb.Language.Language', null, global);
 goog.exportSymbol('proto.pb.Language.Script', null, global);
 goog.exportSymbol('proto.pb.Location', null, global);
 goog.exportSymbol('proto.pb.Location.Country', null, global);
-goog.exportSymbol('proto.pb.Software', null, global);
-goog.exportSymbol('proto.pb.Software.OS', null, global);
-goog.exportSymbol('proto.pb.Source', null, global);
 goog.exportSymbol('proto.pb.Stream', null, global);
 goog.exportSymbol('proto.pb.Video', null, global);
+
 /**
  * Generated by JsPbCodeGenerator.
  * @param {Array=} opt_data Optional initial data array, typically from a
@@ -41,276 +37,12 @@ goog.exportSymbol('proto.pb.Video', null, global);
  * @constructor
  */
 proto.pb.Claim = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, proto.pb.Claim.repeatedFields_, proto.pb.Claim.oneofGroups_);
+  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.pb.Claim.oneofGroups_);
 };
 goog.inherits(proto.pb.Claim, jspb.Message);
 if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
   proto.pb.Claim.displayName = 'proto.pb.Claim';
 }
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Stream = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.pb.Stream.oneofGroups_);
-};
-goog.inherits(proto.pb.Stream, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Stream.displayName = 'proto.pb.Stream';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Channel = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Channel, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Channel.displayName = 'proto.pb.Channel';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.ClaimReference = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.ClaimReference, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.ClaimReference.displayName = 'proto.pb.ClaimReference';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.ClaimList = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, proto.pb.ClaimList.repeatedFields_, null);
-};
-goog.inherits(proto.pb.ClaimList, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.ClaimList.displayName = 'proto.pb.ClaimList';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Source = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Source, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Source.displayName = 'proto.pb.Source';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Fee = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Fee, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Fee.displayName = 'proto.pb.Fee';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Image = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Image, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Image.displayName = 'proto.pb.Image';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Video = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Video, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Video.displayName = 'proto.pb.Video';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Audio = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Audio, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Audio.displayName = 'proto.pb.Audio';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Software = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Software, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Software.displayName = 'proto.pb.Software';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Language = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Language, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Language.displayName = 'proto.pb.Language';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Location = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Location, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Location.displayName = 'proto.pb.Location';
-}
-
-/**
- * List of repeated fields within this message type.
- * @private {!Array<number>}
- * @const
- */
-proto.pb.Claim.repeatedFields_ = [11,12,13];
-
 /**
  * Oneof group definitions for this message. Each group defines the field
  * numbers belonging to that group. When of these fields' value is set, all
@@ -319,7 +51,7 @@ proto.pb.Claim.repeatedFields_ = [11,12,13];
  * @private {!Array<!Array<number>>}
  * @const
  */
-proto.pb.Claim.oneofGroups_ = [[1,2,3,4]];
+proto.pb.Claim.oneofGroups_ = [[1,2]];
 
 /**
  * @enum {number}
@@ -327,9 +59,7 @@ proto.pb.Claim.oneofGroups_ = [[1,2,3,4]];
 proto.pb.Claim.TypeCase = {
   TYPE_NOT_SET: 0,
   STREAM: 1,
-  CHANNEL: 2,
-  COLLECTION: 3,
-  REPOST: 4
+  CHANNEL: 2
 };
 
 /**
@@ -367,19 +97,9 @@ proto.pb.Claim.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Claim.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     stream: (f = msg.getStream()) && proto.pb.Stream.toObject(includeInstance, f),
-    channel: (f = msg.getChannel()) && proto.pb.Channel.toObject(includeInstance, f),
-    collection: (f = msg.getCollection()) && proto.pb.ClaimList.toObject(includeInstance, f),
-    repost: (f = msg.getRepost()) && proto.pb.ClaimReference.toObject(includeInstance, f),
-    title: jspb.Message.getFieldWithDefault(msg, 8, ""),
-    description: jspb.Message.getFieldWithDefault(msg, 9, ""),
-    thumbnail: (f = msg.getThumbnail()) && proto.pb.Source.toObject(includeInstance, f),
-    tagsList: jspb.Message.getRepeatedField(msg, 11),
-    languagesList: jspb.Message.toObjectList(msg.getLanguagesList(),
-    proto.pb.Language.toObject, includeInstance),
-    locationsList: jspb.Message.toObjectList(msg.getLocationsList(),
-    proto.pb.Location.toObject, includeInstance)
+    channel: (f = msg.getChannel()) && proto.pb.Channel.toObject(includeInstance, f)
   };
 
   if (includeInstance) {
@@ -426,43 +146,6 @@ proto.pb.Claim.deserializeBinaryFromReader = function(msg, reader) {
       reader.readMessage(value,proto.pb.Channel.deserializeBinaryFromReader);
       msg.setChannel(value);
       break;
-    case 3:
-      var value = new proto.pb.ClaimList;
-      reader.readMessage(value,proto.pb.ClaimList.deserializeBinaryFromReader);
-      msg.setCollection(value);
-      break;
-    case 4:
-      var value = new proto.pb.ClaimReference;
-      reader.readMessage(value,proto.pb.ClaimReference.deserializeBinaryFromReader);
-      msg.setRepost(value);
-      break;
-    case 8:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setTitle(value);
-      break;
-    case 9:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setDescription(value);
-      break;
-    case 10:
-      var value = new proto.pb.Source;
-      reader.readMessage(value,proto.pb.Source.deserializeBinaryFromReader);
-      msg.setThumbnail(value);
-      break;
-    case 11:
-      var value = /** @type {string} */ (reader.readString());
-      msg.addTags(value);
-      break;
-    case 12:
-      var value = new proto.pb.Language;
-      reader.readMessage(value,proto.pb.Language.deserializeBinaryFromReader);
-      msg.addLanguages(value);
-      break;
-    case 13:
-      var value = new proto.pb.Location;
-      reader.readMessage(value,proto.pb.Location.deserializeBinaryFromReader);
-      msg.addLocations(value);
-      break;
     default:
       reader.skipField();
       break;
@@ -508,67 +191,6 @@ proto.pb.Claim.serializeBinaryToWriter = function(message, writer) {
       proto.pb.Channel.serializeBinaryToWriter
     );
   }
-  f = message.getCollection();
-  if (f != null) {
-    writer.writeMessage(
-      3,
-      f,
-      proto.pb.ClaimList.serializeBinaryToWriter
-    );
-  }
-  f = message.getRepost();
-  if (f != null) {
-    writer.writeMessage(
-      4,
-      f,
-      proto.pb.ClaimReference.serializeBinaryToWriter
-    );
-  }
-  f = message.getTitle();
-  if (f.length > 0) {
-    writer.writeString(
-      8,
-      f
-    );
-  }
-  f = message.getDescription();
-  if (f.length > 0) {
-    writer.writeString(
-      9,
-      f
-    );
-  }
-  f = message.getThumbnail();
-  if (f != null) {
-    writer.writeMessage(
-      10,
-      f,
-      proto.pb.Source.serializeBinaryToWriter
-    );
-  }
-  f = message.getTagsList();
-  if (f.length > 0) {
-    writer.writeRepeatedString(
-      11,
-      f
-    );
-  }
-  f = message.getLanguagesList();
-  if (f.length > 0) {
-    writer.writeRepeatedMessage(
-      12,
-      f,
-      proto.pb.Language.serializeBinaryToWriter
-    );
-  }
-  f = message.getLocationsList();
-  if (f.length > 0) {
-    writer.writeRepeatedMessage(
-      13,
-      f,
-      proto.pb.Location.serializeBinaryToWriter
-    );
-  }
 };
 
 
@@ -588,9 +210,6 @@ proto.pb.Claim.prototype.setStream = function(value) {
 };
 
 
-/**
- * Clears the message field making it undefined.
- */
 proto.pb.Claim.prototype.clearStream = function() {
   this.setStream(undefined);
 };
@@ -598,7 +217,7 @@ proto.pb.Claim.prototype.clearStream = function() {
 
 /**
  * Returns whether this field is set.
- * @return {boolean}
+ * @return {!boolean}
  */
 proto.pb.Claim.prototype.hasStream = function() {
   return jspb.Message.getField(this, 1) != null;
@@ -621,9 +240,6 @@ proto.pb.Claim.prototype.setChannel = function(value) {
 };
 
 
-/**
- * Clears the message field making it undefined.
- */
 proto.pb.Claim.prototype.clearChannel = function() {
   this.setChannel(undefined);
 };
@@ -631,758 +247,37 @@ proto.pb.Claim.prototype.clearChannel = function() {
 
 /**
  * Returns whether this field is set.
- * @return {boolean}
+ * @return {!boolean}
  */
 proto.pb.Claim.prototype.hasChannel = function() {
   return jspb.Message.getField(this, 2) != null;
 };
 
 
+
 /**
- * optional ClaimList collection = 3;
- * @return {?proto.pb.ClaimList}
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
  */
-proto.pb.Claim.prototype.getCollection = function() {
-  return /** @type{?proto.pb.ClaimList} */ (
-    jspb.Message.getWrapperField(this, proto.pb.ClaimList, 3));
+proto.pb.Channel = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.pb.Channel.repeatedFields_, null);
 };
-
-
-/** @param {?proto.pb.ClaimList|undefined} value */
-proto.pb.Claim.prototype.setCollection = function(value) {
-  jspb.Message.setOneofWrapperField(this, 3, proto.pb.Claim.oneofGroups_[0], value);
-};
-
-
+goog.inherits(proto.pb.Channel, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Channel.displayName = 'proto.pb.Channel';
+}
 /**
- * Clears the message field making it undefined.
- */
-proto.pb.Claim.prototype.clearCollection = function() {
-  this.setCollection(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Claim.prototype.hasCollection = function() {
-  return jspb.Message.getField(this, 3) != null;
-};
-
-
-/**
- * optional ClaimReference repost = 4;
- * @return {?proto.pb.ClaimReference}
- */
-proto.pb.Claim.prototype.getRepost = function() {
-  return /** @type{?proto.pb.ClaimReference} */ (
-    jspb.Message.getWrapperField(this, proto.pb.ClaimReference, 4));
-};
-
-
-/** @param {?proto.pb.ClaimReference|undefined} value */
-proto.pb.Claim.prototype.setRepost = function(value) {
-  jspb.Message.setOneofWrapperField(this, 4, proto.pb.Claim.oneofGroups_[0], value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Claim.prototype.clearRepost = function() {
-  this.setRepost(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Claim.prototype.hasRepost = function() {
-  return jspb.Message.getField(this, 4) != null;
-};
-
-
-/**
- * optional string title = 8;
- * @return {string}
- */
-proto.pb.Claim.prototype.getTitle = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.Claim.prototype.setTitle = function(value) {
-  jspb.Message.setProto3StringField(this, 8, value);
-};
-
-
-/**
- * optional string description = 9;
- * @return {string}
- */
-proto.pb.Claim.prototype.getDescription = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.Claim.prototype.setDescription = function(value) {
-  jspb.Message.setProto3StringField(this, 9, value);
-};
-
-
-/**
- * optional Source thumbnail = 10;
- * @return {?proto.pb.Source}
- */
-proto.pb.Claim.prototype.getThumbnail = function() {
-  return /** @type{?proto.pb.Source} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Source, 10));
-};
-
-
-/** @param {?proto.pb.Source|undefined} value */
-proto.pb.Claim.prototype.setThumbnail = function(value) {
-  jspb.Message.setWrapperField(this, 10, value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Claim.prototype.clearThumbnail = function() {
-  this.setThumbnail(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Claim.prototype.hasThumbnail = function() {
-  return jspb.Message.getField(this, 10) != null;
-};
-
-
-/**
- * repeated string tags = 11;
- * @return {!Array<string>}
- */
-proto.pb.Claim.prototype.getTagsList = function() {
-  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 11));
-};
-
-
-/** @param {!Array<string>} value */
-proto.pb.Claim.prototype.setTagsList = function(value) {
-  jspb.Message.setField(this, 11, value || []);
-};
-
-
-/**
- * @param {string} value
- * @param {number=} opt_index
- */
-proto.pb.Claim.prototype.addTags = function(value, opt_index) {
-  jspb.Message.addToRepeatedField(this, 11, value, opt_index);
-};
-
-
-/**
- * Clears the list making it empty but non-null.
- */
-proto.pb.Claim.prototype.clearTagsList = function() {
-  this.setTagsList([]);
-};
-
-
-/**
- * repeated Language languages = 12;
- * @return {!Array<!proto.pb.Language>}
- */
-proto.pb.Claim.prototype.getLanguagesList = function() {
-  return /** @type{!Array<!proto.pb.Language>} */ (
-    jspb.Message.getRepeatedWrapperField(this, proto.pb.Language, 12));
-};
-
-
-/** @param {!Array<!proto.pb.Language>} value */
-proto.pb.Claim.prototype.setLanguagesList = function(value) {
-  jspb.Message.setRepeatedWrapperField(this, 12, value);
-};
-
-
-/**
- * @param {!proto.pb.Language=} opt_value
- * @param {number=} opt_index
- * @return {!proto.pb.Language}
- */
-proto.pb.Claim.prototype.addLanguages = function(opt_value, opt_index) {
-  return jspb.Message.addToRepeatedWrapperField(this, 12, opt_value, proto.pb.Language, opt_index);
-};
-
-
-/**
- * Clears the list making it empty but non-null.
- */
-proto.pb.Claim.prototype.clearLanguagesList = function() {
-  this.setLanguagesList([]);
-};
-
-
-/**
- * repeated Location locations = 13;
- * @return {!Array<!proto.pb.Location>}
- */
-proto.pb.Claim.prototype.getLocationsList = function() {
-  return /** @type{!Array<!proto.pb.Location>} */ (
-    jspb.Message.getRepeatedWrapperField(this, proto.pb.Location, 13));
-};
-
-
-/** @param {!Array<!proto.pb.Location>} value */
-proto.pb.Claim.prototype.setLocationsList = function(value) {
-  jspb.Message.setRepeatedWrapperField(this, 13, value);
-};
-
-
-/**
- * @param {!proto.pb.Location=} opt_value
- * @param {number=} opt_index
- * @return {!proto.pb.Location}
- */
-proto.pb.Claim.prototype.addLocations = function(opt_value, opt_index) {
-  return jspb.Message.addToRepeatedWrapperField(this, 13, opt_value, proto.pb.Location, opt_index);
-};
-
-
-/**
- * Clears the list making it empty but non-null.
- */
-proto.pb.Claim.prototype.clearLocationsList = function() {
-  this.setLocationsList([]);
-};
-
-
-
-/**
- * Oneof group definitions for this message. Each group defines the field
- * numbers belonging to that group. When of these fields' value is set, all
- * other fields in the group are cleared. During deserialization, if multiple
- * fields are encountered for a group, only the last value seen will be kept.
- * @private {!Array<!Array<number>>}
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
  * @const
  */
-proto.pb.Stream.oneofGroups_ = [[10,11,12,13]];
-
-/**
- * @enum {number}
- */
-proto.pb.Stream.TypeCase = {
-  TYPE_NOT_SET: 0,
-  IMAGE: 10,
-  VIDEO: 11,
-  AUDIO: 12,
-  SOFTWARE: 13
-};
-
-/**
- * @return {proto.pb.Stream.TypeCase}
- */
-proto.pb.Stream.prototype.getTypeCase = function() {
-  return /** @type {proto.pb.Stream.TypeCase} */(jspb.Message.computeOneofCase(this, proto.pb.Stream.oneofGroups_[0]));
-};
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.Stream.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.Stream.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.Stream} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Stream.toObject = function(includeInstance, msg) {
-  var obj = {
-    source: (f = msg.getSource()) && proto.pb.Source.toObject(includeInstance, f),
-    author: jspb.Message.getFieldWithDefault(msg, 2, ""),
-    license: jspb.Message.getFieldWithDefault(msg, 3, ""),
-    licenseUrl: jspb.Message.getFieldWithDefault(msg, 4, ""),
-    releaseTime: jspb.Message.getFieldWithDefault(msg, 5, 0),
-    fee: (f = msg.getFee()) && proto.pb.Fee.toObject(includeInstance, f),
-    image: (f = msg.getImage()) && proto.pb.Image.toObject(includeInstance, f),
-    video: (f = msg.getVideo()) && proto.pb.Video.toObject(includeInstance, f),
-    audio: (f = msg.getAudio()) && proto.pb.Audio.toObject(includeInstance, f),
-    software: (f = msg.getSoftware()) && proto.pb.Software.toObject(includeInstance, f)
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.Stream}
- */
-proto.pb.Stream.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.Stream;
-  return proto.pb.Stream.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.Stream} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.Stream}
- */
-proto.pb.Stream.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = new proto.pb.Source;
-      reader.readMessage(value,proto.pb.Source.deserializeBinaryFromReader);
-      msg.setSource(value);
-      break;
-    case 2:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setAuthor(value);
-      break;
-    case 3:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setLicense(value);
-      break;
-    case 4:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setLicenseUrl(value);
-      break;
-    case 5:
-      var value = /** @type {number} */ (reader.readInt64());
-      msg.setReleaseTime(value);
-      break;
-    case 6:
-      var value = new proto.pb.Fee;
-      reader.readMessage(value,proto.pb.Fee.deserializeBinaryFromReader);
-      msg.setFee(value);
-      break;
-    case 10:
-      var value = new proto.pb.Image;
-      reader.readMessage(value,proto.pb.Image.deserializeBinaryFromReader);
-      msg.setImage(value);
-      break;
-    case 11:
-      var value = new proto.pb.Video;
-      reader.readMessage(value,proto.pb.Video.deserializeBinaryFromReader);
-      msg.setVideo(value);
-      break;
-    case 12:
-      var value = new proto.pb.Audio;
-      reader.readMessage(value,proto.pb.Audio.deserializeBinaryFromReader);
-      msg.setAudio(value);
-      break;
-    case 13:
-      var value = new proto.pb.Software;
-      reader.readMessage(value,proto.pb.Software.deserializeBinaryFromReader);
-      msg.setSoftware(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.Stream.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.Stream.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.Stream} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Stream.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getSource();
-  if (f != null) {
-    writer.writeMessage(
-      1,
-      f,
-      proto.pb.Source.serializeBinaryToWriter
-    );
-  }
-  f = message.getAuthor();
-  if (f.length > 0) {
-    writer.writeString(
-      2,
-      f
-    );
-  }
-  f = message.getLicense();
-  if (f.length > 0) {
-    writer.writeString(
-      3,
-      f
-    );
-  }
-  f = message.getLicenseUrl();
-  if (f.length > 0) {
-    writer.writeString(
-      4,
-      f
-    );
-  }
-  f = message.getReleaseTime();
-  if (f !== 0) {
-    writer.writeInt64(
-      5,
-      f
-    );
-  }
-  f = message.getFee();
-  if (f != null) {
-    writer.writeMessage(
-      6,
-      f,
-      proto.pb.Fee.serializeBinaryToWriter
-    );
-  }
-  f = message.getImage();
-  if (f != null) {
-    writer.writeMessage(
-      10,
-      f,
-      proto.pb.Image.serializeBinaryToWriter
-    );
-  }
-  f = message.getVideo();
-  if (f != null) {
-    writer.writeMessage(
-      11,
-      f,
-      proto.pb.Video.serializeBinaryToWriter
-    );
-  }
-  f = message.getAudio();
-  if (f != null) {
-    writer.writeMessage(
-      12,
-      f,
-      proto.pb.Audio.serializeBinaryToWriter
-    );
-  }
-  f = message.getSoftware();
-  if (f != null) {
-    writer.writeMessage(
-      13,
-      f,
-      proto.pb.Software.serializeBinaryToWriter
-    );
-  }
-};
-
-
-/**
- * optional Source source = 1;
- * @return {?proto.pb.Source}
- */
-proto.pb.Stream.prototype.getSource = function() {
-  return /** @type{?proto.pb.Source} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Source, 1));
-};
-
-
-/** @param {?proto.pb.Source|undefined} value */
-proto.pb.Stream.prototype.setSource = function(value) {
-  jspb.Message.setWrapperField(this, 1, value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Stream.prototype.clearSource = function() {
-  this.setSource(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Stream.prototype.hasSource = function() {
-  return jspb.Message.getField(this, 1) != null;
-};
-
-
-/**
- * optional string author = 2;
- * @return {string}
- */
-proto.pb.Stream.prototype.getAuthor = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.Stream.prototype.setAuthor = function(value) {
-  jspb.Message.setProto3StringField(this, 2, value);
-};
-
-
-/**
- * optional string license = 3;
- * @return {string}
- */
-proto.pb.Stream.prototype.getLicense = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.Stream.prototype.setLicense = function(value) {
-  jspb.Message.setProto3StringField(this, 3, value);
-};
-
-
-/**
- * optional string license_url = 4;
- * @return {string}
- */
-proto.pb.Stream.prototype.getLicenseUrl = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.Stream.prototype.setLicenseUrl = function(value) {
-  jspb.Message.setProto3StringField(this, 4, value);
-};
-
-
-/**
- * optional int64 release_time = 5;
- * @return {number}
- */
-proto.pb.Stream.prototype.getReleaseTime = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.Stream.prototype.setReleaseTime = function(value) {
-  jspb.Message.setProto3IntField(this, 5, value);
-};
-
-
-/**
- * optional Fee fee = 6;
- * @return {?proto.pb.Fee}
- */
-proto.pb.Stream.prototype.getFee = function() {
-  return /** @type{?proto.pb.Fee} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Fee, 6));
-};
-
-
-/** @param {?proto.pb.Fee|undefined} value */
-proto.pb.Stream.prototype.setFee = function(value) {
-  jspb.Message.setWrapperField(this, 6, value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Stream.prototype.clearFee = function() {
-  this.setFee(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Stream.prototype.hasFee = function() {
-  return jspb.Message.getField(this, 6) != null;
-};
-
-
-/**
- * optional Image image = 10;
- * @return {?proto.pb.Image}
- */
-proto.pb.Stream.prototype.getImage = function() {
-  return /** @type{?proto.pb.Image} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Image, 10));
-};
-
-
-/** @param {?proto.pb.Image|undefined} value */
-proto.pb.Stream.prototype.setImage = function(value) {
-  jspb.Message.setOneofWrapperField(this, 10, proto.pb.Stream.oneofGroups_[0], value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Stream.prototype.clearImage = function() {
-  this.setImage(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Stream.prototype.hasImage = function() {
-  return jspb.Message.getField(this, 10) != null;
-};
-
-
-/**
- * optional Video video = 11;
- * @return {?proto.pb.Video}
- */
-proto.pb.Stream.prototype.getVideo = function() {
-  return /** @type{?proto.pb.Video} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Video, 11));
-};
-
-
-/** @param {?proto.pb.Video|undefined} value */
-proto.pb.Stream.prototype.setVideo = function(value) {
-  jspb.Message.setOneofWrapperField(this, 11, proto.pb.Stream.oneofGroups_[0], value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Stream.prototype.clearVideo = function() {
-  this.setVideo(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Stream.prototype.hasVideo = function() {
-  return jspb.Message.getField(this, 11) != null;
-};
-
-
-/**
- * optional Audio audio = 12;
- * @return {?proto.pb.Audio}
- */
-proto.pb.Stream.prototype.getAudio = function() {
-  return /** @type{?proto.pb.Audio} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Audio, 12));
-};
-
-
-/** @param {?proto.pb.Audio|undefined} value */
-proto.pb.Stream.prototype.setAudio = function(value) {
-  jspb.Message.setOneofWrapperField(this, 12, proto.pb.Stream.oneofGroups_[0], value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Stream.prototype.clearAudio = function() {
-  this.setAudio(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Stream.prototype.hasAudio = function() {
-  return jspb.Message.getField(this, 12) != null;
-};
-
-
-/**
- * optional Software software = 13;
- * @return {?proto.pb.Software}
- */
-proto.pb.Stream.prototype.getSoftware = function() {
-  return /** @type{?proto.pb.Software} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Software, 13));
-};
-
-
-/** @param {?proto.pb.Software|undefined} value */
-proto.pb.Stream.prototype.setSoftware = function(value) {
-  jspb.Message.setOneofWrapperField(this, 13, proto.pb.Stream.oneofGroups_[0], value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Stream.prototype.clearSoftware = function() {
-  this.setSoftware(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Stream.prototype.hasSoftware = function() {
-  return jspb.Message.getField(this, 13) != null;
-};
-
-
+proto.pb.Channel.repeatedFields_ = [5,6,7];
 
 
 
@@ -1412,12 +307,19 @@ proto.pb.Channel.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Channel.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     publicKey: msg.getPublicKey_asB64(),
-    email: jspb.Message.getFieldWithDefault(msg, 2, ""),
-    websiteUrl: jspb.Message.getFieldWithDefault(msg, 3, ""),
-    cover: (f = msg.getCover()) && proto.pb.Source.toObject(includeInstance, f),
-    featured: (f = msg.getFeatured()) && proto.pb.ClaimList.toObject(includeInstance, f)
+    title: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    description: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    thumbnailUrl: jspb.Message.getFieldWithDefault(msg, 4, ""),
+    tagsList: jspb.Message.getRepeatedField(msg, 5),
+    languagesList: jspb.Message.toObjectList(msg.getLanguagesList(),
+    proto.pb.Language.toObject, includeInstance),
+    locationsList: jspb.Message.toObjectList(msg.getLocationsList(),
+    proto.pb.Location.toObject, includeInstance),
+    contactEmail: jspb.Message.getFieldWithDefault(msg, 8, ""),
+    homepageUrl: jspb.Message.getFieldWithDefault(msg, 9, ""),
+    coverUrl: jspb.Message.getFieldWithDefault(msg, 10, "")
   };
 
   if (includeInstance) {
@@ -1460,21 +362,41 @@ proto.pb.Channel.deserializeBinaryFromReader = function(msg, reader) {
       break;
     case 2:
       var value = /** @type {string} */ (reader.readString());
-      msg.setEmail(value);
+      msg.setTitle(value);
       break;
     case 3:
       var value = /** @type {string} */ (reader.readString());
-      msg.setWebsiteUrl(value);
+      msg.setDescription(value);
       break;
     case 4:
-      var value = new proto.pb.Source;
-      reader.readMessage(value,proto.pb.Source.deserializeBinaryFromReader);
-      msg.setCover(value);
+      var value = /** @type {string} */ (reader.readString());
+      msg.setThumbnailUrl(value);
       break;
     case 5:
-      var value = new proto.pb.ClaimList;
-      reader.readMessage(value,proto.pb.ClaimList.deserializeBinaryFromReader);
-      msg.setFeatured(value);
+      var value = /** @type {string} */ (reader.readString());
+      msg.addTags(value);
+      break;
+    case 6:
+      var value = new proto.pb.Language;
+      reader.readMessage(value,proto.pb.Language.deserializeBinaryFromReader);
+      msg.addLanguages(value);
+      break;
+    case 7:
+      var value = new proto.pb.Location;
+      reader.readMessage(value,proto.pb.Location.deserializeBinaryFromReader);
+      msg.addLocations(value);
+      break;
+    case 8:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setContactEmail(value);
+      break;
+    case 9:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setHomepageUrl(value);
+      break;
+    case 10:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setCoverUrl(value);
       break;
     default:
       reader.skipField();
@@ -1512,34 +434,69 @@ proto.pb.Channel.serializeBinaryToWriter = function(message, writer) {
       f
     );
   }
-  f = message.getEmail();
+  f = message.getTitle();
   if (f.length > 0) {
     writer.writeString(
       2,
       f
     );
   }
-  f = message.getWebsiteUrl();
+  f = message.getDescription();
   if (f.length > 0) {
     writer.writeString(
       3,
       f
     );
   }
-  f = message.getCover();
-  if (f != null) {
-    writer.writeMessage(
+  f = message.getThumbnailUrl();
+  if (f.length > 0) {
+    writer.writeString(
       4,
-      f,
-      proto.pb.Source.serializeBinaryToWriter
+      f
     );
   }
-  f = message.getFeatured();
-  if (f != null) {
-    writer.writeMessage(
+  f = message.getTagsList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
       5,
+      f
+    );
+  }
+  f = message.getLanguagesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      6,
       f,
-      proto.pb.ClaimList.serializeBinaryToWriter
+      proto.pb.Language.serializeBinaryToWriter
+    );
+  }
+  f = message.getLocationsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      7,
+      f,
+      proto.pb.Location.serializeBinaryToWriter
+    );
+  }
+  f = message.getContactEmail();
+  if (f.length > 0) {
+    writer.writeString(
+      8,
+      f
+    );
+  }
+  f = message.getHomepageUrl();
+  if (f.length > 0) {
+    writer.writeString(
+      9,
+      f
+    );
+  }
+  f = message.getCoverUrl();
+  if (f.length > 0) {
+    writer.writeString(
+      10,
+      f
     );
   }
 };
@@ -1585,441 +542,239 @@ proto.pb.Channel.prototype.setPublicKey = function(value) {
 
 
 /**
- * optional string email = 2;
+ * optional string title = 2;
  * @return {string}
  */
-proto.pb.Channel.prototype.getEmail = function() {
+proto.pb.Channel.prototype.getTitle = function() {
   return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
 };
 
 
 /** @param {string} value */
-proto.pb.Channel.prototype.setEmail = function(value) {
+proto.pb.Channel.prototype.setTitle = function(value) {
   jspb.Message.setProto3StringField(this, 2, value);
 };
 
 
 /**
- * optional string website_url = 3;
+ * optional string description = 3;
  * @return {string}
  */
-proto.pb.Channel.prototype.getWebsiteUrl = function() {
+proto.pb.Channel.prototype.getDescription = function() {
   return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
 };
 
 
 /** @param {string} value */
-proto.pb.Channel.prototype.setWebsiteUrl = function(value) {
+proto.pb.Channel.prototype.setDescription = function(value) {
   jspb.Message.setProto3StringField(this, 3, value);
 };
 
 
 /**
- * optional Source cover = 4;
- * @return {?proto.pb.Source}
- */
-proto.pb.Channel.prototype.getCover = function() {
-  return /** @type{?proto.pb.Source} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Source, 4));
-};
-
-
-/** @param {?proto.pb.Source|undefined} value */
-proto.pb.Channel.prototype.setCover = function(value) {
-  jspb.Message.setWrapperField(this, 4, value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Channel.prototype.clearCover = function() {
-  this.setCover(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Channel.prototype.hasCover = function() {
-  return jspb.Message.getField(this, 4) != null;
-};
-
-
-/**
- * optional ClaimList featured = 5;
- * @return {?proto.pb.ClaimList}
- */
-proto.pb.Channel.prototype.getFeatured = function() {
-  return /** @type{?proto.pb.ClaimList} */ (
-    jspb.Message.getWrapperField(this, proto.pb.ClaimList, 5));
-};
-
-
-/** @param {?proto.pb.ClaimList|undefined} value */
-proto.pb.Channel.prototype.setFeatured = function(value) {
-  jspb.Message.setWrapperField(this, 5, value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Channel.prototype.clearFeatured = function() {
-  this.setFeatured(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Channel.prototype.hasFeatured = function() {
-  return jspb.Message.getField(this, 5) != null;
-};
-
-
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.ClaimReference.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.ClaimReference.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.ClaimReference} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.ClaimReference.toObject = function(includeInstance, msg) {
-  var obj = {
-    claimHash: msg.getClaimHash_asB64()
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.ClaimReference}
- */
-proto.pb.ClaimReference.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.ClaimReference;
-  return proto.pb.ClaimReference.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.ClaimReference} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.ClaimReference}
- */
-proto.pb.ClaimReference.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {!Uint8Array} */ (reader.readBytes());
-      msg.setClaimHash(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.ClaimReference.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.ClaimReference.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.ClaimReference} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.ClaimReference.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getClaimHash_asU8();
-  if (f.length > 0) {
-    writer.writeBytes(
-      1,
-      f
-    );
-  }
-};
-
-
-/**
- * optional bytes claim_hash = 1;
- * @return {!(string|Uint8Array)}
- */
-proto.pb.ClaimReference.prototype.getClaimHash = function() {
-  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
-};
-
-
-/**
- * optional bytes claim_hash = 1;
- * This is a type-conversion wrapper around `getClaimHash()`
+ * optional string thumbnail_url = 4;
  * @return {string}
  */
-proto.pb.ClaimReference.prototype.getClaimHash_asB64 = function() {
-  return /** @type {string} */ (jspb.Message.bytesAsB64(
-      this.getClaimHash()));
+proto.pb.Channel.prototype.getThumbnailUrl = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.Channel.prototype.setThumbnailUrl = function(value) {
+  jspb.Message.setProto3StringField(this, 4, value);
 };
 
 
 /**
- * optional bytes claim_hash = 1;
- * Note that Uint8Array is not supported on all browsers.
- * @see http://caniuse.com/Uint8Array
- * This is a type-conversion wrapper around `getClaimHash()`
- * @return {!Uint8Array}
+ * repeated string tags = 5;
+ * @return {!Array.<string>}
  */
-proto.pb.ClaimReference.prototype.getClaimHash_asU8 = function() {
-  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
-      this.getClaimHash()));
+proto.pb.Channel.prototype.getTagsList = function() {
+  return /** @type {!Array.<string>} */ (jspb.Message.getRepeatedField(this, 5));
 };
 
 
-/** @param {!(string|Uint8Array)} value */
-proto.pb.ClaimReference.prototype.setClaimHash = function(value) {
-  jspb.Message.setProto3BytesField(this, 1, value);
+/** @param {!Array.<string>} value */
+proto.pb.Channel.prototype.setTagsList = function(value) {
+  jspb.Message.setField(this, 5, value || []);
+};
+
+
+/**
+ * @param {!string} value
+ * @param {number=} opt_index
+ */
+proto.pb.Channel.prototype.addTags = function(value, opt_index) {
+  jspb.Message.addToRepeatedField(this, 5, value, opt_index);
+};
+
+
+proto.pb.Channel.prototype.clearTagsList = function() {
+  this.setTagsList([]);
+};
+
+
+/**
+ * repeated Language languages = 6;
+ * @return {!Array.<!proto.pb.Language>}
+ */
+proto.pb.Channel.prototype.getLanguagesList = function() {
+  return /** @type{!Array.<!proto.pb.Language>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.pb.Language, 6));
+};
+
+
+/** @param {!Array.<!proto.pb.Language>} value */
+proto.pb.Channel.prototype.setLanguagesList = function(value) {
+  jspb.Message.setRepeatedWrapperField(this, 6, value);
+};
+
+
+/**
+ * @param {!proto.pb.Language=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.pb.Language}
+ */
+proto.pb.Channel.prototype.addLanguages = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.pb.Language, opt_index);
+};
+
+
+proto.pb.Channel.prototype.clearLanguagesList = function() {
+  this.setLanguagesList([]);
+};
+
+
+/**
+ * repeated Location locations = 7;
+ * @return {!Array.<!proto.pb.Location>}
+ */
+proto.pb.Channel.prototype.getLocationsList = function() {
+  return /** @type{!Array.<!proto.pb.Location>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.pb.Location, 7));
+};
+
+
+/** @param {!Array.<!proto.pb.Location>} value */
+proto.pb.Channel.prototype.setLocationsList = function(value) {
+  jspb.Message.setRepeatedWrapperField(this, 7, value);
+};
+
+
+/**
+ * @param {!proto.pb.Location=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.pb.Location}
+ */
+proto.pb.Channel.prototype.addLocations = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.pb.Location, opt_index);
+};
+
+
+proto.pb.Channel.prototype.clearLocationsList = function() {
+  this.setLocationsList([]);
+};
+
+
+/**
+ * optional string contact_email = 8;
+ * @return {string}
+ */
+proto.pb.Channel.prototype.getContactEmail = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.Channel.prototype.setContactEmail = function(value) {
+  jspb.Message.setProto3StringField(this, 8, value);
+};
+
+
+/**
+ * optional string homepage_url = 9;
+ * @return {string}
+ */
+proto.pb.Channel.prototype.getHomepageUrl = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.Channel.prototype.setHomepageUrl = function(value) {
+  jspb.Message.setProto3StringField(this, 9, value);
+};
+
+
+/**
+ * optional string cover_url = 10;
+ * @return {string}
+ */
+proto.pb.Channel.prototype.getCoverUrl = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.Channel.prototype.setCoverUrl = function(value) {
+  jspb.Message.setProto3StringField(this, 10, value);
 };
 
 
 
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.pb.Stream = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.pb.Stream.repeatedFields_, proto.pb.Stream.oneofGroups_);
+};
+goog.inherits(proto.pb.Stream, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Stream.displayName = 'proto.pb.Stream';
+}
 /**
  * List of repeated fields within this message type.
  * @private {!Array<number>}
  * @const
  */
-proto.pb.ClaimList.repeatedFields_ = [2];
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.ClaimList.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.ClaimList.toObject(opt_includeInstance, this);
-};
-
+proto.pb.Stream.repeatedFields_ = [5,6,7];
 
 /**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.ClaimList} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array<!Array<number>>}
+ * @const
  */
-proto.pb.ClaimList.toObject = function(includeInstance, msg) {
-  var obj = {
-    listType: jspb.Message.getFieldWithDefault(msg, 1, 0),
-    claimReferencesList: jspb.Message.toObjectList(msg.getClaimReferencesList(),
-    proto.pb.ClaimReference.toObject, includeInstance)
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.ClaimList}
- */
-proto.pb.ClaimList.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.ClaimList;
-  return proto.pb.ClaimList.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.ClaimList} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.ClaimList}
- */
-proto.pb.ClaimList.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {!proto.pb.ClaimList.ListType} */ (reader.readEnum());
-      msg.setListType(value);
-      break;
-    case 2:
-      var value = new proto.pb.ClaimReference;
-      reader.readMessage(value,proto.pb.ClaimReference.deserializeBinaryFromReader);
-      msg.addClaimReferences(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.ClaimList.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.ClaimList.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.ClaimList} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.ClaimList.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getListType();
-  if (f !== 0.0) {
-    writer.writeEnum(
-      1,
-      f
-    );
-  }
-  f = message.getClaimReferencesList();
-  if (f.length > 0) {
-    writer.writeRepeatedMessage(
-      2,
-      f,
-      proto.pb.ClaimReference.serializeBinaryToWriter
-    );
-  }
-};
-
+proto.pb.Stream.oneofGroups_ = [[16,17,18]];
 
 /**
  * @enum {number}
  */
-proto.pb.ClaimList.ListType = {
-  COLLECTION: 0,
-  DERIVATION: 2
+proto.pb.Stream.TypeCase = {
+  TYPE_NOT_SET: 0,
+  IMAGE: 16,
+  VIDEO: 17,
+  AUDIO: 18
 };
 
 /**
- * optional ListType list_type = 1;
- * @return {!proto.pb.ClaimList.ListType}
+ * @return {proto.pb.Stream.TypeCase}
  */
-proto.pb.ClaimList.prototype.getListType = function() {
-  return /** @type {!proto.pb.ClaimList.ListType} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+proto.pb.Stream.prototype.getTypeCase = function() {
+  return /** @type {proto.pb.Stream.TypeCase} */(jspb.Message.computeOneofCase(this, proto.pb.Stream.oneofGroups_[0]));
 };
 
 
-/** @param {!proto.pb.ClaimList.ListType} value */
-proto.pb.ClaimList.prototype.setListType = function(value) {
-  jspb.Message.setProto3EnumField(this, 1, value);
-};
-
-
-/**
- * repeated ClaimReference claim_references = 2;
- * @return {!Array<!proto.pb.ClaimReference>}
- */
-proto.pb.ClaimList.prototype.getClaimReferencesList = function() {
-  return /** @type{!Array<!proto.pb.ClaimReference>} */ (
-    jspb.Message.getRepeatedWrapperField(this, proto.pb.ClaimReference, 2));
-};
-
-
-/** @param {!Array<!proto.pb.ClaimReference>} value */
-proto.pb.ClaimList.prototype.setClaimReferencesList = function(value) {
-  jspb.Message.setRepeatedWrapperField(this, 2, value);
-};
-
-
-/**
- * @param {!proto.pb.ClaimReference=} opt_value
- * @param {number=} opt_index
- * @return {!proto.pb.ClaimReference}
- */
-proto.pb.ClaimList.prototype.addClaimReferences = function(opt_value, opt_index) {
-  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.pb.ClaimReference, opt_index);
-};
-
-
-/**
- * Clears the list making it empty but non-null.
- */
-proto.pb.ClaimList.prototype.clearClaimReferencesList = function() {
-  this.setClaimReferencesList([]);
-};
-
-
-
-
 
 if (jspb.Message.GENERATE_TO_OBJECT) {
 /**
@@ -2032,8 +787,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
  *     for transitional soy proto support: http://goto/soy-param-migration
  * @return {!Object}
  */
-proto.pb.Source.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.Source.toObject(opt_includeInstance, this);
+proto.pb.Stream.prototype.toObject = function(opt_includeInstance) {
+  return proto.pb.Stream.toObject(opt_includeInstance, this);
 };
 
 
@@ -2042,19 +797,31 @@ proto.pb.Source.prototype.toObject = function(opt_includeInstance) {
  * @param {boolean|undefined} includeInstance Whether to include the JSPB
  *     instance for transitional soy proto support:
  *     http://goto/soy-param-migration
- * @param {!proto.pb.Source} msg The msg instance to transform.
+ * @param {!proto.pb.Stream} msg The msg instance to transform.
  * @return {!Object}
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
-proto.pb.Source.toObject = function(includeInstance, msg) {
-  var obj = {
-    hash: msg.getHash_asB64(),
-    name: jspb.Message.getFieldWithDefault(msg, 2, ""),
-    size: jspb.Message.getFieldWithDefault(msg, 3, 0),
-    mediaType: jspb.Message.getFieldWithDefault(msg, 4, ""),
-    url: jspb.Message.getFieldWithDefault(msg, 5, ""),
+proto.pb.Stream.toObject = function(includeInstance, msg) {
+  var f, obj = {
     sdHash: msg.getSdHash_asB64(),
-    btInfohash: msg.getBtInfohash_asB64()
+    title: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    description: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    thumbnailUrl: jspb.Message.getFieldWithDefault(msg, 4, ""),
+    tagsList: jspb.Message.getRepeatedField(msg, 5),
+    languagesList: jspb.Message.toObjectList(msg.getLanguagesList(),
+    proto.pb.Language.toObject, includeInstance),
+    locationsList: jspb.Message.toObjectList(msg.getLocationsList(),
+    proto.pb.Location.toObject, includeInstance),
+    author: jspb.Message.getFieldWithDefault(msg, 8, ""),
+    license: jspb.Message.getFieldWithDefault(msg, 9, ""),
+    licenseUrl: jspb.Message.getFieldWithDefault(msg, 10, ""),
+    releaseTime: jspb.Message.getFieldWithDefault(msg, 11, 0),
+    mediaType: jspb.Message.getFieldWithDefault(msg, 13, ""),
+    file: (f = msg.getFile()) && proto.pb.File.toObject(includeInstance, f),
+    fee: (f = msg.getFee()) && proto.pb.Fee.toObject(includeInstance, f),
+    image: (f = msg.getImage()) && proto.pb.Image.toObject(includeInstance, f),
+    video: (f = msg.getVideo()) && proto.pb.Video.toObject(includeInstance, f),
+    audio: (f = msg.getAudio()) && proto.pb.Audio.toObject(includeInstance, f)
   };
 
   if (includeInstance) {
@@ -2068,23 +835,23 @@ proto.pb.Source.toObject = function(includeInstance, msg) {
 /**
  * Deserializes binary data (in protobuf wire format).
  * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.Source}
+ * @return {!proto.pb.Stream}
  */
-proto.pb.Source.deserializeBinary = function(bytes) {
+proto.pb.Stream.deserializeBinary = function(bytes) {
   var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.Source;
-  return proto.pb.Source.deserializeBinaryFromReader(msg, reader);
+  var msg = new proto.pb.Stream;
+  return proto.pb.Stream.deserializeBinaryFromReader(msg, reader);
 };
 
 
 /**
  * Deserializes binary data (in protobuf wire format) from the
  * given reader into the given message object.
- * @param {!proto.pb.Source} msg The message object to deserialize into.
+ * @param {!proto.pb.Stream} msg The message object to deserialize into.
  * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.Source}
+ * @return {!proto.pb.Stream}
  */
-proto.pb.Source.deserializeBinaryFromReader = function(msg, reader) {
+proto.pb.Stream.deserializeBinaryFromReader = function(msg, reader) {
   while (reader.nextField()) {
     if (reader.isEndGroup()) {
       break;
@@ -2093,31 +860,78 @@ proto.pb.Source.deserializeBinaryFromReader = function(msg, reader) {
     switch (field) {
     case 1:
       var value = /** @type {!Uint8Array} */ (reader.readBytes());
-      msg.setHash(value);
+      msg.setSdHash(value);
       break;
     case 2:
       var value = /** @type {string} */ (reader.readString());
-      msg.setName(value);
+      msg.setTitle(value);
       break;
     case 3:
-      var value = /** @type {number} */ (reader.readUint64());
-      msg.setSize(value);
+      var value = /** @type {string} */ (reader.readString());
+      msg.setDescription(value);
       break;
     case 4:
       var value = /** @type {string} */ (reader.readString());
-      msg.setMediaType(value);
+      msg.setThumbnailUrl(value);
       break;
     case 5:
       var value = /** @type {string} */ (reader.readString());
-      msg.setUrl(value);
+      msg.addTags(value);
       break;
     case 6:
-      var value = /** @type {!Uint8Array} */ (reader.readBytes());
-      msg.setSdHash(value);
+      var value = new proto.pb.Language;
+      reader.readMessage(value,proto.pb.Language.deserializeBinaryFromReader);
+      msg.addLanguages(value);
       break;
     case 7:
-      var value = /** @type {!Uint8Array} */ (reader.readBytes());
-      msg.setBtInfohash(value);
+      var value = new proto.pb.Location;
+      reader.readMessage(value,proto.pb.Location.deserializeBinaryFromReader);
+      msg.addLocations(value);
+      break;
+    case 8:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setAuthor(value);
+      break;
+    case 9:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setLicense(value);
+      break;
+    case 10:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setLicenseUrl(value);
+      break;
+    case 11:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setReleaseTime(value);
+      break;
+    case 13:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setMediaType(value);
+      break;
+    case 14:
+      var value = new proto.pb.File;
+      reader.readMessage(value,proto.pb.File.deserializeBinaryFromReader);
+      msg.setFile(value);
+      break;
+    case 15:
+      var value = new proto.pb.Fee;
+      reader.readMessage(value,proto.pb.Fee.deserializeBinaryFromReader);
+      msg.setFee(value);
+      break;
+    case 16:
+      var value = new proto.pb.Image;
+      reader.readMessage(value,proto.pb.Image.deserializeBinaryFromReader);
+      msg.setImage(value);
+      break;
+    case 17:
+      var value = new proto.pb.Video;
+      reader.readMessage(value,proto.pb.Video.deserializeBinaryFromReader);
+      msg.setVideo(value);
+      break;
+    case 18:
+      var value = new proto.pb.Audio;
+      reader.readMessage(value,proto.pb.Audio.deserializeBinaryFromReader);
+      msg.setAudio(value);
       break;
     default:
       reader.skipField();
@@ -2132,9 +946,9 @@ proto.pb.Source.deserializeBinaryFromReader = function(msg, reader) {
  * Serializes the message to binary data (in protobuf wire format).
  * @return {!Uint8Array}
  */
-proto.pb.Source.prototype.serializeBinary = function() {
+proto.pb.Stream.prototype.serializeBinary = function() {
   var writer = new jspb.BinaryWriter();
-  proto.pb.Source.serializeBinaryToWriter(this, writer);
+  proto.pb.Stream.serializeBinaryToWriter(this, writer);
   return writer.getResultBuffer();
 };
 
@@ -2142,242 +956,559 @@ proto.pb.Source.prototype.serializeBinary = function() {
 /**
  * Serializes the given message to binary data (in protobuf wire
  * format), writing to the given BinaryWriter.
- * @param {!proto.pb.Source} message
+ * @param {!proto.pb.Stream} message
  * @param {!jspb.BinaryWriter} writer
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
-proto.pb.Source.serializeBinaryToWriter = function(message, writer) {
+proto.pb.Stream.serializeBinaryToWriter = function(message, writer) {
   var f = undefined;
-  f = message.getHash_asU8();
+  f = message.getSdHash_asU8();
   if (f.length > 0) {
     writer.writeBytes(
       1,
       f
     );
   }
-  f = message.getName();
+  f = message.getTitle();
   if (f.length > 0) {
     writer.writeString(
       2,
       f
     );
   }
-  f = message.getSize();
-  if (f !== 0) {
-    writer.writeUint64(
+  f = message.getDescription();
+  if (f.length > 0) {
+    writer.writeString(
       3,
       f
     );
   }
-  f = message.getMediaType();
+  f = message.getThumbnailUrl();
   if (f.length > 0) {
     writer.writeString(
       4,
       f
     );
   }
-  f = message.getUrl();
+  f = message.getTagsList();
   if (f.length > 0) {
-    writer.writeString(
+    writer.writeRepeatedString(
       5,
       f
     );
   }
-  f = message.getSdHash_asU8();
+  f = message.getLanguagesList();
   if (f.length > 0) {
-    writer.writeBytes(
+    writer.writeRepeatedMessage(
       6,
+      f,
+      proto.pb.Language.serializeBinaryToWriter
+    );
+  }
+  f = message.getLocationsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      7,
+      f,
+      proto.pb.Location.serializeBinaryToWriter
+    );
+  }
+  f = message.getAuthor();
+  if (f.length > 0) {
+    writer.writeString(
+      8,
       f
     );
   }
-  f = message.getBtInfohash_asU8();
+  f = message.getLicense();
   if (f.length > 0) {
-    writer.writeBytes(
-      7,
+    writer.writeString(
+      9,
       f
     );
   }
+  f = message.getLicenseUrl();
+  if (f.length > 0) {
+    writer.writeString(
+      10,
+      f
+    );
+  }
+  f = message.getReleaseTime();
+  if (f !== 0) {
+    writer.writeInt64(
+      11,
+      f
+    );
+  }
+  f = message.getMediaType();
+  if (f.length > 0) {
+    writer.writeString(
+      13,
+      f
+    );
+  }
+  f = message.getFile();
+  if (f != null) {
+    writer.writeMessage(
+      14,
+      f,
+      proto.pb.File.serializeBinaryToWriter
+    );
+  }
+  f = message.getFee();
+  if (f != null) {
+    writer.writeMessage(
+      15,
+      f,
+      proto.pb.Fee.serializeBinaryToWriter
+    );
+  }
+  f = message.getImage();
+  if (f != null) {
+    writer.writeMessage(
+      16,
+      f,
+      proto.pb.Image.serializeBinaryToWriter
+    );
+  }
+  f = message.getVideo();
+  if (f != null) {
+    writer.writeMessage(
+      17,
+      f,
+      proto.pb.Video.serializeBinaryToWriter
+    );
+  }
+  f = message.getAudio();
+  if (f != null) {
+    writer.writeMessage(
+      18,
+      f,
+      proto.pb.Audio.serializeBinaryToWriter
+    );
+  }
 };
 
 
 /**
- * optional bytes hash = 1;
+ * optional bytes sd_hash = 1;
  * @return {!(string|Uint8Array)}
  */
-proto.pb.Source.prototype.getHash = function() {
+proto.pb.Stream.prototype.getSdHash = function() {
   return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
 };
 
 
 /**
- * optional bytes hash = 1;
- * This is a type-conversion wrapper around `getHash()`
+ * optional bytes sd_hash = 1;
+ * This is a type-conversion wrapper around `getSdHash()`
  * @return {string}
  */
-proto.pb.Source.prototype.getHash_asB64 = function() {
+proto.pb.Stream.prototype.getSdHash_asB64 = function() {
   return /** @type {string} */ (jspb.Message.bytesAsB64(
-      this.getHash()));
+      this.getSdHash()));
 };
 
 
 /**
- * optional bytes hash = 1;
+ * optional bytes sd_hash = 1;
  * Note that Uint8Array is not supported on all browsers.
  * @see http://caniuse.com/Uint8Array
- * This is a type-conversion wrapper around `getHash()`
+ * This is a type-conversion wrapper around `getSdHash()`
  * @return {!Uint8Array}
  */
-proto.pb.Source.prototype.getHash_asU8 = function() {
+proto.pb.Stream.prototype.getSdHash_asU8 = function() {
   return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
-      this.getHash()));
+      this.getSdHash()));
 };
 
 
 /** @param {!(string|Uint8Array)} value */
-proto.pb.Source.prototype.setHash = function(value) {
+proto.pb.Stream.prototype.setSdHash = function(value) {
   jspb.Message.setProto3BytesField(this, 1, value);
 };
 
 
 /**
- * optional string name = 2;
+ * optional string title = 2;
  * @return {string}
  */
-proto.pb.Source.prototype.getName = function() {
+proto.pb.Stream.prototype.getTitle = function() {
   return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
 };
 
 
 /** @param {string} value */
-proto.pb.Source.prototype.setName = function(value) {
+proto.pb.Stream.prototype.setTitle = function(value) {
   jspb.Message.setProto3StringField(this, 2, value);
 };
 
 
 /**
- * optional uint64 size = 3;
- * @return {number}
+ * optional string description = 3;
+ * @return {string}
  */
-proto.pb.Source.prototype.getSize = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+proto.pb.Stream.prototype.getDescription = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
 };
 
 
-/** @param {number} value */
-proto.pb.Source.prototype.setSize = function(value) {
-  jspb.Message.setProto3IntField(this, 3, value);
+/** @param {string} value */
+proto.pb.Stream.prototype.setDescription = function(value) {
+  jspb.Message.setProto3StringField(this, 3, value);
 };
 
 
 /**
- * optional string media_type = 4;
+ * optional string thumbnail_url = 4;
  * @return {string}
  */
-proto.pb.Source.prototype.getMediaType = function() {
+proto.pb.Stream.prototype.getThumbnailUrl = function() {
   return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
 };
 
 
 /** @param {string} value */
-proto.pb.Source.prototype.setMediaType = function(value) {
+proto.pb.Stream.prototype.setThumbnailUrl = function(value) {
   jspb.Message.setProto3StringField(this, 4, value);
 };
 
 
 /**
- * optional string url = 5;
+ * repeated string tags = 5;
+ * @return {!Array.<string>}
+ */
+proto.pb.Stream.prototype.getTagsList = function() {
+  return /** @type {!Array.<string>} */ (jspb.Message.getRepeatedField(this, 5));
+};
+
+
+/** @param {!Array.<string>} value */
+proto.pb.Stream.prototype.setTagsList = function(value) {
+  jspb.Message.setField(this, 5, value || []);
+};
+
+
+/**
+ * @param {!string} value
+ * @param {number=} opt_index
+ */
+proto.pb.Stream.prototype.addTags = function(value, opt_index) {
+  jspb.Message.addToRepeatedField(this, 5, value, opt_index);
+};
+
+
+proto.pb.Stream.prototype.clearTagsList = function() {
+  this.setTagsList([]);
+};
+
+
+/**
+ * repeated Language languages = 6;
+ * @return {!Array.<!proto.pb.Language>}
+ */
+proto.pb.Stream.prototype.getLanguagesList = function() {
+  return /** @type{!Array.<!proto.pb.Language>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.pb.Language, 6));
+};
+
+
+/** @param {!Array.<!proto.pb.Language>} value */
+proto.pb.Stream.prototype.setLanguagesList = function(value) {
+  jspb.Message.setRepeatedWrapperField(this, 6, value);
+};
+
+
+/**
+ * @param {!proto.pb.Language=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.pb.Language}
+ */
+proto.pb.Stream.prototype.addLanguages = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.pb.Language, opt_index);
+};
+
+
+proto.pb.Stream.prototype.clearLanguagesList = function() {
+  this.setLanguagesList([]);
+};
+
+
+/**
+ * repeated Location locations = 7;
+ * @return {!Array.<!proto.pb.Location>}
+ */
+proto.pb.Stream.prototype.getLocationsList = function() {
+  return /** @type{!Array.<!proto.pb.Location>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.pb.Location, 7));
+};
+
+
+/** @param {!Array.<!proto.pb.Location>} value */
+proto.pb.Stream.prototype.setLocationsList = function(value) {
+  jspb.Message.setRepeatedWrapperField(this, 7, value);
+};
+
+
+/**
+ * @param {!proto.pb.Location=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.pb.Location}
+ */
+proto.pb.Stream.prototype.addLocations = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 7, opt_value, proto.pb.Location, opt_index);
+};
+
+
+proto.pb.Stream.prototype.clearLocationsList = function() {
+  this.setLocationsList([]);
+};
+
+
+/**
+ * optional string author = 8;
  * @return {string}
  */
-proto.pb.Source.prototype.getUrl = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+proto.pb.Stream.prototype.getAuthor = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
 };
 
 
 /** @param {string} value */
-proto.pb.Source.prototype.setUrl = function(value) {
-  jspb.Message.setProto3StringField(this, 5, value);
+proto.pb.Stream.prototype.setAuthor = function(value) {
+  jspb.Message.setProto3StringField(this, 8, value);
 };
 
 
 /**
- * optional bytes sd_hash = 6;
- * @return {!(string|Uint8Array)}
- */
-proto.pb.Source.prototype.getSdHash = function() {
-  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
-};
-
-
-/**
- * optional bytes sd_hash = 6;
- * This is a type-conversion wrapper around `getSdHash()`
+ * optional string license = 9;
  * @return {string}
  */
-proto.pb.Source.prototype.getSdHash_asB64 = function() {
-  return /** @type {string} */ (jspb.Message.bytesAsB64(
-      this.getSdHash()));
+proto.pb.Stream.prototype.getLicense = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.Stream.prototype.setLicense = function(value) {
+  jspb.Message.setProto3StringField(this, 9, value);
 };
 
 
 /**
- * optional bytes sd_hash = 6;
- * Note that Uint8Array is not supported on all browsers.
- * @see http://caniuse.com/Uint8Array
- * This is a type-conversion wrapper around `getSdHash()`
- * @return {!Uint8Array}
- */
-proto.pb.Source.prototype.getSdHash_asU8 = function() {
-  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
-      this.getSdHash()));
-};
-
-
-/** @param {!(string|Uint8Array)} value */
-proto.pb.Source.prototype.setSdHash = function(value) {
-  jspb.Message.setProto3BytesField(this, 6, value);
-};
-
-
-/**
- * optional bytes bt_infohash = 7;
- * @return {!(string|Uint8Array)}
- */
-proto.pb.Source.prototype.getBtInfohash = function() {
-  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
-};
-
-
-/**
- * optional bytes bt_infohash = 7;
- * This is a type-conversion wrapper around `getBtInfohash()`
+ * optional string license_url = 10;
  * @return {string}
  */
-proto.pb.Source.prototype.getBtInfohash_asB64 = function() {
-  return /** @type {string} */ (jspb.Message.bytesAsB64(
-      this.getBtInfohash()));
+proto.pb.Stream.prototype.getLicenseUrl = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.Stream.prototype.setLicenseUrl = function(value) {
+  jspb.Message.setProto3StringField(this, 10, value);
 };
 
 
 /**
- * optional bytes bt_infohash = 7;
- * Note that Uint8Array is not supported on all browsers.
- * @see http://caniuse.com/Uint8Array
- * This is a type-conversion wrapper around `getBtInfohash()`
- * @return {!Uint8Array}
+ * optional int64 release_time = 11;
+ * @return {number}
  */
-proto.pb.Source.prototype.getBtInfohash_asU8 = function() {
-  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
-      this.getBtInfohash()));
+proto.pb.Stream.prototype.getReleaseTime = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));
 };
 
 
-/** @param {!(string|Uint8Array)} value */
-proto.pb.Source.prototype.setBtInfohash = function(value) {
-  jspb.Message.setProto3BytesField(this, 7, value);
+/** @param {number} value */
+proto.pb.Stream.prototype.setReleaseTime = function(value) {
+  jspb.Message.setProto3IntField(this, 11, value);
+};
+
+
+/**
+ * optional string media_type = 13;
+ * @return {string}
+ */
+proto.pb.Stream.prototype.getMediaType = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.Stream.prototype.setMediaType = function(value) {
+  jspb.Message.setProto3StringField(this, 13, value);
+};
+
+
+/**
+ * optional File file = 14;
+ * @return {?proto.pb.File}
+ */
+proto.pb.Stream.prototype.getFile = function() {
+  return /** @type{?proto.pb.File} */ (
+    jspb.Message.getWrapperField(this, proto.pb.File, 14));
+};
+
+
+/** @param {?proto.pb.File|undefined} value */
+proto.pb.Stream.prototype.setFile = function(value) {
+  jspb.Message.setWrapperField(this, 14, value);
+};
+
+
+proto.pb.Stream.prototype.clearFile = function() {
+  this.setFile(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {!boolean}
+ */
+proto.pb.Stream.prototype.hasFile = function() {
+  return jspb.Message.getField(this, 14) != null;
+};
+
+
+/**
+ * optional Fee fee = 15;
+ * @return {?proto.pb.Fee}
+ */
+proto.pb.Stream.prototype.getFee = function() {
+  return /** @type{?proto.pb.Fee} */ (
+    jspb.Message.getWrapperField(this, proto.pb.Fee, 15));
+};
+
+
+/** @param {?proto.pb.Fee|undefined} value */
+proto.pb.Stream.prototype.setFee = function(value) {
+  jspb.Message.setWrapperField(this, 15, value);
+};
+
+
+proto.pb.Stream.prototype.clearFee = function() {
+  this.setFee(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {!boolean}
+ */
+proto.pb.Stream.prototype.hasFee = function() {
+  return jspb.Message.getField(this, 15) != null;
+};
+
+
+/**
+ * optional Image image = 16;
+ * @return {?proto.pb.Image}
+ */
+proto.pb.Stream.prototype.getImage = function() {
+  return /** @type{?proto.pb.Image} */ (
+    jspb.Message.getWrapperField(this, proto.pb.Image, 16));
+};
+
+
+/** @param {?proto.pb.Image|undefined} value */
+proto.pb.Stream.prototype.setImage = function(value) {
+  jspb.Message.setOneofWrapperField(this, 16, proto.pb.Stream.oneofGroups_[0], value);
+};
+
+
+proto.pb.Stream.prototype.clearImage = function() {
+  this.setImage(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {!boolean}
+ */
+proto.pb.Stream.prototype.hasImage = function() {
+  return jspb.Message.getField(this, 16) != null;
+};
+
+
+/**
+ * optional Video video = 17;
+ * @return {?proto.pb.Video}
+ */
+proto.pb.Stream.prototype.getVideo = function() {
+  return /** @type{?proto.pb.Video} */ (
+    jspb.Message.getWrapperField(this, proto.pb.Video, 17));
+};
+
+
+/** @param {?proto.pb.Video|undefined} value */
+proto.pb.Stream.prototype.setVideo = function(value) {
+  jspb.Message.setOneofWrapperField(this, 17, proto.pb.Stream.oneofGroups_[0], value);
+};
+
+
+proto.pb.Stream.prototype.clearVideo = function() {
+  this.setVideo(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {!boolean}
+ */
+proto.pb.Stream.prototype.hasVideo = function() {
+  return jspb.Message.getField(this, 17) != null;
+};
+
+
+/**
+ * optional Audio audio = 18;
+ * @return {?proto.pb.Audio}
+ */
+proto.pb.Stream.prototype.getAudio = function() {
+  return /** @type{?proto.pb.Audio} */ (
+    jspb.Message.getWrapperField(this, proto.pb.Audio, 18));
+};
+
+
+/** @param {?proto.pb.Audio|undefined} value */
+proto.pb.Stream.prototype.setAudio = function(value) {
+  jspb.Message.setOneofWrapperField(this, 18, proto.pb.Stream.oneofGroups_[0], value);
+};
+
+
+proto.pb.Stream.prototype.clearAudio = function() {
+  this.setAudio(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {!boolean}
+ */
+proto.pb.Stream.prototype.hasAudio = function() {
+  return jspb.Message.getField(this, 18) != null;
 };
 
 
 
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.pb.Fee = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.pb.Fee, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Fee.displayName = 'proto.pb.Fee';
+}
 
 
 if (jspb.Message.GENERATE_TO_OBJECT) {
@@ -2406,7 +1537,7 @@ proto.pb.Fee.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Fee.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     currency: jspb.Message.getFieldWithDefault(msg, 1, 0),
     address: msg.getAddress_asB64(),
     amount: jspb.Message.getFieldWithDefault(msg, 3, 0)
@@ -2591,6 +1722,243 @@ proto.pb.Fee.prototype.setAmount = function(value) {
 
 
 
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.pb.File = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.pb.File, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.File.displayName = 'proto.pb.File';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.pb.File.prototype.toObject = function(opt_includeInstance) {
+  return proto.pb.File.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.pb.File} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.pb.File.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    hash: msg.getHash_asB64(),
+    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    size: jspb.Message.getFieldWithDefault(msg, 2, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.pb.File}
+ */
+proto.pb.File.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.pb.File;
+  return proto.pb.File.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.pb.File} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.pb.File}
+ */
+proto.pb.File.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 3:
+      var value = /** @type {!Uint8Array} */ (reader.readBytes());
+      msg.setHash(value);
+      break;
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setSize(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.pb.File.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.pb.File.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.pb.File} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.pb.File.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getHash_asU8();
+  if (f.length > 0) {
+    writer.writeBytes(
+      3,
+      f
+    );
+  }
+  f = message.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getSize();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional bytes hash = 3;
+ * @return {!(string|Uint8Array)}
+ */
+proto.pb.File.prototype.getHash = function() {
+  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * optional bytes hash = 3;
+ * This is a type-conversion wrapper around `getHash()`
+ * @return {string}
+ */
+proto.pb.File.prototype.getHash_asB64 = function() {
+  return /** @type {string} */ (jspb.Message.bytesAsB64(
+      this.getHash()));
+};
+
+
+/**
+ * optional bytes hash = 3;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getHash()`
+ * @return {!Uint8Array}
+ */
+proto.pb.File.prototype.getHash_asU8 = function() {
+  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+      this.getHash()));
+};
+
+
+/** @param {!(string|Uint8Array)} value */
+proto.pb.File.prototype.setHash = function(value) {
+  jspb.Message.setProto3BytesField(this, 3, value);
+};
+
+
+/**
+ * optional string name = 1;
+ * @return {string}
+ */
+proto.pb.File.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/** @param {string} value */
+proto.pb.File.prototype.setName = function(value) {
+  jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 size = 2;
+ * @return {number}
+ */
+proto.pb.File.prototype.getSize = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/** @param {number} value */
+proto.pb.File.prototype.setSize = function(value) {
+  jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.pb.Image = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.pb.Image, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Image.displayName = 'proto.pb.Image';
+}
 
 
 if (jspb.Message.GENERATE_TO_OBJECT) {
@@ -2619,7 +1987,7 @@ proto.pb.Image.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Image.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     width: jspb.Message.getFieldWithDefault(msg, 1, 0),
     height: jspb.Message.getFieldWithDefault(msg, 2, 0)
   };
@@ -2743,6 +2111,23 @@ proto.pb.Image.prototype.setHeight = function(value) {
 
 
 
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.pb.Video = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.pb.Video, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Video.displayName = 'proto.pb.Video';
+}
 
 
 if (jspb.Message.GENERATE_TO_OBJECT) {
@@ -2771,11 +2156,10 @@ proto.pb.Video.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Video.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     width: jspb.Message.getFieldWithDefault(msg, 1, 0),
     height: jspb.Message.getFieldWithDefault(msg, 2, 0),
-    duration: jspb.Message.getFieldWithDefault(msg, 3, 0),
-    audio: (f = msg.getAudio()) && proto.pb.Audio.toObject(includeInstance, f)
+    duration: jspb.Message.getFieldWithDefault(msg, 3, 0)
   };
 
   if (includeInstance) {
@@ -2824,11 +2208,6 @@ proto.pb.Video.deserializeBinaryFromReader = function(msg, reader) {
       var value = /** @type {number} */ (reader.readUint32());
       msg.setDuration(value);
       break;
-    case 15:
-      var value = new proto.pb.Audio;
-      reader.readMessage(value,proto.pb.Audio.deserializeBinaryFromReader);
-      msg.setAudio(value);
-      break;
     default:
       reader.skipField();
       break;
@@ -2879,14 +2258,6 @@ proto.pb.Video.serializeBinaryToWriter = function(message, writer) {
       f
     );
   }
-  f = message.getAudio();
-  if (f != null) {
-    writer.writeMessage(
-      15,
-      f,
-      proto.pb.Audio.serializeBinaryToWriter
-    );
-  }
 };
 
 
@@ -2935,40 +2306,24 @@ proto.pb.Video.prototype.setDuration = function(value) {
 };
 
 
-/**
- * optional Audio audio = 15;
- * @return {?proto.pb.Audio}
- */
-proto.pb.Video.prototype.getAudio = function() {
-  return /** @type{?proto.pb.Audio} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Audio, 15));
-};
-
-
-/** @param {?proto.pb.Audio|undefined} value */
-proto.pb.Video.prototype.setAudio = function(value) {
-  jspb.Message.setWrapperField(this, 15, value);
-};
-
 
 /**
- * Clears the message field making it undefined.
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
  */
-proto.pb.Video.prototype.clearAudio = function() {
-  this.setAudio(undefined);
+proto.pb.Audio = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
 };
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Video.prototype.hasAudio = function() {
-  return jspb.Message.getField(this, 15) != null;
-};
-
-
-
+goog.inherits(proto.pb.Audio, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Audio.displayName = 'proto.pb.Audio';
+}
 
 
 if (jspb.Message.GENERATE_TO_OBJECT) {
@@ -2997,7 +2352,7 @@ proto.pb.Audio.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Audio.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     duration: jspb.Message.getFieldWithDefault(msg, 1, 0)
   };
 
@@ -3094,146 +2449,25 @@ proto.pb.Audio.prototype.setDuration = function(value) {
 
 
 
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
 /**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
  */
-proto.pb.Software.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.Software.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.Software} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Software.toObject = function(includeInstance, msg) {
-  var obj = {
-    os: jspb.Message.getFieldWithDefault(msg, 1, "")
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
+proto.pb.Language = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
 };
+goog.inherits(proto.pb.Language, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Language.displayName = 'proto.pb.Language';
 }
 
 
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.Software}
- */
-proto.pb.Software.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.Software;
-  return proto.pb.Software.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.Software} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.Software}
- */
-proto.pb.Software.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setOs(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.Software.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.Software.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.Software} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Software.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getOs();
-  if (f.length > 0) {
-    writer.writeString(
-      1,
-      f
-    );
-  }
-};
-
-
-/**
- * @enum {number}
- */
-proto.pb.Software.OS = {
-  UNKNOWN_OS: 0,
-  ANY: 1,
-  LINUX: 2,
-  WINDOWS: 3,
-  MAC: 4,
-  ANDROID: 5,
-  IOS: 6
-};
-
-/**
- * optional string os = 1;
- * @return {string}
- */
-proto.pb.Software.prototype.getOs = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.Software.prototype.setOs = function(value) {
-  jspb.Message.setProto3StringField(this, 1, value);
-};
-
-
-
-
-
 if (jspb.Message.GENERATE_TO_OBJECT) {
 /**
  * Creates an object representation of this proto suitable for use in Soy templates.
@@ -3260,7 +2494,7 @@ proto.pb.Language.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Language.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     language: jspb.Message.getFieldWithDefault(msg, 1, 0),
     script: jspb.Message.getFieldWithDefault(msg, 2, 0),
     region: jspb.Message.getFieldWithDefault(msg, 3, 0)
@@ -3808,6 +3042,23 @@ proto.pb.Language.prototype.setRegion = function(value) {
 
 
 
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.pb.Location = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.pb.Location, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.pb.Location.displayName = 'proto.pb.Location';
+}
 
 
 if (jspb.Message.GENERATE_TO_OBJECT) {
@@ -3836,7 +3087,7 @@ proto.pb.Location.prototype.toObject = function(opt_includeInstance) {
  * @suppress {unusedLocalVariables} f is only used for nested messages
  */
 proto.pb.Location.toObject = function(includeInstance, msg) {
-  var obj = {
+  var f, obj = {
     country: jspb.Message.getFieldWithDefault(msg, 1, 0),
     state: jspb.Message.getFieldWithDefault(msg, 2, ""),
     city: jspb.Message.getFieldWithDefault(msg, 3, ""),
@@ -4230,287 +3481,7 @@ proto.pb.Location.Country = {
   EH: 246,
   YE: 247,
   ZM: 248,
-  ZW: 249,
-  R001: 250,
-  R002: 251,
-  R015: 252,
-  R012: 253,
-  R818: 254,
-  R434: 255,
-  R504: 256,
-  R729: 257,
-  R788: 258,
-  R732: 259,
-  R202: 260,
-  R014: 261,
-  R086: 262,
-  R108: 263,
-  R174: 264,
-  R262: 265,
-  R232: 266,
-  R231: 267,
-  R260: 268,
-  R404: 269,
-  R450: 270,
-  R454: 271,
-  R480: 272,
-  R175: 273,
-  R508: 274,
-  R638: 275,
-  R646: 276,
-  R690: 277,
-  R706: 278,
-  R728: 279,
-  R800: 280,
-  R834: 281,
-  R894: 282,
-  R716: 283,
-  R017: 284,
-  R024: 285,
-  R120: 286,
-  R140: 287,
-  R148: 288,
-  R178: 289,
-  R180: 290,
-  R226: 291,
-  R266: 292,
-  R678: 293,
-  R018: 294,
-  R072: 295,
-  R748: 296,
-  R426: 297,
-  R516: 298,
-  R710: 299,
-  R011: 300,
-  R204: 301,
-  R854: 302,
-  R132: 303,
-  R384: 304,
-  R270: 305,
-  R288: 306,
-  R324: 307,
-  R624: 308,
-  R430: 309,
-  R466: 310,
-  R478: 311,
-  R562: 312,
-  R566: 313,
-  R654: 314,
-  R686: 315,
-  R694: 316,
-  R768: 317,
-  R019: 318,
-  R419: 319,
-  R029: 320,
-  R660: 321,
-  R028: 322,
-  R533: 323,
-  R044: 324,
-  R052: 325,
-  R535: 326,
-  R092: 327,
-  R136: 328,
-  R192: 329,
-  R531: 330,
-  R212: 331,
-  R214: 332,
-  R308: 333,
-  R312: 334,
-  R332: 335,
-  R388: 336,
-  R474: 337,
-  R500: 338,
-  R630: 339,
-  R652: 340,
-  R659: 341,
-  R662: 342,
-  R663: 343,
-  R670: 344,
-  R534: 345,
-  R780: 346,
-  R796: 347,
-  R850: 348,
-  R013: 349,
-  R084: 350,
-  R188: 351,
-  R222: 352,
-  R320: 353,
-  R340: 354,
-  R484: 355,
-  R558: 356,
-  R591: 357,
-  R005: 358,
-  R032: 359,
-  R068: 360,
-  R074: 361,
-  R076: 362,
-  R152: 363,
-  R170: 364,
-  R218: 365,
-  R238: 366,
-  R254: 367,
-  R328: 368,
-  R600: 369,
-  R604: 370,
-  R239: 371,
-  R740: 372,
-  R858: 373,
-  R862: 374,
-  R021: 375,
-  R060: 376,
-  R124: 377,
-  R304: 378,
-  R666: 379,
-  R840: 380,
-  R010: 381,
-  R142: 382,
-  R143: 383,
-  R398: 384,
-  R417: 385,
-  R762: 386,
-  R795: 387,
-  R860: 388,
-  R030: 389,
-  R156: 390,
-  R344: 391,
-  R446: 392,
-  R408: 393,
-  R392: 394,
-  R496: 395,
-  R410: 396,
-  R035: 397,
-  R096: 398,
-  R116: 399,
-  R360: 400,
-  R418: 401,
-  R458: 402,
-  R104: 403,
-  R608: 404,
-  R702: 405,
-  R764: 406,
-  R626: 407,
-  R704: 408,
-  R034: 409,
-  R004: 410,
-  R050: 411,
-  R064: 412,
-  R356: 413,
-  R364: 414,
-  R462: 415,
-  R524: 416,
-  R586: 417,
-  R144: 418,
-  R145: 419,
-  R051: 420,
-  R031: 421,
-  R048: 422,
-  R196: 423,
-  R268: 424,
-  R368: 425,
-  R376: 426,
-  R400: 427,
-  R414: 428,
-  R422: 429,
-  R512: 430,
-  R634: 431,
-  R682: 432,
-  R275: 433,
-  R760: 434,
-  R792: 435,
-  R784: 436,
-  R887: 437,
-  R150: 438,
-  R151: 439,
-  R112: 440,
-  R100: 441,
-  R203: 442,
-  R348: 443,
-  R616: 444,
-  R498: 445,
-  R642: 446,
-  R643: 447,
-  R703: 448,
-  R804: 449,
-  R154: 450,
-  R248: 451,
-  R830: 452,
-  R831: 453,
-  R832: 454,
-  R680: 455,
-  R208: 456,
-  R233: 457,
-  R234: 458,
-  R246: 459,
-  R352: 460,
-  R372: 461,
-  R833: 462,
-  R428: 463,
-  R440: 464,
-  R578: 465,
-  R744: 466,
-  R752: 467,
-  R826: 468,
-  R039: 469,
-  R008: 470,
-  R020: 471,
-  R070: 472,
-  R191: 473,
-  R292: 474,
-  R300: 475,
-  R336: 476,
-  R380: 477,
-  R470: 478,
-  R499: 479,
-  R807: 480,
-  R620: 481,
-  R674: 482,
-  R688: 483,
-  R705: 484,
-  R724: 485,
-  R155: 486,
-  R040: 487,
-  R056: 488,
-  R250: 489,
-  R276: 490,
-  R438: 491,
-  R442: 492,
-  R492: 493,
-  R528: 494,
-  R756: 495,
-  R009: 496,
-  R053: 497,
-  R036: 498,
-  R162: 499,
-  R166: 500,
-  R334: 501,
-  R554: 502,
-  R574: 503,
-  R054: 504,
-  R242: 505,
-  R540: 506,
-  R598: 507,
-  R090: 508,
-  R548: 509,
-  R057: 510,
-  R316: 511,
-  R296: 512,
-  R584: 513,
-  R583: 514,
-  R520: 515,
-  R580: 516,
-  R585: 517,
-  R581: 518,
-  R061: 519,
-  R016: 520,
-  R184: 521,
-  R258: 522,
-  R570: 523,
-  R612: 524,
-  R882: 525,
-  R772: 526,
-  R776: 527,
-  R798: 528,
-  R876: 529
+  ZW: 249
 };
 
 /**
diff --git a/v2/js/purchase_pb.js b/v2/js/purchase_pb.js
deleted file mode 100644
index 34a77d6..0000000
--- a/v2/js/purchase_pb.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * @fileoverview
- * @enhanceable
- * @suppress {messageConventions} JS Compiler reports an error if a variable or
- *     field starts with 'MSG_' and isn't a translatable message.
- * @public
- */
-// GENERATED CODE -- DO NOT EDIT!
-
-var jspb = require('google-protobuf');
-var goog = jspb;
-var global = Function('return this')();
-
-goog.exportSymbol('proto.pb.Purchase', null, global);
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Purchase = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Purchase, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Purchase.displayName = 'proto.pb.Purchase';
-}
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.Purchase.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.Purchase.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.Purchase} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Purchase.toObject = function(includeInstance, msg) {
-  var obj = {
-    claimHash: msg.getClaimHash_asB64()
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.Purchase}
- */
-proto.pb.Purchase.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.Purchase;
-  return proto.pb.Purchase.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.Purchase} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.Purchase}
- */
-proto.pb.Purchase.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {!Uint8Array} */ (reader.readBytes());
-      msg.setClaimHash(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.Purchase.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.Purchase.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.Purchase} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Purchase.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getClaimHash_asU8();
-  if (f.length > 0) {
-    writer.writeBytes(
-      1,
-      f
-    );
-  }
-};
-
-
-/**
- * optional bytes claim_hash = 1;
- * @return {!(string|Uint8Array)}
- */
-proto.pb.Purchase.prototype.getClaimHash = function() {
-  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
-};
-
-
-/**
- * optional bytes claim_hash = 1;
- * This is a type-conversion wrapper around `getClaimHash()`
- * @return {string}
- */
-proto.pb.Purchase.prototype.getClaimHash_asB64 = function() {
-  return /** @type {string} */ (jspb.Message.bytesAsB64(
-      this.getClaimHash()));
-};
-
-
-/**
- * optional bytes claim_hash = 1;
- * Note that Uint8Array is not supported on all browsers.
- * @see http://caniuse.com/Uint8Array
- * This is a type-conversion wrapper around `getClaimHash()`
- * @return {!Uint8Array}
- */
-proto.pb.Purchase.prototype.getClaimHash_asU8 = function() {
-  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
-      this.getClaimHash()));
-};
-
-
-/** @param {!(string|Uint8Array)} value */
-proto.pb.Purchase.prototype.setClaimHash = function(value) {
-  jspb.Message.setProto3BytesField(this, 1, value);
-};
-
-
-goog.object.extend(exports, proto.pb);
diff --git a/v2/js/result_pb.js b/v2/js/result_pb.js
deleted file mode 100644
index af8916b..0000000
--- a/v2/js/result_pb.js
+++ /dev/null
@@ -1,1443 +0,0 @@
-/**
- * @fileoverview
- * @enhanceable
- * @suppress {messageConventions} JS Compiler reports an error if a variable or
- *     field starts with 'MSG_' and isn't a translatable message.
- * @public
- */
-// GENERATED CODE -- DO NOT EDIT!
-
-var jspb = require('google-protobuf');
-var goog = jspb;
-var global = Function('return this')();
-
-goog.exportSymbol('proto.pb.ClaimMeta', null, global);
-goog.exportSymbol('proto.pb.Error', null, global);
-goog.exportSymbol('proto.pb.Error.Code', null, global);
-goog.exportSymbol('proto.pb.Output', null, global);
-goog.exportSymbol('proto.pb.Outputs', null, global);
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Outputs = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, proto.pb.Outputs.repeatedFields_, null);
-};
-goog.inherits(proto.pb.Outputs, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Outputs.displayName = 'proto.pb.Outputs';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Output = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.pb.Output.oneofGroups_);
-};
-goog.inherits(proto.pb.Output, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Output.displayName = 'proto.pb.Output';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.ClaimMeta = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.ClaimMeta, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.ClaimMeta.displayName = 'proto.pb.ClaimMeta';
-}
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.pb.Error = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.pb.Error, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  /**
-   * @public
-   * @override
-   */
-  proto.pb.Error.displayName = 'proto.pb.Error';
-}
-
-/**
- * List of repeated fields within this message type.
- * @private {!Array<number>}
- * @const
- */
-proto.pb.Outputs.repeatedFields_ = [1,2];
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.Outputs.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.Outputs.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.Outputs} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Outputs.toObject = function(includeInstance, msg) {
-  var obj = {
-    txosList: jspb.Message.toObjectList(msg.getTxosList(),
-    proto.pb.Output.toObject, includeInstance),
-    extraTxosList: jspb.Message.toObjectList(msg.getExtraTxosList(),
-    proto.pb.Output.toObject, includeInstance),
-    total: jspb.Message.getFieldWithDefault(msg, 3, 0),
-    offset: jspb.Message.getFieldWithDefault(msg, 4, 0)
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.Outputs}
- */
-proto.pb.Outputs.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.Outputs;
-  return proto.pb.Outputs.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.Outputs} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.Outputs}
- */
-proto.pb.Outputs.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = new proto.pb.Output;
-      reader.readMessage(value,proto.pb.Output.deserializeBinaryFromReader);
-      msg.addTxos(value);
-      break;
-    case 2:
-      var value = new proto.pb.Output;
-      reader.readMessage(value,proto.pb.Output.deserializeBinaryFromReader);
-      msg.addExtraTxos(value);
-      break;
-    case 3:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setTotal(value);
-      break;
-    case 4:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setOffset(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.Outputs.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.Outputs.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.Outputs} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Outputs.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getTxosList();
-  if (f.length > 0) {
-    writer.writeRepeatedMessage(
-      1,
-      f,
-      proto.pb.Output.serializeBinaryToWriter
-    );
-  }
-  f = message.getExtraTxosList();
-  if (f.length > 0) {
-    writer.writeRepeatedMessage(
-      2,
-      f,
-      proto.pb.Output.serializeBinaryToWriter
-    );
-  }
-  f = message.getTotal();
-  if (f !== 0) {
-    writer.writeUint32(
-      3,
-      f
-    );
-  }
-  f = message.getOffset();
-  if (f !== 0) {
-    writer.writeUint32(
-      4,
-      f
-    );
-  }
-};
-
-
-/**
- * repeated Output txos = 1;
- * @return {!Array<!proto.pb.Output>}
- */
-proto.pb.Outputs.prototype.getTxosList = function() {
-  return /** @type{!Array<!proto.pb.Output>} */ (
-    jspb.Message.getRepeatedWrapperField(this, proto.pb.Output, 1));
-};
-
-
-/** @param {!Array<!proto.pb.Output>} value */
-proto.pb.Outputs.prototype.setTxosList = function(value) {
-  jspb.Message.setRepeatedWrapperField(this, 1, value);
-};
-
-
-/**
- * @param {!proto.pb.Output=} opt_value
- * @param {number=} opt_index
- * @return {!proto.pb.Output}
- */
-proto.pb.Outputs.prototype.addTxos = function(opt_value, opt_index) {
-  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.pb.Output, opt_index);
-};
-
-
-/**
- * Clears the list making it empty but non-null.
- */
-proto.pb.Outputs.prototype.clearTxosList = function() {
-  this.setTxosList([]);
-};
-
-
-/**
- * repeated Output extra_txos = 2;
- * @return {!Array<!proto.pb.Output>}
- */
-proto.pb.Outputs.prototype.getExtraTxosList = function() {
-  return /** @type{!Array<!proto.pb.Output>} */ (
-    jspb.Message.getRepeatedWrapperField(this, proto.pb.Output, 2));
-};
-
-
-/** @param {!Array<!proto.pb.Output>} value */
-proto.pb.Outputs.prototype.setExtraTxosList = function(value) {
-  jspb.Message.setRepeatedWrapperField(this, 2, value);
-};
-
-
-/**
- * @param {!proto.pb.Output=} opt_value
- * @param {number=} opt_index
- * @return {!proto.pb.Output}
- */
-proto.pb.Outputs.prototype.addExtraTxos = function(opt_value, opt_index) {
-  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.pb.Output, opt_index);
-};
-
-
-/**
- * Clears the list making it empty but non-null.
- */
-proto.pb.Outputs.prototype.clearExtraTxosList = function() {
-  this.setExtraTxosList([]);
-};
-
-
-/**
- * optional uint32 total = 3;
- * @return {number}
- */
-proto.pb.Outputs.prototype.getTotal = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.Outputs.prototype.setTotal = function(value) {
-  jspb.Message.setProto3IntField(this, 3, value);
-};
-
-
-/**
- * optional uint32 offset = 4;
- * @return {number}
- */
-proto.pb.Outputs.prototype.getOffset = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.Outputs.prototype.setOffset = function(value) {
-  jspb.Message.setProto3IntField(this, 4, value);
-};
-
-
-
-/**
- * Oneof group definitions for this message. Each group defines the field
- * numbers belonging to that group. When of these fields' value is set, all
- * other fields in the group are cleared. During deserialization, if multiple
- * fields are encountered for a group, only the last value seen will be kept.
- * @private {!Array<!Array<number>>}
- * @const
- */
-proto.pb.Output.oneofGroups_ = [[7,15]];
-
-/**
- * @enum {number}
- */
-proto.pb.Output.MetaCase = {
-  META_NOT_SET: 0,
-  CLAIM: 7,
-  ERROR: 15
-};
-
-/**
- * @return {proto.pb.Output.MetaCase}
- */
-proto.pb.Output.prototype.getMetaCase = function() {
-  return /** @type {proto.pb.Output.MetaCase} */(jspb.Message.computeOneofCase(this, proto.pb.Output.oneofGroups_[0]));
-};
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.Output.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.Output.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.Output} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Output.toObject = function(includeInstance, msg) {
-  var obj = {
-    txHash: msg.getTxHash_asB64(),
-    nout: jspb.Message.getFieldWithDefault(msg, 2, 0),
-    height: jspb.Message.getFieldWithDefault(msg, 3, 0),
-    claim: (f = msg.getClaim()) && proto.pb.ClaimMeta.toObject(includeInstance, f),
-    error: (f = msg.getError()) && proto.pb.Error.toObject(includeInstance, f)
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.Output}
- */
-proto.pb.Output.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.Output;
-  return proto.pb.Output.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.Output} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.Output}
- */
-proto.pb.Output.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {!Uint8Array} */ (reader.readBytes());
-      msg.setTxHash(value);
-      break;
-    case 2:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setNout(value);
-      break;
-    case 3:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setHeight(value);
-      break;
-    case 7:
-      var value = new proto.pb.ClaimMeta;
-      reader.readMessage(value,proto.pb.ClaimMeta.deserializeBinaryFromReader);
-      msg.setClaim(value);
-      break;
-    case 15:
-      var value = new proto.pb.Error;
-      reader.readMessage(value,proto.pb.Error.deserializeBinaryFromReader);
-      msg.setError(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.Output.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.Output.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.Output} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Output.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getTxHash_asU8();
-  if (f.length > 0) {
-    writer.writeBytes(
-      1,
-      f
-    );
-  }
-  f = message.getNout();
-  if (f !== 0) {
-    writer.writeUint32(
-      2,
-      f
-    );
-  }
-  f = message.getHeight();
-  if (f !== 0) {
-    writer.writeUint32(
-      3,
-      f
-    );
-  }
-  f = message.getClaim();
-  if (f != null) {
-    writer.writeMessage(
-      7,
-      f,
-      proto.pb.ClaimMeta.serializeBinaryToWriter
-    );
-  }
-  f = message.getError();
-  if (f != null) {
-    writer.writeMessage(
-      15,
-      f,
-      proto.pb.Error.serializeBinaryToWriter
-    );
-  }
-};
-
-
-/**
- * optional bytes tx_hash = 1;
- * @return {!(string|Uint8Array)}
- */
-proto.pb.Output.prototype.getTxHash = function() {
-  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
-};
-
-
-/**
- * optional bytes tx_hash = 1;
- * This is a type-conversion wrapper around `getTxHash()`
- * @return {string}
- */
-proto.pb.Output.prototype.getTxHash_asB64 = function() {
-  return /** @type {string} */ (jspb.Message.bytesAsB64(
-      this.getTxHash()));
-};
-
-
-/**
- * optional bytes tx_hash = 1;
- * Note that Uint8Array is not supported on all browsers.
- * @see http://caniuse.com/Uint8Array
- * This is a type-conversion wrapper around `getTxHash()`
- * @return {!Uint8Array}
- */
-proto.pb.Output.prototype.getTxHash_asU8 = function() {
-  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
-      this.getTxHash()));
-};
-
-
-/** @param {!(string|Uint8Array)} value */
-proto.pb.Output.prototype.setTxHash = function(value) {
-  jspb.Message.setProto3BytesField(this, 1, value);
-};
-
-
-/**
- * optional uint32 nout = 2;
- * @return {number}
- */
-proto.pb.Output.prototype.getNout = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.Output.prototype.setNout = function(value) {
-  jspb.Message.setProto3IntField(this, 2, value);
-};
-
-
-/**
- * optional uint32 height = 3;
- * @return {number}
- */
-proto.pb.Output.prototype.getHeight = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.Output.prototype.setHeight = function(value) {
-  jspb.Message.setProto3IntField(this, 3, value);
-};
-
-
-/**
- * optional ClaimMeta claim = 7;
- * @return {?proto.pb.ClaimMeta}
- */
-proto.pb.Output.prototype.getClaim = function() {
-  return /** @type{?proto.pb.ClaimMeta} */ (
-    jspb.Message.getWrapperField(this, proto.pb.ClaimMeta, 7));
-};
-
-
-/** @param {?proto.pb.ClaimMeta|undefined} value */
-proto.pb.Output.prototype.setClaim = function(value) {
-  jspb.Message.setOneofWrapperField(this, 7, proto.pb.Output.oneofGroups_[0], value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Output.prototype.clearClaim = function() {
-  this.setClaim(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Output.prototype.hasClaim = function() {
-  return jspb.Message.getField(this, 7) != null;
-};
-
-
-/**
- * optional Error error = 15;
- * @return {?proto.pb.Error}
- */
-proto.pb.Output.prototype.getError = function() {
-  return /** @type{?proto.pb.Error} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Error, 15));
-};
-
-
-/** @param {?proto.pb.Error|undefined} value */
-proto.pb.Output.prototype.setError = function(value) {
-  jspb.Message.setOneofWrapperField(this, 15, proto.pb.Output.oneofGroups_[0], value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.Output.prototype.clearError = function() {
-  this.setError(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.Output.prototype.hasError = function() {
-  return jspb.Message.getField(this, 15) != null;
-};
-
-
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.ClaimMeta.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.ClaimMeta.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.ClaimMeta} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.ClaimMeta.toObject = function(includeInstance, msg) {
-  var obj = {
-    channel: (f = msg.getChannel()) && proto.pb.Output.toObject(includeInstance, f),
-    repost: (f = msg.getRepost()) && proto.pb.Output.toObject(includeInstance, f),
-    shortUrl: jspb.Message.getFieldWithDefault(msg, 3, ""),
-    canonicalUrl: jspb.Message.getFieldWithDefault(msg, 4, ""),
-    isControlling: jspb.Message.getFieldWithDefault(msg, 5, false),
-    takeOverHeight: jspb.Message.getFieldWithDefault(msg, 6, 0),
-    creationHeight: jspb.Message.getFieldWithDefault(msg, 7, 0),
-    activationHeight: jspb.Message.getFieldWithDefault(msg, 8, 0),
-    expirationHeight: jspb.Message.getFieldWithDefault(msg, 9, 0),
-    claimsInChannel: jspb.Message.getFieldWithDefault(msg, 10, 0),
-    reposted: jspb.Message.getFieldWithDefault(msg, 11, 0),
-    effectiveAmount: jspb.Message.getFieldWithDefault(msg, 20, 0),
-    supportAmount: jspb.Message.getFieldWithDefault(msg, 21, 0),
-    trendingGroup: jspb.Message.getFieldWithDefault(msg, 22, 0),
-    trendingMixed: +jspb.Message.getFieldWithDefault(msg, 23, 0.0),
-    trendingLocal: +jspb.Message.getFieldWithDefault(msg, 24, 0.0),
-    trendingGlobal: +jspb.Message.getFieldWithDefault(msg, 25, 0.0)
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.ClaimMeta}
- */
-proto.pb.ClaimMeta.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.ClaimMeta;
-  return proto.pb.ClaimMeta.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.ClaimMeta} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.ClaimMeta}
- */
-proto.pb.ClaimMeta.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = new proto.pb.Output;
-      reader.readMessage(value,proto.pb.Output.deserializeBinaryFromReader);
-      msg.setChannel(value);
-      break;
-    case 2:
-      var value = new proto.pb.Output;
-      reader.readMessage(value,proto.pb.Output.deserializeBinaryFromReader);
-      msg.setRepost(value);
-      break;
-    case 3:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setShortUrl(value);
-      break;
-    case 4:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setCanonicalUrl(value);
-      break;
-    case 5:
-      var value = /** @type {boolean} */ (reader.readBool());
-      msg.setIsControlling(value);
-      break;
-    case 6:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setTakeOverHeight(value);
-      break;
-    case 7:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setCreationHeight(value);
-      break;
-    case 8:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setActivationHeight(value);
-      break;
-    case 9:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setExpirationHeight(value);
-      break;
-    case 10:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setClaimsInChannel(value);
-      break;
-    case 11:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setReposted(value);
-      break;
-    case 20:
-      var value = /** @type {number} */ (reader.readUint64());
-      msg.setEffectiveAmount(value);
-      break;
-    case 21:
-      var value = /** @type {number} */ (reader.readUint64());
-      msg.setSupportAmount(value);
-      break;
-    case 22:
-      var value = /** @type {number} */ (reader.readUint32());
-      msg.setTrendingGroup(value);
-      break;
-    case 23:
-      var value = /** @type {number} */ (reader.readFloat());
-      msg.setTrendingMixed(value);
-      break;
-    case 24:
-      var value = /** @type {number} */ (reader.readFloat());
-      msg.setTrendingLocal(value);
-      break;
-    case 25:
-      var value = /** @type {number} */ (reader.readFloat());
-      msg.setTrendingGlobal(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.ClaimMeta.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.ClaimMeta.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.ClaimMeta} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.ClaimMeta.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getChannel();
-  if (f != null) {
-    writer.writeMessage(
-      1,
-      f,
-      proto.pb.Output.serializeBinaryToWriter
-    );
-  }
-  f = message.getRepost();
-  if (f != null) {
-    writer.writeMessage(
-      2,
-      f,
-      proto.pb.Output.serializeBinaryToWriter
-    );
-  }
-  f = message.getShortUrl();
-  if (f.length > 0) {
-    writer.writeString(
-      3,
-      f
-    );
-  }
-  f = message.getCanonicalUrl();
-  if (f.length > 0) {
-    writer.writeString(
-      4,
-      f
-    );
-  }
-  f = message.getIsControlling();
-  if (f) {
-    writer.writeBool(
-      5,
-      f
-    );
-  }
-  f = message.getTakeOverHeight();
-  if (f !== 0) {
-    writer.writeUint32(
-      6,
-      f
-    );
-  }
-  f = message.getCreationHeight();
-  if (f !== 0) {
-    writer.writeUint32(
-      7,
-      f
-    );
-  }
-  f = message.getActivationHeight();
-  if (f !== 0) {
-    writer.writeUint32(
-      8,
-      f
-    );
-  }
-  f = message.getExpirationHeight();
-  if (f !== 0) {
-    writer.writeUint32(
-      9,
-      f
-    );
-  }
-  f = message.getClaimsInChannel();
-  if (f !== 0) {
-    writer.writeUint32(
-      10,
-      f
-    );
-  }
-  f = message.getReposted();
-  if (f !== 0) {
-    writer.writeUint32(
-      11,
-      f
-    );
-  }
-  f = message.getEffectiveAmount();
-  if (f !== 0) {
-    writer.writeUint64(
-      20,
-      f
-    );
-  }
-  f = message.getSupportAmount();
-  if (f !== 0) {
-    writer.writeUint64(
-      21,
-      f
-    );
-  }
-  f = message.getTrendingGroup();
-  if (f !== 0) {
-    writer.writeUint32(
-      22,
-      f
-    );
-  }
-  f = message.getTrendingMixed();
-  if (f !== 0.0) {
-    writer.writeFloat(
-      23,
-      f
-    );
-  }
-  f = message.getTrendingLocal();
-  if (f !== 0.0) {
-    writer.writeFloat(
-      24,
-      f
-    );
-  }
-  f = message.getTrendingGlobal();
-  if (f !== 0.0) {
-    writer.writeFloat(
-      25,
-      f
-    );
-  }
-};
-
-
-/**
- * optional Output channel = 1;
- * @return {?proto.pb.Output}
- */
-proto.pb.ClaimMeta.prototype.getChannel = function() {
-  return /** @type{?proto.pb.Output} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Output, 1));
-};
-
-
-/** @param {?proto.pb.Output|undefined} value */
-proto.pb.ClaimMeta.prototype.setChannel = function(value) {
-  jspb.Message.setWrapperField(this, 1, value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.ClaimMeta.prototype.clearChannel = function() {
-  this.setChannel(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.ClaimMeta.prototype.hasChannel = function() {
-  return jspb.Message.getField(this, 1) != null;
-};
-
-
-/**
- * optional Output repost = 2;
- * @return {?proto.pb.Output}
- */
-proto.pb.ClaimMeta.prototype.getRepost = function() {
-  return /** @type{?proto.pb.Output} */ (
-    jspb.Message.getWrapperField(this, proto.pb.Output, 2));
-};
-
-
-/** @param {?proto.pb.Output|undefined} value */
-proto.pb.ClaimMeta.prototype.setRepost = function(value) {
-  jspb.Message.setWrapperField(this, 2, value);
-};
-
-
-/**
- * Clears the message field making it undefined.
- */
-proto.pb.ClaimMeta.prototype.clearRepost = function() {
-  this.setRepost(undefined);
-};
-
-
-/**
- * Returns whether this field is set.
- * @return {boolean}
- */
-proto.pb.ClaimMeta.prototype.hasRepost = function() {
-  return jspb.Message.getField(this, 2) != null;
-};
-
-
-/**
- * optional string short_url = 3;
- * @return {string}
- */
-proto.pb.ClaimMeta.prototype.getShortUrl = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.ClaimMeta.prototype.setShortUrl = function(value) {
-  jspb.Message.setProto3StringField(this, 3, value);
-};
-
-
-/**
- * optional string canonical_url = 4;
- * @return {string}
- */
-proto.pb.ClaimMeta.prototype.getCanonicalUrl = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.ClaimMeta.prototype.setCanonicalUrl = function(value) {
-  jspb.Message.setProto3StringField(this, 4, value);
-};
-
-
-/**
- * optional bool is_controlling = 5;
- * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
- * You should avoid comparisons like {@code val === true/false} in those cases.
- * @return {boolean}
- */
-proto.pb.ClaimMeta.prototype.getIsControlling = function() {
-  return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 5, false));
-};
-
-
-/** @param {boolean} value */
-proto.pb.ClaimMeta.prototype.setIsControlling = function(value) {
-  jspb.Message.setProto3BooleanField(this, 5, value);
-};
-
-
-/**
- * optional uint32 take_over_height = 6;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getTakeOverHeight = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setTakeOverHeight = function(value) {
-  jspb.Message.setProto3IntField(this, 6, value);
-};
-
-
-/**
- * optional uint32 creation_height = 7;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getCreationHeight = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setCreationHeight = function(value) {
-  jspb.Message.setProto3IntField(this, 7, value);
-};
-
-
-/**
- * optional uint32 activation_height = 8;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getActivationHeight = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setActivationHeight = function(value) {
-  jspb.Message.setProto3IntField(this, 8, value);
-};
-
-
-/**
- * optional uint32 expiration_height = 9;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getExpirationHeight = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setExpirationHeight = function(value) {
-  jspb.Message.setProto3IntField(this, 9, value);
-};
-
-
-/**
- * optional uint32 claims_in_channel = 10;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getClaimsInChannel = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setClaimsInChannel = function(value) {
-  jspb.Message.setProto3IntField(this, 10, value);
-};
-
-
-/**
- * optional uint32 reposted = 11;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getReposted = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setReposted = function(value) {
-  jspb.Message.setProto3IntField(this, 11, value);
-};
-
-
-/**
- * optional uint64 effective_amount = 20;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getEffectiveAmount = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 20, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setEffectiveAmount = function(value) {
-  jspb.Message.setProto3IntField(this, 20, value);
-};
-
-
-/**
- * optional uint64 support_amount = 21;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getSupportAmount = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 21, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setSupportAmount = function(value) {
-  jspb.Message.setProto3IntField(this, 21, value);
-};
-
-
-/**
- * optional uint32 trending_group = 22;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getTrendingGroup = function() {
-  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 22, 0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setTrendingGroup = function(value) {
-  jspb.Message.setProto3IntField(this, 22, value);
-};
-
-
-/**
- * optional float trending_mixed = 23;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getTrendingMixed = function() {
-  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 23, 0.0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setTrendingMixed = function(value) {
-  jspb.Message.setProto3FloatField(this, 23, value);
-};
-
-
-/**
- * optional float trending_local = 24;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getTrendingLocal = function() {
-  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 24, 0.0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setTrendingLocal = function(value) {
-  jspb.Message.setProto3FloatField(this, 24, value);
-};
-
-
-/**
- * optional float trending_global = 25;
- * @return {number}
- */
-proto.pb.ClaimMeta.prototype.getTrendingGlobal = function() {
-  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 25, 0.0));
-};
-
-
-/** @param {number} value */
-proto.pb.ClaimMeta.prototype.setTrendingGlobal = function(value) {
-  jspb.Message.setProto3FloatField(this, 25, value);
-};
-
-
-
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.pb.Error.prototype.toObject = function(opt_includeInstance) {
-  return proto.pb.Error.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.pb.Error} msg The msg instance to transform.
- * @return {!Object}
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Error.toObject = function(includeInstance, msg) {
-  var obj = {
-    code: jspb.Message.getFieldWithDefault(msg, 1, 0),
-    text: jspb.Message.getFieldWithDefault(msg, 2, "")
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg;
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.pb.Error}
- */
-proto.pb.Error.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.pb.Error;
-  return proto.pb.Error.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.pb.Error} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.pb.Error}
- */
-proto.pb.Error.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {!proto.pb.Error.Code} */ (reader.readEnum());
-      msg.setCode(value);
-      break;
-    case 2:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setText(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.pb.Error.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  proto.pb.Error.serializeBinaryToWriter(this, writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the given message to binary data (in protobuf wire
- * format), writing to the given BinaryWriter.
- * @param {!proto.pb.Error} message
- * @param {!jspb.BinaryWriter} writer
- * @suppress {unusedLocalVariables} f is only used for nested messages
- */
-proto.pb.Error.serializeBinaryToWriter = function(message, writer) {
-  var f = undefined;
-  f = message.getCode();
-  if (f !== 0.0) {
-    writer.writeEnum(
-      1,
-      f
-    );
-  }
-  f = message.getText();
-  if (f.length > 0) {
-    writer.writeString(
-      2,
-      f
-    );
-  }
-};
-
-
-/**
- * @enum {number}
- */
-proto.pb.Error.Code = {
-  UNKNOWN_CODE: 0,
-  NOT_FOUND: 1,
-  INVALID: 2
-};
-
-/**
- * optional Code code = 1;
- * @return {!proto.pb.Error.Code}
- */
-proto.pb.Error.prototype.getCode = function() {
-  return /** @type {!proto.pb.Error.Code} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
-};
-
-
-/** @param {!proto.pb.Error.Code} value */
-proto.pb.Error.prototype.setCode = function(value) {
-  jspb.Message.setProto3EnumField(this, 1, value);
-};
-
-
-/**
- * optional string text = 2;
- * @return {string}
- */
-proto.pb.Error.prototype.getText = function() {
-  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
-};
-
-
-/** @param {string} value */
-proto.pb.Error.prototype.setText = function(value) {
-  jspb.Message.setProto3StringField(this, 2, value);
-};
-
-
-goog.object.extend(exports, proto.pb);
diff --git a/v2/proto/claim.proto b/v2/proto/claim.proto
index cccb960..118776e 100644
--- a/v2/proto/claim.proto
+++ b/v2/proto/claim.proto
@@ -6,7 +6,7 @@ message Claim {
     oneof type {
         Stream stream = 1;
         Channel channel = 2;
-        ClaimList collection = 3;
+        ClaimList claim_list = 3;
         ClaimReference repost = 4;
     }
     string title = 8;
@@ -25,19 +25,18 @@ message Stream {
     int64 release_time = 5; // seconds since UNIX epoch
     Fee fee = 6;
     oneof type {
-        Image image = 10;
-        Video video = 11;
-        Audio audio = 12;
-        Software software = 13;
+        Image image = 16;
+        Video video = 17;
+        Audio audio = 18;
+        Software software = 19;
     }
 }
 
 message Channel {
     bytes public_key = 1;
-    string email = 2;
-    string website_url = 3;
+    string contact_email = 2;
+    string homepage_url = 3;
     Source cover = 4;
-    ClaimList featured = 5;
 }
 
 message ClaimReference {
@@ -46,7 +45,8 @@ message ClaimReference {
 
 message ClaimList {
     enum ListType {
-        COLLECTION = 0; // play lists, etc
+        UNKNOWN_LIST_TYPE = 0;
+        COLLECTION = 1; // play lists, etc
         DERIVATION = 2; // movie in multiple languages, software for different OSes
     }
     ListType list_type = 1;
@@ -54,14 +54,14 @@ message ClaimList {
 }
 
 message Source {
-    bytes hash = 1; // SHA-384 hash of the entire unencrypted file
+    bytes hash = 1;
     string name = 2;
     uint64 size = 3;
     string media_type = 4;
 
     string url = 5;
-    bytes sd_hash = 6; // SHA-384 hash of the streams manifest blob
-    bytes bt_infohash = 7; // 20-byte SHA1 hash used to reference a torrent file
+    bytes sd_hash = 6;
+    //Torrent bittorrent = 7;
 }
 
 message Fee {
@@ -84,8 +84,7 @@ message Image {
 message Video {
     uint32 width = 1;
     uint32 height = 2;
-    uint32 duration = 3;
-    Audio audio = 15;
+    Audio audio = 3;
 }
 
 message Audio {
@@ -764,286 +763,5 @@ message Location {
         YE = 247;
         ZM = 248;
         ZW = 249;
-        // UN M.49 Geographic Regions
-        R001 = 250; // World
-        R002 = 251; // Africa
-        R015 = 252; // Northern Africa
-        R012 = 253; // Algeria  DZA
-        R818 = 254; // Egypt  EGY
-        R434 = 255; // Libya  LBY
-        R504 = 256; // Morocco  MAR
-        R729 = 257; // Sudan  SDN LDC
-        R788 = 258; // Tunisia  TUN
-        R732 = 259; // Western Sahara   ESH
-        R202 = 260; // Sub-Saharan Africa
-        R014 = 261; // Eastern Africa
-        R086 = 262; // British Indian Ocean Territory   IOT
-        R108 = 263; // Burundi  BDI LDC LLDC
-        R174 = 264; // Comoros  COM LDC SIDS
-        R262 = 265; // Djibouti   DJI LDC
-        R232 = 266; // Eritrea  ERI LDC
-        R231 = 267; // Ethiopia   ETH LDC LLDC
-        R260 = 268; // French Southern Territories  ATF
-        R404 = 269; // Kenya  KEN
-        R450 = 270; // Madagascar   MDG LDC
-        R454 = 271; // Malawi   MWI LDC LLDC
-        R480 = 272; // Mauritius  MUS SIDS
-        R175 = 273; // Mayotte  MYT
-        R508 = 274; // Mozambique   MOZ LDC
-        R638 = 275; // Réunion  REU
-        R646 = 276; // Rwanda   RWA LDC LLDC
-        R690 = 277; // Seychelles   SYC SIDS
-        R706 = 278; // Somalia  SOM LDC
-        R728 = 279; // South Sudan  SSD LDC LLDC
-        R800 = 280; // Uganda   UGA LDC LLDC
-        R834 = 281; // United Republic of Tanzania  TZA LDC
-        R894 = 282; // Zambia   ZMB LDC LLDC
-        R716 = 283; // Zimbabwe   ZWE LLDC
-        R017 = 284; // Middle Africa
-        R024 = 285; // Angola   AGO LDC
-        R120 = 286; // Cameroon   CMR
-        R140 = 287; // Central African Republic   CAF LDC LLDC
-        R148 = 288; // Chad   TCD LDC LLDC
-        R178 = 289; // Congo  COG
-        R180 = 290; // Democratic Republic of the Congo   COD LDC
-        R226 = 291; // Equatorial Guinea  GNQ
-        R266 = 292; // Gabon  GAB
-        R678 = 293; // Sao Tome and Principe  STP LDC SIDS
-        R018 = 294; // Southern Africa
-        R072 = 295; // Botswana   BWA LLDC
-        R748 = 296; // Eswatini   SWZ LLDC
-        R426 = 297; // Lesotho  LSO LDC LLDC
-        R516 = 298; // Namibia  NAM
-        R710 = 299; // South Africa   ZAF
-        R011 = 300; // Western Africa
-        R204 = 301; // Benin  BEN LDC
-        R854 = 302; // Burkina Faso   BFA LDC LLDC
-        R132 = 303; // Cabo Verde   CPV SIDS
-        R384 = 304; // Côte d’Ivoire  CIV
-        R270 = 305; // Gambia   GMB LDC
-        R288 = 306; // Ghana  GHA
-        R324 = 307; // Guinea   GIN LDC
-        R624 = 308; // Guinea-Bissau  GNB LDC SIDS
-        R430 = 309; // Liberia  LBR LDC
-        R466 = 310; // Mali   MLI LDC LLDC
-        R478 = 311; // Mauritania   MRT LDC
-        R562 = 312; // Niger  NER LDC LLDC
-        R566 = 313; // Nigeria  NGA
-        R654 = 314; // Saint Helena   SHN
-        R686 = 315; // Senegal  SEN LDC
-        R694 = 316; // Sierra Leone   SLE LDC
-        R768 = 317; // Togo   TGO LDC
-        R019 = 318; // Americas
-        R419 = 319; // Latin America and the Caribbean
-        R029 = 320; // Caribbean
-        R660 = 321; // Anguilla   AIA SIDS
-        R028 = 322; // Antigua and Barbuda  ATG SIDS
-        R533 = 323; // Aruba  ABW SIDS
-        R044 = 324; // Bahamas  BHS SIDS
-        R052 = 325; // Barbados   BRB SIDS
-        R535 = 326; // Bonaire, Sint Eustatius and Saba   BES SIDS
-        R092 = 327; // British Virgin Islands   VGB SIDS
-        R136 = 328; // Cayman Islands   CYM
-        R192 = 329; // Cuba   CUB SIDS
-        R531 = 330; // Curaçao  CUW SIDS
-        R212 = 331; // Dominica   DMA SIDS
-        R214 = 332; // Dominican Republic   DOM SIDS
-        R308 = 333; // Grenada  GRD SIDS
-        R312 = 334; // Guadeloupe   GLP
-        R332 = 335; // Haiti  HTI LDC SIDS
-        R388 = 336; // Jamaica  JAM SIDS
-        R474 = 337; // Martinique   MTQ
-        R500 = 338; // Montserrat   MSR SIDS
-        R630 = 339; // Puerto Rico  PRI SIDS
-        R652 = 340; // Saint Barthélemy   BLM
-        R659 = 341; // Saint Kitts and Nevis  KNA SIDS
-        R662 = 342; // Saint Lucia  LCA SIDS
-        R663 = 343; // Saint Martin (French Part)   MAF
-        R670 = 344; // Saint Vincent and the Grenadines   VCT SIDS
-        R534 = 345; // Sint Maarten (Dutch part)  SXM SIDS
-        R780 = 346; // Trinidad and Tobago  TTO SIDS
-        R796 = 347; // Turks and Caicos Islands   TCA
-        R850 = 348; // United States Virgin Islands   VIR SIDS
-        R013 = 349; // Central America
-        R084 = 350; // Belize   BLZ SIDS
-        R188 = 351; // Costa Rica   CRI
-        R222 = 352; // El Salvador  SLV
-        R320 = 353; // Guatemala  GTM
-        R340 = 354; // Honduras   HND
-        R484 = 355; // Mexico   MEX
-        R558 = 356; // Nicaragua  NIC
-        R591 = 357; // Panama   PAN
-        R005 = 358; // South America
-        R032 = 359; // Argentina  ARG
-        R068 = 360; // Bolivia (Plurinational State of)   BOL LLDC
-        R074 = 361; // Bouvet Island  BVT
-        R076 = 362; // Brazil   BRA
-        R152 = 363; // Chile  CHL
-        R170 = 364; // Colombia   COL
-        R218 = 365; // Ecuador  ECU
-        R238 = 366; // Falkland Islands (Malvinas)  FLK
-        R254 = 367; // French Guiana  GUF
-        R328 = 368; // Guyana   GUY SIDS
-        R600 = 369; // Paraguay   PRY LLDC
-        R604 = 370; // Peru   PER
-        R239 = 371; // South Georgia and the South Sandwich Islands   SGS
-        R740 = 372; // Suriname   SUR SIDS
-        R858 = 373; // Uruguay  URY
-        R862 = 374; // Venezuela (Bolivarian Republic of)   VEN
-        R021 = 375; // Northern America
-        R060 = 376; // Bermuda  BMU
-        R124 = 377; // Canada   CAN
-        R304 = 378; // Greenland  GRL
-        R666 = 379; // Saint Pierre and Miquelon  SPM
-        R840 = 380; // United States of America   USA
-        R010 = 381; // Antarctica   ATA
-        R142 = 382; // Asia
-        R143 = 383; // Central Asia
-        R398 = 384; // Kazakhstan   KAZ LLDC
-        R417 = 385; // Kyrgyzstan   KGZ LLDC
-        R762 = 386; // Tajikistan   TJK LLDC
-        R795 = 387; // Turkmenistan   TKM LLDC
-        R860 = 388; // Uzbekistan   UZB LLDC
-        R030 = 389; // Eastern Asia
-        R156 = 390; // China  CHN
-        R344 = 391; // China, Hong Kong Special Administrative Region   HKG
-        R446 = 392; // China, Macao Special Administrative Region   MAC
-        R408 = 393; // Democratic People's Republic of Korea  PRK
-        R392 = 394; // Japan  JPN
-        R496 = 395; // Mongolia   MNG LLDC
-        R410 = 396; // Republic of Korea  KOR
-        R035 = 397; // South-eastern Asia
-        R096 = 398; // Brunei Darussalam  BRN
-        R116 = 399; // Cambodia   KHM LDC
-        R360 = 400; // Indonesia  IDN
-        R418 = 401; // Lao People's Democratic Republic   LAO LDC LLDC
-        R458 = 402; // Malaysia   MYS
-        R104 = 403; // Myanmar  MMR LDC
-        R608 = 404; // Philippines  PHL
-        R702 = 405; // Singapore  SGP SIDS
-        R764 = 406; // Thailand   THA
-        R626 = 407; // Timor-Leste  TLS LDC SIDS
-        R704 = 408; // Viet Nam   VNM
-        R034 = 409; // Southern Asia
-        R004 = 410; // Afghanistan  AFG LDC LLDC
-        R050 = 411; // Bangladesh   BGD LDC
-        R064 = 412; // Bhutan   BTN LDC LLDC
-        R356 = 413; // India  IND
-        R364 = 414; // Iran (Islamic Republic of)   IRN
-        R462 = 415; // Maldives   MDV SIDS
-        R524 = 416; // Nepal  NPL LDC LLDC
-        R586 = 417; // Pakistan   PAK
-        R144 = 418; // Sri Lanka  LKA
-        R145 = 419; // Western Asia
-        R051 = 420; // Armenia  ARM LLDC
-        R031 = 421; // Azerbaijan   AZE LLDC
-        R048 = 422; // Bahrain  BHR
-        R196 = 423; // Cyprus   CYP
-        R268 = 424; // Georgia  GEO
-        R368 = 425; // Iraq   IRQ
-        R376 = 426; // Israel   ISR
-        R400 = 427; // Jordan   JOR
-        R414 = 428; // Kuwait   KWT
-        R422 = 429; // Lebanon  LBN
-        R512 = 430; // Oman   OMN
-        R634 = 431; // Qatar  QAT
-        R682 = 432; // Saudi Arabia   SAU
-        R275 = 433; // State of Palestine   PSE
-        R760 = 434; // Syrian Arab Republic   SYR
-        R792 = 435; // Turkey   TUR
-        R784 = 436; // United Arab Emirates   ARE
-        R887 = 437; // Yemen  YEM LDC
-        R150 = 438; // Europe
-        R151 = 439; // Eastern Europe
-        R112 = 440; // Belarus  BLR
-        R100 = 441; // Bulgaria   BGR
-        R203 = 442; // Czechia  CZE
-        R348 = 443; // Hungary  HUN
-        R616 = 444; // Poland   POL
-        R498 = 445; // Republic of Moldova  MDA LLDC
-        R642 = 446; // Romania  ROU
-        R643 = 447; // Russian Federation   RUS
-        R703 = 448; // Slovakia   SVK
-        R804 = 449; // Ukraine  UKR
-        R154 = 450; // Northern Europe
-        R248 = 451; // Ã…land Islands  ALA
-        R830 = 452; // Channel Islands
-        R831 = 453; // Guernsey   GGY
-        R832 = 454; // Jersey   JEY
-        R680 = 455; // Sark
-        R208 = 456; // Denmark  DNK
-        R233 = 457; // Estonia  EST
-        R234 = 458; // Faroe Islands  FRO
-        R246 = 459; // Finland  FIN
-        R352 = 460; // Iceland  ISL
-        R372 = 461; // Ireland  IRL
-        R833 = 462; // Isle of Man  IMN
-        R428 = 463; // Latvia   LVA
-        R440 = 464; // Lithuania  LTU
-        R578 = 465; // Norway   NOR
-        R744 = 466; // Svalbard and Jan Mayen Islands   SJM
-        R752 = 467; // Sweden   SWE
-        R826 = 468; // United Kingdom of Great Britain and Northern Ireland   GBR
-        R039 = 469; // Southern Europe
-        R008 = 470; // Albania  ALB
-        R020 = 471; // Andorra  AND
-        R070 = 472; // Bosnia and Herzegovina   BIH
-        R191 = 473; // Croatia  HRV
-        R292 = 474; // Gibraltar  GIB
-        R300 = 475; // Greece   GRC
-        R336 = 476; // Holy See   VAT
-        R380 = 477; // Italy  ITA
-        R470 = 478; // Malta  MLT
-        R499 = 479; // Montenegro   MNE
-        R807 = 480; // North Macedonia  MKD LLDC
-        R620 = 481; // Portugal   PRT
-        R674 = 482; // San Marino   SMR
-        R688 = 483; // Serbia   SRB
-        R705 = 484; // Slovenia   SVN
-        R724 = 485; // Spain  ESP
-        R155 = 486; // Western Europe
-        R040 = 487; // Austria  AUT
-        R056 = 488; // Belgium  BEL
-        R250 = 489; // France   FRA
-        R276 = 490; // Germany  DEU
-        R438 = 491; // Liechtenstein  LIE
-        R442 = 492; // Luxembourg   LUX
-        R492 = 493; // Monaco   MCO
-        R528 = 494; // Netherlands  NLD
-        R756 = 495; // Switzerland  CHE
-        R009 = 496; // Oceania
-        R053 = 497; // Australia and New Zealand
-        R036 = 498; // Australia  AUS
-        R162 = 499; // Christmas Island   CXR
-        R166 = 500; // Cocos (Keeling) Islands  CCK
-        R334 = 501; // Heard Island and McDonald Islands  HMD
-        R554 = 502; // New Zealand  NZL
-        R574 = 503; // Norfolk Island   NFK
-        R054 = 504; // Melanesia
-        R242 = 505; // Fiji   FJI SIDS
-        R540 = 506; // New Caledonia  NCL SIDS
-        R598 = 507; // Papua New Guinea   PNG SIDS
-        R090 = 508; // Solomon Islands  SLB LDC SIDS
-        R548 = 509; // Vanuatu  VUT LDC SIDS
-        R057 = 510; // Micronesia
-        R316 = 511; // Guam   GUM SIDS
-        R296 = 512; // Kiribati   KIR LDC SIDS
-        R584 = 513; // Marshall Islands   MHL SIDS
-        R583 = 514; // Micronesia (Federated States of)   FSM SIDS
-        R520 = 515; // Nauru  NRU SIDS
-        R580 = 516; // Northern Mariana Islands   MNP SIDS
-        R585 = 517; // Palau  PLW SIDS
-        R581 = 518; // United States Minor Outlying Islands   UMI
-        R061 = 519; // Polynesia
-        R016 = 520; // American Samoa   ASM SIDS
-        R184 = 521; // Cook Islands   COK SIDS
-        R258 = 522; // French Polynesia   PYF SIDS
-        R570 = 523; // Niue   NIU SIDS
-        R612 = 524; // Pitcairn   PCN
-        R882 = 525; // Samoa  WSM SIDS
-        R772 = 526; // Tokelau  TKL
-        R776 = 527; // Tonga  TON SIDS
-        R798 = 528; // Tuvalu   TUV LDC SIDS
-        R876 = 529; // Wallis and Futuna Islands  WLF
     }
 }
diff --git a/v2/proto/purchase.proto b/v2/proto/purchase.proto
deleted file mode 100644
index f52b531..0000000
--- a/v2/proto/purchase.proto
+++ /dev/null
@@ -1,7 +0,0 @@
-syntax = "proto3";
-
-package pb;
-
-message Purchase {
-    bytes claim_hash = 1;
-}
diff --git a/v2/proto/result.proto b/v2/proto/result.proto
deleted file mode 100644
index 8bc840a..0000000
--- a/v2/proto/result.proto
+++ /dev/null
@@ -1,60 +0,0 @@
-syntax = "proto3";
-
-package pb;
-
-message Outputs {
-  repeated Output txos = 1;
-  repeated Output extra_txos = 2;
-  uint32 total = 3;
-  uint32 offset = 4;
-  repeated Blocked blocked = 5;
-  uint32 blocked_total = 6;
-}
-
-message Output {
-  bytes tx_hash = 1;
-  uint32 nout = 2;
-  uint32 height = 3;
-  oneof meta {
-    ClaimMeta claim = 7;
-    Error error = 15;
-  }
-}
-
-message ClaimMeta {
-  Output channel = 1;
-  Output repost = 2;
-  string short_url = 3;
-  string canonical_url = 4;
-  bool is_controlling = 5;
-  uint32 take_over_height = 6;
-  uint32 creation_height = 7;
-  uint32 activation_height = 8;
-  uint32 expiration_height = 9;
-  uint32 claims_in_channel = 10;
-  uint32 reposted = 11;
-
-  uint64 effective_amount = 20;
-  uint64 support_amount = 21;
-  uint32 trending_group = 22;
-  float trending_mixed = 23;
-  float trending_local = 24;
-  float trending_global = 25;
-}
-
-message Error {
-  enum Code {
-    UNKNOWN_CODE = 0;
-    NOT_FOUND = 1;
-    INVALID = 2;
-    BLOCKED = 3;
-  }
-  Code code = 1;
-  string text = 2;
-  Blocked blocked = 3;
-}
-
-message Blocked {
-  uint32 count = 1;
-  Output channel = 2;
-}
diff --git a/v2/proto/support.proto b/v2/proto/support.proto
new file mode 100644
index 0000000..928d51a
--- /dev/null
+++ b/v2/proto/support.proto
@@ -0,0 +1,19 @@
+syntax = "proto3";
+
+package pb;
+
+message Support {
+    oneof type {
+        Edit edit = 1;
+        Comment comment = 2;
+   }
+}
+
+message Edit {
+    string key = 1;
+    string value = 2;
+}
+
+message Comment {
+    string body = 1;
+}
diff --git a/v2/python/claim_pb2.py b/v2/python/claim_pb2.py
index 7f894a6..d1673f4 100644
--- a/v2/python/claim_pb2.py
+++ b/v2/python/claim_pb2.py
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: claim.proto
 
@@ -8,6 +7,7 @@ from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
 from google.protobuf import reflection as _reflection
 from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
 # @@protoc_insertion_point(imports)
 
 _sym_db = _symbol_database.Default()
@@ -19,34 +19,11 @@ DESCRIPTOR = _descriptor.FileDescriptor(
   name='claim.proto',
   package='pb',
   syntax='proto3',
-  serialized_options=None,
-  serialized_pb=_b('\n\x0b\x63laim.proto\x12\x02pb\"\xab\x02\n\x05\x43laim\x12\x1c\n\x06stream\x18\x01 \x01(\x0b\x32\n.pb.StreamH\x00\x12\x1e\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x0b.pb.ChannelH\x00\x12#\n\ncollection\x18\x03 \x01(\x0b\x32\r.pb.ClaimListH\x00\x12$\n\x06repost\x18\x04 \x01(\x0b\x32\x12.pb.ClaimReferenceH\x00\x12\r\n\x05title\x18\x08 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\t \x01(\t\x12\x1d\n\tthumbnail\x18\n \x01(\x0b\x32\n.pb.Source\x12\x0c\n\x04tags\x18\x0b \x03(\t\x12\x1f\n\tlanguages\x18\x0c \x03(\x0b\x32\x0c.pb.Language\x12\x1f\n\tlocations\x18\r \x03(\x0b\x32\x0c.pb.LocationB\x06\n\x04type\"\x84\x02\n\x06Stream\x12\x1a\n\x06source\x18\x01 \x01(\x0b\x32\n.pb.Source\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12\x0f\n\x07license\x18\x03 \x01(\t\x12\x13\n\x0blicense_url\x18\x04 \x01(\t\x12\x14\n\x0crelease_time\x18\x05 \x01(\x03\x12\x14\n\x03\x66\x65\x65\x18\x06 \x01(\x0b\x32\x07.pb.Fee\x12\x1a\n\x05image\x18\n \x01(\x0b\x32\t.pb.ImageH\x00\x12\x1a\n\x05video\x18\x0b \x01(\x0b\x32\t.pb.VideoH\x00\x12\x1a\n\x05\x61udio\x18\x0c \x01(\x0b\x32\t.pb.AudioH\x00\x12 \n\x08software\x18\r \x01(\x0b\x32\x0c.pb.SoftwareH\x00\x42\x06\n\x04type\"}\n\x07\x43hannel\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x13\n\x0bwebsite_url\x18\x03 \x01(\t\x12\x19\n\x05\x63over\x18\x04 \x01(\x0b\x32\n.pb.Source\x12\x1f\n\x08\x66\x65\x61tured\x18\x05 \x01(\x0b\x32\r.pb.ClaimList\"$\n\x0e\x43laimReference\x12\x12\n\nclaim_hash\x18\x01 \x01(\x0c\"\x90\x01\n\tClaimList\x12)\n\tlist_type\x18\x01 \x01(\x0e\x32\x16.pb.ClaimList.ListType\x12,\n\x10\x63laim_references\x18\x02 \x03(\x0b\x32\x12.pb.ClaimReference\"*\n\x08ListType\x12\x0e\n\nCOLLECTION\x10\x00\x12\x0e\n\nDERIVATION\x10\x02\"y\n\x06Source\x12\x0c\n\x04hash\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x04\x12\x12\n\nmedia_type\x18\x04 \x01(\t\x12\x0b\n\x03url\x18\x05 \x01(\t\x12\x0f\n\x07sd_hash\x18\x06 \x01(\x0c\x12\x13\n\x0b\x62t_infohash\x18\x07 \x01(\x0c\"\x87\x01\n\x03\x46\x65\x65\x12\"\n\x08\x63urrency\x18\x01 \x01(\x0e\x32\x10.pb.Fee.Currency\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x03 \x01(\x04\";\n\x08\x43urrency\x12\x14\n\x10UNKNOWN_CURRENCY\x10\x00\x12\x07\n\x03LBC\x10\x01\x12\x07\n\x03\x42TC\x10\x02\x12\x07\n\x03USD\x10\x03\"&\n\x05Image\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\r\"R\n\x05Video\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\r\x12\x10\n\x08\x64uration\x18\x03 \x01(\r\x12\x18\n\x05\x61udio\x18\x0f \x01(\x0b\x32\t.pb.Audio\"\x19\n\x05\x41udio\x12\x10\n\x08\x64uration\x18\x01 \x01(\r\"l\n\x08Software\x12\n\n\x02os\x18\x01 \x01(\t\"T\n\x02OS\x12\x0e\n\nUNKNOWN_OS\x10\x00\x12\x07\n\x03\x41NY\x10\x01\x12\t\n\x05LINUX\x10\x02\x12\x0b\n\x07WINDOWS\x10\x03\x12\x07\n\x03MAC\x10\x04\x12\x0b\n\x07\x41NDROID\x10\x05\x12\x07\n\x03IOS\x10\x06\"\xc7\x1d\n\x08Language\x12\'\n\x08language\x18\x01 \x01(\x0e\x32\x15.pb.Language.Language\x12#\n\x06script\x18\x02 \x01(\x0e\x32\x13.pb.Language.Script\x12$\n\x06region\x18\x03 \x01(\x0e\x32\x14.pb.Location.Country\"\x99\x0c\n\x08Language\x12\x14\n\x10UNKNOWN_LANGUAGE\x10\x00\x12\x06\n\x02\x65n\x10\x01\x12\x06\n\x02\x61\x61\x10\x02\x12\x06\n\x02\x61\x62\x10\x03\x12\x06\n\x02\x61\x65\x10\x04\x12\x06\n\x02\x61\x66\x10\x05\x12\x06\n\x02\x61k\x10\x06\x12\x06\n\x02\x61m\x10\x07\x12\x06\n\x02\x61n\x10\x08\x12\x06\n\x02\x61r\x10\t\x12\x06\n\x02\x61s\x10\n\x12\x06\n\x02\x61v\x10\x0b\x12\x06\n\x02\x61y\x10\x0c\x12\x06\n\x02\x61z\x10\r\x12\x06\n\x02\x62\x61\x10\x0e\x12\x06\n\x02\x62\x65\x10\x0f\x12\x06\n\x02\x62g\x10\x10\x12\x06\n\x02\x62h\x10\x11\x12\x06\n\x02\x62i\x10\x12\x12\x06\n\x02\x62m\x10\x13\x12\x06\n\x02\x62n\x10\x14\x12\x06\n\x02\x62o\x10\x15\x12\x06\n\x02\x62r\x10\x16\x12\x06\n\x02\x62s\x10\x17\x12\x06\n\x02\x63\x61\x10\x18\x12\x06\n\x02\x63\x65\x10\x19\x12\x06\n\x02\x63h\x10\x1a\x12\x06\n\x02\x63o\x10\x1b\x12\x06\n\x02\x63r\x10\x1c\x12\x06\n\x02\x63s\x10\x1d\x12\x06\n\x02\x63u\x10\x1e\x12\x06\n\x02\x63v\x10\x1f\x12\x06\n\x02\x63y\x10 \x12\x06\n\x02\x64\x61\x10!\x12\x06\n\x02\x64\x65\x10\"\x12\x06\n\x02\x64v\x10#\x12\x06\n\x02\x64z\x10$\x12\x06\n\x02\x65\x65\x10%\x12\x06\n\x02\x65l\x10&\x12\x06\n\x02\x65o\x10\'\x12\x06\n\x02\x65s\x10(\x12\x06\n\x02\x65t\x10)\x12\x06\n\x02\x65u\x10*\x12\x06\n\x02\x66\x61\x10+\x12\x06\n\x02\x66\x66\x10,\x12\x06\n\x02\x66i\x10-\x12\x06\n\x02\x66j\x10.\x12\x06\n\x02\x66o\x10/\x12\x06\n\x02\x66r\x10\x30\x12\x06\n\x02\x66y\x10\x31\x12\x06\n\x02ga\x10\x32\x12\x06\n\x02gd\x10\x33\x12\x06\n\x02gl\x10\x34\x12\x06\n\x02gn\x10\x35\x12\x06\n\x02gu\x10\x36\x12\x06\n\x02gv\x10\x37\x12\x06\n\x02ha\x10\x38\x12\x06\n\x02he\x10\x39\x12\x06\n\x02hi\x10:\x12\x06\n\x02ho\x10;\x12\x06\n\x02hr\x10<\x12\x06\n\x02ht\x10=\x12\x06\n\x02hu\x10>\x12\x06\n\x02hy\x10?\x12\x06\n\x02hz\x10@\x12\x06\n\x02ia\x10\x41\x12\x06\n\x02id\x10\x42\x12\x06\n\x02ie\x10\x43\x12\x06\n\x02ig\x10\x44\x12\x06\n\x02ii\x10\x45\x12\x06\n\x02ik\x10\x46\x12\x06\n\x02io\x10G\x12\x06\n\x02is\x10H\x12\x06\n\x02it\x10I\x12\x06\n\x02iu\x10J\x12\x06\n\x02ja\x10K\x12\x06\n\x02jv\x10L\x12\x06\n\x02ka\x10M\x12\x06\n\x02kg\x10N\x12\x06\n\x02ki\x10O\x12\x06\n\x02kj\x10P\x12\x06\n\x02kk\x10Q\x12\x06\n\x02kl\x10R\x12\x06\n\x02km\x10S\x12\x06\n\x02kn\x10T\x12\x06\n\x02ko\x10U\x12\x06\n\x02kr\x10V\x12\x06\n\x02ks\x10W\x12\x06\n\x02ku\x10X\x12\x06\n\x02kv\x10Y\x12\x06\n\x02kw\x10Z\x12\x06\n\x02ky\x10[\x12\x06\n\x02la\x10\\\x12\x06\n\x02lb\x10]\x12\x06\n\x02lg\x10^\x12\x06\n\x02li\x10_\x12\x06\n\x02ln\x10`\x12\x06\n\x02lo\x10\x61\x12\x06\n\x02lt\x10\x62\x12\x06\n\x02lu\x10\x63\x12\x06\n\x02lv\x10\x64\x12\x06\n\x02mg\x10\x65\x12\x06\n\x02mh\x10\x66\x12\x06\n\x02mi\x10g\x12\x06\n\x02mk\x10h\x12\x06\n\x02ml\x10i\x12\x06\n\x02mn\x10j\x12\x06\n\x02mr\x10k\x12\x06\n\x02ms\x10l\x12\x06\n\x02mt\x10m\x12\x06\n\x02my\x10n\x12\x06\n\x02na\x10o\x12\x06\n\x02nb\x10p\x12\x06\n\x02nd\x10q\x12\x06\n\x02ne\x10r\x12\x06\n\x02ng\x10s\x12\x06\n\x02nl\x10t\x12\x06\n\x02nn\x10u\x12\x06\n\x02no\x10v\x12\x06\n\x02nr\x10w\x12\x06\n\x02nv\x10x\x12\x06\n\x02ny\x10y\x12\x06\n\x02oc\x10z\x12\x06\n\x02oj\x10{\x12\x06\n\x02om\x10|\x12\x06\n\x02or\x10}\x12\x06\n\x02os\x10~\x12\x06\n\x02pa\x10\x7f\x12\x07\n\x02pi\x10\x80\x01\x12\x07\n\x02pl\x10\x81\x01\x12\x07\n\x02ps\x10\x82\x01\x12\x07\n\x02pt\x10\x83\x01\x12\x07\n\x02qu\x10\x84\x01\x12\x07\n\x02rm\x10\x85\x01\x12\x07\n\x02rn\x10\x86\x01\x12\x07\n\x02ro\x10\x87\x01\x12\x07\n\x02ru\x10\x88\x01\x12\x07\n\x02rw\x10\x89\x01\x12\x07\n\x02sa\x10\x8a\x01\x12\x07\n\x02sc\x10\x8b\x01\x12\x07\n\x02sd\x10\x8c\x01\x12\x07\n\x02se\x10\x8d\x01\x12\x07\n\x02sg\x10\x8e\x01\x12\x07\n\x02si\x10\x8f\x01\x12\x07\n\x02sk\x10\x90\x01\x12\x07\n\x02sl\x10\x91\x01\x12\x07\n\x02sm\x10\x92\x01\x12\x07\n\x02sn\x10\x93\x01\x12\x07\n\x02so\x10\x94\x01\x12\x07\n\x02sq\x10\x95\x01\x12\x07\n\x02sr\x10\x96\x01\x12\x07\n\x02ss\x10\x97\x01\x12\x07\n\x02st\x10\x98\x01\x12\x07\n\x02su\x10\x99\x01\x12\x07\n\x02sv\x10\x9a\x01\x12\x07\n\x02sw\x10\x9b\x01\x12\x07\n\x02ta\x10\x9c\x01\x12\x07\n\x02te\x10\x9d\x01\x12\x07\n\x02tg\x10\x9e\x01\x12\x07\n\x02th\x10\x9f\x01\x12\x07\n\x02ti\x10\xa0\x01\x12\x07\n\x02tk\x10\xa1\x01\x12\x07\n\x02tl\x10\xa2\x01\x12\x07\n\x02tn\x10\xa3\x01\x12\x07\n\x02to\x10\xa4\x01\x12\x07\n\x02tr\x10\xa5\x01\x12\x07\n\x02ts\x10\xa6\x01\x12\x07\n\x02tt\x10\xa7\x01\x12\x07\n\x02tw\x10\xa8\x01\x12\x07\n\x02ty\x10\xa9\x01\x12\x07\n\x02ug\x10\xaa\x01\x12\x07\n\x02uk\x10\xab\x01\x12\x07\n\x02ur\x10\xac\x01\x12\x07\n\x02uz\x10\xad\x01\x12\x07\n\x02ve\x10\xae\x01\x12\x07\n\x02vi\x10\xaf\x01\x12\x07\n\x02vo\x10\xb0\x01\x12\x07\n\x02wa\x10\xb1\x01\x12\x07\n\x02wo\x10\xb2\x01\x12\x07\n\x02xh\x10\xb3\x01\x12\x07\n\x02yi\x10\xb4\x01\x12\x07\n\x02yo\x10\xb5\x01\x12\x07\n\x02za\x10\xb6\x01\x12\x07\n\x02zh\x10\xb7\x01\x12\x07\n\x02zu\x10\xb8\x01\"\xaa\x10\n\x06Script\x12\x12\n\x0eUNKNOWN_SCRIPT\x10\x00\x12\x08\n\x04\x41\x64lm\x10\x01\x12\x08\n\x04\x41\x66\x61k\x10\x02\x12\x08\n\x04\x41ghb\x10\x03\x12\x08\n\x04\x41hom\x10\x04\x12\x08\n\x04\x41rab\x10\x05\x12\x08\n\x04\x41ran\x10\x06\x12\x08\n\x04\x41rmi\x10\x07\x12\x08\n\x04\x41rmn\x10\x08\x12\x08\n\x04\x41vst\x10\t\x12\x08\n\x04\x42\x61li\x10\n\x12\x08\n\x04\x42\x61mu\x10\x0b\x12\x08\n\x04\x42\x61ss\x10\x0c\x12\x08\n\x04\x42\x61tk\x10\r\x12\x08\n\x04\x42\x65ng\x10\x0e\x12\x08\n\x04\x42hks\x10\x0f\x12\x08\n\x04\x42lis\x10\x10\x12\x08\n\x04\x42opo\x10\x11\x12\x08\n\x04\x42rah\x10\x12\x12\x08\n\x04\x42rai\x10\x13\x12\x08\n\x04\x42ugi\x10\x14\x12\x08\n\x04\x42uhd\x10\x15\x12\x08\n\x04\x43\x61km\x10\x16\x12\x08\n\x04\x43\x61ns\x10\x17\x12\x08\n\x04\x43\x61ri\x10\x18\x12\x08\n\x04\x43ham\x10\x19\x12\x08\n\x04\x43her\x10\x1a\x12\x08\n\x04\x43irt\x10\x1b\x12\x08\n\x04\x43opt\x10\x1c\x12\x08\n\x04\x43pmn\x10\x1d\x12\x08\n\x04\x43prt\x10\x1e\x12\x08\n\x04\x43yrl\x10\x1f\x12\x08\n\x04\x43yrs\x10 \x12\x08\n\x04\x44\x65va\x10!\x12\x08\n\x04\x44ogr\x10\"\x12\x08\n\x04\x44srt\x10#\x12\x08\n\x04\x44upl\x10$\x12\x08\n\x04\x45gyd\x10%\x12\x08\n\x04\x45gyh\x10&\x12\x08\n\x04\x45gyp\x10\'\x12\x08\n\x04\x45lba\x10(\x12\x08\n\x04\x45lym\x10)\x12\x08\n\x04\x45thi\x10*\x12\x08\n\x04Geok\x10+\x12\x08\n\x04Geor\x10,\x12\x08\n\x04Glag\x10-\x12\x08\n\x04Gong\x10.\x12\x08\n\x04Gonm\x10/\x12\x08\n\x04Goth\x10\x30\x12\x08\n\x04Gran\x10\x31\x12\x08\n\x04Grek\x10\x32\x12\x08\n\x04Gujr\x10\x33\x12\x08\n\x04Guru\x10\x34\x12\x08\n\x04Hanb\x10\x35\x12\x08\n\x04Hang\x10\x36\x12\x08\n\x04Hani\x10\x37\x12\x08\n\x04Hano\x10\x38\x12\x08\n\x04Hans\x10\x39\x12\x08\n\x04Hant\x10:\x12\x08\n\x04Hatr\x10;\x12\x08\n\x04Hebr\x10<\x12\x08\n\x04Hira\x10=\x12\x08\n\x04Hluw\x10>\x12\x08\n\x04Hmng\x10?\x12\x08\n\x04Hmnp\x10@\x12\x08\n\x04Hrkt\x10\x41\x12\x08\n\x04Hung\x10\x42\x12\x08\n\x04Inds\x10\x43\x12\x08\n\x04Ital\x10\x44\x12\x08\n\x04Jamo\x10\x45\x12\x08\n\x04Java\x10\x46\x12\x08\n\x04Jpan\x10G\x12\x08\n\x04Jurc\x10H\x12\x08\n\x04Kali\x10I\x12\x08\n\x04Kana\x10J\x12\x08\n\x04Khar\x10K\x12\x08\n\x04Khmr\x10L\x12\x08\n\x04Khoj\x10M\x12\x08\n\x04Kitl\x10N\x12\x08\n\x04Kits\x10O\x12\x08\n\x04Knda\x10P\x12\x08\n\x04Kore\x10Q\x12\x08\n\x04Kpel\x10R\x12\x08\n\x04Kthi\x10S\x12\x08\n\x04Lana\x10T\x12\x08\n\x04Laoo\x10U\x12\x08\n\x04Latf\x10V\x12\x08\n\x04Latg\x10W\x12\x08\n\x04Latn\x10X\x12\x08\n\x04Leke\x10Y\x12\x08\n\x04Lepc\x10Z\x12\x08\n\x04Limb\x10[\x12\x08\n\x04Lina\x10\\\x12\x08\n\x04Linb\x10]\x12\x08\n\x04Lisu\x10^\x12\x08\n\x04Loma\x10_\x12\x08\n\x04Lyci\x10`\x12\x08\n\x04Lydi\x10\x61\x12\x08\n\x04Mahj\x10\x62\x12\x08\n\x04Maka\x10\x63\x12\x08\n\x04Mand\x10\x64\x12\x08\n\x04Mani\x10\x65\x12\x08\n\x04Marc\x10\x66\x12\x08\n\x04Maya\x10g\x12\x08\n\x04Medf\x10h\x12\x08\n\x04Mend\x10i\x12\x08\n\x04Merc\x10j\x12\x08\n\x04Mero\x10k\x12\x08\n\x04Mlym\x10l\x12\x08\n\x04Modi\x10m\x12\x08\n\x04Mong\x10n\x12\x08\n\x04Moon\x10o\x12\x08\n\x04Mroo\x10p\x12\x08\n\x04Mtei\x10q\x12\x08\n\x04Mult\x10r\x12\x08\n\x04Mymr\x10s\x12\x08\n\x04Nand\x10t\x12\x08\n\x04Narb\x10u\x12\x08\n\x04Nbat\x10v\x12\x08\n\x04Newa\x10w\x12\x08\n\x04Nkdb\x10x\x12\x08\n\x04Nkgb\x10y\x12\x08\n\x04Nkoo\x10z\x12\x08\n\x04Nshu\x10{\x12\x08\n\x04Ogam\x10|\x12\x08\n\x04Olck\x10}\x12\x08\n\x04Orkh\x10~\x12\x08\n\x04Orya\x10\x7f\x12\t\n\x04Osge\x10\x80\x01\x12\t\n\x04Osma\x10\x81\x01\x12\t\n\x04Palm\x10\x82\x01\x12\t\n\x04Pauc\x10\x83\x01\x12\t\n\x04Perm\x10\x84\x01\x12\t\n\x04Phag\x10\x85\x01\x12\t\n\x04Phli\x10\x86\x01\x12\t\n\x04Phlp\x10\x87\x01\x12\t\n\x04Phlv\x10\x88\x01\x12\t\n\x04Phnx\x10\x89\x01\x12\t\n\x04Plrd\x10\x8a\x01\x12\t\n\x04Piqd\x10\x8b\x01\x12\t\n\x04Prti\x10\x8c\x01\x12\t\n\x04Qaaa\x10\x8d\x01\x12\t\n\x04Qabx\x10\x8e\x01\x12\t\n\x04Rjng\x10\x8f\x01\x12\t\n\x04Rohg\x10\x90\x01\x12\t\n\x04Roro\x10\x91\x01\x12\t\n\x04Runr\x10\x92\x01\x12\t\n\x04Samr\x10\x93\x01\x12\t\n\x04Sara\x10\x94\x01\x12\t\n\x04Sarb\x10\x95\x01\x12\t\n\x04Saur\x10\x96\x01\x12\t\n\x04Sgnw\x10\x97\x01\x12\t\n\x04Shaw\x10\x98\x01\x12\t\n\x04Shrd\x10\x99\x01\x12\t\n\x04Shui\x10\x9a\x01\x12\t\n\x04Sidd\x10\x9b\x01\x12\t\n\x04Sind\x10\x9c\x01\x12\t\n\x04Sinh\x10\x9d\x01\x12\t\n\x04Sogd\x10\x9e\x01\x12\t\n\x04Sogo\x10\x9f\x01\x12\t\n\x04Sora\x10\xa0\x01\x12\t\n\x04Soyo\x10\xa1\x01\x12\t\n\x04Sund\x10\xa2\x01\x12\t\n\x04Sylo\x10\xa3\x01\x12\t\n\x04Syrc\x10\xa4\x01\x12\t\n\x04Syre\x10\xa5\x01\x12\t\n\x04Syrj\x10\xa6\x01\x12\t\n\x04Syrn\x10\xa7\x01\x12\t\n\x04Tagb\x10\xa8\x01\x12\t\n\x04Takr\x10\xa9\x01\x12\t\n\x04Tale\x10\xaa\x01\x12\t\n\x04Talu\x10\xab\x01\x12\t\n\x04Taml\x10\xac\x01\x12\t\n\x04Tang\x10\xad\x01\x12\t\n\x04Tavt\x10\xae\x01\x12\t\n\x04Telu\x10\xaf\x01\x12\t\n\x04Teng\x10\xb0\x01\x12\t\n\x04Tfng\x10\xb1\x01\x12\t\n\x04Tglg\x10\xb2\x01\x12\t\n\x04Thaa\x10\xb3\x01\x12\t\n\x04Thai\x10\xb4\x01\x12\t\n\x04Tibt\x10\xb5\x01\x12\t\n\x04Tirh\x10\xb6\x01\x12\t\n\x04Ugar\x10\xb7\x01\x12\t\n\x04Vaii\x10\xb8\x01\x12\t\n\x04Visp\x10\xb9\x01\x12\t\n\x04Wara\x10\xba\x01\x12\t\n\x04Wcho\x10\xbb\x01\x12\t\n\x04Wole\x10\xbc\x01\x12\t\n\x04Xpeo\x10\xbd\x01\x12\t\n\x04Xsux\x10\xbe\x01\x12\t\n\x04Yiii\x10\xbf\x01\x12\t\n\x04Zanb\x10\xc0\x01\x12\t\n\x04Zinh\x10\xc1\x01\x12\t\n\x04Zmth\x10\xc2\x01\x12\t\n\x04Zsye\x10\xc3\x01\x12\t\n\x04Zsym\x10\xc4\x01\x12\t\n\x04Zxxx\x10\xc5\x01\x12\t\n\x04Zyyy\x10\xc6\x01\x12\t\n\x04Zzzz\x10\xc7\x01\"\xec)\n\x08Location\x12%\n\x07\x63ountry\x18\x01 \x01(\x0e\x32\x14.pb.Location.Country\x12\r\n\x05state\x18\x02 \x01(\t\x12\x0c\n\x04\x63ity\x18\x03 \x01(\t\x12\x0c\n\x04\x63ode\x18\x04 \x01(\t\x12\x10\n\x08latitude\x18\x05 \x01(\x11\x12\x11\n\tlongitude\x18\x06 \x01(\x11\"\xe8(\n\x07\x43ountry\x12\x13\n\x0fUNKNOWN_COUNTRY\x10\x00\x12\x06\n\x02\x41\x46\x10\x01\x12\x06\n\x02\x41X\x10\x02\x12\x06\n\x02\x41L\x10\x03\x12\x06\n\x02\x44Z\x10\x04\x12\x06\n\x02\x41S\x10\x05\x12\x06\n\x02\x41\x44\x10\x06\x12\x06\n\x02\x41O\x10\x07\x12\x06\n\x02\x41I\x10\x08\x12\x06\n\x02\x41Q\x10\t\x12\x06\n\x02\x41G\x10\n\x12\x06\n\x02\x41R\x10\x0b\x12\x06\n\x02\x41M\x10\x0c\x12\x06\n\x02\x41W\x10\r\x12\x06\n\x02\x41U\x10\x0e\x12\x06\n\x02\x41T\x10\x0f\x12\x06\n\x02\x41Z\x10\x10\x12\x06\n\x02\x42S\x10\x11\x12\x06\n\x02\x42H\x10\x12\x12\x06\n\x02\x42\x44\x10\x13\x12\x06\n\x02\x42\x42\x10\x14\x12\x06\n\x02\x42Y\x10\x15\x12\x06\n\x02\x42\x45\x10\x16\x12\x06\n\x02\x42Z\x10\x17\x12\x06\n\x02\x42J\x10\x18\x12\x06\n\x02\x42M\x10\x19\x12\x06\n\x02\x42T\x10\x1a\x12\x06\n\x02\x42O\x10\x1b\x12\x06\n\x02\x42Q\x10\x1c\x12\x06\n\x02\x42\x41\x10\x1d\x12\x06\n\x02\x42W\x10\x1e\x12\x06\n\x02\x42V\x10\x1f\x12\x06\n\x02\x42R\x10 \x12\x06\n\x02IO\x10!\x12\x06\n\x02\x42N\x10\"\x12\x06\n\x02\x42G\x10#\x12\x06\n\x02\x42\x46\x10$\x12\x06\n\x02\x42I\x10%\x12\x06\n\x02KH\x10&\x12\x06\n\x02\x43M\x10\'\x12\x06\n\x02\x43\x41\x10(\x12\x06\n\x02\x43V\x10)\x12\x06\n\x02KY\x10*\x12\x06\n\x02\x43\x46\x10+\x12\x06\n\x02TD\x10,\x12\x06\n\x02\x43L\x10-\x12\x06\n\x02\x43N\x10.\x12\x06\n\x02\x43X\x10/\x12\x06\n\x02\x43\x43\x10\x30\x12\x06\n\x02\x43O\x10\x31\x12\x06\n\x02KM\x10\x32\x12\x06\n\x02\x43G\x10\x33\x12\x06\n\x02\x43\x44\x10\x34\x12\x06\n\x02\x43K\x10\x35\x12\x06\n\x02\x43R\x10\x36\x12\x06\n\x02\x43I\x10\x37\x12\x06\n\x02HR\x10\x38\x12\x06\n\x02\x43U\x10\x39\x12\x06\n\x02\x43W\x10:\x12\x06\n\x02\x43Y\x10;\x12\x06\n\x02\x43Z\x10<\x12\x06\n\x02\x44K\x10=\x12\x06\n\x02\x44J\x10>\x12\x06\n\x02\x44M\x10?\x12\x06\n\x02\x44O\x10@\x12\x06\n\x02\x45\x43\x10\x41\x12\x06\n\x02\x45G\x10\x42\x12\x06\n\x02SV\x10\x43\x12\x06\n\x02GQ\x10\x44\x12\x06\n\x02\x45R\x10\x45\x12\x06\n\x02\x45\x45\x10\x46\x12\x06\n\x02\x45T\x10G\x12\x06\n\x02\x46K\x10H\x12\x06\n\x02\x46O\x10I\x12\x06\n\x02\x46J\x10J\x12\x06\n\x02\x46I\x10K\x12\x06\n\x02\x46R\x10L\x12\x06\n\x02GF\x10M\x12\x06\n\x02PF\x10N\x12\x06\n\x02TF\x10O\x12\x06\n\x02GA\x10P\x12\x06\n\x02GM\x10Q\x12\x06\n\x02GE\x10R\x12\x06\n\x02\x44\x45\x10S\x12\x06\n\x02GH\x10T\x12\x06\n\x02GI\x10U\x12\x06\n\x02GR\x10V\x12\x06\n\x02GL\x10W\x12\x06\n\x02GD\x10X\x12\x06\n\x02GP\x10Y\x12\x06\n\x02GU\x10Z\x12\x06\n\x02GT\x10[\x12\x06\n\x02GG\x10\\\x12\x06\n\x02GN\x10]\x12\x06\n\x02GW\x10^\x12\x06\n\x02GY\x10_\x12\x06\n\x02HT\x10`\x12\x06\n\x02HM\x10\x61\x12\x06\n\x02VA\x10\x62\x12\x06\n\x02HN\x10\x63\x12\x06\n\x02HK\x10\x64\x12\x06\n\x02HU\x10\x65\x12\x06\n\x02IS\x10\x66\x12\x06\n\x02IN\x10g\x12\x06\n\x02ID\x10h\x12\x06\n\x02IR\x10i\x12\x06\n\x02IQ\x10j\x12\x06\n\x02IE\x10k\x12\x06\n\x02IM\x10l\x12\x06\n\x02IL\x10m\x12\x06\n\x02IT\x10n\x12\x06\n\x02JM\x10o\x12\x06\n\x02JP\x10p\x12\x06\n\x02JE\x10q\x12\x06\n\x02JO\x10r\x12\x06\n\x02KZ\x10s\x12\x06\n\x02KE\x10t\x12\x06\n\x02KI\x10u\x12\x06\n\x02KP\x10v\x12\x06\n\x02KR\x10w\x12\x06\n\x02KW\x10x\x12\x06\n\x02KG\x10y\x12\x06\n\x02LA\x10z\x12\x06\n\x02LV\x10{\x12\x06\n\x02LB\x10|\x12\x06\n\x02LS\x10}\x12\x06\n\x02LR\x10~\x12\x06\n\x02LY\x10\x7f\x12\x07\n\x02LI\x10\x80\x01\x12\x07\n\x02LT\x10\x81\x01\x12\x07\n\x02LU\x10\x82\x01\x12\x07\n\x02MO\x10\x83\x01\x12\x07\n\x02MK\x10\x84\x01\x12\x07\n\x02MG\x10\x85\x01\x12\x07\n\x02MW\x10\x86\x01\x12\x07\n\x02MY\x10\x87\x01\x12\x07\n\x02MV\x10\x88\x01\x12\x07\n\x02ML\x10\x89\x01\x12\x07\n\x02MT\x10\x8a\x01\x12\x07\n\x02MH\x10\x8b\x01\x12\x07\n\x02MQ\x10\x8c\x01\x12\x07\n\x02MR\x10\x8d\x01\x12\x07\n\x02MU\x10\x8e\x01\x12\x07\n\x02YT\x10\x8f\x01\x12\x07\n\x02MX\x10\x90\x01\x12\x07\n\x02\x46M\x10\x91\x01\x12\x07\n\x02MD\x10\x92\x01\x12\x07\n\x02MC\x10\x93\x01\x12\x07\n\x02MN\x10\x94\x01\x12\x07\n\x02ME\x10\x95\x01\x12\x07\n\x02MS\x10\x96\x01\x12\x07\n\x02MA\x10\x97\x01\x12\x07\n\x02MZ\x10\x98\x01\x12\x07\n\x02MM\x10\x99\x01\x12\x07\n\x02NA\x10\x9a\x01\x12\x07\n\x02NR\x10\x9b\x01\x12\x07\n\x02NP\x10\x9c\x01\x12\x07\n\x02NL\x10\x9d\x01\x12\x07\n\x02NC\x10\x9e\x01\x12\x07\n\x02NZ\x10\x9f\x01\x12\x07\n\x02NI\x10\xa0\x01\x12\x07\n\x02NE\x10\xa1\x01\x12\x07\n\x02NG\x10\xa2\x01\x12\x07\n\x02NU\x10\xa3\x01\x12\x07\n\x02NF\x10\xa4\x01\x12\x07\n\x02MP\x10\xa5\x01\x12\x07\n\x02NO\x10\xa6\x01\x12\x07\n\x02OM\x10\xa7\x01\x12\x07\n\x02PK\x10\xa8\x01\x12\x07\n\x02PW\x10\xa9\x01\x12\x07\n\x02PS\x10\xaa\x01\x12\x07\n\x02PA\x10\xab\x01\x12\x07\n\x02PG\x10\xac\x01\x12\x07\n\x02PY\x10\xad\x01\x12\x07\n\x02PE\x10\xae\x01\x12\x07\n\x02PH\x10\xaf\x01\x12\x07\n\x02PN\x10\xb0\x01\x12\x07\n\x02PL\x10\xb1\x01\x12\x07\n\x02PT\x10\xb2\x01\x12\x07\n\x02PR\x10\xb3\x01\x12\x07\n\x02QA\x10\xb4\x01\x12\x07\n\x02RE\x10\xb5\x01\x12\x07\n\x02RO\x10\xb6\x01\x12\x07\n\x02RU\x10\xb7\x01\x12\x07\n\x02RW\x10\xb8\x01\x12\x07\n\x02\x42L\x10\xb9\x01\x12\x07\n\x02SH\x10\xba\x01\x12\x07\n\x02KN\x10\xbb\x01\x12\x07\n\x02LC\x10\xbc\x01\x12\x07\n\x02MF\x10\xbd\x01\x12\x07\n\x02PM\x10\xbe\x01\x12\x07\n\x02VC\x10\xbf\x01\x12\x07\n\x02WS\x10\xc0\x01\x12\x07\n\x02SM\x10\xc1\x01\x12\x07\n\x02ST\x10\xc2\x01\x12\x07\n\x02SA\x10\xc3\x01\x12\x07\n\x02SN\x10\xc4\x01\x12\x07\n\x02RS\x10\xc5\x01\x12\x07\n\x02SC\x10\xc6\x01\x12\x07\n\x02SL\x10\xc7\x01\x12\x07\n\x02SG\x10\xc8\x01\x12\x07\n\x02SX\x10\xc9\x01\x12\x07\n\x02SK\x10\xca\x01\x12\x07\n\x02SI\x10\xcb\x01\x12\x07\n\x02SB\x10\xcc\x01\x12\x07\n\x02SO\x10\xcd\x01\x12\x07\n\x02ZA\x10\xce\x01\x12\x07\n\x02GS\x10\xcf\x01\x12\x07\n\x02SS\x10\xd0\x01\x12\x07\n\x02\x45S\x10\xd1\x01\x12\x07\n\x02LK\x10\xd2\x01\x12\x07\n\x02SD\x10\xd3\x01\x12\x07\n\x02SR\x10\xd4\x01\x12\x07\n\x02SJ\x10\xd5\x01\x12\x07\n\x02SZ\x10\xd6\x01\x12\x07\n\x02SE\x10\xd7\x01\x12\x07\n\x02\x43H\x10\xd8\x01\x12\x07\n\x02SY\x10\xd9\x01\x12\x07\n\x02TW\x10\xda\x01\x12\x07\n\x02TJ\x10\xdb\x01\x12\x07\n\x02TZ\x10\xdc\x01\x12\x07\n\x02TH\x10\xdd\x01\x12\x07\n\x02TL\x10\xde\x01\x12\x07\n\x02TG\x10\xdf\x01\x12\x07\n\x02TK\x10\xe0\x01\x12\x07\n\x02TO\x10\xe1\x01\x12\x07\n\x02TT\x10\xe2\x01\x12\x07\n\x02TN\x10\xe3\x01\x12\x07\n\x02TR\x10\xe4\x01\x12\x07\n\x02TM\x10\xe5\x01\x12\x07\n\x02TC\x10\xe6\x01\x12\x07\n\x02TV\x10\xe7\x01\x12\x07\n\x02UG\x10\xe8\x01\x12\x07\n\x02UA\x10\xe9\x01\x12\x07\n\x02\x41\x45\x10\xea\x01\x12\x07\n\x02GB\x10\xeb\x01\x12\x07\n\x02US\x10\xec\x01\x12\x07\n\x02UM\x10\xed\x01\x12\x07\n\x02UY\x10\xee\x01\x12\x07\n\x02UZ\x10\xef\x01\x12\x07\n\x02VU\x10\xf0\x01\x12\x07\n\x02VE\x10\xf1\x01\x12\x07\n\x02VN\x10\xf2\x01\x12\x07\n\x02VG\x10\xf3\x01\x12\x07\n\x02VI\x10\xf4\x01\x12\x07\n\x02WF\x10\xf5\x01\x12\x07\n\x02\x45H\x10\xf6\x01\x12\x07\n\x02YE\x10\xf7\x01\x12\x07\n\x02ZM\x10\xf8\x01\x12\x07\n\x02ZW\x10\xf9\x01\x12\t\n\x04R001\x10\xfa\x01\x12\t\n\x04R002\x10\xfb\x01\x12\t\n\x04R015\x10\xfc\x01\x12\t\n\x04R012\x10\xfd\x01\x12\t\n\x04R818\x10\xfe\x01\x12\t\n\x04R434\x10\xff\x01\x12\t\n\x04R504\x10\x80\x02\x12\t\n\x04R729\x10\x81\x02\x12\t\n\x04R788\x10\x82\x02\x12\t\n\x04R732\x10\x83\x02\x12\t\n\x04R202\x10\x84\x02\x12\t\n\x04R014\x10\x85\x02\x12\t\n\x04R086\x10\x86\x02\x12\t\n\x04R108\x10\x87\x02\x12\t\n\x04R174\x10\x88\x02\x12\t\n\x04R262\x10\x89\x02\x12\t\n\x04R232\x10\x8a\x02\x12\t\n\x04R231\x10\x8b\x02\x12\t\n\x04R260\x10\x8c\x02\x12\t\n\x04R404\x10\x8d\x02\x12\t\n\x04R450\x10\x8e\x02\x12\t\n\x04R454\x10\x8f\x02\x12\t\n\x04R480\x10\x90\x02\x12\t\n\x04R175\x10\x91\x02\x12\t\n\x04R508\x10\x92\x02\x12\t\n\x04R638\x10\x93\x02\x12\t\n\x04R646\x10\x94\x02\x12\t\n\x04R690\x10\x95\x02\x12\t\n\x04R706\x10\x96\x02\x12\t\n\x04R728\x10\x97\x02\x12\t\n\x04R800\x10\x98\x02\x12\t\n\x04R834\x10\x99\x02\x12\t\n\x04R894\x10\x9a\x02\x12\t\n\x04R716\x10\x9b\x02\x12\t\n\x04R017\x10\x9c\x02\x12\t\n\x04R024\x10\x9d\x02\x12\t\n\x04R120\x10\x9e\x02\x12\t\n\x04R140\x10\x9f\x02\x12\t\n\x04R148\x10\xa0\x02\x12\t\n\x04R178\x10\xa1\x02\x12\t\n\x04R180\x10\xa2\x02\x12\t\n\x04R226\x10\xa3\x02\x12\t\n\x04R266\x10\xa4\x02\x12\t\n\x04R678\x10\xa5\x02\x12\t\n\x04R018\x10\xa6\x02\x12\t\n\x04R072\x10\xa7\x02\x12\t\n\x04R748\x10\xa8\x02\x12\t\n\x04R426\x10\xa9\x02\x12\t\n\x04R516\x10\xaa\x02\x12\t\n\x04R710\x10\xab\x02\x12\t\n\x04R011\x10\xac\x02\x12\t\n\x04R204\x10\xad\x02\x12\t\n\x04R854\x10\xae\x02\x12\t\n\x04R132\x10\xaf\x02\x12\t\n\x04R384\x10\xb0\x02\x12\t\n\x04R270\x10\xb1\x02\x12\t\n\x04R288\x10\xb2\x02\x12\t\n\x04R324\x10\xb3\x02\x12\t\n\x04R624\x10\xb4\x02\x12\t\n\x04R430\x10\xb5\x02\x12\t\n\x04R466\x10\xb6\x02\x12\t\n\x04R478\x10\xb7\x02\x12\t\n\x04R562\x10\xb8\x02\x12\t\n\x04R566\x10\xb9\x02\x12\t\n\x04R654\x10\xba\x02\x12\t\n\x04R686\x10\xbb\x02\x12\t\n\x04R694\x10\xbc\x02\x12\t\n\x04R768\x10\xbd\x02\x12\t\n\x04R019\x10\xbe\x02\x12\t\n\x04R419\x10\xbf\x02\x12\t\n\x04R029\x10\xc0\x02\x12\t\n\x04R660\x10\xc1\x02\x12\t\n\x04R028\x10\xc2\x02\x12\t\n\x04R533\x10\xc3\x02\x12\t\n\x04R044\x10\xc4\x02\x12\t\n\x04R052\x10\xc5\x02\x12\t\n\x04R535\x10\xc6\x02\x12\t\n\x04R092\x10\xc7\x02\x12\t\n\x04R136\x10\xc8\x02\x12\t\n\x04R192\x10\xc9\x02\x12\t\n\x04R531\x10\xca\x02\x12\t\n\x04R212\x10\xcb\x02\x12\t\n\x04R214\x10\xcc\x02\x12\t\n\x04R308\x10\xcd\x02\x12\t\n\x04R312\x10\xce\x02\x12\t\n\x04R332\x10\xcf\x02\x12\t\n\x04R388\x10\xd0\x02\x12\t\n\x04R474\x10\xd1\x02\x12\t\n\x04R500\x10\xd2\x02\x12\t\n\x04R630\x10\xd3\x02\x12\t\n\x04R652\x10\xd4\x02\x12\t\n\x04R659\x10\xd5\x02\x12\t\n\x04R662\x10\xd6\x02\x12\t\n\x04R663\x10\xd7\x02\x12\t\n\x04R670\x10\xd8\x02\x12\t\n\x04R534\x10\xd9\x02\x12\t\n\x04R780\x10\xda\x02\x12\t\n\x04R796\x10\xdb\x02\x12\t\n\x04R850\x10\xdc\x02\x12\t\n\x04R013\x10\xdd\x02\x12\t\n\x04R084\x10\xde\x02\x12\t\n\x04R188\x10\xdf\x02\x12\t\n\x04R222\x10\xe0\x02\x12\t\n\x04R320\x10\xe1\x02\x12\t\n\x04R340\x10\xe2\x02\x12\t\n\x04R484\x10\xe3\x02\x12\t\n\x04R558\x10\xe4\x02\x12\t\n\x04R591\x10\xe5\x02\x12\t\n\x04R005\x10\xe6\x02\x12\t\n\x04R032\x10\xe7\x02\x12\t\n\x04R068\x10\xe8\x02\x12\t\n\x04R074\x10\xe9\x02\x12\t\n\x04R076\x10\xea\x02\x12\t\n\x04R152\x10\xeb\x02\x12\t\n\x04R170\x10\xec\x02\x12\t\n\x04R218\x10\xed\x02\x12\t\n\x04R238\x10\xee\x02\x12\t\n\x04R254\x10\xef\x02\x12\t\n\x04R328\x10\xf0\x02\x12\t\n\x04R600\x10\xf1\x02\x12\t\n\x04R604\x10\xf2\x02\x12\t\n\x04R239\x10\xf3\x02\x12\t\n\x04R740\x10\xf4\x02\x12\t\n\x04R858\x10\xf5\x02\x12\t\n\x04R862\x10\xf6\x02\x12\t\n\x04R021\x10\xf7\x02\x12\t\n\x04R060\x10\xf8\x02\x12\t\n\x04R124\x10\xf9\x02\x12\t\n\x04R304\x10\xfa\x02\x12\t\n\x04R666\x10\xfb\x02\x12\t\n\x04R840\x10\xfc\x02\x12\t\n\x04R010\x10\xfd\x02\x12\t\n\x04R142\x10\xfe\x02\x12\t\n\x04R143\x10\xff\x02\x12\t\n\x04R398\x10\x80\x03\x12\t\n\x04R417\x10\x81\x03\x12\t\n\x04R762\x10\x82\x03\x12\t\n\x04R795\x10\x83\x03\x12\t\n\x04R860\x10\x84\x03\x12\t\n\x04R030\x10\x85\x03\x12\t\n\x04R156\x10\x86\x03\x12\t\n\x04R344\x10\x87\x03\x12\t\n\x04R446\x10\x88\x03\x12\t\n\x04R408\x10\x89\x03\x12\t\n\x04R392\x10\x8a\x03\x12\t\n\x04R496\x10\x8b\x03\x12\t\n\x04R410\x10\x8c\x03\x12\t\n\x04R035\x10\x8d\x03\x12\t\n\x04R096\x10\x8e\x03\x12\t\n\x04R116\x10\x8f\x03\x12\t\n\x04R360\x10\x90\x03\x12\t\n\x04R418\x10\x91\x03\x12\t\n\x04R458\x10\x92\x03\x12\t\n\x04R104\x10\x93\x03\x12\t\n\x04R608\x10\x94\x03\x12\t\n\x04R702\x10\x95\x03\x12\t\n\x04R764\x10\x96\x03\x12\t\n\x04R626\x10\x97\x03\x12\t\n\x04R704\x10\x98\x03\x12\t\n\x04R034\x10\x99\x03\x12\t\n\x04R004\x10\x9a\x03\x12\t\n\x04R050\x10\x9b\x03\x12\t\n\x04R064\x10\x9c\x03\x12\t\n\x04R356\x10\x9d\x03\x12\t\n\x04R364\x10\x9e\x03\x12\t\n\x04R462\x10\x9f\x03\x12\t\n\x04R524\x10\xa0\x03\x12\t\n\x04R586\x10\xa1\x03\x12\t\n\x04R144\x10\xa2\x03\x12\t\n\x04R145\x10\xa3\x03\x12\t\n\x04R051\x10\xa4\x03\x12\t\n\x04R031\x10\xa5\x03\x12\t\n\x04R048\x10\xa6\x03\x12\t\n\x04R196\x10\xa7\x03\x12\t\n\x04R268\x10\xa8\x03\x12\t\n\x04R368\x10\xa9\x03\x12\t\n\x04R376\x10\xaa\x03\x12\t\n\x04R400\x10\xab\x03\x12\t\n\x04R414\x10\xac\x03\x12\t\n\x04R422\x10\xad\x03\x12\t\n\x04R512\x10\xae\x03\x12\t\n\x04R634\x10\xaf\x03\x12\t\n\x04R682\x10\xb0\x03\x12\t\n\x04R275\x10\xb1\x03\x12\t\n\x04R760\x10\xb2\x03\x12\t\n\x04R792\x10\xb3\x03\x12\t\n\x04R784\x10\xb4\x03\x12\t\n\x04R887\x10\xb5\x03\x12\t\n\x04R150\x10\xb6\x03\x12\t\n\x04R151\x10\xb7\x03\x12\t\n\x04R112\x10\xb8\x03\x12\t\n\x04R100\x10\xb9\x03\x12\t\n\x04R203\x10\xba\x03\x12\t\n\x04R348\x10\xbb\x03\x12\t\n\x04R616\x10\xbc\x03\x12\t\n\x04R498\x10\xbd\x03\x12\t\n\x04R642\x10\xbe\x03\x12\t\n\x04R643\x10\xbf\x03\x12\t\n\x04R703\x10\xc0\x03\x12\t\n\x04R804\x10\xc1\x03\x12\t\n\x04R154\x10\xc2\x03\x12\t\n\x04R248\x10\xc3\x03\x12\t\n\x04R830\x10\xc4\x03\x12\t\n\x04R831\x10\xc5\x03\x12\t\n\x04R832\x10\xc6\x03\x12\t\n\x04R680\x10\xc7\x03\x12\t\n\x04R208\x10\xc8\x03\x12\t\n\x04R233\x10\xc9\x03\x12\t\n\x04R234\x10\xca\x03\x12\t\n\x04R246\x10\xcb\x03\x12\t\n\x04R352\x10\xcc\x03\x12\t\n\x04R372\x10\xcd\x03\x12\t\n\x04R833\x10\xce\x03\x12\t\n\x04R428\x10\xcf\x03\x12\t\n\x04R440\x10\xd0\x03\x12\t\n\x04R578\x10\xd1\x03\x12\t\n\x04R744\x10\xd2\x03\x12\t\n\x04R752\x10\xd3\x03\x12\t\n\x04R826\x10\xd4\x03\x12\t\n\x04R039\x10\xd5\x03\x12\t\n\x04R008\x10\xd6\x03\x12\t\n\x04R020\x10\xd7\x03\x12\t\n\x04R070\x10\xd8\x03\x12\t\n\x04R191\x10\xd9\x03\x12\t\n\x04R292\x10\xda\x03\x12\t\n\x04R300\x10\xdb\x03\x12\t\n\x04R336\x10\xdc\x03\x12\t\n\x04R380\x10\xdd\x03\x12\t\n\x04R470\x10\xde\x03\x12\t\n\x04R499\x10\xdf\x03\x12\t\n\x04R807\x10\xe0\x03\x12\t\n\x04R620\x10\xe1\x03\x12\t\n\x04R674\x10\xe2\x03\x12\t\n\x04R688\x10\xe3\x03\x12\t\n\x04R705\x10\xe4\x03\x12\t\n\x04R724\x10\xe5\x03\x12\t\n\x04R155\x10\xe6\x03\x12\t\n\x04R040\x10\xe7\x03\x12\t\n\x04R056\x10\xe8\x03\x12\t\n\x04R250\x10\xe9\x03\x12\t\n\x04R276\x10\xea\x03\x12\t\n\x04R438\x10\xeb\x03\x12\t\n\x04R442\x10\xec\x03\x12\t\n\x04R492\x10\xed\x03\x12\t\n\x04R528\x10\xee\x03\x12\t\n\x04R756\x10\xef\x03\x12\t\n\x04R009\x10\xf0\x03\x12\t\n\x04R053\x10\xf1\x03\x12\t\n\x04R036\x10\xf2\x03\x12\t\n\x04R162\x10\xf3\x03\x12\t\n\x04R166\x10\xf4\x03\x12\t\n\x04R334\x10\xf5\x03\x12\t\n\x04R554\x10\xf6\x03\x12\t\n\x04R574\x10\xf7\x03\x12\t\n\x04R054\x10\xf8\x03\x12\t\n\x04R242\x10\xf9\x03\x12\t\n\x04R540\x10\xfa\x03\x12\t\n\x04R598\x10\xfb\x03\x12\t\n\x04R090\x10\xfc\x03\x12\t\n\x04R548\x10\xfd\x03\x12\t\n\x04R057\x10\xfe\x03\x12\t\n\x04R316\x10\xff\x03\x12\t\n\x04R296\x10\x80\x04\x12\t\n\x04R584\x10\x81\x04\x12\t\n\x04R583\x10\x82\x04\x12\t\n\x04R520\x10\x83\x04\x12\t\n\x04R580\x10\x84\x04\x12\t\n\x04R585\x10\x85\x04\x12\t\n\x04R581\x10\x86\x04\x12\t\n\x04R061\x10\x87\x04\x12\t\n\x04R016\x10\x88\x04\x12\t\n\x04R184\x10\x89\x04\x12\t\n\x04R258\x10\x8a\x04\x12\t\n\x04R570\x10\x8b\x04\x12\t\n\x04R612\x10\x8c\x04\x12\t\n\x04R882\x10\x8d\x04\x12\t\n\x04R772\x10\x8e\x04\x12\t\n\x04R776\x10\x8f\x04\x12\t\n\x04R798\x10\x90\x04\x12\t\n\x04R876\x10\x91\x04\x62\x06proto3')
+  serialized_pb=_b('\n\x0b\x63laim.proto\x12\x02pb\"M\n\x05\x43laim\x12\x1c\n\x06stream\x18\x01 \x01(\x0b\x32\n.pb.StreamH\x00\x12\x1e\n\x07\x63hannel\x18\x02 \x01(\x0b\x32\x0b.pb.ChannelH\x00\x42\x06\n\x04type\"\xe8\x01\n\x07\x43hannel\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\r\n\x05title\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x15\n\rthumbnail_url\x18\x04 \x01(\t\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12\x1f\n\tlanguages\x18\x06 \x03(\x0b\x32\x0c.pb.Language\x12\x1f\n\tlocations\x18\x07 \x03(\x0b\x32\x0c.pb.Location\x12\x15\n\rcontact_email\x18\x08 \x01(\t\x12\x14\n\x0chomepage_url\x18\t \x01(\t\x12\x11\n\tcover_url\x18\n \x01(\t\"\x8e\x03\n\x06Stream\x12\x0f\n\x07sd_hash\x18\x01 \x01(\x0c\x12\r\n\x05title\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x15\n\rthumbnail_url\x18\x04 \x01(\t\x12\x0c\n\x04tags\x18\x05 \x03(\t\x12\x1f\n\tlanguages\x18\x06 \x03(\x0b\x32\x0c.pb.Language\x12\x1f\n\tlocations\x18\x07 \x03(\x0b\x32\x0c.pb.Location\x12\x0e\n\x06\x61uthor\x18\x08 \x01(\t\x12\x0f\n\x07license\x18\t \x01(\t\x12\x13\n\x0blicense_url\x18\n \x01(\t\x12\x14\n\x0crelease_time\x18\x0b \x01(\x03\x12\x12\n\nmedia_type\x18\r \x01(\t\x12\x16\n\x04\x66ile\x18\x0e \x01(\x0b\x32\x08.pb.File\x12\x14\n\x03\x66\x65\x65\x18\x0f \x01(\x0b\x32\x07.pb.Fee\x12\x1a\n\x05image\x18\x10 \x01(\x0b\x32\t.pb.ImageH\x00\x12\x1a\n\x05video\x18\x11 \x01(\x0b\x32\t.pb.VideoH\x00\x12\x1a\n\x05\x61udio\x18\x12 \x01(\x0b\x32\t.pb.AudioH\x00\x42\x06\n\x04type\"\x87\x01\n\x03\x46\x65\x65\x12\"\n\x08\x63urrency\x18\x01 \x01(\x0e\x32\x10.pb.Fee.Currency\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x03 \x01(\x04\";\n\x08\x43urrency\x12\x14\n\x10UNKNOWN_CURRENCY\x10\x00\x12\x07\n\x03LBC\x10\x01\x12\x07\n\x03\x42TC\x10\x02\x12\x07\n\x03USD\x10\x03\"0\n\x04\x46ile\x12\x0c\n\x04hash\x18\x03 \x01(\x0c\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\x04\"&\n\x05Image\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\r\"8\n\x05Video\x12\r\n\x05width\x18\x01 \x01(\r\x12\x0e\n\x06height\x18\x02 \x01(\r\x12\x10\n\x08\x64uration\x18\x03 \x01(\r\"\x19\n\x05\x41udio\x12\x10\n\x08\x64uration\x18\x01 \x01(\r\"\xc7\x1d\n\x08Language\x12\'\n\x08language\x18\x01 \x01(\x0e\x32\x15.pb.Language.Language\x12#\n\x06script\x18\x02 \x01(\x0e\x32\x13.pb.Language.Script\x12$\n\x06region\x18\x03 \x01(\x0e\x32\x14.pb.Location.Country\"\x99\x0c\n\x08Language\x12\x14\n\x10UNKNOWN_LANGUAGE\x10\x00\x12\x06\n\x02\x65n\x10\x01\x12\x06\n\x02\x61\x61\x10\x02\x12\x06\n\x02\x61\x62\x10\x03\x12\x06\n\x02\x61\x65\x10\x04\x12\x06\n\x02\x61\x66\x10\x05\x12\x06\n\x02\x61k\x10\x06\x12\x06\n\x02\x61m\x10\x07\x12\x06\n\x02\x61n\x10\x08\x12\x06\n\x02\x61r\x10\t\x12\x06\n\x02\x61s\x10\n\x12\x06\n\x02\x61v\x10\x0b\x12\x06\n\x02\x61y\x10\x0c\x12\x06\n\x02\x61z\x10\r\x12\x06\n\x02\x62\x61\x10\x0e\x12\x06\n\x02\x62\x65\x10\x0f\x12\x06\n\x02\x62g\x10\x10\x12\x06\n\x02\x62h\x10\x11\x12\x06\n\x02\x62i\x10\x12\x12\x06\n\x02\x62m\x10\x13\x12\x06\n\x02\x62n\x10\x14\x12\x06\n\x02\x62o\x10\x15\x12\x06\n\x02\x62r\x10\x16\x12\x06\n\x02\x62s\x10\x17\x12\x06\n\x02\x63\x61\x10\x18\x12\x06\n\x02\x63\x65\x10\x19\x12\x06\n\x02\x63h\x10\x1a\x12\x06\n\x02\x63o\x10\x1b\x12\x06\n\x02\x63r\x10\x1c\x12\x06\n\x02\x63s\x10\x1d\x12\x06\n\x02\x63u\x10\x1e\x12\x06\n\x02\x63v\x10\x1f\x12\x06\n\x02\x63y\x10 \x12\x06\n\x02\x64\x61\x10!\x12\x06\n\x02\x64\x65\x10\"\x12\x06\n\x02\x64v\x10#\x12\x06\n\x02\x64z\x10$\x12\x06\n\x02\x65\x65\x10%\x12\x06\n\x02\x65l\x10&\x12\x06\n\x02\x65o\x10\'\x12\x06\n\x02\x65s\x10(\x12\x06\n\x02\x65t\x10)\x12\x06\n\x02\x65u\x10*\x12\x06\n\x02\x66\x61\x10+\x12\x06\n\x02\x66\x66\x10,\x12\x06\n\x02\x66i\x10-\x12\x06\n\x02\x66j\x10.\x12\x06\n\x02\x66o\x10/\x12\x06\n\x02\x66r\x10\x30\x12\x06\n\x02\x66y\x10\x31\x12\x06\n\x02ga\x10\x32\x12\x06\n\x02gd\x10\x33\x12\x06\n\x02gl\x10\x34\x12\x06\n\x02gn\x10\x35\x12\x06\n\x02gu\x10\x36\x12\x06\n\x02gv\x10\x37\x12\x06\n\x02ha\x10\x38\x12\x06\n\x02he\x10\x39\x12\x06\n\x02hi\x10:\x12\x06\n\x02ho\x10;\x12\x06\n\x02hr\x10<\x12\x06\n\x02ht\x10=\x12\x06\n\x02hu\x10>\x12\x06\n\x02hy\x10?\x12\x06\n\x02hz\x10@\x12\x06\n\x02ia\x10\x41\x12\x06\n\x02id\x10\x42\x12\x06\n\x02ie\x10\x43\x12\x06\n\x02ig\x10\x44\x12\x06\n\x02ii\x10\x45\x12\x06\n\x02ik\x10\x46\x12\x06\n\x02io\x10G\x12\x06\n\x02is\x10H\x12\x06\n\x02it\x10I\x12\x06\n\x02iu\x10J\x12\x06\n\x02ja\x10K\x12\x06\n\x02jv\x10L\x12\x06\n\x02ka\x10M\x12\x06\n\x02kg\x10N\x12\x06\n\x02ki\x10O\x12\x06\n\x02kj\x10P\x12\x06\n\x02kk\x10Q\x12\x06\n\x02kl\x10R\x12\x06\n\x02km\x10S\x12\x06\n\x02kn\x10T\x12\x06\n\x02ko\x10U\x12\x06\n\x02kr\x10V\x12\x06\n\x02ks\x10W\x12\x06\n\x02ku\x10X\x12\x06\n\x02kv\x10Y\x12\x06\n\x02kw\x10Z\x12\x06\n\x02ky\x10[\x12\x06\n\x02la\x10\\\x12\x06\n\x02lb\x10]\x12\x06\n\x02lg\x10^\x12\x06\n\x02li\x10_\x12\x06\n\x02ln\x10`\x12\x06\n\x02lo\x10\x61\x12\x06\n\x02lt\x10\x62\x12\x06\n\x02lu\x10\x63\x12\x06\n\x02lv\x10\x64\x12\x06\n\x02mg\x10\x65\x12\x06\n\x02mh\x10\x66\x12\x06\n\x02mi\x10g\x12\x06\n\x02mk\x10h\x12\x06\n\x02ml\x10i\x12\x06\n\x02mn\x10j\x12\x06\n\x02mr\x10k\x12\x06\n\x02ms\x10l\x12\x06\n\x02mt\x10m\x12\x06\n\x02my\x10n\x12\x06\n\x02na\x10o\x12\x06\n\x02nb\x10p\x12\x06\n\x02nd\x10q\x12\x06\n\x02ne\x10r\x12\x06\n\x02ng\x10s\x12\x06\n\x02nl\x10t\x12\x06\n\x02nn\x10u\x12\x06\n\x02no\x10v\x12\x06\n\x02nr\x10w\x12\x06\n\x02nv\x10x\x12\x06\n\x02ny\x10y\x12\x06\n\x02oc\x10z\x12\x06\n\x02oj\x10{\x12\x06\n\x02om\x10|\x12\x06\n\x02or\x10}\x12\x06\n\x02os\x10~\x12\x06\n\x02pa\x10\x7f\x12\x07\n\x02pi\x10\x80\x01\x12\x07\n\x02pl\x10\x81\x01\x12\x07\n\x02ps\x10\x82\x01\x12\x07\n\x02pt\x10\x83\x01\x12\x07\n\x02qu\x10\x84\x01\x12\x07\n\x02rm\x10\x85\x01\x12\x07\n\x02rn\x10\x86\x01\x12\x07\n\x02ro\x10\x87\x01\x12\x07\n\x02ru\x10\x88\x01\x12\x07\n\x02rw\x10\x89\x01\x12\x07\n\x02sa\x10\x8a\x01\x12\x07\n\x02sc\x10\x8b\x01\x12\x07\n\x02sd\x10\x8c\x01\x12\x07\n\x02se\x10\x8d\x01\x12\x07\n\x02sg\x10\x8e\x01\x12\x07\n\x02si\x10\x8f\x01\x12\x07\n\x02sk\x10\x90\x01\x12\x07\n\x02sl\x10\x91\x01\x12\x07\n\x02sm\x10\x92\x01\x12\x07\n\x02sn\x10\x93\x01\x12\x07\n\x02so\x10\x94\x01\x12\x07\n\x02sq\x10\x95\x01\x12\x07\n\x02sr\x10\x96\x01\x12\x07\n\x02ss\x10\x97\x01\x12\x07\n\x02st\x10\x98\x01\x12\x07\n\x02su\x10\x99\x01\x12\x07\n\x02sv\x10\x9a\x01\x12\x07\n\x02sw\x10\x9b\x01\x12\x07\n\x02ta\x10\x9c\x01\x12\x07\n\x02te\x10\x9d\x01\x12\x07\n\x02tg\x10\x9e\x01\x12\x07\n\x02th\x10\x9f\x01\x12\x07\n\x02ti\x10\xa0\x01\x12\x07\n\x02tk\x10\xa1\x01\x12\x07\n\x02tl\x10\xa2\x01\x12\x07\n\x02tn\x10\xa3\x01\x12\x07\n\x02to\x10\xa4\x01\x12\x07\n\x02tr\x10\xa5\x01\x12\x07\n\x02ts\x10\xa6\x01\x12\x07\n\x02tt\x10\xa7\x01\x12\x07\n\x02tw\x10\xa8\x01\x12\x07\n\x02ty\x10\xa9\x01\x12\x07\n\x02ug\x10\xaa\x01\x12\x07\n\x02uk\x10\xab\x01\x12\x07\n\x02ur\x10\xac\x01\x12\x07\n\x02uz\x10\xad\x01\x12\x07\n\x02ve\x10\xae\x01\x12\x07\n\x02vi\x10\xaf\x01\x12\x07\n\x02vo\x10\xb0\x01\x12\x07\n\x02wa\x10\xb1\x01\x12\x07\n\x02wo\x10\xb2\x01\x12\x07\n\x02xh\x10\xb3\x01\x12\x07\n\x02yi\x10\xb4\x01\x12\x07\n\x02yo\x10\xb5\x01\x12\x07\n\x02za\x10\xb6\x01\x12\x07\n\x02zh\x10\xb7\x01\x12\x07\n\x02zu\x10\xb8\x01\"\xaa\x10\n\x06Script\x12\x12\n\x0eUNKNOWN_SCRIPT\x10\x00\x12\x08\n\x04\x41\x64lm\x10\x01\x12\x08\n\x04\x41\x66\x61k\x10\x02\x12\x08\n\x04\x41ghb\x10\x03\x12\x08\n\x04\x41hom\x10\x04\x12\x08\n\x04\x41rab\x10\x05\x12\x08\n\x04\x41ran\x10\x06\x12\x08\n\x04\x41rmi\x10\x07\x12\x08\n\x04\x41rmn\x10\x08\x12\x08\n\x04\x41vst\x10\t\x12\x08\n\x04\x42\x61li\x10\n\x12\x08\n\x04\x42\x61mu\x10\x0b\x12\x08\n\x04\x42\x61ss\x10\x0c\x12\x08\n\x04\x42\x61tk\x10\r\x12\x08\n\x04\x42\x65ng\x10\x0e\x12\x08\n\x04\x42hks\x10\x0f\x12\x08\n\x04\x42lis\x10\x10\x12\x08\n\x04\x42opo\x10\x11\x12\x08\n\x04\x42rah\x10\x12\x12\x08\n\x04\x42rai\x10\x13\x12\x08\n\x04\x42ugi\x10\x14\x12\x08\n\x04\x42uhd\x10\x15\x12\x08\n\x04\x43\x61km\x10\x16\x12\x08\n\x04\x43\x61ns\x10\x17\x12\x08\n\x04\x43\x61ri\x10\x18\x12\x08\n\x04\x43ham\x10\x19\x12\x08\n\x04\x43her\x10\x1a\x12\x08\n\x04\x43irt\x10\x1b\x12\x08\n\x04\x43opt\x10\x1c\x12\x08\n\x04\x43pmn\x10\x1d\x12\x08\n\x04\x43prt\x10\x1e\x12\x08\n\x04\x43yrl\x10\x1f\x12\x08\n\x04\x43yrs\x10 \x12\x08\n\x04\x44\x65va\x10!\x12\x08\n\x04\x44ogr\x10\"\x12\x08\n\x04\x44srt\x10#\x12\x08\n\x04\x44upl\x10$\x12\x08\n\x04\x45gyd\x10%\x12\x08\n\x04\x45gyh\x10&\x12\x08\n\x04\x45gyp\x10\'\x12\x08\n\x04\x45lba\x10(\x12\x08\n\x04\x45lym\x10)\x12\x08\n\x04\x45thi\x10*\x12\x08\n\x04Geok\x10+\x12\x08\n\x04Geor\x10,\x12\x08\n\x04Glag\x10-\x12\x08\n\x04Gong\x10.\x12\x08\n\x04Gonm\x10/\x12\x08\n\x04Goth\x10\x30\x12\x08\n\x04Gran\x10\x31\x12\x08\n\x04Grek\x10\x32\x12\x08\n\x04Gujr\x10\x33\x12\x08\n\x04Guru\x10\x34\x12\x08\n\x04Hanb\x10\x35\x12\x08\n\x04Hang\x10\x36\x12\x08\n\x04Hani\x10\x37\x12\x08\n\x04Hano\x10\x38\x12\x08\n\x04Hans\x10\x39\x12\x08\n\x04Hant\x10:\x12\x08\n\x04Hatr\x10;\x12\x08\n\x04Hebr\x10<\x12\x08\n\x04Hira\x10=\x12\x08\n\x04Hluw\x10>\x12\x08\n\x04Hmng\x10?\x12\x08\n\x04Hmnp\x10@\x12\x08\n\x04Hrkt\x10\x41\x12\x08\n\x04Hung\x10\x42\x12\x08\n\x04Inds\x10\x43\x12\x08\n\x04Ital\x10\x44\x12\x08\n\x04Jamo\x10\x45\x12\x08\n\x04Java\x10\x46\x12\x08\n\x04Jpan\x10G\x12\x08\n\x04Jurc\x10H\x12\x08\n\x04Kali\x10I\x12\x08\n\x04Kana\x10J\x12\x08\n\x04Khar\x10K\x12\x08\n\x04Khmr\x10L\x12\x08\n\x04Khoj\x10M\x12\x08\n\x04Kitl\x10N\x12\x08\n\x04Kits\x10O\x12\x08\n\x04Knda\x10P\x12\x08\n\x04Kore\x10Q\x12\x08\n\x04Kpel\x10R\x12\x08\n\x04Kthi\x10S\x12\x08\n\x04Lana\x10T\x12\x08\n\x04Laoo\x10U\x12\x08\n\x04Latf\x10V\x12\x08\n\x04Latg\x10W\x12\x08\n\x04Latn\x10X\x12\x08\n\x04Leke\x10Y\x12\x08\n\x04Lepc\x10Z\x12\x08\n\x04Limb\x10[\x12\x08\n\x04Lina\x10\\\x12\x08\n\x04Linb\x10]\x12\x08\n\x04Lisu\x10^\x12\x08\n\x04Loma\x10_\x12\x08\n\x04Lyci\x10`\x12\x08\n\x04Lydi\x10\x61\x12\x08\n\x04Mahj\x10\x62\x12\x08\n\x04Maka\x10\x63\x12\x08\n\x04Mand\x10\x64\x12\x08\n\x04Mani\x10\x65\x12\x08\n\x04Marc\x10\x66\x12\x08\n\x04Maya\x10g\x12\x08\n\x04Medf\x10h\x12\x08\n\x04Mend\x10i\x12\x08\n\x04Merc\x10j\x12\x08\n\x04Mero\x10k\x12\x08\n\x04Mlym\x10l\x12\x08\n\x04Modi\x10m\x12\x08\n\x04Mong\x10n\x12\x08\n\x04Moon\x10o\x12\x08\n\x04Mroo\x10p\x12\x08\n\x04Mtei\x10q\x12\x08\n\x04Mult\x10r\x12\x08\n\x04Mymr\x10s\x12\x08\n\x04Nand\x10t\x12\x08\n\x04Narb\x10u\x12\x08\n\x04Nbat\x10v\x12\x08\n\x04Newa\x10w\x12\x08\n\x04Nkdb\x10x\x12\x08\n\x04Nkgb\x10y\x12\x08\n\x04Nkoo\x10z\x12\x08\n\x04Nshu\x10{\x12\x08\n\x04Ogam\x10|\x12\x08\n\x04Olck\x10}\x12\x08\n\x04Orkh\x10~\x12\x08\n\x04Orya\x10\x7f\x12\t\n\x04Osge\x10\x80\x01\x12\t\n\x04Osma\x10\x81\x01\x12\t\n\x04Palm\x10\x82\x01\x12\t\n\x04Pauc\x10\x83\x01\x12\t\n\x04Perm\x10\x84\x01\x12\t\n\x04Phag\x10\x85\x01\x12\t\n\x04Phli\x10\x86\x01\x12\t\n\x04Phlp\x10\x87\x01\x12\t\n\x04Phlv\x10\x88\x01\x12\t\n\x04Phnx\x10\x89\x01\x12\t\n\x04Plrd\x10\x8a\x01\x12\t\n\x04Piqd\x10\x8b\x01\x12\t\n\x04Prti\x10\x8c\x01\x12\t\n\x04Qaaa\x10\x8d\x01\x12\t\n\x04Qabx\x10\x8e\x01\x12\t\n\x04Rjng\x10\x8f\x01\x12\t\n\x04Rohg\x10\x90\x01\x12\t\n\x04Roro\x10\x91\x01\x12\t\n\x04Runr\x10\x92\x01\x12\t\n\x04Samr\x10\x93\x01\x12\t\n\x04Sara\x10\x94\x01\x12\t\n\x04Sarb\x10\x95\x01\x12\t\n\x04Saur\x10\x96\x01\x12\t\n\x04Sgnw\x10\x97\x01\x12\t\n\x04Shaw\x10\x98\x01\x12\t\n\x04Shrd\x10\x99\x01\x12\t\n\x04Shui\x10\x9a\x01\x12\t\n\x04Sidd\x10\x9b\x01\x12\t\n\x04Sind\x10\x9c\x01\x12\t\n\x04Sinh\x10\x9d\x01\x12\t\n\x04Sogd\x10\x9e\x01\x12\t\n\x04Sogo\x10\x9f\x01\x12\t\n\x04Sora\x10\xa0\x01\x12\t\n\x04Soyo\x10\xa1\x01\x12\t\n\x04Sund\x10\xa2\x01\x12\t\n\x04Sylo\x10\xa3\x01\x12\t\n\x04Syrc\x10\xa4\x01\x12\t\n\x04Syre\x10\xa5\x01\x12\t\n\x04Syrj\x10\xa6\x01\x12\t\n\x04Syrn\x10\xa7\x01\x12\t\n\x04Tagb\x10\xa8\x01\x12\t\n\x04Takr\x10\xa9\x01\x12\t\n\x04Tale\x10\xaa\x01\x12\t\n\x04Talu\x10\xab\x01\x12\t\n\x04Taml\x10\xac\x01\x12\t\n\x04Tang\x10\xad\x01\x12\t\n\x04Tavt\x10\xae\x01\x12\t\n\x04Telu\x10\xaf\x01\x12\t\n\x04Teng\x10\xb0\x01\x12\t\n\x04Tfng\x10\xb1\x01\x12\t\n\x04Tglg\x10\xb2\x01\x12\t\n\x04Thaa\x10\xb3\x01\x12\t\n\x04Thai\x10\xb4\x01\x12\t\n\x04Tibt\x10\xb5\x01\x12\t\n\x04Tirh\x10\xb6\x01\x12\t\n\x04Ugar\x10\xb7\x01\x12\t\n\x04Vaii\x10\xb8\x01\x12\t\n\x04Visp\x10\xb9\x01\x12\t\n\x04Wara\x10\xba\x01\x12\t\n\x04Wcho\x10\xbb\x01\x12\t\n\x04Wole\x10\xbc\x01\x12\t\n\x04Xpeo\x10\xbd\x01\x12\t\n\x04Xsux\x10\xbe\x01\x12\t\n\x04Yiii\x10\xbf\x01\x12\t\n\x04Zanb\x10\xc0\x01\x12\t\n\x04Zinh\x10\xc1\x01\x12\t\n\x04Zmth\x10\xc2\x01\x12\t\n\x04Zsye\x10\xc3\x01\x12\t\n\x04Zsym\x10\xc4\x01\x12\t\n\x04Zxxx\x10\xc5\x01\x12\t\n\x04Zyyy\x10\xc6\x01\x12\t\n\x04Zzzz\x10\xc7\x01\"\xe4\x11\n\x08Location\x12%\n\x07\x63ountry\x18\x01 \x01(\x0e\x32\x14.pb.Location.Country\x12\r\n\x05state\x18\x02 \x01(\t\x12\x0c\n\x04\x63ity\x18\x03 \x01(\t\x12\x0c\n\x04\x63ode\x18\x04 \x01(\t\x12\x10\n\x08latitude\x18\x05 \x01(\x11\x12\x11\n\tlongitude\x18\x06 \x01(\x11\"\xe0\x10\n\x07\x43ountry\x12\x13\n\x0fUNKNOWN_COUNTRY\x10\x00\x12\x06\n\x02\x41\x46\x10\x01\x12\x06\n\x02\x41X\x10\x02\x12\x06\n\x02\x41L\x10\x03\x12\x06\n\x02\x44Z\x10\x04\x12\x06\n\x02\x41S\x10\x05\x12\x06\n\x02\x41\x44\x10\x06\x12\x06\n\x02\x41O\x10\x07\x12\x06\n\x02\x41I\x10\x08\x12\x06\n\x02\x41Q\x10\t\x12\x06\n\x02\x41G\x10\n\x12\x06\n\x02\x41R\x10\x0b\x12\x06\n\x02\x41M\x10\x0c\x12\x06\n\x02\x41W\x10\r\x12\x06\n\x02\x41U\x10\x0e\x12\x06\n\x02\x41T\x10\x0f\x12\x06\n\x02\x41Z\x10\x10\x12\x06\n\x02\x42S\x10\x11\x12\x06\n\x02\x42H\x10\x12\x12\x06\n\x02\x42\x44\x10\x13\x12\x06\n\x02\x42\x42\x10\x14\x12\x06\n\x02\x42Y\x10\x15\x12\x06\n\x02\x42\x45\x10\x16\x12\x06\n\x02\x42Z\x10\x17\x12\x06\n\x02\x42J\x10\x18\x12\x06\n\x02\x42M\x10\x19\x12\x06\n\x02\x42T\x10\x1a\x12\x06\n\x02\x42O\x10\x1b\x12\x06\n\x02\x42Q\x10\x1c\x12\x06\n\x02\x42\x41\x10\x1d\x12\x06\n\x02\x42W\x10\x1e\x12\x06\n\x02\x42V\x10\x1f\x12\x06\n\x02\x42R\x10 \x12\x06\n\x02IO\x10!\x12\x06\n\x02\x42N\x10\"\x12\x06\n\x02\x42G\x10#\x12\x06\n\x02\x42\x46\x10$\x12\x06\n\x02\x42I\x10%\x12\x06\n\x02KH\x10&\x12\x06\n\x02\x43M\x10\'\x12\x06\n\x02\x43\x41\x10(\x12\x06\n\x02\x43V\x10)\x12\x06\n\x02KY\x10*\x12\x06\n\x02\x43\x46\x10+\x12\x06\n\x02TD\x10,\x12\x06\n\x02\x43L\x10-\x12\x06\n\x02\x43N\x10.\x12\x06\n\x02\x43X\x10/\x12\x06\n\x02\x43\x43\x10\x30\x12\x06\n\x02\x43O\x10\x31\x12\x06\n\x02KM\x10\x32\x12\x06\n\x02\x43G\x10\x33\x12\x06\n\x02\x43\x44\x10\x34\x12\x06\n\x02\x43K\x10\x35\x12\x06\n\x02\x43R\x10\x36\x12\x06\n\x02\x43I\x10\x37\x12\x06\n\x02HR\x10\x38\x12\x06\n\x02\x43U\x10\x39\x12\x06\n\x02\x43W\x10:\x12\x06\n\x02\x43Y\x10;\x12\x06\n\x02\x43Z\x10<\x12\x06\n\x02\x44K\x10=\x12\x06\n\x02\x44J\x10>\x12\x06\n\x02\x44M\x10?\x12\x06\n\x02\x44O\x10@\x12\x06\n\x02\x45\x43\x10\x41\x12\x06\n\x02\x45G\x10\x42\x12\x06\n\x02SV\x10\x43\x12\x06\n\x02GQ\x10\x44\x12\x06\n\x02\x45R\x10\x45\x12\x06\n\x02\x45\x45\x10\x46\x12\x06\n\x02\x45T\x10G\x12\x06\n\x02\x46K\x10H\x12\x06\n\x02\x46O\x10I\x12\x06\n\x02\x46J\x10J\x12\x06\n\x02\x46I\x10K\x12\x06\n\x02\x46R\x10L\x12\x06\n\x02GF\x10M\x12\x06\n\x02PF\x10N\x12\x06\n\x02TF\x10O\x12\x06\n\x02GA\x10P\x12\x06\n\x02GM\x10Q\x12\x06\n\x02GE\x10R\x12\x06\n\x02\x44\x45\x10S\x12\x06\n\x02GH\x10T\x12\x06\n\x02GI\x10U\x12\x06\n\x02GR\x10V\x12\x06\n\x02GL\x10W\x12\x06\n\x02GD\x10X\x12\x06\n\x02GP\x10Y\x12\x06\n\x02GU\x10Z\x12\x06\n\x02GT\x10[\x12\x06\n\x02GG\x10\\\x12\x06\n\x02GN\x10]\x12\x06\n\x02GW\x10^\x12\x06\n\x02GY\x10_\x12\x06\n\x02HT\x10`\x12\x06\n\x02HM\x10\x61\x12\x06\n\x02VA\x10\x62\x12\x06\n\x02HN\x10\x63\x12\x06\n\x02HK\x10\x64\x12\x06\n\x02HU\x10\x65\x12\x06\n\x02IS\x10\x66\x12\x06\n\x02IN\x10g\x12\x06\n\x02ID\x10h\x12\x06\n\x02IR\x10i\x12\x06\n\x02IQ\x10j\x12\x06\n\x02IE\x10k\x12\x06\n\x02IM\x10l\x12\x06\n\x02IL\x10m\x12\x06\n\x02IT\x10n\x12\x06\n\x02JM\x10o\x12\x06\n\x02JP\x10p\x12\x06\n\x02JE\x10q\x12\x06\n\x02JO\x10r\x12\x06\n\x02KZ\x10s\x12\x06\n\x02KE\x10t\x12\x06\n\x02KI\x10u\x12\x06\n\x02KP\x10v\x12\x06\n\x02KR\x10w\x12\x06\n\x02KW\x10x\x12\x06\n\x02KG\x10y\x12\x06\n\x02LA\x10z\x12\x06\n\x02LV\x10{\x12\x06\n\x02LB\x10|\x12\x06\n\x02LS\x10}\x12\x06\n\x02LR\x10~\x12\x06\n\x02LY\x10\x7f\x12\x07\n\x02LI\x10\x80\x01\x12\x07\n\x02LT\x10\x81\x01\x12\x07\n\x02LU\x10\x82\x01\x12\x07\n\x02MO\x10\x83\x01\x12\x07\n\x02MK\x10\x84\x01\x12\x07\n\x02MG\x10\x85\x01\x12\x07\n\x02MW\x10\x86\x01\x12\x07\n\x02MY\x10\x87\x01\x12\x07\n\x02MV\x10\x88\x01\x12\x07\n\x02ML\x10\x89\x01\x12\x07\n\x02MT\x10\x8a\x01\x12\x07\n\x02MH\x10\x8b\x01\x12\x07\n\x02MQ\x10\x8c\x01\x12\x07\n\x02MR\x10\x8d\x01\x12\x07\n\x02MU\x10\x8e\x01\x12\x07\n\x02YT\x10\x8f\x01\x12\x07\n\x02MX\x10\x90\x01\x12\x07\n\x02\x46M\x10\x91\x01\x12\x07\n\x02MD\x10\x92\x01\x12\x07\n\x02MC\x10\x93\x01\x12\x07\n\x02MN\x10\x94\x01\x12\x07\n\x02ME\x10\x95\x01\x12\x07\n\x02MS\x10\x96\x01\x12\x07\n\x02MA\x10\x97\x01\x12\x07\n\x02MZ\x10\x98\x01\x12\x07\n\x02MM\x10\x99\x01\x12\x07\n\x02NA\x10\x9a\x01\x12\x07\n\x02NR\x10\x9b\x01\x12\x07\n\x02NP\x10\x9c\x01\x12\x07\n\x02NL\x10\x9d\x01\x12\x07\n\x02NC\x10\x9e\x01\x12\x07\n\x02NZ\x10\x9f\x01\x12\x07\n\x02NI\x10\xa0\x01\x12\x07\n\x02NE\x10\xa1\x01\x12\x07\n\x02NG\x10\xa2\x01\x12\x07\n\x02NU\x10\xa3\x01\x12\x07\n\x02NF\x10\xa4\x01\x12\x07\n\x02MP\x10\xa5\x01\x12\x07\n\x02NO\x10\xa6\x01\x12\x07\n\x02OM\x10\xa7\x01\x12\x07\n\x02PK\x10\xa8\x01\x12\x07\n\x02PW\x10\xa9\x01\x12\x07\n\x02PS\x10\xaa\x01\x12\x07\n\x02PA\x10\xab\x01\x12\x07\n\x02PG\x10\xac\x01\x12\x07\n\x02PY\x10\xad\x01\x12\x07\n\x02PE\x10\xae\x01\x12\x07\n\x02PH\x10\xaf\x01\x12\x07\n\x02PN\x10\xb0\x01\x12\x07\n\x02PL\x10\xb1\x01\x12\x07\n\x02PT\x10\xb2\x01\x12\x07\n\x02PR\x10\xb3\x01\x12\x07\n\x02QA\x10\xb4\x01\x12\x07\n\x02RE\x10\xb5\x01\x12\x07\n\x02RO\x10\xb6\x01\x12\x07\n\x02RU\x10\xb7\x01\x12\x07\n\x02RW\x10\xb8\x01\x12\x07\n\x02\x42L\x10\xb9\x01\x12\x07\n\x02SH\x10\xba\x01\x12\x07\n\x02KN\x10\xbb\x01\x12\x07\n\x02LC\x10\xbc\x01\x12\x07\n\x02MF\x10\xbd\x01\x12\x07\n\x02PM\x10\xbe\x01\x12\x07\n\x02VC\x10\xbf\x01\x12\x07\n\x02WS\x10\xc0\x01\x12\x07\n\x02SM\x10\xc1\x01\x12\x07\n\x02ST\x10\xc2\x01\x12\x07\n\x02SA\x10\xc3\x01\x12\x07\n\x02SN\x10\xc4\x01\x12\x07\n\x02RS\x10\xc5\x01\x12\x07\n\x02SC\x10\xc6\x01\x12\x07\n\x02SL\x10\xc7\x01\x12\x07\n\x02SG\x10\xc8\x01\x12\x07\n\x02SX\x10\xc9\x01\x12\x07\n\x02SK\x10\xca\x01\x12\x07\n\x02SI\x10\xcb\x01\x12\x07\n\x02SB\x10\xcc\x01\x12\x07\n\x02SO\x10\xcd\x01\x12\x07\n\x02ZA\x10\xce\x01\x12\x07\n\x02GS\x10\xcf\x01\x12\x07\n\x02SS\x10\xd0\x01\x12\x07\n\x02\x45S\x10\xd1\x01\x12\x07\n\x02LK\x10\xd2\x01\x12\x07\n\x02SD\x10\xd3\x01\x12\x07\n\x02SR\x10\xd4\x01\x12\x07\n\x02SJ\x10\xd5\x01\x12\x07\n\x02SZ\x10\xd6\x01\x12\x07\n\x02SE\x10\xd7\x01\x12\x07\n\x02\x43H\x10\xd8\x01\x12\x07\n\x02SY\x10\xd9\x01\x12\x07\n\x02TW\x10\xda\x01\x12\x07\n\x02TJ\x10\xdb\x01\x12\x07\n\x02TZ\x10\xdc\x01\x12\x07\n\x02TH\x10\xdd\x01\x12\x07\n\x02TL\x10\xde\x01\x12\x07\n\x02TG\x10\xdf\x01\x12\x07\n\x02TK\x10\xe0\x01\x12\x07\n\x02TO\x10\xe1\x01\x12\x07\n\x02TT\x10\xe2\x01\x12\x07\n\x02TN\x10\xe3\x01\x12\x07\n\x02TR\x10\xe4\x01\x12\x07\n\x02TM\x10\xe5\x01\x12\x07\n\x02TC\x10\xe6\x01\x12\x07\n\x02TV\x10\xe7\x01\x12\x07\n\x02UG\x10\xe8\x01\x12\x07\n\x02UA\x10\xe9\x01\x12\x07\n\x02\x41\x45\x10\xea\x01\x12\x07\n\x02GB\x10\xeb\x01\x12\x07\n\x02US\x10\xec\x01\x12\x07\n\x02UM\x10\xed\x01\x12\x07\n\x02UY\x10\xee\x01\x12\x07\n\x02UZ\x10\xef\x01\x12\x07\n\x02VU\x10\xf0\x01\x12\x07\n\x02VE\x10\xf1\x01\x12\x07\n\x02VN\x10\xf2\x01\x12\x07\n\x02VG\x10\xf3\x01\x12\x07\n\x02VI\x10\xf4\x01\x12\x07\n\x02WF\x10\xf5\x01\x12\x07\n\x02\x45H\x10\xf6\x01\x12\x07\n\x02YE\x10\xf7\x01\x12\x07\n\x02ZM\x10\xf8\x01\x12\x07\n\x02ZW\x10\xf9\x01\x62\x06proto3')
 )
 
 
 
-_CLAIMLIST_LISTTYPE = _descriptor.EnumDescriptor(
-  name='ListType',
-  full_name='pb.ClaimList.ListType',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='COLLECTION', index=0, number=0,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='DERIVATION', index=1, number=2,
-      serialized_options=None,
-      type=None),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=852,
-  serialized_end=894,
-)
-_sym_db.RegisterEnumDescriptor(_CLAIMLIST_LISTTYPE)
-
 _FEE_CURRENCY = _descriptor.EnumDescriptor(
   name='Currency',
   full_name='pb.Fee.Currency',
@@ -55,70 +32,28 @@ _FEE_CURRENCY = _descriptor.EnumDescriptor(
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_CURRENCY', index=0, number=0,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LBC', index=1, number=1,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BTC', index=2, number=2,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='USD', index=3, number=3,
-      serialized_options=None,
+      options=None,
       type=None),
   ],
   containing_type=None,
-  serialized_options=None,
-  serialized_start=1096,
-  serialized_end=1155,
+  options=None,
+  serialized_start=811,
+  serialized_end=870,
 )
 _sym_db.RegisterEnumDescriptor(_FEE_CURRENCY)
 
-_SOFTWARE_OS = _descriptor.EnumDescriptor(
-  name='OS',
-  full_name='pb.Software.OS',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='UNKNOWN_OS', index=0, number=0,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='ANY', index=1, number=1,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='LINUX', index=2, number=2,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='WINDOWS', index=3, number=3,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='MAC', index=4, number=4,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='ANDROID', index=5, number=5,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='IOS', index=6, number=6,
-      serialized_options=None,
-      type=None),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=1332,
-  serialized_end=1416,
-)
-_sym_db.RegisterEnumDescriptor(_SOFTWARE_OS)
-
 _LANGUAGE_LANGUAGE = _descriptor.EnumDescriptor(
   name='Language',
   full_name='pb.Language.Language',
@@ -127,749 +62,749 @@ _LANGUAGE_LANGUAGE = _descriptor.EnumDescriptor(
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_LANGUAGE', index=0, number=0,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='en', index=1, number=1,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='aa', index=2, number=2,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ab', index=3, number=3,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ae', index=4, number=4,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='af', index=5, number=5,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ak', index=6, number=6,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='am', index=7, number=7,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='an', index=8, number=8,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ar', index=9, number=9,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='as', index=10, number=10,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='av', index=11, number=11,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ay', index=12, number=12,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='az', index=13, number=13,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ba', index=14, number=14,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='be', index=15, number=15,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='bg', index=16, number=16,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='bh', index=17, number=17,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='bi', index=18, number=18,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='bm', index=19, number=19,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='bn', index=20, number=20,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='bo', index=21, number=21,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='br', index=22, number=22,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='bs', index=23, number=23,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ca', index=24, number=24,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ce', index=25, number=25,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ch', index=26, number=26,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='co', index=27, number=27,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='cr', index=28, number=28,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='cs', index=29, number=29,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='cu', index=30, number=30,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='cv', index=31, number=31,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='cy', index=32, number=32,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='da', index=33, number=33,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='de', index=34, number=34,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='dv', index=35, number=35,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='dz', index=36, number=36,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ee', index=37, number=37,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='el', index=38, number=38,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='eo', index=39, number=39,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='es', index=40, number=40,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='et', index=41, number=41,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='eu', index=42, number=42,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='fa', index=43, number=43,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ff', index=44, number=44,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='fi', index=45, number=45,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='fj', index=46, number=46,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='fo', index=47, number=47,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='fr', index=48, number=48,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='fy', index=49, number=49,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ga', index=50, number=50,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='gd', index=51, number=51,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='gl', index=52, number=52,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='gn', index=53, number=53,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='gu', index=54, number=54,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='gv', index=55, number=55,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ha', index=56, number=56,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='he', index=57, number=57,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='hi', index=58, number=58,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ho', index=59, number=59,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='hr', index=60, number=60,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ht', index=61, number=61,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='hu', index=62, number=62,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='hy', index=63, number=63,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='hz', index=64, number=64,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ia', index=65, number=65,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='id', index=66, number=66,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ie', index=67, number=67,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ig', index=68, number=68,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ii', index=69, number=69,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ik', index=70, number=70,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='io', index=71, number=71,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='is', index=72, number=72,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='it', index=73, number=73,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='iu', index=74, number=74,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ja', index=75, number=75,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='jv', index=76, number=76,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ka', index=77, number=77,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kg', index=78, number=78,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ki', index=79, number=79,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kj', index=80, number=80,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kk', index=81, number=81,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kl', index=82, number=82,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='km', index=83, number=83,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kn', index=84, number=84,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ko', index=85, number=85,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kr', index=86, number=86,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ks', index=87, number=87,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ku', index=88, number=88,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kv', index=89, number=89,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='kw', index=90, number=90,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ky', index=91, number=91,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='la', index=92, number=92,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='lb', index=93, number=93,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='lg', index=94, number=94,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='li', index=95, number=95,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ln', index=96, number=96,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='lo', index=97, number=97,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='lt', index=98, number=98,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='lu', index=99, number=99,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='lv', index=100, number=100,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='mg', index=101, number=101,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='mh', index=102, number=102,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='mi', index=103, number=103,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='mk', index=104, number=104,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ml', index=105, number=105,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='mn', index=106, number=106,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='mr', index=107, number=107,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ms', index=108, number=108,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='mt', index=109, number=109,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='my', index=110, number=110,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='na', index=111, number=111,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='nb', index=112, number=112,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='nd', index=113, number=113,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ne', index=114, number=114,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ng', index=115, number=115,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='nl', index=116, number=116,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='nn', index=117, number=117,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='no', index=118, number=118,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='nr', index=119, number=119,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='nv', index=120, number=120,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ny', index=121, number=121,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='oc', index=122, number=122,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='oj', index=123, number=123,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='om', index=124, number=124,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='or', index=125, number=125,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='os', index=126, number=126,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='pa', index=127, number=127,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='pi', index=128, number=128,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='pl', index=129, number=129,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ps', index=130, number=130,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='pt', index=131, number=131,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='qu', index=132, number=132,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='rm', index=133, number=133,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='rn', index=134, number=134,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ro', index=135, number=135,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ru', index=136, number=136,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='rw', index=137, number=137,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sa', index=138, number=138,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sc', index=139, number=139,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sd', index=140, number=140,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='se', index=141, number=141,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sg', index=142, number=142,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='si', index=143, number=143,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sk', index=144, number=144,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sl', index=145, number=145,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sm', index=146, number=146,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sn', index=147, number=147,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='so', index=148, number=148,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sq', index=149, number=149,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sr', index=150, number=150,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ss', index=151, number=151,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='st', index=152, number=152,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='su', index=153, number=153,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sv', index=154, number=154,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='sw', index=155, number=155,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ta', index=156, number=156,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='te', index=157, number=157,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='tg', index=158, number=158,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='th', index=159, number=159,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ti', index=160, number=160,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='tk', index=161, number=161,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='tl', index=162, number=162,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='tn', index=163, number=163,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='to', index=164, number=164,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='tr', index=165, number=165,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ts', index=166, number=166,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='tt', index=167, number=167,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='tw', index=168, number=168,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ty', index=169, number=169,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ug', index=170, number=170,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='uk', index=171, number=171,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ur', index=172, number=172,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='uz', index=173, number=173,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ve', index=174, number=174,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='vi', index=175, number=175,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='vo', index=176, number=176,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='wa', index=177, number=177,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='wo', index=178, number=178,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='xh', index=179, number=179,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='yi', index=180, number=180,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='yo', index=181, number=181,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='za', index=182, number=182,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='zh', index=183, number=183,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='zu', index=184, number=184,
-      serialized_options=None,
+      options=None,
       type=None),
   ],
   containing_type=None,
-  serialized_options=None,
-  serialized_start=1548,
-  serialized_end=3109,
+  options=None,
+  serialized_start=1177,
+  serialized_end=2738,
 )
 _sym_db.RegisterEnumDescriptor(_LANGUAGE_LANGUAGE)
 
@@ -881,809 +816,809 @@ _LANGUAGE_SCRIPT = _descriptor.EnumDescriptor(
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_SCRIPT', index=0, number=0,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Adlm', index=1, number=1,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Afak', index=2, number=2,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Aghb', index=3, number=3,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Ahom', index=4, number=4,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Arab', index=5, number=5,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Aran', index=6, number=6,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Armi', index=7, number=7,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Armn', index=8, number=8,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Avst', index=9, number=9,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Bali', index=10, number=10,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Bamu', index=11, number=11,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Bass', index=12, number=12,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Batk', index=13, number=13,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Beng', index=14, number=14,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Bhks', index=15, number=15,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Blis', index=16, number=16,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Bopo', index=17, number=17,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Brah', index=18, number=18,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Brai', index=19, number=19,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Bugi', index=20, number=20,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Buhd', index=21, number=21,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cakm', index=22, number=22,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cans', index=23, number=23,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cari', index=24, number=24,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cham', index=25, number=25,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cher', index=26, number=26,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cirt', index=27, number=27,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Copt', index=28, number=28,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cpmn', index=29, number=29,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cprt', index=30, number=30,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cyrl', index=31, number=31,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Cyrs', index=32, number=32,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Deva', index=33, number=33,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Dogr', index=34, number=34,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Dsrt', index=35, number=35,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Dupl', index=36, number=36,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Egyd', index=37, number=37,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Egyh', index=38, number=38,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Egyp', index=39, number=39,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Elba', index=40, number=40,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Elym', index=41, number=41,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Ethi', index=42, number=42,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Geok', index=43, number=43,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Geor', index=44, number=44,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Glag', index=45, number=45,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Gong', index=46, number=46,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Gonm', index=47, number=47,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Goth', index=48, number=48,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Gran', index=49, number=49,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Grek', index=50, number=50,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Gujr', index=51, number=51,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Guru', index=52, number=52,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hanb', index=53, number=53,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hang', index=54, number=54,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hani', index=55, number=55,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hano', index=56, number=56,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hans', index=57, number=57,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hant', index=58, number=58,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hatr', index=59, number=59,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hebr', index=60, number=60,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hira', index=61, number=61,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hluw', index=62, number=62,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hmng', index=63, number=63,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hmnp', index=64, number=64,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hrkt', index=65, number=65,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Hung', index=66, number=66,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Inds', index=67, number=67,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Ital', index=68, number=68,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Jamo', index=69, number=69,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Java', index=70, number=70,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Jpan', index=71, number=71,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Jurc', index=72, number=72,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Kali', index=73, number=73,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Kana', index=74, number=74,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Khar', index=75, number=75,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Khmr', index=76, number=76,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Khoj', index=77, number=77,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Kitl', index=78, number=78,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Kits', index=79, number=79,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Knda', index=80, number=80,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Kore', index=81, number=81,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Kpel', index=82, number=82,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Kthi', index=83, number=83,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Lana', index=84, number=84,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Laoo', index=85, number=85,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Latf', index=86, number=86,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Latg', index=87, number=87,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Latn', index=88, number=88,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Leke', index=89, number=89,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Lepc', index=90, number=90,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Limb', index=91, number=91,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Lina', index=92, number=92,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Linb', index=93, number=93,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Lisu', index=94, number=94,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Loma', index=95, number=95,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Lyci', index=96, number=96,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Lydi', index=97, number=97,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mahj', index=98, number=98,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Maka', index=99, number=99,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mand', index=100, number=100,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mani', index=101, number=101,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Marc', index=102, number=102,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Maya', index=103, number=103,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Medf', index=104, number=104,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mend', index=105, number=105,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Merc', index=106, number=106,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mero', index=107, number=107,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mlym', index=108, number=108,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Modi', index=109, number=109,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mong', index=110, number=110,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Moon', index=111, number=111,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mroo', index=112, number=112,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mtei', index=113, number=113,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mult', index=114, number=114,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Mymr', index=115, number=115,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Nand', index=116, number=116,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Narb', index=117, number=117,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Nbat', index=118, number=118,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Newa', index=119, number=119,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Nkdb', index=120, number=120,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Nkgb', index=121, number=121,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Nkoo', index=122, number=122,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Nshu', index=123, number=123,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Ogam', index=124, number=124,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Olck', index=125, number=125,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Orkh', index=126, number=126,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Orya', index=127, number=127,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Osge', index=128, number=128,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Osma', index=129, number=129,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Palm', index=130, number=130,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Pauc', index=131, number=131,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Perm', index=132, number=132,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Phag', index=133, number=133,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Phli', index=134, number=134,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Phlp', index=135, number=135,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Phlv', index=136, number=136,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Phnx', index=137, number=137,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Plrd', index=138, number=138,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Piqd', index=139, number=139,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Prti', index=140, number=140,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Qaaa', index=141, number=141,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Qabx', index=142, number=142,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Rjng', index=143, number=143,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Rohg', index=144, number=144,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Roro', index=145, number=145,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Runr', index=146, number=146,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Samr', index=147, number=147,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sara', index=148, number=148,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sarb', index=149, number=149,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Saur', index=150, number=150,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sgnw', index=151, number=151,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Shaw', index=152, number=152,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Shrd', index=153, number=153,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Shui', index=154, number=154,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sidd', index=155, number=155,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sind', index=156, number=156,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sinh', index=157, number=157,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sogd', index=158, number=158,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sogo', index=159, number=159,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sora', index=160, number=160,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Soyo', index=161, number=161,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sund', index=162, number=162,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Sylo', index=163, number=163,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Syrc', index=164, number=164,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Syre', index=165, number=165,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Syrj', index=166, number=166,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Syrn', index=167, number=167,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tagb', index=168, number=168,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Takr', index=169, number=169,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tale', index=170, number=170,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Talu', index=171, number=171,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Taml', index=172, number=172,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tang', index=173, number=173,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tavt', index=174, number=174,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Telu', index=175, number=175,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Teng', index=176, number=176,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tfng', index=177, number=177,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tglg', index=178, number=178,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Thaa', index=179, number=179,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Thai', index=180, number=180,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tibt', index=181, number=181,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Tirh', index=182, number=182,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Ugar', index=183, number=183,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Vaii', index=184, number=184,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Visp', index=185, number=185,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Wara', index=186, number=186,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Wcho', index=187, number=187,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Wole', index=188, number=188,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Xpeo', index=189, number=189,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Xsux', index=190, number=190,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Yiii', index=191, number=191,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zanb', index=192, number=192,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zinh', index=193, number=193,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zmth', index=194, number=194,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zsye', index=195, number=195,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zsym', index=196, number=196,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zxxx', index=197, number=197,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zyyy', index=198, number=198,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='Zzzz', index=199, number=199,
-      serialized_options=None,
+      options=None,
       type=None),
   ],
   containing_type=None,
-  serialized_options=None,
-  serialized_start=3112,
-  serialized_end=5202,
+  options=None,
+  serialized_start=2741,
+  serialized_end=4831,
 )
 _sym_db.RegisterEnumDescriptor(_LANGUAGE_SCRIPT)
 
@@ -1695,2129 +1630,1009 @@ _LOCATION_COUNTRY = _descriptor.EnumDescriptor(
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_COUNTRY', index=0, number=0,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AF', index=1, number=1,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AX', index=2, number=2,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AL', index=3, number=3,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DZ', index=4, number=4,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AS', index=5, number=5,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AD', index=6, number=6,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AO', index=7, number=7,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AI', index=8, number=8,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AQ', index=9, number=9,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AG', index=10, number=10,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AR', index=11, number=11,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AM', index=12, number=12,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AW', index=13, number=13,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AU', index=14, number=14,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AT', index=15, number=15,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AZ', index=16, number=16,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BS', index=17, number=17,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BH', index=18, number=18,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BD', index=19, number=19,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BB', index=20, number=20,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BY', index=21, number=21,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BE', index=22, number=22,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BZ', index=23, number=23,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BJ', index=24, number=24,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BM', index=25, number=25,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BT', index=26, number=26,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BO', index=27, number=27,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BQ', index=28, number=28,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BA', index=29, number=29,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BW', index=30, number=30,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BV', index=31, number=31,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BR', index=32, number=32,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IO', index=33, number=33,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BN', index=34, number=34,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BG', index=35, number=35,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BF', index=36, number=36,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BI', index=37, number=37,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KH', index=38, number=38,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CM', index=39, number=39,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CA', index=40, number=40,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CV', index=41, number=41,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KY', index=42, number=42,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CF', index=43, number=43,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TD', index=44, number=44,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CL', index=45, number=45,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CN', index=46, number=46,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CX', index=47, number=47,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CC', index=48, number=48,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CO', index=49, number=49,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KM', index=50, number=50,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CG', index=51, number=51,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CD', index=52, number=52,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CK', index=53, number=53,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CR', index=54, number=54,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CI', index=55, number=55,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HR', index=56, number=56,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CU', index=57, number=57,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CW', index=58, number=58,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CY', index=59, number=59,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CZ', index=60, number=60,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DK', index=61, number=61,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DJ', index=62, number=62,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DM', index=63, number=63,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DO', index=64, number=64,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='EC', index=65, number=65,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='EG', index=66, number=66,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SV', index=67, number=67,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GQ', index=68, number=68,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ER', index=69, number=69,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='EE', index=70, number=70,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ET', index=71, number=71,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FK', index=72, number=72,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FO', index=73, number=73,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FJ', index=74, number=74,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FI', index=75, number=75,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FR', index=76, number=76,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GF', index=77, number=77,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PF', index=78, number=78,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TF', index=79, number=79,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GA', index=80, number=80,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GM', index=81, number=81,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GE', index=82, number=82,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DE', index=83, number=83,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GH', index=84, number=84,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GI', index=85, number=85,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GR', index=86, number=86,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GL', index=87, number=87,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GD', index=88, number=88,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GP', index=89, number=89,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GU', index=90, number=90,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GT', index=91, number=91,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GG', index=92, number=92,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GN', index=93, number=93,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GW', index=94, number=94,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GY', index=95, number=95,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HT', index=96, number=96,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HM', index=97, number=97,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VA', index=98, number=98,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HN', index=99, number=99,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HK', index=100, number=100,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HU', index=101, number=101,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IS', index=102, number=102,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IN', index=103, number=103,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ID', index=104, number=104,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IR', index=105, number=105,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IQ', index=106, number=106,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IE', index=107, number=107,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IM', index=108, number=108,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IL', index=109, number=109,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='IT', index=110, number=110,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='JM', index=111, number=111,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='JP', index=112, number=112,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='JE', index=113, number=113,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='JO', index=114, number=114,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KZ', index=115, number=115,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KE', index=116, number=116,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KI', index=117, number=117,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KP', index=118, number=118,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KR', index=119, number=119,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KW', index=120, number=120,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KG', index=121, number=121,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LA', index=122, number=122,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LV', index=123, number=123,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LB', index=124, number=124,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LS', index=125, number=125,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LR', index=126, number=126,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LY', index=127, number=127,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LI', index=128, number=128,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LT', index=129, number=129,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LU', index=130, number=130,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MO', index=131, number=131,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MK', index=132, number=132,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MG', index=133, number=133,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MW', index=134, number=134,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MY', index=135, number=135,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MV', index=136, number=136,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ML', index=137, number=137,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MT', index=138, number=138,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MH', index=139, number=139,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MQ', index=140, number=140,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MR', index=141, number=141,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MU', index=142, number=142,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='YT', index=143, number=143,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MX', index=144, number=144,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FM', index=145, number=145,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MD', index=146, number=146,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MC', index=147, number=147,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MN', index=148, number=148,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ME', index=149, number=149,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MS', index=150, number=150,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MA', index=151, number=151,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MZ', index=152, number=152,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MM', index=153, number=153,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NA', index=154, number=154,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NR', index=155, number=155,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NP', index=156, number=156,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NL', index=157, number=157,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NC', index=158, number=158,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NZ', index=159, number=159,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NI', index=160, number=160,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NE', index=161, number=161,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NG', index=162, number=162,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NU', index=163, number=163,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NF', index=164, number=164,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MP', index=165, number=165,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NO', index=166, number=166,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='OM', index=167, number=167,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PK', index=168, number=168,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PW', index=169, number=169,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PS', index=170, number=170,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PA', index=171, number=171,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PG', index=172, number=172,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PY', index=173, number=173,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PE', index=174, number=174,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PH', index=175, number=175,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PN', index=176, number=176,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PL', index=177, number=177,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PT', index=178, number=178,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PR', index=179, number=179,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='QA', index=180, number=180,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='RE', index=181, number=181,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='RO', index=182, number=182,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='RU', index=183, number=183,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='RW', index=184, number=184,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BL', index=185, number=185,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SH', index=186, number=186,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KN', index=187, number=187,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LC', index=188, number=188,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MF', index=189, number=189,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PM', index=190, number=190,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VC', index=191, number=191,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='WS', index=192, number=192,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SM', index=193, number=193,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ST', index=194, number=194,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SA', index=195, number=195,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SN', index=196, number=196,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='RS', index=197, number=197,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SC', index=198, number=198,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SL', index=199, number=199,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SG', index=200, number=200,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SX', index=201, number=201,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SK', index=202, number=202,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SI', index=203, number=203,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SB', index=204, number=204,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SO', index=205, number=205,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ZA', index=206, number=206,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GS', index=207, number=207,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SS', index=208, number=208,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ES', index=209, number=209,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LK', index=210, number=210,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SD', index=211, number=211,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SR', index=212, number=212,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SJ', index=213, number=213,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SZ', index=214, number=214,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SE', index=215, number=215,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CH', index=216, number=216,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SY', index=217, number=217,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TW', index=218, number=218,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TJ', index=219, number=219,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TZ', index=220, number=220,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TH', index=221, number=221,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TL', index=222, number=222,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TG', index=223, number=223,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TK', index=224, number=224,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TO', index=225, number=225,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TT', index=226, number=226,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TN', index=227, number=227,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TR', index=228, number=228,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TM', index=229, number=229,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TC', index=230, number=230,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TV', index=231, number=231,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='UG', index=232, number=232,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='UA', index=233, number=233,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AE', index=234, number=234,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GB', index=235, number=235,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='US', index=236, number=236,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='UM', index=237, number=237,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='UY', index=238, number=238,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='UZ', index=239, number=239,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VU', index=240, number=240,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VE', index=241, number=241,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VN', index=242, number=242,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VG', index=243, number=243,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VI', index=244, number=244,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='WF', index=245, number=245,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='EH', index=246, number=246,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='YE', index=247, number=247,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ZM', index=248, number=248,
-      serialized_options=None,
+      options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ZW', index=249, number=249,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R001', index=250, number=250,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R002', index=251, number=251,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R015', index=252, number=252,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R012', index=253, number=253,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R818', index=254, number=254,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R434', index=255, number=255,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R504', index=256, number=256,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R729', index=257, number=257,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R788', index=258, number=258,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R732', index=259, number=259,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R202', index=260, number=260,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R014', index=261, number=261,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R086', index=262, number=262,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R108', index=263, number=263,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R174', index=264, number=264,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R262', index=265, number=265,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R232', index=266, number=266,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R231', index=267, number=267,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R260', index=268, number=268,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R404', index=269, number=269,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R450', index=270, number=270,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R454', index=271, number=271,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R480', index=272, number=272,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R175', index=273, number=273,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R508', index=274, number=274,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R638', index=275, number=275,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R646', index=276, number=276,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R690', index=277, number=277,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R706', index=278, number=278,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R728', index=279, number=279,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R800', index=280, number=280,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R834', index=281, number=281,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R894', index=282, number=282,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R716', index=283, number=283,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R017', index=284, number=284,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R024', index=285, number=285,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R120', index=286, number=286,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R140', index=287, number=287,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R148', index=288, number=288,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R178', index=289, number=289,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R180', index=290, number=290,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R226', index=291, number=291,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R266', index=292, number=292,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R678', index=293, number=293,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R018', index=294, number=294,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R072', index=295, number=295,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R748', index=296, number=296,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R426', index=297, number=297,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R516', index=298, number=298,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R710', index=299, number=299,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R011', index=300, number=300,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R204', index=301, number=301,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R854', index=302, number=302,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R132', index=303, number=303,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R384', index=304, number=304,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R270', index=305, number=305,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R288', index=306, number=306,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R324', index=307, number=307,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R624', index=308, number=308,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R430', index=309, number=309,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R466', index=310, number=310,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R478', index=311, number=311,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R562', index=312, number=312,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R566', index=313, number=313,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R654', index=314, number=314,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R686', index=315, number=315,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R694', index=316, number=316,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R768', index=317, number=317,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R019', index=318, number=318,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R419', index=319, number=319,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R029', index=320, number=320,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R660', index=321, number=321,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R028', index=322, number=322,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R533', index=323, number=323,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R044', index=324, number=324,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R052', index=325, number=325,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R535', index=326, number=326,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R092', index=327, number=327,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R136', index=328, number=328,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R192', index=329, number=329,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R531', index=330, number=330,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R212', index=331, number=331,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R214', index=332, number=332,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R308', index=333, number=333,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R312', index=334, number=334,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R332', index=335, number=335,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R388', index=336, number=336,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R474', index=337, number=337,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R500', index=338, number=338,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R630', index=339, number=339,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R652', index=340, number=340,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R659', index=341, number=341,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R662', index=342, number=342,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R663', index=343, number=343,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R670', index=344, number=344,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R534', index=345, number=345,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R780', index=346, number=346,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R796', index=347, number=347,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R850', index=348, number=348,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R013', index=349, number=349,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R084', index=350, number=350,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R188', index=351, number=351,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R222', index=352, number=352,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R320', index=353, number=353,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R340', index=354, number=354,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R484', index=355, number=355,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R558', index=356, number=356,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R591', index=357, number=357,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R005', index=358, number=358,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R032', index=359, number=359,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R068', index=360, number=360,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R074', index=361, number=361,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R076', index=362, number=362,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R152', index=363, number=363,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R170', index=364, number=364,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R218', index=365, number=365,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R238', index=366, number=366,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R254', index=367, number=367,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R328', index=368, number=368,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R600', index=369, number=369,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R604', index=370, number=370,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R239', index=371, number=371,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R740', index=372, number=372,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R858', index=373, number=373,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R862', index=374, number=374,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R021', index=375, number=375,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R060', index=376, number=376,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R124', index=377, number=377,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R304', index=378, number=378,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R666', index=379, number=379,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R840', index=380, number=380,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R010', index=381, number=381,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R142', index=382, number=382,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R143', index=383, number=383,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R398', index=384, number=384,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R417', index=385, number=385,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R762', index=386, number=386,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R795', index=387, number=387,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R860', index=388, number=388,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R030', index=389, number=389,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R156', index=390, number=390,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R344', index=391, number=391,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R446', index=392, number=392,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R408', index=393, number=393,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R392', index=394, number=394,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R496', index=395, number=395,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R410', index=396, number=396,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R035', index=397, number=397,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R096', index=398, number=398,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R116', index=399, number=399,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R360', index=400, number=400,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R418', index=401, number=401,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R458', index=402, number=402,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R104', index=403, number=403,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R608', index=404, number=404,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R702', index=405, number=405,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R764', index=406, number=406,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R626', index=407, number=407,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R704', index=408, number=408,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R034', index=409, number=409,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R004', index=410, number=410,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R050', index=411, number=411,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R064', index=412, number=412,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R356', index=413, number=413,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R364', index=414, number=414,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R462', index=415, number=415,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R524', index=416, number=416,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R586', index=417, number=417,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R144', index=418, number=418,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R145', index=419, number=419,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R051', index=420, number=420,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R031', index=421, number=421,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R048', index=422, number=422,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R196', index=423, number=423,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R268', index=424, number=424,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R368', index=425, number=425,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R376', index=426, number=426,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R400', index=427, number=427,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R414', index=428, number=428,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R422', index=429, number=429,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R512', index=430, number=430,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R634', index=431, number=431,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R682', index=432, number=432,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R275', index=433, number=433,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R760', index=434, number=434,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R792', index=435, number=435,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R784', index=436, number=436,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R887', index=437, number=437,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R150', index=438, number=438,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R151', index=439, number=439,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R112', index=440, number=440,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R100', index=441, number=441,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R203', index=442, number=442,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R348', index=443, number=443,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R616', index=444, number=444,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R498', index=445, number=445,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R642', index=446, number=446,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R643', index=447, number=447,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R703', index=448, number=448,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R804', index=449, number=449,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R154', index=450, number=450,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R248', index=451, number=451,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R830', index=452, number=452,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R831', index=453, number=453,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R832', index=454, number=454,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R680', index=455, number=455,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R208', index=456, number=456,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R233', index=457, number=457,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R234', index=458, number=458,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R246', index=459, number=459,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R352', index=460, number=460,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R372', index=461, number=461,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R833', index=462, number=462,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R428', index=463, number=463,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R440', index=464, number=464,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R578', index=465, number=465,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R744', index=466, number=466,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R752', index=467, number=467,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R826', index=468, number=468,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R039', index=469, number=469,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R008', index=470, number=470,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R020', index=471, number=471,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R070', index=472, number=472,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R191', index=473, number=473,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R292', index=474, number=474,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R300', index=475, number=475,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R336', index=476, number=476,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R380', index=477, number=477,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R470', index=478, number=478,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R499', index=479, number=479,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R807', index=480, number=480,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R620', index=481, number=481,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R674', index=482, number=482,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R688', index=483, number=483,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R705', index=484, number=484,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R724', index=485, number=485,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R155', index=486, number=486,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R040', index=487, number=487,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R056', index=488, number=488,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R250', index=489, number=489,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R276', index=490, number=490,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R438', index=491, number=491,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R442', index=492, number=492,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R492', index=493, number=493,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R528', index=494, number=494,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R756', index=495, number=495,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R009', index=496, number=496,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R053', index=497, number=497,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R036', index=498, number=498,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R162', index=499, number=499,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R166', index=500, number=500,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R334', index=501, number=501,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R554', index=502, number=502,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R574', index=503, number=503,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R054', index=504, number=504,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R242', index=505, number=505,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R540', index=506, number=506,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R598', index=507, number=507,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R090', index=508, number=508,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R548', index=509, number=509,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R057', index=510, number=510,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R316', index=511, number=511,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R296', index=512, number=512,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R584', index=513, number=513,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R583', index=514, number=514,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R520', index=515, number=515,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R580', index=516, number=516,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R585', index=517, number=517,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R581', index=518, number=518,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R061', index=519, number=519,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R016', index=520, number=520,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R184', index=521, number=521,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R258', index=522, number=522,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R570', index=523, number=523,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R612', index=524, number=524,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R882', index=525, number=525,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R772', index=526, number=526,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R776', index=527, number=527,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R798', index=528, number=528,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='R876', index=529, number=529,
-      serialized_options=None,
+      options=None,
       type=None),
   ],
   containing_type=None,
-  serialized_options=None,
-  serialized_start=5337,
-  serialized_end=10561,
+  options=None,
+  serialized_start=4966,
+  serialized_end=7110,
 )
 _sym_db.RegisterEnumDescriptor(_LOCATION_COUNTRY)
 
@@ -3835,77 +2650,21 @@ _CLAIM = _descriptor.Descriptor(
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='channel', full_name='pb.Claim.channel', index=1,
       number=2, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='collection', full_name='pb.Claim.collection', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='repost', full_name='pb.Claim.repost', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='title', full_name='pb.Claim.title', index=4,
-      number=8, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='description', full_name='pb.Claim.description', index=5,
-      number=9, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='thumbnail', full_name='pb.Claim.thumbnail', index=6,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='tags', full_name='pb.Claim.tags', index=7,
-      number=11, type=9, cpp_type=9, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='languages', full_name='pb.Claim.languages', index=8,
-      number=12, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='locations', full_name='pb.Claim.locations', index=9,
-      number=13, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
@@ -3914,105 +2673,8 @@ _CLAIM = _descriptor.Descriptor(
       name='type', full_name='pb.Claim.type',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=20,
-  serialized_end=319,
-)
-
-
-_STREAM = _descriptor.Descriptor(
-  name='Stream',
-  full_name='pb.Stream',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='source', full_name='pb.Stream.source', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='author', full_name='pb.Stream.author', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='license', full_name='pb.Stream.license', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='license_url', full_name='pb.Stream.license_url', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='release_time', full_name='pb.Stream.release_time', index=4,
-      number=5, type=3, cpp_type=2, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='fee', full_name='pb.Stream.fee', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='image', full_name='pb.Stream.image', index=6,
-      number=10, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='video', full_name='pb.Stream.video', index=7,
-      number=11, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='audio', full_name='pb.Stream.audio', index=8,
-      number=12, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='software', full_name='pb.Stream.software', index=9,
-      number=13, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='type', full_name='pb.Stream.type',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=322,
-  serialized_end=582,
+  serialized_start=19,
+  serialized_end=96,
 )
 
 
@@ -4029,192 +2691,230 @@ _CHANNEL = _descriptor.Descriptor(
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='email', full_name='pb.Channel.email', index=1,
+      name='title', full_name='pb.Channel.title', index=1,
       number=2, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='website_url', full_name='pb.Channel.website_url', index=2,
+      name='description', full_name='pb.Channel.description', index=2,
       number=3, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='cover', full_name='pb.Channel.cover', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='featured', full_name='pb.Channel.featured', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=584,
-  serialized_end=709,
-)
-
-
-_CLAIMREFERENCE = _descriptor.Descriptor(
-  name='ClaimReference',
-  full_name='pb.ClaimReference',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='claim_hash', full_name='pb.ClaimReference.claim_hash', index=0,
-      number=1, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=711,
-  serialized_end=747,
-)
-
-
-_CLAIMLIST = _descriptor.Descriptor(
-  name='ClaimList',
-  full_name='pb.ClaimList',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='list_type', full_name='pb.ClaimList.list_type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='claim_references', full_name='pb.ClaimList.claim_references', index=1,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _CLAIMLIST_LISTTYPE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=750,
-  serialized_end=894,
-)
-
-
-_SOURCE = _descriptor.Descriptor(
-  name='Source',
-  full_name='pb.Source',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='hash', full_name='pb.Source.hash', index=0,
-      number=1, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='pb.Source.name', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='size', full_name='pb.Source.size', index=2,
-      number=3, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='media_type', full_name='pb.Source.media_type', index=3,
+      name='thumbnail_url', full_name='pb.Channel.thumbnail_url', index=3,
       number=4, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='url', full_name='pb.Source.url', index=4,
-      number=5, type=9, cpp_type=9, label=1,
+      name='tags', full_name='pb.Channel.tags', index=4,
+      number=5, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='languages', full_name='pb.Channel.languages', index=5,
+      number=6, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='locations', full_name='pb.Channel.locations', index=6,
+      number=7, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='contact_email', full_name='pb.Channel.contact_email', index=7,
+      number=8, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='sd_hash', full_name='pb.Source.sd_hash', index=5,
-      number=6, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
+      name='homepage_url', full_name='pb.Channel.homepage_url', index=8,
+      number=9, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='bt_infohash', full_name='pb.Source.bt_infohash', index=6,
-      number=7, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
+      name='cover_url', full_name='pb.Channel.cover_url', index=9,
+      number=10, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=896,
-  serialized_end=1017,
+  serialized_start=99,
+  serialized_end=331,
+)
+
+
+_STREAM = _descriptor.Descriptor(
+  name='Stream',
+  full_name='pb.Stream',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='sd_hash', full_name='pb.Stream.sd_hash', index=0,
+      number=1, type=12, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b(""),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='title', full_name='pb.Stream.title', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='description', full_name='pb.Stream.description', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='thumbnail_url', full_name='pb.Stream.thumbnail_url', index=3,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tags', full_name='pb.Stream.tags', index=4,
+      number=5, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='languages', full_name='pb.Stream.languages', index=5,
+      number=6, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='locations', full_name='pb.Stream.locations', index=6,
+      number=7, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='author', full_name='pb.Stream.author', index=7,
+      number=8, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='license', full_name='pb.Stream.license', index=8,
+      number=9, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='license_url', full_name='pb.Stream.license_url', index=9,
+      number=10, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='release_time', full_name='pb.Stream.release_time', index=10,
+      number=11, type=3, cpp_type=2, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='media_type', full_name='pb.Stream.media_type', index=11,
+      number=13, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='file', full_name='pb.Stream.file', index=12,
+      number=14, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='fee', full_name='pb.Stream.fee', index=13,
+      number=15, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='image', full_name='pb.Stream.image', index=14,
+      number=16, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='video', full_name='pb.Stream.video', index=15,
+      number=17, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='audio', full_name='pb.Stream.audio', index=16,
+      number=18, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+    _descriptor.OneofDescriptor(
+      name='type', full_name='pb.Stream.type',
+      index=0, containing_type=None, fields=[]),
+  ],
+  serialized_start=334,
+  serialized_end=732,
 )
 
 
@@ -4231,21 +2931,21 @@ _FEE = _descriptor.Descriptor(
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='address', full_name='pb.Fee.address', index=1,
       number=2, type=12, cpp_type=9, label=1,
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='amount', full_name='pb.Fee.amount', index=2,
       number=3, type=4, cpp_type=4, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -4253,14 +2953,59 @@ _FEE = _descriptor.Descriptor(
   enum_types=[
     _FEE_CURRENCY,
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1020,
-  serialized_end=1155,
+  serialized_start=735,
+  serialized_end=870,
+)
+
+
+_FILE = _descriptor.Descriptor(
+  name='File',
+  full_name='pb.File',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='hash', full_name='pb.File.hash', index=0,
+      number=3, type=12, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b(""),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='name', full_name='pb.File.name', index=1,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='size', full_name='pb.File.size', index=2,
+      number=2, type=4, cpp_type=4, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=872,
+  serialized_end=920,
 )
 
 
@@ -4277,28 +3022,28 @@ _IMAGE = _descriptor.Descriptor(
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='height', full_name='pb.Image.height', index=1,
       number=2, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1157,
-  serialized_end=1195,
+  serialized_start=922,
+  serialized_end=960,
 )
 
 
@@ -4315,42 +3060,35 @@ _VIDEO = _descriptor.Descriptor(
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='height', full_name='pb.Video.height', index=1,
       number=2, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='duration', full_name='pb.Video.duration', index=2,
       number=3, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='audio', full_name='pb.Video.audio', index=3,
-      number=15, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1197,
-  serialized_end=1279,
+  serialized_start=962,
+  serialized_end=1018,
 )
 
 
@@ -4367,53 +3105,21 @@ _AUDIO = _descriptor.Descriptor(
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1281,
-  serialized_end=1306,
-)
-
-
-_SOFTWARE = _descriptor.Descriptor(
-  name='Software',
-  full_name='pb.Software',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='os', full_name='pb.Software.os', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _SOFTWARE_OS,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1308,
-  serialized_end=1416,
+  serialized_start=1020,
+  serialized_end=1045,
 )
 
 
@@ -4430,21 +3136,21 @@ _LANGUAGE = _descriptor.Descriptor(
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='script', full_name='pb.Language.script', index=1,
       number=2, type=14, cpp_type=8, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='region', full_name='pb.Language.region', index=2,
       number=3, type=14, cpp_type=8, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -4453,14 +3159,14 @@ _LANGUAGE = _descriptor.Descriptor(
     _LANGUAGE_LANGUAGE,
     _LANGUAGE_SCRIPT,
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1419,
-  serialized_end=5202,
+  serialized_start=1048,
+  serialized_end=4831,
 )
 
 
@@ -4477,42 +3183,42 @@ _LOCATION = _descriptor.Descriptor(
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='state', full_name='pb.Location.state', index=1,
       number=2, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='city', full_name='pb.Location.city', index=2,
       number=3, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='code', full_name='pb.Location.code', index=3,
       number=4, type=9, cpp_type=9, label=1,
       has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='latitude', full_name='pb.Location.latitude', index=4,
       number=5, type=17, cpp_type=1, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
       name='longitude', full_name='pb.Location.longitude', index=5,
       number=6, type=17, cpp_type=1, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
@@ -4520,41 +3226,33 @@ _LOCATION = _descriptor.Descriptor(
   enum_types=[
     _LOCATION_COUNTRY,
   ],
-  serialized_options=None,
+  options=None,
   is_extendable=False,
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5205,
-  serialized_end=10561,
+  serialized_start=4834,
+  serialized_end=7110,
 )
 
 _CLAIM.fields_by_name['stream'].message_type = _STREAM
 _CLAIM.fields_by_name['channel'].message_type = _CHANNEL
-_CLAIM.fields_by_name['collection'].message_type = _CLAIMLIST
-_CLAIM.fields_by_name['repost'].message_type = _CLAIMREFERENCE
-_CLAIM.fields_by_name['thumbnail'].message_type = _SOURCE
-_CLAIM.fields_by_name['languages'].message_type = _LANGUAGE
-_CLAIM.fields_by_name['locations'].message_type = _LOCATION
 _CLAIM.oneofs_by_name['type'].fields.append(
   _CLAIM.fields_by_name['stream'])
 _CLAIM.fields_by_name['stream'].containing_oneof = _CLAIM.oneofs_by_name['type']
 _CLAIM.oneofs_by_name['type'].fields.append(
   _CLAIM.fields_by_name['channel'])
 _CLAIM.fields_by_name['channel'].containing_oneof = _CLAIM.oneofs_by_name['type']
-_CLAIM.oneofs_by_name['type'].fields.append(
-  _CLAIM.fields_by_name['collection'])
-_CLAIM.fields_by_name['collection'].containing_oneof = _CLAIM.oneofs_by_name['type']
-_CLAIM.oneofs_by_name['type'].fields.append(
-  _CLAIM.fields_by_name['repost'])
-_CLAIM.fields_by_name['repost'].containing_oneof = _CLAIM.oneofs_by_name['type']
-_STREAM.fields_by_name['source'].message_type = _SOURCE
+_CHANNEL.fields_by_name['languages'].message_type = _LANGUAGE
+_CHANNEL.fields_by_name['locations'].message_type = _LOCATION
+_STREAM.fields_by_name['languages'].message_type = _LANGUAGE
+_STREAM.fields_by_name['locations'].message_type = _LOCATION
+_STREAM.fields_by_name['file'].message_type = _FILE
 _STREAM.fields_by_name['fee'].message_type = _FEE
 _STREAM.fields_by_name['image'].message_type = _IMAGE
 _STREAM.fields_by_name['video'].message_type = _VIDEO
 _STREAM.fields_by_name['audio'].message_type = _AUDIO
-_STREAM.fields_by_name['software'].message_type = _SOFTWARE
 _STREAM.oneofs_by_name['type'].fields.append(
   _STREAM.fields_by_name['image'])
 _STREAM.fields_by_name['image'].containing_oneof = _STREAM.oneofs_by_name['type']
@@ -4564,18 +3262,8 @@ _STREAM.fields_by_name['video'].containing_oneof = _STREAM.oneofs_by_name['type'
 _STREAM.oneofs_by_name['type'].fields.append(
   _STREAM.fields_by_name['audio'])
 _STREAM.fields_by_name['audio'].containing_oneof = _STREAM.oneofs_by_name['type']
-_STREAM.oneofs_by_name['type'].fields.append(
-  _STREAM.fields_by_name['software'])
-_STREAM.fields_by_name['software'].containing_oneof = _STREAM.oneofs_by_name['type']
-_CHANNEL.fields_by_name['cover'].message_type = _SOURCE
-_CHANNEL.fields_by_name['featured'].message_type = _CLAIMLIST
-_CLAIMLIST.fields_by_name['list_type'].enum_type = _CLAIMLIST_LISTTYPE
-_CLAIMLIST.fields_by_name['claim_references'].message_type = _CLAIMREFERENCE
-_CLAIMLIST_LISTTYPE.containing_type = _CLAIMLIST
 _FEE.fields_by_name['currency'].enum_type = _FEE_CURRENCY
 _FEE_CURRENCY.containing_type = _FEE
-_VIDEO.fields_by_name['audio'].message_type = _AUDIO
-_SOFTWARE_OS.containing_type = _SOFTWARE
 _LANGUAGE.fields_by_name['language'].enum_type = _LANGUAGE_LANGUAGE
 _LANGUAGE.fields_by_name['script'].enum_type = _LANGUAGE_SCRIPT
 _LANGUAGE.fields_by_name['region'].enum_type = _LOCATION_COUNTRY
@@ -4584,16 +3272,13 @@ _LANGUAGE_SCRIPT.containing_type = _LANGUAGE
 _LOCATION.fields_by_name['country'].enum_type = _LOCATION_COUNTRY
 _LOCATION_COUNTRY.containing_type = _LOCATION
 DESCRIPTOR.message_types_by_name['Claim'] = _CLAIM
-DESCRIPTOR.message_types_by_name['Stream'] = _STREAM
 DESCRIPTOR.message_types_by_name['Channel'] = _CHANNEL
-DESCRIPTOR.message_types_by_name['ClaimReference'] = _CLAIMREFERENCE
-DESCRIPTOR.message_types_by_name['ClaimList'] = _CLAIMLIST
-DESCRIPTOR.message_types_by_name['Source'] = _SOURCE
+DESCRIPTOR.message_types_by_name['Stream'] = _STREAM
 DESCRIPTOR.message_types_by_name['Fee'] = _FEE
+DESCRIPTOR.message_types_by_name['File'] = _FILE
 DESCRIPTOR.message_types_by_name['Image'] = _IMAGE
 DESCRIPTOR.message_types_by_name['Video'] = _VIDEO
 DESCRIPTOR.message_types_by_name['Audio'] = _AUDIO
-DESCRIPTOR.message_types_by_name['Software'] = _SOFTWARE
 DESCRIPTOR.message_types_by_name['Language'] = _LANGUAGE
 DESCRIPTOR.message_types_by_name['Location'] = _LOCATION
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
@@ -4605,13 +3290,6 @@ Claim = _reflection.GeneratedProtocolMessageType('Claim', (_message.Message,), d
   ))
 _sym_db.RegisterMessage(Claim)
 
-Stream = _reflection.GeneratedProtocolMessageType('Stream', (_message.Message,), dict(
-  DESCRIPTOR = _STREAM,
-  __module__ = 'claim_pb2'
-  # @@protoc_insertion_point(class_scope:pb.Stream)
-  ))
-_sym_db.RegisterMessage(Stream)
-
 Channel = _reflection.GeneratedProtocolMessageType('Channel', (_message.Message,), dict(
   DESCRIPTOR = _CHANNEL,
   __module__ = 'claim_pb2'
@@ -4619,26 +3297,12 @@ Channel = _reflection.GeneratedProtocolMessageType('Channel', (_message.Message,
   ))
 _sym_db.RegisterMessage(Channel)
 
-ClaimReference = _reflection.GeneratedProtocolMessageType('ClaimReference', (_message.Message,), dict(
-  DESCRIPTOR = _CLAIMREFERENCE,
+Stream = _reflection.GeneratedProtocolMessageType('Stream', (_message.Message,), dict(
+  DESCRIPTOR = _STREAM,
   __module__ = 'claim_pb2'
-  # @@protoc_insertion_point(class_scope:pb.ClaimReference)
+  # @@protoc_insertion_point(class_scope:pb.Stream)
   ))
-_sym_db.RegisterMessage(ClaimReference)
-
-ClaimList = _reflection.GeneratedProtocolMessageType('ClaimList', (_message.Message,), dict(
-  DESCRIPTOR = _CLAIMLIST,
-  __module__ = 'claim_pb2'
-  # @@protoc_insertion_point(class_scope:pb.ClaimList)
-  ))
-_sym_db.RegisterMessage(ClaimList)
-
-Source = _reflection.GeneratedProtocolMessageType('Source', (_message.Message,), dict(
-  DESCRIPTOR = _SOURCE,
-  __module__ = 'claim_pb2'
-  # @@protoc_insertion_point(class_scope:pb.Source)
-  ))
-_sym_db.RegisterMessage(Source)
+_sym_db.RegisterMessage(Stream)
 
 Fee = _reflection.GeneratedProtocolMessageType('Fee', (_message.Message,), dict(
   DESCRIPTOR = _FEE,
@@ -4647,6 +3311,13 @@ Fee = _reflection.GeneratedProtocolMessageType('Fee', (_message.Message,), dict(
   ))
 _sym_db.RegisterMessage(Fee)
 
+File = _reflection.GeneratedProtocolMessageType('File', (_message.Message,), dict(
+  DESCRIPTOR = _FILE,
+  __module__ = 'claim_pb2'
+  # @@protoc_insertion_point(class_scope:pb.File)
+  ))
+_sym_db.RegisterMessage(File)
+
 Image = _reflection.GeneratedProtocolMessageType('Image', (_message.Message,), dict(
   DESCRIPTOR = _IMAGE,
   __module__ = 'claim_pb2'
@@ -4668,13 +3339,6 @@ Audio = _reflection.GeneratedProtocolMessageType('Audio', (_message.Message,), d
   ))
 _sym_db.RegisterMessage(Audio)
 
-Software = _reflection.GeneratedProtocolMessageType('Software', (_message.Message,), dict(
-  DESCRIPTOR = _SOFTWARE,
-  __module__ = 'claim_pb2'
-  # @@protoc_insertion_point(class_scope:pb.Software)
-  ))
-_sym_db.RegisterMessage(Software)
-
 Language = _reflection.GeneratedProtocolMessageType('Language', (_message.Message,), dict(
   DESCRIPTOR = _LANGUAGE,
   __module__ = 'claim_pb2'
diff --git a/v2/python/purchase_pb2.py b/v2/python/purchase_pb2.py
deleted file mode 100644
index 8a730e8..0000000
--- a/v2/python/purchase_pb2.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: purchase.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='purchase.proto',
-  package='pb',
-  syntax='proto3',
-  serialized_options=None,
-  serialized_pb=_b('\n\x0epurchase.proto\x12\x02pb\"\x1e\n\x08Purchase\x12\x12\n\nclaim_hash\x18\x01 \x01(\x0c\x62\x06proto3')
-)
-
-
-
-
-_PURCHASE = _descriptor.Descriptor(
-  name='Purchase',
-  full_name='pb.Purchase',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='claim_hash', full_name='pb.Purchase.claim_hash', index=0,
-      number=1, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=22,
-  serialized_end=52,
-)
-
-DESCRIPTOR.message_types_by_name['Purchase'] = _PURCHASE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Purchase = _reflection.GeneratedProtocolMessageType('Purchase', (_message.Message,), dict(
-  DESCRIPTOR = _PURCHASE,
-  __module__ = 'purchase_pb2'
-  # @@protoc_insertion_point(class_scope:pb.Purchase)
-  ))
-_sym_db.RegisterMessage(Purchase)
-
-
-# @@protoc_insertion_point(module_scope)
diff --git a/v2/python/result_pb2.py b/v2/python/result_pb2.py
deleted file mode 100644
index fac51d0..0000000
--- a/v2/python/result_pb2.py
+++ /dev/null
@@ -1,399 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: result.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='result.proto',
-  package='pb',
-  syntax='proto3',
-  serialized_options=None,
-  serialized_pb=_b('\n\x0cresult.proto\x12\x02pb\"b\n\x07Outputs\x12\x18\n\x04txos\x18\x01 \x03(\x0b\x32\n.pb.Output\x12\x1e\n\nextra_txos\x18\x02 \x03(\x0b\x32\n.pb.Output\x12\r\n\x05total\x18\x03 \x01(\r\x12\x0e\n\x06offset\x18\x04 \x01(\r\"{\n\x06Output\x12\x0f\n\x07tx_hash\x18\x01 \x01(\x0c\x12\x0c\n\x04nout\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x1e\n\x05\x63laim\x18\x07 \x01(\x0b\x32\r.pb.ClaimMetaH\x00\x12\x1a\n\x05\x65rror\x18\x0f \x01(\x0b\x32\t.pb.ErrorH\x00\x42\x06\n\x04meta\"\xaf\x03\n\tClaimMeta\x12\x1b\n\x07\x63hannel\x18\x01 \x01(\x0b\x32\n.pb.Output\x12\x1a\n\x06repost\x18\x02 \x01(\x0b\x32\n.pb.Output\x12\x11\n\tshort_url\x18\x03 \x01(\t\x12\x15\n\rcanonical_url\x18\x04 \x01(\t\x12\x16\n\x0eis_controlling\x18\x05 \x01(\x08\x12\x18\n\x10take_over_height\x18\x06 \x01(\r\x12\x17\n\x0f\x63reation_height\x18\x07 \x01(\r\x12\x19\n\x11\x61\x63tivation_height\x18\x08 \x01(\r\x12\x19\n\x11\x65xpiration_height\x18\t \x01(\r\x12\x19\n\x11\x63laims_in_channel\x18\n \x01(\r\x12\x10\n\x08reposted\x18\x0b \x01(\r\x12\x18\n\x10\x65\x66\x66\x65\x63tive_amount\x18\x14 \x01(\x04\x12\x16\n\x0esupport_amount\x18\x15 \x01(\x04\x12\x16\n\x0etrending_group\x18\x16 \x01(\r\x12\x16\n\x0etrending_mixed\x18\x17 \x01(\x02\x12\x16\n\x0etrending_local\x18\x18 \x01(\x02\x12\x17\n\x0ftrending_global\x18\x19 \x01(\x02\"i\n\x05\x45rror\x12\x1c\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x0e.pb.Error.Code\x12\x0c\n\x04text\x18\x02 \x01(\t\"4\n\x04\x43ode\x12\x10\n\x0cUNKNOWN_CODE\x10\x00\x12\r\n\tNOT_FOUND\x10\x01\x12\x0b\n\x07INVALID\x10\x02\x62\x06proto3')
-)
-
-
-
-_ERROR_CODE = _descriptor.EnumDescriptor(
-  name='Code',
-  full_name='pb.Error.Code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='UNKNOWN_CODE', index=0, number=0,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='NOT_FOUND', index=1, number=1,
-      serialized_options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='INVALID', index=2, number=2,
-      serialized_options=None,
-      type=None),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=732,
-  serialized_end=784,
-)
-_sym_db.RegisterEnumDescriptor(_ERROR_CODE)
-
-
-_OUTPUTS = _descriptor.Descriptor(
-  name='Outputs',
-  full_name='pb.Outputs',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='txos', full_name='pb.Outputs.txos', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='extra_txos', full_name='pb.Outputs.extra_txos', index=1,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='total', full_name='pb.Outputs.total', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='offset', full_name='pb.Outputs.offset', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=20,
-  serialized_end=118,
-)
-
-
-_OUTPUT = _descriptor.Descriptor(
-  name='Output',
-  full_name='pb.Output',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='tx_hash', full_name='pb.Output.tx_hash', index=0,
-      number=1, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='nout', full_name='pb.Output.nout', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='height', full_name='pb.Output.height', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='claim', full_name='pb.Output.claim', index=3,
-      number=7, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='error', full_name='pb.Output.error', index=4,
-      number=15, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='meta', full_name='pb.Output.meta',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=120,
-  serialized_end=243,
-)
-
-
-_CLAIMMETA = _descriptor.Descriptor(
-  name='ClaimMeta',
-  full_name='pb.ClaimMeta',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='channel', full_name='pb.ClaimMeta.channel', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='repost', full_name='pb.ClaimMeta.repost', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='short_url', full_name='pb.ClaimMeta.short_url', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='canonical_url', full_name='pb.ClaimMeta.canonical_url', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='is_controlling', full_name='pb.ClaimMeta.is_controlling', index=4,
-      number=5, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='take_over_height', full_name='pb.ClaimMeta.take_over_height', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='creation_height', full_name='pb.ClaimMeta.creation_height', index=6,
-      number=7, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='activation_height', full_name='pb.ClaimMeta.activation_height', index=7,
-      number=8, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='expiration_height', full_name='pb.ClaimMeta.expiration_height', index=8,
-      number=9, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='claims_in_channel', full_name='pb.ClaimMeta.claims_in_channel', index=9,
-      number=10, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='reposted', full_name='pb.ClaimMeta.reposted', index=10,
-      number=11, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='effective_amount', full_name='pb.ClaimMeta.effective_amount', index=11,
-      number=20, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='support_amount', full_name='pb.ClaimMeta.support_amount', index=12,
-      number=21, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='trending_group', full_name='pb.ClaimMeta.trending_group', index=13,
-      number=22, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='trending_mixed', full_name='pb.ClaimMeta.trending_mixed', index=14,
-      number=23, type=2, cpp_type=6, label=1,
-      has_default_value=False, default_value=float(0),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='trending_local', full_name='pb.ClaimMeta.trending_local', index=15,
-      number=24, type=2, cpp_type=6, label=1,
-      has_default_value=False, default_value=float(0),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='trending_global', full_name='pb.ClaimMeta.trending_global', index=16,
-      number=25, type=2, cpp_type=6, label=1,
-      has_default_value=False, default_value=float(0),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=246,
-  serialized_end=677,
-)
-
-
-_ERROR = _descriptor.Descriptor(
-  name='Error',
-  full_name='pb.Error',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='code', full_name='pb.Error.code', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='text', full_name='pb.Error.text', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _ERROR_CODE,
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=679,
-  serialized_end=784,
-)
-
-_OUTPUTS.fields_by_name['txos'].message_type = _OUTPUT
-_OUTPUTS.fields_by_name['extra_txos'].message_type = _OUTPUT
-_OUTPUT.fields_by_name['claim'].message_type = _CLAIMMETA
-_OUTPUT.fields_by_name['error'].message_type = _ERROR
-_OUTPUT.oneofs_by_name['meta'].fields.append(
-  _OUTPUT.fields_by_name['claim'])
-_OUTPUT.fields_by_name['claim'].containing_oneof = _OUTPUT.oneofs_by_name['meta']
-_OUTPUT.oneofs_by_name['meta'].fields.append(
-  _OUTPUT.fields_by_name['error'])
-_OUTPUT.fields_by_name['error'].containing_oneof = _OUTPUT.oneofs_by_name['meta']
-_CLAIMMETA.fields_by_name['channel'].message_type = _OUTPUT
-_CLAIMMETA.fields_by_name['repost'].message_type = _OUTPUT
-_ERROR.fields_by_name['code'].enum_type = _ERROR_CODE
-_ERROR_CODE.containing_type = _ERROR
-DESCRIPTOR.message_types_by_name['Outputs'] = _OUTPUTS
-DESCRIPTOR.message_types_by_name['Output'] = _OUTPUT
-DESCRIPTOR.message_types_by_name['ClaimMeta'] = _CLAIMMETA
-DESCRIPTOR.message_types_by_name['Error'] = _ERROR
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Outputs = _reflection.GeneratedProtocolMessageType('Outputs', (_message.Message,), dict(
-  DESCRIPTOR = _OUTPUTS,
-  __module__ = 'result_pb2'
-  # @@protoc_insertion_point(class_scope:pb.Outputs)
-  ))
-_sym_db.RegisterMessage(Outputs)
-
-Output = _reflection.GeneratedProtocolMessageType('Output', (_message.Message,), dict(
-  DESCRIPTOR = _OUTPUT,
-  __module__ = 'result_pb2'
-  # @@protoc_insertion_point(class_scope:pb.Output)
-  ))
-_sym_db.RegisterMessage(Output)
-
-ClaimMeta = _reflection.GeneratedProtocolMessageType('ClaimMeta', (_message.Message,), dict(
-  DESCRIPTOR = _CLAIMMETA,
-  __module__ = 'result_pb2'
-  # @@protoc_insertion_point(class_scope:pb.ClaimMeta)
-  ))
-_sym_db.RegisterMessage(ClaimMeta)
-
-Error = _reflection.GeneratedProtocolMessageType('Error', (_message.Message,), dict(
-  DESCRIPTOR = _ERROR,
-  __module__ = 'result_pb2'
-  # @@protoc_insertion_point(class_scope:pb.Error)
-  ))
-_sym_db.RegisterMessage(Error)
-
-
-# @@protoc_insertion_point(module_scope)