From f8fd637786f0c4a4ab3016209451ae5f26a784e4 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 7 Jan 2021 11:46:03 +0000 Subject: [PATCH] inital commit Signed-off-by: Michael --- .gitignore | 1 + Makefile | 7 + discoursepb/categories.pb.go | 638 ++++++ discoursepb/categorytopics.pb.go | 867 ++++++++ discoursepb/directory_items.pb.go | 519 +++++ discoursepb/latest.pb.go | 845 ++++++++ discoursepb/posts.pb.go | 750 +++++++ discoursepb/site.pb.go | 1892 +++++++++++++++++ discoursepb/tag.pb.go | 945 +++++++++ discoursepb/tags.pb.go | 242 +++ discoursepb/tagtopics.pb.go | 155 ++ discoursepb/topic.pb.go | 555 +++++ discoursepb/users.pb.go | 3164 +++++++++++++++++++++++++++++ go.mod | 8 + proto/categories.proto | 49 + proto/categorytopics.proto | 66 + proto/directory_items.proto | 36 + proto/latest.proto | 64 + proto/posts.proto | 63 + proto/site.proto | 144 ++ proto/tag.proto | 72 + proto/tags.proto | 15 + proto/tagtopics.proto | 10 + proto/topic.proto | 36 + proto/users.proto | 257 +++ 25 files changed, 11400 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 discoursepb/categories.pb.go create mode 100644 discoursepb/categorytopics.pb.go create mode 100644 discoursepb/directory_items.pb.go create mode 100644 discoursepb/latest.pb.go create mode 100644 discoursepb/posts.pb.go create mode 100644 discoursepb/site.pb.go create mode 100644 discoursepb/tag.pb.go create mode 100644 discoursepb/tags.pb.go create mode 100644 discoursepb/tagtopics.pb.go create mode 100644 discoursepb/topic.pb.go create mode 100644 discoursepb/users.pb.go create mode 100644 go.mod create mode 100644 proto/categories.proto create mode 100644 proto/categorytopics.proto create mode 100644 proto/directory_items.proto create mode 100644 proto/latest.proto create mode 100644 proto/posts.proto create mode 100644 proto/site.proto create mode 100644 proto/tag.proto create mode 100644 proto/tags.proto create mode 100644 proto/tagtopics.proto create mode 100644 proto/topic.proto create mode 100644 proto/users.proto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c14a297 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +go.sum \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4244abc --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +proto: + protoc \ + --proto_path=/usr/local/include/google/protobuf \ + --proto_path=proto/ \ + --go_out=$(GOPATH)/src proto/*.proto + +.PHONY: proto diff --git a/discoursepb/categories.pb.go b/discoursepb/categories.pb.go new file mode 100644 index 0000000..760bf71 --- /dev/null +++ b/discoursepb/categories.pb.go @@ -0,0 +1,638 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: categories.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Categories struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategoryList *Categories_CategoryList `protobuf:"bytes,1,opt,name=category_list,json=categoryList,proto3" json:"category_list,omitempty"` +} + +func (x *Categories) Reset() { + *x = Categories{} + if protoimpl.UnsafeEnabled { + mi := &file_categories_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Categories) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Categories) ProtoMessage() {} + +func (x *Categories) ProtoReflect() protoreflect.Message { + mi := &file_categories_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Categories.ProtoReflect.Descriptor instead. +func (*Categories) Descriptor() ([]byte, []int) { + return file_categories_proto_rawDescGZIP(), []int{0} +} + +func (x *Categories) GetCategoryList() *Categories_CategoryList { + if x != nil { + return x.CategoryList + } + return nil +} + +type Categories_CategoryList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CanCreateCategory bool `protobuf:"varint,1,opt,name=can_create_category,json=canCreateCategory,proto3" json:"can_create_category,omitempty"` + CanCreateTopic bool `protobuf:"varint,2,opt,name=can_create_topic,json=canCreateTopic,proto3" json:"can_create_topic,omitempty"` + Categories []*Categories_CategoryList_Categories `protobuf:"bytes,3,rep,name=categories,proto3" json:"categories,omitempty"` +} + +func (x *Categories_CategoryList) Reset() { + *x = Categories_CategoryList{} + if protoimpl.UnsafeEnabled { + mi := &file_categories_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Categories_CategoryList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Categories_CategoryList) ProtoMessage() {} + +func (x *Categories_CategoryList) ProtoReflect() protoreflect.Message { + mi := &file_categories_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Categories_CategoryList.ProtoReflect.Descriptor instead. +func (*Categories_CategoryList) Descriptor() ([]byte, []int) { + return file_categories_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Categories_CategoryList) GetCanCreateCategory() bool { + if x != nil { + return x.CanCreateCategory + } + return false +} + +func (x *Categories_CategoryList) GetCanCreateTopic() bool { + if x != nil { + return x.CanCreateTopic + } + return false +} + +func (x *Categories_CategoryList) GetCategories() []*Categories_CategoryList_Categories { + if x != nil { + return x.Categories + } + return nil +} + +type Categories_CategoryList_Categories struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Color string `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` + TextColor string `protobuf:"bytes,4,opt,name=text_color,json=textColor,proto3" json:"text_color,omitempty"` + Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` + TopicCount int32 `protobuf:"varint,6,opt,name=topic_count,json=topicCount,proto3" json:"topic_count,omitempty"` + PostCount int32 `protobuf:"varint,7,opt,name=post_count,json=postCount,proto3" json:"post_count,omitempty"` + Position int32 `protobuf:"varint,8,opt,name=position,proto3" json:"position,omitempty"` + Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` + DescriptionText string `protobuf:"bytes,10,opt,name=description_text,json=descriptionText,proto3" json:"description_text,omitempty"` + DescriptionExcerpt string `protobuf:"bytes,11,opt,name=description_excerpt,json=descriptionExcerpt,proto3" json:"description_excerpt,omitempty"` + TopicUrl string `protobuf:"bytes,12,opt,name=topic_url,json=topicUrl,proto3" json:"topic_url,omitempty"` + ReadRestricted bool `protobuf:"varint,13,opt,name=read_restricted,json=readRestricted,proto3" json:"read_restricted,omitempty"` + Permission int32 `protobuf:"varint,14,opt,name=permission,proto3" json:"permission,omitempty"` + NotificationLevel int32 `protobuf:"varint,15,opt,name=notification_level,json=notificationLevel,proto3" json:"notification_level,omitempty"` + CanEdit bool `protobuf:"varint,16,opt,name=can_edit,json=canEdit,proto3" json:"can_edit,omitempty"` + TopicTemplate string `protobuf:"bytes,17,opt,name=topic_template,json=topicTemplate,proto3" json:"topic_template,omitempty"` + HasChildren bool `protobuf:"varint,18,opt,name=has_children,json=hasChildren,proto3" json:"has_children,omitempty"` + SortOrder string `protobuf:"bytes,19,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` + ShowSubcategoryList bool `protobuf:"varint,20,opt,name=show_subcategory_list,json=showSubcategoryList,proto3" json:"show_subcategory_list,omitempty"` + NumFeaturedTopics int32 `protobuf:"varint,21,opt,name=num_featured_topics,json=numFeaturedTopics,proto3" json:"num_featured_topics,omitempty"` + DefaultView string `protobuf:"bytes,22,opt,name=default_view,json=defaultView,proto3" json:"default_view,omitempty"` + SubcategoryListStyle string `protobuf:"bytes,23,opt,name=subcategory_list_style,json=subcategoryListStyle,proto3" json:"subcategory_list_style,omitempty"` + DefaultTopPeriod string `protobuf:"bytes,24,opt,name=default_top_period,json=defaultTopPeriod,proto3" json:"default_top_period,omitempty"` + DefaultListFilter string `protobuf:"bytes,25,opt,name=default_list_filter,json=defaultListFilter,proto3" json:"default_list_filter,omitempty"` + MinimumRequiredTags int32 `protobuf:"varint,26,opt,name=minimum_required_tags,json=minimumRequiredTags,proto3" json:"minimum_required_tags,omitempty"` + NavigateToFirstPostAfterRead bool `protobuf:"varint,27,opt,name=navigate_to_first_post_after_read,json=navigateToFirstPostAfterRead,proto3" json:"navigate_to_first_post_after_read,omitempty"` + TopicsDay int32 `protobuf:"varint,28,opt,name=topics_day,json=topicsDay,proto3" json:"topics_day,omitempty"` + TopicsWeek int32 `protobuf:"varint,29,opt,name=topics_week,json=topicsWeek,proto3" json:"topics_week,omitempty"` + TopicsMonth int32 `protobuf:"varint,30,opt,name=topics_month,json=topicsMonth,proto3" json:"topics_month,omitempty"` + TopicsYear int32 `protobuf:"varint,31,opt,name=topics_year,json=topicsYear,proto3" json:"topics_year,omitempty"` + TopicsAllTime int32 `protobuf:"varint,32,opt,name=topics_all_time,json=topicsAllTime,proto3" json:"topics_all_time,omitempty"` + SubcategoryIds []int32 `protobuf:"varint,33,rep,packed,name=subcategory_ids,json=subcategoryIds,proto3" json:"subcategory_ids,omitempty"` +} + +func (x *Categories_CategoryList_Categories) Reset() { + *x = Categories_CategoryList_Categories{} + if protoimpl.UnsafeEnabled { + mi := &file_categories_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Categories_CategoryList_Categories) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Categories_CategoryList_Categories) ProtoMessage() {} + +func (x *Categories_CategoryList_Categories) ProtoReflect() protoreflect.Message { + mi := &file_categories_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Categories_CategoryList_Categories.ProtoReflect.Descriptor instead. +func (*Categories_CategoryList_Categories) Descriptor() ([]byte, []int) { + return file_categories_proto_rawDescGZIP(), []int{0, 0, 0} +} + +func (x *Categories_CategoryList_Categories) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetColor() string { + if x != nil { + return x.Color + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetTextColor() string { + if x != nil { + return x.TextColor + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetTopicCount() int32 { + if x != nil { + return x.TopicCount + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetPostCount() int32 { + if x != nil { + return x.PostCount + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetPosition() int32 { + if x != nil { + return x.Position + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetDescriptionText() string { + if x != nil { + return x.DescriptionText + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetDescriptionExcerpt() string { + if x != nil { + return x.DescriptionExcerpt + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetTopicUrl() string { + if x != nil { + return x.TopicUrl + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetReadRestricted() bool { + if x != nil { + return x.ReadRestricted + } + return false +} + +func (x *Categories_CategoryList_Categories) GetPermission() int32 { + if x != nil { + return x.Permission + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetNotificationLevel() int32 { + if x != nil { + return x.NotificationLevel + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetCanEdit() bool { + if x != nil { + return x.CanEdit + } + return false +} + +func (x *Categories_CategoryList_Categories) GetTopicTemplate() string { + if x != nil { + return x.TopicTemplate + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetHasChildren() bool { + if x != nil { + return x.HasChildren + } + return false +} + +func (x *Categories_CategoryList_Categories) GetSortOrder() string { + if x != nil { + return x.SortOrder + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetShowSubcategoryList() bool { + if x != nil { + return x.ShowSubcategoryList + } + return false +} + +func (x *Categories_CategoryList_Categories) GetNumFeaturedTopics() int32 { + if x != nil { + return x.NumFeaturedTopics + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetDefaultView() string { + if x != nil { + return x.DefaultView + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetSubcategoryListStyle() string { + if x != nil { + return x.SubcategoryListStyle + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetDefaultTopPeriod() string { + if x != nil { + return x.DefaultTopPeriod + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetDefaultListFilter() string { + if x != nil { + return x.DefaultListFilter + } + return "" +} + +func (x *Categories_CategoryList_Categories) GetMinimumRequiredTags() int32 { + if x != nil { + return x.MinimumRequiredTags + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetNavigateToFirstPostAfterRead() bool { + if x != nil { + return x.NavigateToFirstPostAfterRead + } + return false +} + +func (x *Categories_CategoryList_Categories) GetTopicsDay() int32 { + if x != nil { + return x.TopicsDay + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetTopicsWeek() int32 { + if x != nil { + return x.TopicsWeek + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetTopicsMonth() int32 { + if x != nil { + return x.TopicsMonth + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetTopicsYear() int32 { + if x != nil { + return x.TopicsYear + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetTopicsAllTime() int32 { + if x != nil { + return x.TopicsAllTime + } + return 0 +} + +func (x *Categories_CategoryList_Categories) GetSubcategoryIds() []int32 { + if x != nil { + return x.SubcategoryIds + } + return nil +} + +var File_categories_proto protoreflect.FileDescriptor + +var file_categories_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0xfd, 0x0b, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x0d, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0c, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x9c, 0x0b, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x61, 0x6e, 0x5f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x70, + 0x69, 0x63, 0x12, 0x56, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4c, + 0x69, 0x73, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x1a, 0xd9, 0x09, 0x0a, 0x0a, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x73, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, + 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, + 0x0f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, + 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, + 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x63, + 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, + 0x61, 0x73, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x68, 0x6f, + 0x77, 0x5f, 0x73, 0x75, 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x75, + 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, + 0x13, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x6f, + 0x70, 0x69, 0x63, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x69, 0x65, 0x77, + 0x12, 0x34, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x14, 0x73, 0x75, 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, 0x70, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x21, 0x6e, 0x61, 0x76, 0x69, + 0x67, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, + 0x73, 0x74, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x1c, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x46, + 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x66, 0x74, 0x65, 0x72, 0x52, 0x65, 0x61, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x64, 0x61, 0x79, 0x18, + 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x44, 0x61, 0x79, + 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x77, 0x65, 0x65, 0x6b, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x57, 0x65, 0x65, + 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, + 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x4d, + 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x79, + 0x65, 0x61, 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x73, 0x59, 0x65, 0x61, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, + 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x41, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x73, 0x75, 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x21, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, + 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_categories_proto_rawDescOnce sync.Once + file_categories_proto_rawDescData = file_categories_proto_rawDesc +) + +func file_categories_proto_rawDescGZIP() []byte { + file_categories_proto_rawDescOnce.Do(func() { + file_categories_proto_rawDescData = protoimpl.X.CompressGZIP(file_categories_proto_rawDescData) + }) + return file_categories_proto_rawDescData +} + +var file_categories_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_categories_proto_goTypes = []interface{}{ + (*Categories)(nil), // 0: discourse.protobuf.Categories + (*Categories_CategoryList)(nil), // 1: discourse.protobuf.Categories.CategoryList + (*Categories_CategoryList_Categories)(nil), // 2: discourse.protobuf.Categories.CategoryList.Categories +} +var file_categories_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.Categories.category_list:type_name -> discourse.protobuf.Categories.CategoryList + 2, // 1: discourse.protobuf.Categories.CategoryList.categories:type_name -> discourse.protobuf.Categories.CategoryList.Categories + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_categories_proto_init() } +func file_categories_proto_init() { + if File_categories_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_categories_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Categories); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_categories_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Categories_CategoryList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_categories_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Categories_CategoryList_Categories); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_categories_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_categories_proto_goTypes, + DependencyIndexes: file_categories_proto_depIdxs, + MessageInfos: file_categories_proto_msgTypes, + }.Build() + File_categories_proto = out.File + file_categories_proto_rawDesc = nil + file_categories_proto_goTypes = nil + file_categories_proto_depIdxs = nil +} diff --git a/discoursepb/categorytopics.pb.go b/discoursepb/categorytopics.pb.go new file mode 100644 index 0000000..a6cb23c --- /dev/null +++ b/discoursepb/categorytopics.pb.go @@ -0,0 +1,867 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: categorytopics.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type CategoryTopics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Users []*CategoryTopics_Users `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` + TopicList *CategoryTopics_TopicList `protobuf:"bytes,2,opt,name=topic_list,json=topicList,proto3" json:"topic_list,omitempty"` +} + +func (x *CategoryTopics) Reset() { + *x = CategoryTopics{} + if protoimpl.UnsafeEnabled { + mi := &file_categorytopics_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CategoryTopics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CategoryTopics) ProtoMessage() {} + +func (x *CategoryTopics) ProtoReflect() protoreflect.Message { + mi := &file_categorytopics_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CategoryTopics.ProtoReflect.Descriptor instead. +func (*CategoryTopics) Descriptor() ([]byte, []int) { + return file_categorytopics_proto_rawDescGZIP(), []int{0} +} + +func (x *CategoryTopics) GetUsers() []*CategoryTopics_Users { + if x != nil { + return x.Users + } + return nil +} + +func (x *CategoryTopics) GetTopicList() *CategoryTopics_TopicList { + if x != nil { + return x.TopicList + } + return nil +} + +type CategoryTopics_Users struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,4,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` +} + +func (x *CategoryTopics_Users) Reset() { + *x = CategoryTopics_Users{} + if protoimpl.UnsafeEnabled { + mi := &file_categorytopics_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CategoryTopics_Users) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CategoryTopics_Users) ProtoMessage() {} + +func (x *CategoryTopics_Users) ProtoReflect() protoreflect.Message { + mi := &file_categorytopics_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CategoryTopics_Users.ProtoReflect.Descriptor instead. +func (*CategoryTopics_Users) Descriptor() ([]byte, []int) { + return file_categorytopics_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *CategoryTopics_Users) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CategoryTopics_Users) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *CategoryTopics_Users) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CategoryTopics_Users) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +type CategoryTopics_TopicList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CanCreateTopic bool `protobuf:"varint,1,opt,name=can_create_topic,json=canCreateTopic,proto3" json:"can_create_topic,omitempty"` + DraftKey string `protobuf:"bytes,2,opt,name=draft_key,json=draftKey,proto3" json:"draft_key,omitempty"` + DraftSequence int32 `protobuf:"varint,3,opt,name=draft_sequence,json=draftSequence,proto3" json:"draft_sequence,omitempty"` + PerPage int32 `protobuf:"varint,4,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"` + TopTags []string `protobuf:"bytes,5,rep,name=top_tags,json=topTags,proto3" json:"top_tags,omitempty"` + Topics []*CategoryTopics_TopicList_Topics `protobuf:"bytes,6,rep,name=topics,proto3" json:"topics,omitempty"` + BookmarkedPostNumbers []int32 `protobuf:"varint,7,rep,packed,name=bookmarked_post_numbers,json=bookmarkedPostNumbers,proto3" json:"bookmarked_post_numbers,omitempty"` +} + +func (x *CategoryTopics_TopicList) Reset() { + *x = CategoryTopics_TopicList{} + if protoimpl.UnsafeEnabled { + mi := &file_categorytopics_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CategoryTopics_TopicList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CategoryTopics_TopicList) ProtoMessage() {} + +func (x *CategoryTopics_TopicList) ProtoReflect() protoreflect.Message { + mi := &file_categorytopics_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CategoryTopics_TopicList.ProtoReflect.Descriptor instead. +func (*CategoryTopics_TopicList) Descriptor() ([]byte, []int) { + return file_categorytopics_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *CategoryTopics_TopicList) GetCanCreateTopic() bool { + if x != nil { + return x.CanCreateTopic + } + return false +} + +func (x *CategoryTopics_TopicList) GetDraftKey() string { + if x != nil { + return x.DraftKey + } + return "" +} + +func (x *CategoryTopics_TopicList) GetDraftSequence() int32 { + if x != nil { + return x.DraftSequence + } + return 0 +} + +func (x *CategoryTopics_TopicList) GetPerPage() int32 { + if x != nil { + return x.PerPage + } + return 0 +} + +func (x *CategoryTopics_TopicList) GetTopTags() []string { + if x != nil { + return x.TopTags + } + return nil +} + +func (x *CategoryTopics_TopicList) GetTopics() []*CategoryTopics_TopicList_Topics { + if x != nil { + return x.Topics + } + return nil +} + +func (x *CategoryTopics_TopicList) GetBookmarkedPostNumbers() []int32 { + if x != nil { + return x.BookmarkedPostNumbers + } + return nil +} + +type CategoryTopics_TopicList_Topics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + FancyTitle string `protobuf:"bytes,3,opt,name=fancy_title,json=fancyTitle,proto3" json:"fancy_title,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + PostsCount int32 `protobuf:"varint,5,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` + ReplyCount int32 `protobuf:"varint,6,opt,name=reply_count,json=replyCount,proto3" json:"reply_count,omitempty"` + HighestPostNumber int32 `protobuf:"varint,7,opt,name=highest_post_number,json=highestPostNumber,proto3" json:"highest_post_number,omitempty"` + ImageUrl string `protobuf:"bytes,8,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + LastPostedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_posted_at,json=lastPostedAt,proto3" json:"last_posted_at,omitempty"` + Bumped bool `protobuf:"varint,11,opt,name=bumped,proto3" json:"bumped,omitempty"` + BumpedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=bumped_at,json=bumpedAt,proto3" json:"bumped_at,omitempty"` + Archetype string `protobuf:"bytes,13,opt,name=archetype,proto3" json:"archetype,omitempty"` + Unseen bool `protobuf:"varint,14,opt,name=unseen,proto3" json:"unseen,omitempty"` + LastReadPostNumber int32 `protobuf:"varint,15,opt,name=last_read_post_number,json=lastReadPostNumber,proto3" json:"last_read_post_number,omitempty"` + Unread int32 `protobuf:"varint,16,opt,name=unread,proto3" json:"unread,omitempty"` + NewPosts int32 `protobuf:"varint,17,opt,name=new_posts,json=newPosts,proto3" json:"new_posts,omitempty"` + Pinned bool `protobuf:"varint,18,opt,name=pinned,proto3" json:"pinned,omitempty"` + Visible bool `protobuf:"varint,19,opt,name=visible,proto3" json:"visible,omitempty"` + Closed bool `protobuf:"varint,20,opt,name=closed,proto3" json:"closed,omitempty"` + Archived bool `protobuf:"varint,21,opt,name=archived,proto3" json:"archived,omitempty"` + NotificationLevel int32 `protobuf:"varint,22,opt,name=notification_level,json=notificationLevel,proto3" json:"notification_level,omitempty"` + Bookmarked bool `protobuf:"varint,23,opt,name=bookmarked,proto3" json:"bookmarked,omitempty"` + Liked bool `protobuf:"varint,24,opt,name=liked,proto3" json:"liked,omitempty"` + Tags []string `protobuf:"bytes,25,rep,name=tags,proto3" json:"tags,omitempty"` + Views int32 `protobuf:"varint,26,opt,name=views,proto3" json:"views,omitempty"` + LikeCount int32 `protobuf:"varint,27,opt,name=like_count,json=likeCount,proto3" json:"like_count,omitempty"` + HasSummary bool `protobuf:"varint,28,opt,name=has_summary,json=hasSummary,proto3" json:"has_summary,omitempty"` + LastPosteUsername string `protobuf:"bytes,29,opt,name=last_poste_username,json=lastPosteUsername,proto3" json:"last_poste_username,omitempty"` + CategoryId int32 `protobuf:"varint,30,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + PinnedGlobally bool `protobuf:"varint,31,opt,name=pinned_globally,json=pinnedGlobally,proto3" json:"pinned_globally,omitempty"` + HasAcceptedAnswer bool `protobuf:"varint,32,opt,name=has_accepted_answer,json=hasAcceptedAnswer,proto3" json:"has_accepted_answer,omitempty"` + Posters []*CategoryTopics_TopicList_Topics_Posters `protobuf:"bytes,33,rep,name=posters,proto3" json:"posters,omitempty"` +} + +func (x *CategoryTopics_TopicList_Topics) Reset() { + *x = CategoryTopics_TopicList_Topics{} + if protoimpl.UnsafeEnabled { + mi := &file_categorytopics_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CategoryTopics_TopicList_Topics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CategoryTopics_TopicList_Topics) ProtoMessage() {} + +func (x *CategoryTopics_TopicList_Topics) ProtoReflect() protoreflect.Message { + mi := &file_categorytopics_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CategoryTopics_TopicList_Topics.ProtoReflect.Descriptor instead. +func (*CategoryTopics_TopicList_Topics) Descriptor() ([]byte, []int) { + return file_categorytopics_proto_rawDescGZIP(), []int{0, 1, 0} +} + +func (x *CategoryTopics_TopicList_Topics) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics) GetFancyTitle() string { + if x != nil { + return x.FancyTitle + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics) GetPostsCount() int32 { + if x != nil { + return x.PostsCount + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetHighestPostNumber() int32 { + if x != nil { + return x.HighestPostNumber + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *CategoryTopics_TopicList_Topics) GetLastPostedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastPostedAt + } + return nil +} + +func (x *CategoryTopics_TopicList_Topics) GetBumped() bool { + if x != nil { + return x.Bumped + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetBumpedAt() *timestamppb.Timestamp { + if x != nil { + return x.BumpedAt + } + return nil +} + +func (x *CategoryTopics_TopicList_Topics) GetArchetype() string { + if x != nil { + return x.Archetype + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics) GetUnseen() bool { + if x != nil { + return x.Unseen + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetLastReadPostNumber() int32 { + if x != nil { + return x.LastReadPostNumber + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetUnread() int32 { + if x != nil { + return x.Unread + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetNewPosts() int32 { + if x != nil { + return x.NewPosts + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetPinned() bool { + if x != nil { + return x.Pinned + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetVisible() bool { + if x != nil { + return x.Visible + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetClosed() bool { + if x != nil { + return x.Closed + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetArchived() bool { + if x != nil { + return x.Archived + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetNotificationLevel() int32 { + if x != nil { + return x.NotificationLevel + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetBookmarked() bool { + if x != nil { + return x.Bookmarked + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetLiked() bool { + if x != nil { + return x.Liked + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *CategoryTopics_TopicList_Topics) GetViews() int32 { + if x != nil { + return x.Views + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetHasSummary() bool { + if x != nil { + return x.HasSummary + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetLastPosteUsername() string { + if x != nil { + return x.LastPosteUsername + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics) GetCategoryId() int32 { + if x != nil { + return x.CategoryId + } + return 0 +} + +func (x *CategoryTopics_TopicList_Topics) GetPinnedGlobally() bool { + if x != nil { + return x.PinnedGlobally + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetHasAcceptedAnswer() bool { + if x != nil { + return x.HasAcceptedAnswer + } + return false +} + +func (x *CategoryTopics_TopicList_Topics) GetPosters() []*CategoryTopics_TopicList_Topics_Posters { + if x != nil { + return x.Posters + } + return nil +} + +type CategoryTopics_TopicList_Topics_Posters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Extras string `protobuf:"bytes,1,opt,name=extras,proto3" json:"extras,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + UserId int32 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` +} + +func (x *CategoryTopics_TopicList_Topics_Posters) Reset() { + *x = CategoryTopics_TopicList_Topics_Posters{} + if protoimpl.UnsafeEnabled { + mi := &file_categorytopics_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CategoryTopics_TopicList_Topics_Posters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CategoryTopics_TopicList_Topics_Posters) ProtoMessage() {} + +func (x *CategoryTopics_TopicList_Topics_Posters) ProtoReflect() protoreflect.Message { + mi := &file_categorytopics_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CategoryTopics_TopicList_Topics_Posters.ProtoReflect.Descriptor instead. +func (*CategoryTopics_TopicList_Topics_Posters) Descriptor() ([]byte, []int) { + return file_categorytopics_proto_rawDescGZIP(), []int{0, 1, 0, 0} +} + +func (x *CategoryTopics_TopicList_Topics_Posters) GetExtras() string { + if x != nil { + return x.Extras + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics_Posters) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CategoryTopics_TopicList_Topics_Posters) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +var File_categorytopics_proto protoreflect.FileDescriptor + +var file_categorytopics_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x0e, 0x0a, 0x0e, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x3e, + 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x4b, + 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x70, 0x0a, 0x05, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0xa9, 0x0c, + 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x63, + 0x61, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4b, + 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, 0x72, 0x61, 0x66, + 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, + 0x50, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x67, 0x73, 0x12, + 0x4b, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x70, + 0x69, 0x63, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x54, 0x6f, + 0x70, 0x69, 0x63, 0x73, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x36, 0x0a, 0x17, + 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x15, 0x62, + 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x1a, 0xf2, 0x09, 0x0a, 0x06, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x5f, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x63, + 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, + 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x68, 0x69, 0x67, 0x68, 0x65, + 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x12, 0x37, + 0x0a, 0x09, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x62, + 0x75, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x63, 0x68, + 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x73, 0x65, 0x65, 0x6e, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x73, 0x65, 0x65, 0x6e, 0x12, 0x31, 0x0a, + 0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6c, 0x61, + 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x65, 0x77, + 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6f, + 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6b, 0x65, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x1a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, + 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x73, + 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x68, 0x61, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70, + 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x1f, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x11, 0x68, 0x61, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, + 0x69, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x5c, 0x0a, 0x07, 0x50, + 0x6f, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, + 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, + 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_categorytopics_proto_rawDescOnce sync.Once + file_categorytopics_proto_rawDescData = file_categorytopics_proto_rawDesc +) + +func file_categorytopics_proto_rawDescGZIP() []byte { + file_categorytopics_proto_rawDescOnce.Do(func() { + file_categorytopics_proto_rawDescData = protoimpl.X.CompressGZIP(file_categorytopics_proto_rawDescData) + }) + return file_categorytopics_proto_rawDescData +} + +var file_categorytopics_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_categorytopics_proto_goTypes = []interface{}{ + (*CategoryTopics)(nil), // 0: discourse.protobuf.CategoryTopics + (*CategoryTopics_Users)(nil), // 1: discourse.protobuf.CategoryTopics.Users + (*CategoryTopics_TopicList)(nil), // 2: discourse.protobuf.CategoryTopics.TopicList + (*CategoryTopics_TopicList_Topics)(nil), // 3: discourse.protobuf.CategoryTopics.TopicList.Topics + (*CategoryTopics_TopicList_Topics_Posters)(nil), // 4: discourse.protobuf.CategoryTopics.TopicList.Topics.Posters + (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp +} +var file_categorytopics_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.CategoryTopics.users:type_name -> discourse.protobuf.CategoryTopics.Users + 2, // 1: discourse.protobuf.CategoryTopics.topic_list:type_name -> discourse.protobuf.CategoryTopics.TopicList + 3, // 2: discourse.protobuf.CategoryTopics.TopicList.topics:type_name -> discourse.protobuf.CategoryTopics.TopicList.Topics + 5, // 3: discourse.protobuf.CategoryTopics.TopicList.Topics.created_at:type_name -> google.protobuf.Timestamp + 5, // 4: discourse.protobuf.CategoryTopics.TopicList.Topics.last_posted_at:type_name -> google.protobuf.Timestamp + 5, // 5: discourse.protobuf.CategoryTopics.TopicList.Topics.bumped_at:type_name -> google.protobuf.Timestamp + 4, // 6: discourse.protobuf.CategoryTopics.TopicList.Topics.posters:type_name -> discourse.protobuf.CategoryTopics.TopicList.Topics.Posters + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_categorytopics_proto_init() } +func file_categorytopics_proto_init() { + if File_categorytopics_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_categorytopics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CategoryTopics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_categorytopics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CategoryTopics_Users); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_categorytopics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CategoryTopics_TopicList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_categorytopics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CategoryTopics_TopicList_Topics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_categorytopics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CategoryTopics_TopicList_Topics_Posters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_categorytopics_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_categorytopics_proto_goTypes, + DependencyIndexes: file_categorytopics_proto_depIdxs, + MessageInfos: file_categorytopics_proto_msgTypes, + }.Build() + File_categorytopics_proto = out.File + file_categorytopics_proto_rawDesc = nil + file_categorytopics_proto_goTypes = nil + file_categorytopics_proto_depIdxs = nil +} diff --git a/discoursepb/directory_items.pb.go b/discoursepb/directory_items.pb.go new file mode 100644 index 0000000..b0009f8 --- /dev/null +++ b/discoursepb/directory_items.pb.go @@ -0,0 +1,519 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: directory_items.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type DirectoryItems struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DirectoryItems []*DirectoryItems_DirectoryItems `protobuf:"bytes,1,rep,name=directory_items,json=directoryItems,proto3" json:"directory_items,omitempty"` + Meta *DirectoryItems_Meta `protobuf:"bytes,2,opt,name=meta,proto3" json:"meta,omitempty"` +} + +func (x *DirectoryItems) Reset() { + *x = DirectoryItems{} + if protoimpl.UnsafeEnabled { + mi := &file_directory_items_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirectoryItems) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirectoryItems) ProtoMessage() {} + +func (x *DirectoryItems) ProtoReflect() protoreflect.Message { + mi := &file_directory_items_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DirectoryItems.ProtoReflect.Descriptor instead. +func (*DirectoryItems) Descriptor() ([]byte, []int) { + return file_directory_items_proto_rawDescGZIP(), []int{0} +} + +func (x *DirectoryItems) GetDirectoryItems() []*DirectoryItems_DirectoryItems { + if x != nil { + return x.DirectoryItems + } + return nil +} + +func (x *DirectoryItems) GetMeta() *DirectoryItems_Meta { + if x != nil { + return x.Meta + } + return nil +} + +type DirectoryItems_DirectoryItems struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + TimeRead int32 `protobuf:"varint,2,opt,name=time_read,json=timeRead,proto3" json:"time_read,omitempty"` + LikesReceived int32 `protobuf:"varint,3,opt,name=likes_received,json=likesReceived,proto3" json:"likes_received,omitempty"` + LikesGiven int32 `protobuf:"varint,4,opt,name=likes_given,json=likesGiven,proto3" json:"likes_given,omitempty"` + TopicsEntered int32 `protobuf:"varint,5,opt,name=topics_entered,json=topicsEntered,proto3" json:"topics_entered,omitempty"` + TopicCount int32 `protobuf:"varint,6,opt,name=topic_count,json=topicCount,proto3" json:"topic_count,omitempty"` + PostCount int32 `protobuf:"varint,7,opt,name=post_count,json=postCount,proto3" json:"post_count,omitempty"` + PostsRead int32 `protobuf:"varint,8,opt,name=posts_read,json=postsRead,proto3" json:"posts_read,omitempty"` + DaysVisited int32 `protobuf:"varint,9,opt,name=days_visited,json=daysVisited,proto3" json:"days_visited,omitempty"` + User *DirectoryItems_DirectoryItems_User `protobuf:"bytes,10,opt,name=user,proto3" json:"user,omitempty"` +} + +func (x *DirectoryItems_DirectoryItems) Reset() { + *x = DirectoryItems_DirectoryItems{} + if protoimpl.UnsafeEnabled { + mi := &file_directory_items_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirectoryItems_DirectoryItems) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirectoryItems_DirectoryItems) ProtoMessage() {} + +func (x *DirectoryItems_DirectoryItems) ProtoReflect() protoreflect.Message { + mi := &file_directory_items_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DirectoryItems_DirectoryItems.ProtoReflect.Descriptor instead. +func (*DirectoryItems_DirectoryItems) Descriptor() ([]byte, []int) { + return file_directory_items_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *DirectoryItems_DirectoryItems) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetTimeRead() int32 { + if x != nil { + return x.TimeRead + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetLikesReceived() int32 { + if x != nil { + return x.LikesReceived + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetLikesGiven() int32 { + if x != nil { + return x.LikesGiven + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetTopicsEntered() int32 { + if x != nil { + return x.TopicsEntered + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetTopicCount() int32 { + if x != nil { + return x.TopicCount + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetPostCount() int32 { + if x != nil { + return x.PostCount + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetPostsRead() int32 { + if x != nil { + return x.PostsRead + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetDaysVisited() int32 { + if x != nil { + return x.DaysVisited + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems) GetUser() *DirectoryItems_DirectoryItems_User { + if x != nil { + return x.User + } + return nil +} + +type DirectoryItems_Meta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LastUpdatedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=last_updated_at,json=lastUpdatedAt,proto3" json:"last_updated_at,omitempty"` + TotalRowsDirectoryItems int32 `protobuf:"varint,2,opt,name=total_rows_directory_items,json=totalRowsDirectoryItems,proto3" json:"total_rows_directory_items,omitempty"` + LoadMoreDirectoryItems string `protobuf:"bytes,3,opt,name=load_more_directory_items,json=loadMoreDirectoryItems,proto3" json:"load_more_directory_items,omitempty"` +} + +func (x *DirectoryItems_Meta) Reset() { + *x = DirectoryItems_Meta{} + if protoimpl.UnsafeEnabled { + mi := &file_directory_items_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirectoryItems_Meta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirectoryItems_Meta) ProtoMessage() {} + +func (x *DirectoryItems_Meta) ProtoReflect() protoreflect.Message { + mi := &file_directory_items_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DirectoryItems_Meta.ProtoReflect.Descriptor instead. +func (*DirectoryItems_Meta) Descriptor() ([]byte, []int) { + return file_directory_items_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *DirectoryItems_Meta) GetLastUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastUpdatedAt + } + return nil +} + +func (x *DirectoryItems_Meta) GetTotalRowsDirectoryItems() int32 { + if x != nil { + return x.TotalRowsDirectoryItems + } + return 0 +} + +func (x *DirectoryItems_Meta) GetLoadMoreDirectoryItems() string { + if x != nil { + return x.LoadMoreDirectoryItems + } + return "" +} + +type DirectoryItems_DirectoryItems_User struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,4,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` + Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` +} + +func (x *DirectoryItems_DirectoryItems_User) Reset() { + *x = DirectoryItems_DirectoryItems_User{} + if protoimpl.UnsafeEnabled { + mi := &file_directory_items_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DirectoryItems_DirectoryItems_User) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DirectoryItems_DirectoryItems_User) ProtoMessage() {} + +func (x *DirectoryItems_DirectoryItems_User) ProtoReflect() protoreflect.Message { + mi := &file_directory_items_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DirectoryItems_DirectoryItems_User.ProtoReflect.Descriptor instead. +func (*DirectoryItems_DirectoryItems_User) Descriptor() ([]byte, []int) { + return file_directory_items_proto_rawDescGZIP(), []int{0, 0, 0} +} + +func (x *DirectoryItems_DirectoryItems_User) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DirectoryItems_DirectoryItems_User) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *DirectoryItems_DirectoryItems_User) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DirectoryItems_DirectoryItems_User) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +func (x *DirectoryItems_DirectoryItems_User) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +var File_directory_items_proto protoreflect.FileDescriptor + +var file_directory_items_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x06, 0x0a, + 0x0e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, + 0x5a, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x0e, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x1a, 0x82, 0x04, 0x0a, 0x0e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x69, 0x6b, 0x65, + 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x5f, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x73, 0x47, 0x69, 0x76, 0x65, 0x6e, + 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, + 0x70, 0x69, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, + 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, + 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x73, + 0x74, 0x73, 0x52, 0x65, 0x61, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x79, 0x73, 0x5f, 0x76, + 0x69, 0x73, 0x69, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x64, 0x61, + 0x79, 0x73, 0x56, 0x69, 0x73, 0x69, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x85, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x1a, 0xc2, 0x01, + 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x6f, 0x77, 0x73, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x6d, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6c, 0x6f, 0x61, 0x64, + 0x4d, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, + 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_directory_items_proto_rawDescOnce sync.Once + file_directory_items_proto_rawDescData = file_directory_items_proto_rawDesc +) + +func file_directory_items_proto_rawDescGZIP() []byte { + file_directory_items_proto_rawDescOnce.Do(func() { + file_directory_items_proto_rawDescData = protoimpl.X.CompressGZIP(file_directory_items_proto_rawDescData) + }) + return file_directory_items_proto_rawDescData +} + +var file_directory_items_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_directory_items_proto_goTypes = []interface{}{ + (*DirectoryItems)(nil), // 0: discourse.protobuf.DirectoryItems + (*DirectoryItems_DirectoryItems)(nil), // 1: discourse.protobuf.DirectoryItems.DirectoryItems + (*DirectoryItems_Meta)(nil), // 2: discourse.protobuf.DirectoryItems.Meta + (*DirectoryItems_DirectoryItems_User)(nil), // 3: discourse.protobuf.DirectoryItems.DirectoryItems.User + (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp +} +var file_directory_items_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.DirectoryItems.directory_items:type_name -> discourse.protobuf.DirectoryItems.DirectoryItems + 2, // 1: discourse.protobuf.DirectoryItems.meta:type_name -> discourse.protobuf.DirectoryItems.Meta + 3, // 2: discourse.protobuf.DirectoryItems.DirectoryItems.user:type_name -> discourse.protobuf.DirectoryItems.DirectoryItems.User + 4, // 3: discourse.protobuf.DirectoryItems.Meta.last_updated_at:type_name -> google.protobuf.Timestamp + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_directory_items_proto_init() } +func file_directory_items_proto_init() { + if File_directory_items_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_directory_items_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirectoryItems); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_directory_items_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirectoryItems_DirectoryItems); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_directory_items_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirectoryItems_Meta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_directory_items_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DirectoryItems_DirectoryItems_User); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_directory_items_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_directory_items_proto_goTypes, + DependencyIndexes: file_directory_items_proto_depIdxs, + MessageInfos: file_directory_items_proto_msgTypes, + }.Build() + File_directory_items_proto = out.File + file_directory_items_proto_rawDesc = nil + file_directory_items_proto_goTypes = nil + file_directory_items_proto_depIdxs = nil +} diff --git a/discoursepb/latest.pb.go b/discoursepb/latest.pb.go new file mode 100644 index 0000000..f7da235 --- /dev/null +++ b/discoursepb/latest.pb.go @@ -0,0 +1,845 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: latest.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Latest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Users []*Latest_Users `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` + TopicList *Latest_TopicList `protobuf:"bytes,2,opt,name=topic_list,json=topicList,proto3" json:"topic_list,omitempty"` +} + +func (x *Latest) Reset() { + *x = Latest{} + if protoimpl.UnsafeEnabled { + mi := &file_latest_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Latest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Latest) ProtoMessage() {} + +func (x *Latest) ProtoReflect() protoreflect.Message { + mi := &file_latest_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Latest.ProtoReflect.Descriptor instead. +func (*Latest) Descriptor() ([]byte, []int) { + return file_latest_proto_rawDescGZIP(), []int{0} +} + +func (x *Latest) GetUsers() []*Latest_Users { + if x != nil { + return x.Users + } + return nil +} + +func (x *Latest) GetTopicList() *Latest_TopicList { + if x != nil { + return x.TopicList + } + return nil +} + +type Latest_Users struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,4,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` +} + +func (x *Latest_Users) Reset() { + *x = Latest_Users{} + if protoimpl.UnsafeEnabled { + mi := &file_latest_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Latest_Users) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Latest_Users) ProtoMessage() {} + +func (x *Latest_Users) ProtoReflect() protoreflect.Message { + mi := &file_latest_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Latest_Users.ProtoReflect.Descriptor instead. +func (*Latest_Users) Descriptor() ([]byte, []int) { + return file_latest_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Latest_Users) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Latest_Users) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *Latest_Users) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Latest_Users) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +type Latest_TopicList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CanCreateTopics bool `protobuf:"varint,1,opt,name=can_create_topics,json=canCreateTopics,proto3" json:"can_create_topics,omitempty"` + MoreTopicsUrl string `protobuf:"bytes,2,opt,name=more_topics_url,json=moreTopicsUrl,proto3" json:"more_topics_url,omitempty"` + PerPage int32 `protobuf:"varint,3,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"` + TopTags []string `protobuf:"bytes,4,rep,name=top_tags,json=topTags,proto3" json:"top_tags,omitempty"` + Topics []*Latest_TopicList_Topics `protobuf:"bytes,5,rep,name=topics,proto3" json:"topics,omitempty"` + Posters []*Latest_TopicList_Posters `protobuf:"bytes,6,rep,name=posters,proto3" json:"posters,omitempty"` +} + +func (x *Latest_TopicList) Reset() { + *x = Latest_TopicList{} + if protoimpl.UnsafeEnabled { + mi := &file_latest_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Latest_TopicList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Latest_TopicList) ProtoMessage() {} + +func (x *Latest_TopicList) ProtoReflect() protoreflect.Message { + mi := &file_latest_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Latest_TopicList.ProtoReflect.Descriptor instead. +func (*Latest_TopicList) Descriptor() ([]byte, []int) { + return file_latest_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Latest_TopicList) GetCanCreateTopics() bool { + if x != nil { + return x.CanCreateTopics + } + return false +} + +func (x *Latest_TopicList) GetMoreTopicsUrl() string { + if x != nil { + return x.MoreTopicsUrl + } + return "" +} + +func (x *Latest_TopicList) GetPerPage() int32 { + if x != nil { + return x.PerPage + } + return 0 +} + +func (x *Latest_TopicList) GetTopTags() []string { + if x != nil { + return x.TopTags + } + return nil +} + +func (x *Latest_TopicList) GetTopics() []*Latest_TopicList_Topics { + if x != nil { + return x.Topics + } + return nil +} + +func (x *Latest_TopicList) GetPosters() []*Latest_TopicList_Posters { + if x != nil { + return x.Posters + } + return nil +} + +type Latest_TopicList_Topics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` + PostsCount int32 `protobuf:"varint,4,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` + ReplyCount int32 `protobuf:"varint,5,opt,name=reply_count,json=replyCount,proto3" json:"reply_count,omitempty"` + HighestPostNumber int32 `protobuf:"varint,6,opt,name=highest_post_number,json=highestPostNumber,proto3" json:"highest_post_number,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + LastPostedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_posted_at,json=lastPostedAt,proto3" json:"last_posted_at,omitempty"` + Bumped bool `protobuf:"varint,9,opt,name=bumped,proto3" json:"bumped,omitempty"` + BumpedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=bumped_at,json=bumpedAt,proto3" json:"bumped_at,omitempty"` + Archetype string `protobuf:"bytes,11,opt,name=archetype,proto3" json:"archetype,omitempty"` + Unseen bool `protobuf:"varint,12,opt,name=unseen,proto3" json:"unseen,omitempty"` + LastReadPostNumber int32 `protobuf:"varint,13,opt,name=last_read_post_number,json=lastReadPostNumber,proto3" json:"last_read_post_number,omitempty"` + Unread int32 `protobuf:"varint,14,opt,name=unread,proto3" json:"unread,omitempty"` + NewPosts int32 `protobuf:"varint,15,opt,name=new_posts,json=newPosts,proto3" json:"new_posts,omitempty"` + Pinned bool `protobuf:"varint,16,opt,name=pinned,proto3" json:"pinned,omitempty"` + Visible bool `protobuf:"varint,17,opt,name=visible,proto3" json:"visible,omitempty"` + Closed bool `protobuf:"varint,18,opt,name=closed,proto3" json:"closed,omitempty"` + Archived bool `protobuf:"varint,19,opt,name=archived,proto3" json:"archived,omitempty"` + NotificationLevel int32 `protobuf:"varint,20,opt,name=notification_level,json=notificationLevel,proto3" json:"notification_level,omitempty"` + Bookmarked bool `protobuf:"varint,21,opt,name=bookmarked,proto3" json:"bookmarked,omitempty"` + Liked bool `protobuf:"varint,22,opt,name=liked,proto3" json:"liked,omitempty"` + Tags []string `protobuf:"bytes,23,rep,name=tags,proto3" json:"tags,omitempty"` + Views int32 `protobuf:"varint,24,opt,name=views,proto3" json:"views,omitempty"` + LikeCount int32 `protobuf:"varint,25,opt,name=like_count,json=likeCount,proto3" json:"like_count,omitempty"` + HasSummary bool `protobuf:"varint,26,opt,name=has_summary,json=hasSummary,proto3" json:"has_summary,omitempty"` + LastPosterUsername string `protobuf:"bytes,27,opt,name=last_poster_username,json=lastPosterUsername,proto3" json:"last_poster_username,omitempty"` + CategoryId int32 `protobuf:"varint,28,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + PinnedGlobally bool `protobuf:"varint,29,opt,name=pinned_globally,json=pinnedGlobally,proto3" json:"pinned_globally,omitempty"` + BookmarkedPostNumbers []int32 `protobuf:"varint,30,rep,packed,name=bookmarked_post_numbers,json=bookmarkedPostNumbers,proto3" json:"bookmarked_post_numbers,omitempty"` + HasAcceptedAnswer bool `protobuf:"varint,31,opt,name=has_accepted_answer,json=hasAcceptedAnswer,proto3" json:"has_accepted_answer,omitempty"` +} + +func (x *Latest_TopicList_Topics) Reset() { + *x = Latest_TopicList_Topics{} + if protoimpl.UnsafeEnabled { + mi := &file_latest_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Latest_TopicList_Topics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Latest_TopicList_Topics) ProtoMessage() {} + +func (x *Latest_TopicList_Topics) ProtoReflect() protoreflect.Message { + mi := &file_latest_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Latest_TopicList_Topics.ProtoReflect.Descriptor instead. +func (*Latest_TopicList_Topics) Descriptor() ([]byte, []int) { + return file_latest_proto_rawDescGZIP(), []int{0, 1, 0} +} + +func (x *Latest_TopicList_Topics) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Latest_TopicList_Topics) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Latest_TopicList_Topics) GetPostsCount() int32 { + if x != nil { + return x.PostsCount + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetHighestPostNumber() int32 { + if x != nil { + return x.HighestPostNumber + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Latest_TopicList_Topics) GetLastPostedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastPostedAt + } + return nil +} + +func (x *Latest_TopicList_Topics) GetBumped() bool { + if x != nil { + return x.Bumped + } + return false +} + +func (x *Latest_TopicList_Topics) GetBumpedAt() *timestamppb.Timestamp { + if x != nil { + return x.BumpedAt + } + return nil +} + +func (x *Latest_TopicList_Topics) GetArchetype() string { + if x != nil { + return x.Archetype + } + return "" +} + +func (x *Latest_TopicList_Topics) GetUnseen() bool { + if x != nil { + return x.Unseen + } + return false +} + +func (x *Latest_TopicList_Topics) GetLastReadPostNumber() int32 { + if x != nil { + return x.LastReadPostNumber + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetUnread() int32 { + if x != nil { + return x.Unread + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetNewPosts() int32 { + if x != nil { + return x.NewPosts + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetPinned() bool { + if x != nil { + return x.Pinned + } + return false +} + +func (x *Latest_TopicList_Topics) GetVisible() bool { + if x != nil { + return x.Visible + } + return false +} + +func (x *Latest_TopicList_Topics) GetClosed() bool { + if x != nil { + return x.Closed + } + return false +} + +func (x *Latest_TopicList_Topics) GetArchived() bool { + if x != nil { + return x.Archived + } + return false +} + +func (x *Latest_TopicList_Topics) GetNotificationLevel() int32 { + if x != nil { + return x.NotificationLevel + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetBookmarked() bool { + if x != nil { + return x.Bookmarked + } + return false +} + +func (x *Latest_TopicList_Topics) GetLiked() bool { + if x != nil { + return x.Liked + } + return false +} + +func (x *Latest_TopicList_Topics) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Latest_TopicList_Topics) GetViews() int32 { + if x != nil { + return x.Views + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetHasSummary() bool { + if x != nil { + return x.HasSummary + } + return false +} + +func (x *Latest_TopicList_Topics) GetLastPosterUsername() string { + if x != nil { + return x.LastPosterUsername + } + return "" +} + +func (x *Latest_TopicList_Topics) GetCategoryId() int32 { + if x != nil { + return x.CategoryId + } + return 0 +} + +func (x *Latest_TopicList_Topics) GetPinnedGlobally() bool { + if x != nil { + return x.PinnedGlobally + } + return false +} + +func (x *Latest_TopicList_Topics) GetBookmarkedPostNumbers() []int32 { + if x != nil { + return x.BookmarkedPostNumbers + } + return nil +} + +func (x *Latest_TopicList_Topics) GetHasAcceptedAnswer() bool { + if x != nil { + return x.HasAcceptedAnswer + } + return false +} + +type Latest_TopicList_Posters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Extras string `protobuf:"bytes,1,opt,name=extras,proto3" json:"extras,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + UserId int32 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + PrimaryGroupId int32 `protobuf:"varint,4,opt,name=primary_group_id,json=primaryGroupId,proto3" json:"primary_group_id,omitempty"` +} + +func (x *Latest_TopicList_Posters) Reset() { + *x = Latest_TopicList_Posters{} + if protoimpl.UnsafeEnabled { + mi := &file_latest_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Latest_TopicList_Posters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Latest_TopicList_Posters) ProtoMessage() {} + +func (x *Latest_TopicList_Posters) ProtoReflect() protoreflect.Message { + mi := &file_latest_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Latest_TopicList_Posters.ProtoReflect.Descriptor instead. +func (*Latest_TopicList_Posters) Descriptor() ([]byte, []int) { + return file_latest_proto_rawDescGZIP(), []int{0, 1, 1} +} + +func (x *Latest_TopicList_Posters) GetExtras() string { + if x != nil { + return x.Extras + } + return "" +} + +func (x *Latest_TopicList_Posters) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Latest_TopicList_Posters) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *Latest_TopicList_Posters) GetPrimaryGroupId() int32 { + if x != nil { + return x.PrimaryGroupId + } + return 0 +} + +var File_latest_proto protoreflect.FileDescriptor + +var file_latest_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x0d, 0x0a, 0x06, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x36, + 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, + 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x70, 0x0a, 0x05, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0xe7, 0x0b, + 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, + 0x61, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x6f, 0x72, 0x65, 0x5f, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6d, 0x6f, 0x72, 0x65, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x55, 0x72, 0x6c, 0x12, + 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, + 0x70, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, + 0x70, 0x54, 0x61, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, + 0x63, 0x73, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x70, 0x6f, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, + 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x1a, 0xb9, 0x08, 0x0a, 0x06, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, + 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, + 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x69, 0x67, + 0x68, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x50, + 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x12, 0x37, + 0x0a, 0x09, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x62, + 0x75, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x63, 0x68, + 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x73, 0x65, 0x65, 0x6e, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x73, 0x65, 0x65, 0x6e, 0x12, 0x31, 0x0a, + 0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6c, 0x61, + 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x65, 0x77, + 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6f, + 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6b, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x18, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, + 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x73, + 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x68, 0x61, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, + 0x0f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x6c, 0x79, + 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x15, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2e, + 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x68, 0x61, 0x73, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x1a, 0x86, + 0x01, 0x0a, 0x07, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, + 0x10, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, + 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_latest_proto_rawDescOnce sync.Once + file_latest_proto_rawDescData = file_latest_proto_rawDesc +) + +func file_latest_proto_rawDescGZIP() []byte { + file_latest_proto_rawDescOnce.Do(func() { + file_latest_proto_rawDescData = protoimpl.X.CompressGZIP(file_latest_proto_rawDescData) + }) + return file_latest_proto_rawDescData +} + +var file_latest_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_latest_proto_goTypes = []interface{}{ + (*Latest)(nil), // 0: discourse.protobuf.Latest + (*Latest_Users)(nil), // 1: discourse.protobuf.Latest.Users + (*Latest_TopicList)(nil), // 2: discourse.protobuf.Latest.TopicList + (*Latest_TopicList_Topics)(nil), // 3: discourse.protobuf.Latest.TopicList.Topics + (*Latest_TopicList_Posters)(nil), // 4: discourse.protobuf.Latest.TopicList.Posters + (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp +} +var file_latest_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.Latest.users:type_name -> discourse.protobuf.Latest.Users + 2, // 1: discourse.protobuf.Latest.topic_list:type_name -> discourse.protobuf.Latest.TopicList + 3, // 2: discourse.protobuf.Latest.TopicList.topics:type_name -> discourse.protobuf.Latest.TopicList.Topics + 4, // 3: discourse.protobuf.Latest.TopicList.posters:type_name -> discourse.protobuf.Latest.TopicList.Posters + 5, // 4: discourse.protobuf.Latest.TopicList.Topics.created_at:type_name -> google.protobuf.Timestamp + 5, // 5: discourse.protobuf.Latest.TopicList.Topics.last_posted_at:type_name -> google.protobuf.Timestamp + 5, // 6: discourse.protobuf.Latest.TopicList.Topics.bumped_at:type_name -> google.protobuf.Timestamp + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_latest_proto_init() } +func file_latest_proto_init() { + if File_latest_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_latest_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Latest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_latest_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Latest_Users); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_latest_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Latest_TopicList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_latest_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Latest_TopicList_Topics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_latest_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Latest_TopicList_Posters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_latest_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_latest_proto_goTypes, + DependencyIndexes: file_latest_proto_depIdxs, + MessageInfos: file_latest_proto_msgTypes, + }.Build() + File_latest_proto = out.File + file_latest_proto_rawDesc = nil + file_latest_proto_goTypes = nil + file_latest_proto_depIdxs = nil +} diff --git a/discoursepb/posts.pb.go b/discoursepb/posts.pb.go new file mode 100644 index 0000000..bd8a183 --- /dev/null +++ b/discoursepb/posts.pb.go @@ -0,0 +1,750 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: posts.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type PostsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + TopicId int32 `protobuf:"varint,2,opt,name=topic_id,json=topicId,proto3" json:"topic_id,omitempty"` + Raw string `protobuf:"bytes,3,opt,name=raw,proto3" json:"raw,omitempty"` + Category int32 `protobuf:"varint,4,opt,name=category,proto3" json:"category,omitempty"` + TargetRecipients string `protobuf:"bytes,5,opt,name=target_recipients,json=targetRecipients,proto3" json:"target_recipients,omitempty"` + Archetype string `protobuf:"bytes,6,opt,name=archetype,proto3" json:"archetype,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` +} + +func (x *PostsRequest) Reset() { + *x = PostsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_posts_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostsRequest) ProtoMessage() {} + +func (x *PostsRequest) ProtoReflect() protoreflect.Message { + mi := &file_posts_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostsRequest.ProtoReflect.Descriptor instead. +func (*PostsRequest) Descriptor() ([]byte, []int) { + return file_posts_proto_rawDescGZIP(), []int{0} +} + +func (x *PostsRequest) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *PostsRequest) GetTopicId() int32 { + if x != nil { + return x.TopicId + } + return 0 +} + +func (x *PostsRequest) GetRaw() string { + if x != nil { + return x.Raw + } + return "" +} + +func (x *PostsRequest) GetCategory() int32 { + if x != nil { + return x.Category + } + return 0 +} + +func (x *PostsRequest) GetTargetRecipients() string { + if x != nil { + return x.TargetRecipients + } + return "" +} + +func (x *PostsRequest) GetArchetype() string { + if x != nil { + return x.Archetype + } + return "" +} + +func (x *PostsRequest) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +type PostsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,3,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Cooked string `protobuf:"bytes,5,opt,name=cooked,proto3" json:"cooked,omitempty"` + PostNumber int32 `protobuf:"varint,6,opt,name=post_number,json=postNumber,proto3" json:"post_number,omitempty"` + PostType int32 `protobuf:"varint,7,opt,name=post_type,json=postType,proto3" json:"post_type,omitempty"` + UpdatedAt string `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ReplyCount int32 `protobuf:"varint,9,opt,name=reply_count,json=replyCount,proto3" json:"reply_count,omitempty"` + ReplyToPostNumber int32 `protobuf:"varint,10,opt,name=reply_to_post_number,json=replyToPostNumber,proto3" json:"reply_to_post_number,omitempty"` + QuoteCount int32 `protobuf:"varint,11,opt,name=quote_count,json=quoteCount,proto3" json:"quote_count,omitempty"` + AvgTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=avg_time,json=avgTime,proto3" json:"avg_time,omitempty"` + IncomingLinkCount int32 `protobuf:"varint,13,opt,name=incoming_link_count,json=incomingLinkCount,proto3" json:"incoming_link_count,omitempty"` + Reads int32 `protobuf:"varint,14,opt,name=reads,proto3" json:"reads,omitempty"` + Score float64 `protobuf:"fixed64,15,opt,name=score,proto3" json:"score,omitempty"` + Yours bool `protobuf:"varint,16,opt,name=yours,proto3" json:"yours,omitempty"` + TopicId int32 `protobuf:"varint,17,opt,name=topic_id,json=topicId,proto3" json:"topic_id,omitempty"` + TopicSlug string `protobuf:"bytes,18,opt,name=topic_slug,json=topicSlug,proto3" json:"topic_slug,omitempty"` + DisplayUsername string `protobuf:"bytes,19,opt,name=display_username,json=displayUsername,proto3" json:"display_username,omitempty"` + Version int32 `protobuf:"varint,20,opt,name=version,proto3" json:"version,omitempty"` + CanEdit bool `protobuf:"varint,21,opt,name=can_edit,json=canEdit,proto3" json:"can_edit,omitempty"` + CanDelete bool `protobuf:"varint,22,opt,name=can_delete,json=canDelete,proto3" json:"can_delete,omitempty"` + CanRecover bool `protobuf:"varint,23,opt,name=can_recover,json=canRecover,proto3" json:"can_recover,omitempty"` + CanWiki bool `protobuf:"varint,24,opt,name=can_wiki,json=canWiki,proto3" json:"can_wiki,omitempty"` + UserTitle string `protobuf:"bytes,25,opt,name=user_title,json=userTitle,proto3" json:"user_title,omitempty"` + ActionsSummary []*PostsResponse_ActionsSummary `protobuf:"bytes,26,rep,name=actions_summary,json=actionsSummary,proto3" json:"actions_summary,omitempty"` + Moderator bool `protobuf:"varint,27,opt,name=moderator,proto3" json:"moderator,omitempty"` + Admin bool `protobuf:"varint,28,opt,name=admin,proto3" json:"admin,omitempty"` + Staff bool `protobuf:"varint,29,opt,name=staff,proto3" json:"staff,omitempty"` + UserId int32 `protobuf:"varint,30,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + DraftSequence int32 `protobuf:"varint,31,opt,name=draft_sequence,json=draftSequence,proto3" json:"draft_sequence,omitempty"` + Hidden bool `protobuf:"varint,32,opt,name=hidden,proto3" json:"hidden,omitempty"` + HiddenReasonId int32 `protobuf:"varint,33,opt,name=hidden_reason_id,json=hiddenReasonId,proto3" json:"hidden_reason_id,omitempty"` + TrustLevel int32 `protobuf:"varint,34,opt,name=trust_level,json=trustLevel,proto3" json:"trust_level,omitempty"` + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,35,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` + UserDeleted bool `protobuf:"varint,36,opt,name=user_deleted,json=userDeleted,proto3" json:"user_deleted,omitempty"` + EditReason string `protobuf:"bytes,37,opt,name=edit_reason,json=editReason,proto3" json:"edit_reason,omitempty"` + CanViewEditHistory bool `protobuf:"varint,38,opt,name=can_view_edit_history,json=canViewEditHistory,proto3" json:"can_view_edit_history,omitempty"` + Wiki bool `protobuf:"varint,39,opt,name=wiki,proto3" json:"wiki,omitempty"` +} + +func (x *PostsResponse) Reset() { + *x = PostsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_posts_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostsResponse) ProtoMessage() {} + +func (x *PostsResponse) ProtoReflect() protoreflect.Message { + mi := &file_posts_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostsResponse.ProtoReflect.Descriptor instead. +func (*PostsResponse) Descriptor() ([]byte, []int) { + return file_posts_proto_rawDescGZIP(), []int{1} +} + +func (x *PostsResponse) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PostsResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PostsResponse) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +func (x *PostsResponse) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *PostsResponse) GetCooked() string { + if x != nil { + return x.Cooked + } + return "" +} + +func (x *PostsResponse) GetPostNumber() int32 { + if x != nil { + return x.PostNumber + } + return 0 +} + +func (x *PostsResponse) GetPostType() int32 { + if x != nil { + return x.PostType + } + return 0 +} + +func (x *PostsResponse) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +func (x *PostsResponse) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *PostsResponse) GetReplyToPostNumber() int32 { + if x != nil { + return x.ReplyToPostNumber + } + return 0 +} + +func (x *PostsResponse) GetQuoteCount() int32 { + if x != nil { + return x.QuoteCount + } + return 0 +} + +func (x *PostsResponse) GetAvgTime() *timestamppb.Timestamp { + if x != nil { + return x.AvgTime + } + return nil +} + +func (x *PostsResponse) GetIncomingLinkCount() int32 { + if x != nil { + return x.IncomingLinkCount + } + return 0 +} + +func (x *PostsResponse) GetReads() int32 { + if x != nil { + return x.Reads + } + return 0 +} + +func (x *PostsResponse) GetScore() float64 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *PostsResponse) GetYours() bool { + if x != nil { + return x.Yours + } + return false +} + +func (x *PostsResponse) GetTopicId() int32 { + if x != nil { + return x.TopicId + } + return 0 +} + +func (x *PostsResponse) GetTopicSlug() string { + if x != nil { + return x.TopicSlug + } + return "" +} + +func (x *PostsResponse) GetDisplayUsername() string { + if x != nil { + return x.DisplayUsername + } + return "" +} + +func (x *PostsResponse) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *PostsResponse) GetCanEdit() bool { + if x != nil { + return x.CanEdit + } + return false +} + +func (x *PostsResponse) GetCanDelete() bool { + if x != nil { + return x.CanDelete + } + return false +} + +func (x *PostsResponse) GetCanRecover() bool { + if x != nil { + return x.CanRecover + } + return false +} + +func (x *PostsResponse) GetCanWiki() bool { + if x != nil { + return x.CanWiki + } + return false +} + +func (x *PostsResponse) GetUserTitle() string { + if x != nil { + return x.UserTitle + } + return "" +} + +func (x *PostsResponse) GetActionsSummary() []*PostsResponse_ActionsSummary { + if x != nil { + return x.ActionsSummary + } + return nil +} + +func (x *PostsResponse) GetModerator() bool { + if x != nil { + return x.Moderator + } + return false +} + +func (x *PostsResponse) GetAdmin() bool { + if x != nil { + return x.Admin + } + return false +} + +func (x *PostsResponse) GetStaff() bool { + if x != nil { + return x.Staff + } + return false +} + +func (x *PostsResponse) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *PostsResponse) GetDraftSequence() int32 { + if x != nil { + return x.DraftSequence + } + return 0 +} + +func (x *PostsResponse) GetHidden() bool { + if x != nil { + return x.Hidden + } + return false +} + +func (x *PostsResponse) GetHiddenReasonId() int32 { + if x != nil { + return x.HiddenReasonId + } + return 0 +} + +func (x *PostsResponse) GetTrustLevel() int32 { + if x != nil { + return x.TrustLevel + } + return 0 +} + +func (x *PostsResponse) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt + } + return nil +} + +func (x *PostsResponse) GetUserDeleted() bool { + if x != nil { + return x.UserDeleted + } + return false +} + +func (x *PostsResponse) GetEditReason() string { + if x != nil { + return x.EditReason + } + return "" +} + +func (x *PostsResponse) GetCanViewEditHistory() bool { + if x != nil { + return x.CanViewEditHistory + } + return false +} + +func (x *PostsResponse) GetWiki() bool { + if x != nil { + return x.Wiki + } + return false +} + +type PostsResponse_ActionsSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Hidden bool `protobuf:"varint,2,opt,name=hidden,proto3" json:"hidden,omitempty"` + CanAct bool `protobuf:"varint,3,opt,name=can_act,json=canAct,proto3" json:"can_act,omitempty"` +} + +func (x *PostsResponse_ActionsSummary) Reset() { + *x = PostsResponse_ActionsSummary{} + if protoimpl.UnsafeEnabled { + mi := &file_posts_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostsResponse_ActionsSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostsResponse_ActionsSummary) ProtoMessage() {} + +func (x *PostsResponse_ActionsSummary) ProtoReflect() protoreflect.Message { + mi := &file_posts_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostsResponse_ActionsSummary.ProtoReflect.Descriptor instead. +func (*PostsResponse_ActionsSummary) Descriptor() ([]byte, []int) { + return file_posts_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *PostsResponse_ActionsSummary) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PostsResponse_ActionsSummary) GetHidden() bool { + if x != nil { + return x.Hidden + } + return false +} + +func (x *PostsResponse_ActionsSummary) GetCanAct() bool { + if x != nil { + return x.CanAct + } + return false +} + +var File_posts_proto protoreflect.FileDescriptor + +var file_posts_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xf3, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x63, + 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x9d, 0x0b, 0x0a, 0x0d, 0x50, 0x6f, 0x73, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, + 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, + 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x79, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, + 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6c, + 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x50, + 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x71, 0x75, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x76, + 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x61, 0x76, 0x67, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, + 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x79, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x79, 0x6f, + 0x75, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x12, 0x1d, + 0x0a, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x29, 0x0a, + 0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x77, 0x69, 0x6b, 0x69, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x63, 0x61, 0x6e, 0x57, 0x69, 0x6b, 0x69, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x59, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x66, 0x66, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x74, 0x61, 0x66, 0x66, 0x12, 0x17, 0x0a, 0x07, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, + 0x72, 0x61, 0x66, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x22, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, 0x75, 0x73, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x39, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x65, 0x64, 0x69, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x31, + 0x0a, 0x15, 0x63, 0x61, 0x6e, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x5f, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x63, + 0x61, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x45, 0x64, 0x69, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x69, 0x6b, 0x69, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x04, 0x77, 0x69, 0x6b, 0x69, 0x1a, 0x51, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, + 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, + 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_posts_proto_rawDescOnce sync.Once + file_posts_proto_rawDescData = file_posts_proto_rawDesc +) + +func file_posts_proto_rawDescGZIP() []byte { + file_posts_proto_rawDescOnce.Do(func() { + file_posts_proto_rawDescData = protoimpl.X.CompressGZIP(file_posts_proto_rawDescData) + }) + return file_posts_proto_rawDescData +} + +var file_posts_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_posts_proto_goTypes = []interface{}{ + (*PostsRequest)(nil), // 0: discourse.protobuf.PostsRequest + (*PostsResponse)(nil), // 1: discourse.protobuf.PostsResponse + (*PostsResponse_ActionsSummary)(nil), // 2: discourse.protobuf.PostsResponse.ActionsSummary + (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp +} +var file_posts_proto_depIdxs = []int32{ + 3, // 0: discourse.protobuf.PostsRequest.created_at:type_name -> google.protobuf.Timestamp + 3, // 1: discourse.protobuf.PostsResponse.created_at:type_name -> google.protobuf.Timestamp + 3, // 2: discourse.protobuf.PostsResponse.avg_time:type_name -> google.protobuf.Timestamp + 2, // 3: discourse.protobuf.PostsResponse.actions_summary:type_name -> discourse.protobuf.PostsResponse.ActionsSummary + 3, // 4: discourse.protobuf.PostsResponse.deleted_at:type_name -> google.protobuf.Timestamp + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_posts_proto_init() } +func file_posts_proto_init() { + if File_posts_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_posts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_posts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_posts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostsResponse_ActionsSummary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_posts_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_posts_proto_goTypes, + DependencyIndexes: file_posts_proto_depIdxs, + MessageInfos: file_posts_proto_msgTypes, + }.Build() + File_posts_proto = out.File + file_posts_proto_rawDesc = nil + file_posts_proto_goTypes = nil + file_posts_proto_depIdxs = nil +} diff --git a/discoursepb/site.pb.go b/discoursepb/site.pb.go new file mode 100644 index 0000000..c954162 --- /dev/null +++ b/discoursepb/site.pb.go @@ -0,0 +1,1892 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: site.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Site struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DefaultArchetype string `protobuf:"bytes,1,opt,name=default_archetype,json=defaultArchetype,proto3" json:"default_archetype,omitempty"` + NotificationTypes *Site_NotificationTypes `protobuf:"bytes,2,opt,name=notification_types,json=notificationTypes,proto3" json:"notification_types,omitempty"` + PostTypes *Site_PostTypes `protobuf:"bytes,3,opt,name=post_types,json=postTypes,proto3" json:"post_types,omitempty"` + Groups []*Site_Groups `protobuf:"bytes,4,rep,name=groups,proto3" json:"groups,omitempty"` + Filter []string `protobuf:"bytes,5,rep,name=filter,proto3" json:"filter,omitempty"` + Periods []string `protobuf:"bytes,6,rep,name=periods,proto3" json:"periods,omitempty"` + TopMenuItems []string `protobuf:"bytes,7,rep,name=top_menu_items,json=topMenuItems,proto3" json:"top_menu_items,omitempty"` + AnonymousTopMenuItems []string `protobuf:"bytes,8,rep,name=anonymous_top_menu_items,json=anonymousTopMenuItems,proto3" json:"anonymous_top_menu_items,omitempty"` + UncategorizedCategoryId int32 `protobuf:"varint,9,opt,name=uncategorized_category_id,json=uncategorizedCategoryId,proto3" json:"uncategorized_category_id,omitempty"` + UserFieldMaxLength int32 `protobuf:"varint,10,opt,name=user_field_max_length,json=userFieldMaxLength,proto3" json:"user_field_max_length,omitempty"` + PostActionTypes []*Site_PostActionTypes `protobuf:"bytes,11,rep,name=post_action_types,json=postActionTypes,proto3" json:"post_action_types,omitempty"` + TopicFlagTypes []*Site_TopicFlagTypes `protobuf:"bytes,12,rep,name=topic_flag_types,json=topicFlagTypes,proto3" json:"topic_flag_types,omitempty"` + CanCreateTag bool `protobuf:"varint,13,opt,name=can_create_tag,json=canCreateTag,proto3" json:"can_create_tag,omitempty"` + CanTagTopics bool `protobuf:"varint,14,opt,name=can_tag_topics,json=canTagTopics,proto3" json:"can_tag_topics,omitempty"` + CanTagPms bool `protobuf:"varint,15,opt,name=can_tag_pms,json=canTagPms,proto3" json:"can_tag_pms,omitempty"` + TagsFilterRegexp string `protobuf:"bytes,16,opt,name=tags_filter_regexp,json=tagsFilterRegexp,proto3" json:"tags_filter_regexp,omitempty"` + TopTags []string `protobuf:"bytes,17,rep,name=top_tags,json=topTags,proto3" json:"top_tags,omitempty"` + TopicFeaturedLinkAllowedCategoryIds []int32 `protobuf:"varint,18,rep,packed,name=topic_featured_link_allowed_category_ids,json=topicFeaturedLinkAllowedCategoryIds,proto3" json:"topic_featured_link_allowed_category_ids,omitempty"` + UserThemes []*Site_UserThemes `protobuf:"bytes,19,rep,name=user_themes,json=userThemes,proto3" json:"user_themes,omitempty"` + Categories []*Site_Categories `protobuf:"bytes,20,rep,name=categories,proto3" json:"categories,omitempty"` + TrustLevels []*Site_TrustLevels `protobuf:"bytes,21,rep,name=trust_levels,json=trustLevels,proto3" json:"trust_levels,omitempty"` + Archetypes []*Site_Archetypes `protobuf:"bytes,22,rep,name=archetypes,proto3" json:"archetypes,omitempty"` + AuthProviders []*Site_AuthProviders `protobuf:"bytes,23,rep,name=auth_providers,json=authProviders,proto3" json:"auth_providers,omitempty"` +} + +func (x *Site) Reset() { + *x = Site{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site) ProtoMessage() {} + +func (x *Site) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site.ProtoReflect.Descriptor instead. +func (*Site) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0} +} + +func (x *Site) GetDefaultArchetype() string { + if x != nil { + return x.DefaultArchetype + } + return "" +} + +func (x *Site) GetNotificationTypes() *Site_NotificationTypes { + if x != nil { + return x.NotificationTypes + } + return nil +} + +func (x *Site) GetPostTypes() *Site_PostTypes { + if x != nil { + return x.PostTypes + } + return nil +} + +func (x *Site) GetGroups() []*Site_Groups { + if x != nil { + return x.Groups + } + return nil +} + +func (x *Site) GetFilter() []string { + if x != nil { + return x.Filter + } + return nil +} + +func (x *Site) GetPeriods() []string { + if x != nil { + return x.Periods + } + return nil +} + +func (x *Site) GetTopMenuItems() []string { + if x != nil { + return x.TopMenuItems + } + return nil +} + +func (x *Site) GetAnonymousTopMenuItems() []string { + if x != nil { + return x.AnonymousTopMenuItems + } + return nil +} + +func (x *Site) GetUncategorizedCategoryId() int32 { + if x != nil { + return x.UncategorizedCategoryId + } + return 0 +} + +func (x *Site) GetUserFieldMaxLength() int32 { + if x != nil { + return x.UserFieldMaxLength + } + return 0 +} + +func (x *Site) GetPostActionTypes() []*Site_PostActionTypes { + if x != nil { + return x.PostActionTypes + } + return nil +} + +func (x *Site) GetTopicFlagTypes() []*Site_TopicFlagTypes { + if x != nil { + return x.TopicFlagTypes + } + return nil +} + +func (x *Site) GetCanCreateTag() bool { + if x != nil { + return x.CanCreateTag + } + return false +} + +func (x *Site) GetCanTagTopics() bool { + if x != nil { + return x.CanTagTopics + } + return false +} + +func (x *Site) GetCanTagPms() bool { + if x != nil { + return x.CanTagPms + } + return false +} + +func (x *Site) GetTagsFilterRegexp() string { + if x != nil { + return x.TagsFilterRegexp + } + return "" +} + +func (x *Site) GetTopTags() []string { + if x != nil { + return x.TopTags + } + return nil +} + +func (x *Site) GetTopicFeaturedLinkAllowedCategoryIds() []int32 { + if x != nil { + return x.TopicFeaturedLinkAllowedCategoryIds + } + return nil +} + +func (x *Site) GetUserThemes() []*Site_UserThemes { + if x != nil { + return x.UserThemes + } + return nil +} + +func (x *Site) GetCategories() []*Site_Categories { + if x != nil { + return x.Categories + } + return nil +} + +func (x *Site) GetTrustLevels() []*Site_TrustLevels { + if x != nil { + return x.TrustLevels + } + return nil +} + +func (x *Site) GetArchetypes() []*Site_Archetypes { + if x != nil { + return x.Archetypes + } + return nil +} + +func (x *Site) GetAuthProviders() []*Site_AuthProviders { + if x != nil { + return x.AuthProviders + } + return nil +} + +type Site_NotificationTypes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Mentioned int32 `protobuf:"varint,1,opt,name=mentioned,proto3" json:"mentioned,omitempty"` + Replied int32 `protobuf:"varint,2,opt,name=replied,proto3" json:"replied,omitempty"` + Qouted int32 `protobuf:"varint,3,opt,name=qouted,proto3" json:"qouted,omitempty"` + Edited int32 `protobuf:"varint,4,opt,name=edited,proto3" json:"edited,omitempty"` + Liked int32 `protobuf:"varint,5,opt,name=liked,proto3" json:"liked,omitempty"` + PrivateMessage int32 `protobuf:"varint,6,opt,name=private_message,json=privateMessage,proto3" json:"private_message,omitempty"` + InvitedToPrivateMessage int32 `protobuf:"varint,7,opt,name=invited_to_private_message,json=invitedToPrivateMessage,proto3" json:"invited_to_private_message,omitempty"` + InviteeAccepted int32 `protobuf:"varint,8,opt,name=invitee_accepted,json=inviteeAccepted,proto3" json:"invitee_accepted,omitempty"` + Posted int32 `protobuf:"varint,9,opt,name=posted,proto3" json:"posted,omitempty"` + MovedPost int32 `protobuf:"varint,10,opt,name=moved_post,json=movedPost,proto3" json:"moved_post,omitempty"` + Linked int32 `protobuf:"varint,11,opt,name=linked,proto3" json:"linked,omitempty"` + GrantedBadge int32 `protobuf:"varint,12,opt,name=granted_badge,json=grantedBadge,proto3" json:"granted_badge,omitempty"` + InvitedToTopic int32 `protobuf:"varint,13,opt,name=invited_to_topic,json=invitedToTopic,proto3" json:"invited_to_topic,omitempty"` + Custom int32 `protobuf:"varint,14,opt,name=custom,proto3" json:"custom,omitempty"` + GroupMentioned int32 `protobuf:"varint,15,opt,name=group_mentioned,json=groupMentioned,proto3" json:"group_mentioned,omitempty"` + GroupMessageSummary int32 `protobuf:"varint,16,opt,name=group_message_summary,json=groupMessageSummary,proto3" json:"group_message_summary,omitempty"` + WatchingFirstPost int32 `protobuf:"varint,17,opt,name=watching_first_post,json=watchingFirstPost,proto3" json:"watching_first_post,omitempty"` + TopicReminder int32 `protobuf:"varint,18,opt,name=topic_reminder,json=topicReminder,proto3" json:"topic_reminder,omitempty"` + LikedConsolidated int32 `protobuf:"varint,19,opt,name=liked_consolidated,json=likedConsolidated,proto3" json:"liked_consolidated,omitempty"` + PostApproved int32 `protobuf:"varint,20,opt,name=post_approved,json=postApproved,proto3" json:"post_approved,omitempty"` + CodeReviewCommitApproved int32 `protobuf:"varint,21,opt,name=code_review_commit_approved,json=codeReviewCommitApproved,proto3" json:"code_review_commit_approved,omitempty"` + MembershipRequestAccepted int32 `protobuf:"varint,22,opt,name=membership_request_accepted,json=membershipRequestAccepted,proto3" json:"membership_request_accepted,omitempty"` + MembershipRequestConsolidated int32 `protobuf:"varint,23,opt,name=membership_request_consolidated,json=membershipRequestConsolidated,proto3" json:"membership_request_consolidated,omitempty"` + BookmarkReminder int32 `protobuf:"varint,24,opt,name=bookmark_reminder,json=bookmarkReminder,proto3" json:"bookmark_reminder,omitempty"` + Reaction int32 `protobuf:"varint,25,opt,name=reaction,proto3" json:"reaction,omitempty"` + VotesReleased int32 `protobuf:"varint,26,opt,name=votes_released,json=votesReleased,proto3" json:"votes_released,omitempty"` + EventReminder int32 `protobuf:"varint,27,opt,name=event_reminder,json=eventReminder,proto3" json:"event_reminder,omitempty"` + EventInvitation int32 `protobuf:"varint,28,opt,name=event_invitation,json=eventInvitation,proto3" json:"event_invitation,omitempty"` +} + +func (x *Site_NotificationTypes) Reset() { + *x = Site_NotificationTypes{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_NotificationTypes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_NotificationTypes) ProtoMessage() {} + +func (x *Site_NotificationTypes) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_NotificationTypes.ProtoReflect.Descriptor instead. +func (*Site_NotificationTypes) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Site_NotificationTypes) GetMentioned() int32 { + if x != nil { + return x.Mentioned + } + return 0 +} + +func (x *Site_NotificationTypes) GetReplied() int32 { + if x != nil { + return x.Replied + } + return 0 +} + +func (x *Site_NotificationTypes) GetQouted() int32 { + if x != nil { + return x.Qouted + } + return 0 +} + +func (x *Site_NotificationTypes) GetEdited() int32 { + if x != nil { + return x.Edited + } + return 0 +} + +func (x *Site_NotificationTypes) GetLiked() int32 { + if x != nil { + return x.Liked + } + return 0 +} + +func (x *Site_NotificationTypes) GetPrivateMessage() int32 { + if x != nil { + return x.PrivateMessage + } + return 0 +} + +func (x *Site_NotificationTypes) GetInvitedToPrivateMessage() int32 { + if x != nil { + return x.InvitedToPrivateMessage + } + return 0 +} + +func (x *Site_NotificationTypes) GetInviteeAccepted() int32 { + if x != nil { + return x.InviteeAccepted + } + return 0 +} + +func (x *Site_NotificationTypes) GetPosted() int32 { + if x != nil { + return x.Posted + } + return 0 +} + +func (x *Site_NotificationTypes) GetMovedPost() int32 { + if x != nil { + return x.MovedPost + } + return 0 +} + +func (x *Site_NotificationTypes) GetLinked() int32 { + if x != nil { + return x.Linked + } + return 0 +} + +func (x *Site_NotificationTypes) GetGrantedBadge() int32 { + if x != nil { + return x.GrantedBadge + } + return 0 +} + +func (x *Site_NotificationTypes) GetInvitedToTopic() int32 { + if x != nil { + return x.InvitedToTopic + } + return 0 +} + +func (x *Site_NotificationTypes) GetCustom() int32 { + if x != nil { + return x.Custom + } + return 0 +} + +func (x *Site_NotificationTypes) GetGroupMentioned() int32 { + if x != nil { + return x.GroupMentioned + } + return 0 +} + +func (x *Site_NotificationTypes) GetGroupMessageSummary() int32 { + if x != nil { + return x.GroupMessageSummary + } + return 0 +} + +func (x *Site_NotificationTypes) GetWatchingFirstPost() int32 { + if x != nil { + return x.WatchingFirstPost + } + return 0 +} + +func (x *Site_NotificationTypes) GetTopicReminder() int32 { + if x != nil { + return x.TopicReminder + } + return 0 +} + +func (x *Site_NotificationTypes) GetLikedConsolidated() int32 { + if x != nil { + return x.LikedConsolidated + } + return 0 +} + +func (x *Site_NotificationTypes) GetPostApproved() int32 { + if x != nil { + return x.PostApproved + } + return 0 +} + +func (x *Site_NotificationTypes) GetCodeReviewCommitApproved() int32 { + if x != nil { + return x.CodeReviewCommitApproved + } + return 0 +} + +func (x *Site_NotificationTypes) GetMembershipRequestAccepted() int32 { + if x != nil { + return x.MembershipRequestAccepted + } + return 0 +} + +func (x *Site_NotificationTypes) GetMembershipRequestConsolidated() int32 { + if x != nil { + return x.MembershipRequestConsolidated + } + return 0 +} + +func (x *Site_NotificationTypes) GetBookmarkReminder() int32 { + if x != nil { + return x.BookmarkReminder + } + return 0 +} + +func (x *Site_NotificationTypes) GetReaction() int32 { + if x != nil { + return x.Reaction + } + return 0 +} + +func (x *Site_NotificationTypes) GetVotesReleased() int32 { + if x != nil { + return x.VotesReleased + } + return 0 +} + +func (x *Site_NotificationTypes) GetEventReminder() int32 { + if x != nil { + return x.EventReminder + } + return 0 +} + +func (x *Site_NotificationTypes) GetEventInvitation() int32 { + if x != nil { + return x.EventInvitation + } + return 0 +} + +type Site_PostTypes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Regular int32 `protobuf:"varint,1,opt,name=regular,proto3" json:"regular,omitempty"` + ModeratorAction int32 `protobuf:"varint,2,opt,name=moderator_action,json=moderatorAction,proto3" json:"moderator_action,omitempty"` + SmallAction int32 `protobuf:"varint,3,opt,name=small_action,json=smallAction,proto3" json:"small_action,omitempty"` + Whisper int32 `protobuf:"varint,4,opt,name=whisper,proto3" json:"whisper,omitempty"` +} + +func (x *Site_PostTypes) Reset() { + *x = Site_PostTypes{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_PostTypes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_PostTypes) ProtoMessage() {} + +func (x *Site_PostTypes) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_PostTypes.ProtoReflect.Descriptor instead. +func (*Site_PostTypes) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Site_PostTypes) GetRegular() int32 { + if x != nil { + return x.Regular + } + return 0 +} + +func (x *Site_PostTypes) GetModeratorAction() int32 { + if x != nil { + return x.ModeratorAction + } + return 0 +} + +func (x *Site_PostTypes) GetSmallAction() int32 { + if x != nil { + return x.SmallAction + } + return 0 +} + +func (x *Site_PostTypes) GetWhisper() int32 { + if x != nil { + return x.Whisper + } + return 0 +} + +type Site_Groups struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *Site_Groups) Reset() { + *x = Site_Groups{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_Groups) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_Groups) ProtoMessage() {} + +func (x *Site_Groups) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_Groups.ProtoReflect.Descriptor instead. +func (*Site_Groups) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *Site_Groups) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Site_Groups) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type Site_PostActionTypes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + NameKey string `protobuf:"bytes,2,opt,name=name_key,json=nameKey,proto3" json:"name_key,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + ShortDescription string `protobuf:"bytes,5,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` + LongForm string `protobuf:"bytes,6,opt,name=long_form,json=longForm,proto3" json:"long_form,omitempty"` + IsFlag bool `protobuf:"varint,7,opt,name=is_flag,json=isFlag,proto3" json:"is_flag,omitempty"` + IsCustomFlag bool `protobuf:"varint,8,opt,name=is_custom_flag,json=isCustomFlag,proto3" json:"is_custom_flag,omitempty"` +} + +func (x *Site_PostActionTypes) Reset() { + *x = Site_PostActionTypes{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_PostActionTypes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_PostActionTypes) ProtoMessage() {} + +func (x *Site_PostActionTypes) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_PostActionTypes.ProtoReflect.Descriptor instead. +func (*Site_PostActionTypes) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 3} +} + +func (x *Site_PostActionTypes) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Site_PostActionTypes) GetNameKey() string { + if x != nil { + return x.NameKey + } + return "" +} + +func (x *Site_PostActionTypes) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Site_PostActionTypes) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Site_PostActionTypes) GetShortDescription() string { + if x != nil { + return x.ShortDescription + } + return "" +} + +func (x *Site_PostActionTypes) GetLongForm() string { + if x != nil { + return x.LongForm + } + return "" +} + +func (x *Site_PostActionTypes) GetIsFlag() bool { + if x != nil { + return x.IsFlag + } + return false +} + +func (x *Site_PostActionTypes) GetIsCustomFlag() bool { + if x != nil { + return x.IsCustomFlag + } + return false +} + +type Site_TopicFlagTypes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + NameKey string `protobuf:"bytes,2,opt,name=name_key,json=nameKey,proto3" json:"name_key,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + ShortDescription string `protobuf:"bytes,5,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"` + LongForm string `protobuf:"bytes,6,opt,name=long_form,json=longForm,proto3" json:"long_form,omitempty"` + IsFlag bool `protobuf:"varint,7,opt,name=is_flag,json=isFlag,proto3" json:"is_flag,omitempty"` + IsCustomFlag bool `protobuf:"varint,8,opt,name=is_custom_flag,json=isCustomFlag,proto3" json:"is_custom_flag,omitempty"` +} + +func (x *Site_TopicFlagTypes) Reset() { + *x = Site_TopicFlagTypes{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_TopicFlagTypes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_TopicFlagTypes) ProtoMessage() {} + +func (x *Site_TopicFlagTypes) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_TopicFlagTypes.ProtoReflect.Descriptor instead. +func (*Site_TopicFlagTypes) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 4} +} + +func (x *Site_TopicFlagTypes) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Site_TopicFlagTypes) GetNameKey() string { + if x != nil { + return x.NameKey + } + return "" +} + +func (x *Site_TopicFlagTypes) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Site_TopicFlagTypes) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Site_TopicFlagTypes) GetShortDescription() string { + if x != nil { + return x.ShortDescription + } + return "" +} + +func (x *Site_TopicFlagTypes) GetLongForm() string { + if x != nil { + return x.LongForm + } + return "" +} + +func (x *Site_TopicFlagTypes) GetIsFlag() bool { + if x != nil { + return x.IsFlag + } + return false +} + +func (x *Site_TopicFlagTypes) GetIsCustomFlag() bool { + if x != nil { + return x.IsCustomFlag + } + return false +} + +type Site_UserThemes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ThemeId int32 `protobuf:"varint,1,opt,name=theme_id,json=themeId,proto3" json:"theme_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Default bool `protobuf:"varint,3,opt,name=default,proto3" json:"default,omitempty"` +} + +func (x *Site_UserThemes) Reset() { + *x = Site_UserThemes{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_UserThemes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_UserThemes) ProtoMessage() {} + +func (x *Site_UserThemes) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_UserThemes.ProtoReflect.Descriptor instead. +func (*Site_UserThemes) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 5} +} + +func (x *Site_UserThemes) GetThemeId() int32 { + if x != nil { + return x.ThemeId + } + return 0 +} + +func (x *Site_UserThemes) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Site_UserThemes) GetDefault() bool { + if x != nil { + return x.Default + } + return false +} + +type Site_Categories struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Color string `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` + TextColor string `protobuf:"bytes,4,opt,name=text_color,json=textColor,proto3" json:"text_color,omitempty"` + Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` + TopicCount int32 `protobuf:"varint,6,opt,name=topic_count,json=topicCount,proto3" json:"topic_count,omitempty"` + PostCount int32 `protobuf:"varint,7,opt,name=post_count,json=postCount,proto3" json:"post_count,omitempty"` + Position int32 `protobuf:"varint,8,opt,name=position,proto3" json:"position,omitempty"` + Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` + DescriptionText string `protobuf:"bytes,10,opt,name=description_text,json=descriptionText,proto3" json:"description_text,omitempty"` + DescriptionExcerpt string `protobuf:"bytes,11,opt,name=description_excerpt,json=descriptionExcerpt,proto3" json:"description_excerpt,omitempty"` + TopicUrl string `protobuf:"bytes,12,opt,name=topic_url,json=topicUrl,proto3" json:"topic_url,omitempty"` + ReadRestricted bool `protobuf:"varint,13,opt,name=read_restricted,json=readRestricted,proto3" json:"read_restricted,omitempty"` + Permission int32 `protobuf:"varint,14,opt,name=permission,proto3" json:"permission,omitempty"` + NotificationLevel int32 `protobuf:"varint,15,opt,name=notification_level,json=notificationLevel,proto3" json:"notification_level,omitempty"` + CanEdit bool `protobuf:"varint,16,opt,name=can_edit,json=canEdit,proto3" json:"can_edit,omitempty"` + TopicTemplate string `protobuf:"bytes,17,opt,name=topic_template,json=topicTemplate,proto3" json:"topic_template,omitempty"` + HasChildren bool `protobuf:"varint,18,opt,name=has_children,json=hasChildren,proto3" json:"has_children,omitempty"` + SortOrder string `protobuf:"bytes,19,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` + ShowSubcategoryList bool `protobuf:"varint,20,opt,name=show_subcategory_list,json=showSubcategoryList,proto3" json:"show_subcategory_list,omitempty"` + NumFeaturedTopics int32 `protobuf:"varint,21,opt,name=num_featured_topics,json=numFeaturedTopics,proto3" json:"num_featured_topics,omitempty"` + DefaultView string `protobuf:"bytes,22,opt,name=default_view,json=defaultView,proto3" json:"default_view,omitempty"` + SubcategoryListStyle string `protobuf:"bytes,23,opt,name=subcategory_list_style,json=subcategoryListStyle,proto3" json:"subcategory_list_style,omitempty"` + DefaultTopPeriod string `protobuf:"bytes,24,opt,name=default_top_period,json=defaultTopPeriod,proto3" json:"default_top_period,omitempty"` + DefaultListFilter string `protobuf:"bytes,25,opt,name=default_list_filter,json=defaultListFilter,proto3" json:"default_list_filter,omitempty"` + MinimumRequiredTags int32 `protobuf:"varint,26,opt,name=minimum_required_tags,json=minimumRequiredTags,proto3" json:"minimum_required_tags,omitempty"` + NavigateToFirstPostAfterRead bool `protobuf:"varint,27,opt,name=navigate_to_first_post_after_read,json=navigateToFirstPostAfterRead,proto3" json:"navigate_to_first_post_after_read,omitempty"` + AllowedGlobalTags bool `protobuf:"varint,28,opt,name=allowed_global_tags,json=allowedGlobalTags,proto3" json:"allowed_global_tags,omitempty"` + MinTagsFromRequiredGroup int32 `protobuf:"varint,29,opt,name=min_tags_from_required_group,json=minTagsFromRequiredGroup,proto3" json:"min_tags_from_required_group,omitempty"` + ParentCategoryId int32 `protobuf:"varint,30,opt,name=parent_category_id,json=parentCategoryId,proto3" json:"parent_category_id,omitempty"` +} + +func (x *Site_Categories) Reset() { + *x = Site_Categories{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_Categories) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_Categories) ProtoMessage() {} + +func (x *Site_Categories) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_Categories.ProtoReflect.Descriptor instead. +func (*Site_Categories) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 6} +} + +func (x *Site_Categories) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Site_Categories) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Site_Categories) GetColor() string { + if x != nil { + return x.Color + } + return "" +} + +func (x *Site_Categories) GetTextColor() string { + if x != nil { + return x.TextColor + } + return "" +} + +func (x *Site_Categories) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Site_Categories) GetTopicCount() int32 { + if x != nil { + return x.TopicCount + } + return 0 +} + +func (x *Site_Categories) GetPostCount() int32 { + if x != nil { + return x.PostCount + } + return 0 +} + +func (x *Site_Categories) GetPosition() int32 { + if x != nil { + return x.Position + } + return 0 +} + +func (x *Site_Categories) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Site_Categories) GetDescriptionText() string { + if x != nil { + return x.DescriptionText + } + return "" +} + +func (x *Site_Categories) GetDescriptionExcerpt() string { + if x != nil { + return x.DescriptionExcerpt + } + return "" +} + +func (x *Site_Categories) GetTopicUrl() string { + if x != nil { + return x.TopicUrl + } + return "" +} + +func (x *Site_Categories) GetReadRestricted() bool { + if x != nil { + return x.ReadRestricted + } + return false +} + +func (x *Site_Categories) GetPermission() int32 { + if x != nil { + return x.Permission + } + return 0 +} + +func (x *Site_Categories) GetNotificationLevel() int32 { + if x != nil { + return x.NotificationLevel + } + return 0 +} + +func (x *Site_Categories) GetCanEdit() bool { + if x != nil { + return x.CanEdit + } + return false +} + +func (x *Site_Categories) GetTopicTemplate() string { + if x != nil { + return x.TopicTemplate + } + return "" +} + +func (x *Site_Categories) GetHasChildren() bool { + if x != nil { + return x.HasChildren + } + return false +} + +func (x *Site_Categories) GetSortOrder() string { + if x != nil { + return x.SortOrder + } + return "" +} + +func (x *Site_Categories) GetShowSubcategoryList() bool { + if x != nil { + return x.ShowSubcategoryList + } + return false +} + +func (x *Site_Categories) GetNumFeaturedTopics() int32 { + if x != nil { + return x.NumFeaturedTopics + } + return 0 +} + +func (x *Site_Categories) GetDefaultView() string { + if x != nil { + return x.DefaultView + } + return "" +} + +func (x *Site_Categories) GetSubcategoryListStyle() string { + if x != nil { + return x.SubcategoryListStyle + } + return "" +} + +func (x *Site_Categories) GetDefaultTopPeriod() string { + if x != nil { + return x.DefaultTopPeriod + } + return "" +} + +func (x *Site_Categories) GetDefaultListFilter() string { + if x != nil { + return x.DefaultListFilter + } + return "" +} + +func (x *Site_Categories) GetMinimumRequiredTags() int32 { + if x != nil { + return x.MinimumRequiredTags + } + return 0 +} + +func (x *Site_Categories) GetNavigateToFirstPostAfterRead() bool { + if x != nil { + return x.NavigateToFirstPostAfterRead + } + return false +} + +func (x *Site_Categories) GetAllowedGlobalTags() bool { + if x != nil { + return x.AllowedGlobalTags + } + return false +} + +func (x *Site_Categories) GetMinTagsFromRequiredGroup() int32 { + if x != nil { + return x.MinTagsFromRequiredGroup + } + return 0 +} + +func (x *Site_Categories) GetParentCategoryId() int32 { + if x != nil { + return x.ParentCategoryId + } + return 0 +} + +type Site_TrustLevels struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *Site_TrustLevels) Reset() { + *x = Site_TrustLevels{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_TrustLevels) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_TrustLevels) ProtoMessage() {} + +func (x *Site_TrustLevels) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_TrustLevels.ProtoReflect.Descriptor instead. +func (*Site_TrustLevels) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 7} +} + +func (x *Site_TrustLevels) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Site_TrustLevels) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type Site_Archetypes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *Site_Archetypes) Reset() { + *x = Site_Archetypes{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_Archetypes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_Archetypes) ProtoMessage() {} + +func (x *Site_Archetypes) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_Archetypes.ProtoReflect.Descriptor instead. +func (*Site_Archetypes) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 8} +} + +func (x *Site_Archetypes) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Site_Archetypes) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type Site_AuthProviders struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + FrameWidth int32 `protobuf:"varint,2,opt,name=frame_width,json=frameWidth,proto3" json:"frame_width,omitempty"` + FrameHeight int32 `protobuf:"varint,3,opt,name=frame_height,json=frameHeight,proto3" json:"frame_height,omitempty"` + CanConnect bool `protobuf:"varint,4,opt,name=can_connect,json=canConnect,proto3" json:"can_connect,omitempty"` + CanRevoke bool `protobuf:"varint,5,opt,name=can_revoke,json=canRevoke,proto3" json:"can_revoke,omitempty"` + Icon string `protobuf:"bytes,6,opt,name=icon,proto3" json:"icon,omitempty"` +} + +func (x *Site_AuthProviders) Reset() { + *x = Site_AuthProviders{} + if protoimpl.UnsafeEnabled { + mi := &file_site_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Site_AuthProviders) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Site_AuthProviders) ProtoMessage() {} + +func (x *Site_AuthProviders) ProtoReflect() protoreflect.Message { + mi := &file_site_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Site_AuthProviders.ProtoReflect.Descriptor instead. +func (*Site_AuthProviders) Descriptor() ([]byte, []int) { + return file_site_proto_rawDescGZIP(), []int{0, 9} +} + +func (x *Site_AuthProviders) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Site_AuthProviders) GetFrameWidth() int32 { + if x != nil { + return x.FrameWidth + } + return 0 +} + +func (x *Site_AuthProviders) GetFrameHeight() int32 { + if x != nil { + return x.FrameHeight + } + return 0 +} + +func (x *Site_AuthProviders) GetCanConnect() bool { + if x != nil { + return x.CanConnect + } + return false +} + +func (x *Site_AuthProviders) GetCanRevoke() bool { + if x != nil { + return x.CanRevoke + } + return false +} + +func (x *Site_AuthProviders) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +var File_site_proto protoreflect.FileDescriptor + +var file_site_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x73, 0x69, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x22, 0xeb, 0x24, 0x0a, 0x04, 0x53, 0x69, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x63, + 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x11, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x74, 0x65, 0x2e, + 0x50, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x74, 0x65, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, + 0x24, 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x6f, 0x70, 0x4d, 0x65, 0x6e, 0x75, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, + 0x75, 0x73, 0x5f, 0x74, 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, + 0x75, 0x73, 0x54, 0x6f, 0x70, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x3a, + 0x0a, 0x19, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x17, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x15, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x54, 0x0a, + 0x11, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, + 0x74, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x66, 0x6c, 0x61, + 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x69, 0x74, 0x65, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x46, 0x6c, 0x61, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0e, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x46, 0x6c, 0x61, + 0x67, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x63, 0x61, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x24, 0x0a, 0x0e, + 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x54, 0x6f, 0x70, 0x69, + 0x63, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x70, 0x6d, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x50, + 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x74, 0x61, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, + 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x11, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x28, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x69, + 0x6e, 0x6b, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x23, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, + 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, + 0x64, 0x73, 0x12, 0x44, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x65, 0x6d, 0x65, + 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x74, + 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x52, 0x0a, 0x75, 0x73, + 0x65, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x69, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x47, 0x0a, + 0x0c, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x15, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x74, 0x65, 0x2e, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x69, 0x74, 0x65, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x52, + 0x0a, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x0e, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x17, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x69, 0x74, 0x65, 0x2e, 0x41, 0x75, + 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0d, 0x61, 0x75, 0x74, + 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x1a, 0xe9, 0x08, 0x0a, 0x11, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x71, 0x6f, 0x75, 0x74, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x71, 0x6f, 0x75, 0x74, 0x65, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x64, 0x12, 0x27, + 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x69, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x69, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x5f, + 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, + 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x64, 0x67, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x42, 0x61, + 0x64, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x74, + 0x6f, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x12, 0x32, + 0x0a, 0x15, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x11, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, + 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x6d, 0x69, + 0x6e, 0x64, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x6c, 0x69, 0x6b, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6c, 0x69, 0x6b, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x73, + 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x74, + 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x3d, 0x0a, + 0x1b, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x18, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x1b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x19, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x1f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, + 0x5f, 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x10, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, + 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, + 0x0e, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x18, + 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, + 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x8d, 0x01, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x12, 0x29, + 0x0a, 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6d, 0x61, + 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x77, 0x68, 0x69, 0x73, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, + 0x68, 0x69, 0x73, 0x70, 0x65, 0x72, 0x1a, 0x2c, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0xfb, 0x01, 0x0a, 0x0f, 0x50, 0x6f, 0x73, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x61, 0x6d, 0x65, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x61, 0x6d, 0x65, + 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, + 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x46, + 0x6f, 0x72, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x24, 0x0a, 0x0e, + 0x69, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x6c, + 0x61, 0x67, 0x1a, 0xfa, 0x01, 0x0a, 0x0e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x46, 0x6c, 0x61, 0x67, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x61, 0x6d, 0x65, 0x4b, 0x65, 0x79, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x6d, + 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x69, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x6c, 0x61, 0x67, 0x1a, + 0x55, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x0a, + 0x08, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0xa2, 0x09, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, + 0x1d, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, + 0x75, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x72, + 0x70, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0e, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x72, 0x65, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x43, 0x68, + 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x75, + 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x75, 0x62, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x75, 0x6d, + 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x69, 0x65, 0x77, 0x12, 0x34, 0x0a, 0x16, + 0x73, 0x75, 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x75, + 0x62, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x79, + 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x6f, + 0x70, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, 0x70, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x54, 0x61, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x21, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x1c, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x46, 0x69, 0x72, 0x73, 0x74, + 0x50, 0x6f, 0x73, 0x74, 0x41, 0x66, 0x74, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x12, 0x2e, 0x0a, + 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x3e, 0x0a, + 0x1c, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x1d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x69, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x46, 0x72, 0x6f, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2c, 0x0a, + 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x1a, 0x31, 0x0a, 0x0b, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x30, + 0x0a, 0x0a, 0x41, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x1a, 0xbb, 0x01, 0x0a, 0x0d, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, + 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x63, 0x61, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, + 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x42, 0x34, + 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, + 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_site_proto_rawDescOnce sync.Once + file_site_proto_rawDescData = file_site_proto_rawDesc +) + +func file_site_proto_rawDescGZIP() []byte { + file_site_proto_rawDescOnce.Do(func() { + file_site_proto_rawDescData = protoimpl.X.CompressGZIP(file_site_proto_rawDescData) + }) + return file_site_proto_rawDescData +} + +var file_site_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_site_proto_goTypes = []interface{}{ + (*Site)(nil), // 0: discourse.protobuf.Site + (*Site_NotificationTypes)(nil), // 1: discourse.protobuf.Site.NotificationTypes + (*Site_PostTypes)(nil), // 2: discourse.protobuf.Site.PostTypes + (*Site_Groups)(nil), // 3: discourse.protobuf.Site.Groups + (*Site_PostActionTypes)(nil), // 4: discourse.protobuf.Site.PostActionTypes + (*Site_TopicFlagTypes)(nil), // 5: discourse.protobuf.Site.TopicFlagTypes + (*Site_UserThemes)(nil), // 6: discourse.protobuf.Site.UserThemes + (*Site_Categories)(nil), // 7: discourse.protobuf.Site.Categories + (*Site_TrustLevels)(nil), // 8: discourse.protobuf.Site.TrustLevels + (*Site_Archetypes)(nil), // 9: discourse.protobuf.Site.Archetypes + (*Site_AuthProviders)(nil), // 10: discourse.protobuf.Site.AuthProviders +} +var file_site_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.Site.notification_types:type_name -> discourse.protobuf.Site.NotificationTypes + 2, // 1: discourse.protobuf.Site.post_types:type_name -> discourse.protobuf.Site.PostTypes + 3, // 2: discourse.protobuf.Site.groups:type_name -> discourse.protobuf.Site.Groups + 4, // 3: discourse.protobuf.Site.post_action_types:type_name -> discourse.protobuf.Site.PostActionTypes + 5, // 4: discourse.protobuf.Site.topic_flag_types:type_name -> discourse.protobuf.Site.TopicFlagTypes + 6, // 5: discourse.protobuf.Site.user_themes:type_name -> discourse.protobuf.Site.UserThemes + 7, // 6: discourse.protobuf.Site.categories:type_name -> discourse.protobuf.Site.Categories + 8, // 7: discourse.protobuf.Site.trust_levels:type_name -> discourse.protobuf.Site.TrustLevels + 9, // 8: discourse.protobuf.Site.archetypes:type_name -> discourse.protobuf.Site.Archetypes + 10, // 9: discourse.protobuf.Site.auth_providers:type_name -> discourse.protobuf.Site.AuthProviders + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_site_proto_init() } +func file_site_proto_init() { + if File_site_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_site_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_NotificationTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_PostTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_Groups); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_PostActionTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_TopicFlagTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_UserThemes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_Categories); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_TrustLevels); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_Archetypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_site_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Site_AuthProviders); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_site_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_site_proto_goTypes, + DependencyIndexes: file_site_proto_depIdxs, + MessageInfos: file_site_proto_msgTypes, + }.Build() + File_site_proto = out.File + file_site_proto_rawDesc = nil + file_site_proto_goTypes = nil + file_site_proto_depIdxs = nil +} diff --git a/discoursepb/tag.pb.go b/discoursepb/tag.pb.go new file mode 100644 index 0000000..ecdb61f --- /dev/null +++ b/discoursepb/tag.pb.go @@ -0,0 +1,945 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: tag.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Tag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Users []*Tag_Users `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` + TopicList *Tag_TopicList `protobuf:"bytes,2,opt,name=topic_list,json=topicList,proto3" json:"topic_list,omitempty"` +} + +func (x *Tag) Reset() { + *x = Tag{} + if protoimpl.UnsafeEnabled { + mi := &file_tag_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tag) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tag) ProtoMessage() {} + +func (x *Tag) ProtoReflect() protoreflect.Message { + mi := &file_tag_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tag.ProtoReflect.Descriptor instead. +func (*Tag) Descriptor() ([]byte, []int) { + return file_tag_proto_rawDescGZIP(), []int{0} +} + +func (x *Tag) GetUsers() []*Tag_Users { + if x != nil { + return x.Users + } + return nil +} + +func (x *Tag) GetTopicList() *Tag_TopicList { + if x != nil { + return x.TopicList + } + return nil +} + +type Tag_Users struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,3,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` +} + +func (x *Tag_Users) Reset() { + *x = Tag_Users{} + if protoimpl.UnsafeEnabled { + mi := &file_tag_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tag_Users) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tag_Users) ProtoMessage() {} + +func (x *Tag_Users) ProtoReflect() protoreflect.Message { + mi := &file_tag_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tag_Users.ProtoReflect.Descriptor instead. +func (*Tag_Users) Descriptor() ([]byte, []int) { + return file_tag_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Tag_Users) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Tag_Users) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Tag_Users) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +type Tag_TopicList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CanCreateTopic bool `protobuf:"varint,1,opt,name=can_create_topic,json=canCreateTopic,proto3" json:"can_create_topic,omitempty"` + DraftKey string `protobuf:"bytes,2,opt,name=draft_key,json=draftKey,proto3" json:"draft_key,omitempty"` + DraftSequance int32 `protobuf:"varint,3,opt,name=draft_sequance,json=draftSequance,proto3" json:"draft_sequance,omitempty"` + PerPage int32 `protobuf:"varint,4,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"` + TopTags []string `protobuf:"bytes,5,rep,name=top_tags,json=topTags,proto3" json:"top_tags,omitempty"` + Tags []*Tag_TopicList_Tags `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` + Topics []*Tag_TopicList_Topics `protobuf:"bytes,7,rep,name=topics,proto3" json:"topics,omitempty"` +} + +func (x *Tag_TopicList) Reset() { + *x = Tag_TopicList{} + if protoimpl.UnsafeEnabled { + mi := &file_tag_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tag_TopicList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tag_TopicList) ProtoMessage() {} + +func (x *Tag_TopicList) ProtoReflect() protoreflect.Message { + mi := &file_tag_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tag_TopicList.ProtoReflect.Descriptor instead. +func (*Tag_TopicList) Descriptor() ([]byte, []int) { + return file_tag_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Tag_TopicList) GetCanCreateTopic() bool { + if x != nil { + return x.CanCreateTopic + } + return false +} + +func (x *Tag_TopicList) GetDraftKey() string { + if x != nil { + return x.DraftKey + } + return "" +} + +func (x *Tag_TopicList) GetDraftSequance() int32 { + if x != nil { + return x.DraftSequance + } + return 0 +} + +func (x *Tag_TopicList) GetPerPage() int32 { + if x != nil { + return x.PerPage + } + return 0 +} + +func (x *Tag_TopicList) GetTopTags() []string { + if x != nil { + return x.TopTags + } + return nil +} + +func (x *Tag_TopicList) GetTags() []*Tag_TopicList_Tags { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Tag_TopicList) GetTopics() []*Tag_TopicList_Topics { + if x != nil { + return x.Topics + } + return nil +} + +type Tag_TopicList_Tags struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + TopicCount int32 `protobuf:"varint,3,opt,name=topic_count,json=topicCount,proto3" json:"topic_count,omitempty"` + Staff bool `protobuf:"varint,4,opt,name=staff,proto3" json:"staff,omitempty"` +} + +func (x *Tag_TopicList_Tags) Reset() { + *x = Tag_TopicList_Tags{} + if protoimpl.UnsafeEnabled { + mi := &file_tag_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tag_TopicList_Tags) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tag_TopicList_Tags) ProtoMessage() {} + +func (x *Tag_TopicList_Tags) ProtoReflect() protoreflect.Message { + mi := &file_tag_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tag_TopicList_Tags.ProtoReflect.Descriptor instead. +func (*Tag_TopicList_Tags) Descriptor() ([]byte, []int) { + return file_tag_proto_rawDescGZIP(), []int{0, 1, 0} +} + +func (x *Tag_TopicList_Tags) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Tag_TopicList_Tags) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Tag_TopicList_Tags) GetTopicCount() int32 { + if x != nil { + return x.TopicCount + } + return 0 +} + +func (x *Tag_TopicList_Tags) GetStaff() bool { + if x != nil { + return x.Staff + } + return false +} + +type Tag_TopicList_Topics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + FancyTitle string `protobuf:"bytes,3,opt,name=fancy_title,json=fancyTitle,proto3" json:"fancy_title,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + PostsCount int32 `protobuf:"varint,5,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` + ReplyCount int32 `protobuf:"varint,6,opt,name=reply_count,json=replyCount,proto3" json:"reply_count,omitempty"` + HighestPostNumber int32 `protobuf:"varint,7,opt,name=highest_post_number,json=highestPostNumber,proto3" json:"highest_post_number,omitempty"` + ImageUrl string `protobuf:"bytes,8,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + LastPostedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_posted_at,json=lastPostedAt,proto3" json:"last_posted_at,omitempty"` + Bumped bool `protobuf:"varint,11,opt,name=bumped,proto3" json:"bumped,omitempty"` + BumpedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=bumped_at,json=bumpedAt,proto3" json:"bumped_at,omitempty"` + Archetype string `protobuf:"bytes,13,opt,name=archetype,proto3" json:"archetype,omitempty"` + Unseen bool `protobuf:"varint,14,opt,name=unseen,proto3" json:"unseen,omitempty"` + LastReadPostNumber int32 `protobuf:"varint,15,opt,name=last_read_post_number,json=lastReadPostNumber,proto3" json:"last_read_post_number,omitempty"` + Unread int32 `protobuf:"varint,16,opt,name=unread,proto3" json:"unread,omitempty"` + NewPosts int32 `protobuf:"varint,17,opt,name=new_posts,json=newPosts,proto3" json:"new_posts,omitempty"` + Pinned bool `protobuf:"varint,18,opt,name=pinned,proto3" json:"pinned,omitempty"` + Visible bool `protobuf:"varint,19,opt,name=visible,proto3" json:"visible,omitempty"` + Closed bool `protobuf:"varint,20,opt,name=closed,proto3" json:"closed,omitempty"` + Archived bool `protobuf:"varint,21,opt,name=archived,proto3" json:"archived,omitempty"` + NotificationLevel int32 `protobuf:"varint,22,opt,name=notification_level,json=notificationLevel,proto3" json:"notification_level,omitempty"` + Bookmarked bool `protobuf:"varint,23,opt,name=bookmarked,proto3" json:"bookmarked,omitempty"` + Liked bool `protobuf:"varint,24,opt,name=liked,proto3" json:"liked,omitempty"` + Tags []string `protobuf:"bytes,25,rep,name=tags,proto3" json:"tags,omitempty"` + Views int32 `protobuf:"varint,26,opt,name=views,proto3" json:"views,omitempty"` + LikeCount int32 `protobuf:"varint,27,opt,name=like_count,json=likeCount,proto3" json:"like_count,omitempty"` + HasSummary bool `protobuf:"varint,28,opt,name=has_summary,json=hasSummary,proto3" json:"has_summary,omitempty"` + LastPosterUsername string `protobuf:"bytes,29,opt,name=last_poster_username,json=lastPosterUsername,proto3" json:"last_poster_username,omitempty"` + CategoryId int32 `protobuf:"varint,30,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + PinnedGlobally bool `protobuf:"varint,31,opt,name=pinned_globally,json=pinnedGlobally,proto3" json:"pinned_globally,omitempty"` + HasAcceptedAnswer bool `protobuf:"varint,32,opt,name=has_accepted_answer,json=hasAcceptedAnswer,proto3" json:"has_accepted_answer,omitempty"` + Posters []*Tag_TopicList_Topics_Posters `protobuf:"bytes,33,rep,name=posters,proto3" json:"posters,omitempty"` +} + +func (x *Tag_TopicList_Topics) Reset() { + *x = Tag_TopicList_Topics{} + if protoimpl.UnsafeEnabled { + mi := &file_tag_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tag_TopicList_Topics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tag_TopicList_Topics) ProtoMessage() {} + +func (x *Tag_TopicList_Topics) ProtoReflect() protoreflect.Message { + mi := &file_tag_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tag_TopicList_Topics.ProtoReflect.Descriptor instead. +func (*Tag_TopicList_Topics) Descriptor() ([]byte, []int) { + return file_tag_proto_rawDescGZIP(), []int{0, 1, 1} +} + +func (x *Tag_TopicList_Topics) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Tag_TopicList_Topics) GetFancyTitle() string { + if x != nil { + return x.FancyTitle + } + return "" +} + +func (x *Tag_TopicList_Topics) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Tag_TopicList_Topics) GetPostsCount() int32 { + if x != nil { + return x.PostsCount + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetHighestPostNumber() int32 { + if x != nil { + return x.HighestPostNumber + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *Tag_TopicList_Topics) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Tag_TopicList_Topics) GetLastPostedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastPostedAt + } + return nil +} + +func (x *Tag_TopicList_Topics) GetBumped() bool { + if x != nil { + return x.Bumped + } + return false +} + +func (x *Tag_TopicList_Topics) GetBumpedAt() *timestamppb.Timestamp { + if x != nil { + return x.BumpedAt + } + return nil +} + +func (x *Tag_TopicList_Topics) GetArchetype() string { + if x != nil { + return x.Archetype + } + return "" +} + +func (x *Tag_TopicList_Topics) GetUnseen() bool { + if x != nil { + return x.Unseen + } + return false +} + +func (x *Tag_TopicList_Topics) GetLastReadPostNumber() int32 { + if x != nil { + return x.LastReadPostNumber + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetUnread() int32 { + if x != nil { + return x.Unread + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetNewPosts() int32 { + if x != nil { + return x.NewPosts + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetPinned() bool { + if x != nil { + return x.Pinned + } + return false +} + +func (x *Tag_TopicList_Topics) GetVisible() bool { + if x != nil { + return x.Visible + } + return false +} + +func (x *Tag_TopicList_Topics) GetClosed() bool { + if x != nil { + return x.Closed + } + return false +} + +func (x *Tag_TopicList_Topics) GetArchived() bool { + if x != nil { + return x.Archived + } + return false +} + +func (x *Tag_TopicList_Topics) GetNotificationLevel() int32 { + if x != nil { + return x.NotificationLevel + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetBookmarked() bool { + if x != nil { + return x.Bookmarked + } + return false +} + +func (x *Tag_TopicList_Topics) GetLiked() bool { + if x != nil { + return x.Liked + } + return false +} + +func (x *Tag_TopicList_Topics) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Tag_TopicList_Topics) GetViews() int32 { + if x != nil { + return x.Views + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetHasSummary() bool { + if x != nil { + return x.HasSummary + } + return false +} + +func (x *Tag_TopicList_Topics) GetLastPosterUsername() string { + if x != nil { + return x.LastPosterUsername + } + return "" +} + +func (x *Tag_TopicList_Topics) GetCategoryId() int32 { + if x != nil { + return x.CategoryId + } + return 0 +} + +func (x *Tag_TopicList_Topics) GetPinnedGlobally() bool { + if x != nil { + return x.PinnedGlobally + } + return false +} + +func (x *Tag_TopicList_Topics) GetHasAcceptedAnswer() bool { + if x != nil { + return x.HasAcceptedAnswer + } + return false +} + +func (x *Tag_TopicList_Topics) GetPosters() []*Tag_TopicList_Topics_Posters { + if x != nil { + return x.Posters + } + return nil +} + +type Tag_TopicList_Topics_Posters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Extras string `protobuf:"bytes,1,opt,name=extras,proto3" json:"extras,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + UserId int32 `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` +} + +func (x *Tag_TopicList_Topics_Posters) Reset() { + *x = Tag_TopicList_Topics_Posters{} + if protoimpl.UnsafeEnabled { + mi := &file_tag_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tag_TopicList_Topics_Posters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tag_TopicList_Topics_Posters) ProtoMessage() {} + +func (x *Tag_TopicList_Topics_Posters) ProtoReflect() protoreflect.Message { + mi := &file_tag_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tag_TopicList_Topics_Posters.ProtoReflect.Descriptor instead. +func (*Tag_TopicList_Topics_Posters) Descriptor() ([]byte, []int) { + return file_tag_proto_rawDescGZIP(), []int{0, 1, 1, 0} +} + +func (x *Tag_TopicList_Topics_Posters) GetExtras() string { + if x != nil { + return x.Extras + } + return "" +} + +func (x *Tag_TopicList_Topics_Posters) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Tag_TopicList_Topics_Posters) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +var File_tag_proto protoreflect.FileDescriptor + +var file_tag_proto_rawDesc = []byte{ + 0x0a, 0x09, 0x74, 0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xd1, 0x0e, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x33, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x61, 0x67, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, + 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x61, 0x67, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x1a, + 0x54, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0xfc, 0x0c, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, + 0x61, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x1b, 0x0a, + 0x09, 0x64, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x64, 0x72, 0x61, 0x66, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x72, + 0x61, 0x66, 0x74, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x64, 0x72, 0x61, 0x66, 0x74, 0x53, 0x65, 0x71, 0x75, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x74, 0x6f, 0x70, 0x54, 0x61, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x61, 0x67, 0x2e, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x52, 0x04, 0x74, + 0x61, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x61, 0x67, 0x2e, 0x54, 0x6f, 0x70, + 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x52, 0x06, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x73, 0x1a, 0x61, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x73, 0x74, 0x61, 0x66, 0x66, 0x1a, 0xe9, 0x09, 0x0a, 0x06, 0x54, 0x6f, 0x70, + 0x69, 0x63, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6e, + 0x63, 0x79, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x66, 0x61, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, + 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x1f, + 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x68, + 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, + 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, + 0x6d, 0x70, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x75, 0x6d, 0x70, + 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x08, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, + 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x73, + 0x65, 0x65, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x6e, 0x73, 0x65, 0x65, + 0x6e, 0x12, 0x31, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, + 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x6e, 0x65, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, + 0x6e, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, + 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, + 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x6b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6b, 0x65, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, + 0x69, 0x6b, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, + 0x73, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x1c, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x30, + 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, + 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, + 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x69, 0x6e, 0x6e, + 0x65, 0x64, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, + 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, + 0x72, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x68, 0x61, 0x73, 0x41, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x07, 0x70, 0x6f, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x61, 0x67, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x54, + 0x6f, 0x70, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, 0x70, + 0x6f, 0x73, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x5c, 0x0a, 0x07, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, 0x64, 0x2e, + 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_tag_proto_rawDescOnce sync.Once + file_tag_proto_rawDescData = file_tag_proto_rawDesc +) + +func file_tag_proto_rawDescGZIP() []byte { + file_tag_proto_rawDescOnce.Do(func() { + file_tag_proto_rawDescData = protoimpl.X.CompressGZIP(file_tag_proto_rawDescData) + }) + return file_tag_proto_rawDescData +} + +var file_tag_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_tag_proto_goTypes = []interface{}{ + (*Tag)(nil), // 0: discourse.protobuf.Tag + (*Tag_Users)(nil), // 1: discourse.protobuf.Tag.Users + (*Tag_TopicList)(nil), // 2: discourse.protobuf.Tag.TopicList + (*Tag_TopicList_Tags)(nil), // 3: discourse.protobuf.Tag.TopicList.Tags + (*Tag_TopicList_Topics)(nil), // 4: discourse.protobuf.Tag.TopicList.Topics + (*Tag_TopicList_Topics_Posters)(nil), // 5: discourse.protobuf.Tag.TopicList.Topics.Posters + (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp +} +var file_tag_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.Tag.users:type_name -> discourse.protobuf.Tag.Users + 2, // 1: discourse.protobuf.Tag.topic_list:type_name -> discourse.protobuf.Tag.TopicList + 3, // 2: discourse.protobuf.Tag.TopicList.tags:type_name -> discourse.protobuf.Tag.TopicList.Tags + 4, // 3: discourse.protobuf.Tag.TopicList.topics:type_name -> discourse.protobuf.Tag.TopicList.Topics + 6, // 4: discourse.protobuf.Tag.TopicList.Topics.created_at:type_name -> google.protobuf.Timestamp + 6, // 5: discourse.protobuf.Tag.TopicList.Topics.last_posted_at:type_name -> google.protobuf.Timestamp + 6, // 6: discourse.protobuf.Tag.TopicList.Topics.bumped_at:type_name -> google.protobuf.Timestamp + 5, // 7: discourse.protobuf.Tag.TopicList.Topics.posters:type_name -> discourse.protobuf.Tag.TopicList.Topics.Posters + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_tag_proto_init() } +func file_tag_proto_init() { + if File_tag_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_tag_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tag_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag_Users); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tag_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag_TopicList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tag_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag_TopicList_Tags); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tag_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag_TopicList_Topics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tag_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tag_TopicList_Topics_Posters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_tag_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_tag_proto_goTypes, + DependencyIndexes: file_tag_proto_depIdxs, + MessageInfos: file_tag_proto_msgTypes, + }.Build() + File_tag_proto = out.File + file_tag_proto_rawDesc = nil + file_tag_proto_goTypes = nil + file_tag_proto_depIdxs = nil +} diff --git a/discoursepb/tags.pb.go b/discoursepb/tags.pb.go new file mode 100644 index 0000000..cecf77d --- /dev/null +++ b/discoursepb/tags.pb.go @@ -0,0 +1,242 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: tags.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Tags struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tags []*Tags_Tags `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` +} + +func (x *Tags) Reset() { + *x = Tags{} + if protoimpl.UnsafeEnabled { + mi := &file_tags_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tags) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tags) ProtoMessage() {} + +func (x *Tags) ProtoReflect() protoreflect.Message { + mi := &file_tags_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tags.ProtoReflect.Descriptor instead. +func (*Tags) Descriptor() ([]byte, []int) { + return file_tags_proto_rawDescGZIP(), []int{0} +} + +func (x *Tags) GetTags() []*Tags_Tags { + if x != nil { + return x.Tags + } + return nil +} + +type Tags_Tags struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + PmCount int32 `protobuf:"varint,4,opt,name=pm_count,json=pmCount,proto3" json:"pm_count,omitempty"` +} + +func (x *Tags_Tags) Reset() { + *x = Tags_Tags{} + if protoimpl.UnsafeEnabled { + mi := &file_tags_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tags_Tags) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tags_Tags) ProtoMessage() {} + +func (x *Tags_Tags) ProtoReflect() protoreflect.Message { + mi := &file_tags_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tags_Tags.ProtoReflect.Descriptor instead. +func (*Tags_Tags) Descriptor() ([]byte, []int) { + return file_tags_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Tags_Tags) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Tags_Tags) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *Tags_Tags) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *Tags_Tags) GetPmCount() int32 { + if x != nil { + return x.PmCount + } + return 0 +} + +var File_tags_proto protoreflect.FileDescriptor + +var file_tags_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x74, 0x61, 0x67, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x22, 0x96, 0x01, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x61, 0x67, + 0x73, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x5b, 0x0a, 0x04, + 0x54, 0x61, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x70, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x70, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, + 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, + 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_tags_proto_rawDescOnce sync.Once + file_tags_proto_rawDescData = file_tags_proto_rawDesc +) + +func file_tags_proto_rawDescGZIP() []byte { + file_tags_proto_rawDescOnce.Do(func() { + file_tags_proto_rawDescData = protoimpl.X.CompressGZIP(file_tags_proto_rawDescData) + }) + return file_tags_proto_rawDescData +} + +var file_tags_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_tags_proto_goTypes = []interface{}{ + (*Tags)(nil), // 0: discourse.protobuf.Tags + (*Tags_Tags)(nil), // 1: discourse.protobuf.Tags.Tags +} +var file_tags_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.Tags.tags:type_name -> discourse.protobuf.Tags.Tags + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_tags_proto_init() } +func file_tags_proto_init() { + if File_tags_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_tags_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tags); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tags_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tags_Tags); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_tags_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_tags_proto_goTypes, + DependencyIndexes: file_tags_proto_depIdxs, + MessageInfos: file_tags_proto_msgTypes, + }.Build() + File_tags_proto = out.File + file_tags_proto_rawDesc = nil + file_tags_proto_goTypes = nil + file_tags_proto_depIdxs = nil +} diff --git a/discoursepb/tagtopics.pb.go b/discoursepb/tagtopics.pb.go new file mode 100644 index 0000000..0cc8122 --- /dev/null +++ b/discoursepb/tagtopics.pb.go @@ -0,0 +1,155 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: tagtopics.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type TopicList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Topic []*Topic `protobuf:"bytes,1,rep,name=topic,proto3" json:"topic,omitempty"` +} + +func (x *TopicList) Reset() { + *x = TopicList{} + if protoimpl.UnsafeEnabled { + mi := &file_tagtopics_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TopicList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TopicList) ProtoMessage() {} + +func (x *TopicList) ProtoReflect() protoreflect.Message { + mi := &file_tagtopics_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TopicList.ProtoReflect.Descriptor instead. +func (*TopicList) Descriptor() ([]byte, []int) { + return file_tagtopics_proto_rawDescGZIP(), []int{0} +} + +func (x *TopicList) GetTopic() []*Topic { + if x != nil { + return x.Topic + } + return nil +} + +var File_tagtopics_proto protoreflect.FileDescriptor + +var file_tagtopics_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x74, 0x61, 0x67, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x12, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x3c, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x2f, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, + 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_tagtopics_proto_rawDescOnce sync.Once + file_tagtopics_proto_rawDescData = file_tagtopics_proto_rawDesc +) + +func file_tagtopics_proto_rawDescGZIP() []byte { + file_tagtopics_proto_rawDescOnce.Do(func() { + file_tagtopics_proto_rawDescData = protoimpl.X.CompressGZIP(file_tagtopics_proto_rawDescData) + }) + return file_tagtopics_proto_rawDescData +} + +var file_tagtopics_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_tagtopics_proto_goTypes = []interface{}{ + (*TopicList)(nil), // 0: discourse.protobuf.TopicList + (*Topic)(nil), // 1: discourse.protobuf.Topic +} +var file_tagtopics_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.TopicList.topic:type_name -> discourse.protobuf.Topic + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_tagtopics_proto_init() } +func file_tagtopics_proto_init() { + if File_tagtopics_proto != nil { + return + } + file_topic_proto_init() + if !protoimpl.UnsafeEnabled { + file_tagtopics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TopicList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_tagtopics_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_tagtopics_proto_goTypes, + DependencyIndexes: file_tagtopics_proto_depIdxs, + MessageInfos: file_tagtopics_proto_msgTypes, + }.Build() + File_tagtopics_proto = out.File + file_tagtopics_proto_rawDesc = nil + file_tagtopics_proto_goTypes = nil + file_tagtopics_proto_depIdxs = nil +} diff --git a/discoursepb/topic.pb.go b/discoursepb/topic.pb.go new file mode 100644 index 0000000..5502cfc --- /dev/null +++ b/discoursepb/topic.pb.go @@ -0,0 +1,555 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: topic.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Topic struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PostStream *Topic_PostStream `protobuf:"bytes,1,opt,name=post_stream,json=postStream,proto3" json:"post_stream,omitempty"` + Id int32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` + Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` + Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"` + PostsCount int32 `protobuf:"varint,5,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Slug string `protobuf:"bytes,7,opt,name=slug,proto3" json:"slug,omitempty"` + LikeCount int32 `protobuf:"varint,8,opt,name=like_count,json=likeCount,proto3" json:"like_count,omitempty"` + Views int32 `protobuf:"varint,9,opt,name=views,proto3" json:"views,omitempty"` + Details *Topic_Details `protobuf:"bytes,10,opt,name=details,proto3" json:"details,omitempty"` +} + +func (x *Topic) Reset() { + *x = Topic{} + if protoimpl.UnsafeEnabled { + mi := &file_topic_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Topic) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topic) ProtoMessage() {} + +func (x *Topic) ProtoReflect() protoreflect.Message { + mi := &file_topic_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topic.ProtoReflect.Descriptor instead. +func (*Topic) Descriptor() ([]byte, []int) { + return file_topic_proto_rawDescGZIP(), []int{0} +} + +func (x *Topic) GetPostStream() *Topic_PostStream { + if x != nil { + return x.PostStream + } + return nil +} + +func (x *Topic) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Topic) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Topic) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Topic) GetPostsCount() int32 { + if x != nil { + return x.PostsCount + } + return 0 +} + +func (x *Topic) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Topic) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Topic) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *Topic) GetViews() int32 { + if x != nil { + return x.Views + } + return 0 +} + +func (x *Topic) GetDetails() *Topic_Details { + if x != nil { + return x.Details + } + return nil +} + +type Topic_PostStream struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Posts []*Topic_PostStream_Posts `protobuf:"bytes,1,rep,name=posts,proto3" json:"posts,omitempty"` +} + +func (x *Topic_PostStream) Reset() { + *x = Topic_PostStream{} + if protoimpl.UnsafeEnabled { + mi := &file_topic_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Topic_PostStream) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topic_PostStream) ProtoMessage() {} + +func (x *Topic_PostStream) ProtoReflect() protoreflect.Message { + mi := &file_topic_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topic_PostStream.ProtoReflect.Descriptor instead. +func (*Topic_PostStream) Descriptor() ([]byte, []int) { + return file_topic_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Topic_PostStream) GetPosts() []*Topic_PostStream_Posts { + if x != nil { + return x.Posts + } + return nil +} + +type Topic_Details struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreatedBy *Topic_Details_CreatedBy `protobuf:"bytes,1,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"` +} + +func (x *Topic_Details) Reset() { + *x = Topic_Details{} + if protoimpl.UnsafeEnabled { + mi := &file_topic_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Topic_Details) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topic_Details) ProtoMessage() {} + +func (x *Topic_Details) ProtoReflect() protoreflect.Message { + mi := &file_topic_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topic_Details.ProtoReflect.Descriptor instead. +func (*Topic_Details) Descriptor() ([]byte, []int) { + return file_topic_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Topic_Details) GetCreatedBy() *Topic_Details_CreatedBy { + if x != nil { + return x.CreatedBy + } + return nil +} + +type Topic_PostStream_Posts struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cooked string `protobuf:"bytes,1,opt,name=cooked,proto3" json:"cooked,omitempty"` + PostNumber int32 `protobuf:"varint,2,opt,name=post_number,json=postNumber,proto3" json:"post_number,omitempty"` + Admin bool `protobuf:"varint,3,opt,name=admin,proto3" json:"admin,omitempty"` + Staff bool `protobuf:"varint,4,opt,name=staff,proto3" json:"staff,omitempty"` +} + +func (x *Topic_PostStream_Posts) Reset() { + *x = Topic_PostStream_Posts{} + if protoimpl.UnsafeEnabled { + mi := &file_topic_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Topic_PostStream_Posts) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topic_PostStream_Posts) ProtoMessage() {} + +func (x *Topic_PostStream_Posts) ProtoReflect() protoreflect.Message { + mi := &file_topic_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topic_PostStream_Posts.ProtoReflect.Descriptor instead. +func (*Topic_PostStream_Posts) Descriptor() ([]byte, []int) { + return file_topic_proto_rawDescGZIP(), []int{0, 0, 0} +} + +func (x *Topic_PostStream_Posts) GetCooked() string { + if x != nil { + return x.Cooked + } + return "" +} + +func (x *Topic_PostStream_Posts) GetPostNumber() int32 { + if x != nil { + return x.PostNumber + } + return 0 +} + +func (x *Topic_PostStream_Posts) GetAdmin() bool { + if x != nil { + return x.Admin + } + return false +} + +func (x *Topic_PostStream_Posts) GetStaff() bool { + if x != nil { + return x.Staff + } + return false +} + +type Topic_Details_CreatedBy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,3,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` +} + +func (x *Topic_Details_CreatedBy) Reset() { + *x = Topic_Details_CreatedBy{} + if protoimpl.UnsafeEnabled { + mi := &file_topic_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Topic_Details_CreatedBy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topic_Details_CreatedBy) ProtoMessage() {} + +func (x *Topic_Details_CreatedBy) ProtoReflect() protoreflect.Message { + mi := &file_topic_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Topic_Details_CreatedBy.ProtoReflect.Descriptor instead. +func (*Topic_Details_CreatedBy) Descriptor() ([]byte, []int) { + return file_topic_proto_rawDescGZIP(), []int{0, 1, 0} +} + +func (x *Topic_Details_CreatedBy) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *Topic_Details_CreatedBy) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Topic_Details_CreatedBy) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +var File_topic_proto protoreflect.FileDescriptor + +var file_topic_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xe7, 0x05, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x45, 0x0a, 0x0b, + 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x2e, 0x50, 0x6f, 0x73, + 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x1d, 0x0a, + 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, + 0x77, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x2e, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, + 0xbc, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x40, + 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x05, 0x70, 0x6f, 0x73, 0x74, 0x73, + 0x1a, 0x6c, 0x0a, 0x05, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6f, + 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x65, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x74, 0x61, 0x66, 0x66, 0x1a, 0xbb, + 0x01, 0x0a, 0x07, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x1a, 0x64, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x42, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x34, 0x5a, 0x32, + 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, + 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_topic_proto_rawDescOnce sync.Once + file_topic_proto_rawDescData = file_topic_proto_rawDesc +) + +func file_topic_proto_rawDescGZIP() []byte { + file_topic_proto_rawDescOnce.Do(func() { + file_topic_proto_rawDescData = protoimpl.X.CompressGZIP(file_topic_proto_rawDescData) + }) + return file_topic_proto_rawDescData +} + +var file_topic_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_topic_proto_goTypes = []interface{}{ + (*Topic)(nil), // 0: discourse.protobuf.Topic + (*Topic_PostStream)(nil), // 1: discourse.protobuf.Topic.PostStream + (*Topic_Details)(nil), // 2: discourse.protobuf.Topic.Details + (*Topic_PostStream_Posts)(nil), // 3: discourse.protobuf.Topic.PostStream.Posts + (*Topic_Details_CreatedBy)(nil), // 4: discourse.protobuf.Topic.Details.CreatedBy + (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp +} +var file_topic_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.Topic.post_stream:type_name -> discourse.protobuf.Topic.PostStream + 5, // 1: discourse.protobuf.Topic.created_at:type_name -> google.protobuf.Timestamp + 2, // 2: discourse.protobuf.Topic.details:type_name -> discourse.protobuf.Topic.Details + 3, // 3: discourse.protobuf.Topic.PostStream.posts:type_name -> discourse.protobuf.Topic.PostStream.Posts + 4, // 4: discourse.protobuf.Topic.Details.created_by:type_name -> discourse.protobuf.Topic.Details.CreatedBy + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_topic_proto_init() } +func file_topic_proto_init() { + if File_topic_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_topic_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Topic); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_topic_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Topic_PostStream); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_topic_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Topic_Details); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_topic_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Topic_PostStream_Posts); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_topic_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Topic_Details_CreatedBy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_topic_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_topic_proto_goTypes, + DependencyIndexes: file_topic_proto_depIdxs, + MessageInfos: file_topic_proto_msgTypes, + }.Build() + File_topic_proto = out.File + file_topic_proto_rawDesc = nil + file_topic_proto_goTypes = nil + file_topic_proto_depIdxs = nil +} diff --git a/discoursepb/users.pb.go b/discoursepb/users.pb.go new file mode 100644 index 0000000..ab5ffc4 --- /dev/null +++ b/discoursepb/users.pb.go @@ -0,0 +1,3164 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.14.0 +// source: users.proto + +package discoursepb + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type Users struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserBadges []*Users_UserBadges `protobuf:"bytes,1,rep,name=user_badges,json=userBadges,proto3" json:"user_badges,omitempty"` + Badges []*Users_Badges `protobuf:"bytes,2,rep,name=badges,proto3" json:"badges,omitempty"` + BadgeTypes []*Users_BadgeTypes `protobuf:"bytes,3,rep,name=badge_types,json=badgeTypes,proto3" json:"badge_types,omitempty"` + Users []*Users_Users `protobuf:"bytes,4,rep,name=users,proto3" json:"users,omitempty"` + Topics []*Users_Topics `protobuf:"bytes,5,rep,name=topics,proto3" json:"topics,omitempty"` + User *Users_User `protobuf:"bytes,6,opt,name=user,proto3" json:"user,omitempty"` +} + +func (x *Users) Reset() { + *x = Users{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users) ProtoMessage() {} + +func (x *Users) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users.ProtoReflect.Descriptor instead. +func (*Users) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0} +} + +func (x *Users) GetUserBadges() []*Users_UserBadges { + if x != nil { + return x.UserBadges + } + return nil +} + +func (x *Users) GetBadges() []*Users_Badges { + if x != nil { + return x.Badges + } + return nil +} + +func (x *Users) GetBadgeTypes() []*Users_BadgeTypes { + if x != nil { + return x.BadgeTypes + } + return nil +} + +func (x *Users) GetUsers() []*Users_Users { + if x != nil { + return x.Users + } + return nil +} + +func (x *Users) GetTopics() []*Users_Topics { + if x != nil { + return x.Topics + } + return nil +} + +func (x *Users) GetUser() *Users_User { + if x != nil { + return x.User + } + return nil +} + +type Users_UserBadges struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GrantedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=granted_at,json=grantedAt,proto3" json:"granted_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` + BadgeId int32 `protobuf:"varint,5,opt,name=badge_id,json=badgeId,proto3" json:"badge_id,omitempty"` + UserId int32 `protobuf:"varint,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + GratedById int32 `protobuf:"varint,7,opt,name=grated_by_id,json=gratedById,proto3" json:"grated_by_id,omitempty"` + PostId int32 `protobuf:"varint,8,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"` + PostNumber int32 `protobuf:"varint,9,opt,name=post_number,json=postNumber,proto3" json:"post_number,omitempty"` + TopicId int32 `protobuf:"varint,10,opt,name=topic_id,json=topicId,proto3" json:"topic_id,omitempty"` +} + +func (x *Users_UserBadges) Reset() { + *x = Users_UserBadges{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_UserBadges) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_UserBadges) ProtoMessage() {} + +func (x *Users_UserBadges) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_UserBadges.ProtoReflect.Descriptor instead. +func (*Users_UserBadges) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *Users_UserBadges) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_UserBadges) GetGrantedAt() *timestamppb.Timestamp { + if x != nil { + return x.GrantedAt + } + return nil +} + +func (x *Users_UserBadges) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Users_UserBadges) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *Users_UserBadges) GetBadgeId() int32 { + if x != nil { + return x.BadgeId + } + return 0 +} + +func (x *Users_UserBadges) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *Users_UserBadges) GetGratedById() int32 { + if x != nil { + return x.GratedById + } + return 0 +} + +func (x *Users_UserBadges) GetPostId() int32 { + if x != nil { + return x.PostId + } + return 0 +} + +func (x *Users_UserBadges) GetPostNumber() int32 { + if x != nil { + return x.PostNumber + } + return 0 +} + +func (x *Users_UserBadges) GetTopicId() int32 { + if x != nil { + return x.TopicId + } + return 0 +} + +type Users_Badges struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + GrantCount int32 `protobuf:"varint,4,opt,name=grant_count,json=grantCount,proto3" json:"grant_count,omitempty"` + AllowTitle bool `protobuf:"varint,5,opt,name=allow_title,json=allowTitle,proto3" json:"allow_title,omitempty"` + MultipleGrant bool `protobuf:"varint,6,opt,name=multiple_grant,json=multipleGrant,proto3" json:"multiple_grant,omitempty"` + Icon string `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` + Image string `protobuf:"bytes,8,opt,name=image,proto3" json:"image,omitempty"` + Listable bool `protobuf:"varint,9,opt,name=listable,proto3" json:"listable,omitempty"` + Enabled bool `protobuf:"varint,10,opt,name=enabled,proto3" json:"enabled,omitempty"` + BadgeGroupingId int32 `protobuf:"varint,11,opt,name=badge_grouping_id,json=badgeGroupingId,proto3" json:"badge_grouping_id,omitempty"` + System bool `protobuf:"varint,12,opt,name=system,proto3" json:"system,omitempty"` + Slug string `protobuf:"bytes,13,opt,name=slug,proto3" json:"slug,omitempty"` + ManuallyGrantable bool `protobuf:"varint,14,opt,name=manually_grantable,json=manuallyGrantable,proto3" json:"manually_grantable,omitempty"` + BadgeTypeId int32 `protobuf:"varint,15,opt,name=badge_type_id,json=badgeTypeId,proto3" json:"badge_type_id,omitempty"` +} + +func (x *Users_Badges) Reset() { + *x = Users_Badges{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_Badges) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_Badges) ProtoMessage() {} + +func (x *Users_Badges) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_Badges.ProtoReflect.Descriptor instead. +func (*Users_Badges) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *Users_Badges) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_Badges) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Users_Badges) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Users_Badges) GetGrantCount() int32 { + if x != nil { + return x.GrantCount + } + return 0 +} + +func (x *Users_Badges) GetAllowTitle() bool { + if x != nil { + return x.AllowTitle + } + return false +} + +func (x *Users_Badges) GetMultipleGrant() bool { + if x != nil { + return x.MultipleGrant + } + return false +} + +func (x *Users_Badges) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +func (x *Users_Badges) GetImage() string { + if x != nil { + return x.Image + } + return "" +} + +func (x *Users_Badges) GetListable() bool { + if x != nil { + return x.Listable + } + return false +} + +func (x *Users_Badges) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *Users_Badges) GetBadgeGroupingId() int32 { + if x != nil { + return x.BadgeGroupingId + } + return 0 +} + +func (x *Users_Badges) GetSystem() bool { + if x != nil { + return x.System + } + return false +} + +func (x *Users_Badges) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Users_Badges) GetManuallyGrantable() bool { + if x != nil { + return x.ManuallyGrantable + } + return false +} + +func (x *Users_Badges) GetBadgeTypeId() int32 { + if x != nil { + return x.BadgeTypeId + } + return 0 +} + +type Users_BadgeTypes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + SortOrder int32 `protobuf:"varint,3,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` +} + +func (x *Users_BadgeTypes) Reset() { + *x = Users_BadgeTypes{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_BadgeTypes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_BadgeTypes) ProtoMessage() {} + +func (x *Users_BadgeTypes) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_BadgeTypes.ProtoReflect.Descriptor instead. +func (*Users_BadgeTypes) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *Users_BadgeTypes) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_BadgeTypes) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Users_BadgeTypes) GetSortOrder() int32 { + if x != nil { + return x.SortOrder + } + return 0 +} + +type Users_Users struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,4,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` + Moderator bool `protobuf:"varint,5,opt,name=moderator,proto3" json:"moderator,omitempty"` + Admin bool `protobuf:"varint,6,opt,name=admin,proto3" json:"admin,omitempty"` +} + +func (x *Users_Users) Reset() { + *x = Users_Users{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_Users) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_Users) ProtoMessage() {} + +func (x *Users_Users) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_Users.ProtoReflect.Descriptor instead. +func (*Users_Users) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 3} +} + +func (x *Users_Users) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_Users) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *Users_Users) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Users_Users) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +func (x *Users_Users) GetModerator() bool { + if x != nil { + return x.Moderator + } + return false +} + +func (x *Users_Users) GetAdmin() bool { + if x != nil { + return x.Admin + } + return false +} + +type Users_Topics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + FancyTitle string `protobuf:"bytes,3,opt,name=fancy_title,json=fancyTitle,proto3" json:"fancy_title,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` + PostsCount int32 `protobuf:"varint,6,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` +} + +func (x *Users_Topics) Reset() { + *x = Users_Topics{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_Topics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_Topics) ProtoMessage() {} + +func (x *Users_Topics) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_Topics.ProtoReflect.Descriptor instead. +func (*Users_Topics) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 4} +} + +func (x *Users_Topics) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_Topics) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Users_Topics) GetFancyTitle() string { + if x != nil { + return x.FancyTitle + } + return "" +} + +func (x *Users_Topics) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Users_Topics) GetPostsCount() int32 { + if x != nil { + return x.PostsCount + } + return 0 +} + +type Users_User struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + AvatarTemplate string `protobuf:"bytes,4,opt,name=avatar_template,json=avatarTemplate,proto3" json:"avatar_template,omitempty"` + Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` + LastPostedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_posted_at,json=lastPostedAt,proto3" json:"last_posted_at,omitempty"` + LastSeenAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + Ignored bool `protobuf:"varint,10,opt,name=ignored,proto3" json:"ignored,omitempty"` + Muted bool `protobuf:"varint,11,opt,name=muted,proto3" json:"muted,omitempty"` + CanIgnoreUser bool `protobuf:"varint,12,opt,name=can_ignore_user,json=canIgnoreUser,proto3" json:"can_ignore_user,omitempty"` + CanMuteUser bool `protobuf:"varint,13,opt,name=can_mute_user,json=canMuteUser,proto3" json:"can_mute_user,omitempty"` + CanSendPrivateMessages bool `protobuf:"varint,14,opt,name=can_send_private_messages,json=canSendPrivateMessages,proto3" json:"can_send_private_messages,omitempty"` + CanSendPrivateMessagesToUser bool `protobuf:"varint,15,opt,name=can_send_private_messages_to_user,json=canSendPrivateMessagesToUser,proto3" json:"can_send_private_messages_to_user,omitempty"` + TrustLevel int32 `protobuf:"varint,16,opt,name=trust_level,json=trustLevel,proto3" json:"trust_level,omitempty"` + Moderator bool `protobuf:"varint,17,opt,name=moderator,proto3" json:"moderator,omitempty"` + Admin bool `protobuf:"varint,18,opt,name=admin,proto3" json:"admin,omitempty"` + Title string `protobuf:"bytes,19,opt,name=title,proto3" json:"title,omitempty"` + BadgeCount int32 `protobuf:"varint,20,opt,name=badge_count,json=badgeCount,proto3" json:"badge_count,omitempty"` + TimeRead int32 `protobuf:"varint,21,opt,name=time_read,json=timeRead,proto3" json:"time_read,omitempty"` + RecentTimeRead int32 `protobuf:"varint,22,opt,name=recent_time_read,json=recentTimeRead,proto3" json:"recent_time_read,omitempty"` + FeaturedTopic *Users_User_FeaturedTopic `protobuf:"bytes,23,opt,name=featured_topic,json=featuredTopic,proto3" json:"featured_topic,omitempty"` + Website string `protobuf:"bytes,24,opt,name=website,proto3" json:"website,omitempty"` + WebsiteName string `protobuf:"bytes,25,opt,name=website_name,json=websiteName,proto3" json:"website_name,omitempty"` + Staged bool `protobuf:"varint,26,opt,name=staged,proto3" json:"staged,omitempty"` + CanEdit bool `protobuf:"varint,27,opt,name=can_edit,json=canEdit,proto3" json:"can_edit,omitempty"` + CanEditUsername bool `protobuf:"varint,28,opt,name=can_edit_username,json=canEditUsername,proto3" json:"can_edit_username,omitempty"` + CanEditEmail bool `protobuf:"varint,29,opt,name=can_edit_email,json=canEditEmail,proto3" json:"can_edit_email,omitempty"` + CanEditName bool `protobuf:"varint,30,opt,name=can_edit_name,json=canEditName,proto3" json:"can_edit_name,omitempty"` + UploadedAvatarId int32 `protobuf:"varint,31,opt,name=uploaded_avatar_id,json=uploadedAvatarId,proto3" json:"uploaded_avatar_id,omitempty"` + HasTitleBadges bool `protobuf:"varint,32,opt,name=has_title_badges,json=hasTitleBadges,proto3" json:"has_title_badges,omitempty"` + PendingCount int32 `protobuf:"varint,33,opt,name=pending_count,json=pendingCount,proto3" json:"pending_count,omitempty"` + ProfileViewCount int32 `protobuf:"varint,34,opt,name=profile_view_count,json=profileViewCount,proto3" json:"profile_view_count,omitempty"` + SecondaryFactorEnabled bool `protobuf:"varint,35,opt,name=secondary_factor_enabled,json=secondaryFactorEnabled,proto3" json:"secondary_factor_enabled,omitempty"` + SecondaryFactorBackupEnabled bool `protobuf:"varint,36,opt,name=secondary_factor_backup_enabled,json=secondaryFactorBackupEnabled,proto3" json:"secondary_factor_backup_enabled,omitempty"` + SecondaryFactorRemainingBackupCodes int32 `protobuf:"varint,37,opt,name=secondary_factor_remaining_backup_codes,json=secondaryFactorRemainingBackupCodes,proto3" json:"secondary_factor_remaining_backup_codes,omitempty"` + AssociatedAccounts []*Users_User_AssociatedAccounts `protobuf:"bytes,38,rep,name=associated_accounts,json=associatedAccounts,proto3" json:"associated_accounts,omitempty"` + CanUploadProfileHeader bool `protobuf:"varint,39,opt,name=can_upload_profile_header,json=canUploadProfileHeader,proto3" json:"can_upload_profile_header,omitempty"` + CanUploadUserCardBackground bool `protobuf:"varint,40,opt,name=can_upload_user_card_background,json=canUploadUserCardBackground,proto3" json:"can_upload_user_card_background,omitempty"` + PostCount int32 `protobuf:"varint,41,opt,name=post_count,json=postCount,proto3" json:"post_count,omitempty"` + CanBeDeleted bool `protobuf:"varint,42,opt,name=can_be_deleted,json=canBeDeleted,proto3" json:"can_be_deleted,omitempty"` + CanDeleteAllPosts bool `protobuf:"varint,43,opt,name=can_delete_all_posts,json=canDeleteAllPosts,proto3" json:"can_delete_all_posts,omitempty"` + Locale string `protobuf:"bytes,44,opt,name=locale,proto3" json:"locale,omitempty"` + MutedCategoryIds []int32 `protobuf:"varint,45,rep,packed,name=muted_category_ids,json=mutedCategoryIds,proto3" json:"muted_category_ids,omitempty"` + RegularCategoryIds []int32 `protobuf:"varint,46,rep,packed,name=regular_category_ids,json=regularCategoryIds,proto3" json:"regular_category_ids,omitempty"` + WatchedTags []string `protobuf:"bytes,47,rep,name=watched_tags,json=watchedTags,proto3" json:"watched_tags,omitempty"` + WatchingFirstPostTags []string `protobuf:"bytes,48,rep,name=watching_first_post_tags,json=watchingFirstPostTags,proto3" json:"watching_first_post_tags,omitempty"` + TrackedTags []string `protobuf:"bytes,49,rep,name=tracked_tags,json=trackedTags,proto3" json:"tracked_tags,omitempty"` + MutedTags []string `protobuf:"bytes,50,rep,name=muted_tags,json=mutedTags,proto3" json:"muted_tags,omitempty"` + TrackedCategoryIds []int32 `protobuf:"varint,51,rep,packed,name=tracked_category_ids,json=trackedCategoryIds,proto3" json:"tracked_category_ids,omitempty"` + WatchedCategoryIds []int32 `protobuf:"varint,52,rep,packed,name=watched_category_ids,json=watchedCategoryIds,proto3" json:"watched_category_ids,omitempty"` + WatchedFirstPostCategoryIds []int32 `protobuf:"varint,53,rep,packed,name=watched_first_post_category_ids,json=watchedFirstPostCategoryIds,proto3" json:"watched_first_post_category_ids,omitempty"` + SystemAvatarUploadId int32 `protobuf:"varint,54,opt,name=system_avatar_upload_id,json=systemAvatarUploadId,proto3" json:"system_avatar_upload_id,omitempty"` + SystemAvatarTemplate string `protobuf:"bytes,55,opt,name=system_avatar_template,json=systemAvatarTemplate,proto3" json:"system_avatar_template,omitempty"` + CustomAvatarUploadId int32 `protobuf:"varint,56,opt,name=custom_avatar_upload_id,json=customAvatarUploadId,proto3" json:"custom_avatar_upload_id,omitempty"` + CustomAvatarTemplate string `protobuf:"bytes,57,opt,name=custom_avatar_template,json=customAvatarTemplate,proto3" json:"custom_avatar_template,omitempty"` + MutedUsernames []string `protobuf:"bytes,58,rep,name=muted_usernames,json=mutedUsernames,proto3" json:"muted_usernames,omitempty"` + IgnoredUsernames []string `protobuf:"bytes,59,rep,name=ignored_usernames,json=ignoredUsernames,proto3" json:"ignored_usernames,omitempty"` + AllowedPmUsernames []string `protobuf:"bytes,60,rep,name=allowed_pm_usernames,json=allowedPmUsernames,proto3" json:"allowed_pm_usernames,omitempty"` + MailingListPostsPerDay int32 `protobuf:"varint,61,opt,name=mailing_list_posts_per_day,json=mailingListPostsPerDay,proto3" json:"mailing_list_posts_per_day,omitempty"` + CanChangeBio bool `protobuf:"varint,62,opt,name=can_change_bio,json=canChangeBio,proto3" json:"can_change_bio,omitempty"` + CanChangeWebsite bool `protobuf:"varint,63,opt,name=can_change_website,json=canChangeWebsite,proto3" json:"can_change_website,omitempty"` + UserAuthTokens []*Users_User_UserAuthTokens `protobuf:"bytes,64,rep,name=user_auth_tokens,json=userAuthTokens,proto3" json:"user_auth_tokens,omitempty"` + FeaturedUserBadgeIds []int32 `protobuf:"varint,65,rep,packed,name=featured_user_badge_ids,json=featuredUserBadgeIds,proto3" json:"featured_user_badge_ids,omitempty"` + Groups []*Users_User_Groups `protobuf:"bytes,66,rep,name=groups,proto3" json:"groups,omitempty"` + GroupUsers []*Users_User_GroupUsers `protobuf:"bytes,67,rep,name=group_users,json=groupUsers,proto3" json:"group_users,omitempty"` + UserOption *Users_User_UserOption `protobuf:"bytes,68,opt,name=user_option,json=userOption,proto3" json:"user_option,omitempty"` +} + +func (x *Users_User) Reset() { + *x = Users_User{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_User) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_User) ProtoMessage() {} + +func (x *Users_User) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_User.ProtoReflect.Descriptor instead. +func (*Users_User) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 5} +} + +func (x *Users_User) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_User) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *Users_User) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Users_User) GetAvatarTemplate() string { + if x != nil { + return x.AvatarTemplate + } + return "" +} + +func (x *Users_User) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *Users_User) GetLastPostedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastPostedAt + } + return nil +} + +func (x *Users_User) GetLastSeenAt() *timestamppb.Timestamp { + if x != nil { + return x.LastSeenAt + } + return nil +} + +func (x *Users_User) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Users_User) GetIgnored() bool { + if x != nil { + return x.Ignored + } + return false +} + +func (x *Users_User) GetMuted() bool { + if x != nil { + return x.Muted + } + return false +} + +func (x *Users_User) GetCanIgnoreUser() bool { + if x != nil { + return x.CanIgnoreUser + } + return false +} + +func (x *Users_User) GetCanMuteUser() bool { + if x != nil { + return x.CanMuteUser + } + return false +} + +func (x *Users_User) GetCanSendPrivateMessages() bool { + if x != nil { + return x.CanSendPrivateMessages + } + return false +} + +func (x *Users_User) GetCanSendPrivateMessagesToUser() bool { + if x != nil { + return x.CanSendPrivateMessagesToUser + } + return false +} + +func (x *Users_User) GetTrustLevel() int32 { + if x != nil { + return x.TrustLevel + } + return 0 +} + +func (x *Users_User) GetModerator() bool { + if x != nil { + return x.Moderator + } + return false +} + +func (x *Users_User) GetAdmin() bool { + if x != nil { + return x.Admin + } + return false +} + +func (x *Users_User) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Users_User) GetBadgeCount() int32 { + if x != nil { + return x.BadgeCount + } + return 0 +} + +func (x *Users_User) GetTimeRead() int32 { + if x != nil { + return x.TimeRead + } + return 0 +} + +func (x *Users_User) GetRecentTimeRead() int32 { + if x != nil { + return x.RecentTimeRead + } + return 0 +} + +func (x *Users_User) GetFeaturedTopic() *Users_User_FeaturedTopic { + if x != nil { + return x.FeaturedTopic + } + return nil +} + +func (x *Users_User) GetWebsite() string { + if x != nil { + return x.Website + } + return "" +} + +func (x *Users_User) GetWebsiteName() string { + if x != nil { + return x.WebsiteName + } + return "" +} + +func (x *Users_User) GetStaged() bool { + if x != nil { + return x.Staged + } + return false +} + +func (x *Users_User) GetCanEdit() bool { + if x != nil { + return x.CanEdit + } + return false +} + +func (x *Users_User) GetCanEditUsername() bool { + if x != nil { + return x.CanEditUsername + } + return false +} + +func (x *Users_User) GetCanEditEmail() bool { + if x != nil { + return x.CanEditEmail + } + return false +} + +func (x *Users_User) GetCanEditName() bool { + if x != nil { + return x.CanEditName + } + return false +} + +func (x *Users_User) GetUploadedAvatarId() int32 { + if x != nil { + return x.UploadedAvatarId + } + return 0 +} + +func (x *Users_User) GetHasTitleBadges() bool { + if x != nil { + return x.HasTitleBadges + } + return false +} + +func (x *Users_User) GetPendingCount() int32 { + if x != nil { + return x.PendingCount + } + return 0 +} + +func (x *Users_User) GetProfileViewCount() int32 { + if x != nil { + return x.ProfileViewCount + } + return 0 +} + +func (x *Users_User) GetSecondaryFactorEnabled() bool { + if x != nil { + return x.SecondaryFactorEnabled + } + return false +} + +func (x *Users_User) GetSecondaryFactorBackupEnabled() bool { + if x != nil { + return x.SecondaryFactorBackupEnabled + } + return false +} + +func (x *Users_User) GetSecondaryFactorRemainingBackupCodes() int32 { + if x != nil { + return x.SecondaryFactorRemainingBackupCodes + } + return 0 +} + +func (x *Users_User) GetAssociatedAccounts() []*Users_User_AssociatedAccounts { + if x != nil { + return x.AssociatedAccounts + } + return nil +} + +func (x *Users_User) GetCanUploadProfileHeader() bool { + if x != nil { + return x.CanUploadProfileHeader + } + return false +} + +func (x *Users_User) GetCanUploadUserCardBackground() bool { + if x != nil { + return x.CanUploadUserCardBackground + } + return false +} + +func (x *Users_User) GetPostCount() int32 { + if x != nil { + return x.PostCount + } + return 0 +} + +func (x *Users_User) GetCanBeDeleted() bool { + if x != nil { + return x.CanBeDeleted + } + return false +} + +func (x *Users_User) GetCanDeleteAllPosts() bool { + if x != nil { + return x.CanDeleteAllPosts + } + return false +} + +func (x *Users_User) GetLocale() string { + if x != nil { + return x.Locale + } + return "" +} + +func (x *Users_User) GetMutedCategoryIds() []int32 { + if x != nil { + return x.MutedCategoryIds + } + return nil +} + +func (x *Users_User) GetRegularCategoryIds() []int32 { + if x != nil { + return x.RegularCategoryIds + } + return nil +} + +func (x *Users_User) GetWatchedTags() []string { + if x != nil { + return x.WatchedTags + } + return nil +} + +func (x *Users_User) GetWatchingFirstPostTags() []string { + if x != nil { + return x.WatchingFirstPostTags + } + return nil +} + +func (x *Users_User) GetTrackedTags() []string { + if x != nil { + return x.TrackedTags + } + return nil +} + +func (x *Users_User) GetMutedTags() []string { + if x != nil { + return x.MutedTags + } + return nil +} + +func (x *Users_User) GetTrackedCategoryIds() []int32 { + if x != nil { + return x.TrackedCategoryIds + } + return nil +} + +func (x *Users_User) GetWatchedCategoryIds() []int32 { + if x != nil { + return x.WatchedCategoryIds + } + return nil +} + +func (x *Users_User) GetWatchedFirstPostCategoryIds() []int32 { + if x != nil { + return x.WatchedFirstPostCategoryIds + } + return nil +} + +func (x *Users_User) GetSystemAvatarUploadId() int32 { + if x != nil { + return x.SystemAvatarUploadId + } + return 0 +} + +func (x *Users_User) GetSystemAvatarTemplate() string { + if x != nil { + return x.SystemAvatarTemplate + } + return "" +} + +func (x *Users_User) GetCustomAvatarUploadId() int32 { + if x != nil { + return x.CustomAvatarUploadId + } + return 0 +} + +func (x *Users_User) GetCustomAvatarTemplate() string { + if x != nil { + return x.CustomAvatarTemplate + } + return "" +} + +func (x *Users_User) GetMutedUsernames() []string { + if x != nil { + return x.MutedUsernames + } + return nil +} + +func (x *Users_User) GetIgnoredUsernames() []string { + if x != nil { + return x.IgnoredUsernames + } + return nil +} + +func (x *Users_User) GetAllowedPmUsernames() []string { + if x != nil { + return x.AllowedPmUsernames + } + return nil +} + +func (x *Users_User) GetMailingListPostsPerDay() int32 { + if x != nil { + return x.MailingListPostsPerDay + } + return 0 +} + +func (x *Users_User) GetCanChangeBio() bool { + if x != nil { + return x.CanChangeBio + } + return false +} + +func (x *Users_User) GetCanChangeWebsite() bool { + if x != nil { + return x.CanChangeWebsite + } + return false +} + +func (x *Users_User) GetUserAuthTokens() []*Users_User_UserAuthTokens { + if x != nil { + return x.UserAuthTokens + } + return nil +} + +func (x *Users_User) GetFeaturedUserBadgeIds() []int32 { + if x != nil { + return x.FeaturedUserBadgeIds + } + return nil +} + +func (x *Users_User) GetGroups() []*Users_User_Groups { + if x != nil { + return x.Groups + } + return nil +} + +func (x *Users_User) GetGroupUsers() []*Users_User_GroupUsers { + if x != nil { + return x.GroupUsers + } + return nil +} + +func (x *Users_User) GetUserOption() *Users_User_UserOption { + if x != nil { + return x.UserOption + } + return nil +} + +type Users_User_FeaturedTopic struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + LastPostedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_posted_at,json=lastPostedAt,proto3" json:"last_posted_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Views int32 `protobuf:"varint,6,opt,name=views,proto3" json:"views,omitempty"` + PostsCount int32 `protobuf:"varint,7,opt,name=posts_count,json=postsCount,proto3" json:"posts_count,omitempty"` + UserId int32 `protobuf:"varint,8,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + LastPostUserId int32 `protobuf:"varint,9,opt,name=last_post_user_id,json=lastPostUserId,proto3" json:"last_post_user_id,omitempty"` + ReplyCount int32 `protobuf:"varint,10,opt,name=reply_count,json=replyCount,proto3" json:"reply_count,omitempty"` + HighestPostNumber int32 `protobuf:"varint,11,opt,name=highest_post_number,json=highestPostNumber,proto3" json:"highest_post_number,omitempty"` + LikeCount int32 `protobuf:"varint,12,opt,name=like_count,json=likeCount,proto3" json:"like_count,omitempty"` + IncomingLinkCount int32 `protobuf:"varint,13,opt,name=incoming_link_count,json=incomingLinkCount,proto3" json:"incoming_link_count,omitempty"` + CategoryId int32 `protobuf:"varint,14,opt,name=category_id,json=categoryId,proto3" json:"category_id,omitempty"` + Visible bool `protobuf:"varint,15,opt,name=visible,proto3" json:"visible,omitempty"` + ModeratorPostsCount int32 `protobuf:"varint,16,opt,name=moderator_posts_count,json=moderatorPostsCount,proto3" json:"moderator_posts_count,omitempty"` + Closed bool `protobuf:"varint,17,opt,name=closed,proto3" json:"closed,omitempty"` + Archived bool `protobuf:"varint,18,opt,name=archived,proto3" json:"archived,omitempty"` + BumpedAt *timestamppb.Timestamp `protobuf:"bytes,19,opt,name=bumped_at,json=bumpedAt,proto3" json:"bumped_at,omitempty"` + HasSummary bool `protobuf:"varint,20,opt,name=has_summary,json=hasSummary,proto3" json:"has_summary,omitempty"` + Archetype string `protobuf:"bytes,21,opt,name=archetype,proto3" json:"archetype,omitempty"` + NotifyModeratorsCount int32 `protobuf:"varint,22,opt,name=notify_moderators_count,json=notifyModeratorsCount,proto3" json:"notify_moderators_count,omitempty"` + SpamCount int32 `protobuf:"varint,23,opt,name=spam_count,json=spamCount,proto3" json:"spam_count,omitempty"` + Score float64 `protobuf:"fixed64,24,opt,name=score,proto3" json:"score,omitempty"` + PercentRank float64 `protobuf:"fixed64,26,opt,name=percent_rank,json=percentRank,proto3" json:"percent_rank,omitempty"` + Slug string `protobuf:"bytes,27,opt,name=slug,proto3" json:"slug,omitempty"` + ParticipantCount int32 `protobuf:"varint,28,opt,name=participant_count,json=participantCount,proto3" json:"participant_count,omitempty"` + WordCount int32 `protobuf:"varint,29,opt,name=word_count,json=wordCount,proto3" json:"word_count,omitempty"` + Excerpt string `protobuf:"bytes,30,opt,name=excerpt,proto3" json:"excerpt,omitempty"` + PinnedGlobally bool `protobuf:"varint,31,opt,name=pinned_globally,json=pinnedGlobally,proto3" json:"pinned_globally,omitempty"` + FancyTitle string `protobuf:"bytes,32,opt,name=fancy_title,json=fancyTitle,proto3" json:"fancy_title,omitempty"` + HighestStaffPostNumber int32 `protobuf:"varint,33,opt,name=highest_staff_post_number,json=highestStaffPostNumber,proto3" json:"highest_staff_post_number,omitempty"` + ReviewableScore float64 `protobuf:"fixed64,34,opt,name=reviewable_score,json=reviewableScore,proto3" json:"reviewable_score,omitempty"` + ImageUploadId int32 `protobuf:"varint,35,opt,name=image_upload_id,json=imageUploadId,proto3" json:"image_upload_id,omitempty"` +} + +func (x *Users_User_FeaturedTopic) Reset() { + *x = Users_User_FeaturedTopic{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_User_FeaturedTopic) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_User_FeaturedTopic) ProtoMessage() {} + +func (x *Users_User_FeaturedTopic) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_User_FeaturedTopic.ProtoReflect.Descriptor instead. +func (*Users_User_FeaturedTopic) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 5, 0} +} + +func (x *Users_User_FeaturedTopic) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Users_User_FeaturedTopic) GetLastPostedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastPostedAt + } + return nil +} + +func (x *Users_User_FeaturedTopic) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Users_User_FeaturedTopic) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Users_User_FeaturedTopic) GetViews() int32 { + if x != nil { + return x.Views + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetPostsCount() int32 { + if x != nil { + return x.PostsCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetLastPostUserId() int32 { + if x != nil { + return x.LastPostUserId + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetReplyCount() int32 { + if x != nil { + return x.ReplyCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetHighestPostNumber() int32 { + if x != nil { + return x.HighestPostNumber + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetLikeCount() int32 { + if x != nil { + return x.LikeCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetIncomingLinkCount() int32 { + if x != nil { + return x.IncomingLinkCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetCategoryId() int32 { + if x != nil { + return x.CategoryId + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetVisible() bool { + if x != nil { + return x.Visible + } + return false +} + +func (x *Users_User_FeaturedTopic) GetModeratorPostsCount() int32 { + if x != nil { + return x.ModeratorPostsCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetClosed() bool { + if x != nil { + return x.Closed + } + return false +} + +func (x *Users_User_FeaturedTopic) GetArchived() bool { + if x != nil { + return x.Archived + } + return false +} + +func (x *Users_User_FeaturedTopic) GetBumpedAt() *timestamppb.Timestamp { + if x != nil { + return x.BumpedAt + } + return nil +} + +func (x *Users_User_FeaturedTopic) GetHasSummary() bool { + if x != nil { + return x.HasSummary + } + return false +} + +func (x *Users_User_FeaturedTopic) GetArchetype() string { + if x != nil { + return x.Archetype + } + return "" +} + +func (x *Users_User_FeaturedTopic) GetNotifyModeratorsCount() int32 { + if x != nil { + return x.NotifyModeratorsCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetSpamCount() int32 { + if x != nil { + return x.SpamCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetScore() float64 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetPercentRank() float64 { + if x != nil { + return x.PercentRank + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Users_User_FeaturedTopic) GetParticipantCount() int32 { + if x != nil { + return x.ParticipantCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetWordCount() int32 { + if x != nil { + return x.WordCount + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetExcerpt() string { + if x != nil { + return x.Excerpt + } + return "" +} + +func (x *Users_User_FeaturedTopic) GetPinnedGlobally() bool { + if x != nil { + return x.PinnedGlobally + } + return false +} + +func (x *Users_User_FeaturedTopic) GetFancyTitle() string { + if x != nil { + return x.FancyTitle + } + return "" +} + +func (x *Users_User_FeaturedTopic) GetHighestStaffPostNumber() int32 { + if x != nil { + return x.HighestStaffPostNumber + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetReviewableScore() float64 { + if x != nil { + return x.ReviewableScore + } + return 0 +} + +func (x *Users_User_FeaturedTopic) GetImageUploadId() int32 { + if x != nil { + return x.ImageUploadId + } + return 0 +} + +type Users_User_AssociatedAccounts struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *Users_User_AssociatedAccounts) Reset() { + *x = Users_User_AssociatedAccounts{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_User_AssociatedAccounts) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_User_AssociatedAccounts) ProtoMessage() {} + +func (x *Users_User_AssociatedAccounts) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_User_AssociatedAccounts.ProtoReflect.Descriptor instead. +func (*Users_User_AssociatedAccounts) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 5, 1} +} + +func (x *Users_User_AssociatedAccounts) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Users_User_AssociatedAccounts) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type Users_User_UserAuthTokens struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ClientIp string `protobuf:"bytes,2,opt,name=client_ip,json=clientIp,proto3" json:"client_ip,omitempty"` + Location string `protobuf:"bytes,3,opt,name=location,proto3" json:"location,omitempty"` + Browser string `protobuf:"bytes,4,opt,name=browser,proto3" json:"browser,omitempty"` + Device string `protobuf:"bytes,5,opt,name=device,proto3" json:"device,omitempty"` + Os string `protobuf:"bytes,6,opt,name=os,proto3" json:"os,omitempty"` + Icon string `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + SeenAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=seen_at,json=seenAt,proto3" json:"seen_at,omitempty"` + IsActive bool `protobuf:"varint,10,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` +} + +func (x *Users_User_UserAuthTokens) Reset() { + *x = Users_User_UserAuthTokens{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_User_UserAuthTokens) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_User_UserAuthTokens) ProtoMessage() {} + +func (x *Users_User_UserAuthTokens) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_User_UserAuthTokens.ProtoReflect.Descriptor instead. +func (*Users_User_UserAuthTokens) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 5, 2} +} + +func (x *Users_User_UserAuthTokens) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_User_UserAuthTokens) GetClientIp() string { + if x != nil { + return x.ClientIp + } + return "" +} + +func (x *Users_User_UserAuthTokens) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *Users_User_UserAuthTokens) GetBrowser() string { + if x != nil { + return x.Browser + } + return "" +} + +func (x *Users_User_UserAuthTokens) GetDevice() string { + if x != nil { + return x.Device + } + return "" +} + +func (x *Users_User_UserAuthTokens) GetOs() string { + if x != nil { + return x.Os + } + return "" +} + +func (x *Users_User_UserAuthTokens) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +func (x *Users_User_UserAuthTokens) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Users_User_UserAuthTokens) GetSeenAt() *timestamppb.Timestamp { + if x != nil { + return x.SeenAt + } + return nil +} + +func (x *Users_User_UserAuthTokens) GetIsActive() bool { + if x != nil { + return x.IsActive + } + return false +} + +type Users_User_Groups struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Automatic bool `protobuf:"varint,2,opt,name=automatic,proto3" json:"automatic,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + UserCount int32 `protobuf:"varint,5,opt,name=user_count,json=userCount,proto3" json:"user_count,omitempty"` + MentionableLevel int32 `protobuf:"varint,6,opt,name=mentionable_level,json=mentionableLevel,proto3" json:"mentionable_level,omitempty"` + MessageableLevel int32 `protobuf:"varint,7,opt,name=messageable_level,json=messageableLevel,proto3" json:"messageable_level,omitempty"` + VisibilityLevel int32 `protobuf:"varint,8,opt,name=visibility_level,json=visibilityLevel,proto3" json:"visibility_level,omitempty"` + PrimaryGroup bool `protobuf:"varint,9,opt,name=primary_group,json=primaryGroup,proto3" json:"primary_group,omitempty"` + HasMessages bool `protobuf:"varint,10,opt,name=has_messages,json=hasMessages,proto3" json:"has_messages,omitempty"` + BioRaw string `protobuf:"bytes,11,opt,name=bio_raw,json=bioRaw,proto3" json:"bio_raw,omitempty"` + PublicAdmission bool `protobuf:"varint,12,opt,name=public_admission,json=publicAdmission,proto3" json:"public_admission,omitempty"` + PublicExit bool `protobuf:"varint,13,opt,name=public_exit,json=publicExit,proto3" json:"public_exit,omitempty"` + AllowMembershipRequests bool `protobuf:"varint,14,opt,name=allow_membership_requests,json=allowMembershipRequests,proto3" json:"allow_membership_requests,omitempty"` + FullName string `protobuf:"bytes,15,opt,name=full_name,json=fullName,proto3" json:"full_name,omitempty"` + DefaultNotificationLevel int32 `protobuf:"varint,16,opt,name=default_notification_level,json=defaultNotificationLevel,proto3" json:"default_notification_level,omitempty"` + MembershipRequestTemplate string `protobuf:"bytes,17,opt,name=membership_request_template,json=membershipRequestTemplate,proto3" json:"membership_request_template,omitempty"` + MembersVisibilityLevel int32 `protobuf:"varint,18,opt,name=members_visibility_level,json=membersVisibilityLevel,proto3" json:"members_visibility_level,omitempty"` + CanSeeMembers bool `protobuf:"varint,19,opt,name=can_see_members,json=canSeeMembers,proto3" json:"can_see_members,omitempty"` + CanAdminGroup bool `protobuf:"varint,20,opt,name=can_admin_group,json=canAdminGroup,proto3" json:"can_admin_group,omitempty"` + PublishReadState bool `protobuf:"varint,21,opt,name=publish_read_state,json=publishReadState,proto3" json:"publish_read_state,omitempty"` + ImapMailboxName string `protobuf:"bytes,22,opt,name=imap_mailbox_name,json=imapMailboxName,proto3" json:"imap_mailbox_name,omitempty"` + WatchingCategoryIds []int32 `protobuf:"varint,23,rep,packed,name=watching_category_ids,json=watchingCategoryIds,proto3" json:"watching_category_ids,omitempty"` + TrackingCategoryIds []int32 `protobuf:"varint,24,rep,packed,name=tracking_category_ids,json=trackingCategoryIds,proto3" json:"tracking_category_ids,omitempty"` + WatchingFirstPostCategoryIds []int32 `protobuf:"varint,25,rep,packed,name=watching_first_post_category_ids,json=watchingFirstPostCategoryIds,proto3" json:"watching_first_post_category_ids,omitempty"` + RegularCategoryIds []int32 `protobuf:"varint,26,rep,packed,name=regular_category_ids,json=regularCategoryIds,proto3" json:"regular_category_ids,omitempty"` + MutedCategoryIds []int32 `protobuf:"varint,27,rep,packed,name=muted_category_ids,json=mutedCategoryIds,proto3" json:"muted_category_ids,omitempty"` + WatchingTags []string `protobuf:"bytes,28,rep,name=watching_tags,json=watchingTags,proto3" json:"watching_tags,omitempty"` + WatchingFirstPostTags []string `protobuf:"bytes,29,rep,name=watching_first_post_tags,json=watchingFirstPostTags,proto3" json:"watching_first_post_tags,omitempty"` + TrackingsTags []string `protobuf:"bytes,30,rep,name=trackings_tags,json=trackingsTags,proto3" json:"trackings_tags,omitempty"` + RegularTags []string `protobuf:"bytes,31,rep,name=regular_tags,json=regularTags,proto3" json:"regular_tags,omitempty"` + MutedTags []string `protobuf:"bytes,32,rep,name=muted_tags,json=mutedTags,proto3" json:"muted_tags,omitempty"` +} + +func (x *Users_User_Groups) Reset() { + *x = Users_User_Groups{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_User_Groups) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_User_Groups) ProtoMessage() {} + +func (x *Users_User_Groups) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_User_Groups.ProtoReflect.Descriptor instead. +func (*Users_User_Groups) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 5, 3} +} + +func (x *Users_User_Groups) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Users_User_Groups) GetAutomatic() bool { + if x != nil { + return x.Automatic + } + return false +} + +func (x *Users_User_Groups) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Users_User_Groups) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *Users_User_Groups) GetUserCount() int32 { + if x != nil { + return x.UserCount + } + return 0 +} + +func (x *Users_User_Groups) GetMentionableLevel() int32 { + if x != nil { + return x.MentionableLevel + } + return 0 +} + +func (x *Users_User_Groups) GetMessageableLevel() int32 { + if x != nil { + return x.MessageableLevel + } + return 0 +} + +func (x *Users_User_Groups) GetVisibilityLevel() int32 { + if x != nil { + return x.VisibilityLevel + } + return 0 +} + +func (x *Users_User_Groups) GetPrimaryGroup() bool { + if x != nil { + return x.PrimaryGroup + } + return false +} + +func (x *Users_User_Groups) GetHasMessages() bool { + if x != nil { + return x.HasMessages + } + return false +} + +func (x *Users_User_Groups) GetBioRaw() string { + if x != nil { + return x.BioRaw + } + return "" +} + +func (x *Users_User_Groups) GetPublicAdmission() bool { + if x != nil { + return x.PublicAdmission + } + return false +} + +func (x *Users_User_Groups) GetPublicExit() bool { + if x != nil { + return x.PublicExit + } + return false +} + +func (x *Users_User_Groups) GetAllowMembershipRequests() bool { + if x != nil { + return x.AllowMembershipRequests + } + return false +} + +func (x *Users_User_Groups) GetFullName() string { + if x != nil { + return x.FullName + } + return "" +} + +func (x *Users_User_Groups) GetDefaultNotificationLevel() int32 { + if x != nil { + return x.DefaultNotificationLevel + } + return 0 +} + +func (x *Users_User_Groups) GetMembershipRequestTemplate() string { + if x != nil { + return x.MembershipRequestTemplate + } + return "" +} + +func (x *Users_User_Groups) GetMembersVisibilityLevel() int32 { + if x != nil { + return x.MembersVisibilityLevel + } + return 0 +} + +func (x *Users_User_Groups) GetCanSeeMembers() bool { + if x != nil { + return x.CanSeeMembers + } + return false +} + +func (x *Users_User_Groups) GetCanAdminGroup() bool { + if x != nil { + return x.CanAdminGroup + } + return false +} + +func (x *Users_User_Groups) GetPublishReadState() bool { + if x != nil { + return x.PublishReadState + } + return false +} + +func (x *Users_User_Groups) GetImapMailboxName() string { + if x != nil { + return x.ImapMailboxName + } + return "" +} + +func (x *Users_User_Groups) GetWatchingCategoryIds() []int32 { + if x != nil { + return x.WatchingCategoryIds + } + return nil +} + +func (x *Users_User_Groups) GetTrackingCategoryIds() []int32 { + if x != nil { + return x.TrackingCategoryIds + } + return nil +} + +func (x *Users_User_Groups) GetWatchingFirstPostCategoryIds() []int32 { + if x != nil { + return x.WatchingFirstPostCategoryIds + } + return nil +} + +func (x *Users_User_Groups) GetRegularCategoryIds() []int32 { + if x != nil { + return x.RegularCategoryIds + } + return nil +} + +func (x *Users_User_Groups) GetMutedCategoryIds() []int32 { + if x != nil { + return x.MutedCategoryIds + } + return nil +} + +func (x *Users_User_Groups) GetWatchingTags() []string { + if x != nil { + return x.WatchingTags + } + return nil +} + +func (x *Users_User_Groups) GetWatchingFirstPostTags() []string { + if x != nil { + return x.WatchingFirstPostTags + } + return nil +} + +func (x *Users_User_Groups) GetTrackingsTags() []string { + if x != nil { + return x.TrackingsTags + } + return nil +} + +func (x *Users_User_Groups) GetRegularTags() []string { + if x != nil { + return x.RegularTags + } + return nil +} + +func (x *Users_User_Groups) GetMutedTags() []string { + if x != nil { + return x.MutedTags + } + return nil +} + +type Users_User_GroupUsers struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupId int32 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + UserId int32 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + NotificationLevel int32 `protobuf:"varint,3,opt,name=notification_level,json=notificationLevel,proto3" json:"notification_level,omitempty"` + Owner bool `protobuf:"varint,4,opt,name=owner,proto3" json:"owner,omitempty"` +} + +func (x *Users_User_GroupUsers) Reset() { + *x = Users_User_GroupUsers{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_User_GroupUsers) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_User_GroupUsers) ProtoMessage() {} + +func (x *Users_User_GroupUsers) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_User_GroupUsers.ProtoReflect.Descriptor instead. +func (*Users_User_GroupUsers) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 5, 4} +} + +func (x *Users_User_GroupUsers) GetGroupId() int32 { + if x != nil { + return x.GroupId + } + return 0 +} + +func (x *Users_User_GroupUsers) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *Users_User_GroupUsers) GetNotificationLevel() int32 { + if x != nil { + return x.NotificationLevel + } + return 0 +} + +func (x *Users_User_GroupUsers) GetOwner() bool { + if x != nil { + return x.Owner + } + return false +} + +type Users_User_UserOption struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + MailingListMode bool `protobuf:"varint,2,opt,name=mailing_list_mode,json=mailingListMode,proto3" json:"mailing_list_mode,omitempty"` + MailingListModeFrequency int32 `protobuf:"varint,3,opt,name=mailing_list_mode_frequency,json=mailingListModeFrequency,proto3" json:"mailing_list_mode_frequency,omitempty"` + EmailDigests bool `protobuf:"varint,4,opt,name=email_digests,json=emailDigests,proto3" json:"email_digests,omitempty"` + EmailLevel int32 `protobuf:"varint,5,opt,name=email_level,json=emailLevel,proto3" json:"email_level,omitempty"` + EmailMessagesLevel int32 `protobuf:"varint,6,opt,name=email_messages_level,json=emailMessagesLevel,proto3" json:"email_messages_level,omitempty"` + ExternalLinksIsNewTab bool `protobuf:"varint,7,opt,name=external_links_is_new_tab,json=externalLinksIsNewTab,proto3" json:"external_links_is_new_tab,omitempty"` + DarkSchemeId int32 `protobuf:"varint,8,opt,name=dark_scheme_id,json=darkSchemeId,proto3" json:"dark_scheme_id,omitempty"` + DynamicFavicon bool `protobuf:"varint,9,opt,name=dynamic_favicon,json=dynamicFavicon,proto3" json:"dynamic_favicon,omitempty"` + EnableQuoting bool `protobuf:"varint,10,opt,name=enable_quoting,json=enableQuoting,proto3" json:"enable_quoting,omitempty"` + EnableDefer bool `protobuf:"varint,11,opt,name=enable_defer,json=enableDefer,proto3" json:"enable_defer,omitempty"` + DigestAfterMinutes int32 `protobuf:"varint,12,opt,name=digest_after_minutes,json=digestAfterMinutes,proto3" json:"digest_after_minutes,omitempty"` + AutomaticallyUnpinTopics bool `protobuf:"varint,13,opt,name=automatically_unpin_topics,json=automaticallyUnpinTopics,proto3" json:"automatically_unpin_topics,omitempty"` + AutoTrackTopicsAftersMsecs int32 `protobuf:"varint,14,opt,name=auto_track_topics_afters_msecs,json=autoTrackTopicsAftersMsecs,proto3" json:"auto_track_topics_afters_msecs,omitempty"` + NotificationLevelWhenReplying int32 `protobuf:"varint,15,opt,name=notification_level_when_replying,json=notificationLevelWhenReplying,proto3" json:"notification_level_when_replying,omitempty"` + NewTopicDurationMinutes int32 `protobuf:"varint,16,opt,name=new_topic_duration_minutes,json=newTopicDurationMinutes,proto3" json:"new_topic_duration_minutes,omitempty"` + EmailPreviousReplies int32 `protobuf:"varint,17,opt,name=email_previous_replies,json=emailPreviousReplies,proto3" json:"email_previous_replies,omitempty"` + EmailInReplyTo bool `protobuf:"varint,18,opt,name=email_in_reply_to,json=emailInReplyTo,proto3" json:"email_in_reply_to,omitempty"` + LikeNotificationFrequency int32 `protobuf:"varint,19,opt,name=like_notification_frequency,json=likeNotificationFrequency,proto3" json:"like_notification_frequency,omitempty"` + IncludeTl0InDigests bool `protobuf:"varint,20,opt,name=include_tl0_in_digests,json=includeTl0InDigests,proto3" json:"include_tl0_in_digests,omitempty"` + ThemeIds []int32 `protobuf:"varint,21,rep,packed,name=theme_ids,json=themeIds,proto3" json:"theme_ids,omitempty"` + ThemeKeySeq int32 `protobuf:"varint,22,opt,name=theme_key_seq,json=themeKeySeq,proto3" json:"theme_key_seq,omitempty"` + AllowPrivateMessages bool `protobuf:"varint,23,opt,name=allow_private_messages,json=allowPrivateMessages,proto3" json:"allow_private_messages,omitempty"` + EnableAllowedPmUsers bool `protobuf:"varint,24,opt,name=enable_allowed_pm_users,json=enableAllowedPmUsers,proto3" json:"enable_allowed_pm_users,omitempty"` + HideProfileAndPresense bool `protobuf:"varint,25,opt,name=hide_profile_and_presense,json=hideProfileAndPresense,proto3" json:"hide_profile_and_presense,omitempty"` + TextSize string `protobuf:"bytes,26,opt,name=text_size,json=textSize,proto3" json:"text_size,omitempty"` + TextSizeSeq int32 `protobuf:"varint,27,opt,name=text_size_seq,json=textSizeSeq,proto3" json:"text_size_seq,omitempty"` + TitleCountMode string `protobuf:"bytes,28,opt,name=title_count_mode,json=titleCountMode,proto3" json:"title_count_mode,omitempty"` + Timezone string `protobuf:"bytes,29,opt,name=timezone,proto3" json:"timezone,omitempty"` + SkipNewUserTips bool `protobuf:"varint,30,opt,name=skip_new_user_tips,json=skipNewUserTips,proto3" json:"skip_new_user_tips,omitempty"` +} + +func (x *Users_User_UserOption) Reset() { + *x = Users_User_UserOption{} + if protoimpl.UnsafeEnabled { + mi := &file_users_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Users_User_UserOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users_User_UserOption) ProtoMessage() {} + +func (x *Users_User_UserOption) ProtoReflect() protoreflect.Message { + mi := &file_users_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users_User_UserOption.ProtoReflect.Descriptor instead. +func (*Users_User_UserOption) Descriptor() ([]byte, []int) { + return file_users_proto_rawDescGZIP(), []int{0, 5, 5} +} + +func (x *Users_User_UserOption) GetUserId() int32 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *Users_User_UserOption) GetMailingListMode() bool { + if x != nil { + return x.MailingListMode + } + return false +} + +func (x *Users_User_UserOption) GetMailingListModeFrequency() int32 { + if x != nil { + return x.MailingListModeFrequency + } + return 0 +} + +func (x *Users_User_UserOption) GetEmailDigests() bool { + if x != nil { + return x.EmailDigests + } + return false +} + +func (x *Users_User_UserOption) GetEmailLevel() int32 { + if x != nil { + return x.EmailLevel + } + return 0 +} + +func (x *Users_User_UserOption) GetEmailMessagesLevel() int32 { + if x != nil { + return x.EmailMessagesLevel + } + return 0 +} + +func (x *Users_User_UserOption) GetExternalLinksIsNewTab() bool { + if x != nil { + return x.ExternalLinksIsNewTab + } + return false +} + +func (x *Users_User_UserOption) GetDarkSchemeId() int32 { + if x != nil { + return x.DarkSchemeId + } + return 0 +} + +func (x *Users_User_UserOption) GetDynamicFavicon() bool { + if x != nil { + return x.DynamicFavicon + } + return false +} + +func (x *Users_User_UserOption) GetEnableQuoting() bool { + if x != nil { + return x.EnableQuoting + } + return false +} + +func (x *Users_User_UserOption) GetEnableDefer() bool { + if x != nil { + return x.EnableDefer + } + return false +} + +func (x *Users_User_UserOption) GetDigestAfterMinutes() int32 { + if x != nil { + return x.DigestAfterMinutes + } + return 0 +} + +func (x *Users_User_UserOption) GetAutomaticallyUnpinTopics() bool { + if x != nil { + return x.AutomaticallyUnpinTopics + } + return false +} + +func (x *Users_User_UserOption) GetAutoTrackTopicsAftersMsecs() int32 { + if x != nil { + return x.AutoTrackTopicsAftersMsecs + } + return 0 +} + +func (x *Users_User_UserOption) GetNotificationLevelWhenReplying() int32 { + if x != nil { + return x.NotificationLevelWhenReplying + } + return 0 +} + +func (x *Users_User_UserOption) GetNewTopicDurationMinutes() int32 { + if x != nil { + return x.NewTopicDurationMinutes + } + return 0 +} + +func (x *Users_User_UserOption) GetEmailPreviousReplies() int32 { + if x != nil { + return x.EmailPreviousReplies + } + return 0 +} + +func (x *Users_User_UserOption) GetEmailInReplyTo() bool { + if x != nil { + return x.EmailInReplyTo + } + return false +} + +func (x *Users_User_UserOption) GetLikeNotificationFrequency() int32 { + if x != nil { + return x.LikeNotificationFrequency + } + return 0 +} + +func (x *Users_User_UserOption) GetIncludeTl0InDigests() bool { + if x != nil { + return x.IncludeTl0InDigests + } + return false +} + +func (x *Users_User_UserOption) GetThemeIds() []int32 { + if x != nil { + return x.ThemeIds + } + return nil +} + +func (x *Users_User_UserOption) GetThemeKeySeq() int32 { + if x != nil { + return x.ThemeKeySeq + } + return 0 +} + +func (x *Users_User_UserOption) GetAllowPrivateMessages() bool { + if x != nil { + return x.AllowPrivateMessages + } + return false +} + +func (x *Users_User_UserOption) GetEnableAllowedPmUsers() bool { + if x != nil { + return x.EnableAllowedPmUsers + } + return false +} + +func (x *Users_User_UserOption) GetHideProfileAndPresense() bool { + if x != nil { + return x.HideProfileAndPresense + } + return false +} + +func (x *Users_User_UserOption) GetTextSize() string { + if x != nil { + return x.TextSize + } + return "" +} + +func (x *Users_User_UserOption) GetTextSizeSeq() int32 { + if x != nil { + return x.TextSizeSeq + } + return 0 +} + +func (x *Users_User_UserOption) GetTitleCountMode() string { + if x != nil { + return x.TitleCountMode + } + return "" +} + +func (x *Users_User_UserOption) GetTimezone() string { + if x != nil { + return x.Timezone + } + return "" +} + +func (x *Users_User_UserOption) GetSkipNewUserTips() bool { + if x != nil { + return x.SkipNewUserTips + } + return false +} + +var File_users_proto protoreflect.FileDescriptor + +var file_users_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xce, 0x48, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0b, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, + 0x67, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x42, + 0x61, 0x64, 0x67, 0x65, 0x73, 0x52, 0x06, 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x45, 0x0a, + 0x0b, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x42, 0x61, + 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0a, 0x62, 0x61, 0x64, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x52, 0x06, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x1a, 0xd3, 0x02, 0x0a, 0x0a, 0x55, 0x73, + 0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x61, 0x64, 0x67, 0x65, 0x49, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, + 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x6f, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x49, 0x64, 0x1a, + 0xc2, 0x03, 0x0a, 0x06, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x6c, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x61, 0x64, + 0x67, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x62, 0x61, 0x64, 0x67, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, + 0x67, 0x12, 0x2d, 0x0a, 0x12, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x5f, 0x67, 0x72, + 0x61, 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6d, + 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x61, 0x64, 0x67, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x49, 0x64, 0x1a, 0x4f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0xa4, 0x01, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x64, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x84, 0x01, 0x0a, + 0x06, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, + 0x75, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x1a, 0xbd, 0x3c, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x40, 0x0a, 0x0e, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3c, 0x0a, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x5f, 0x69, 0x67, + 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x63, 0x61, 0x6e, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, + 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x4d, 0x75, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x47, 0x0a, + 0x21, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x6e, + 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x75, 0x73, 0x74, 0x5f, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x61, 0x64, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62, 0x61, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, + 0x28, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x53, 0x0a, 0x0e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x17, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, + 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x18, + 0x0a, 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x12, 0x2a, + 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x45, 0x64, + 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x61, + 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x1d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, + 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x45, 0x64, 0x69, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, + 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, + 0x62, 0x61, 0x64, 0x67, 0x65, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, + 0x73, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x42, 0x61, 0x64, 0x67, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x65, + 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x38, 0x0a, 0x18, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x66, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x16, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x24, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x1c, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x54, 0x0a, 0x27, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x66, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x23, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x13, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x26, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x2e, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x12, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x63, 0x61, + 0x6e, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x63, + 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x1f, 0x63, 0x61, 0x6e, 0x5f, 0x75, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x62, 0x61, + 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, + 0x63, 0x61, 0x6e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x61, 0x72, + 0x64, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x61, + 0x6e, 0x5f, 0x62, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x2a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x42, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, + 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, + 0x63, 0x61, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x74, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x75, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x2d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x67, 0x75, 0x6c, + 0x61, 0x72, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x2e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x2f, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0b, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x18, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, + 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x73, + 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, + 0x63, 0x6b, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x75, 0x74, 0x65, + 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x32, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, + 0x74, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x63, 0x6b, + 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x33, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x77, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x1f, 0x77, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x35, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x1b, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x72, + 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, + 0x73, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x36, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x35, + 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, + 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x38, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, + 0x39, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, + 0x75, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x3a, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x6d, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x61, + 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79, 0x12, + 0x24, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x62, 0x69, + 0x6f, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x42, 0x69, 0x6f, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x65, 0x62, 0x73, + 0x69, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x0e, 0x75, 0x73, + 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x17, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x62, 0x61, + 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x41, 0x20, 0x03, 0x28, 0x05, 0x52, 0x14, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x61, 0x64, 0x67, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x42, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x72, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x4a, + 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x44, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x75, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x85, 0x0a, 0x0a, 0x0d, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x64, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x69, + 0x65, 0x77, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x11, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, + 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, + 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x11, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x6b, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, + 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6e, 0x6b, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, + 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x13, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x09, 0x62, 0x75, 0x6d, 0x70, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x62, 0x75, 0x6d, 0x70, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x72, 0x63, 0x68, 0x65, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x36, 0x0a, 0x17, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x70, 0x61, 0x6d, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x70, + 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x1a, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x6b, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x6c, 0x75, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x65, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x69, + 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x1f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x54, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x5f, + 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x66, 0x66, 0x50, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x29, 0x0a, 0x10, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x76, 0x69, 0x65, + 0x77, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x5f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x64, 0x1a, 0x4a, 0x0a, 0x12, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbc, + 0x02, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x72, + 0x6f, 0x77, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x72, 0x6f, + 0x77, 0x73, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x73, + 0x65, 0x65, 0x6e, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x06, 0x73, 0x65, 0x65, 0x6e, 0x41, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, 0xd0, 0x0a, + 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x6f, + 0x6d, 0x61, 0x74, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x75, 0x74, + 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, + 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x61, 0x62, 0x6c, + 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, + 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x62, 0x69, 0x6f, + 0x5f, 0x72, 0x61, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x6f, 0x52, + 0x61, 0x77, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, + 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x45, 0x78, 0x69, 0x74, 0x12, 0x3a, + 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, + 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, + 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x1b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x68, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x65, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x65, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x5f, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x2c, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, + 0x11, 0x69, 0x6d, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6d, 0x61, 0x70, 0x4d, 0x61, + 0x69, 0x6c, 0x62, 0x6f, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x77, 0x61, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, + 0x15, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, 0x74, 0x72, + 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, + 0x73, 0x12, 0x46, 0x0a, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x05, 0x52, 0x1c, 0x77, 0x61, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x67, + 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, + 0x75, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0c, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x73, 0x12, 0x37, + 0x0a, 0x18, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, + 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x15, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, + 0x6f, 0x73, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x6b, + 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x54, 0x61, 0x67, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x1f, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x54, 0x61, 0x67, + 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, + 0x1a, 0x85, 0x01, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x1a, 0x88, 0x0b, 0x0a, 0x0a, 0x55, 0x73, 0x65, + 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3d, 0x0a, 0x1b, + 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x18, 0x6d, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x12, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x19, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x5f, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x12, 0x24, 0x0a, + 0x0e, 0x64, 0x61, 0x72, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x61, 0x72, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, + 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x6f, 0x74, + 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, + 0x66, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x65, 0x66, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, + 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x41, 0x66, 0x74, 0x65, + 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x6f, + 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x5f, 0x75, 0x6e, 0x70, 0x69, 0x6e, 0x5f, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x61, 0x75, + 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x55, 0x6e, 0x70, 0x69, 0x6e, + 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x42, 0x0a, 0x1e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x66, 0x74, 0x65, + 0x72, 0x73, 0x5f, 0x6d, 0x73, 0x65, 0x63, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1a, + 0x61, 0x75, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x41, + 0x66, 0x74, 0x65, 0x72, 0x73, 0x4d, 0x73, 0x65, 0x63, 0x73, 0x12, 0x47, 0x0a, 0x20, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x5f, 0x77, 0x68, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x1d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x57, 0x68, 0x65, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x1a, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, + 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6e, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x69, + 0x63, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x34, 0x0a, 0x16, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, + 0x75, 0x73, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x14, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x11, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, + 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x74, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x49, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, + 0x6f, 0x12, 0x3e, 0x0a, 0x1b, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6c, 0x69, 0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x33, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x6c, 0x30, + 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x6c, 0x30, 0x49, 0x6e, 0x44, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x74, 0x68, 0x65, 0x6d, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x73, 0x65, 0x71, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x68, 0x65, 0x6d, + 0x65, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x71, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x35, 0x0a, + 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, + 0x70, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x6d, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x68, 0x69, 0x64, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x1a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0d, + 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x71, + 0x12, 0x28, 0x0a, 0x10, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x69, + 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, + 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6e, + 0x65, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x70, 0x73, 0x18, 0x1e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x4e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x54, + 0x69, 0x70, 0x73, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x2e, 0x30, 0x63, 0x64, 0x2e, 0x78, + 0x79, 0x7a, 0x2f, 0x6d, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6c, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_users_proto_rawDescOnce sync.Once + file_users_proto_rawDescData = file_users_proto_rawDesc +) + +func file_users_proto_rawDescGZIP() []byte { + file_users_proto_rawDescOnce.Do(func() { + file_users_proto_rawDescData = protoimpl.X.CompressGZIP(file_users_proto_rawDescData) + }) + return file_users_proto_rawDescData +} + +var file_users_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_users_proto_goTypes = []interface{}{ + (*Users)(nil), // 0: discourse.protobuf.Users + (*Users_UserBadges)(nil), // 1: discourse.protobuf.Users.UserBadges + (*Users_Badges)(nil), // 2: discourse.protobuf.Users.Badges + (*Users_BadgeTypes)(nil), // 3: discourse.protobuf.Users.BadgeTypes + (*Users_Users)(nil), // 4: discourse.protobuf.Users.Users + (*Users_Topics)(nil), // 5: discourse.protobuf.Users.Topics + (*Users_User)(nil), // 6: discourse.protobuf.Users.User + (*Users_User_FeaturedTopic)(nil), // 7: discourse.protobuf.Users.User.FeaturedTopic + (*Users_User_AssociatedAccounts)(nil), // 8: discourse.protobuf.Users.User.AssociatedAccounts + (*Users_User_UserAuthTokens)(nil), // 9: discourse.protobuf.Users.User.UserAuthTokens + (*Users_User_Groups)(nil), // 10: discourse.protobuf.Users.User.Groups + (*Users_User_GroupUsers)(nil), // 11: discourse.protobuf.Users.User.GroupUsers + (*Users_User_UserOption)(nil), // 12: discourse.protobuf.Users.User.UserOption + (*timestamppb.Timestamp)(nil), // 13: google.protobuf.Timestamp +} +var file_users_proto_depIdxs = []int32{ + 1, // 0: discourse.protobuf.Users.user_badges:type_name -> discourse.protobuf.Users.UserBadges + 2, // 1: discourse.protobuf.Users.badges:type_name -> discourse.protobuf.Users.Badges + 3, // 2: discourse.protobuf.Users.badge_types:type_name -> discourse.protobuf.Users.BadgeTypes + 4, // 3: discourse.protobuf.Users.users:type_name -> discourse.protobuf.Users.Users + 5, // 4: discourse.protobuf.Users.topics:type_name -> discourse.protobuf.Users.Topics + 6, // 5: discourse.protobuf.Users.user:type_name -> discourse.protobuf.Users.User + 13, // 6: discourse.protobuf.Users.UserBadges.granted_at:type_name -> google.protobuf.Timestamp + 13, // 7: discourse.protobuf.Users.UserBadges.created_at:type_name -> google.protobuf.Timestamp + 13, // 8: discourse.protobuf.Users.User.last_posted_at:type_name -> google.protobuf.Timestamp + 13, // 9: discourse.protobuf.Users.User.last_seen_at:type_name -> google.protobuf.Timestamp + 13, // 10: discourse.protobuf.Users.User.created_at:type_name -> google.protobuf.Timestamp + 7, // 11: discourse.protobuf.Users.User.featured_topic:type_name -> discourse.protobuf.Users.User.FeaturedTopic + 8, // 12: discourse.protobuf.Users.User.associated_accounts:type_name -> discourse.protobuf.Users.User.AssociatedAccounts + 9, // 13: discourse.protobuf.Users.User.user_auth_tokens:type_name -> discourse.protobuf.Users.User.UserAuthTokens + 10, // 14: discourse.protobuf.Users.User.groups:type_name -> discourse.protobuf.Users.User.Groups + 11, // 15: discourse.protobuf.Users.User.group_users:type_name -> discourse.protobuf.Users.User.GroupUsers + 12, // 16: discourse.protobuf.Users.User.user_option:type_name -> discourse.protobuf.Users.User.UserOption + 13, // 17: discourse.protobuf.Users.User.FeaturedTopic.last_posted_at:type_name -> google.protobuf.Timestamp + 13, // 18: discourse.protobuf.Users.User.FeaturedTopic.created_at:type_name -> google.protobuf.Timestamp + 13, // 19: discourse.protobuf.Users.User.FeaturedTopic.updated_at:type_name -> google.protobuf.Timestamp + 13, // 20: discourse.protobuf.Users.User.FeaturedTopic.bumped_at:type_name -> google.protobuf.Timestamp + 13, // 21: discourse.protobuf.Users.User.UserAuthTokens.created_at:type_name -> google.protobuf.Timestamp + 13, // 22: discourse.protobuf.Users.User.UserAuthTokens.seen_at:type_name -> google.protobuf.Timestamp + 23, // [23:23] is the sub-list for method output_type + 23, // [23:23] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name +} + +func init() { file_users_proto_init() } +func file_users_proto_init() { + if File_users_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_users_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_UserBadges); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_Badges); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_BadgeTypes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_Users); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_Topics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_User); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_User_FeaturedTopic); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_User_AssociatedAccounts); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_User_UserAuthTokens); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_User_Groups); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_User_GroupUsers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_users_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Users_User_UserOption); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_users_proto_rawDesc, + NumEnums: 0, + NumMessages: 13, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_users_proto_goTypes, + DependencyIndexes: file_users_proto_depIdxs, + MessageInfos: file_users_proto_msgTypes, + }.Build() + File_users_proto = out.File + file_users_proto_rawDesc = nil + file_users_proto_goTypes = nil + file_users_proto_depIdxs = nil +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..85d2f0f --- /dev/null +++ b/go.mod @@ -0,0 +1,8 @@ +module git.0cd.xyz/michael/discourse-protobuf + +go 1.15 + +require ( + github.com/golang/protobuf v1.4.3 + google.golang.org/protobuf v1.25.0 +) diff --git a/proto/categories.proto b/proto/categories.proto new file mode 100644 index 0000000..2b3e07d --- /dev/null +++ b/proto/categories.proto @@ -0,0 +1,49 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; + +message Categories { + message CategoryList { + bool can_create_category = 1; + bool can_create_topic = 2; + message Categories { + int32 id = 1; + string name = 2; + string color = 3; + string text_color = 4; + string slug = 5; + int32 topic_count = 6; + int32 post_count = 7; + int32 position = 8; + string description = 9; + string description_text = 10; + string description_excerpt = 11; + string topic_url = 12; + bool read_restricted = 13; + int32 permission = 14; + int32 notification_level = 15; + bool can_edit = 16; + string topic_template = 17; + bool has_children = 18; + string sort_order = 19; + bool show_subcategory_list = 20; + int32 num_featured_topics = 21; + string default_view = 22; + string subcategory_list_style = 23; + string default_top_period = 24; + string default_list_filter = 25; + int32 minimum_required_tags = 26; + bool navigate_to_first_post_after_read = 27; + int32 topics_day = 28; + int32 topics_week = 29; + int32 topics_month = 30; + int32 topics_year = 31; + int32 topics_all_time = 32; + repeated int32 subcategory_ids = 33; + } + repeated Categories categories = 3; + } + CategoryList category_list = 1; +} \ No newline at end of file diff --git a/proto/categorytopics.proto b/proto/categorytopics.proto new file mode 100644 index 0000000..9e35b2f --- /dev/null +++ b/proto/categorytopics.proto @@ -0,0 +1,66 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "google/protobuf/timestamp.proto"; + +message CategoryTopics { + message Users{ + int32 id = 1; + string username = 2; + string name = 3; + string avatar_template = 4; + } + repeated Users users = 1; + message TopicList { + bool can_create_topic = 1; + string draft_key = 2; + int32 draft_sequence = 3; + int32 per_page = 4; + repeated string top_tags = 5; + message Topics { + int32 id = 1; + string title = 2; + string fancy_title = 3; + string slug = 4; + int32 posts_count = 5; + int32 reply_count = 6; + int32 highest_post_number = 7; + string image_url = 8; + google.protobuf.Timestamp created_at = 9; + google.protobuf.Timestamp last_posted_at = 10; + bool bumped = 11; + google.protobuf.Timestamp bumped_at = 12; + string archetype = 13; + bool unseen = 14; + int32 last_read_post_number = 15; + int32 unread = 16; + int32 new_posts = 17; + bool pinned = 18; + bool visible = 19; + bool closed = 20; + bool archived = 21; + int32 notification_level = 22; + bool bookmarked = 23; + bool liked = 24; + repeated string tags = 25; + int32 views = 26; + int32 like_count = 27; + bool has_summary = 28; + string last_poste_username = 29; + int32 category_id = 30; + bool pinned_globally = 31; + bool has_accepted_answer = 32; + message Posters { + string extras = 1; + string description = 2; + int32 user_id = 3; + } + repeated Posters posters = 33; + } + repeated Topics topics = 6; + repeated int32 bookmarked_post_numbers = 7; + } + TopicList topic_list = 2; +} \ No newline at end of file diff --git a/proto/directory_items.proto b/proto/directory_items.proto new file mode 100644 index 0000000..10211a4 --- /dev/null +++ b/proto/directory_items.proto @@ -0,0 +1,36 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "google/protobuf/timestamp.proto"; + +message DirectoryItems { + message DirectoryItems { + int32 id = 1; + int32 time_read = 2; + int32 likes_received = 3; + int32 likes_given = 4; + int32 topics_entered = 5; + int32 topic_count = 6; + int32 post_count = 7; + int32 posts_read = 8; + int32 days_visited = 9; + message User { + int32 id = 1; + string username = 2; + string name = 3; + string avatar_template = 4; + string title = 5; + } + User user = 10; + } + repeated DirectoryItems directory_items = 1; + message Meta { + google.protobuf.Timestamp last_updated_at = 1; + int32 total_rows_directory_items = 2; + string load_more_directory_items = 3; + + } + Meta meta = 2; +} \ No newline at end of file diff --git a/proto/latest.proto b/proto/latest.proto new file mode 100644 index 0000000..e1f7607 --- /dev/null +++ b/proto/latest.proto @@ -0,0 +1,64 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "google/protobuf/timestamp.proto"; + +message Latest { + message Users { + int32 id = 1; + string username = 2; + string name = 3; + string avatar_template = 4; + } + repeated Users users = 1; + message TopicList { + bool can_create_topics = 1; + string more_topics_url = 2; + int32 per_page = 3; + repeated string top_tags = 4; + message Topics { + int32 id = 1; + string title = 2; + string slug = 3; + int32 posts_count = 4; + int32 reply_count = 5; + int32 highest_post_number = 6; + google.protobuf.Timestamp created_at = 7; + google.protobuf.Timestamp last_posted_at = 8; + bool bumped = 9; + google.protobuf.Timestamp bumped_at = 10; + string archetype = 11; + bool unseen = 12; + int32 last_read_post_number = 13; + int32 unread = 14; + int32 new_posts = 15; + bool pinned = 16; + bool visible = 17; + bool closed = 18; + bool archived = 19; + int32 notification_level = 20; + bool bookmarked = 21; + bool liked = 22; + repeated string tags = 23; + int32 views = 24; + int32 like_count = 25; + bool has_summary = 26; + string last_poster_username = 27; + int32 category_id = 28; + bool pinned_globally = 29; + repeated int32 bookmarked_post_numbers = 30; + bool has_accepted_answer = 31; + } + repeated Topics topics = 5; + message Posters { + string extras = 1; + string description = 2; + int32 user_id = 3; + int32 primary_group_id = 4; + } + repeated Posters posters = 6; + } + TopicList topic_list = 2; +} \ No newline at end of file diff --git a/proto/posts.proto b/proto/posts.proto new file mode 100644 index 0000000..b504dff --- /dev/null +++ b/proto/posts.proto @@ -0,0 +1,63 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "google/protobuf/timestamp.proto"; + +message PostsRequest { + string title = 1; + int32 topic_id = 2; + string raw = 3; + int32 category = 4; + string target_recipients = 5; + string archetype = 6; + google.protobuf.Timestamp created_at = 7; +} + +message PostsResponse { + int32 id = 1; + string name = 2; + string avatar_template = 3; + google.protobuf.Timestamp created_at = 4; + string cooked = 5; + int32 post_number = 6; + int32 post_type = 7; + string updated_at = 8; + int32 reply_count = 9; + int32 reply_to_post_number = 10; + int32 quote_count = 11; + google.protobuf.Timestamp avg_time = 12; + int32 incoming_link_count = 13; + int32 reads = 14; + double score = 15; + bool yours = 16; + int32 topic_id = 17; + string topic_slug = 18; + string display_username = 19; + int32 version = 20; + bool can_edit = 21; + bool can_delete = 22; + bool can_recover = 23; + bool can_wiki = 24; + string user_title = 25; + message ActionsSummary { + int32 id = 1; + bool hidden = 2; + bool can_act = 3; + } + repeated ActionsSummary actions_summary = 26; + bool moderator = 27; + bool admin = 28; + bool staff = 29; + int32 user_id = 30; + int32 draft_sequence = 31; + bool hidden = 32; + int32 hidden_reason_id = 33; + int32 trust_level = 34; + google.protobuf.Timestamp deleted_at = 35; + bool user_deleted = 36; + string edit_reason = 37; + bool can_view_edit_history = 38; + bool wiki = 39; +} \ No newline at end of file diff --git a/proto/site.proto b/proto/site.proto new file mode 100644 index 0000000..bc960fb --- /dev/null +++ b/proto/site.proto @@ -0,0 +1,144 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; + +message Site { + string default_archetype = 1; + message NotificationTypes { + int32 mentioned = 1; + int32 replied = 2; + int32 qouted = 3; + int32 edited = 4; + int32 liked = 5; + int32 private_message = 6; + int32 invited_to_private_message = 7; + int32 invitee_accepted = 8; + int32 posted = 9; + int32 moved_post = 10; + int32 linked = 11; + int32 granted_badge = 12; + int32 invited_to_topic = 13; + int32 custom = 14; + int32 group_mentioned = 15; + int32 group_message_summary = 16; + int32 watching_first_post = 17; + int32 topic_reminder = 18; + int32 liked_consolidated = 19; + int32 post_approved = 20; + int32 code_review_commit_approved = 21; + int32 membership_request_accepted = 22; + int32 membership_request_consolidated = 23; + int32 bookmark_reminder = 24; + int32 reaction = 25; + int32 votes_released = 26; + int32 event_reminder = 27; + int32 event_invitation = 28; + } + NotificationTypes notification_types = 2; + message PostTypes { + int32 regular = 1; + int32 moderator_action = 2; + int32 small_action = 3; + int32 whisper = 4; + } + PostTypes post_types = 3; + message Groups { + int32 id = 1; + string name = 2; + } + repeated Groups groups = 4; + repeated string filter = 5; + repeated string periods = 6; + repeated string top_menu_items = 7; + repeated string anonymous_top_menu_items = 8; + int32 uncategorized_category_id = 9; + int32 user_field_max_length = 10; + message PostActionTypes { + int32 id = 1; + string name_key = 2; + string name = 3; + string description = 4; + string short_description = 5; + string long_form = 6; + bool is_flag = 7; + bool is_custom_flag = 8; + } + repeated PostActionTypes post_action_types = 11; + message TopicFlagTypes { + int32 id = 1; + string name_key = 2; + string name = 3; + string description = 4; + string short_description = 5; + string long_form = 6; + bool is_flag = 7; + bool is_custom_flag = 8; + } + repeated TopicFlagTypes topic_flag_types = 12; + bool can_create_tag = 13; + bool can_tag_topics = 14; + bool can_tag_pms = 15; + string tags_filter_regexp = 16; + repeated string top_tags = 17; + repeated int32 topic_featured_link_allowed_category_ids = 18; + message UserThemes { + int32 theme_id = 1; + string name = 2; + bool default = 3; + } + repeated UserThemes user_themes = 19; + message Categories { + int32 id = 1; + string name = 2; + string color = 3; + string text_color = 4; + string slug = 5; + int32 topic_count = 6; + int32 post_count = 7; + int32 position = 8; + string description = 9; + string description_text = 10; + string description_excerpt = 11; + string topic_url = 12; + bool read_restricted = 13; + int32 permission = 14; + int32 notification_level = 15; + bool can_edit = 16; + string topic_template = 17; + bool has_children = 18; + string sort_order = 19; + bool show_subcategory_list = 20; + int32 num_featured_topics = 21; + string default_view = 22; + string subcategory_list_style = 23; + string default_top_period = 24; + string default_list_filter = 25; + int32 minimum_required_tags = 26; + bool navigate_to_first_post_after_read = 27; + bool allowed_global_tags = 28; + int32 min_tags_from_required_group = 29; + int32 parent_category_id = 30; + } + repeated Categories categories = 20; + message TrustLevels { + int32 id = 1; + string name = 2; + } + repeated TrustLevels trust_levels = 21; + message Archetypes { + string id = 1; + string name = 2; + } + repeated Archetypes archetypes = 22; + message AuthProviders { + string name = 1; + int32 frame_width = 2; + int32 frame_height = 3; + bool can_connect = 4; + bool can_revoke = 5; + string icon = 6; + } + repeated AuthProviders auth_providers = 23; +} \ No newline at end of file diff --git a/proto/tag.proto b/proto/tag.proto new file mode 100644 index 0000000..ee44680 --- /dev/null +++ b/proto/tag.proto @@ -0,0 +1,72 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "google/protobuf/timestamp.proto"; + +message Tag { + message Users { + int32 id = 1; + string name = 2; + string avatar_template = 3; + } + repeated Users users = 1; + message TopicList { + bool can_create_topic = 1; + string draft_key = 2; + int32 draft_sequance = 3; + int32 per_page = 4; + repeated string top_tags = 5; + message Tags { + int32 id = 1; + string name = 2; + int32 topic_count = 3; + bool staff = 4; + + } + repeated Tags tags = 6; + message Topics { + int32 id = 1; + string title = 2; + string fancy_title = 3; + string slug = 4; + int32 posts_count = 5; + int32 reply_count = 6; + int32 highest_post_number = 7; + string image_url = 8; + google.protobuf.Timestamp created_at = 9; + google.protobuf.Timestamp last_posted_at = 10; + bool bumped = 11; + google.protobuf.Timestamp bumped_at = 12; + string archetype = 13; + bool unseen = 14; + int32 last_read_post_number = 15; + int32 unread = 16; + int32 new_posts = 17; + bool pinned = 18; + bool visible = 19; + bool closed = 20; + bool archived = 21; + int32 notification_level = 22; + bool bookmarked = 23; + bool liked = 24; + repeated string tags = 25; + int32 views = 26; + int32 like_count = 27; + bool has_summary = 28; + string last_poster_username = 29; + int32 category_id = 30; + bool pinned_globally = 31; + bool has_accepted_answer = 32; + message Posters { + string extras = 1; + string description = 2; + int32 user_id = 3; + } + repeated Posters posters = 33; + } + repeated Topics topics = 7; + } + TopicList topic_list = 2; +} \ No newline at end of file diff --git a/proto/tags.proto b/proto/tags.proto new file mode 100644 index 0000000..4cdb823 --- /dev/null +++ b/proto/tags.proto @@ -0,0 +1,15 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; + +message Tags { + message Tags { + string id = 1; + string text = 2; + int32 count = 3; + int32 pm_count = 4; + } + repeated Tags tags = 1; +} diff --git a/proto/tagtopics.proto b/proto/tagtopics.proto new file mode 100644 index 0000000..4d2ad15 --- /dev/null +++ b/proto/tagtopics.proto @@ -0,0 +1,10 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "topic.proto"; + +message TopicList { + repeated Topic topic = 1; +} \ No newline at end of file diff --git a/proto/topic.proto b/proto/topic.proto new file mode 100644 index 0000000..2645a45 --- /dev/null +++ b/proto/topic.proto @@ -0,0 +1,36 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "google/protobuf/timestamp.proto"; + +message Topic { + message PostStream { + message Posts { + string cooked = 1; + int32 post_number = 2; + bool admin = 3; + bool staff = 4; + } + repeated Posts posts = 1; + } + PostStream post_stream = 1; + int32 id = 2; + repeated string tags = 3; + string title = 4; + int32 posts_count = 5; + google.protobuf.Timestamp created_at = 6; + string slug = 7; + int32 like_count = 8; + int32 views = 9; + message Details { + message CreatedBy { + string username = 1; + string name = 2; + string avatar_template = 3; + } + CreatedBy created_by = 1; + } + Details details = 10; +} \ No newline at end of file diff --git a/proto/users.proto b/proto/users.proto new file mode 100644 index 0000000..8e1c365 --- /dev/null +++ b/proto/users.proto @@ -0,0 +1,257 @@ +syntax="proto3"; + +package discourse.protobuf; + +option go_package = "git.0cd.xyz/michael/discourse-protobuf/discoursepb"; +import "google/protobuf/timestamp.proto"; + +message Users { + message UserBadges { + int32 id = 1; + google.protobuf.Timestamp granted_at = 2; + google.protobuf.Timestamp created_at = 3; + int32 count = 4; + int32 badge_id = 5; + int32 user_id = 6; + int32 grated_by_id = 7; + int32 post_id = 8; + int32 post_number = 9; + int32 topic_id = 10; + } + repeated UserBadges user_badges = 1; + message Badges { + int32 id = 1; + string name = 2; + string description = 3; + int32 grant_count = 4; + bool allow_title = 5; + bool multiple_grant = 6; + string icon = 7; + string image = 8; + bool listable = 9; + bool enabled = 10; + int32 badge_grouping_id = 11; + bool system = 12; + string slug = 13; + bool manually_grantable = 14; + int32 badge_type_id = 15; + } + repeated Badges badges = 2; + message BadgeTypes { + int32 id = 1; + string name = 2; + int32 sort_order = 3; + } + repeated BadgeTypes badge_types = 3; + message Users { + int32 id = 1; + string username = 2; + string name = 3; + string avatar_template = 4; + bool moderator = 5; + bool admin = 6; + } + repeated Users users = 4; + message Topics { + int32 id = 1; + string title = 2; + string fancy_title = 3; + string slug = 4; + int32 posts_count = 6; + } + repeated Topics topics = 5; + message User { + int32 id = 1; + string username = 2; + string name = 3; + string avatar_template = 4; + string email = 6; + google.protobuf.Timestamp last_posted_at = 7; + google.protobuf.Timestamp last_seen_at = 8; + google.protobuf.Timestamp created_at = 9; + bool ignored = 10; + bool muted = 11; + bool can_ignore_user = 12; + bool can_mute_user = 13; + bool can_send_private_messages = 14; + bool can_send_private_messages_to_user = 15; + int32 trust_level = 16; + bool moderator = 17; + bool admin = 18; + string title = 19; + int32 badge_count = 20; + int32 time_read = 21; + int32 recent_time_read = 22; + message FeaturedTopic { + int32 id = 1; + string title = 2; + google.protobuf.Timestamp last_posted_at = 3; + google.protobuf.Timestamp created_at = 4; + google.protobuf.Timestamp updated_at = 5; + int32 views = 6; + int32 posts_count = 7; + int32 user_id = 8; + int32 last_post_user_id = 9; + int32 reply_count = 10; + int32 highest_post_number = 11; + int32 like_count = 12; + int32 incoming_link_count = 13; + int32 category_id = 14; + bool visible = 15; + int32 moderator_posts_count = 16; + bool closed = 17; + bool archived = 18; + google.protobuf.Timestamp bumped_at = 19; + bool has_summary = 20; + string archetype = 21; + int32 notify_moderators_count = 22; + int32 spam_count = 23; + double score = 24; + double percent_rank = 26; + string slug = 27; + int32 participant_count = 28; + int32 word_count = 29; + string excerpt = 30; + bool pinned_globally = 31; + string fancy_title = 32; + int32 highest_staff_post_number = 33; + double reviewable_score = 34; + int32 image_upload_id = 35; + } + FeaturedTopic featured_topic = 23; + string website = 24; + string website_name = 25; + bool staged = 26; + bool can_edit = 27; + bool can_edit_username = 28; + bool can_edit_email = 29; + bool can_edit_name = 30; + int32 uploaded_avatar_id = 31; + bool has_title_badges = 32; + int32 pending_count = 33; + int32 profile_view_count = 34; + bool secondary_factor_enabled = 35; + bool secondary_factor_backup_enabled = 36; + int32 secondary_factor_remaining_backup_codes = 37; + message AssociatedAccounts { + string name = 1; + string description =2; + } + repeated AssociatedAccounts associated_accounts = 38; + bool can_upload_profile_header = 39; + bool can_upload_user_card_background = 40; + int32 post_count = 41; + bool can_be_deleted = 42; + bool can_delete_all_posts = 43; + string locale = 44; + repeated int32 muted_category_ids = 45; + repeated int32 regular_category_ids = 46; + repeated string watched_tags = 47; + repeated string watching_first_post_tags = 48; + repeated string tracked_tags = 49; + repeated string muted_tags = 50; + repeated int32 tracked_category_ids = 51; + repeated int32 watched_category_ids = 52; + repeated int32 watched_first_post_category_ids = 53; + int32 system_avatar_upload_id = 54; + string system_avatar_template = 55; + int32 custom_avatar_upload_id = 56; + string custom_avatar_template = 57; + repeated string muted_usernames = 58; + repeated string ignored_usernames = 59; + repeated string allowed_pm_usernames = 60; + int32 mailing_list_posts_per_day = 61; + bool can_change_bio = 62; + bool can_change_website = 63; + message UserAuthTokens { + int32 id = 1; + string client_ip = 2; + string location = 3; + string browser = 4; + string device = 5; + string os = 6; + string icon = 7; + google.protobuf.Timestamp created_at = 8; + google.protobuf.Timestamp seen_at = 9; + bool is_active = 10; + } + repeated UserAuthTokens user_auth_tokens = 64; + repeated int32 featured_user_badge_ids = 65; + message Groups { + int32 id = 1; + bool automatic = 2; + string name = 3; + string display_name = 4; + int32 user_count = 5; + int32 mentionable_level = 6; + int32 messageable_level = 7; + int32 visibility_level = 8; + bool primary_group = 9; + bool has_messages = 10; + string bio_raw = 11; + bool public_admission = 12; + bool public_exit = 13; + bool allow_membership_requests = 14; + string full_name = 15; + int32 default_notification_level = 16; + string membership_request_template = 17; + int32 members_visibility_level = 18; + bool can_see_members = 19; + bool can_admin_group = 20; + bool publish_read_state = 21; + string imap_mailbox_name = 22; + repeated int32 watching_category_ids = 23; + repeated int32 tracking_category_ids = 24; + repeated int32 watching_first_post_category_ids = 25; + repeated int32 regular_category_ids = 26; + repeated int32 muted_category_ids = 27; + repeated string watching_tags = 28; + repeated string watching_first_post_tags = 29; + repeated string trackings_tags = 30; + repeated string regular_tags = 31; + repeated string muted_tags = 32; + } + repeated Groups groups = 66; + message GroupUsers { + int32 group_id = 1; + int32 user_id = 2; + int32 notification_level = 3; + bool owner = 4; + } + repeated GroupUsers group_users = 67; + message UserOption { + int32 user_id = 1; + bool mailing_list_mode = 2; + int32 mailing_list_mode_frequency = 3; + bool email_digests = 4; + int32 email_level = 5; + int32 email_messages_level = 6; + bool external_links_is_new_tab = 7; + int32 dark_scheme_id = 8; + bool dynamic_favicon = 9; + bool enable_quoting = 10; + bool enable_defer = 11; + int32 digest_after_minutes = 12; + bool automatically_unpin_topics = 13; + int32 auto_track_topics_afters_msecs = 14; + int32 notification_level_when_replying = 15; + int32 new_topic_duration_minutes = 16; + int32 email_previous_replies = 17; + bool email_in_reply_to = 18; + int32 like_notification_frequency = 19; + bool include_tl0_in_digests = 20; + repeated int32 theme_ids = 21; + int32 theme_key_seq = 22; + bool allow_private_messages = 23; + bool enable_allowed_pm_users = 24; + bool hide_profile_and_presense = 25; + string text_size = 26; + int32 text_size_seq = 27; + string title_count_mode = 28; + string timezone = 29; + bool skip_new_user_tips = 30; + } + UserOption user_option = 68; + } + User user = 6; +} \ No newline at end of file