waku2: static shards (#3944)
- use protected topics for communities - associate chats to pubsub topics and populate these depending if the chat belongs to a community or not - mailserver functions should be aware of pubsub topics - generate private key for pubsub topic protection when creating a community - add shard cluster and index to communities - setup shards for existing communities - distribute pubsubtopic password - fix: do not send the requests to join and cancel in the protected topic - fix: undefined shard values for backward compatibility - refactor: use shard message in protobuffers
This commit is contained in:
parent
2a5327d8d2
commit
ba5ed725ce
|
@ -30,7 +30,7 @@ linters-settings:
|
||||||
gofmt:
|
gofmt:
|
||||||
simplify: true
|
simplify: true
|
||||||
goimports:
|
goimports:
|
||||||
local-prefixes: github.com/ethereum/go-ethereum,github.com/status-im/status-go
|
local-prefixes: github.com/ethereum/go-ethereum,github.com/status-im/status-go,github.com/waku-org/go-waku
|
||||||
maligned:
|
maligned:
|
||||||
suggest-new: true
|
suggest-new: true
|
||||||
dupl:
|
dupl:
|
||||||
|
|
|
@ -47,6 +47,8 @@ var (
|
||||||
seedPhrase = flag.String("seed-phrase", "", "Seed phrase")
|
seedPhrase = flag.String("seed-phrase", "", "Seed phrase")
|
||||||
version = flag.Bool("version", false, "Print version and dump configuration")
|
version = flag.Bool("version", false, "Print version and dump configuration")
|
||||||
communityID = flag.String("community-id", "", "The id of the community")
|
communityID = flag.String("community-id", "", "The id of the community")
|
||||||
|
shardCluster = flag.Int("shard-cluster", common.UndefinedShardValue, "The shard cluster in which the of the community is published")
|
||||||
|
shardIndex = flag.Int("shard-index", common.UndefinedShardValue, "The shard index in which the community is published")
|
||||||
chatID = flag.String("chat-id", "", "The id of the chat")
|
chatID = flag.String("chat-id", "", "The id of the chat")
|
||||||
|
|
||||||
dataDir = flag.String("dir", getDefaultDataDir(), "Directory used by node to store data")
|
dataDir = flag.String("dir", getDefaultDataDir(), "Directory used by node to store data")
|
||||||
|
@ -145,7 +147,15 @@ func main() {
|
||||||
|
|
||||||
messenger := wakuextservice.Messenger()
|
messenger := wakuextservice.Messenger()
|
||||||
|
|
||||||
community, err := messenger.RequestCommunityInfoFromMailserver(*communityID, true)
|
var shard *common.Shard = nil
|
||||||
|
if shardCluster != nil && shardIndex != nil && *shardCluster != common.UndefinedShardValue && *shardIndex != common.UndefinedShardValue {
|
||||||
|
shard = &common.Shard{
|
||||||
|
Cluster: uint16(*shardCluster),
|
||||||
|
Index: uint16(*shardIndex),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
community, err := messenger.RequestCommunityInfoFromMailserver(*communityID, shard, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
||||||
logger.Error("community error", "error", err)
|
logger.Error("community error", "error", err)
|
||||||
|
|
|
@ -69,7 +69,13 @@ func (w *gethWakuWrapper) SubscribeToPubsubTopic(topic string, optPublicKey *ecd
|
||||||
return errors.New("not available in WakuV1")
|
return errors.New("not available in WakuV1")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *gethWakuWrapper) RetrievePubsubTopicKey(topic string) (*ecdsa.PrivateKey, error) {
|
||||||
|
// not available in WakuV1
|
||||||
|
return nil, errors.New("not available in WakuV1")
|
||||||
|
}
|
||||||
|
|
||||||
func (w *gethWakuWrapper) StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error {
|
func (w *gethWakuWrapper) StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error {
|
||||||
|
// not available in WakuV1
|
||||||
return errors.New("not available in WakuV1")
|
return errors.New("not available in WakuV1")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/libp2p/go-libp2p/core/peer"
|
"github.com/libp2p/go-libp2p/core/peer"
|
||||||
|
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/store"
|
"github.com/waku-org/go-waku/waku/v2/protocol/store"
|
||||||
storepb "github.com/waku-org/go-waku/waku/v2/protocol/store/pb"
|
storepb "github.com/waku-org/go-waku/waku/v2/protocol/store/pb"
|
||||||
|
|
||||||
|
@ -235,6 +236,10 @@ func (w *gethWakuV2Wrapper) SubscribeToPubsubTopic(topic string, optPublicKey *e
|
||||||
return w.waku.SubscribeToPubsubTopic(topic, optPublicKey)
|
return w.waku.SubscribeToPubsubTopic(topic, optPublicKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *gethWakuV2Wrapper) RetrievePubsubTopicKey(topic string) (*ecdsa.PrivateKey, error) {
|
||||||
|
return w.waku.RetrievePubsubTopicKey(topic)
|
||||||
|
}
|
||||||
|
|
||||||
func (w *gethWakuV2Wrapper) StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error {
|
func (w *gethWakuV2Wrapper) StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error {
|
||||||
return w.waku.StorePubsubTopicKey(topic, privKey)
|
return w.waku.StorePubsubTopicKey(topic, privKey)
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,6 +92,8 @@ type Waku interface {
|
||||||
|
|
||||||
StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error
|
StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error
|
||||||
|
|
||||||
|
RetrievePubsubTopicKey(topic string) (*ecdsa.PrivateKey, error)
|
||||||
|
|
||||||
AddStorePeer(address string) (peer.ID, error)
|
AddStorePeer(address string) (peer.ID, error)
|
||||||
|
|
||||||
AddRelayPeer(address string) (peer.ID, error)
|
AddRelayPeer(address string) (peer.ID, error)
|
||||||
|
|
|
@ -13,6 +13,8 @@ import (
|
||||||
datasyncproto "github.com/vacp2p/mvds/protobuf"
|
datasyncproto "github.com/vacp2p/mvds/protobuf"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
"github.com/status-im/status-go/protocol/datasync"
|
"github.com/status-im/status-go/protocol/datasync"
|
||||||
|
@ -187,6 +189,39 @@ func (s *MessageSender) SendCommunityMessage(
|
||||||
return s.sendCommunity(ctx, &rawMessage)
|
return s.sendCommunity(ctx, &rawMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendPubsubTopicKey sends the protected topic key for a community to a list of recipients
|
||||||
|
func (s *MessageSender) SendPubsubTopicKey(
|
||||||
|
ctx context.Context,
|
||||||
|
rawMessage *RawMessage,
|
||||||
|
) ([]byte, error) {
|
||||||
|
s.logger.Debug(
|
||||||
|
"sending the protected topic key for a community",
|
||||||
|
zap.String("communityId", types.EncodeHex(rawMessage.CommunityID)),
|
||||||
|
zap.String("site", "SendPubsubTopicKey"),
|
||||||
|
)
|
||||||
|
rawMessage.Sender = s.identity
|
||||||
|
messageID, err := s.getMessageID(rawMessage)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
rawMessage.ID = types.EncodeHex(messageID)
|
||||||
|
|
||||||
|
// Notify before dispatching, otherwise the dispatch subscription might happen
|
||||||
|
// earlier than the scheduled
|
||||||
|
s.notifyOnScheduledMessage(nil, rawMessage)
|
||||||
|
|
||||||
|
// Send to each recipients
|
||||||
|
for _, recipient := range rawMessage.Recipients {
|
||||||
|
_, err = s.sendPrivate(ctx, recipient, rawMessage)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "failed to send message")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return messageID, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// SendGroup takes encoded data, encrypts it and sends through the wire,
|
// SendGroup takes encoded data, encrypts it and sends through the wire,
|
||||||
// always return the messageID
|
// always return the messageID
|
||||||
func (s *MessageSender) SendGroup(
|
func (s *MessageSender) SendGroup(
|
||||||
|
@ -364,6 +399,7 @@ func (s *MessageSender) sendPrivate(
|
||||||
|
|
||||||
messageID := v1protocol.MessageID(&rawMessage.Sender.PublicKey, wrappedMessage)
|
messageID := v1protocol.MessageID(&rawMessage.Sender.PublicKey, wrappedMessage)
|
||||||
rawMessage.ID = types.EncodeHex(messageID)
|
rawMessage.ID = types.EncodeHex(messageID)
|
||||||
|
rawMessage.PubsubTopic = relay.DefaultWakuTopic // TODO: determine which pubsub topic should be used for 1:1 messages
|
||||||
|
|
||||||
if rawMessage.BeforeDispatch != nil {
|
if rawMessage.BeforeDispatch != nil {
|
||||||
if err := rawMessage.BeforeDispatch(rawMessage); err != nil {
|
if err := rawMessage.BeforeDispatch(rawMessage); err != nil {
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
package common
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
|
"github.com/status-im/status-go/protocol/transport"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Shard struct {
|
||||||
|
Cluster uint16 `json:"cluster"`
|
||||||
|
Index uint16 `json:"index"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func ShardFromProtobuff(p *protobuf.Shard) *Shard {
|
||||||
|
if p == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Shard{
|
||||||
|
Cluster: uint16(p.Cluster),
|
||||||
|
Index: uint16(p.Index),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Shard) TransportShard() *transport.Shard {
|
||||||
|
if s == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &transport.Shard{
|
||||||
|
Cluster: s.Cluster,
|
||||||
|
Index: s.Index,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Shard) Protobuffer() *protobuf.Shard {
|
||||||
|
if s == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &protobuf.Shard{
|
||||||
|
Cluster: int32(s.Cluster),
|
||||||
|
Index: int32(s.Index),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const MainStatusShard = 16
|
||||||
|
const UndefinedShardValue = 0
|
|
@ -10,9 +10,10 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
"github.com/status-im/status-go/images"
|
"github.com/status-im/status-go/images"
|
||||||
|
@ -43,6 +44,7 @@ type Config struct {
|
||||||
MemberIdentity *ecdsa.PublicKey
|
MemberIdentity *ecdsa.PublicKey
|
||||||
SyncedAt uint64
|
SyncedAt uint64
|
||||||
EventsData *EventsData
|
EventsData *EventsData
|
||||||
|
Shard *common.Shard
|
||||||
}
|
}
|
||||||
|
|
||||||
type EventsData struct {
|
type EventsData struct {
|
||||||
|
@ -139,13 +141,18 @@ func (o *Community) MarshalPublicAPIJSON() ([]byte, error) {
|
||||||
TokenPermissions map[string]*CommunityTokenPermission `json:"tokenPermissions"`
|
TokenPermissions map[string]*CommunityTokenPermission `json:"tokenPermissions"`
|
||||||
CommunityTokensMetadata []*protobuf.CommunityTokenMetadata `json:"communityTokensMetadata"`
|
CommunityTokensMetadata []*protobuf.CommunityTokenMetadata `json:"communityTokensMetadata"`
|
||||||
ActiveMembersCount uint64 `json:"activeMembersCount"`
|
ActiveMembersCount uint64 `json:"activeMembersCount"`
|
||||||
|
PubsubTopic string `json:"pubsubTopic"`
|
||||||
|
Shard *common.Shard `json:"shard"`
|
||||||
}{
|
}{
|
||||||
ID: o.ID(),
|
ID: o.ID(),
|
||||||
Verified: o.config.Verified,
|
Verified: o.config.Verified,
|
||||||
Chats: make(map[string]CommunityChat),
|
Chats: make(map[string]CommunityChat),
|
||||||
Categories: make(map[string]CommunityCategory),
|
Categories: make(map[string]CommunityCategory),
|
||||||
Tags: o.Tags(),
|
Tags: o.Tags(),
|
||||||
|
PubsubTopic: o.PubsubTopic(),
|
||||||
|
Shard: o.Shard(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if o.config.CommunityDescription != nil {
|
if o.config.CommunityDescription != nil {
|
||||||
for id, c := range o.config.CommunityDescription.Categories {
|
for id, c := range o.config.CommunityDescription.Categories {
|
||||||
category := CommunityCategory{
|
category := CommunityCategory{
|
||||||
|
@ -178,7 +185,12 @@ func (o *Community) MarshalPublicAPIJSON() ([]byte, error) {
|
||||||
|
|
||||||
communityItem.TokenPermissions = o.tokenPermissions()
|
communityItem.TokenPermissions = o.tokenPermissions()
|
||||||
communityItem.MembersCount = len(o.config.CommunityDescription.Members)
|
communityItem.MembersCount = len(o.config.CommunityDescription.Members)
|
||||||
|
|
||||||
communityItem.Link = fmt.Sprintf("https://join.status.im/c/0x%x", o.ID())
|
communityItem.Link = fmt.Sprintf("https://join.status.im/c/0x%x", o.ID())
|
||||||
|
if o.Shard() != nil {
|
||||||
|
communityItem.Link = fmt.Sprintf("%s/%d/%d", communityItem.Link, o.Shard().Cluster, o.Shard().Index)
|
||||||
|
}
|
||||||
|
|
||||||
communityItem.IntroMessage = o.config.CommunityDescription.IntroMessage
|
communityItem.IntroMessage = o.config.CommunityDescription.IntroMessage
|
||||||
communityItem.OutroMessage = o.config.CommunityDescription.OutroMessage
|
communityItem.OutroMessage = o.config.CommunityDescription.OutroMessage
|
||||||
communityItem.CommunityTokensMetadata = o.config.CommunityDescription.CommunityTokensMetadata
|
communityItem.CommunityTokensMetadata = o.config.CommunityDescription.CommunityTokensMetadata
|
||||||
|
@ -245,6 +257,8 @@ func (o *Community) MarshalJSON() ([]byte, error) {
|
||||||
TokenPermissions map[string]*CommunityTokenPermission `json:"tokenPermissions"`
|
TokenPermissions map[string]*CommunityTokenPermission `json:"tokenPermissions"`
|
||||||
CommunityTokensMetadata []*protobuf.CommunityTokenMetadata `json:"communityTokensMetadata"`
|
CommunityTokensMetadata []*protobuf.CommunityTokenMetadata `json:"communityTokensMetadata"`
|
||||||
ActiveMembersCount uint64 `json:"activeMembersCount"`
|
ActiveMembersCount uint64 `json:"activeMembersCount"`
|
||||||
|
PubsubTopic string `json:"pubsubTopic"`
|
||||||
|
Shard *common.Shard `json:"shard"`
|
||||||
}{
|
}{
|
||||||
ID: o.ID(),
|
ID: o.ID(),
|
||||||
MemberRole: o.MemberRole(o.MemberIdentity()),
|
MemberRole: o.MemberRole(o.MemberIdentity()),
|
||||||
|
@ -264,6 +278,8 @@ func (o *Community) MarshalJSON() ([]byte, error) {
|
||||||
MuteTill: o.config.MuteTill,
|
MuteTill: o.config.MuteTill,
|
||||||
Tags: o.Tags(),
|
Tags: o.Tags(),
|
||||||
Encrypted: o.Encrypted(),
|
Encrypted: o.Encrypted(),
|
||||||
|
PubsubTopic: o.PubsubTopic(),
|
||||||
|
Shard: o.Shard(),
|
||||||
}
|
}
|
||||||
if o.config.CommunityDescription != nil {
|
if o.config.CommunityDescription != nil {
|
||||||
for id, c := range o.config.CommunityDescription.Categories {
|
for id, c := range o.config.CommunityDescription.Categories {
|
||||||
|
@ -358,6 +374,14 @@ func (o *Community) DescriptionText() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *Community) Shard() *common.Shard {
|
||||||
|
if o != nil && o.config != nil {
|
||||||
|
return o.config.Shard
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (o *Community) IntroMessage() string {
|
func (o *Community) IntroMessage() string {
|
||||||
if o != nil &&
|
if o != nil &&
|
||||||
o.config != nil &&
|
o.config != nil &&
|
||||||
|
@ -1230,7 +1254,7 @@ func (o *Community) MemberUpdateChannelID() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) PubsubTopic() string {
|
func (o *Community) PubsubTopic() string {
|
||||||
return transport.GetPubsubTopic(o.ID())
|
return transport.GetPubsubTopic(o.Shard().TransportShard())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) DefaultFilters() []transport.FiltersToInitialize {
|
func (o *Community) DefaultFilters() []transport.FiltersToInitialize {
|
||||||
|
@ -1243,7 +1267,8 @@ func (o *Community) DefaultFilters() []transport.FiltersToInitialize {
|
||||||
communityPubsubTopic := o.PubsubTopic()
|
communityPubsubTopic := o.PubsubTopic()
|
||||||
|
|
||||||
return []transport.FiltersToInitialize{
|
return []transport.FiltersToInitialize{
|
||||||
{ChatID: cID, PubsubTopic: relay.DefaultWakuTopic}, // TODO: verify if this goes into default topic
|
{ChatID: cID, PubsubTopic: communityPubsubTopic},
|
||||||
|
{ChatID: uncompressedPubKey, PubsubTopic: relay.DefaultWakuTopic}, // TODO: messages that are not protected are sent in default pubsub topic for now
|
||||||
{ChatID: uncompressedPubKey, PubsubTopic: communityPubsubTopic},
|
{ChatID: uncompressedPubKey, PubsubTopic: communityPubsubTopic},
|
||||||
{ChatID: updatesChannelID, PubsubTopic: communityPubsubTopic},
|
{ChatID: updatesChannelID, PubsubTopic: communityPubsubTopic},
|
||||||
{ChatID: mlChannelID, PubsubTopic: communityPubsubTopic},
|
{ChatID: mlChannelID, PubsubTopic: communityPubsubTopic},
|
||||||
|
|
|
@ -21,6 +21,8 @@ import (
|
||||||
"github.com/anacrolix/torrent/metainfo"
|
"github.com/anacrolix/torrent/metainfo"
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
@ -511,11 +513,17 @@ func (m *Manager) All() ([]*Community, error) {
|
||||||
return communities, nil
|
return communities, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CommunityShard struct {
|
||||||
|
CommunityID string `json:"communityID"`
|
||||||
|
Shard *common.Shard `json:"shard"`
|
||||||
|
}
|
||||||
|
|
||||||
type KnownCommunitiesResponse struct {
|
type KnownCommunitiesResponse struct {
|
||||||
ContractCommunities []string `json:"contractCommunities"`
|
ContractCommunities []string `json:"contractCommunities"` // TODO: use CommunityShard
|
||||||
ContractFeaturedCommunities []string `json:"contractFeaturedCommunities"`
|
ContractFeaturedCommunities []string `json:"contractFeaturedCommunities"` // TODO: use CommunityShard
|
||||||
Descriptions map[string]*Community `json:"communities"`
|
Descriptions map[string]*Community `json:"communities"`
|
||||||
UnknownCommunities []string `json:"unknownCommunities"`
|
UnknownCommunities []string `json:"unknownCommunities"` // TODO: use CommunityShard
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) GetStoredDescriptionForCommunities(communityIDs []types.HexBytes) (response *KnownCommunitiesResponse, err error) {
|
func (m *Manager) GetStoredDescriptionForCommunities(communityIDs []types.HexBytes) (response *KnownCommunitiesResponse, err error) {
|
||||||
|
@ -531,12 +539,20 @@ func (m *Manager) GetStoredDescriptionForCommunities(communityIDs []types.HexByt
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
response.ContractCommunities = append(response.ContractCommunities, communityID)
|
// TODO: use CommunityShard instead of appending the communityID
|
||||||
|
|
||||||
|
response.ContractCommunities = append(response.ContractCommunities, communityID) // , CommunityShard{
|
||||||
|
// CommunityID: communityID,
|
||||||
|
// Shard: community.Shard(),
|
||||||
|
// }
|
||||||
|
|
||||||
if community != nil {
|
if community != nil {
|
||||||
response.Descriptions[community.IDString()] = community
|
response.Descriptions[community.IDString()] = community
|
||||||
} else {
|
} else {
|
||||||
response.UnknownCommunities = append(response.UnknownCommunities, communityID)
|
response.UnknownCommunities = append(response.UnknownCommunities, communityID) // CommunityShard{
|
||||||
|
// CommunityID: communityID,
|
||||||
|
// Shard: community.Shard(),
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -653,6 +669,7 @@ func (m *Manager) CreateCommunity(request *requests.CreateCommunity, publish boo
|
||||||
Joined: true,
|
Joined: true,
|
||||||
MemberIdentity: &m.identity.PublicKey,
|
MemberIdentity: &m.identity.PublicKey,
|
||||||
CommunityDescription: description,
|
CommunityDescription: description,
|
||||||
|
Shard: nil,
|
||||||
}
|
}
|
||||||
community, err := New(config, m.timesource)
|
community, err := New(config, m.timesource)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -931,6 +948,34 @@ func (m *Manager) DeleteCommunity(id types.HexBytes) error {
|
||||||
return m.persistence.DeleteCommunitySettings(id)
|
return m.persistence.DeleteCommunitySettings(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Manager) UpdateShard(community *Community, shard *common.Shard) error {
|
||||||
|
community.config.Shard = shard
|
||||||
|
return m.persistence.SaveCommunity(community)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetShard assigns a shard to a community
|
||||||
|
func (m *Manager) SetShard(communityID types.HexBytes, shard *common.Shard) (*Community, error) {
|
||||||
|
community, err := m.GetByID(communityID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if community == nil {
|
||||||
|
return nil, ErrOrgNotFound
|
||||||
|
}
|
||||||
|
if !community.IsControlNode() {
|
||||||
|
return nil, errors.New("not admin or owner")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.UpdateShard(community, shard)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
m.publish(&Subscription{Community: community})
|
||||||
|
|
||||||
|
return community, nil
|
||||||
|
}
|
||||||
|
|
||||||
// EditCommunity takes a description, updates the community with the description,
|
// EditCommunity takes a description, updates the community with the description,
|
||||||
// saves it and returns it
|
// saves it and returns it
|
||||||
func (m *Manager) EditCommunity(request *requests.EditCommunity) (*Community, error) {
|
func (m *Manager) EditCommunity(request *requests.EditCommunity) (*Community, error) {
|
||||||
|
@ -1310,7 +1355,7 @@ func (m *Manager) DeleteCategory(request *requests.DeleteCommunityCategory) (*Co
|
||||||
return changes.Community, changes, nil
|
return changes.Community, changes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, description *protobuf.CommunityDescription, payload []byte) (*CommunityResponse, error) {
|
func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, description *protobuf.CommunityDescription, payload []byte, shard *common.Shard) (*CommunityResponse, error) {
|
||||||
if signer == nil {
|
if signer == nil {
|
||||||
return nil, errors.New("signer can't be nil")
|
return nil, errors.New("signer can't be nil")
|
||||||
}
|
}
|
||||||
|
@ -1332,6 +1377,7 @@ func (m *Manager) HandleCommunityDescriptionMessage(signer *ecdsa.PublicKey, des
|
||||||
CommunityDescriptionProtocolMessage: payload,
|
CommunityDescriptionProtocolMessage: payload,
|
||||||
MemberIdentity: &m.identity.PublicKey,
|
MemberIdentity: &m.identity.PublicKey,
|
||||||
ID: signer,
|
ID: signer,
|
||||||
|
Shard: shard,
|
||||||
}
|
}
|
||||||
community, err = New(config, m.timesource)
|
community, err = New(config, m.timesource)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2880,7 +2926,7 @@ func (m *Manager) HandleCommunityRequestToLeave(signer *ecdsa.PublicKey, proto *
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) HandleWrappedCommunityDescriptionMessage(payload []byte) (*CommunityResponse, error) {
|
func (m *Manager) HandleWrappedCommunityDescriptionMessage(payload []byte, shard *common.Shard) (*CommunityResponse, error) {
|
||||||
m.logger.Debug("Handling wrapped community description message")
|
m.logger.Debug("Handling wrapped community description message")
|
||||||
|
|
||||||
applicationMetadataMessage := &protobuf.ApplicationMetadataMessage{}
|
applicationMetadataMessage := &protobuf.ApplicationMetadataMessage{}
|
||||||
|
@ -2903,7 +2949,7 @@ func (m *Manager) HandleWrappedCommunityDescriptionMessage(payload []byte) (*Com
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return m.HandleCommunityDescriptionMessage(signer, description, payload)
|
return m.HandleCommunityDescriptionMessage(signer, description, payload, shard)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) JoinCommunity(id types.HexBytes, forceJoin bool) (*Community, error) {
|
func (m *Manager) JoinCommunity(id types.HexBytes, forceJoin bool) (*Community, error) {
|
||||||
|
@ -3294,6 +3340,20 @@ func (m *Manager) AcceptedPendingRequestsToJoinForCommunity(id types.HexBytes) (
|
||||||
|
|
||||||
func (m *Manager) DeclinedPendingRequestsToJoinForCommunity(id types.HexBytes) ([]*RequestToJoin, error) {
|
func (m *Manager) DeclinedPendingRequestsToJoinForCommunity(id types.HexBytes) ([]*RequestToJoin, error) {
|
||||||
return m.persistence.DeclinedPendingRequestsToJoinForCommunity(id)
|
return m.persistence.DeclinedPendingRequestsToJoinForCommunity(id)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Manager) GetPubsubTopic(communityID string) (string, error) {
|
||||||
|
community, err := m.GetByIDString(communityID)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
if community == nil {
|
||||||
|
return relay.DefaultWakuTopic, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return transport.GetPubsubTopic(community.Shard().TransportShard()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) CanPost(pk *ecdsa.PublicKey, communityID string, chatID string, grant []byte) (bool, error) {
|
func (m *Manager) CanPost(pk *ecdsa.PublicKey, communityID string, chatID string, grant []byte) (bool, error) {
|
||||||
|
|
|
@ -33,7 +33,7 @@ var ErrOldRequestToLeave = errors.New("old request to leave")
|
||||||
|
|
||||||
const OR = " OR "
|
const OR = " OR "
|
||||||
const communitiesBaseQuery = `
|
const communitiesBaseQuery = `
|
||||||
SELECT c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted, c.muted_till, r.clock, ae.raw_events, ae.raw_description
|
SELECT c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted, c.muted_till, r.clock, ae.raw_events, ae.raw_description, c.shard_cluster, c.shard_index
|
||||||
FROM communities_communities c
|
FROM communities_communities c
|
||||||
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
|
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
|
||||||
LEFT JOIN communities_events ae ON c.id = ae.id`
|
LEFT JOIN communities_events ae ON c.id = ae.id`
|
||||||
|
@ -46,9 +46,17 @@ func (p *Persistence) SaveCommunity(community *Community) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var shardIndex, shardCluster *uint
|
||||||
|
if community.Shard() != nil {
|
||||||
|
index := uint(community.Shard().Index)
|
||||||
|
shardIndex = &index
|
||||||
|
cluster := uint(community.Shard().Cluster)
|
||||||
|
shardCluster = &cluster
|
||||||
|
}
|
||||||
|
|
||||||
_, err = p.db.Exec(`
|
_, err = p.db.Exec(`
|
||||||
INSERT INTO communities_communities (id, private_key, description, joined, spectated, verified, muted, muted_till) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
|
INSERT INTO communities_communities (id, private_key, description, joined, spectated, verified, muted, muted_till, shard_cluster, shard_index) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||||
id, crypto.FromECDSA(privateKey), wrappedCommunity, community.config.Joined, community.config.Spectated, community.config.Verified, community.config.Muted, community.config.MuteTill)
|
id, crypto.FromECDSA(privateKey), wrappedCommunity, community.config.Joined, community.config.Spectated, community.config.Verified, community.config.Muted, community.config.MuteTill, shardCluster, shardIndex)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,9 +109,8 @@ func (p *Persistence) ShouldHandleSyncCommunitySettings(settings *protobuf.SyncC
|
||||||
|
|
||||||
func (p *Persistence) ShouldHandleSyncCommunity(community *protobuf.SyncInstallationCommunity) (bool, error) {
|
func (p *Persistence) ShouldHandleSyncCommunity(community *protobuf.SyncInstallationCommunity) (bool, error) {
|
||||||
// TODO see if there is a way to make this more elegant
|
// TODO see if there is a way to make this more elegant
|
||||||
// Keep the "*".
|
|
||||||
// When the test for this function fails because the table has changed we should update sync functionality
|
// When the test for this function fails because the table has changed we should update sync functionality
|
||||||
qr := p.db.QueryRow(`SELECT * FROM communities_communities WHERE id = ? AND synced_at > ?`, community.Id, community.Clock)
|
qr := p.db.QueryRow(`SELECT id, private_key, description, joined, verified, spectated, muted, muted_till, synced_at FROM communities_communities WHERE id = ? AND synced_at > ?`, community.Id, community.Clock)
|
||||||
_, err := p.scanRowToStruct(qr.Scan)
|
_, err := p.scanRowToStruct(qr.Scan)
|
||||||
|
|
||||||
switch err {
|
switch err {
|
||||||
|
@ -140,16 +147,28 @@ func (p *Persistence) queryCommunities(memberIdentity *ecdsa.PublicKey, query st
|
||||||
var publicKeyBytes, privateKeyBytes, descriptionBytes []byte
|
var publicKeyBytes, privateKeyBytes, descriptionBytes []byte
|
||||||
var joined, spectated, verified, muted bool
|
var joined, spectated, verified, muted bool
|
||||||
var muteTill sql.NullTime
|
var muteTill sql.NullTime
|
||||||
var requestedToJoinAt sql.NullInt64
|
var cluster, index, requestedToJoinAt sql.NullInt64
|
||||||
|
|
||||||
// Community events specific fields
|
// Community events specific fields
|
||||||
var eventsBytes, eventsDescriptionBytes []byte
|
var eventsBytes, eventsDescriptionBytes []byte
|
||||||
err := rows.Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &muteTill, &requestedToJoinAt, &eventsBytes, &eventsDescriptionBytes)
|
err := rows.Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &muteTill, &requestedToJoinAt, &eventsBytes, &eventsDescriptionBytes, &cluster, &index)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
org, err := p.unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, muteTill.Time, uint64(requestedToJoinAt.Int64), eventsBytes, eventsDescriptionBytes, p.logger)
|
var clusterValue *uint
|
||||||
|
if cluster.Valid {
|
||||||
|
v := uint(cluster.Int64)
|
||||||
|
clusterValue = &v
|
||||||
|
}
|
||||||
|
|
||||||
|
var indexValue *uint
|
||||||
|
if index.Valid {
|
||||||
|
v := uint(index.Int64)
|
||||||
|
indexValue = &v
|
||||||
|
}
|
||||||
|
|
||||||
|
org, err := p.unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, muteTill.Time, uint64(requestedToJoinAt.Int64), eventsBytes, eventsDescriptionBytes, clusterValue, indexValue, p.logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -192,6 +211,7 @@ func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *s
|
||||||
var publicKeyBytes, privateKeyBytes, descriptionBytes []byte
|
var publicKeyBytes, privateKeyBytes, descriptionBytes []byte
|
||||||
var joined, spectated, verified, muted bool
|
var joined, spectated, verified, muted bool
|
||||||
var muteTill sql.NullTime
|
var muteTill sql.NullTime
|
||||||
|
var cluster, index sql.NullInt64
|
||||||
|
|
||||||
// Request to join specific fields
|
// Request to join specific fields
|
||||||
var rtjID, rtjCommunityID []byte
|
var rtjID, rtjCommunityID []byte
|
||||||
|
@ -203,12 +223,25 @@ func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *s
|
||||||
|
|
||||||
err = rows.Scan(
|
err = rows.Scan(
|
||||||
&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &muteTill,
|
&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &muteTill,
|
||||||
&rtjID, &rtjPublicKey, &rtjClock, &rtjENSName, &rtjChatID, &rtjCommunityID, &rtjState, &eventsBytes, &eventsDescriptionBytes)
|
&rtjID, &rtjPublicKey, &rtjClock, &rtjENSName, &rtjChatID, &rtjCommunityID, &rtjState, &eventsBytes,
|
||||||
|
&eventsDescriptionBytes, &cluster, &index)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
comm, err = p.unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, muteTill.Time, uint64(rtjClock.Int64), eventsBytes, eventsDescriptionBytes, p.logger)
|
var clusterValue *uint
|
||||||
|
if cluster.Valid {
|
||||||
|
v := uint(cluster.Int64)
|
||||||
|
clusterValue = &v
|
||||||
|
}
|
||||||
|
|
||||||
|
var indexValue *uint
|
||||||
|
if index.Valid {
|
||||||
|
v := uint(index.Int64)
|
||||||
|
indexValue = &v
|
||||||
|
}
|
||||||
|
|
||||||
|
comm, err = p.unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, muteTill.Time, uint64(rtjClock.Int64), eventsBytes, eventsDescriptionBytes, clusterValue, indexValue, p.logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -226,7 +259,8 @@ func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *s
|
||||||
func (p *Persistence) JoinedAndPendingCommunitiesWithRequests(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) {
|
func (p *Persistence) JoinedAndPendingCommunitiesWithRequests(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) {
|
||||||
query := `SELECT
|
query := `SELECT
|
||||||
c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted, c.muted_till,
|
c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted, c.muted_till,
|
||||||
r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state, ae.raw_events, ae.raw_description
|
r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state, ae.raw_events, ae.raw_description,
|
||||||
|
c.shard_cluster, c.shard_index
|
||||||
FROM communities_communities c
|
FROM communities_communities c
|
||||||
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
|
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
|
||||||
LEFT JOIN communities_events ae ON c.id = ae.id
|
LEFT JOIN communities_events ae ON c.id = ae.id
|
||||||
|
@ -243,7 +277,8 @@ WHERE c.Joined OR r.state = ?`
|
||||||
func (p *Persistence) DeletedCommunities(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) {
|
func (p *Persistence) DeletedCommunities(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) {
|
||||||
query := `SELECT
|
query := `SELECT
|
||||||
c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted, c.muted_till,
|
c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted, c.muted_till,
|
||||||
r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state, ae.raw_events, ae.raw_description
|
r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state, ae.raw_events, ae.raw_description,
|
||||||
|
c.shard_cluster, c.shard_index
|
||||||
FROM communities_communities c
|
FROM communities_communities c
|
||||||
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
|
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
|
||||||
LEFT JOIN communities_events ae ON c.id = ae.id
|
LEFT JOIN communities_events ae ON c.id = ae.id
|
||||||
|
@ -269,24 +304,36 @@ func (p *Persistence) GetByID(memberIdentity *ecdsa.PublicKey, id []byte) (*Comm
|
||||||
var verified bool
|
var verified bool
|
||||||
var muted bool
|
var muted bool
|
||||||
var muteTill sql.NullTime
|
var muteTill sql.NullTime
|
||||||
var requestedToJoinAt sql.NullInt64
|
var requestedToJoinAt, cluster, index sql.NullInt64
|
||||||
|
|
||||||
// Community events specific fields
|
// Community events specific fields
|
||||||
var eventsBytes, eventsDescriptionBytes []byte
|
var eventsBytes, eventsDescriptionBytes []byte
|
||||||
|
|
||||||
err := p.db.QueryRow(communitiesBaseQuery+` WHERE c.id = ?`, common.PubkeyToHex(memberIdentity), id).Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &muteTill, &requestedToJoinAt, &eventsBytes, &eventsDescriptionBytes)
|
err := p.db.QueryRow(communitiesBaseQuery+` WHERE c.id = ?`, common.PubkeyToHex(memberIdentity), id).Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &muteTill, &requestedToJoinAt, &eventsBytes, &eventsDescriptionBytes, &cluster, &index)
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return p.unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, muteTill.Time, uint64(requestedToJoinAt.Int64), eventsBytes, eventsDescriptionBytes, p.logger)
|
var clusterValue *uint
|
||||||
|
if cluster.Valid {
|
||||||
|
v := uint(cluster.Int64)
|
||||||
|
clusterValue = &v
|
||||||
|
}
|
||||||
|
|
||||||
|
var indexValue *uint
|
||||||
|
if index.Valid {
|
||||||
|
v := uint(index.Int64)
|
||||||
|
indexValue = &v
|
||||||
|
}
|
||||||
|
|
||||||
|
return p.unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, muteTill.Time, uint64(requestedToJoinAt.Int64), eventsBytes, eventsDescriptionBytes, clusterValue, indexValue, p.logger)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Persistence) unmarshalCommunityFromDB(memberIdentity *ecdsa.PublicKey, publicKeyBytes, privateKeyBytes, wrappedCommunity []byte, joined,
|
func (p *Persistence) unmarshalCommunityFromDB(memberIdentity *ecdsa.PublicKey, publicKeyBytes, privateKeyBytes, wrappedCommunity []byte, joined,
|
||||||
spectated, verified, muted bool, muteTill time.Time, requestedToJoinAt uint64, eventsBytes []byte,
|
spectated, verified, muted bool, muteTill time.Time, requestedToJoinAt uint64, eventsBytes []byte,
|
||||||
eventsDescriptionBytes []byte, logger *zap.Logger) (*Community, error) {
|
eventsDescriptionBytes []byte, cluster *uint, index *uint, logger *zap.Logger) (*Community, error) {
|
||||||
|
|
||||||
var privateKey *ecdsa.PrivateKey
|
var privateKey *ecdsa.PrivateKey
|
||||||
var err error
|
var err error
|
||||||
|
@ -313,6 +360,14 @@ func (p *Persistence) unmarshalCommunityFromDB(memberIdentity *ecdsa.PublicKey,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var shard *common.Shard = nil
|
||||||
|
if cluster != nil && index != nil {
|
||||||
|
shard = &common.Shard{
|
||||||
|
Cluster: uint16(*cluster),
|
||||||
|
Index: uint16(*index),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
config := Config{
|
config := Config{
|
||||||
PrivateKey: privateKey,
|
PrivateKey: privateKey,
|
||||||
CommunityDescription: description,
|
CommunityDescription: description,
|
||||||
|
@ -327,6 +382,7 @@ func (p *Persistence) unmarshalCommunityFromDB(memberIdentity *ecdsa.PublicKey,
|
||||||
Joined: joined,
|
Joined: joined,
|
||||||
Spectated: spectated,
|
Spectated: spectated,
|
||||||
EventsData: eventsData,
|
EventsData: eventsData,
|
||||||
|
Shard: shard,
|
||||||
}
|
}
|
||||||
community, err := New(config, p.timesource)
|
community, err := New(config, p.timesource)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -58,7 +58,7 @@ func (p *Persistence) scanRowToStruct(rowScan func(dest ...interface{}) error) (
|
||||||
func (p *Persistence) getAllCommunitiesRaw() (rcrs []*RawCommunityRow, err error) {
|
func (p *Persistence) getAllCommunitiesRaw() (rcrs []*RawCommunityRow, err error) {
|
||||||
var rows *sql.Rows
|
var rows *sql.Rows
|
||||||
// Keep "*", if the db table is updated, syncing needs to match, this fail will force us to update syncing.
|
// Keep "*", if the db table is updated, syncing needs to match, this fail will force us to update syncing.
|
||||||
rows, err = p.db.Query(`SELECT * FROM communities_communities`)
|
rows, err = p.db.Query(`SELECT id, private_key, description, joined, verified, spectated, muted, muted_till, synced_at FROM communities_communities`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -85,14 +85,12 @@ func (p *Persistence) getAllCommunitiesRaw() (rcrs []*RawCommunityRow, err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Persistence) getRawCommunityRow(id []byte) (*RawCommunityRow, error) {
|
func (p *Persistence) getRawCommunityRow(id []byte) (*RawCommunityRow, error) {
|
||||||
// Keep "*", if the db table is updated, syncing needs to match, this fail will force us to update syncing.
|
qr := p.db.QueryRow(`SELECT id, private_key, description, joined, verified, spectated, muted, muted_till, synced_at FROM communities_communities WHERE id = ?`, id)
|
||||||
qr := p.db.QueryRow(`SELECT * FROM communities_communities WHERE id = ?`, id)
|
|
||||||
return p.scanRowToStruct(qr.Scan)
|
return p.scanRowToStruct(qr.Scan)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Persistence) getSyncedRawCommunity(id []byte) (*RawCommunityRow, error) {
|
func (p *Persistence) getSyncedRawCommunity(id []byte) (*RawCommunityRow, error) {
|
||||||
// Keep "*", if the db table is updated, syncing needs to match, this fail will force us to update syncing.
|
qr := p.db.QueryRow(`SELECT id, private_key, description, joined, verified, spectated, muted, muted_till, synced_at FROM communities_communities WHERE id = ? AND synced_at > 0`, id)
|
||||||
qr := p.db.QueryRow(`SELECT * FROM communities_communities WHERE id = ? AND synced_at > 0`, id)
|
|
||||||
return p.scanRowToStruct(qr.Scan)
|
return p.scanRowToStruct(qr.Scan)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,11 @@ import (
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
gethcommon "github.com/ethereum/go-ethereum/common"
|
gethcommon "github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
"github.com/ethereum/go-ethereum/event"
|
"github.com/ethereum/go-ethereum/event"
|
||||||
|
@ -1687,8 +1688,8 @@ func (m *Messenger) Init() error {
|
||||||
|
|
||||||
for _, c := range controlledCommunities {
|
for _, c := range controlledCommunities {
|
||||||
communityFiltersToInitialize = append(communityFiltersToInitialize, transport.CommunityFilterToInitialize{
|
communityFiltersToInitialize = append(communityFiltersToInitialize, transport.CommunityFilterToInitialize{
|
||||||
CommunityID: c.ID(),
|
Shard: c.Shard().TransportShard(),
|
||||||
PrivKey: c.PrivateKey(),
|
PrivKey: c.PrivateKey(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1720,6 +1721,8 @@ func (m *Messenger) Init() error {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
communityInfo := make(map[string]*communities.Community)
|
||||||
|
|
||||||
switch chat.ChatType {
|
switch chat.ChatType {
|
||||||
case ChatTypePublic, ChatTypeProfile:
|
case ChatTypePublic, ChatTypeProfile:
|
||||||
filtersToInit = append(filtersToInit, transport.FiltersToInitialize{ChatID: chat.ID, PubsubTopic: relay.DefaultWakuTopic})
|
filtersToInit = append(filtersToInit, transport.FiltersToInitialize{ChatID: chat.ID, PubsubTopic: relay.DefaultWakuTopic})
|
||||||
|
@ -1728,7 +1731,17 @@ func (m *Messenger) Init() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
filtersToInit = append(filtersToInit, transport.FiltersToInitialize{ChatID: chat.ID, PubsubTopic: transport.GetPubsubTopic(communityID)})
|
|
||||||
|
community, ok := communityInfo[chat.CommunityID]
|
||||||
|
if !ok {
|
||||||
|
community, err = m.communitiesManager.GetByID(communityID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
communityInfo[chat.CommunityID] = community
|
||||||
|
}
|
||||||
|
|
||||||
|
filtersToInit = append(filtersToInit, transport.FiltersToInitialize{ChatID: chat.ID, PubsubTopic: transport.GetPubsubTopic(community.Shard().TransportShard())})
|
||||||
case ChatTypeOneToOne:
|
case ChatTypeOneToOne:
|
||||||
pk, err := chat.PublicKey()
|
pk, err := chat.PublicKey()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2085,13 +2098,11 @@ func (m *Messenger) dispatchMessage(ctx context.Context, rawMessage common.RawMe
|
||||||
return rawMessage, err
|
return rawMessage, err
|
||||||
}
|
}
|
||||||
case ChatTypeCommunityChat:
|
case ChatTypeCommunityChat:
|
||||||
communityID, err := hexutil.Decode(chat.CommunityID)
|
rawMessage.PubsubTopic, err = m.communitiesManager.GetPubsubTopic(chat.CommunityID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rawMessage, err
|
return rawMessage, err
|
||||||
}
|
}
|
||||||
|
|
||||||
rawMessage.PubsubTopic = transport.GetPubsubTopic(communityID)
|
|
||||||
|
|
||||||
// TODO: add grant
|
// TODO: add grant
|
||||||
canPost, err := m.communitiesManager.CanPost(&m.identity.PublicKey, chat.CommunityID, chat.CommunityChatID(), nil)
|
canPost, err := m.communitiesManager.CanPost(&m.identity.PublicKey, chat.CommunityID, chat.CommunityChatID(), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2261,7 +2272,9 @@ func (m *Messenger) sendChatMessage(ctx context.Context, message *common.Message
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
message.Payload = &protobuf.ChatMessage_Community{Community: wrappedCommunity}
|
message.Payload = &protobuf.ChatMessage_Community{Community: wrappedCommunity}
|
||||||
|
message.Shard = community.Shard().Protobuffer()
|
||||||
|
|
||||||
message.ContentType = protobuf.ChatMessage_COMMUNITY
|
message.ContentType = protobuf.ChatMessage_COMMUNITY
|
||||||
} else if len(message.AudioPath) != 0 {
|
} else if len(message.AudioPath) != 0 {
|
||||||
|
|
|
@ -17,6 +17,8 @@ import (
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
gethcommon "github.com/ethereum/go-ethereum/common"
|
gethcommon "github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
|
|
||||||
|
@ -81,12 +83,13 @@ func (m *Messenger) publishOrg(org *communities.Community) error {
|
||||||
// we don't want to wrap in an encryption layer message
|
// we don't want to wrap in an encryption layer message
|
||||||
SkipProtocolLayer: true,
|
SkipProtocolLayer: true,
|
||||||
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION,
|
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION,
|
||||||
|
PubsubTopic: org.PubsubTopic(), // TODO: confirm if it should be sent in community pubsub topic
|
||||||
}
|
}
|
||||||
_, err = m.sender.SendPublic(context.Background(), org.IDString(), rawMessage)
|
_, err = m.sender.SendPublic(context.Background(), org.IDString(), rawMessage)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) publishCommunityEvents(msg *communities.CommunityEventsMessage) error {
|
func (m *Messenger) publishCommunityEvents(community *communities.Community, msg *communities.CommunityEventsMessage) error {
|
||||||
m.logger.Debug("publishing community events", zap.String("admin-id", common.PubkeyToHex(&m.identity.PublicKey)), zap.Any("event", msg))
|
m.logger.Debug("publishing community events", zap.String("admin-id", common.PubkeyToHex(&m.identity.PublicKey)), zap.Any("event", msg))
|
||||||
|
|
||||||
payload, err := msg.Marshal()
|
payload, err := msg.Marshal()
|
||||||
|
@ -100,7 +103,7 @@ func (m *Messenger) publishCommunityEvents(msg *communities.CommunityEventsMessa
|
||||||
// we don't want to wrap in an encryption layer message
|
// we don't want to wrap in an encryption layer message
|
||||||
SkipProtocolLayer: true,
|
SkipProtocolLayer: true,
|
||||||
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE,
|
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE,
|
||||||
PubsubTopic: transport.GetPubsubTopic(msg.CommunityID), // TODO: confirm if it should be sent in community pubsub topic
|
PubsubTopic: community.PubsubTopic(), // TODO: confirm if it should be sent in community pubsub topic
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: resend in case of failure?
|
// TODO: resend in case of failure?
|
||||||
|
@ -301,7 +304,7 @@ func (m *Messenger) handleCommunitiesSubscription(c chan *communities.Subscripti
|
||||||
}
|
}
|
||||||
|
|
||||||
if sub.CommunityEventsMessage != nil {
|
if sub.CommunityEventsMessage != nil {
|
||||||
err := m.publishCommunityEvents(sub.CommunityEventsMessage)
|
err := m.publishCommunityEvents(sub.Community, sub.CommunityEventsMessage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.logger.Warn("failed to publish community events", zap.Error(err))
|
m.logger.Warn("failed to publish community events", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
@ -576,12 +579,12 @@ func (m *Messenger) CuratedCommunities() (*communities.KnownCommunitiesResponse,
|
||||||
|
|
||||||
callOpts := &bind.CallOpts{Context: context.Background(), Pending: false}
|
callOpts := &bind.CallOpts{Context: context.Background(), Pending: false}
|
||||||
|
|
||||||
communities, err := directory.GetCommunities(callOpts)
|
curatedCommunities, err := directory.GetCommunities(callOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
var communityIDs []types.HexBytes
|
var communityIDs []types.HexBytes
|
||||||
for _, c := range communities {
|
for _, c := range curatedCommunities {
|
||||||
communityIDs = append(communityIDs, c)
|
communityIDs = append(communityIDs, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -594,11 +597,30 @@ func (m *Messenger) CuratedCommunities() (*communities.KnownCommunitiesResponse,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: The curated communities smart contract should also store the community shard cluster and index
|
||||||
|
|
||||||
for _, c := range featuredCommunities {
|
for _, c := range featuredCommunities {
|
||||||
response.ContractFeaturedCommunities = append(response.ContractFeaturedCommunities, types.HexBytes(c).String())
|
response.ContractFeaturedCommunities = append(response.ContractFeaturedCommunities, types.HexBytes(c).String())
|
||||||
|
// TODO: use CommunityShard instead of communityID
|
||||||
|
/*response.ContractFeaturedCommunities = append(response.ContractFeaturedCommunities, communities.CommunityShard{
|
||||||
|
CommunityID: types.HexBytes(c).String(),
|
||||||
|
// Shard: c.Shard, // TODO: obtain this value
|
||||||
|
})*/
|
||||||
}
|
}
|
||||||
|
|
||||||
go m.requestCommunitiesFromMailserver(response.UnknownCommunities)
|
// TODO: this loop is added just to not revert the change from requestCommunitiesFromMailserver
|
||||||
|
// Once support for shards is added in the contract, just pass the `response.UnknownCommunities` directly to
|
||||||
|
// the function
|
||||||
|
|
||||||
|
var unknownCommunities []communities.CommunityShard
|
||||||
|
for _, u := range response.UnknownCommunities {
|
||||||
|
unknownCommunities = append(unknownCommunities, communities.CommunityShard{
|
||||||
|
CommunityID: u,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
go m.requestCommunitiesFromMailserver(unknownCommunities)
|
||||||
|
|
||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
@ -625,8 +647,8 @@ func (m *Messenger) initCommunityChats(community *communities.Community) ([]*Cha
|
||||||
if community.IsControlNode() {
|
if community.IsControlNode() {
|
||||||
// Init the community filter so we can receive messages on the community
|
// Init the community filter so we can receive messages on the community
|
||||||
communityFilters, err := m.transport.InitCommunityFilters([]transport.CommunityFilterToInitialize{{
|
communityFilters, err := m.transport.InitCommunityFilters([]transport.CommunityFilterToInitialize{{
|
||||||
CommunityID: community.ID(),
|
Shard: community.Shard().TransportShard(),
|
||||||
PrivKey: community.PrivateKey(),
|
PrivKey: community.PrivateKey(),
|
||||||
}})
|
}})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -700,14 +722,25 @@ func (m *Messenger) JoinCommunity(ctx context.Context, communityID types.HexByte
|
||||||
return mr, nil
|
return mr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) subscribeToCommunityShard(communityID []byte) error {
|
func (m *Messenger) subscribeToCommunityShard(communityID []byte, shard *common.Shard) error {
|
||||||
// TODO: store private key and topic
|
if m.transport.WakuVersion() != 2 {
|
||||||
// TODO: determine pubsub topic and public key for community
|
return nil
|
||||||
// TODO: this should probably be moved completely to transport once pubsub topic logic is implemented
|
}
|
||||||
|
|
||||||
pubsubTopic := transport.GetPubsubTopic(communityID)
|
// TODO: this should probably be moved completely to transport once pubsub topic logic is implemented
|
||||||
// var communityPubKey *ecdsa.PublicKey
|
pubsubTopic := transport.GetPubsubTopic(shard.TransportShard())
|
||||||
return m.transport.SubscribeToPubsubTopic(pubsubTopic, nil)
|
|
||||||
|
privK, err := m.transport.RetrievePubsubTopicKey(pubsubTopic)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var pubK *ecdsa.PublicKey
|
||||||
|
if privK != nil {
|
||||||
|
pubK = &privK.PublicKey
|
||||||
|
}
|
||||||
|
|
||||||
|
return m.transport.SubscribeToPubsubTopic(pubsubTopic, pubK)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) joinCommunity(ctx context.Context, communityID types.HexBytes, forceJoin bool) (*MessengerResponse, error) {
|
func (m *Messenger) joinCommunity(ctx context.Context, communityID types.HexBytes, forceJoin bool) (*MessengerResponse, error) {
|
||||||
|
@ -733,7 +766,7 @@ func (m *Messenger) joinCommunity(ctx context.Context, communityID types.HexByte
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = m.subscribeToCommunityShard(communityID); err != nil {
|
if err = m.subscribeToCommunityShard(community.ID(), community.Shard()); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -787,7 +820,7 @@ func (m *Messenger) SpectateCommunity(communityID types.HexBytes) (*MessengerRes
|
||||||
|
|
||||||
response.AddCommunity(community)
|
response.AddCommunity(community)
|
||||||
|
|
||||||
if err = m.subscribeToCommunityShard(community.ID()); err != nil {
|
if err = m.subscribeToCommunityShard(community.ID(), community.Shard()); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1064,7 +1097,7 @@ func (m *Messenger) RequestToJoinCommunity(request *requests.RequestToJoinCommun
|
||||||
CommunityID: community.ID(),
|
CommunityID: community.ID(),
|
||||||
SkipProtocolLayer: true,
|
SkipProtocolLayer: true,
|
||||||
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN,
|
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN,
|
||||||
PubsubTopic: community.PubsubTopic(), // TODO: confirm if it should be sent in community pubsub topic
|
PubsubTopic: relay.DefaultWakuTopic, // TODO: this should be sent on a non protected pubsub topic.
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
||||||
|
@ -1218,7 +1251,7 @@ func (m *Messenger) EditSharedAddressesForCommunity(request *requests.EditShared
|
||||||
CommunityID: community.ID(),
|
CommunityID: community.ID(),
|
||||||
SkipProtocolLayer: true,
|
SkipProtocolLayer: true,
|
||||||
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES,
|
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES,
|
||||||
PubsubTopic: community.PubsubTopic(),
|
PubsubTopic: community.PubsubTopic(), // TODO: confirm if it should be sent in community pubsub topic
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
||||||
|
@ -1382,7 +1415,7 @@ func (m *Messenger) CancelRequestToJoinCommunity(request *requests.CancelRequest
|
||||||
CommunityID: community.ID(),
|
CommunityID: community.ID(),
|
||||||
SkipProtocolLayer: true,
|
SkipProtocolLayer: true,
|
||||||
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_CANCEL_REQUEST_TO_JOIN,
|
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_CANCEL_REQUEST_TO_JOIN,
|
||||||
PubsubTopic: community.PubsubTopic(), // TODO: confirm if it should be send in community pubsub topic
|
PubsubTopic: relay.DefaultWakuTopic, // TODO: this should be sent on a non protected pubsub topic.
|
||||||
}
|
}
|
||||||
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
||||||
|
|
||||||
|
@ -1461,12 +1494,22 @@ func (m *Messenger) AcceptRequestToJoinCommunity(request *requests.AcceptRequest
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var key *ecdsa.PrivateKey
|
||||||
|
if m.transport.WakuVersion() == 2 {
|
||||||
|
key, err = m.transport.RetrievePubsubTopicKey(community.PubsubTopic())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
requestToJoinResponseProto := &protobuf.CommunityRequestToJoinResponse{
|
requestToJoinResponseProto := &protobuf.CommunityRequestToJoinResponse{
|
||||||
Clock: community.Clock(),
|
Clock: community.Clock(),
|
||||||
Accepted: true,
|
Accepted: true,
|
||||||
CommunityId: community.ID(),
|
CommunityId: community.ID(),
|
||||||
Community: community.Description(),
|
Community: community.Description(),
|
||||||
Grant: grant,
|
Grant: grant,
|
||||||
|
ProtectedTopicPrivateKey: crypto.FromECDSA(key),
|
||||||
|
Shard: community.Shard().Protobuffer(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.torrentClientReady() && m.communitiesManager.TorrentFileExists(community.IDString()) {
|
if m.torrentClientReady() && m.communitiesManager.TorrentFileExists(community.IDString()) {
|
||||||
|
@ -1654,12 +1697,17 @@ func (m *Messenger) LeaveCommunity(communityID types.HexBytes) (*MessengerRespon
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
community, err := m.communitiesManager.GetByID(communityID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
rawMessage := common.RawMessage{
|
rawMessage := common.RawMessage{
|
||||||
Payload: payload,
|
Payload: payload,
|
||||||
CommunityID: communityID,
|
CommunityID: communityID,
|
||||||
SkipProtocolLayer: true,
|
SkipProtocolLayer: true,
|
||||||
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE,
|
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE,
|
||||||
PubsubTopic: transport.GetPubsubTopic(communityID), // TODO: confirm if it should be sent in the community pubsub topic
|
PubsubTopic: community.PubsubTopic(), // TODO: confirm if it should be sent in the community pubsub topic
|
||||||
}
|
}
|
||||||
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1912,14 +1960,14 @@ func (m *Messenger) CreateCommunity(request *requests.CreateCommunity, createDef
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = m.subscribeToCommunityShard(community.ID()); err != nil {
|
if err = m.subscribeToCommunityShard(community.ID(), community.Shard()); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init the community filter so we can receive messages on the community
|
// Init the community filter so we can receive messages on the community
|
||||||
_, err = m.transport.InitCommunityFilters([]transport.CommunityFilterToInitialize{{
|
_, err = m.transport.InitCommunityFilters([]transport.CommunityFilterToInitialize{{
|
||||||
CommunityID: community.ID(),
|
Shard: community.Shard().TransportShard(),
|
||||||
PrivKey: community.PrivateKey(),
|
PrivKey: community.PrivateKey(),
|
||||||
}})
|
}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -1966,6 +2014,95 @@ func (m *Messenger) CreateCommunity(request *requests.CreateCommunity, createDef
|
||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) SetCommunityShard(request *requests.SetCommunityShard) (*MessengerResponse, error) {
|
||||||
|
if err := request.Validate(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
community, err := m.communitiesManager.SetShard(request.CommunityID, request.Shard)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var topicPrivKey *ecdsa.PrivateKey
|
||||||
|
if request.PrivateKey != nil {
|
||||||
|
topicPrivKey, err = crypto.ToECDSA(*request.PrivateKey)
|
||||||
|
} else {
|
||||||
|
topicPrivKey, err = crypto.GenerateKey()
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.UpdateCommunityFilters(community, topicPrivKey)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.SendCommunityShardKey(community, community.GetMemberPubkeys())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
response := &MessengerResponse{}
|
||||||
|
response.AddProtectedTopic(community.PubsubTopic(), topicPrivKey)
|
||||||
|
|
||||||
|
return response, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) UpdateCommunityFilters(community *communities.Community, privKey *ecdsa.PrivateKey) error {
|
||||||
|
if m.transport.WakuVersion() == 2 && privKey != nil {
|
||||||
|
if err := m.transport.StorePubsubTopicKey(community.PubsubTopic(), privKey); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publicFiltersToInit := make([]transport.FiltersToInitialize, 0, len(community.DefaultFilters())+len(community.Chats()))
|
||||||
|
|
||||||
|
for _, df := range community.DefaultFilters() {
|
||||||
|
_, err := m.transport.RemoveFilterByChatID(df.ChatID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
publicFiltersToInit = append(publicFiltersToInit, df)
|
||||||
|
}
|
||||||
|
|
||||||
|
for chatID := range community.Chats() {
|
||||||
|
communityChatID := community.IDString() + chatID
|
||||||
|
_, err := m.transport.RemoveFilterByChatID(communityChatID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
publicFiltersToInit = append(publicFiltersToInit, transport.FiltersToInitialize{ChatID: communityChatID, PubsubTopic: community.PubsubTopic()})
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := m.transport.InitPublicFilters(publicFiltersToInit)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init the community filter so we can receive messages on the community
|
||||||
|
_, err = m.transport.InitCommunityFilters([]transport.CommunityFilterToInitialize{{
|
||||||
|
Shard: community.Shard().TransportShard(),
|
||||||
|
PrivKey: community.PrivateKey(),
|
||||||
|
}})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init the default community filters
|
||||||
|
_, err = m.transport.InitPublicFilters(publicFiltersToInit)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = m.subscribeToCommunityShard(community.ID(), community.Shard()); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) CreateCommunityTokenPermission(request *requests.CreateCommunityTokenPermission) (*MessengerResponse, error) {
|
func (m *Messenger) CreateCommunityTokenPermission(request *requests.CreateCommunityTokenPermission) (*MessengerResponse, error) {
|
||||||
if err := request.Validate(); err != nil {
|
if err := request.Validate(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -2147,7 +2284,7 @@ func (m *Messenger) ImportCommunity(ctx context.Context, key *ecdsa.PrivateKey)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = m.RequestCommunityInfoFromMailserver(community.IDString(), false)
|
_, err = m.RequestCommunityInfoFromMailserver(community.IDString(), community.Shard(), false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// TODO In the future we should add a mechanism to re-apply next steps (adding owner, joining)
|
// TODO In the future we should add a mechanism to re-apply next steps (adding owner, joining)
|
||||||
// if there is no connection with mailserver. Otherwise changes will be overwritten.
|
// if there is no connection with mailserver. Otherwise changes will be overwritten.
|
||||||
|
@ -2289,6 +2426,48 @@ func (m *Messenger) RemoveUserFromCommunity(id types.HexBytes, pkString string)
|
||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) SendCommunityShardKey(community *communities.Community, pubkeys []*ecdsa.PublicKey) error {
|
||||||
|
if m.transport.WakuVersion() != 2 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if !community.IsControlNode() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
key, err := m.transport.RetrievePubsubTopicKey(community.PubsubTopic())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if key == nil {
|
||||||
|
return nil // No community shard key available
|
||||||
|
}
|
||||||
|
|
||||||
|
communityShardKey := &protobuf.CommunityShardKey{
|
||||||
|
Clock: m.getTimesource().GetCurrentTime(),
|
||||||
|
CommunityId: community.ID(),
|
||||||
|
PrivateKey: crypto.FromECDSA(key),
|
||||||
|
Shard: community.Shard().Protobuffer(),
|
||||||
|
}
|
||||||
|
|
||||||
|
encodedMessage, err := proto.Marshal(communityShardKey)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
rawMessage := common.RawMessage{
|
||||||
|
Recipients: pubkeys,
|
||||||
|
ResendAutomatically: true,
|
||||||
|
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_SHARD_KEY,
|
||||||
|
Payload: encodedMessage,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = m.sender.SendPubsubTopicKey(context.Background(), &rawMessage)
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) UnbanUserFromCommunity(request *requests.UnbanUserFromCommunity) (*MessengerResponse, error) {
|
func (m *Messenger) UnbanUserFromCommunity(request *requests.UnbanUserFromCommunity) (*MessengerResponse, error) {
|
||||||
community, err := m.communitiesManager.UnbanUserFromCommunity(request)
|
community, err := m.communitiesManager.UnbanUserFromCommunity(request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2375,7 +2554,7 @@ func (m *Messenger) GetCommunityIDFromKey(communityKey string) string {
|
||||||
// RequestCommunityInfoFromMailserver installs filter for community and requests its details
|
// RequestCommunityInfoFromMailserver installs filter for community and requests its details
|
||||||
// from mailserver. It waits until it has the community before returning it.
|
// from mailserver. It waits until it has the community before returning it.
|
||||||
// If useDatabase is true, it searches for community in database and does not request mailserver.
|
// If useDatabase is true, it searches for community in database and does not request mailserver.
|
||||||
func (m *Messenger) RequestCommunityInfoFromMailserver(privateOrPublicKey string, useDatabase bool) (*communities.Community, error) {
|
func (m *Messenger) RequestCommunityInfoFromMailserver(privateOrPublicKey string, shard *common.Shard, useDatabase bool) (*communities.Community, error) {
|
||||||
communityID := m.GetCommunityIDFromKey(privateOrPublicKey)
|
communityID := m.GetCommunityIDFromKey(privateOrPublicKey)
|
||||||
if useDatabase {
|
if useDatabase {
|
||||||
community, err := m.findCommunityInfoFromDB(communityID)
|
community, err := m.findCommunityInfoFromDB(communityID)
|
||||||
|
@ -2387,12 +2566,12 @@ func (m *Messenger) RequestCommunityInfoFromMailserver(privateOrPublicKey string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return m.requestCommunityInfoFromMailserver(communityID, true)
|
return m.requestCommunityInfoFromMailserver(communityID, shard, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RequestCommunityInfoFromMailserverAsync installs filter for community and requests its details
|
// RequestCommunityInfoFromMailserverAsync installs filter for community and requests its details
|
||||||
// from mailserver. When response received it will be passed through signals handler
|
// from mailserver. When response received it will be passed through signals handler
|
||||||
func (m *Messenger) RequestCommunityInfoFromMailserverAsync(privateOrPublicKey string) error {
|
func (m *Messenger) RequestCommunityInfoFromMailserverAsync(privateOrPublicKey string, shard *common.Shard) error {
|
||||||
communityID := m.GetCommunityIDFromKey(privateOrPublicKey)
|
communityID := m.GetCommunityIDFromKey(privateOrPublicKey)
|
||||||
|
|
||||||
community, err := m.findCommunityInfoFromDB(communityID)
|
community, err := m.findCommunityInfoFromDB(communityID)
|
||||||
|
@ -2403,13 +2582,13 @@ func (m *Messenger) RequestCommunityInfoFromMailserverAsync(privateOrPublicKey s
|
||||||
m.config.messengerSignalsHandler.CommunityInfoFound(community)
|
m.config.messengerSignalsHandler.CommunityInfoFound(community)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
_, err = m.requestCommunityInfoFromMailserver(communityID, false)
|
_, err = m.requestCommunityInfoFromMailserver(communityID, shard, false)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// RequestCommunityInfoFromMailserver installs filter for community and requests its details
|
// RequestCommunityInfoFromMailserver installs filter for community and requests its details
|
||||||
// from mailserver. When response received it will be passed through signals handler
|
// from mailserver. When response received it will be passed through signals handler
|
||||||
func (m *Messenger) requestCommunityInfoFromMailserver(communityID string, waitForResponse bool) (*communities.Community, error) {
|
func (m *Messenger) requestCommunityInfoFromMailserver(communityID string, shard *common.Shard, waitForResponse bool) (*communities.Community, error) {
|
||||||
m.requestedCommunitiesLock.Lock()
|
m.requestedCommunitiesLock.Lock()
|
||||||
defer m.requestedCommunitiesLock.Unlock()
|
defer m.requestedCommunitiesLock.Unlock()
|
||||||
|
|
||||||
|
@ -2417,18 +2596,13 @@ func (m *Messenger) requestCommunityInfoFromMailserver(communityID string, waitF
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
id, err := hexutil.Decode(communityID)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
//If filter wasn't installed we create it and remember for deinstalling after
|
//If filter wasn't installed we create it and remember for deinstalling after
|
||||||
//response received
|
//response received
|
||||||
filter := m.transport.FilterByChatID(communityID)
|
filter := m.transport.FilterByChatID(communityID)
|
||||||
if filter == nil {
|
if filter == nil {
|
||||||
filters, err := m.transport.InitPublicFilters([]transport.FiltersToInitialize{{
|
filters, err := m.transport.InitPublicFilters([]transport.FiltersToInitialize{{
|
||||||
ChatID: communityID,
|
ChatID: communityID,
|
||||||
PubsubTopic: transport.GetPubsubTopic(id),
|
PubsubTopic: transport.GetPubsubTopic(shard.TransportShard()),
|
||||||
}})
|
}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Can't install filter for community: %v", err)
|
return nil, fmt.Errorf("Can't install filter for community: %v", err)
|
||||||
|
@ -2448,7 +2622,7 @@ func (m *Messenger) requestCommunityInfoFromMailserver(communityID string, waitF
|
||||||
to := uint32(m.transport.GetCurrentTime() / 1000)
|
to := uint32(m.transport.GetCurrentTime() / 1000)
|
||||||
from := to - oneMonthInSeconds
|
from := to - oneMonthInSeconds
|
||||||
|
|
||||||
_, err = m.performMailserverRequest(func() (*MessengerResponse, error) {
|
_, err := m.performMailserverRequest(func() (*MessengerResponse, error) {
|
||||||
batch := MailserverBatch{From: from, To: to, Topics: []types.TopicType{filter.ContentTopic}}
|
batch := MailserverBatch{From: from, To: to, Topics: []types.TopicType{filter.ContentTopic}}
|
||||||
m.logger.Info("Requesting historic")
|
m.logger.Info("Requesting historic")
|
||||||
err := m.processMailserverBatch(batch)
|
err := m.processMailserverBatch(batch)
|
||||||
|
@ -2485,28 +2659,23 @@ func (m *Messenger) requestCommunityInfoFromMailserver(communityID string, waitF
|
||||||
|
|
||||||
// RequestCommunityInfoFromMailserver installs filter for community and requests its details
|
// RequestCommunityInfoFromMailserver installs filter for community and requests its details
|
||||||
// from mailserver. When response received it will be passed through signals handler
|
// from mailserver. When response received it will be passed through signals handler
|
||||||
func (m *Messenger) requestCommunitiesFromMailserver(communityIDs []string) {
|
func (m *Messenger) requestCommunitiesFromMailserver(communities []communities.CommunityShard) {
|
||||||
m.requestedCommunitiesLock.Lock()
|
m.requestedCommunitiesLock.Lock()
|
||||||
defer m.requestedCommunitiesLock.Unlock()
|
defer m.requestedCommunitiesLock.Unlock()
|
||||||
|
|
||||||
var topics []types.TopicType
|
var topics []types.TopicType
|
||||||
for _, communityID := range communityIDs {
|
for _, c := range communities {
|
||||||
if _, ok := m.requestedCommunities[communityID]; ok {
|
if _, ok := m.requestedCommunities[c.CommunityID]; ok {
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
id, err := hexutil.Decode(communityID)
|
|
||||||
if err != nil {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
//If filter wasn't installed we create it and remember for deinstalling after
|
//If filter wasn't installed we create it and remember for deinstalling after
|
||||||
//response received
|
//response received
|
||||||
filter := m.transport.FilterByChatID(communityID)
|
filter := m.transport.FilterByChatID(c.CommunityID)
|
||||||
if filter == nil {
|
if filter == nil {
|
||||||
filters, err := m.transport.InitPublicFilters([]transport.FiltersToInitialize{{
|
filters, err := m.transport.InitPublicFilters([]transport.FiltersToInitialize{{
|
||||||
ChatID: communityID,
|
ChatID: c.CommunityID,
|
||||||
PubsubTopic: transport.GetPubsubTopic(id),
|
PubsubTopic: transport.GetPubsubTopic(c.Shard.TransportShard()),
|
||||||
}})
|
}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.logger.Error("Can't install filter for community", zap.Error(err))
|
m.logger.Error("Can't install filter for community", zap.Error(err))
|
||||||
|
@ -2517,10 +2686,10 @@ func (m *Messenger) requestCommunitiesFromMailserver(communityIDs []string) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
filter = filters[0]
|
filter = filters[0]
|
||||||
m.requestedCommunities[communityID] = filter
|
m.requestedCommunities[c.CommunityID] = filter
|
||||||
} else {
|
} else {
|
||||||
//we don't remember filter id associated with community because it was already installed
|
//we don't remember filter id associated with community because it was already installed
|
||||||
m.requestedCommunities[communityID] = nil
|
m.requestedCommunities[c.CommunityID] = nil
|
||||||
}
|
}
|
||||||
topics = append(topics, filter.ContentTopic)
|
topics = append(topics, filter.ContentTopic)
|
||||||
}
|
}
|
||||||
|
@ -2549,8 +2718,8 @@ func (m *Messenger) requestCommunitiesFromMailserver(communityIDs []string) {
|
||||||
select {
|
select {
|
||||||
case <-time.After(200 * time.Millisecond):
|
case <-time.After(200 * time.Millisecond):
|
||||||
allLoaded := true
|
allLoaded := true
|
||||||
for _, c := range communityIDs {
|
for _, c := range communities {
|
||||||
community, err := m.communitiesManager.GetByIDString(c)
|
community, err := m.communitiesManager.GetByIDString(c.CommunityID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.logger.Error("Error loading community", zap.Error(err))
|
m.logger.Error("Error loading community", zap.Error(err))
|
||||||
break
|
break
|
||||||
|
@ -2571,8 +2740,8 @@ func (m *Messenger) requestCommunitiesFromMailserver(communityIDs []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range communityIDs {
|
for _, c := range communities {
|
||||||
m.forgetCommunityRequest(c)
|
m.forgetCommunityRequest(c.CommunityID)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2622,7 +2791,7 @@ func (m *Messenger) passStoredCommunityInfoToSignalHandler(communityID string) {
|
||||||
|
|
||||||
// handleCommunityDescription handles an community description
|
// handleCommunityDescription handles an community description
|
||||||
func (m *Messenger) handleCommunityDescription(state *ReceivedMessageState, signer *ecdsa.PublicKey, description *protobuf.CommunityDescription, rawPayload []byte) error {
|
func (m *Messenger) handleCommunityDescription(state *ReceivedMessageState, signer *ecdsa.PublicKey, description *protobuf.CommunityDescription, rawPayload []byte) error {
|
||||||
communityResponse, err := m.communitiesManager.HandleCommunityDescriptionMessage(signer, description, rawPayload)
|
communityResponse, err := m.communitiesManager.HandleCommunityDescriptionMessage(signer, description, rawPayload, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -2764,7 +2933,63 @@ func (m *Messenger) HandleCommunityEventsMessageRejected(state *ReceivedMessageS
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err = m.publishCommunityEvents(reapplyEventsMessage)
|
community, err := m.communitiesManager.GetByID(reapplyEventsMessage.CommunityID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.publishCommunityEvents(community, reapplyEventsMessage)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// HandleCommunityShardKey handles the private keys for the community shards
|
||||||
|
func (m *Messenger) HandleCommunityShardKey(state *ReceivedMessageState, message *protobuf.CommunityShardKey, statusMessage *v1protocol.StatusMessage) error {
|
||||||
|
// TODO: @cammellos: This is risky, it does not seem to support out of order messages
|
||||||
|
// (say that the community changes shards twice, last one wins, but we don't check clock
|
||||||
|
// etc)
|
||||||
|
|
||||||
|
// TODO: @cammellos: getbyid returns nil if the community is not in the db, so we need to handle it
|
||||||
|
community, err := m.communitiesManager.GetByID(message.CommunityId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we haven't joined the community, nothing to do
|
||||||
|
if !community.Joined() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
signer := state.CurrentMessageState.PublicKey
|
||||||
|
if signer == nil {
|
||||||
|
return errors.New("signer can't be nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !community.IsMemberOwner(signer) {
|
||||||
|
return communities.ErrNotAuthorized
|
||||||
|
}
|
||||||
|
|
||||||
|
return m.handleCommunityShardAndFiltersFromProto(community, common.ShardFromProtobuff(message.Shard), message.PrivateKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) handleCommunityShardAndFiltersFromProto(community *communities.Community, shard *common.Shard, privateKeyBytes []byte) error {
|
||||||
|
err := m.communitiesManager.UpdateShard(community, shard)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var privKey *ecdsa.PrivateKey = nil
|
||||||
|
if privateKeyBytes != nil {
|
||||||
|
privKey, err = crypto.ToECDSA(privateKeyBytes)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.UpdateCommunityFilters(community, privKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -4265,8 +4490,8 @@ func (m *Messenger) RequestImportDiscordCommunity(request *requests.ImportDiscor
|
||||||
|
|
||||||
// Init the community filter so we can receive messages on the community
|
// Init the community filter so we can receive messages on the community
|
||||||
_, err = m.transport.InitCommunityFilters([]transport.CommunityFilterToInitialize{{
|
_, err = m.transport.InitCommunityFilters([]transport.CommunityFilterToInitialize{{
|
||||||
CommunityID: discordCommunity.ID(),
|
Shard: discordCommunity.Shard().TransportShard(),
|
||||||
PrivKey: discordCommunity.PrivateKey(),
|
PrivKey: discordCommunity.PrivateKey(),
|
||||||
}})
|
}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.cleanUpImport(communityID)
|
m.cleanUpImport(communityID)
|
||||||
|
|
|
@ -8,9 +8,10 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/status-im/status-go/deprecation"
|
"github.com/status-im/status-go/deprecation"
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
|
|
|
@ -1570,6 +1570,16 @@ func (m *Messenger) HandleCommunityRequestToJoinResponse(state *ReceivedMessageS
|
||||||
}
|
}
|
||||||
|
|
||||||
if requestToJoinResponseProto.Accepted {
|
if requestToJoinResponseProto.Accepted {
|
||||||
|
community, err := m.communitiesManager.GetByID(requestToJoinResponseProto.CommunityId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.handleCommunityShardAndFiltersFromProto(community, common.ShardFromProtobuff(requestToJoinResponseProto.Shard), requestToJoinResponseProto.ProtectedTopicPrivateKey)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
response, err := m.JoinCommunity(context.Background(), requestToJoinResponseProto.CommunityId, false)
|
response, err := m.JoinCommunity(context.Background(), requestToJoinResponseProto.CommunityId, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1664,8 +1674,8 @@ func (m *Messenger) HandleCommunityRequestToLeave(state *ReceivedMessageState, r
|
||||||
}
|
}
|
||||||
|
|
||||||
// handleWrappedCommunityDescriptionMessage handles a wrapped community description
|
// handleWrappedCommunityDescriptionMessage handles a wrapped community description
|
||||||
func (m *Messenger) handleWrappedCommunityDescriptionMessage(payload []byte) (*communities.CommunityResponse, error) {
|
func (m *Messenger) handleWrappedCommunityDescriptionMessage(payload []byte, shard *common.Shard) (*communities.CommunityResponse, error) {
|
||||||
return m.communitiesManager.HandleWrappedCommunityDescriptionMessage(payload)
|
return m.communitiesManager.HandleWrappedCommunityDescriptionMessage(payload, shard)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) handleEditMessage(state *ReceivedMessageState, editMessage EditMessage) error {
|
func (m *Messenger) handleEditMessage(state *ReceivedMessageState, editMessage EditMessage) error {
|
||||||
|
@ -2265,7 +2275,7 @@ func (m *Messenger) handleChatMessage(state *ReceivedMessageState, forceSeen boo
|
||||||
if receivedMessage.ContentType == protobuf.ChatMessage_COMMUNITY {
|
if receivedMessage.ContentType == protobuf.ChatMessage_COMMUNITY {
|
||||||
m.logger.Debug("Handling community content type")
|
m.logger.Debug("Handling community content type")
|
||||||
|
|
||||||
communityResponse, err := m.handleWrappedCommunityDescriptionMessage(receivedMessage.GetCommunity())
|
communityResponse, err := m.handleWrappedCommunityDescriptionMessage(receivedMessage.GetCommunity(), common.ShardFromProtobuff(receivedMessage.Shard))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,6 +226,9 @@ func (m *Messenger) dispatchToHandler(messageState *ReceivedMessageState, protoB
|
||||||
case protobuf.ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE:
|
case protobuf.ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE:
|
||||||
return m.handleCommunityPrivilegedUserSyncMessageProtobuf(messageState, protoBytes, msg, filter)
|
return m.handleCommunityPrivilegedUserSyncMessageProtobuf(messageState, protoBytes, msg, filter)
|
||||||
|
|
||||||
|
case protobuf.ApplicationMetadataMessage_COMMUNITY_SHARD_KEY:
|
||||||
|
return m.handleCommunityShardKeyProtobuf(messageState, protoBytes, msg, filter)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
m.logger.Info("protobuf type not found", zap.String("type", string(msg.Type)))
|
m.logger.Info("protobuf type not found", zap.String("type", string(msg.Type)))
|
||||||
return errors.New("protobuf type not found")
|
return errors.New("protobuf type not found")
|
||||||
|
@ -1608,3 +1611,21 @@ func (m *Messenger) handleCommunityPrivilegedUserSyncMessageProtobuf(messageStat
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (m *Messenger) handleCommunityShardKeyProtobuf(messageState *ReceivedMessageState, protoBytes []byte, msg *v1protocol.StatusMessage, filter transport.Filter) error {
|
||||||
|
m.logger.Info("handling CommunityShardKey")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
p := &protobuf.CommunityShardKey{}
|
||||||
|
err := proto.Unmarshal(protoBytes, p)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, messageState.CurrentMessageState.Contact.ID, filter.ContentTopic, filter.ChatID, msg.Type, p)
|
||||||
|
|
||||||
|
return m.HandleCommunityShardKey(messageState, p, msg)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,10 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/status-im/status-go/connection"
|
"github.com/status-im/status-go/connection"
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package protocol
|
package protocol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/ecdsa"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
ensservice "github.com/status-im/status-go/services/ens"
|
ensservice "github.com/status-im/status-go/services/ens"
|
||||||
|
|
||||||
"github.com/status-im/status-go/services/browsers"
|
"github.com/status-im/status-go/services/browsers"
|
||||||
|
@ -34,6 +37,11 @@ type ClearedHistory struct {
|
||||||
ClearedAt uint64 `json:"clearedAt"`
|
ClearedAt uint64 `json:"clearedAt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ProtectedTopic struct {
|
||||||
|
PubsubTopic string `json:"pubsubTopic"`
|
||||||
|
PublicKey string `json:"publicKey"`
|
||||||
|
}
|
||||||
|
|
||||||
type MessengerResponse struct {
|
type MessengerResponse struct {
|
||||||
Contacts []*Contact
|
Contacts []*Contact
|
||||||
Installations []*multidevice.Installation
|
Installations []*multidevice.Installation
|
||||||
|
@ -62,6 +70,7 @@ type MessengerResponse struct {
|
||||||
removedMessages map[string]*RemovedMessage
|
removedMessages map[string]*RemovedMessage
|
||||||
communities map[string]*communities.Community
|
communities map[string]*communities.Community
|
||||||
communitiesSettings map[string]*communities.CommunitySettings
|
communitiesSettings map[string]*communities.CommunitySettings
|
||||||
|
protectedTopics map[string]*ecdsa.PrivateKey
|
||||||
activityCenterNotifications map[string]*ActivityCenterNotification
|
activityCenterNotifications map[string]*ActivityCenterNotification
|
||||||
activityCenterState *ActivityCenterState
|
activityCenterState *ActivityCenterState
|
||||||
messages map[string]*common.Message
|
messages map[string]*common.Message
|
||||||
|
@ -103,6 +112,7 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) {
|
||||||
Notifications []*localnotifications.Notification `json:"notifications"`
|
Notifications []*localnotifications.Notification `json:"notifications"`
|
||||||
Communities []*communities.Community `json:"communities,omitempty"`
|
Communities []*communities.Community `json:"communities,omitempty"`
|
||||||
CommunitiesSettings []*communities.CommunitySettings `json:"communitiesSettings,omitempty"`
|
CommunitiesSettings []*communities.CommunitySettings `json:"communitiesSettings,omitempty"`
|
||||||
|
ProtectedTopics []ProtectedTopic `json:"protectedTopics,omitempty"`
|
||||||
ActivityCenterNotifications []*ActivityCenterNotification `json:"activityCenterNotifications,omitempty"`
|
ActivityCenterNotifications []*ActivityCenterNotification `json:"activityCenterNotifications,omitempty"`
|
||||||
ActivityCenterState *ActivityCenterState `json:"activityCenterState,omitempty"`
|
ActivityCenterState *ActivityCenterState `json:"activityCenterState,omitempty"`
|
||||||
CurrentStatus *UserStatus `json:"currentStatus,omitempty"`
|
CurrentStatus *UserStatus `json:"currentStatus,omitempty"`
|
||||||
|
@ -144,6 +154,7 @@ func (r *MessengerResponse) MarshalJSON() ([]byte, error) {
|
||||||
Chats: r.Chats(),
|
Chats: r.Chats(),
|
||||||
Communities: r.Communities(),
|
Communities: r.Communities(),
|
||||||
CommunitiesSettings: r.CommunitiesSettings(),
|
CommunitiesSettings: r.CommunitiesSettings(),
|
||||||
|
ProtectedTopics: r.ProtectedTopics(),
|
||||||
RemovedChats: r.RemovedChats(),
|
RemovedChats: r.RemovedChats(),
|
||||||
RemovedMessages: r.RemovedMessages(),
|
RemovedMessages: r.RemovedMessages(),
|
||||||
ClearedHistories: r.ClearedHistories(),
|
ClearedHistories: r.ClearedHistories(),
|
||||||
|
@ -211,6 +222,17 @@ func (r *MessengerResponse) CommunitiesSettings() []*communities.CommunitySettin
|
||||||
return settings
|
return settings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *MessengerResponse) ProtectedTopics() []ProtectedTopic {
|
||||||
|
protectedTopics := make([]ProtectedTopic, 0, len(r.protectedTopics))
|
||||||
|
for pubsubTopic, privKey := range r.protectedTopics {
|
||||||
|
protectedTopics = append(protectedTopics, ProtectedTopic{
|
||||||
|
PubsubTopic: pubsubTopic,
|
||||||
|
PublicKey: hexutil.Encode(crypto.FromECDSAPub(&privKey.PublicKey)),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return protectedTopics
|
||||||
|
}
|
||||||
|
|
||||||
func (r *MessengerResponse) Notifications() []*localnotifications.Notification {
|
func (r *MessengerResponse) Notifications() []*localnotifications.Notification {
|
||||||
var notifications []*localnotifications.Notification
|
var notifications []*localnotifications.Notification
|
||||||
for _, n := range r.notifications {
|
for _, n := range r.notifications {
|
||||||
|
@ -355,6 +377,14 @@ func (r *MessengerResponse) AddRequestsToJoinCommunity(requestsToJoin []*communi
|
||||||
r.RequestsToJoinCommunity = append(r.RequestsToJoinCommunity, requestsToJoin...)
|
r.RequestsToJoinCommunity = append(r.RequestsToJoinCommunity, requestsToJoin...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *MessengerResponse) AddProtectedTopic(pubsubTopic string, privKey *ecdsa.PrivateKey) {
|
||||||
|
if r.protectedTopics == nil {
|
||||||
|
r.protectedTopics = make(map[string]*ecdsa.PrivateKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.protectedTopics[pubsubTopic] = privKey
|
||||||
|
}
|
||||||
|
|
||||||
func (r *MessengerResponse) AddRequestToJoinCommunity(requestToJoin *communities.RequestToJoin) {
|
func (r *MessengerResponse) AddRequestToJoinCommunity(requestToJoin *communities.RequestToJoin) {
|
||||||
r.RequestsToJoinCommunity = append(r.RequestsToJoinCommunity, requestToJoin)
|
r.RequestsToJoinCommunity = append(r.RequestsToJoinCommunity, requestToJoin)
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ type URLDataResponse struct {
|
||||||
Community CommunityURLData `json:"community"`
|
Community CommunityURLData `json:"community"`
|
||||||
Channel CommunityChannelURLData `json:"channel"`
|
Channel CommunityChannelURLData `json:"channel"`
|
||||||
Contact ContactURLData `json:"contact"`
|
Contact ContactURLData `json:"contact"`
|
||||||
|
Shard *common.Shard `json:"shard,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
const baseShareURL = "https://status.app"
|
const baseShareURL = "https://status.app"
|
||||||
|
@ -119,6 +120,7 @@ func (m *Messenger) parseCommunityURLWithChatKey(urlData string) (*URLDataRespon
|
||||||
|
|
||||||
return &URLDataResponse{
|
return &URLDataResponse{
|
||||||
Community: m.prepareCommunityData(community),
|
Community: m.prepareCommunityData(community),
|
||||||
|
Shard: community.Shard(),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,6 +140,7 @@ func (m *Messenger) prepareEncodedCommunityData(community *communities.Community
|
||||||
|
|
||||||
urlDataProto := &protobuf.URLData{
|
urlDataProto := &protobuf.URLData{
|
||||||
Content: communityData,
|
Content: communityData,
|
||||||
|
Shard: community.Shard().Protobuffer(),
|
||||||
}
|
}
|
||||||
|
|
||||||
urlData, err := proto.Marshal(urlDataProto)
|
urlData, err := proto.Marshal(urlDataProto)
|
||||||
|
@ -208,6 +211,7 @@ func (m *Messenger) parseCommunityURLWithData(data string, chatKey string) (*URL
|
||||||
TagIndices: communityProto.TagIndices,
|
TagIndices: communityProto.TagIndices,
|
||||||
CommunityID: types.EncodeHex(communityID),
|
CommunityID: types.EncodeHex(communityID),
|
||||||
},
|
},
|
||||||
|
Shard: common.ShardFromProtobuff(urlDataProto.Shard),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,6 +278,7 @@ func (m *Messenger) parseCommunityChannelURLWithChatKey(channelID string, public
|
||||||
return &URLDataResponse{
|
return &URLDataResponse{
|
||||||
Community: m.prepareCommunityData(community),
|
Community: m.prepareCommunityData(community),
|
||||||
Channel: m.prepareCommunityChannelData(channel),
|
Channel: m.prepareCommunityChannelData(channel),
|
||||||
|
Shard: community.Shard(),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,6 +307,7 @@ func (m *Messenger) prepareEncodedCommunityChannelData(community *communities.Co
|
||||||
|
|
||||||
urlDataProto := &protobuf.URLData{
|
urlDataProto := &protobuf.URLData{
|
||||||
Content: channelData,
|
Content: channelData,
|
||||||
|
Shard: community.Shard().Protobuffer(),
|
||||||
}
|
}
|
||||||
|
|
||||||
urlData, err := proto.Marshal(urlDataProto)
|
urlData, err := proto.Marshal(urlDataProto)
|
||||||
|
@ -392,6 +398,7 @@ func (m *Messenger) parseCommunityChannelURLWithData(data string, chatKey string
|
||||||
Color: channelProto.Color,
|
Color: channelProto.Color,
|
||||||
ChannelUUID: channelProto.Uuid,
|
ChannelUUID: channelProto.Uuid,
|
||||||
},
|
},
|
||||||
|
Shard: common.ShardFromProtobuff(urlDataProto.Shard),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@
|
||||||
// 1689266326_create_communities_events_table.up.sql (164B)
|
// 1689266326_create_communities_events_table.up.sql (164B)
|
||||||
// 1689931300_add_community_tokens_deployer_and_priv_level.up.sql (156B)
|
// 1689931300_add_community_tokens_deployer_and_priv_level.up.sql (156B)
|
||||||
// 1693311881_add_unfurled_links_to_message_edits.up.sql (64B)
|
// 1693311881_add_unfurled_links_to_message_edits.up.sql (64B)
|
||||||
|
// 1693311981_community_shard.up.sql (156B)
|
||||||
// README.md (554B)
|
// README.md (554B)
|
||||||
// doc.go (850B)
|
// doc.go (850B)
|
||||||
|
|
||||||
|
@ -186,7 +187,7 @@ func _000001_initDownDbSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -206,7 +207,7 @@ func _000001_initUpDbSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -226,7 +227,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -246,7 +247,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -266,7 +267,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -286,7 +287,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -306,7 +307,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -326,7 +327,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -346,7 +347,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -366,7 +367,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -386,7 +387,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -406,7 +407,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -426,7 +427,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -446,7 +447,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -466,7 +467,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -486,7 +487,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -506,7 +507,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -526,7 +527,7 @@ func _1603816533_add_linksUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -546,7 +547,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -566,7 +567,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -586,7 +587,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -606,7 +607,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -626,7 +627,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -646,7 +647,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -666,7 +667,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -686,7 +687,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -706,7 +707,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -726,7 +727,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -746,7 +747,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -766,7 +767,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -786,7 +787,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -806,7 +807,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -826,7 +827,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -846,7 +847,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -866,7 +867,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -886,7 +887,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -906,7 +907,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -926,7 +927,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -946,7 +947,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -966,7 +967,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (*
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -986,7 +987,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1006,7 +1007,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1026,7 +1027,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1046,7 +1047,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1066,7 +1067,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1086,7 +1087,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1106,7 +1107,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1126,7 +1127,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1146,7 +1147,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1166,7 +1167,7 @@ func _1645034601_display_nameUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1186,7 +1187,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xe0, 0x5d, 0x68, 0xb8, 0x50, 0xa4, 0xbb, 0x3e, 0x4f, 0x2, 0x87, 0xad, 0x87, 0x6e, 0x38, 0xdf, 0xc8, 0x4c, 0xe2, 0x5f, 0xd1, 0x6, 0xdc, 0xe7, 0xbd, 0x4a, 0x9c, 0xf3, 0x91, 0xa1, 0x51}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xe0, 0x5d, 0x68, 0xb8, 0x50, 0xa4, 0xbb, 0x3e, 0x4f, 0x2, 0x87, 0xad, 0x87, 0x6e, 0x38, 0xdf, 0xc8, 0x4c, 0xe2, 0x5f, 0xd1, 0x6, 0xdc, 0xe7, 0xbd, 0x4a, 0x9c, 0xf3, 0x91, 0xa1, 0x51}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1206,7 +1207,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xc1, 0x3f, 0x29, 0xe, 0x19, 0x86, 0x1a, 0x4c, 0x6c, 0x2a, 0x90, 0x9d, 0xdf, 0xb1, 0xb, 0x72, 0x25, 0xcd, 0x6c, 0x5f, 0xd, 0x51, 0x9e, 0x85, 0xc0, 0x9, 0xb7, 0xbc, 0x87, 0x23, 0xec}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xc1, 0x3f, 0x29, 0xe, 0x19, 0x86, 0x1a, 0x4c, 0x6c, 0x2a, 0x90, 0x9d, 0xdf, 0xb1, 0xb, 0x72, 0x25, 0xcd, 0x6c, 0x5f, 0xd, 0x51, 0x9e, 0x85, 0xc0, 0x9, 0xb7, 0xbc, 0x87, 0x23, 0xec}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1226,7 +1227,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3a, 0x3f, 0x28, 0x38, 0x33, 0xdb, 0xe9, 0x4d, 0xc0, 0x54, 0x8c, 0x2a, 0x73, 0xc4, 0xdd, 0x5c, 0xc5, 0x1a, 0x93, 0x4b, 0x6, 0x13, 0xbe, 0x42, 0xd2, 0x7f, 0xd4, 0xc, 0xc5, 0x4e, 0x6d, 0xce}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3a, 0x3f, 0x28, 0x38, 0x33, 0xdb, 0xe9, 0x4d, 0xc0, 0x54, 0x8c, 0x2a, 0x73, 0xc4, 0xdd, 0x5c, 0xc5, 0x1a, 0x93, 0x4b, 0x6, 0x13, 0xbe, 0x42, 0xd2, 0x7f, 0xd4, 0xc, 0xc5, 0x4e, 0x6d, 0xce}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1246,7 +1247,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0xb7, 0xdb, 0x79, 0x1, 0x15, 0xe7, 0x76, 0x5d, 0x22, 0x54, 0x82, 0x9a, 0xbe, 0x24, 0xc1, 0x82, 0xcf, 0x67, 0x91, 0x53, 0xcc, 0xac, 0x74, 0x18, 0x61, 0x69, 0x68, 0x19, 0xca, 0x2b, 0xa8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0xb7, 0xdb, 0x79, 0x1, 0x15, 0xe7, 0x76, 0x5d, 0x22, 0x54, 0x82, 0x9a, 0xbe, 0x24, 0xc1, 0x82, 0xcf, 0x67, 0x91, 0x53, 0xcc, 0xac, 0x74, 0x18, 0x61, 0x69, 0x68, 0x19, 0xca, 0x2b, 0xa8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1266,7 +1267,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x12, 0x9c, 0x96, 0xe2, 0x42, 0x3f, 0x94, 0x62, 0xc2, 0x76, 0xab, 0x3b, 0x4c, 0x85, 0x36, 0x48, 0xcc, 0x73, 0x60, 0x93, 0x5a, 0xd6, 0x7, 0xd6, 0x0, 0xee, 0x1b, 0x1e, 0x34, 0x58, 0x99}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x12, 0x9c, 0x96, 0xe2, 0x42, 0x3f, 0x94, 0x62, 0xc2, 0x76, 0xab, 0x3b, 0x4c, 0x85, 0x36, 0x48, 0xcc, 0x73, 0x60, 0x93, 0x5a, 0xd6, 0x7, 0xd6, 0x0, 0xee, 0x1b, 0x1e, 0x34, 0x58, 0x99}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1286,7 +1287,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x76, 0x40, 0xe9, 0x85, 0xc4, 0x38, 0xf8, 0xe5, 0x5d, 0xe8, 0x13, 0x46, 0x1b, 0xc, 0x1, 0xe9, 0x2f, 0x74, 0xd1, 0x79, 0x59, 0xa4, 0xdb, 0x4a, 0x4a, 0xf4, 0x98, 0x58, 0x3c, 0x57, 0xd3}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x76, 0x40, 0xe9, 0x85, 0xc4, 0x38, 0xf8, 0xe5, 0x5d, 0xe8, 0x13, 0x46, 0x1b, 0xc, 0x1, 0xe9, 0x2f, 0x74, 0xd1, 0x79, 0x59, 0xa4, 0xdb, 0x4a, 0x4a, 0xf4, 0x98, 0x58, 0x3c, 0x57, 0xd3}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1306,7 +1307,7 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0x5c, 0x72, 0x2, 0xed, 0x36, 0x19, 0x91, 0x4d, 0x1a, 0xc1, 0xab, 0x84, 0xfa, 0x41, 0xb1, 0x46, 0xa5, 0xdb, 0x3f, 0x76, 0x47, 0xd3, 0x75, 0x3c, 0x6a, 0x8e, 0x78, 0xe6, 0x41, 0xdc, 0x7f}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0x5c, 0x72, 0x2, 0xed, 0x36, 0x19, 0x91, 0x4d, 0x1a, 0xc1, 0xab, 0x84, 0xfa, 0x41, 0xb1, 0x46, 0xa5, 0xdb, 0x3f, 0x76, 0x47, 0xd3, 0x75, 0x3c, 0x6a, 0x8e, 0x78, 0xe6, 0x41, 0xdc, 0x7f}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1326,7 +1327,7 @@ func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x2e, 0x7d, 0x14, 0xef, 0x6e, 0x95, 0x4b, 0x6, 0x70, 0x2e, 0xd1, 0xf6, 0x59, 0xf9, 0xe, 0x56, 0xa, 0x9c, 0x80, 0x18, 0xca, 0xb9, 0x49, 0x19, 0xf, 0x89, 0x94, 0x36, 0x6d, 0x93, 0x9a}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x2e, 0x7d, 0x14, 0xef, 0x6e, 0x95, 0x4b, 0x6, 0x70, 0x2e, 0xd1, 0xf6, 0x59, 0xf9, 0xe, 0x56, 0xa, 0x9c, 0x80, 0x18, 0xca, 0xb9, 0x49, 0x19, 0xf, 0x89, 0x94, 0x36, 0x6d, 0x93, 0x9a}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1346,7 +1347,7 @@ func _1662044232_add_chat_imageUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1366,7 +1367,7 @@ func _1662106895_add_chat_first_message_timestampUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1386,7 +1387,7 @@ func _1662723928_add_discord_author_image_fieldsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1406,7 +1407,7 @@ func _1664195977_add_deleted_for_mesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1426,7 +1427,7 @@ func _1664367420_add_discord_attachments_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1446,7 +1447,7 @@ func _1665079662_add_spectated_column_in_communitiesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x5d, 0xfe, 0xe2, 0xbe, 0xdf, 0xba, 0x45, 0xe9, 0xfc, 0xa7, 0x5f, 0xda, 0x19, 0xdb, 0x40, 0x96, 0x59, 0x78, 0xa, 0xd7, 0x4a, 0xca, 0x1a, 0x93, 0xfb, 0xae, 0x6d, 0x74, 0x7, 0x36, 0xdd}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x5d, 0xfe, 0xe2, 0xbe, 0xdf, 0xba, 0x45, 0xe9, 0xfc, 0xa7, 0x5f, 0xda, 0x19, 0xdb, 0x40, 0x96, 0x59, 0x78, 0xa, 0xd7, 0x4a, 0xca, 0x1a, 0x93, 0xfb, 0xae, 0x6d, 0x74, 0x7, 0x36, 0xdd}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1466,7 +1467,7 @@ func _1665479047_add_community_id_in_notificationsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0x8f, 0x8b, 0x1c, 0xaa, 0x6a, 0x56, 0xd6, 0xa5, 0x88, 0x57, 0x13, 0x8f, 0xea, 0xb9, 0x23, 0x82, 0x50, 0xb7, 0x65, 0x1f, 0xab, 0xfa, 0x23, 0x6f, 0x0, 0x7, 0xb6, 0x6e, 0xb5, 0x85, 0x44}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0x8f, 0x8b, 0x1c, 0xaa, 0x6a, 0x56, 0xd6, 0xa5, 0x88, 0x57, 0x13, 0x8f, 0xea, 0xb9, 0x23, 0x82, 0x50, 0xb7, 0x65, 0x1f, 0xab, 0xfa, 0x23, 0x6f, 0x0, 0x7, 0xb6, 0x6e, 0xb5, 0x85, 0x44}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1486,7 +1487,7 @@ func _1665484435_add_encrypted_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x5c, 0x1e, 0x1c, 0x7f, 0xae, 0x5f, 0xeb, 0x3c, 0x6c, 0xcd, 0xc2, 0x99, 0x48, 0x5c, 0x83, 0xa0, 0xa2, 0x97, 0x5, 0x39, 0x82, 0x71, 0x90, 0x47, 0x21, 0x84, 0x29, 0x19, 0xa4, 0x7a, 0x90}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x5c, 0x1e, 0x1c, 0x7f, 0xae, 0x5f, 0xeb, 0x3c, 0x6c, 0xcd, 0xc2, 0x99, 0x48, 0x5c, 0x83, 0xa0, 0xa2, 0x97, 0x5, 0x39, 0x82, 0x71, 0x90, 0x47, 0x21, 0x84, 0x29, 0x19, 0xa4, 0x7a, 0x90}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1506,7 +1507,7 @@ func _1665560200_add_contact_verification_individualUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0664), modTime: time.Unix(1667843815, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc5, 0xbb, 0x61, 0xfd, 0xbf, 0x33, 0x1d, 0x4e, 0x5f, 0xbd, 0x86, 0x42, 0xb0, 0x6c, 0xf7, 0x39, 0x19, 0x6e, 0x72, 0x35, 0xfd, 0x1b, 0xd6, 0xbd, 0xf6, 0x81, 0x21, 0xc4, 0xaa, 0x6, 0x62, 0x40}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc5, 0xbb, 0x61, 0xfd, 0xbf, 0x33, 0x1d, 0x4e, 0x5f, 0xbd, 0x86, 0x42, 0xb0, 0x6c, 0xf7, 0x39, 0x19, 0x6e, 0x72, 0x35, 0xfd, 0x1b, 0xd6, 0xbd, 0xf6, 0x81, 0x21, 0xc4, 0xaa, 0x6, 0x62, 0x40}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1526,7 +1527,7 @@ func _1670921937_add_album_idUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0664), modTime: time.Unix(1671559305, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xae, 0x83, 0x58, 0xb7, 0x77, 0x5, 0xca, 0xe3, 0xda, 0x32, 0x8f, 0x7b, 0xa4, 0x2f, 0x4c, 0xaf, 0x5f, 0xfa, 0x94, 0x36, 0xe4, 0xf9, 0x7, 0xc6, 0xd6, 0xb7, 0x90, 0xf3, 0xe5, 0xb5, 0x3}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xae, 0x83, 0x58, 0xb7, 0x77, 0x5, 0xca, 0xe3, 0xda, 0x32, 0x8f, 0x7b, 0xa4, 0x2f, 0x4c, 0xaf, 0x5f, 0xfa, 0x94, 0x36, 0xe4, 0xf9, 0x7, 0xc6, 0xd6, 0xb7, 0x90, 0xf3, 0xe5, 0xb5, 0x3}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1546,7 +1547,7 @@ func _1673373000_add_repliedUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1673398499, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x1c, 0xae, 0xf2, 0xf, 0xb4, 0xc2, 0xba, 0x3c, 0xfe, 0x7b, 0xb0, 0xf, 0xf, 0xd5, 0xbc, 0xe2, 0xa7, 0xad, 0x50, 0xd9, 0x5a, 0xe8, 0x96, 0x22, 0x65, 0x89, 0xcf, 0x4a, 0x9a, 0x1b, 0x94}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x1c, 0xae, 0xf2, 0xf, 0xb4, 0xc2, 0xba, 0x3c, 0xfe, 0x7b, 0xb0, 0xf, 0xf, 0xd5, 0xbc, 0xe2, 0xa7, 0xad, 0x50, 0xd9, 0x5a, 0xe8, 0x96, 0x22, 0x65, 0x89, 0xcf, 0x4a, 0x9a, 0x1b, 0x94}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1566,7 +1567,7 @@ func _1673428910_add_image_width_heightUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0664), modTime: time.Unix(1673527384, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x74, 0xda, 0x93, 0x2a, 0x9b, 0x6b, 0xb7, 0x96, 0xcd, 0xac, 0xf, 0xaf, 0x54, 0x89, 0x9e, 0x91, 0x5b, 0xd0, 0x4a, 0xa, 0x8d, 0x9e, 0x80, 0x66, 0x26, 0x9e, 0xb5, 0xa9, 0x8, 0xec, 0x2d, 0x6c}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x74, 0xda, 0x93, 0x2a, 0x9b, 0x6b, 0xb7, 0x96, 0xcd, 0xac, 0xf, 0xaf, 0x54, 0x89, 0x9e, 0x91, 0x5b, 0xd0, 0x4a, 0xa, 0x8d, 0x9e, 0x80, 0x66, 0x26, 0x9e, 0xb5, 0xa9, 0x8, 0xec, 0x2d, 0x6c}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1586,7 +1587,7 @@ func _1674210659_add_contact_request_local_clockUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0664), modTime: time.Unix(1675294606, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x72, 0x39, 0xfe, 0x72, 0x98, 0xfc, 0x91, 0x20, 0x10, 0xe8, 0xf5, 0xac, 0x79, 0xa8, 0x1c, 0xca, 0x7b, 0x35, 0xa, 0xc1, 0x56, 0x49, 0x9a, 0xfc, 0xbd, 0x64, 0x9d, 0xdf, 0xd2, 0x60, 0x70}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x72, 0x39, 0xfe, 0x72, 0x98, 0xfc, 0x91, 0x20, 0x10, 0xe8, 0xf5, 0xac, 0x79, 0xa8, 0x1c, 0xca, 0x7b, 0x35, 0xa, 0xc1, 0x56, 0x49, 0x9a, 0xfc, 0xbd, 0x64, 0x9d, 0xdf, 0xd2, 0x60, 0x70}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1606,7 +1607,7 @@ func _1675212323_add_deleted_byUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0664), modTime: time.Unix(1675294606, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x85, 0x37, 0x29, 0x2f, 0xd, 0x5a, 0xb6, 0xdb, 0xa7, 0x8, 0x86, 0xfc, 0x7a, 0x70, 0xd8, 0x4d, 0xe6, 0xf0, 0x57, 0xe7, 0xd1, 0x95, 0xd5, 0x4, 0x40, 0x2f, 0x7a, 0x5, 0x4f, 0xc2, 0x97, 0xbc}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x85, 0x37, 0x29, 0x2f, 0xd, 0x5a, 0xb6, 0xdb, 0xa7, 0x8, 0x86, 0xfc, 0x7a, 0x70, 0xd8, 0x4d, 0xe6, 0xf0, 0x57, 0xe7, 0xd1, 0x95, 0xd5, 0x4, 0x40, 0x2f, 0x7a, 0x5, 0x4f, 0xc2, 0x97, 0xbc}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1626,7 +1627,7 @@ func _1675247084_add_activity_center_statesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0664), modTime: time.Unix(1676987564, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x90, 0x7d, 0x55, 0xc7, 0x40, 0x29, 0x26, 0x97, 0x45, 0x5c, 0xdf, 0xba, 0x61, 0xb, 0xfc, 0x3d, 0x7a, 0x6c, 0x42, 0xe4, 0x95, 0x78, 0xb0, 0xc5, 0x1f, 0x73, 0xe9, 0x33, 0x51, 0xc8, 0x81}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x90, 0x7d, 0x55, 0xc7, 0x40, 0x29, 0x26, 0x97, 0x45, 0x5c, 0xdf, 0xba, 0x61, 0xb, 0xfc, 0x3d, 0x7a, 0x6c, 0x42, 0xe4, 0x95, 0x78, 0xb0, 0xc5, 0x1f, 0x73, 0xe9, 0x33, 0x51, 0xc8, 0x81}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1646,7 +1647,7 @@ func _1675272329_fix_protocol_migrationUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0664), modTime: time.Unix(1675294606, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xe0, 0x11, 0x4c, 0x66, 0x55, 0x72, 0xd3, 0xe6, 0x98, 0xa4, 0xe7, 0x44, 0xf9, 0x3b, 0x3a, 0x3f, 0xd9, 0x91, 0x1e, 0x4f, 0xfc, 0x56, 0x63, 0xe5, 0xa4, 0x83, 0xfc, 0x7c, 0xcf, 0x18, 0x99}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xe0, 0x11, 0x4c, 0x66, 0x55, 0x72, 0xd3, 0xe6, 0x98, 0xa4, 0xe7, 0x44, 0xf9, 0x3b, 0x3a, 0x3f, 0xd9, 0x91, 0x1e, 0x4f, 0xfc, 0x56, 0x63, 0xe5, 0xa4, 0x83, 0xfc, 0x7c, 0xcf, 0x18, 0x99}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1666,7 +1667,7 @@ func _1676998418_fix_activity_center_migrationUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0664), modTime: time.Unix(1677251785, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8a, 0xdc, 0x64, 0xb1, 0x47, 0x67, 0xda, 0x2c, 0x26, 0x29, 0x6b, 0x6f, 0xb, 0xfa, 0x45, 0xf3, 0xad, 0x8b, 0x1a, 0x5f, 0x1c, 0xed, 0xd7, 0xea, 0x54, 0xf5, 0x3f, 0xb8, 0xf6, 0xf9, 0x44, 0x53}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8a, 0xdc, 0x64, 0xb1, 0x47, 0x67, 0xda, 0x2c, 0x26, 0x29, 0x6b, 0x6f, 0xb, 0xfa, 0x45, 0xf3, 0xad, 0x8b, 0x1a, 0x5f, 0x1c, 0xed, 0xd7, 0xea, 0x54, 0xf5, 0x3f, 0xb8, 0xf6, 0xf9, 0x44, 0x53}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1686,7 +1687,7 @@ func _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0664), modTime: time.Unix(1677714914, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0x3a, 0x95, 0xaf, 0x81, 0xb0, 0x85, 0x8d, 0x73, 0xda, 0x7b, 0x2a, 0x35, 0xa6, 0xaa, 0xcc, 0x4c, 0x35, 0xa3, 0xa8, 0xbd, 0xd1, 0x37, 0xe8, 0x5d, 0x83, 0xa4, 0x33, 0x1f, 0x10, 0xe4, 0xe6}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0x3a, 0x95, 0xaf, 0x81, 0xb0, 0x85, 0x8d, 0x73, 0xda, 0x7b, 0x2a, 0x35, 0xa6, 0xaa, 0xcc, 0x4c, 0x35, 0xa3, 0xa8, 0xbd, 0xd1, 0x37, 0xe8, 0x5d, 0x83, 0xa4, 0x33, 0x1f, 0x10, 0xe4, 0xe6}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1706,7 +1707,7 @@ func _1677486338_add_community_tokens_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0664), modTime: time.Unix(1677714914, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0x7b, 0x3d, 0x7e, 0x79, 0xc4, 0x3a, 0xf1, 0xda, 0x4b, 0xc6, 0xd1, 0xd, 0xfb, 0xb2, 0xb9, 0x7f, 0x81, 0x29, 0xab, 0xd8, 0x1, 0x20, 0xd7, 0xe1, 0xaf, 0x3e, 0x67, 0x1b, 0xdb, 0xf9, 0xd5}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0x7b, 0x3d, 0x7e, 0x79, 0xc4, 0x3a, 0xf1, 0xda, 0x4b, 0xc6, 0xd1, 0xd, 0xfb, 0xb2, 0xb9, 0x7f, 0x81, 0x29, 0xab, 0xd8, 0x1, 0x20, 0xd7, 0xe1, 0xaf, 0x3e, 0x67, 0x1b, 0xdb, 0xf9, 0xd5}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1726,7 +1727,7 @@ func _1678292329_add_collapsed_categoriesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0664), modTime: time.Unix(1679924157, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x63, 0x86, 0xd5, 0x7, 0xe2, 0x25, 0x15, 0x1b, 0xfe, 0xf3, 0xe, 0x50, 0x48, 0x11, 0x3c, 0x7c, 0xc6, 0xe5, 0xab, 0x8d, 0x1f, 0xe8, 0x3c, 0xcb, 0xf0, 0x8d, 0xa7, 0x49, 0x4c, 0x16, 0x4f}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x63, 0x86, 0xd5, 0x7, 0xe2, 0x25, 0x15, 0x1b, 0xfe, 0xf3, 0xe, 0x50, 0x48, 0x11, 0x3c, 0x7c, 0xc6, 0xe5, 0xab, 0x8d, 0x1f, 0xe8, 0x3c, 0xcb, 0xf0, 0x8d, 0xa7, 0x49, 0x4c, 0x16, 0x4f}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1746,7 +1747,7 @@ func _1678800760_add_index_to_raw_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1679924157, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0xd9, 0x8d, 0x22, 0x46, 0xae, 0x7b, 0x53, 0x3e, 0x51, 0x39, 0xad, 0xad, 0x38, 0x50, 0x6, 0xfa, 0xb9, 0xc4, 0x9f, 0x8d, 0xd2, 0x67, 0x0, 0xef, 0x58, 0x13, 0xab, 0x6a, 0x67, 0xf3, 0x7e}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0xd9, 0x8d, 0x22, 0x46, 0xae, 0x7b, 0x53, 0x3e, 0x51, 0x39, 0xad, 0xad, 0x38, 0x50, 0x6, 0xfa, 0xb9, 0xc4, 0x9f, 0x8d, 0xd2, 0x67, 0x0, 0xef, 0x58, 0x13, 0xab, 0x6a, 0x67, 0xf3, 0x7e}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1766,7 +1767,7 @@ func _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0664), modTime: time.Unix(1679924157, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x82, 0x1, 0xb4, 0xb2, 0x94, 0x25, 0xd5, 0x2e, 0x45, 0xc3, 0xb1, 0x2c, 0xeb, 0x1a, 0x52, 0xe0, 0x4b, 0x9b, 0x46, 0xf4, 0xc, 0xac, 0x1, 0x1e, 0x90, 0xbc, 0x64, 0x38, 0x10, 0xf1, 0xaf, 0xac}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x82, 0x1, 0xb4, 0xb2, 0x94, 0x25, 0xd5, 0x2e, 0x45, 0xc3, 0xb1, 0x2c, 0xeb, 0x1a, 0x52, 0xe0, 0x4b, 0x9b, 0x46, 0xf4, 0xc, 0xac, 0x1, 0x1e, 0x90, 0xbc, 0x64, 0x38, 0x10, 0xf1, 0xaf, 0xac}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1786,7 +1787,7 @@ func _1679326850_add_community_token_ownersUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0664), modTime: time.Unix(1680094975, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xe6, 0x25, 0x67, 0xd1, 0xd6, 0x54, 0x88, 0xb1, 0x80, 0x1e, 0x2d, 0x9c, 0xfa, 0x1c, 0xc7, 0x63, 0x6e, 0xf9, 0x66, 0xb1, 0x68, 0xc6, 0xf8, 0x51, 0xb6, 0xd5, 0x4e, 0x93, 0x39, 0x5e, 0xc0}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xe6, 0x25, 0x67, 0xd1, 0xd6, 0x54, 0x88, 0xb1, 0x80, 0x1e, 0x2d, 0x9c, 0xfa, 0x1c, 0xc7, 0x63, 0x6e, 0xf9, 0x66, 0xb1, 0x68, 0xc6, 0xf8, 0x51, 0xb6, 0xd5, 0x4e, 0x93, 0x39, 0x5e, 0xc0}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1806,7 +1807,7 @@ func _1680011500_add_album_images_countUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0664), modTime: time.Unix(1681392552, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0x55, 0x99, 0x31, 0xcc, 0x80, 0x78, 0xc3, 0x51, 0x13, 0x63, 0x6f, 0x1a, 0xfd, 0x53, 0xd2, 0xf4, 0x13, 0x4b, 0xb2, 0x4f, 0x99, 0xb8, 0x7b, 0x7, 0x99, 0xb6, 0xab, 0x88, 0x2e, 0x7, 0x8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0x55, 0x99, 0x31, 0xcc, 0x80, 0x78, 0xc3, 0x51, 0x13, 0x63, 0x6f, 0x1a, 0xfd, 0x53, 0xd2, 0xf4, 0x13, 0x4b, 0xb2, 0x4f, 0x99, 0xb8, 0x7b, 0x7, 0x99, 0xb6, 0xab, 0x88, 0x2e, 0x7, 0x8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1826,7 +1827,7 @@ func _1680114896_add_index_on_album_idUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1681392552, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x7e, 0xd5, 0xcd, 0x2d, 0xab, 0xd4, 0x32, 0x26, 0x50, 0x3a, 0x5b, 0x8e, 0x1c, 0xcc, 0x35, 0xf8, 0xa1, 0x2a, 0xc1, 0x23, 0xf6, 0x90, 0xfe, 0x84, 0x3, 0xde, 0x5a, 0xee, 0xc6, 0xfc, 0x2a}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x7e, 0xd5, 0xcd, 0x2d, 0xab, 0xd4, 0x32, 0x26, 0x50, 0x3a, 0x5b, 0x8e, 0x1c, 0xcc, 0x35, 0xf8, 0xa1, 0x2a, 0xc1, 0x23, 0xf6, 0x90, 0xfe, 0x84, 0x3, 0xde, 0x5a, 0xee, 0xc6, 0xfc, 0x2a}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1846,7 +1847,7 @@ func _1681655289_add_mute_tillUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0664), modTime: time.Unix(1683581866, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xbe, 0xce, 0xb8, 0xe1, 0x30, 0xe7, 0xa7, 0xe0, 0x7d, 0x97, 0xf4, 0x26, 0xb8, 0x57, 0x1d, 0x2a, 0xed, 0x18, 0xf2, 0xa, 0xe3, 0x77, 0x29, 0x18, 0x55, 0x9, 0x74, 0x2c, 0x24, 0x5a, 0x19}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xbe, 0xce, 0xb8, 0xe1, 0x30, 0xe7, 0xa7, 0xe0, 0x7d, 0x97, 0xf4, 0x26, 0xb8, 0x57, 0x1d, 0x2a, 0xed, 0x18, 0xf2, 0xa, 0xe3, 0x77, 0x29, 0x18, 0x55, 0x9, 0x74, 0x2c, 0x24, 0x5a, 0x19}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1866,7 +1867,7 @@ func _1681934966_add_index_response_toUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1683581866, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3b, 0xed, 0xa6, 0x7e, 0x51, 0xf2, 0xa1, 0x3c, 0x78, 0x9a, 0xa7, 0x7a, 0x51, 0x25, 0x7d, 0xdd, 0x4b, 0xf3, 0x45, 0xeb, 0x3f, 0xad, 0x23, 0x3e, 0xac, 0x16, 0x28, 0x62, 0x7, 0x8c, 0xe0, 0xa0}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3b, 0xed, 0xa6, 0x7e, 0x51, 0xf2, 0xa1, 0x3c, 0x78, 0x9a, 0xa7, 0x7a, 0x51, 0x25, 0x7d, 0xdd, 0x4b, 0xf3, 0x45, 0xeb, 0x3f, 0xad, 0x23, 0x3e, 0xac, 0x16, 0x28, 0x62, 0x7, 0x8c, 0xe0, 0xa0}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1886,7 +1887,7 @@ func _1682528339_add_index_user_messages_unseenUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0664), modTime: time.Unix(1683581871, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x35, 0xfa, 0x98, 0xdd, 0x74, 0x5e, 0x21, 0x1f, 0xf2, 0x56, 0x17, 0x96, 0xfe, 0xbb, 0x44, 0x4c, 0xa1, 0xd8, 0x9f, 0x2e, 0x6, 0x2f, 0xd8, 0x23, 0xec, 0x94, 0x8c, 0x53, 0xf3, 0xf0, 0x40, 0xe7}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x35, 0xfa, 0x98, 0xdd, 0x74, 0x5e, 0x21, 0x1f, 0xf2, 0x56, 0x17, 0x96, 0xfe, 0xbb, 0x44, 0x4c, 0xa1, 0xd8, 0x9f, 0x2e, 0x6, 0x2f, 0xd8, 0x23, 0xec, 0x94, 0x8c, 0x53, 0xf3, 0xf0, 0x40, 0xe7}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1906,7 +1907,7 @@ func _1683707289_recreate_deleted_for_mesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0664), modTime: time.Unix(1683894948, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5b, 0x9d, 0xd6, 0x45, 0x41, 0x29, 0x44, 0xf6, 0x14, 0x38, 0xeb, 0xdf, 0x6b, 0x5d, 0x9c, 0x45, 0x4b, 0xc3, 0xa8, 0xbd, 0x38, 0x14, 0xd9, 0x73, 0xf1, 0x51, 0xbb, 0x9f, 0x14, 0x36, 0xf2, 0x11}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5b, 0x9d, 0xd6, 0x45, 0x41, 0x29, 0x44, 0xf6, 0x14, 0x38, 0xeb, 0xdf, 0x6b, 0x5d, 0x9c, 0x45, 0x4b, 0xc3, 0xa8, 0xbd, 0x38, 0x14, 0xd9, 0x73, 0xf1, 0x51, 0xbb, 0x9f, 0x14, 0x36, 0xf2, 0x11}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1926,7 +1927,7 @@ func _1683725607_mark_discord_messages_as_seenUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0664), modTime: time.Unix(1683894948, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x2a, 0xc3, 0x43, 0xea, 0x5e, 0x3, 0x2e, 0xce, 0x79, 0xea, 0xa5, 0x67, 0x61, 0x8c, 0xe4, 0xb9, 0xb7, 0x4d, 0xd5, 0xd5, 0xb0, 0x35, 0xc8, 0x2b, 0xa0, 0x3f, 0xd8, 0xde, 0xea, 0x4e, 0x16}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x2a, 0xc3, 0x43, 0xea, 0x5e, 0x3, 0x2e, 0xce, 0x79, 0xea, 0xa5, 0x67, 0x61, 0x8c, 0xe4, 0xb9, 0xb7, 0x4d, 0xd5, 0xd5, 0xb0, 0x35, 0xc8, 0x2b, 0xa0, 0x3f, 0xd8, 0xde, 0xea, 0x4e, 0x16}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1946,7 +1947,7 @@ func _1684174617_add_url_previews_to_user_messagesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xb0, 0x72, 0xe3, 0xe4, 0xa9, 0x63, 0x82, 0xea, 0x52, 0x70, 0xb6, 0xa0, 0x73, 0x55, 0x7a, 0x78, 0xa8, 0xd2, 0xb0, 0xf4, 0x78, 0x8a, 0xd, 0x5a, 0xa2, 0x9d, 0x92, 0xdc, 0xce, 0x1c, 0x71}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xb0, 0x72, 0xe3, 0xe4, 0xa9, 0x63, 0x82, 0xea, 0x52, 0x70, 0xb6, 0xa0, 0x73, 0x55, 0x7a, 0x78, 0xa8, 0xd2, 0xb0, 0xf4, 0x78, 0x8a, 0xd, 0x5a, 0xa2, 0x9d, 0x92, 0xdc, 0xce, 0x1c, 0x71}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1966,7 +1967,7 @@ func _1684175608_add_token_balancesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0664), modTime: time.Unix(1685365190, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x4e, 0xe0, 0x48, 0x34, 0x1, 0x4d, 0x88, 0x11, 0x54, 0x20, 0x52, 0x5c, 0x57, 0x14, 0xa9, 0xa9, 0x36, 0xa4, 0x28, 0x59, 0x48, 0xa8, 0xa, 0x76, 0xec, 0x37, 0xee, 0x9e, 0xd2, 0x20, 0xaa}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x4e, 0xe0, 0x48, 0x34, 0x1, 0x4d, 0x88, 0x11, 0x54, 0x20, 0x52, 0x5c, 0x57, 0x14, 0xa9, 0xa9, 0x36, 0xa4, 0x28, 0x59, 0x48, 0xa8, 0xa, 0x76, 0xec, 0x37, 0xee, 0x9e, 0xd2, 0x20, 0xaa}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -1986,7 +1987,7 @@ func _1684979808_sync_activity_center_notificationsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0664), modTime: time.Unix(1687991048, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0xf5, 0xf7, 0x94, 0xa9, 0xa1, 0x60, 0x26, 0x9d, 0xca, 0x31, 0xf, 0x14, 0xd, 0x70, 0xf8, 0xab, 0x40, 0x29, 0x73, 0x61, 0xbd, 0x1b, 0xb6, 0xc4, 0x31, 0x77, 0x9e, 0x32, 0xa8, 0xce, 0x6d}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0xf5, 0xf7, 0x94, 0xa9, 0xa1, 0x60, 0x26, 0x9d, 0xca, 0x31, 0xf, 0x14, 0xd, 0x70, 0xf8, 0xab, 0x40, 0x29, 0x73, 0x61, 0xbd, 0x1b, 0xb6, 0xc4, 0x31, 0x77, 0x9e, 0x32, 0xa8, 0xce, 0x6d}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2006,7 +2007,7 @@ func _1685383829_add_communities_mute_tillUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x58, 0x96, 0xe5, 0x66, 0xcb, 0xde, 0xed, 0x76, 0xb8, 0x5a, 0x86, 0x81, 0x9a, 0x60, 0x51, 0x12, 0x37, 0x54, 0x9a, 0x36, 0x3e, 0xd1, 0x4a, 0xbe, 0x9a, 0xab, 0x20, 0x7f, 0x1d, 0xf4, 0x73}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x58, 0x96, 0xe5, 0x66, 0xcb, 0xde, 0xed, 0x76, 0xb8, 0x5a, 0x86, 0x81, 0x9a, 0x60, 0x51, 0x12, 0x37, 0x54, 0x9a, 0x36, 0x3e, 0xd1, 0x4a, 0xbe, 0x9a, 0xab, 0x20, 0x7f, 0x1d, 0xf4, 0x73}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2026,7 +2027,7 @@ func _1685964183_add_chainids_to_revealed_addressesUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1687991048, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0xb5, 0xa8, 0xd7, 0xad, 0x9c, 0x54, 0xa5, 0xe9, 0xdb, 0x42, 0x2d, 0xd0, 0xd7, 0x22, 0x1, 0x93, 0xf3, 0x4f, 0x53, 0xf7, 0x1e, 0xbe, 0x4b, 0xac, 0xc7, 0x63, 0x15, 0xdf, 0xe0, 0x6, 0xf8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0xb5, 0xa8, 0xd7, 0xad, 0x9c, 0x54, 0xa5, 0xe9, 0xdb, 0x42, 0x2d, 0xd0, 0xd7, 0x22, 0x1, 0x93, 0xf3, 0x4f, 0x53, 0xf7, 0x1e, 0xbe, 0x4b, 0xac, 0xc7, 0x63, 0x15, 0xdf, 0xe0, 0x6, 0xf8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2046,7 +2047,7 @@ func _1687370421_add_communities_muted_till_newUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x73, 0x96, 0x1d, 0xc8, 0x3e, 0xca, 0xf5, 0xdc, 0xe3, 0xac, 0x3f, 0x9c, 0xc3, 0x67, 0x12, 0x9c, 0x19, 0x1, 0x4, 0x2b, 0xea, 0x6b, 0xe1, 0x59, 0x59, 0x89, 0x3d, 0xef, 0x4a, 0x6e, 0xbe}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x73, 0x96, 0x1d, 0xc8, 0x3e, 0xca, 0xf5, 0xdc, 0xe3, 0xac, 0x3f, 0x9c, 0xc3, 0x67, 0x12, 0x9c, 0x19, 0x1, 0x4, 0x2b, 0xea, 0x6b, 0xe1, 0x59, 0x59, 0x89, 0x3d, 0xef, 0x4a, 0x6e, 0xbe}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2066,7 +2067,7 @@ func _1687416607_add_communities_check_channel_permission_responses_tableUpSql()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x6, 0x3, 0x1a, 0xde, 0x9d, 0xbc, 0x50, 0x9d, 0xf1, 0x6d, 0x5a, 0x1c, 0x28, 0x92, 0x19, 0x89, 0x76, 0x4e, 0x8b, 0x60, 0xa9, 0xf, 0xe9, 0x76, 0xf1, 0xee, 0x75, 0x92, 0xbd, 0xda, 0x72}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x6, 0x3, 0x1a, 0xde, 0x9d, 0xbc, 0x50, 0x9d, 0xf1, 0x6d, 0x5a, 0x1c, 0x28, 0x92, 0x19, 0x89, 0x76, 0x4e, 0x8b, 0x60, 0xa9, 0xf, 0xe9, 0x76, 0xf1, 0xee, 0x75, 0x92, 0xbd, 0xda, 0x72}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2086,7 +2087,7 @@ func _1687856939_add_community_tokens_decimalsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0x76, 0x42, 0x70, 0xc9, 0x7b, 0x16, 0xf6, 0xfe, 0x7, 0x1c, 0x99, 0xe5, 0x38, 0xfd, 0xa0, 0x3b, 0x93, 0x40, 0xbc, 0x66, 0xc2, 0xd1, 0xdd, 0xe9, 0xc7, 0xbf, 0xae, 0x36, 0xcc, 0x46, 0x57}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0x76, 0x42, 0x70, 0xc9, 0x7b, 0x16, 0xf6, 0xfe, 0x7, 0x1c, 0x99, 0xe5, 0x38, 0xfd, 0xa0, 0x3b, 0x93, 0x40, 0xbc, 0x66, 0xc2, 0xd1, 0xdd, 0xe9, 0xc7, 0xbf, 0xae, 0x36, 0xcc, 0x46, 0x57}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2106,7 +2107,7 @@ func _1687959987_modify_community_tokens_supply_as_stringUpSql() (*asset, error)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1687959987_modify_community_tokens_supply_as_string.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x57, 0x89, 0xbf, 0x9b, 0xed, 0x9b, 0x18, 0x3f, 0x84, 0xb5, 0x3c, 0x78, 0x40, 0x60, 0xea, 0x33, 0x26, 0x50, 0x3, 0xda, 0x28, 0x92, 0xd3, 0xb6, 0xff, 0x40, 0xa7, 0x19, 0x2, 0xa7, 0x17, 0xf9}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x57, 0x89, 0xbf, 0x9b, 0xed, 0x9b, 0x18, 0x3f, 0x84, 0xb5, 0x3c, 0x78, 0x40, 0x60, 0xea, 0x33, 0x26, 0x50, 0x3, 0xda, 0x28, 0x92, 0xd3, 0xb6, 0xff, 0x40, 0xa7, 0x19, 0x2, 0xa7, 0x17, 0xf9}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2126,7 +2127,7 @@ func _1689258900_add_airdrop_address_to_revealed_addressesUpSql() (*asset, error
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1689258900_add_airdrop_address_to_revealed_addresses.up.sql", size: 99, mode: os.FileMode(0664), modTime: time.Unix(1692114327, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7e, 0xaf, 0x5c, 0xd, 0xe5, 0x1e, 0x67, 0x1a, 0x6d, 0xd, 0x28, 0x20, 0x7a, 0x1a, 0x45, 0x6e, 0xba, 0x80, 0x91, 0xb0, 0xd6, 0xfd, 0xc2, 0xb9, 0x42, 0x5c, 0x8d, 0x6e, 0x3e, 0x6e, 0xb2}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7e, 0xaf, 0x5c, 0xd, 0xe5, 0x1e, 0x67, 0x1a, 0x6d, 0xd, 0x28, 0x20, 0x7a, 0x1a, 0x45, 0x6e, 0xba, 0x80, 0x91, 0xb0, 0xd6, 0xfd, 0xc2, 0xb9, 0x42, 0x5c, 0x8d, 0x6e, 0x3e, 0x6e, 0xb2}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2146,7 +2147,7 @@ func _1689266326_create_communities_events_tableUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1689266326_create_communities_events_table.up.sql", size: 164, mode: os.FileMode(0664), modTime: time.Unix(1692814344, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x4e, 0xe, 0xba, 0x29, 0x16, 0x46, 0x38, 0x19, 0xa4, 0x5, 0x40, 0x46, 0xaf, 0x9a, 0x6, 0x89, 0xe0, 0x9c, 0xcc, 0xec, 0x8a, 0xb, 0x40, 0x85, 0x6f, 0xcc, 0x5, 0x24, 0x2a, 0x33, 0xfa}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x4e, 0xe, 0xba, 0x29, 0x16, 0x46, 0x38, 0x19, 0xa4, 0x5, 0x40, 0x46, 0xaf, 0x9a, 0x6, 0x89, 0xe0, 0x9c, 0xcc, 0xec, 0x8a, 0xb, 0x40, 0x85, 0x6f, 0xcc, 0x5, 0x24, 0x2a, 0x33, 0xfa}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2166,7 +2167,7 @@ func _1689931300_add_community_tokens_deployer_and_priv_levelUpSql() (*asset, er
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1689931300_add_community_tokens_deployer_and_priv_level.up.sql", size: 156, mode: os.FileMode(0664), modTime: time.Unix(1692814344, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x24, 0xd9, 0x4d, 0xe, 0x4b, 0xe3, 0x4c, 0xd1, 0xc, 0x72, 0xd4, 0x99, 0xe4, 0xb9, 0xb8, 0xe9, 0x38, 0x9e, 0x11, 0x48, 0xea, 0xe3, 0x5d, 0xd9, 0xd0, 0xef, 0x96, 0x38, 0x5a, 0xd4, 0xa5}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x24, 0xd9, 0x4d, 0xe, 0x4b, 0xe3, 0x4c, 0xd1, 0xc, 0x72, 0xd4, 0x99, 0xe4, 0xb9, 0xb8, 0xe9, 0x38, 0x9e, 0x11, 0x48, 0xea, 0xe3, 0x5d, 0xd9, 0xd0, 0xef, 0x96, 0x38, 0x5a, 0xd4, 0xa5}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2186,11 +2187,31 @@ func _1693311881_add_unfurled_links_to_message_editsUpSql() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "1693311881_add_unfurled_links_to_message_edits.up.sql", size: 64, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "1693311881_add_unfurled_links_to_message_edits.up.sql", size: 64, mode: os.FileMode(0664), modTime: time.Unix(1694098269, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xc7, 0x7c, 0xe4, 0x80, 0x6f, 0xf8, 0x96, 0xb, 0x37, 0xff, 0xa2, 0xab, 0x1c, 0xbd, 0x25, 0x8d, 0x1e, 0x9a, 0x65, 0xe9, 0x45, 0xaf, 0x7f, 0x77, 0x84, 0x1b, 0x10, 0x1b, 0x1a, 0x5, 0xcc}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xc7, 0x7c, 0xe4, 0x80, 0x6f, 0xf8, 0x96, 0xb, 0x37, 0xff, 0xa2, 0xab, 0x1c, 0xbd, 0x25, 0x8d, 0x1e, 0x9a, 0x65, 0xe9, 0x45, 0xaf, 0x7f, 0x77, 0x84, 0x1b, 0x10, 0x1b, 0x1a, 0x5, 0xcc}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var __1693311981_community_shardUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x48\xce\xcf\xcd\x2d\xcd\xcb\x2c\xc9\x4c\x2d\x8e\x47\x62\x2b\x38\xba\xb8\x28\x38\xfb\xfb\x84\xfa\xfa\x29\x14\x67\x24\x16\xa5\xc4\x27\xe7\x94\x16\x97\xa4\x16\x29\x78\xfa\x85\x28\xb8\xb8\xba\x39\x86\xfa\x84\x28\xf8\x85\xfa\xf8\x58\x73\x91\x65\x5c\x66\x5e\x4a\x6a\x05\x16\xc3\x00\x01\x00\x00\xff\xff\xe7\x6c\xc4\x0e\x9c\x00\x00\x00")
|
||||||
|
|
||||||
|
func _1693311981_community_shardUpSqlBytes() ([]byte, error) {
|
||||||
|
return bindataRead(
|
||||||
|
__1693311981_community_shardUpSql,
|
||||||
|
"1693311981_community_shard.up.sql",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _1693311981_community_shardUpSql() (*asset, error) {
|
||||||
|
bytes, err := _1693311981_community_shardUpSqlBytes()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
info := bindataFileInfo{name: "1693311981_community_shard.up.sql", size: 156, mode: os.FileMode(0664), modTime: time.Unix(1694098617, 0)}
|
||||||
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x12, 0xf9, 0xde, 0x49, 0x9f, 0x95, 0xaa, 0x22, 0x5e, 0x54, 0x5a, 0x1, 0xd, 0xc6, 0x1f, 0x42, 0x93, 0xe8, 0x69, 0x30, 0x11, 0x69, 0x41, 0x7f, 0x87, 0x57, 0x56, 0x2a, 0x32, 0xb9, 0x3e}}
|
||||||
|
return a, nil
|
||||||
|
}
|
||||||
|
|
||||||
var _readmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x91\xc1\xce\xd3\x30\x10\x84\xef\x7e\x8a\x91\x7a\x01\xa9\x2a\x8f\xc0\x0d\x71\x82\x03\x48\x1c\xc9\x36\x9e\x36\x96\x1c\x6f\xf0\xae\x93\xe6\xed\x91\xa3\xc2\xdf\xff\x66\xed\xd8\x33\xdf\x78\x4f\xa7\x13\xbe\xea\x06\x57\x6c\x35\x39\x31\xa7\x7b\x15\x4f\x5a\xec\x73\x08\xbf\x08\x2d\x79\x7f\x4a\x43\x5b\x86\x17\xfd\x8c\x21\xea\x56\x5e\x47\x90\x4a\x14\x75\x48\xde\x64\x37\x2c\x6a\x96\xae\x99\x48\x05\xf6\x27\x77\x13\xad\x08\xae\x8a\x51\xe7\x25\xf3\xf1\xa9\x9f\xf9\x58\x58\x2c\xad\xbc\xe0\x8b\x56\xf0\x21\x5d\xeb\x4c\x95\xb3\xae\x84\x60\xd4\xdc\xe6\x82\x5d\x1b\x36\x6d\x39\x62\x92\xf5\xb8\x11\xdb\x92\xd3\x28\xce\xe0\x13\xe1\x72\xcd\x3c\x63\xd4\x65\x87\xae\xac\xe8\xc3\x28\x2e\x67\x44\x66\x3a\x21\x25\xa2\x72\xac\x14\x67\xbc\x84\x9f\x53\x32\x8c\x52\x70\x25\x56\xd6\xfd\x8d\x05\x37\xad\x30\x9d\x9f\xa6\x86\x0f\xcd\x58\x7f\xcf\x34\x93\x3b\xed\x90\x9f\xa4\x1f\xcf\x30\x85\x4d\x07\x58\xaf\x7f\x25\xc4\x9d\xf3\x72\x64\x84\xd0\x7f\xf9\x9b\x3a\x2d\x84\xef\x85\x48\x66\x8d\xd8\x88\x9b\x8c\x8c\x98\x5b\xf6\x74\x14\x4e\x33\x0d\xc9\xe0\x93\x38\xda\x12\xc5\x69\xbd\xe4\xf0\x2e\x7a\x78\x07\x1c\xfe\x13\x9f\x91\x29\x31\x95\x7b\x7f\x62\x59\x37\xb4\xe5\x5e\x25\xfe\x33\xee\xd5\x53\x71\xd6\xda\x3a\xd8\xcb\xde\x2e\xf8\xa1\x90\x55\x53\x0c\xc7\xaa\x0d\xe9\x76\x14\x29\x1c\x7b\x68\xdd\x2f\xe1\x6f\x00\x00\x00\xff\xff\x3c\x0a\xc2\xfe\x2a\x02\x00\x00")
|
var _readmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x91\xc1\xce\xd3\x30\x10\x84\xef\x7e\x8a\x91\x7a\x01\xa9\x2a\x8f\xc0\x0d\x71\x82\x03\x48\x1c\xc9\x36\x9e\x36\x96\x1c\x6f\xf0\xae\x93\xe6\xed\x91\xa3\xc2\xdf\xff\x66\xed\xd8\x33\xdf\x78\x4f\xa7\x13\xbe\xea\x06\x57\x6c\x35\x39\x31\xa7\x7b\x15\x4f\x5a\xec\x73\x08\xbf\x08\x2d\x79\x7f\x4a\x43\x5b\x86\x17\xfd\x8c\x21\xea\x56\x5e\x47\x90\x4a\x14\x75\x48\xde\x64\x37\x2c\x6a\x96\xae\x99\x48\x05\xf6\x27\x77\x13\xad\x08\xae\x8a\x51\xe7\x25\xf3\xf1\xa9\x9f\xf9\x58\x58\x2c\xad\xbc\xe0\x8b\x56\xf0\x21\x5d\xeb\x4c\x95\xb3\xae\x84\x60\xd4\xdc\xe6\x82\x5d\x1b\x36\x6d\x39\x62\x92\xf5\xb8\x11\xdb\x92\xd3\x28\xce\xe0\x13\xe1\x72\xcd\x3c\x63\xd4\x65\x87\xae\xac\xe8\xc3\x28\x2e\x67\x44\x66\x3a\x21\x25\xa2\x72\xac\x14\x67\xbc\x84\x9f\x53\x32\x8c\x52\x70\x25\x56\xd6\xfd\x8d\x05\x37\xad\x30\x9d\x9f\xa6\x86\x0f\xcd\x58\x7f\xcf\x34\x93\x3b\xed\x90\x9f\xa4\x1f\xcf\x30\x85\x4d\x07\x58\xaf\x7f\x25\xc4\x9d\xf3\x72\x64\x84\xd0\x7f\xf9\x9b\x3a\x2d\x84\xef\x85\x48\x66\x8d\xd8\x88\x9b\x8c\x8c\x98\x5b\xf6\x74\x14\x4e\x33\x0d\xc9\xe0\x93\x38\xda\x12\xc5\x69\xbd\xe4\xf0\x2e\x7a\x78\x07\x1c\xfe\x13\x9f\x91\x29\x31\x95\x7b\x7f\x62\x59\x37\xb4\xe5\x5e\x25\xfe\x33\xee\xd5\x53\x71\xd6\xda\x3a\xd8\xcb\xde\x2e\xf8\xa1\x90\x55\x53\x0c\xc7\xaa\x0d\xe9\x76\x14\x29\x1c\x7b\x68\xdd\x2f\xe1\x6f\x00\x00\x00\xff\xff\x3c\x0a\xc2\xfe\x2a\x02\x00\x00")
|
||||||
|
|
||||||
func readmeMdBytes() ([]byte, error) {
|
func readmeMdBytes() ([]byte, error) {
|
||||||
|
@ -2206,7 +2227,7 @@ func readmeMd() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2226,7 +2247,7 @@ func docGo() (*asset, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1694703775, 0)}
|
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0664), modTime: time.Unix(1663713040, 0)}
|
||||||
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}}
|
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
@ -2524,6 +2545,8 @@ var _bindata = map[string]func() (*asset, error){
|
||||||
|
|
||||||
"1693311881_add_unfurled_links_to_message_edits.up.sql": _1693311881_add_unfurled_links_to_message_editsUpSql,
|
"1693311881_add_unfurled_links_to_message_edits.up.sql": _1693311881_add_unfurled_links_to_message_editsUpSql,
|
||||||
|
|
||||||
|
"1693311981_community_shard.up.sql": _1693311981_community_shardUpSql,
|
||||||
|
|
||||||
"README.md": readmeMd,
|
"README.md": readmeMd,
|
||||||
|
|
||||||
"doc.go": docGo,
|
"doc.go": docGo,
|
||||||
|
@ -2671,8 +2694,9 @@ var _bintree = &bintree{nil, map[string]*bintree{
|
||||||
"1689266326_create_communities_events_table.up.sql": &bintree{_1689266326_create_communities_events_tableUpSql, map[string]*bintree{}},
|
"1689266326_create_communities_events_table.up.sql": &bintree{_1689266326_create_communities_events_tableUpSql, map[string]*bintree{}},
|
||||||
"1689931300_add_community_tokens_deployer_and_priv_level.up.sql": &bintree{_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}},
|
"1689931300_add_community_tokens_deployer_and_priv_level.up.sql": &bintree{_1689931300_add_community_tokens_deployer_and_priv_levelUpSql, map[string]*bintree{}},
|
||||||
"1693311881_add_unfurled_links_to_message_edits.up.sql": &bintree{_1693311881_add_unfurled_links_to_message_editsUpSql, map[string]*bintree{}},
|
"1693311881_add_unfurled_links_to_message_edits.up.sql": &bintree{_1693311881_add_unfurled_links_to_message_editsUpSql, map[string]*bintree{}},
|
||||||
"README.md": &bintree{readmeMd, map[string]*bintree{}},
|
"1693311981_community_shard.up.sql": &bintree{_1693311981_community_shardUpSql, map[string]*bintree{}},
|
||||||
"doc.go": &bintree{docGo, map[string]*bintree{}},
|
"README.md": &bintree{readmeMd, map[string]*bintree{}},
|
||||||
|
"doc.go": &bintree{docGo, map[string]*bintree{}},
|
||||||
}}
|
}}
|
||||||
|
|
||||||
// RestoreAsset restores an asset under the given directory.
|
// RestoreAsset restores an asset under the given directory.
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
ALTER TABLE communities_communities ADD COLUMN shard_cluster INT DEFAULT NULL;
|
||||||
|
ALTER TABLE communities_communities ADD COLUMN shard_index INT DEFAULT NULL;
|
|
@ -95,6 +95,7 @@ const (
|
||||||
ApplicationMetadataMessage_SYNC_ACCOUNTS_POSITIONS ApplicationMetadataMessage_Type = 70
|
ApplicationMetadataMessage_SYNC_ACCOUNTS_POSITIONS ApplicationMetadataMessage_Type = 70
|
||||||
ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED ApplicationMetadataMessage_Type = 71
|
ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED ApplicationMetadataMessage_Type = 71
|
||||||
ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE ApplicationMetadataMessage_Type = 72
|
ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE ApplicationMetadataMessage_Type = 72
|
||||||
|
ApplicationMetadataMessage_COMMUNITY_SHARD_KEY ApplicationMetadataMessage_Type = 73
|
||||||
)
|
)
|
||||||
|
|
||||||
var ApplicationMetadataMessage_Type_name = map[int32]string{
|
var ApplicationMetadataMessage_Type_name = map[int32]string{
|
||||||
|
@ -170,6 +171,7 @@ var ApplicationMetadataMessage_Type_name = map[int32]string{
|
||||||
70: "SYNC_ACCOUNTS_POSITIONS",
|
70: "SYNC_ACCOUNTS_POSITIONS",
|
||||||
71: "COMMUNITY_EVENTS_MESSAGE_REJECTED",
|
71: "COMMUNITY_EVENTS_MESSAGE_REJECTED",
|
||||||
72: "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE",
|
72: "COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE",
|
||||||
|
73: "COMMUNITY_SHARD_KEY",
|
||||||
}
|
}
|
||||||
|
|
||||||
var ApplicationMetadataMessage_Type_value = map[string]int32{
|
var ApplicationMetadataMessage_Type_value = map[string]int32{
|
||||||
|
@ -245,6 +247,7 @@ var ApplicationMetadataMessage_Type_value = map[string]int32{
|
||||||
"SYNC_ACCOUNTS_POSITIONS": 70,
|
"SYNC_ACCOUNTS_POSITIONS": 70,
|
||||||
"COMMUNITY_EVENTS_MESSAGE_REJECTED": 71,
|
"COMMUNITY_EVENTS_MESSAGE_REJECTED": 71,
|
||||||
"COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE": 72,
|
"COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE": 72,
|
||||||
|
"COMMUNITY_SHARD_KEY": 73,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x ApplicationMetadataMessage_Type) String() string {
|
func (x ApplicationMetadataMessage_Type) String() string {
|
||||||
|
@ -323,72 +326,73 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_ad09a6406fcf24c7 = []byte{
|
var fileDescriptor_ad09a6406fcf24c7 = []byte{
|
||||||
// 1066 bytes of a gzipped FileDescriptorProto
|
// 1077 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x5b, 0x53, 0x1b, 0x37,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x5b, 0x53, 0x1b, 0x37,
|
||||||
0x14, 0x2e, 0x84, 0x02, 0x11, 0x97, 0x08, 0x85, 0x8b, 0x01, 0x73, 0x73, 0x08, 0x21, 0x49, 0xeb,
|
0x14, 0x2e, 0x84, 0x02, 0x11, 0x97, 0x08, 0x85, 0x8b, 0x01, 0x73, 0x73, 0x08, 0x21, 0x49, 0xeb,
|
||||||
0xb4, 0xa4, 0xed, 0xb4, 0x4d, 0xd3, 0x56, 0x96, 0x0e, 0xb6, 0xf0, 0xae, 0xb4, 0x91, 0xb4, 0xee,
|
0xb4, 0xa4, 0xed, 0xb4, 0x4d, 0xd3, 0x56, 0x96, 0x0e, 0xb6, 0xf0, 0xae, 0xb4, 0x91, 0xb4, 0xee,
|
||||||
0x38, 0x2f, 0x1a, 0xa7, 0x71, 0x33, 0xcc, 0x24, 0xc1, 0x13, 0x9c, 0x07, 0xde, 0xfa, 0x7b, 0xfb,
|
0x38, 0x2f, 0x1a, 0xa7, 0x71, 0x33, 0xcc, 0x24, 0xc1, 0x13, 0x9c, 0x07, 0x9e, 0xfb, 0x2b, 0xfa,
|
||||||
0x2b, 0x3a, 0xda, 0xab, 0x01, 0x13, 0x9e, 0x60, 0x75, 0x3e, 0x1d, 0xe9, 0x7c, 0xe7, 0x3b, 0x9f,
|
0x6f, 0x3b, 0xda, 0xab, 0x01, 0x13, 0x9e, 0x60, 0x75, 0x3e, 0x1d, 0xe9, 0x7c, 0xe7, 0x3b, 0x9f,
|
||||||
0x8c, 0x6a, 0xbd, 0xc1, 0xe0, 0xfd, 0xe9, 0xdf, 0xbd, 0xe1, 0xe9, 0xd9, 0x47, 0xf7, 0xa1, 0x3f,
|
0x8c, 0x6a, 0xbd, 0xc1, 0xe0, 0xfd, 0xe9, 0xdf, 0xbd, 0xe1, 0xe9, 0xd9, 0x47, 0xf7, 0xa1, 0x3f,
|
||||||
0xec, 0xbd, 0xed, 0x0d, 0x7b, 0xee, 0x43, 0xff, 0xfc, 0xbc, 0xf7, 0xae, 0x5f, 0x1f, 0x7c, 0x3a,
|
0xec, 0xbd, 0xed, 0x0d, 0x7b, 0xee, 0x43, 0xff, 0xfc, 0xbc, 0xf7, 0xae, 0x5f, 0x1f, 0x7c, 0x3a,
|
||||||
0x1b, 0x9e, 0x91, 0xd9, 0xe4, 0xcf, 0x9b, 0xcf, 0xff, 0xd4, 0xfe, 0x25, 0x68, 0x83, 0x96, 0x1b,
|
0x1b, 0x9e, 0x91, 0xd9, 0xe4, 0xcf, 0x9b, 0xcf, 0xff, 0xd4, 0xfe, 0x23, 0x68, 0x83, 0x96, 0x1b,
|
||||||
0xc2, 0x0c, 0x1f, 0xa6, 0x70, 0x52, 0x45, 0x77, 0xcf, 0x4f, 0xdf, 0x7d, 0xec, 0x0d, 0x3f, 0x7f,
|
0xc2, 0x0c, 0x1f, 0xa6, 0x70, 0x52, 0x45, 0x77, 0xcf, 0x4f, 0xdf, 0x7d, 0xec, 0x0d, 0x3f, 0x7f,
|
||||||
0xea, 0x57, 0x26, 0x76, 0x27, 0x0e, 0xe7, 0x75, 0xb9, 0x40, 0x2a, 0x68, 0x66, 0xd0, 0xbb, 0x78,
|
0xea, 0x57, 0x26, 0x76, 0x27, 0x0e, 0xe7, 0x75, 0xb9, 0x40, 0x2a, 0x68, 0x66, 0xd0, 0xbb, 0x78,
|
||||||
0x7f, 0xd6, 0x7b, 0x5b, 0x99, 0x4c, 0x62, 0xf9, 0x27, 0x79, 0x89, 0xa6, 0x86, 0x17, 0x83, 0x7e,
|
0x7f, 0xd6, 0x7b, 0x5b, 0x99, 0x4c, 0x62, 0xf9, 0x27, 0x79, 0x89, 0xa6, 0x86, 0x17, 0x83, 0x7e,
|
||||||
0xe5, 0xce, 0xee, 0xc4, 0xe1, 0xe2, 0xd1, 0xe3, 0x7a, 0x7e, 0x5e, 0xfd, 0xe6, 0xb3, 0xea, 0xf6,
|
0xe5, 0xce, 0xee, 0xc4, 0xe1, 0xe2, 0xd1, 0xe3, 0x7a, 0x7e, 0x5e, 0xfd, 0xe6, 0xb3, 0xea, 0xf6,
|
||||||
0x62, 0xd0, 0xd7, 0xc9, 0xb6, 0xda, 0x7f, 0x18, 0x4d, 0xf9, 0x4f, 0x32, 0x87, 0x66, 0x62, 0xd9,
|
0x62, 0xd0, 0xd7, 0xc9, 0xb6, 0xda, 0xbf, 0x4b, 0x68, 0xca, 0x7f, 0x92, 0x39, 0x34, 0x13, 0xcb,
|
||||||
0x96, 0xea, 0x2f, 0x89, 0xbf, 0x22, 0x18, 0xcd, 0xb3, 0x16, 0xb5, 0x2e, 0x04, 0x63, 0x68, 0x13,
|
0xb6, 0x54, 0x7f, 0x49, 0xfc, 0x15, 0xc1, 0x68, 0x9e, 0xb5, 0xa8, 0x75, 0x21, 0x18, 0x43, 0x9b,
|
||||||
0xf0, 0x04, 0x21, 0x68, 0x91, 0x29, 0x69, 0x29, 0xb3, 0x2e, 0x8e, 0x38, 0xb5, 0x80, 0x27, 0xc9,
|
0x80, 0x27, 0x08, 0x41, 0x8b, 0x4c, 0x49, 0x4b, 0x99, 0x75, 0x71, 0xc4, 0xa9, 0x05, 0x3c, 0x49,
|
||||||
0x16, 0x5a, 0x0f, 0x21, 0x6c, 0x80, 0x36, 0x2d, 0x11, 0x65, 0xcb, 0xc5, 0x96, 0x3b, 0x64, 0x03,
|
0xb6, 0xd0, 0x7a, 0x08, 0x61, 0x03, 0xb4, 0x69, 0x89, 0x28, 0x5b, 0x2e, 0xb6, 0xdc, 0x21, 0x1b,
|
||||||
0xad, 0x9a, 0xae, 0x64, 0x2e, 0xa2, 0x42, 0x3b, 0x21, 0x8d, 0xa5, 0x41, 0x40, 0xad, 0x50, 0x12,
|
0x68, 0xd5, 0x74, 0x25, 0x73, 0x11, 0x15, 0xda, 0x09, 0x69, 0x2c, 0x0d, 0x02, 0x6a, 0x85, 0x92,
|
||||||
0x4f, 0x91, 0x7d, 0x54, 0xe5, 0x10, 0x69, 0x60, 0xd4, 0x02, 0x77, 0x09, 0xec, 0x12, 0xe2, 0xeb,
|
0x78, 0x8a, 0xec, 0xa3, 0x2a, 0x87, 0x48, 0x03, 0xa3, 0x16, 0xb8, 0x4b, 0x60, 0x97, 0x10, 0x5f,
|
||||||
0x8d, 0xc9, 0xd9, 0x09, 0xf2, 0x00, 0xed, 0x68, 0x78, 0x15, 0x83, 0xb1, 0x8e, 0x72, 0xae, 0xc1,
|
0x6f, 0x4c, 0xce, 0x4e, 0x90, 0x07, 0x68, 0x47, 0xc3, 0xab, 0x18, 0x8c, 0x75, 0x94, 0x73, 0x0d,
|
||||||
0x18, 0x77, 0xac, 0xb4, 0xb3, 0x9a, 0x4a, 0x43, 0x59, 0x02, 0x9c, 0x26, 0x4f, 0xd0, 0x01, 0x65,
|
0xc6, 0xb8, 0x63, 0xa5, 0x9d, 0xd5, 0x54, 0x1a, 0xca, 0x12, 0xe0, 0x34, 0x79, 0x82, 0x0e, 0x28,
|
||||||
0x0c, 0x22, 0xeb, 0x6e, 0xc3, 0xce, 0x90, 0xa7, 0xe8, 0x11, 0x07, 0x16, 0x08, 0x09, 0xb7, 0x82,
|
0x63, 0x10, 0x59, 0x77, 0x1b, 0x76, 0x86, 0x3c, 0x45, 0x8f, 0x38, 0xb0, 0x40, 0x48, 0xb8, 0x15,
|
||||||
0x67, 0xc9, 0x1a, 0xba, 0x9f, 0x83, 0x46, 0x03, 0x77, 0xc9, 0x32, 0xc2, 0x06, 0x24, 0xbf, 0xb4,
|
0x3c, 0x4b, 0xd6, 0xd0, 0xfd, 0x1c, 0x34, 0x1a, 0xb8, 0x4b, 0x96, 0x11, 0x36, 0x20, 0xf9, 0xa5,
|
||||||
0x8a, 0xc8, 0x0e, 0xda, 0xbc, 0x9a, 0x7b, 0x14, 0x30, 0x47, 0x76, 0x51, 0xf5, 0x5a, 0xa1, 0x2e,
|
0x55, 0x44, 0x76, 0xd0, 0xe6, 0xd5, 0xdc, 0xa3, 0x80, 0x39, 0xb2, 0x8b, 0xaa, 0xd7, 0x0a, 0x75,
|
||||||
0x27, 0xb5, 0x73, 0x84, 0xe7, 0x3d, 0xa1, 0xd7, 0x11, 0x94, 0x31, 0x15, 0x4b, 0x8b, 0x17, 0xc8,
|
0x39, 0xa9, 0x9d, 0x23, 0x3c, 0xef, 0x09, 0xbd, 0x8e, 0xa0, 0x8c, 0xa9, 0x58, 0x5a, 0xbc, 0x40,
|
||||||
0x1e, 0xda, 0xba, 0x1e, 0x8e, 0xe2, 0x46, 0x20, 0x98, 0xf3, 0xed, 0xc2, 0x8b, 0x64, 0x1b, 0x6d,
|
0xf6, 0xd0, 0xd6, 0xf5, 0x70, 0x14, 0x37, 0x02, 0xc1, 0x9c, 0x6f, 0x17, 0x5e, 0x24, 0xdb, 0x68,
|
||||||
0xe4, 0x19, 0x99, 0xe2, 0xe0, 0x28, 0xef, 0x80, 0xb6, 0xc2, 0x40, 0x08, 0xd2, 0xe2, 0x7b, 0xa4,
|
0x23, 0xcf, 0xc8, 0x14, 0x07, 0x47, 0x79, 0x07, 0xb4, 0x15, 0x06, 0x42, 0x90, 0x16, 0xdf, 0x23,
|
||||||
0x86, 0xb6, 0xa3, 0xd8, 0xb4, 0x9c, 0x54, 0x56, 0x1c, 0x0b, 0x96, 0xa6, 0xd0, 0xd0, 0x14, 0xc6,
|
0x35, 0xb4, 0x1d, 0xc5, 0xa6, 0xe5, 0xa4, 0xb2, 0xe2, 0x58, 0xb0, 0x34, 0x85, 0x86, 0xa6, 0x30,
|
||||||
0xea, 0x94, 0x79, 0xec, 0x49, 0xfa, 0x32, 0xc6, 0x69, 0x30, 0x91, 0x92, 0x06, 0xf0, 0x12, 0xd9,
|
0x56, 0xa7, 0xcc, 0x63, 0x4f, 0xd2, 0x97, 0x31, 0x4e, 0x83, 0x89, 0x94, 0x34, 0x80, 0x97, 0xc8,
|
||||||
0x44, 0x6b, 0xd7, 0xc1, 0xaf, 0x62, 0xd0, 0x5d, 0x4c, 0xc8, 0x3e, 0xda, 0xbd, 0x21, 0x58, 0xa6,
|
0x26, 0x5a, 0xbb, 0x0e, 0x7e, 0x15, 0x83, 0xee, 0x62, 0x42, 0xf6, 0xd1, 0xee, 0x0d, 0xc1, 0x32,
|
||||||
0xb8, 0xef, 0xab, 0x1e, 0x77, 0x5e, 0x42, 0x21, 0x5e, 0xf6, 0x25, 0x8d, 0x0b, 0x67, 0xdb, 0x57,
|
0xc5, 0x7d, 0x5f, 0xf5, 0xb8, 0xf3, 0x12, 0x0a, 0xf1, 0xb2, 0x2f, 0x69, 0x5c, 0x38, 0xdb, 0xbe,
|
||||||
0xbc, 0x32, 0x21, 0x54, 0x27, 0xc2, 0x69, 0xc8, 0xa8, 0x5e, 0x25, 0xeb, 0x68, 0xa5, 0xa9, 0x55,
|
0xe2, 0x95, 0x09, 0xa1, 0x3a, 0x11, 0x4e, 0x43, 0x46, 0xf5, 0x2a, 0x59, 0x47, 0x2b, 0x4d, 0xad,
|
||||||
0x1c, 0x25, 0xb4, 0x38, 0x21, 0x3b, 0xc2, 0xa6, 0xd5, 0xad, 0x91, 0x25, 0xb4, 0x90, 0x2e, 0x72,
|
0xe2, 0x28, 0xa1, 0xc5, 0x09, 0xd9, 0x11, 0x36, 0xad, 0x6e, 0x8d, 0x2c, 0xa1, 0x85, 0x74, 0x91,
|
||||||
0x90, 0x56, 0xd8, 0x2e, 0xae, 0x78, 0x34, 0x53, 0x61, 0x18, 0x4b, 0x61, 0xbb, 0x8e, 0x83, 0x61,
|
0x83, 0xb4, 0xc2, 0x76, 0x71, 0xc5, 0xa3, 0x99, 0x0a, 0xc3, 0x58, 0x0a, 0xdb, 0x75, 0x1c, 0x0c,
|
||||||
0x5a, 0x44, 0x09, 0x7a, 0x9d, 0x54, 0xd1, 0x72, 0x19, 0x1a, 0xc9, 0xb3, 0x91, 0xe8, 0x73, 0x0b,
|
0xd3, 0x22, 0x4a, 0xd0, 0xeb, 0xa4, 0x8a, 0x96, 0xcb, 0xd0, 0x48, 0x9e, 0x8d, 0x44, 0x9f, 0x5b,
|
||||||
0xad, 0x97, 0xd1, 0xa2, 0xe9, 0xca, 0x9d, 0x28, 0x21, 0xf1, 0x26, 0xb9, 0x87, 0xe6, 0x22, 0x21,
|
0x68, 0xbd, 0x8c, 0x16, 0x4d, 0x57, 0xee, 0x44, 0x09, 0x89, 0x37, 0xc9, 0x3d, 0x34, 0x17, 0x09,
|
||||||
0x8b, 0x89, 0xa8, 0xfa, 0xb1, 0x02, 0x2e, 0xca, 0xb1, 0xda, 0xf2, 0xb7, 0x31, 0x96, 0xda, 0xd8,
|
0x59, 0x4c, 0x44, 0xd5, 0x8f, 0x15, 0x70, 0x51, 0x8e, 0xd5, 0x96, 0xbf, 0x8d, 0xb1, 0xd4, 0xc6,
|
||||||
0xe4, 0x53, 0xb5, 0xed, 0xeb, 0xe1, 0x10, 0xc0, 0xc8, 0x28, 0xed, 0x78, 0x6d, 0x8d, 0x93, 0x4e,
|
0x26, 0x9f, 0xaa, 0x6d, 0x5f, 0x0f, 0x87, 0x00, 0x46, 0x46, 0x69, 0xc7, 0x6b, 0x6b, 0x9c, 0x74,
|
||||||
0x76, 0x34, 0xde, 0xf5, 0xb3, 0x46, 0xa5, 0x92, 0xdd, 0x50, 0xc5, 0xc6, 0x85, 0x60, 0xb5, 0x60,
|
0xb2, 0xa3, 0xf1, 0xae, 0x9f, 0x35, 0x2a, 0x95, 0xec, 0x86, 0x2a, 0x36, 0x2e, 0x04, 0xab, 0x05,
|
||||||
0xae, 0x41, 0x2d, 0x6b, 0xe1, 0x3d, 0xb2, 0x82, 0x96, 0x92, 0xcd, 0x49, 0xd9, 0x1a, 0x42, 0xd5,
|
0x73, 0x0d, 0x6a, 0x59, 0x0b, 0xef, 0x91, 0x15, 0xb4, 0x94, 0x6c, 0x4e, 0xca, 0xd6, 0x10, 0xaa,
|
||||||
0x01, 0x8e, 0x6b, 0xbe, 0x73, 0xe5, 0x72, 0x76, 0x94, 0xf1, 0x24, 0x72, 0xfc, 0x80, 0x20, 0x34,
|
0x0e, 0x70, 0x5c, 0xf3, 0x9d, 0x2b, 0x97, 0xb3, 0xa3, 0x8c, 0x27, 0x91, 0xe3, 0x07, 0x04, 0xa1,
|
||||||
0xdd, 0xa0, 0xac, 0x1d, 0x47, 0x78, 0xbf, 0x50, 0xa5, 0x67, 0xb7, 0xe3, 0x2b, 0x65, 0x20, 0x2d,
|
0xe9, 0x06, 0x65, 0xed, 0x38, 0xc2, 0xfb, 0x85, 0x2a, 0x3d, 0xbb, 0x1d, 0x5f, 0x29, 0x03, 0x69,
|
||||||
0xe8, 0x14, 0xfa, 0xb0, 0x50, 0xe5, 0xd5, 0x70, 0x3a, 0x94, 0xc0, 0xf1, 0x81, 0x57, 0xdd, 0x58,
|
0x41, 0xa7, 0xd0, 0x87, 0x85, 0x2a, 0xaf, 0x86, 0xd3, 0xa1, 0x04, 0x8e, 0x0f, 0xbc, 0xea, 0xc6,
|
||||||
0x08, 0x17, 0x26, 0x14, 0xc6, 0x00, 0xc7, 0x8f, 0x12, 0x26, 0x3c, 0xa6, 0xa1, 0x54, 0x3b, 0xa4,
|
0x42, 0xb8, 0x30, 0xa1, 0x30, 0x06, 0x38, 0x7e, 0x94, 0x30, 0xe1, 0x31, 0x0d, 0xa5, 0xda, 0x21,
|
||||||
0xba, 0x8d, 0x0f, 0xc9, 0x2a, 0x22, 0xe9, 0x0d, 0x03, 0xa0, 0xda, 0xb5, 0x84, 0xb1, 0x4a, 0x77,
|
0xd5, 0x6d, 0x7c, 0x48, 0x56, 0x11, 0x49, 0x6f, 0x18, 0x00, 0xd5, 0xae, 0x25, 0x8c, 0x55, 0xba,
|
||||||
0xf1, 0x63, 0x4f, 0x63, 0xb2, 0x6e, 0xc0, 0x5a, 0x21, 0x9b, 0xf8, 0x09, 0x39, 0x44, 0xfb, 0x65,
|
0x8b, 0x1f, 0x7b, 0x1a, 0x93, 0x75, 0x03, 0xd6, 0x0a, 0xd9, 0xc4, 0x4f, 0xc8, 0x21, 0xda, 0x2f,
|
||||||
0x23, 0xb2, 0x5a, 0x1c, 0xd5, 0xac, 0x25, 0x3a, 0xe0, 0x42, 0xda, 0x94, 0x60, 0x03, 0x21, 0xdb,
|
0x1b, 0x91, 0xd5, 0xe2, 0xa8, 0x66, 0x2d, 0xd1, 0x01, 0x17, 0xd2, 0xa6, 0x04, 0x1b, 0x08, 0xd9,
|
||||||
0xf8, 0xa9, 0xef, 0x75, 0x6a, 0x4a, 0x5a, 0x1d, 0x8b, 0x00, 0x5c, 0x24, 0x98, 0x8d, 0x35, 0x18,
|
0xc6, 0x4f, 0x7d, 0xaf, 0x53, 0x53, 0xd2, 0xea, 0x58, 0x04, 0xe0, 0x22, 0xc1, 0x6c, 0xac, 0xc1,
|
||||||
0xfc, 0x4d, 0x91, 0x36, 0x1f, 0xb8, 0x6f, 0x13, 0x56, 0x53, 0x6b, 0xc9, 0x87, 0x2a, 0x97, 0x65,
|
0xe0, 0x6f, 0x8a, 0xb4, 0xf9, 0xc0, 0x7d, 0x9b, 0xb0, 0x9a, 0x5a, 0x4b, 0x3e, 0x54, 0xb9, 0x2c,
|
||||||
0xdd, 0xd3, 0xa7, 0xc1, 0xea, 0x74, 0xd2, 0x2e, 0x07, 0x9f, 0x91, 0x03, 0x54, 0xbb, 0x51, 0x18,
|
0xeb, 0x9e, 0x3e, 0x0d, 0x56, 0xa7, 0x93, 0x76, 0x39, 0xf8, 0x8c, 0x1c, 0xa0, 0xda, 0x8d, 0xc2,
|
||||||
0xa5, 0x76, 0xbf, 0x2b, 0x7b, 0x50, 0x80, 0xb3, 0x9a, 0x0c, 0xfe, 0xde, 0xfb, 0x45, 0xbe, 0xb5,
|
0x28, 0xb5, 0xfb, 0x5d, 0xd9, 0x83, 0x02, 0x9c, 0xd5, 0x64, 0xf0, 0xf7, 0xde, 0x2f, 0xf2, 0xad,
|
||||||
0x70, 0x09, 0xd0, 0xc5, 0x0c, 0xe0, 0x23, 0x2f, 0x8b, 0x2b, 0xf7, 0xbb, 0x04, 0x78, 0xee, 0x53,
|
0x85, 0x4b, 0x80, 0x2e, 0x66, 0x00, 0x1f, 0x79, 0x59, 0x5c, 0xb9, 0xdf, 0x25, 0xc0, 0x73, 0x9f,
|
||||||
0xe4, 0x9e, 0x34, 0x16, 0xf1, 0x43, 0x21, 0x0e, 0xab, 0x63, 0xe3, 0xad, 0x38, 0x36, 0xa0, 0xf1,
|
0x22, 0xf7, 0xa4, 0xb1, 0x88, 0x1f, 0x0a, 0x71, 0x58, 0x1d, 0x1b, 0x6f, 0xc5, 0xb1, 0x01, 0x8d,
|
||||||
0x8f, 0x45, 0xcf, 0x47, 0xd1, 0x45, 0x7d, 0x3f, 0x15, 0x3d, 0xbf, 0x52, 0xb9, 0xe3, 0xc0, 0x84,
|
0x7f, 0x2c, 0x7a, 0x3e, 0x8a, 0x2e, 0xea, 0xfb, 0xa9, 0xe8, 0xf9, 0x95, 0xca, 0x1d, 0x07, 0x26,
|
||||||
0xf1, 0x89, 0x7f, 0x4e, 0x9d, 0x68, 0x0c, 0x05, 0x01, 0xd0, 0x0e, 0xe0, 0x5f, 0x7c, 0x3c, 0x49,
|
0x8c, 0x4f, 0xfc, 0x73, 0xea, 0x44, 0x63, 0x28, 0x08, 0x80, 0x76, 0x00, 0xff, 0xe2, 0xe3, 0x49,
|
||||||
0x91, 0x69, 0xdd, 0xdb, 0x6f, 0x58, 0x4a, 0xfe, 0xd7, 0xa2, 0xf9, 0x86, 0x76, 0x80, 0xe7, 0x2e,
|
0x8a, 0x4c, 0xeb, 0xde, 0x7e, 0xc3, 0x52, 0xf2, 0xbf, 0x16, 0xcd, 0x37, 0xb4, 0x03, 0x3c, 0x77,
|
||||||
0x8d, 0x5f, 0x78, 0x4f, 0x29, 0xf3, 0x32, 0x2a, 0x19, 0x04, 0xd7, 0x46, 0xef, 0x37, 0xcf, 0x4c,
|
0x69, 0xfc, 0xc2, 0x7b, 0x4a, 0x99, 0x97, 0x51, 0xc9, 0x20, 0xb8, 0x36, 0x7a, 0xbf, 0x79, 0x66,
|
||||||
0x16, 0x1b, 0x5b, 0xf7, 0xcb, 0xa2, 0xd9, 0x6d, 0xe8, 0xfa, 0xf7, 0x09, 0xff, 0x5e, 0x30, 0x61,
|
0xb2, 0xd8, 0xd8, 0xba, 0x5f, 0x16, 0xcd, 0x6e, 0x43, 0xd7, 0xbf, 0x4f, 0xf8, 0xf7, 0x82, 0x09,
|
||||||
0x14, 0x13, 0x34, 0x70, 0x5e, 0x2f, 0x06, 0xff, 0x41, 0xaa, 0xa8, 0x92, 0x2c, 0x83, 0x34, 0x09,
|
0xa3, 0x98, 0xa0, 0x81, 0xf3, 0x7a, 0x31, 0xf8, 0x0f, 0x52, 0x45, 0x95, 0x64, 0x19, 0xa4, 0x49,
|
||||||
0x39, 0x92, 0x86, 0xe0, 0x38, 0x58, 0x2a, 0x02, 0xfc, 0xa7, 0x6f, 0xf4, 0x58, 0x65, 0x8f, 0x9a,
|
0xc8, 0x91, 0x34, 0x04, 0xc7, 0xc1, 0x52, 0x11, 0xe0, 0x3f, 0x7d, 0xa3, 0xc7, 0x2a, 0x7b, 0xd4,
|
||||||
0x95, 0xc1, 0xd4, 0x7b, 0xea, 0xad, 0x38, 0xe7, 0x9d, 0x00, 0x70, 0xc3, 0x1f, 0x59, 0x96, 0x08,
|
0xac, 0x0c, 0xa6, 0xde, 0x53, 0x6f, 0xc5, 0x39, 0xef, 0x04, 0x80, 0x1b, 0xfe, 0xc8, 0xb2, 0x44,
|
||||||
0x1d, 0x90, 0xd6, 0x14, 0xc4, 0x30, 0xff, 0x28, 0x8e, 0x44, 0xbd, 0x9d, 0x98, 0x16, 0xd5, 0x25,
|
0xe8, 0x80, 0xb4, 0xa6, 0x20, 0x86, 0xf9, 0x47, 0x71, 0x24, 0xea, 0xed, 0xc4, 0xb4, 0xa8, 0x2e,
|
||||||
0x47, 0x60, 0x30, 0xf7, 0x2c, 0x8d, 0x6a, 0xd9, 0xb1, 0xd8, 0x58, 0x15, 0x8a, 0xd7, 0xb9, 0x73,
|
0x39, 0x02, 0x83, 0xb9, 0x67, 0x69, 0x54, 0xcb, 0x8e, 0xc5, 0xc6, 0xaa, 0x50, 0xbc, 0xce, 0x9d,
|
||||||
0x04, 0x4a, 0x63, 0x28, 0xe4, 0x97, 0xa1, 0x8c, 0x8b, 0x94, 0x11, 0xe9, 0x95, 0x8f, 0xc9, 0x43,
|
0x23, 0x50, 0x1a, 0x43, 0x21, 0xbf, 0x0c, 0x65, 0x5c, 0xa4, 0x8c, 0x48, 0xaf, 0x7c, 0x4c, 0x1e,
|
||||||
0xb4, 0x77, 0xd3, 0x2d, 0x9c, 0x86, 0x13, 0x60, 0x7e, 0xb6, 0x9b, 0xfe, 0xf9, 0x2d, 0x61, 0x91,
|
0xa2, 0xbd, 0x9b, 0x6e, 0xe1, 0x34, 0x9c, 0x00, 0xf3, 0xb3, 0xdd, 0xf4, 0xcf, 0x6f, 0x09, 0x8b,
|
||||||
0x16, 0x1d, 0x11, 0x40, 0x33, 0x13, 0x52, 0xfa, 0xb0, 0xe7, 0x57, 0x6f, 0x35, 0x16, 0x5e, 0xcf,
|
0xb4, 0xe8, 0x88, 0x00, 0x9a, 0x99, 0x90, 0xd2, 0x87, 0x3d, 0xbf, 0x7a, 0xcb, 0xbf, 0xa8, 0x23,
|
||||||
0xd5, 0x9f, 0xbd, 0xc8, 0x7f, 0xa1, 0xbc, 0x99, 0x4e, 0xfe, 0x7b, 0xfe, 0x7f, 0x00, 0x00, 0x00,
|
0x4a, 0x6f, 0x51, 0xcd, 0x3d, 0xff, 0x58, 0x34, 0x16, 0x5e, 0xcf, 0xd5, 0x9f, 0xbd, 0xc8, 0x7f,
|
||||||
0xff, 0xff, 0xec, 0x56, 0x69, 0xd7, 0x48, 0x09, 0x00, 0x00,
|
0xba, 0xbc, 0x99, 0x4e, 0xfe, 0x7b, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb7, 0xc9, 0x3a,
|
||||||
|
0x61, 0x61, 0x09, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,5 +85,6 @@ message ApplicationMetadataMessage {
|
||||||
SYNC_ACCOUNTS_POSITIONS = 70;
|
SYNC_ACCOUNTS_POSITIONS = 70;
|
||||||
COMMUNITY_EVENTS_MESSAGE_REJECTED = 71;
|
COMMUNITY_EVENTS_MESSAGE_REJECTED = 71;
|
||||||
COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE = 72;
|
COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE = 72;
|
||||||
|
COMMUNITY_SHARD_KEY = 73;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1018,6 +1018,7 @@ type ChatMessage struct {
|
||||||
DisplayName string `protobuf:"bytes,14,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
|
DisplayName string `protobuf:"bytes,14,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
|
||||||
ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,15,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,omitempty"`
|
ContactRequestPropagatedState *ContactRequestPropagatedState `protobuf:"bytes,15,opt,name=contact_request_propagated_state,json=contactRequestPropagatedState,proto3" json:"contact_request_propagated_state,omitempty"`
|
||||||
UnfurledLinks []*UnfurledLink `protobuf:"bytes,16,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"`
|
UnfurledLinks []*UnfurledLink `protobuf:"bytes,16,rep,name=unfurled_links,json=unfurledLinks,proto3" json:"unfurled_links,omitempty"`
|
||||||
|
Shard *Shard `protobuf:"bytes,17,opt,name=shard,proto3" json:"shard,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
@ -1208,6 +1209,13 @@ func (m *ChatMessage) GetUnfurledLinks() []*UnfurledLink {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *ChatMessage) GetShard() *Shard {
|
||||||
|
if m != nil {
|
||||||
|
return m.Shard
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// XXX_OneofWrappers is for the internal use of the proto package.
|
// XXX_OneofWrappers is for the internal use of the proto package.
|
||||||
func (*ChatMessage) XXX_OneofWrappers() []interface{} {
|
func (*ChatMessage) XXX_OneofWrappers() []interface{} {
|
||||||
return []interface{}{
|
return []interface{}{
|
||||||
|
@ -1242,99 +1250,101 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_263952f55fd35689 = []byte{
|
var fileDescriptor_263952f55fd35689 = []byte{
|
||||||
// 1497 bytes of a gzipped FileDescriptorProto
|
// 1523 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcd, 0x6e, 0xdb, 0xc6,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4f, 0x73, 0xe3, 0x4a,
|
||||||
0x13, 0xb7, 0xbe, 0xc5, 0xd1, 0x87, 0x99, 0x8d, 0xe3, 0x30, 0x41, 0x1c, 0x2b, 0xfa, 0x07, 0x88,
|
0x11, 0x8f, 0xff, 0x5b, 0x2d, 0xdb, 0xd1, 0xce, 0xe6, 0x65, 0xf5, 0xb6, 0x5e, 0x5e, 0xbc, 0x66,
|
||||||
0xff, 0x68, 0xa1, 0x02, 0x49, 0x5a, 0x04, 0x28, 0x8a, 0x82, 0x96, 0x18, 0x9b, 0x8d, 0xf5, 0x51,
|
0xa9, 0x0d, 0x05, 0x65, 0xaa, 0xf6, 0x3d, 0xa8, 0x57, 0x45, 0x51, 0x94, 0x62, 0xeb, 0x25, 0x62,
|
||||||
0x8a, 0x72, 0xea, 0x5e, 0x08, 0x9a, 0x5c, 0x5b, 0x84, 0x29, 0x52, 0x25, 0x57, 0x6d, 0xd5, 0x97,
|
0xe3, 0x3f, 0x8c, 0xe5, 0x3c, 0xc2, 0x45, 0xa5, 0x48, 0x93, 0x58, 0x15, 0x59, 0x32, 0xd2, 0x18,
|
||||||
0xea, 0xad, 0xa7, 0x1e, 0x7b, 0xe8, 0xa1, 0xd7, 0x1e, 0xfa, 0x02, 0x7d, 0x82, 0x3e, 0x40, 0xb1,
|
0x30, 0x27, 0xbe, 0x11, 0x37, 0x4e, 0x1c, 0x39, 0x70, 0xe0, 0xca, 0x57, 0xe0, 0x13, 0xf0, 0x01,
|
||||||
0xbb, 0xfc, 0x54, 0x6d, 0xa7, 0xcd, 0x45, 0xda, 0x99, 0x9d, 0x59, 0xce, 0xfc, 0x76, 0x76, 0x7e,
|
0xa8, 0x99, 0xd1, 0x5f, 0x93, 0x64, 0x61, 0x2f, 0xc9, 0x74, 0x4f, 0x77, 0xab, 0xe7, 0x37, 0x3d,
|
||||||
0x03, 0xc8, 0x9a, 0x9b, 0xc4, 0x58, 0xe0, 0x30, 0x34, 0x2f, 0x71, 0x6f, 0x19, 0xf8, 0xc4, 0x47,
|
0xfd, 0x6b, 0x03, 0x72, 0x56, 0x36, 0xb5, 0xd6, 0x24, 0x8e, 0xed, 0x7b, 0x32, 0xdc, 0x44, 0x21,
|
||||||
0x75, 0xf6, 0x77, 0xbe, 0xba, 0x78, 0xd8, 0xc0, 0xde, 0x6a, 0x11, 0x72, 0xf5, 0xc3, 0x96, 0xe5,
|
0x0d, 0x51, 0x9b, 0xff, 0xbb, 0xdd, 0xde, 0xbd, 0x96, 0x49, 0xb0, 0x5d, 0xc7, 0x42, 0xfd, 0xba,
|
||||||
0x7b, 0xc4, 0xb4, 0x08, 0x17, 0xbb, 0xaf, 0xa0, 0x3d, 0x25, 0x8e, 0x75, 0x85, 0x83, 0x21, 0xf7,
|
0xeb, 0x84, 0x01, 0xb5, 0x1d, 0x9a, 0x88, 0x72, 0xbc, 0xb2, 0x23, 0x57, 0x08, 0x83, 0x6f, 0xa0,
|
||||||
0x46, 0x08, 0xca, 0x73, 0x33, 0x9c, 0x4b, 0x85, 0x4e, 0xe1, 0x40, 0xd0, 0xd8, 0x9a, 0xea, 0x96,
|
0xb7, 0xa0, 0x9e, 0xf3, 0x40, 0xa2, 0x89, 0x08, 0x85, 0x10, 0xd4, 0x57, 0x76, 0xbc, 0x52, 0x2b,
|
||||||
0xa6, 0x75, 0x25, 0x15, 0x3b, 0x85, 0x83, 0x8a, 0xc6, 0xd6, 0xdd, 0x5f, 0x0b, 0xd0, 0x54, 0x17,
|
0xfd, 0xca, 0x99, 0x84, 0xf9, 0x9a, 0xe9, 0x36, 0xb6, 0xf3, 0xa0, 0x56, 0xfb, 0x95, 0xb3, 0x06,
|
||||||
0xe6, 0x25, 0x8e, 0x1d, 0x25, 0xa8, 0x2d, 0xcd, 0xb5, 0xeb, 0x9b, 0x36, 0xf3, 0x6d, 0x6a, 0xb1,
|
0xe6, 0xeb, 0xc1, 0xdf, 0x2b, 0xd0, 0x31, 0xd6, 0xf6, 0x3d, 0x49, 0x1d, 0x55, 0x68, 0x6d, 0xec,
|
||||||
0x88, 0x9e, 0x41, 0x99, 0xac, 0x97, 0x98, 0xb9, 0xb7, 0x9f, 0xdf, 0xed, 0xc5, 0x91, 0xf5, 0x98,
|
0x9d, 0x1f, 0xda, 0x2e, 0xf7, 0xed, 0xe0, 0x54, 0x44, 0xef, 0xa0, 0x4e, 0x77, 0x1b, 0xc2, 0xdd,
|
||||||
0xbf, 0xbe, 0x5e, 0x62, 0x8d, 0x19, 0xa0, 0x07, 0x50, 0x37, 0xdd, 0xf3, 0xd5, 0xc2, 0x70, 0x6c,
|
0x7b, 0xef, 0x5f, 0x0e, 0xd3, 0x34, 0x87, 0xdc, 0xdf, 0xdc, 0x6d, 0x08, 0xe6, 0x06, 0xe8, 0x73,
|
||||||
0xa9, 0xc4, 0xbe, 0x5f, 0x63, 0xb2, 0x6a, 0xa3, 0x1d, 0xa8, 0x7c, 0xe7, 0xd8, 0x64, 0x2e, 0x95,
|
0x68, 0xdb, 0xfe, 0xed, 0x76, 0x6d, 0x79, 0xae, 0x5a, 0xe3, 0xdf, 0x6f, 0x71, 0xd9, 0x70, 0xd1,
|
||||||
0x3b, 0x85, 0x83, 0x96, 0xc6, 0x05, 0xb4, 0x0b, 0xd5, 0x39, 0x76, 0x2e, 0xe7, 0x44, 0xaa, 0x30,
|
0x11, 0x34, 0x7e, 0xef, 0xb9, 0x74, 0xa5, 0xd6, 0xfb, 0x95, 0xb3, 0x2e, 0x16, 0x02, 0x3a, 0x86,
|
||||||
0x75, 0x24, 0xa1, 0x0f, 0x01, 0x45, 0x07, 0xd1, 0x2f, 0x84, 0x86, 0xe5, 0xaf, 0x3c, 0x22, 0x55,
|
0xe6, 0x8a, 0x78, 0xf7, 0x2b, 0xaa, 0x36, 0xb8, 0x3a, 0x91, 0xd0, 0x8f, 0x00, 0x25, 0x81, 0xd8,
|
||||||
0x99, 0x8d, 0xc8, 0x8f, 0x64, 0x1b, 0x7d, 0xaa, 0xef, 0xfe, 0x54, 0x80, 0xa6, 0xbc, 0xb2, 0x1d,
|
0x17, 0x62, 0xcb, 0x09, 0xb7, 0x01, 0x55, 0x9b, 0xdc, 0x46, 0x11, 0x21, 0xf9, 0xc6, 0x88, 0xe9,
|
||||||
0xff, 0xdd, 0xa9, 0xbc, 0xcc, 0xa5, 0xd2, 0x49, 0x53, 0xc9, 0xfa, 0x73, 0x21, 0x93, 0xd7, 0x3e,
|
0x07, 0x7f, 0xa9, 0x40, 0x47, 0xdb, 0xba, 0x5e, 0xf8, 0xf1, 0xa3, 0x7c, 0x5d, 0x3a, 0x4a, 0x3f,
|
||||||
0x34, 0xec, 0x55, 0x60, 0x12, 0xc7, 0xf7, 0x8c, 0x45, 0xc8, 0x52, 0x2b, 0x6b, 0x10, 0xab, 0x86,
|
0x3f, 0x4a, 0xd1, 0x5f, 0x08, 0x85, 0x73, 0x9d, 0x82, 0xec, 0x6e, 0x23, 0x9b, 0x7a, 0x61, 0x60,
|
||||||
0x61, 0xf7, 0x63, 0x10, 0x12, 0x1f, 0xb4, 0x0b, 0x68, 0x36, 0x7a, 0x33, 0x1a, 0xbf, 0x1d, 0x19,
|
0xad, 0x63, 0x7e, 0xb4, 0x3a, 0x86, 0x54, 0x35, 0x89, 0x07, 0x3f, 0x01, 0x29, 0xf3, 0x41, 0xc7,
|
||||||
0xf2, 0x6c, 0xa0, 0x8e, 0x0d, 0xfd, 0x6c, 0xa2, 0x88, 0x5b, 0xa8, 0x06, 0x25, 0x59, 0xee, 0x8b,
|
0x80, 0x96, 0xd3, 0x0f, 0xd3, 0xd9, 0x77, 0x53, 0x4b, 0x5b, 0x8e, 0x8d, 0x99, 0x65, 0xde, 0xcc,
|
||||||
0x05, 0xb6, 0x18, 0x6a, 0x62, 0xb1, 0xfb, 0x4b, 0x11, 0x1a, 0x8a, 0xed, 0x90, 0x38, 0xee, 0x1d,
|
0x75, 0xe5, 0x00, 0xb5, 0xa0, 0xa6, 0x69, 0x23, 0xa5, 0xc2, 0x17, 0x13, 0xac, 0x54, 0x07, 0x7f,
|
||||||
0xa8, 0x58, 0xae, 0x6f, 0x5d, 0xb1, 0xa8, 0xcb, 0x1a, 0x17, 0xe8, 0xed, 0x11, 0xfc, 0x3d, 0x61,
|
0xab, 0x82, 0xac, 0xbb, 0x1e, 0x4d, 0xf3, 0x3e, 0x82, 0x86, 0xe3, 0x87, 0xce, 0x03, 0xcf, 0xba,
|
||||||
0x31, 0x0b, 0x1a, 0x5b, 0xa3, 0xfb, 0x50, 0x63, 0x35, 0x93, 0x00, 0x5d, 0xa5, 0xa2, 0x6a, 0xa3,
|
0x8e, 0x85, 0xc0, 0x6e, 0x8f, 0x92, 0x3f, 0x50, 0x9e, 0xb3, 0x84, 0xf9, 0x1a, 0xbd, 0x82, 0x16,
|
||||||
0x3d, 0x80, 0xa8, 0x8e, 0xe8, 0x5e, 0x99, 0xed, 0x09, 0x91, 0x86, 0x5f, 0xc3, 0x65, 0x60, 0x7a,
|
0x2f, 0xa0, 0x0c, 0xe8, 0x26, 0x13, 0x0d, 0x17, 0x9d, 0x00, 0x24, 0x45, 0xc5, 0xf6, 0xea, 0x7c,
|
||||||
0x1c, 0xef, 0xa6, 0xc6, 0x05, 0xf4, 0x0a, 0x9a, 0xb1, 0x13, 0x43, 0xa7, 0xca, 0xd0, 0xb9, 0x97,
|
0x4f, 0x4a, 0x34, 0xe2, 0x1a, 0xee, 0x23, 0x3b, 0x10, 0x78, 0x77, 0xb0, 0x10, 0xd0, 0x37, 0xd0,
|
||||||
0xa2, 0x13, 0x05, 0xc8, 0x20, 0x69, 0x2c, 0x52, 0x01, 0x0d, 0xa0, 0x49, 0x0b, 0x12, 0x7b, 0x84,
|
0x49, 0x9d, 0x38, 0x3a, 0x4d, 0x8e, 0xce, 0x67, 0x39, 0x3a, 0x49, 0x82, 0x1c, 0x12, 0x79, 0x9d,
|
||||||
0x7b, 0xd6, 0x98, 0xe7, 0x93, 0xd4, 0xb3, 0x3f, 0x37, 0xe3, 0xf4, 0x7a, 0x7d, 0x6e, 0xc9, 0x4f,
|
0x0b, 0x68, 0x0c, 0x1d, 0x56, 0x9d, 0x24, 0xa0, 0xc2, 0xb3, 0xc5, 0x3d, 0xdf, 0xe4, 0x9e, 0xa3,
|
||||||
0xb1, 0x52, 0x01, 0x7d, 0x06, 0xed, 0x95, 0x77, 0xb1, 0x0a, 0x5c, 0x6c, 0x1b, 0xae, 0xe3, 0x5d,
|
0x95, 0x9d, 0x1e, 0x6f, 0x38, 0x12, 0x96, 0x22, 0x8a, 0x93, 0x0b, 0xe8, 0xe7, 0xd0, 0xdb, 0x06,
|
||||||
0x85, 0x52, 0xbd, 0x53, 0x3a, 0x68, 0x3c, 0xdf, 0x4d, 0xcf, 0x99, 0x45, 0xfb, 0x27, 0x8e, 0x77,
|
0x77, 0xdb, 0xc8, 0x27, 0xae, 0xe5, 0x7b, 0xc1, 0x43, 0xac, 0xb6, 0xfb, 0xb5, 0x33, 0xf9, 0xfd,
|
||||||
0xa5, 0xb5, 0x56, 0x19, 0x29, 0xec, 0xfe, 0x56, 0x80, 0xd6, 0x00, 0xbb, 0x98, 0xe0, 0xdb, 0x81,
|
0x71, 0x1e, 0x67, 0x99, 0xec, 0x5f, 0x79, 0xc1, 0x03, 0xee, 0x6e, 0x0b, 0x52, 0x3c, 0xf8, 0x47,
|
||||||
0xcc, 0x80, 0x56, 0xbc, 0x05, 0xb4, 0xd2, 0x8d, 0xa0, 0x95, 0x6f, 0x03, 0xad, 0xf2, 0xaf, 0x41,
|
0x05, 0xba, 0x63, 0xe2, 0x13, 0x4a, 0x9e, 0x07, 0xb2, 0x00, 0x5a, 0xf5, 0x19, 0xd0, 0x6a, 0x4f,
|
||||||
0xdb, 0x03, 0xb0, 0x59, 0xb8, 0xb6, 0x71, 0xbe, 0x66, 0x60, 0x0b, 0x9a, 0x10, 0x69, 0x0e, 0xd7,
|
0x82, 0x56, 0x7f, 0x0e, 0xb4, 0xc6, 0xff, 0x0c, 0xda, 0x09, 0x80, 0xcb, 0xd3, 0x75, 0xad, 0xdb,
|
||||||
0xdd, 0x21, 0xec, 0x4e, 0xd7, 0x9e, 0xc5, 0x33, 0x7a, 0xed, 0x07, 0xc3, 0x77, 0xa4, 0x95, 0x8f,
|
0x1d, 0x07, 0x5b, 0xc2, 0x52, 0xa2, 0x39, 0xdf, 0x0d, 0x26, 0x70, 0xbc, 0xd8, 0x05, 0x8e, 0x38,
|
||||||
0xbe, 0xb8, 0x11, 0x7d, 0xf7, 0xf7, 0x22, 0xb4, 0x07, 0x4e, 0x68, 0xf9, 0x81, 0x1d, 0x9f, 0xd3,
|
0xd1, 0xb7, 0x61, 0x34, 0xf9, 0xc8, 0xb1, 0xca, 0xd9, 0x57, 0xf7, 0xb2, 0x1f, 0xfc, 0xb3, 0x0a,
|
||||||
0x86, 0xa2, 0x63, 0x47, 0x1d, 0xa2, 0xe8, 0xd8, 0xac, 0xc2, 0xe2, 0x57, 0x21, 0x44, 0x35, 0xff,
|
0xbd, 0xb1, 0x17, 0x3b, 0x61, 0xe4, 0xa6, 0x71, 0x7a, 0x50, 0xf5, 0xdc, 0xa4, 0x43, 0x54, 0x3d,
|
||||||
0x08, 0x04, 0xe2, 0x2c, 0x70, 0x48, 0xcc, 0xc5, 0x32, 0x86, 0x24, 0x51, 0xa0, 0x03, 0xd8, 0x4e,
|
0x97, 0x57, 0x58, 0xfa, 0x2a, 0xa4, 0xa4, 0xe6, 0xbf, 0x00, 0x89, 0x7a, 0x6b, 0x12, 0x53, 0x7b,
|
||||||
0x04, 0x5a, 0xc1, 0x38, 0xae, 0xb5, 0x4d, 0x35, 0x7d, 0x8b, 0xd1, 0x55, 0x33, 0x84, 0x04, 0x2d,
|
0xbd, 0x49, 0x21, 0xc9, 0x14, 0xe8, 0x0c, 0x0e, 0x33, 0x81, 0x55, 0x30, 0x49, 0x6b, 0x6d, 0x5f,
|
||||||
0x16, 0xd1, 0x27, 0x50, 0x35, 0x57, 0x64, 0xee, 0x07, 0x0c, 0x82, 0xc6, 0xf3, 0xc7, 0x29, 0x74,
|
0xcd, 0xde, 0x62, 0x72, 0xd5, 0x1c, 0x21, 0x09, 0xa7, 0x22, 0xfa, 0x29, 0x34, 0xed, 0x2d, 0x5d,
|
||||||
0xf9, 0x78, 0x65, 0x66, 0xa5, 0x45, 0xd6, 0xe8, 0x73, 0x10, 0x02, 0x7c, 0x81, 0x03, 0xec, 0x59,
|
0x85, 0x11, 0x87, 0x40, 0x7e, 0xff, 0x65, 0x0e, 0x5d, 0x39, 0x5f, 0x8d, 0x5b, 0xe1, 0xc4, 0x1a,
|
||||||
0xbc, 0xe0, 0x1a, 0xd9, 0x82, 0xcb, 0xbb, 0x6a, 0xb1, 0xa1, 0x96, 0xfa, 0xa0, 0x01, 0x34, 0x4c,
|
0xfd, 0x02, 0xa4, 0x88, 0xdc, 0x91, 0x88, 0x04, 0x8e, 0x28, 0x38, 0xb9, 0x58, 0x70, 0x65, 0x57,
|
||||||
0x42, 0x4c, 0x6b, 0xbe, 0xc0, 0x1e, 0x89, 0x6b, 0xad, 0x7b, 0xe3, 0xd7, 0x13, 0x53, 0x2d, 0xeb,
|
0x9c, 0x1a, 0xe2, 0xdc, 0x07, 0x8d, 0x41, 0xb6, 0x29, 0xb5, 0x9d, 0xd5, 0x9a, 0x04, 0x34, 0xad,
|
||||||
0xd6, 0xfd, 0xb3, 0x00, 0x3b, 0xd7, 0xc5, 0x79, 0x1d, 0xba, 0x9e, 0xb9, 0x48, 0xd0, 0xa5, 0x6b,
|
0xb5, 0xc1, 0x93, 0x5f, 0xcf, 0x4c, 0x71, 0xd1, 0x6d, 0xf0, 0xaf, 0x0a, 0x1c, 0x3d, 0x96, 0xe7,
|
||||||
0xf4, 0x14, 0x5a, 0xb6, 0x13, 0x5a, 0x81, 0xb3, 0x70, 0x3c, 0x93, 0xf8, 0x41, 0x84, 0x70, 0x5e,
|
0x63, 0xe8, 0x06, 0xf6, 0x3a, 0x43, 0x97, 0xad, 0xd1, 0x5b, 0xe8, 0xba, 0x5e, 0xec, 0x44, 0xde,
|
||||||
0x89, 0x1e, 0x42, 0xdd, 0x73, 0xac, 0x2b, 0xe6, 0xcd, 0xe1, 0x4d, 0x64, 0x7a, 0x3f, 0xe6, 0xb7,
|
0xda, 0x0b, 0x6c, 0x1a, 0x46, 0x09, 0xc2, 0x65, 0x25, 0x7a, 0x0d, 0xed, 0xc0, 0x73, 0x1e, 0xb8,
|
||||||
0x26, 0x31, 0x83, 0x59, 0xe0, 0x46, 0xc8, 0xa6, 0x0a, 0xd4, 0x03, 0xc4, 0x05, 0xd6, 0x27, 0x27,
|
0xb7, 0x80, 0x37, 0x93, 0xd9, 0xfd, 0xd8, 0xbf, 0xb3, 0xa9, 0x1d, 0x2d, 0x23, 0x3f, 0x41, 0x36,
|
||||||
0x51, 0x33, 0xac, 0xb2, 0xfa, 0xbd, 0x66, 0x87, 0x7e, 0xc9, 0xf5, 0x2d, 0xd3, 0xa5, 0x87, 0xd5,
|
0x57, 0xa0, 0x21, 0x20, 0x21, 0xf0, 0x3e, 0x39, 0x4f, 0x9a, 0x61, 0x93, 0xd7, 0xef, 0x23, 0x3b,
|
||||||
0xf8, 0x97, 0x62, 0xb9, 0xeb, 0xc3, 0xfd, 0x1b, 0x40, 0xa5, 0x41, 0x24, 0x85, 0x16, 0x65, 0x9c,
|
0xec, 0x4b, 0x7e, 0xe8, 0xd8, 0x3e, 0x0b, 0xd6, 0x12, 0x5f, 0x4a, 0xe5, 0x41, 0x08, 0xaf, 0x9e,
|
||||||
0x79, 0x37, 0x8f, 0x40, 0xb0, 0xe6, 0xa6, 0xe7, 0x61, 0x57, 0x4d, 0xea, 0x32, 0x51, 0xd0, 0xc2,
|
0x00, 0x95, 0x25, 0x91, 0x15, 0x5a, 0x72, 0xe2, 0xc2, 0xbb, 0xf9, 0x02, 0x24, 0x67, 0x65, 0x07,
|
||||||
0xb8, 0x5c, 0x39, 0xae, 0xad, 0x26, 0x5c, 0x11, 0x89, 0xdd, 0xbf, 0x0a, 0x20, 0xdd, 0x74, 0x07,
|
0x01, 0xf1, 0x8d, 0xac, 0x2e, 0x33, 0x05, 0x2b, 0x8c, 0xfb, 0xad, 0xe7, 0xbb, 0x46, 0xc6, 0x15,
|
||||||
0xff, 0x40, 0x37, 0x17, 0xc2, 0x66, 0xf1, 0x23, 0x11, 0x4a, 0xab, 0xc0, 0x8d, 0x3e, 0x40, 0x97,
|
0x89, 0x38, 0xf8, 0x77, 0x05, 0xd4, 0xa7, 0xee, 0xe0, 0xbf, 0xd0, 0x2d, 0xa5, 0xb0, 0x5f, 0xfc,
|
||||||
0x34, 0xd3, 0x0b, 0xc7, 0xc5, 0xa3, 0x0c, 0xa6, 0xb1, 0x4c, 0x6f, 0x85, 0xae, 0xa7, 0xce, 0x0f,
|
0x48, 0x81, 0xda, 0x36, 0xf2, 0x93, 0x0f, 0xb0, 0x25, 0x3b, 0xe9, 0x9d, 0xe7, 0x93, 0x69, 0x01,
|
||||||
0xf8, 0x70, 0x4d, 0x70, 0xc8, 0x70, 0x2d, 0x6b, 0x79, 0x25, 0xea, 0x40, 0xb6, 0x79, 0x45, 0xef,
|
0xd3, 0x54, 0x66, 0xb7, 0xc2, 0xd6, 0x0b, 0xef, 0x8f, 0xe4, 0x7c, 0x47, 0x49, 0xcc, 0x71, 0xad,
|
||||||
0x37, 0xd7, 0xcf, 0x32, 0xfc, 0x53, 0xcb, 0xf3, 0x4f, 0x16, 0xe7, 0xfa, 0x06, 0xce, 0x3f, 0x16,
|
0xe3, 0xb2, 0x12, 0xf5, 0xa1, 0xd8, 0xbc, 0x92, 0xf7, 0x5b, 0xea, 0x67, 0x05, 0xfe, 0x69, 0x95,
|
||||||
0xa1, 0x99, 0x6d, 0x73, 0x71, 0xf0, 0x85, 0x34, 0xf8, 0x1d, 0xa8, 0x10, 0x87, 0xb8, 0x71, 0x2d,
|
0xf9, 0xa7, 0x88, 0x73, 0x7b, 0x0f, 0xe7, 0x3f, 0x57, 0xa1, 0x53, 0x6c, 0x73, 0x69, 0xf2, 0x95,
|
||||||
0x71, 0x81, 0x06, 0x64, 0x63, 0x5a, 0x37, 0x4b, 0x4a, 0x47, 0x51, 0xb2, 0x59, 0x15, 0xfa, 0x00,
|
0x3c, 0xf9, 0x23, 0x68, 0x50, 0x8f, 0xfa, 0x69, 0x2d, 0x09, 0x81, 0x25, 0xe4, 0x12, 0x56, 0x37,
|
||||||
0xee, 0x90, 0xf9, 0x6a, 0x71, 0xee, 0x99, 0x8e, 0x6b, 0xc4, 0xa1, 0xf1, 0x6e, 0x26, 0x26, 0x1b,
|
0x1b, 0x46, 0x47, 0xc9, 0x61, 0x8b, 0x2a, 0xf4, 0x43, 0x78, 0x41, 0x57, 0xdb, 0xf5, 0x6d, 0x60,
|
||||||
0x93, 0x84, 0xee, 0xb7, 0x53, 0x63, 0x4e, 0xda, 0x9c, 0x9d, 0xdb, 0x89, 0xfa, 0x2d, 0x63, 0xef,
|
0x7b, 0xbe, 0x95, 0xa6, 0x26, 0xba, 0x99, 0x92, 0x6d, 0xcc, 0x33, 0xba, 0x3f, 0xcc, 0x8d, 0x05,
|
||||||
0xff, 0x43, 0xea, 0x6c, 0x44, 0x3c, 0xce, 0x39, 0x3a, 0x3d, 0xe0, 0x98, 0x13, 0xfa, 0x8b, 0xa8,
|
0x69, 0x0b, 0x76, 0xee, 0x65, 0xea, 0xef, 0x38, 0x7b, 0xff, 0x00, 0x72, 0x67, 0x2b, 0xe1, 0x71,
|
||||||
0xc3, 0x70, 0x7e, 0xd8, 0xbf, 0xbe, 0xaf, 0xf7, 0xe8, 0x4f, 0x4a, 0xbb, 0xdd, 0x7d, 0xa8, 0xc7,
|
0xc1, 0xd1, 0x79, 0x80, 0x4b, 0x41, 0xe8, 0x5f, 0x25, 0x1d, 0x46, 0xf0, 0xc3, 0xe9, 0xe3, 0x7d,
|
||||||
0x1a, 0x54, 0x87, 0xf2, 0x89, 0x3a, 0x7a, 0x23, 0x6e, 0x21, 0x01, 0x2a, 0xea, 0x50, 0x3e, 0x52,
|
0x7d, 0xc8, 0xfe, 0xe4, 0xb4, 0x3b, 0x38, 0x85, 0x76, 0xaa, 0x41, 0x6d, 0xa8, 0x5f, 0x19, 0xd3,
|
||||||
0xc4, 0x42, 0xf7, 0x0f, 0x01, 0x1a, 0x19, 0x82, 0xb9, 0xa1, 0x3f, 0xe6, 0x3a, 0x59, 0x91, 0xed,
|
0x0f, 0xca, 0x01, 0x92, 0xa0, 0x61, 0x4c, 0xb4, 0x0b, 0x5d, 0xa9, 0x0c, 0xfe, 0x04, 0x20, 0x17,
|
||||||
0x64, 0x3a, 0x59, 0xcc, 0xae, 0xa5, 0x0c, 0xbb, 0xee, 0x43, 0x23, 0xc0, 0xe1, 0xd2, 0xf7, 0x42,
|
0x08, 0xe6, 0x89, 0xfe, 0x58, 0xea, 0x64, 0x55, 0xbe, 0x53, 0xe8, 0x64, 0x29, 0xbb, 0xd6, 0x0a,
|
||||||
0x6c, 0x10, 0x3f, 0x2a, 0x13, 0x88, 0x55, 0xba, 0x4f, 0x07, 0x1d, 0xec, 0x85, 0x06, 0x7b, 0x98,
|
0xec, 0x7a, 0x0a, 0x72, 0x44, 0xe2, 0x4d, 0x18, 0xc4, 0xc4, 0xa2, 0x61, 0x52, 0x26, 0x90, 0xaa,
|
||||||
0x51, 0x57, 0xc3, 0x5e, 0xc8, 0x6a, 0x28, 0x43, 0x32, 0xd5, 0x1c, 0xc9, 0x6c, 0xf2, 0x45, 0xed,
|
0xcc, 0x90, 0x0d, 0x3a, 0x24, 0x88, 0x2d, 0xfe, 0x30, 0x93, 0xae, 0x46, 0x82, 0x98, 0xd7, 0x50,
|
||||||
0xbd, 0x49, 0xb6, 0xfe, 0x5e, 0x24, 0xfb, 0x12, 0x6a, 0x21, 0x1f, 0x15, 0x25, 0x81, 0x35, 0x4d,
|
0x81, 0x64, 0x9a, 0x25, 0x92, 0xd9, 0xe7, 0x8b, 0xd6, 0x27, 0x93, 0x6c, 0xfb, 0x93, 0x48, 0xf6,
|
||||||
0x29, 0x3d, 0x20, 0x3f, 0x43, 0x1e, 0x6f, 0x69, 0xb1, 0x29, 0xea, 0x41, 0x85, 0xcd, 0x60, 0x12,
|
0x6b, 0x68, 0xc5, 0x62, 0x54, 0x54, 0x25, 0xde, 0x34, 0xd5, 0x3c, 0x40, 0x79, 0x86, 0xbc, 0x3c,
|
||||||
0x30, 0x9f, 0xdd, 0x8d, 0xe1, 0x2f, 0xf5, 0xe0, 0x66, 0xd4, 0xde, 0xa4, 0x93, 0x90, 0xd4, 0xd8,
|
0xc0, 0xa9, 0x29, 0x1a, 0x42, 0x83, 0xcf, 0x60, 0x2a, 0x70, 0x9f, 0xe3, 0xbd, 0xe1, 0x2f, 0xf7,
|
||||||
0xb4, 0xcf, 0x4e, 0x58, 0xd4, 0x9e, 0x99, 0xa1, 0xc7, 0x20, 0x58, 0xfe, 0x62, 0xb1, 0xf2, 0x1c,
|
0x10, 0x66, 0xcc, 0xde, 0x66, 0x93, 0x90, 0x2a, 0xef, 0xdb, 0x17, 0x27, 0x2c, 0x66, 0xcf, 0xcd,
|
||||||
0xb2, 0x96, 0x9a, 0xb4, 0x22, 0x8f, 0xb7, 0xb4, 0x54, 0x85, 0xfa, 0xb0, 0x6d, 0xf3, 0x56, 0x10,
|
0xd0, 0x97, 0x20, 0x39, 0xe1, 0x7a, 0xbd, 0x0d, 0x3c, 0xba, 0x53, 0x3b, 0xac, 0x22, 0x2f, 0x0f,
|
||||||
0xcf, 0xc7, 0x92, 0xb5, 0x19, 0x7d, 0xbe, 0x57, 0x1c, 0x6f, 0x69, 0x6d, 0x3b, 0xcf, 0x77, 0x09,
|
0x70, 0xae, 0x42, 0x23, 0x38, 0x74, 0x45, 0x2b, 0x48, 0x87, 0x65, 0xd5, 0xd9, 0xcf, 0xbe, 0xdc,
|
||||||
0x81, 0xb7, 0xb2, 0x04, 0xfe, 0x04, 0x9a, 0xb6, 0x13, 0x2e, 0x5d, 0x73, 0xcd, 0x2f, 0xb2, 0x1d,
|
0x2b, 0x2e, 0x0f, 0x70, 0xcf, 0x2d, 0xf3, 0x5d, 0x46, 0xe0, 0xdd, 0x22, 0x81, 0xbf, 0x81, 0x8e,
|
||||||
0xbd, 0x1b, 0xae, 0x63, 0x97, 0xb9, 0x84, 0x4e, 0x34, 0x6f, 0x1b, 0x01, 0xfe, 0x66, 0x85, 0x43,
|
0xeb, 0xc5, 0x1b, 0xdf, 0xde, 0x89, 0x8b, 0xec, 0x25, 0xef, 0x46, 0xe8, 0xf8, 0x65, 0x6e, 0xa0,
|
||||||
0x62, 0x2c, 0x03, 0x7f, 0x69, 0x5e, 0x9a, 0x94, 0xbc, 0x43, 0x62, 0x12, 0x2c, 0x6d, 0xb3, 0x70,
|
0x9f, 0x0c, 0xdf, 0x56, 0x44, 0x7e, 0xbb, 0x25, 0x31, 0xb5, 0x36, 0x51, 0xb8, 0xb1, 0xef, 0x6d,
|
||||||
0x9e, 0x65, 0x6e, 0x83, 0x7b, 0x68, 0xdc, 0x61, 0x92, 0xd8, 0x4f, 0xa9, 0xb9, 0xb6, 0x67, 0xdd,
|
0x46, 0xde, 0x31, 0xb5, 0x29, 0x51, 0x0f, 0x79, 0x3a, 0xef, 0x0a, 0xb7, 0x21, 0x3c, 0xb0, 0x70,
|
||||||
0xb6, 0x7d, 0xcd, 0x28, 0x24, 0xfe, 0x97, 0x51, 0xe8, 0xe7, 0x12, 0x34, 0xfa, 0xb9, 0x4e, 0xb4,
|
0x98, 0x67, 0xf6, 0x0b, 0x66, 0x8e, 0x4f, 0x9c, 0xe7, 0xb6, 0x1f, 0x19, 0x85, 0x94, 0xff, 0x63,
|
||||||
0x13, 0xcf, 0xa2, 0xfd, 0xf1, 0x48, 0x57, 0x46, 0x7a, 0x3c, 0x8d, 0xb6, 0x01, 0x74, 0xe5, 0x2b,
|
0x14, 0x42, 0xdf, 0x87, 0x06, 0xff, 0x79, 0xa0, 0xbe, 0xe0, 0x59, 0x1d, 0x16, 0xae, 0x98, 0xa9,
|
||||||
0xdd, 0x98, 0x9c, 0xc8, 0xea, 0x48, 0x2c, 0xa0, 0x06, 0xd4, 0xa6, 0xba, 0xda, 0x7f, 0xa3, 0x68,
|
0xb1, 0xd8, 0x1d, 0xfc, 0xb5, 0x06, 0xf2, 0xa8, 0xd4, 0xb0, 0x8e, 0xd2, 0x91, 0x75, 0x34, 0x9b,
|
||||||
0x62, 0x11, 0x01, 0x54, 0xa7, 0xba, 0xac, 0xcf, 0xa6, 0x62, 0x89, 0xbe, 0x37, 0x65, 0x38, 0xfe,
|
0x9a, 0xfa, 0xd4, 0x4c, 0x87, 0xd6, 0x1e, 0x80, 0xa9, 0xff, 0xda, 0xb4, 0xe6, 0x57, 0x9a, 0x31,
|
||||||
0x42, 0x15, 0xcb, 0xe8, 0x3e, 0xdc, 0xd5, 0x35, 0x79, 0x34, 0x95, 0xfb, 0xba, 0x3a, 0xa6, 0x27,
|
0x55, 0x2a, 0x48, 0x86, 0xd6, 0xc2, 0x34, 0x46, 0x1f, 0x74, 0xac, 0x54, 0x11, 0x40, 0x73, 0x61,
|
||||||
0x0e, 0x87, 0xf2, 0x68, 0x20, 0x56, 0xd0, 0x01, 0x3c, 0x9d, 0x9e, 0x4d, 0x75, 0x65, 0x68, 0x0c,
|
0x6a, 0xe6, 0x72, 0xa1, 0xd4, 0xd8, 0xb3, 0xd4, 0x27, 0xb3, 0x5f, 0x1a, 0x4a, 0x1d, 0xbd, 0x82,
|
||||||
0x95, 0xe9, 0x54, 0x3e, 0x52, 0x92, 0xaf, 0x4d, 0x34, 0xf5, 0x54, 0xd6, 0x15, 0xe3, 0x48, 0x1b,
|
0x97, 0x26, 0xd6, 0xa6, 0x0b, 0x6d, 0x64, 0x1a, 0x33, 0x16, 0x71, 0x32, 0xd1, 0xa6, 0x63, 0xa5,
|
||||||
0xcf, 0x26, 0x62, 0x35, 0x7d, 0xbd, 0x35, 0xba, 0x64, 0xf3, 0xb1, 0x58, 0x47, 0x2d, 0x10, 0xe8,
|
0x81, 0xce, 0xe0, 0xed, 0xe2, 0x66, 0x61, 0xea, 0x13, 0x6b, 0xa2, 0x2f, 0x16, 0xda, 0x85, 0x9e,
|
||||||
0x61, 0xb3, 0x91, 0xaa, 0x9f, 0x89, 0x02, 0x9d, 0xa0, 0x37, 0x8e, 0x3b, 0x92, 0x27, 0x22, 0xa0,
|
0x7d, 0x6d, 0x8e, 0x8d, 0x6b, 0xcd, 0xd4, 0xad, 0x0b, 0x3c, 0x5b, 0xce, 0x95, 0x66, 0xfe, 0xc8,
|
||||||
0xbb, 0xb0, 0x4d, 0xcf, 0x95, 0xfb, 0xba, 0xa1, 0x29, 0x5f, 0xce, 0x94, 0xa9, 0x2e, 0x36, 0xa8,
|
0x5b, 0x6c, 0xc9, 0xc7, 0x68, 0xa5, 0x8d, 0xba, 0x20, 0xb1, 0x60, 0xcb, 0xa9, 0x61, 0xde, 0x28,
|
||||||
0x72, 0xa0, 0x4e, 0xfb, 0x63, 0x6d, 0x10, 0x5b, 0x8b, 0x4d, 0xf4, 0x00, 0xee, 0xa9, 0x03, 0x65,
|
0x12, 0x1b, 0xb4, 0xf7, 0xc2, 0x5d, 0x68, 0x73, 0x05, 0xd0, 0x4b, 0x38, 0x64, 0x71, 0xb5, 0x91,
|
||||||
0xa4, 0xab, 0xfa, 0x99, 0x71, 0xaa, 0x68, 0xea, 0x6b, 0xb5, 0x2f, 0xd3, 0x98, 0xc5, 0x16, 0x7a,
|
0x69, 0x61, 0xfd, 0x57, 0x4b, 0x7d, 0x61, 0x2a, 0x32, 0x53, 0x8e, 0x8d, 0xc5, 0x68, 0x86, 0xc7,
|
||||||
0x02, 0x7b, 0x1b, 0x87, 0x4f, 0xd4, 0xd1, 0x48, 0x49, 0xbd, 0xdb, 0xe8, 0x29, 0x74, 0x36, 0x4c,
|
0xa9, 0xb5, 0xd2, 0x41, 0x9f, 0xc3, 0x67, 0xc6, 0x58, 0x9f, 0x9a, 0x86, 0x79, 0x63, 0x5d, 0xeb,
|
||||||
0x86, 0x33, 0x7d, 0x26, 0x9f, 0x18, 0xca, 0x29, 0xcd, 0x69, 0xaa, 0x8c, 0x74, 0x71, 0xfb, 0x9a,
|
0xd8, 0xf8, 0xd6, 0x18, 0x69, 0x2c, 0x67, 0xa5, 0x8b, 0xde, 0xc0, 0xc9, 0x5e, 0xf0, 0xb9, 0x31,
|
||||||
0xa4, 0x73, 0x56, 0x72, 0xbf, 0xaf, 0x4c, 0x74, 0x65, 0x20, 0x8a, 0xe8, 0x19, 0xfc, 0xef, 0x36,
|
0x9d, 0xea, 0xb9, 0x77, 0x0f, 0xbd, 0x85, 0xfe, 0x9e, 0xc9, 0x64, 0x69, 0x2e, 0xb5, 0x2b, 0x4b,
|
||||||
0x4b, 0x4d, 0x19, 0x8e, 0x4f, 0x95, 0x81, 0x78, 0xe7, 0x50, 0x48, 0x88, 0xe3, 0xb0, 0xf5, 0x75,
|
0xbf, 0x66, 0x67, 0x5a, 0xe8, 0x53, 0x53, 0x39, 0x7c, 0xe4, 0xd0, 0x25, 0x2b, 0x6d, 0x34, 0xd2,
|
||||||
0xa3, 0xf7, 0xd1, 0xa7, 0xf1, 0xa5, 0x9f, 0x57, 0xd9, 0xea, 0xc5, 0xdf, 0x01, 0x00, 0x00, 0xff,
|
0xe7, 0xa6, 0x3e, 0x56, 0x14, 0xf4, 0x0e, 0xbe, 0xf7, 0x9c, 0x25, 0xd6, 0x27, 0xb3, 0x6b, 0x7d,
|
||||||
0xff, 0xb2, 0x8c, 0x90, 0x17, 0x2b, 0x0e, 0x00, 0x00,
|
0xac, 0xbc, 0x38, 0x97, 0x32, 0x7e, 0x39, 0xef, 0xfe, 0x46, 0x1e, 0xfe, 0xf8, 0x67, 0xe9, 0x2d,
|
||||||
|
0xdf, 0x36, 0xf9, 0xea, 0xab, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x18, 0x95, 0x9c, 0x97, 0x5f,
|
||||||
|
0x0e, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ package protobuf;
|
||||||
|
|
||||||
import "enums.proto";
|
import "enums.proto";
|
||||||
import "contact.proto";
|
import "contact.proto";
|
||||||
|
import "shard.proto";
|
||||||
|
|
||||||
message StickerMessage {
|
message StickerMessage {
|
||||||
string hash = 1;
|
string hash = 1;
|
||||||
|
@ -168,6 +169,8 @@ message ChatMessage {
|
||||||
|
|
||||||
repeated UnfurledLink unfurled_links = 16;
|
repeated UnfurledLink unfurled_links = 16;
|
||||||
|
|
||||||
|
Shard shard = 17;
|
||||||
|
|
||||||
enum ContentType {
|
enum ContentType {
|
||||||
UNKNOWN_CONTENT_TYPE = 0;
|
UNKNOWN_CONTENT_TYPE = 0;
|
||||||
TEXT_PLAIN = 1;
|
TEXT_PLAIN = 1;
|
||||||
|
|
|
@ -1144,15 +1144,17 @@ func (m *CommunityCancelRequestToJoin) GetDisplayName() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
type CommunityRequestToJoinResponse struct {
|
type CommunityRequestToJoinResponse struct {
|
||||||
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
||||||
Community *CommunityDescription `protobuf:"bytes,2,opt,name=community,proto3" json:"community,omitempty"`
|
Community *CommunityDescription `protobuf:"bytes,2,opt,name=community,proto3" json:"community,omitempty"`
|
||||||
Accepted bool `protobuf:"varint,3,opt,name=accepted,proto3" json:"accepted,omitempty"`
|
Accepted bool `protobuf:"varint,3,opt,name=accepted,proto3" json:"accepted,omitempty"`
|
||||||
Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"`
|
Grant []byte `protobuf:"bytes,4,opt,name=grant,proto3" json:"grant,omitempty"`
|
||||||
CommunityId []byte `protobuf:"bytes,5,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
CommunityId []byte `protobuf:"bytes,5,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
||||||
MagnetUri string `protobuf:"bytes,6,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"`
|
MagnetUri string `protobuf:"bytes,6,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
ProtectedTopicPrivateKey []byte `protobuf:"bytes,7,opt,name=protected_topic_private_key,json=protectedTopicPrivateKey,proto3" json:"protected_topic_private_key,omitempty"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
Shard *Shard `protobuf:"bytes,8,opt,name=shard,proto3" json:"shard,omitempty"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequestToJoinResponse{} }
|
func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequestToJoinResponse{} }
|
||||||
|
@ -1222,6 +1224,20 @@ func (m *CommunityRequestToJoinResponse) GetMagnetUri() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *CommunityRequestToJoinResponse) GetProtectedTopicPrivateKey() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.ProtectedTopicPrivateKey
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *CommunityRequestToJoinResponse) GetShard() *Shard {
|
||||||
|
if m != nil {
|
||||||
|
return m.Shard
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type CommunityRequestToLeave struct {
|
type CommunityRequestToLeave struct {
|
||||||
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
|
||||||
CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
||||||
|
@ -1672,135 +1688,138 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_f937943d74c1cd8b = []byte{
|
var fileDescriptor_f937943d74c1cd8b = []byte{
|
||||||
// 2066 bytes of a gzipped FileDescriptorProto
|
// 2122 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x41, 0x73, 0x1b, 0x49,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcf, 0x73, 0x1b, 0x49,
|
||||||
0xf5, 0xcf, 0x68, 0x64, 0x5b, 0x7a, 0xb2, 0x6c, 0xb9, 0x93, 0xd8, 0x13, 0x27, 0xd9, 0x28, 0xf3,
|
0xf5, 0xdf, 0xd1, 0x48, 0xb6, 0xf4, 0x64, 0xd9, 0x72, 0x27, 0xb1, 0x27, 0x4e, 0xb2, 0x51, 0xe6,
|
||||||
0xff, 0x53, 0x78, 0x43, 0xa1, 0xec, 0x1a, 0x28, 0x52, 0xbb, 0xb0, 0xbb, 0x8a, 0x3c, 0x64, 0xb5,
|
0xfb, 0xdd, 0xc2, 0x1b, 0x0a, 0x67, 0xd7, 0x40, 0x91, 0xda, 0x65, 0x7f, 0x28, 0xf2, 0x90, 0xd5,
|
||||||
0x89, 0x46, 0xde, 0x96, 0xbc, 0x81, 0x2d, 0x60, 0xaa, 0x3d, 0xd3, 0xb6, 0xbb, 0x22, 0xcd, 0x88,
|
0x26, 0x1a, 0x79, 0x5b, 0xf2, 0x06, 0xb6, 0x80, 0xa9, 0xf6, 0x4c, 0xdb, 0xee, 0x8a, 0x34, 0x23,
|
||||||
0xe9, 0x96, 0x0b, 0x71, 0xe0, 0x00, 0x7c, 0x02, 0xf8, 0x00, 0x1c, 0xb8, 0xc3, 0x47, 0xe0, 0x40,
|
0xa6, 0x5b, 0x2e, 0xc4, 0x81, 0x03, 0xf0, 0x17, 0xc0, 0x1f, 0xc0, 0x81, 0x3b, 0xfc, 0x09, 0x1c,
|
||||||
0x15, 0x47, 0xee, 0xdc, 0x38, 0x72, 0xe4, 0xcc, 0x89, 0xea, 0xee, 0x99, 0xd1, 0x8c, 0x24, 0xc7,
|
0xa8, 0xe2, 0xb8, 0x77, 0x6e, 0xfc, 0x09, 0x9c, 0x39, 0x51, 0xdd, 0x3d, 0x33, 0x9a, 0x91, 0xe4,
|
||||||
0x59, 0x16, 0xaa, 0x38, 0x69, 0xde, 0xeb, 0xd7, 0xaf, 0xdf, 0x7b, 0xfd, 0xeb, 0xd7, 0xbf, 0x16,
|
0x38, 0xcb, 0x42, 0x15, 0x27, 0xcd, 0x7b, 0xfd, 0xfa, 0xf5, 0xeb, 0xf7, 0x3e, 0xfd, 0xfa, 0xd3,
|
||||||
0xec, 0xf8, 0xd1, 0x78, 0x3c, 0x0d, 0x99, 0x60, 0x94, 0xb7, 0x26, 0x71, 0x24, 0x22, 0x54, 0x51,
|
0x82, 0x6d, 0x3f, 0x1a, 0x8f, 0xa7, 0x21, 0x13, 0x8c, 0xf2, 0x83, 0x49, 0x1c, 0x89, 0x08, 0x55,
|
||||||
0x3f, 0xa7, 0xd3, 0xb3, 0xfd, 0x9b, 0xfe, 0x05, 0x11, 0x1e, 0x0b, 0x68, 0x28, 0x98, 0x98, 0xe9,
|
0xd5, 0xcf, 0xe9, 0xf4, 0x6c, 0xef, 0x86, 0x7f, 0x41, 0x84, 0xc7, 0x02, 0x1a, 0x0a, 0x26, 0x66,
|
||||||
0xe1, 0xfd, 0x1a, 0x0d, 0xa7, 0xe3, 0xc4, 0xd6, 0xbe, 0x84, 0xb5, 0x67, 0x31, 0x09, 0x05, 0x7a,
|
0x7a, 0x78, 0xaf, 0x4e, 0xc3, 0xe9, 0x98, 0xa7, 0x02, 0xbf, 0x20, 0x71, 0xa0, 0x05, 0xfb, 0x12,
|
||||||
0x08, 0x9b, 0xa9, 0xa7, 0x99, 0xc7, 0x02, 0xcb, 0x68, 0x1a, 0x07, 0x9b, 0xb8, 0x96, 0xe9, 0xba,
|
0x2a, 0x4f, 0x63, 0x12, 0x0a, 0xf4, 0x00, 0x36, 0x52, 0xb7, 0x33, 0x8f, 0x05, 0x96, 0xd1, 0x32,
|
||||||
0x01, 0xba, 0x0b, 0xd5, 0x31, 0x1d, 0x9f, 0xd2, 0x58, 0x8e, 0x97, 0xd4, 0x78, 0x45, 0x2b, 0xba,
|
0xf6, 0x37, 0x70, 0x3d, 0xd3, 0x75, 0x03, 0x74, 0x07, 0x6a, 0x63, 0x3a, 0x3e, 0xa5, 0xb1, 0x1c,
|
||||||
0x01, 0xda, 0x83, 0x8d, 0x64, 0x31, 0xcb, 0x6c, 0x1a, 0x07, 0x55, 0xbc, 0x2e, 0xc5, 0x6e, 0x80,
|
0x2f, 0xa9, 0xf1, 0xaa, 0x56, 0x74, 0x03, 0xb4, 0x0b, 0xeb, 0xc9, 0xca, 0x96, 0xd9, 0x32, 0xf6,
|
||||||
0x6e, 0xc1, 0x9a, 0x3f, 0x8a, 0xfc, 0x57, 0x56, 0xb9, 0x69, 0x1c, 0x94, 0xb1, 0x16, 0xec, 0x3f,
|
0x6b, 0x78, 0x4d, 0x8a, 0xdd, 0x00, 0xdd, 0x84, 0x8a, 0x3f, 0x8a, 0xfc, 0x97, 0x56, 0xb9, 0x65,
|
||||||
0x97, 0x60, 0xbb, 0x93, 0xfa, 0xee, 0x29, 0x27, 0xe8, 0x5b, 0xb0, 0x16, 0x47, 0x23, 0xca, 0x2d,
|
0xec, 0x97, 0xb1, 0x16, 0xec, 0xbf, 0x96, 0x60, 0xab, 0x93, 0xfa, 0xee, 0x29, 0x27, 0xe8, 0xbb,
|
||||||
0xa3, 0x69, 0x1e, 0x6c, 0x1d, 0x3e, 0x68, 0xa5, 0x79, 0xb4, 0x16, 0x2c, 0x5b, 0x58, 0x9a, 0x61,
|
0x50, 0x89, 0xa3, 0x11, 0xe5, 0x96, 0xd1, 0x32, 0xf7, 0x37, 0x0f, 0xef, 0x1f, 0xa4, 0x9b, 0x3a,
|
||||||
0x6d, 0x8d, 0x3e, 0x81, 0x9d, 0x98, 0x5e, 0x52, 0x32, 0xa2, 0x81, 0x47, 0x7c, 0x3f, 0x9a, 0x86,
|
0x58, 0xb0, 0x3c, 0xc0, 0xd2, 0x0c, 0x6b, 0x6b, 0xf4, 0x29, 0x6c, 0xc7, 0xf4, 0x92, 0x92, 0x11,
|
||||||
0x82, 0x5b, 0xa5, 0xa6, 0x79, 0x50, 0x3b, 0xbc, 0x33, 0x77, 0x81, 0x13, 0x93, 0xb6, 0xb6, 0x78,
|
0x0d, 0x3c, 0xe2, 0xfb, 0xd1, 0x34, 0x14, 0xdc, 0x2a, 0xb5, 0xcc, 0xfd, 0xfa, 0xe1, 0xed, 0xb9,
|
||||||
0x5a, 0xb2, 0x0c, 0xdc, 0x88, 0x8b, 0x4a, 0x8e, 0x1e, 0xc1, 0xce, 0x88, 0x70, 0xe1, 0x4d, 0x27,
|
0x0b, 0x9c, 0x98, 0xb4, 0xb5, 0xc5, 0x93, 0x92, 0x65, 0xe0, 0x66, 0x5c, 0x54, 0x72, 0xf4, 0x10,
|
||||||
0x01, 0x11, 0xd4, 0xd3, 0x81, 0x9b, 0x2a, 0xf0, 0x6d, 0x39, 0x70, 0xa2, 0xf4, 0x1d, 0x95, 0xc2,
|
0xb6, 0x47, 0x84, 0x0b, 0x6f, 0x3a, 0x09, 0x88, 0xa0, 0x9e, 0x0e, 0xdc, 0x54, 0x81, 0x6f, 0xc9,
|
||||||
0x2f, 0x0d, 0x58, 0x53, 0x81, 0xa0, 0x3a, 0x54, 0x71, 0xff, 0x85, 0xe3, 0xb9, 0x7d, 0xd7, 0x69,
|
0x81, 0x13, 0xa5, 0xef, 0xa8, 0x2d, 0xfc, 0xda, 0x80, 0x8a, 0x0a, 0x04, 0x35, 0xa0, 0x86, 0xfb,
|
||||||
0xdc, 0x40, 0x5b, 0x00, 0x4a, 0xec, 0xbf, 0x74, 0x1d, 0xdc, 0x30, 0x32, 0xb9, 0x7d, 0xd4, 0xeb,
|
0xcf, 0x1d, 0xcf, 0xed, 0xbb, 0x4e, 0xf3, 0x0d, 0xb4, 0x09, 0xa0, 0xc4, 0xfe, 0x0b, 0xd7, 0xc1,
|
||||||
0xba, 0x8d, 0x32, 0xba, 0x0d, 0x3b, 0x4a, 0x1e, 0xf6, 0x9f, 0x3b, 0xae, 0xd7, 0x6b, 0x0f, 0x86,
|
0x4d, 0x23, 0x93, 0xdb, 0x47, 0xbd, 0xae, 0xdb, 0x2c, 0xa3, 0x5b, 0xb0, 0xad, 0xe4, 0x61, 0xff,
|
||||||
0x0e, 0x6e, 0xac, 0xd9, 0xe5, 0x4a, 0xa9, 0x51, 0xb2, 0xcb, 0x15, 0xb3, 0x61, 0x3e, 0xd2, 0x06,
|
0x99, 0xe3, 0x7a, 0xbd, 0xf6, 0x60, 0xe8, 0xe0, 0x66, 0xc5, 0x2e, 0x57, 0x4b, 0xcd, 0x92, 0x5d,
|
||||||
0xbd, 0xb6, 0xdb, 0x7e, 0xe6, 0x78, 0x27, 0x03, 0x07, 0x0f, 0x1e, 0xdd, 0xd6, 0xaa, 0xfe, 0x91,
|
0xae, 0x9a, 0x4d, 0xf3, 0xa1, 0x36, 0xe8, 0xb5, 0xdd, 0xf6, 0x53, 0xc7, 0x3b, 0x19, 0x38, 0x78,
|
||||||
0x83, 0xdb, 0x43, 0xc7, 0xeb, 0xf4, 0xdd, 0xa1, 0xe3, 0x0e, 0xed, 0x5f, 0x98, 0xb0, 0x9b, 0x95,
|
0xf0, 0xf0, 0x96, 0x56, 0xf5, 0x8f, 0x1c, 0xdc, 0x1e, 0x3a, 0x5e, 0xa7, 0xef, 0x0e, 0x1d, 0x77,
|
||||||
0x67, 0x18, 0xbd, 0xa2, 0x61, 0x8f, 0x0a, 0x12, 0x10, 0x41, 0xd0, 0x19, 0x20, 0x3f, 0x0a, 0x45,
|
0x68, 0xff, 0xca, 0x84, 0x9d, 0x2c, 0x3d, 0xc3, 0xe8, 0x25, 0x0d, 0x7b, 0x54, 0x90, 0x80, 0x08,
|
||||||
0x4c, 0x7c, 0xe1, 0x91, 0x20, 0x88, 0x29, 0xe7, 0x49, 0x71, 0x6b, 0x87, 0xdf, 0x5e, 0x51, 0xdc,
|
0x82, 0xce, 0x00, 0xf9, 0x51, 0x28, 0x62, 0xe2, 0x0b, 0x8f, 0x04, 0x41, 0x4c, 0x39, 0x4f, 0x92,
|
||||||
0xc2, 0xec, 0x56, 0x27, 0x99, 0xda, 0x4e, 0x67, 0x3a, 0xa1, 0x88, 0x67, 0x78, 0xc7, 0x5f, 0xd4,
|
0x5b, 0x3f, 0xfc, 0xde, 0x8a, 0xe4, 0x16, 0x66, 0x1f, 0x74, 0x92, 0xa9, 0xed, 0x74, 0xa6, 0x13,
|
||||||
0xa3, 0x26, 0xd4, 0x02, 0xca, 0xfd, 0x98, 0x4d, 0x04, 0x8b, 0x42, 0x85, 0x8c, 0x2a, 0xce, 0xab,
|
0x8a, 0x78, 0x86, 0xb7, 0xfd, 0x45, 0x3d, 0x6a, 0x41, 0x3d, 0xa0, 0xdc, 0x8f, 0xd9, 0x44, 0xb0,
|
||||||
0x24, 0x06, 0xd8, 0x98, 0x9c, 0xd3, 0x04, 0x1a, 0x5a, 0x40, 0xef, 0x41, 0x55, 0xc8, 0x25, 0x87,
|
0x28, 0x54, 0xc8, 0xa8, 0xe1, 0xbc, 0x4a, 0x62, 0x80, 0x8d, 0xc9, 0x39, 0x4d, 0xa0, 0xa1, 0x05,
|
||||||
0xb3, 0x09, 0x55, 0xe8, 0xd8, 0x3a, 0xbc, 0x77, 0x55, 0x58, 0xd2, 0x06, 0xcf, 0xcd, 0xd1, 0x2e,
|
0xf4, 0x1e, 0xd4, 0x84, 0x5c, 0x72, 0x38, 0x9b, 0x50, 0x85, 0x8e, 0xcd, 0xc3, 0xbb, 0x57, 0x85,
|
||||||
0xac, 0xf3, 0xd9, 0xf8, 0x34, 0x1a, 0x59, 0x6b, 0x1a, 0x6d, 0x5a, 0x42, 0x08, 0xca, 0x21, 0x19,
|
0x25, 0x6d, 0xf0, 0xdc, 0x1c, 0xed, 0xc0, 0x1a, 0x9f, 0x8d, 0x4f, 0xa3, 0x91, 0x55, 0xd1, 0x68,
|
||||||
0x53, 0x6b, 0x5d, 0x69, 0xd5, 0x37, 0xda, 0x87, 0x4a, 0x40, 0x7d, 0x36, 0x26, 0x23, 0x6e, 0x6d,
|
0xd3, 0x12, 0x42, 0x50, 0x0e, 0xc9, 0x98, 0x5a, 0x6b, 0x4a, 0xab, 0xbe, 0xd1, 0x1e, 0x54, 0x03,
|
||||||
0x34, 0x8d, 0x83, 0x3a, 0xce, 0xe4, 0xfd, 0x23, 0x59, 0xbd, 0x55, 0x89, 0xa2, 0x06, 0x98, 0xaf,
|
0xea, 0xb3, 0x31, 0x19, 0x71, 0x6b, 0xbd, 0x65, 0xec, 0x37, 0x70, 0x26, 0xef, 0x1d, 0xc9, 0xec,
|
||||||
0xe8, 0x4c, 0x9d, 0x83, 0x32, 0x96, 0x9f, 0x32, 0x8b, 0x4b, 0x32, 0x9a, 0xd2, 0x24, 0x43, 0x2d,
|
0xad, 0xda, 0x28, 0x6a, 0x82, 0xf9, 0x92, 0xce, 0xd4, 0x39, 0x28, 0x63, 0xf9, 0x29, 0x77, 0x71,
|
||||||
0xbc, 0x57, 0x7a, 0x62, 0xd8, 0x7f, 0x33, 0xe0, 0x56, 0x16, 0xef, 0x31, 0x8d, 0xc7, 0x8c, 0x73,
|
0x49, 0x46, 0x53, 0x9a, 0xec, 0x50, 0x0b, 0xef, 0x95, 0x1e, 0x1b, 0xf6, 0xdf, 0x0d, 0xb8, 0x99,
|
||||||
0x16, 0x85, 0x1c, 0xdd, 0x81, 0x0a, 0x0d, 0xb9, 0x17, 0x85, 0x23, 0xed, 0xa9, 0x82, 0x37, 0x68,
|
0xc5, 0x7b, 0x4c, 0xe3, 0x31, 0xe3, 0x9c, 0x45, 0x21, 0x47, 0xb7, 0xa1, 0x4a, 0x43, 0xee, 0x45,
|
||||||
0xc8, 0xfb, 0xe1, 0x68, 0x86, 0x2c, 0xd8, 0x98, 0xc4, 0xec, 0x92, 0x08, 0xed, 0xaf, 0x82, 0x53,
|
0xe1, 0x48, 0x7b, 0xaa, 0xe2, 0x75, 0x1a, 0xf2, 0x7e, 0x38, 0x9a, 0x21, 0x0b, 0xd6, 0x27, 0x31,
|
||||||
0x11, 0x7d, 0x17, 0xd6, 0x89, 0xef, 0x53, 0xce, 0x55, 0xb9, 0xb6, 0x0e, 0xbf, 0xb2, 0xa2, 0x28,
|
0xbb, 0x24, 0x42, 0xfb, 0xab, 0xe2, 0x54, 0x44, 0x1f, 0xc0, 0x1a, 0xf1, 0x7d, 0xca, 0xb9, 0x4a,
|
||||||
0xb9, 0x45, 0x5a, 0x6d, 0x65, 0x8c, 0x93, 0x49, 0xf6, 0x10, 0xd6, 0xb5, 0x06, 0x21, 0xd8, 0x3a,
|
0xd7, 0xe6, 0xe1, 0x5b, 0x2b, 0x92, 0x92, 0x5b, 0xe4, 0xa0, 0xad, 0x8c, 0x71, 0x32, 0xc9, 0x1e,
|
||||||
0x71, 0x9f, 0xbb, 0xfd, 0x97, 0xae, 0xd7, 0xee, 0x74, 0x9c, 0xc1, 0xa0, 0x71, 0x03, 0xed, 0x40,
|
0xc2, 0x9a, 0xd6, 0x20, 0x04, 0x9b, 0x27, 0xee, 0x33, 0xb7, 0xff, 0xc2, 0xf5, 0xda, 0x9d, 0x8e,
|
||||||
0xdd, 0xed, 0x7b, 0x3d, 0xa7, 0xf7, 0xd4, 0xc1, 0x83, 0x8f, 0xbb, 0xc7, 0x0d, 0x03, 0xdd, 0x84,
|
0x33, 0x18, 0x34, 0xdf, 0x40, 0xdb, 0xd0, 0x70, 0xfb, 0x5e, 0xcf, 0xe9, 0x3d, 0x71, 0xf0, 0xe0,
|
||||||
0xed, 0xae, 0xfb, 0x59, 0x77, 0xd8, 0x1e, 0x76, 0xfb, 0xae, 0xd7, 0x77, 0x5f, 0xfc, 0xa0, 0x51,
|
0x93, 0xee, 0x71, 0xd3, 0x40, 0x37, 0x60, 0xab, 0xeb, 0x7e, 0xde, 0x1d, 0xb6, 0x87, 0xdd, 0xbe,
|
||||||
0x92, 0xa0, 0xed, 0xbb, 0x1e, 0x76, 0x3e, 0x3d, 0x71, 0x06, 0xc3, 0x86, 0x69, 0xff, 0xca, 0x84,
|
0xeb, 0xf5, 0xdd, 0xe7, 0x3f, 0x6a, 0x96, 0x24, 0x68, 0xfb, 0xae, 0x87, 0x9d, 0xcf, 0x4e, 0x9c,
|
||||||
0xba, 0xda, 0x89, 0x4e, 0xcc, 0x04, 0x8d, 0x19, 0x41, 0x3f, 0x7a, 0x0d, 0xbc, 0x5a, 0xf3, 0x90,
|
0xc1, 0xb0, 0x69, 0xda, 0xbf, 0x31, 0xa1, 0xa1, 0x2a, 0xd1, 0x89, 0x99, 0xa0, 0x31, 0x23, 0xe8,
|
||||||
0x0b, 0x93, 0xbe, 0x00, 0xaa, 0xde, 0x81, 0xb2, 0x90, 0xc0, 0x28, 0xbd, 0x01, 0x30, 0x94, 0x65,
|
0x27, 0xaf, 0x80, 0xd7, 0xc1, 0x3c, 0xe4, 0xc2, 0xa4, 0xaf, 0x80, 0xaa, 0x77, 0xa0, 0x2c, 0x24,
|
||||||
0x0e, 0x13, 0xe6, 0x4a, 0x4c, 0x94, 0x73, 0x98, 0xd8, 0x85, 0x75, 0x32, 0x96, 0x67, 0x3e, 0xc5,
|
0x30, 0x4a, 0xaf, 0x01, 0x0c, 0x65, 0x99, 0xc3, 0x84, 0xb9, 0x12, 0x13, 0xe5, 0x1c, 0x26, 0x76,
|
||||||
0x8f, 0x96, 0x64, 0x8f, 0x53, 0x20, 0xf3, 0x58, 0xc0, 0xad, 0xf5, 0xa6, 0x79, 0x50, 0xc6, 0x15,
|
0x60, 0x8d, 0x8c, 0xe5, 0x99, 0x4f, 0xf1, 0xa3, 0x25, 0xd9, 0xe3, 0x14, 0xc8, 0x3c, 0x16, 0x70,
|
||||||
0xa5, 0xe8, 0x06, 0x1c, 0x3d, 0x80, 0x9a, 0xdc, 0xcd, 0x09, 0x11, 0x82, 0xc6, 0xa1, 0xc2, 0x52,
|
0x6b, 0xad, 0x65, 0xee, 0x97, 0x71, 0x55, 0x29, 0xba, 0x01, 0x47, 0xf7, 0xa1, 0x2e, 0xab, 0x39,
|
||||||
0x15, 0x03, 0x0d, 0xf9, 0xb1, 0xd6, 0x14, 0x90, 0x56, 0x51, 0xc0, 0xf9, 0x4f, 0x23, 0xed, 0x37,
|
0x21, 0x42, 0xd0, 0x38, 0x54, 0x58, 0xaa, 0x61, 0xa0, 0x21, 0x3f, 0xd6, 0x9a, 0x02, 0xd2, 0xaa,
|
||||||
0x26, 0x58, 0xc5, 0x02, 0xcc, 0x91, 0x80, 0xb6, 0xa0, 0x94, 0x74, 0xee, 0x2a, 0x2e, 0xb1, 0x00,
|
0x0a, 0x38, 0xff, 0x69, 0xa4, 0xfd, 0xce, 0x04, 0xab, 0x98, 0x80, 0x39, 0x12, 0xd0, 0x26, 0x94,
|
||||||
0xbd, 0x5f, 0x28, 0xe1, 0x57, 0xaf, 0x2a, 0xe1, 0xdc, 0x43, 0x2b, 0x57, 0xcd, 0x0f, 0x60, 0x4b,
|
0x92, 0xce, 0x5d, 0xc3, 0x25, 0x16, 0xa0, 0xf7, 0x0b, 0x29, 0xfc, 0xc6, 0x55, 0x29, 0x9c, 0x7b,
|
||||||
0x57, 0xc2, 0x4f, 0xf6, 0xce, 0x32, 0xd5, 0xd6, 0xee, 0x5d, 0xb1, 0xb5, 0xb8, 0x2e, 0x0a, 0xf0,
|
0x38, 0xc8, 0x65, 0xf3, 0x43, 0xd8, 0xd4, 0x99, 0xf0, 0x93, 0xda, 0x59, 0xa6, 0x2a, 0xed, 0xee,
|
||||||
0xb8, 0x03, 0x95, 0xe4, 0x42, 0xe0, 0x56, 0xb9, 0x69, 0x1e, 0x54, 0xf1, 0x86, 0xbe, 0x11, 0x38,
|
0x15, 0xa5, 0xc5, 0x0d, 0x51, 0x80, 0xc7, 0x6d, 0xa8, 0x26, 0x17, 0x02, 0xb7, 0xca, 0x2d, 0x73,
|
||||||
0xba, 0x0f, 0xc0, 0xb8, 0x97, 0xa2, 0x7f, 0x4d, 0xa1, 0xbf, 0xca, 0xf8, 0xb1, 0x56, 0xd8, 0x7f,
|
0xbf, 0x86, 0xd7, 0xf5, 0x8d, 0xc0, 0xd1, 0x3d, 0x00, 0xc6, 0xbd, 0x14, 0xfd, 0x15, 0x85, 0xfe,
|
||||||
0x30, 0xa0, 0xac, 0x0e, 0xf9, 0x3d, 0xb0, 0x52, 0xfc, 0xea, 0x5e, 0x79, 0xec, 0xe0, 0x5e, 0x77,
|
0x1a, 0xe3, 0xc7, 0x5a, 0x61, 0xff, 0xc9, 0x80, 0xb2, 0x3a, 0xe4, 0x77, 0xc1, 0x4a, 0xf1, 0xab,
|
||||||
0x30, 0xe8, 0xf6, 0xdd, 0xc6, 0x0d, 0xd4, 0x80, 0xcd, 0xa7, 0x4e, 0xa7, 0xdf, 0x4b, 0x1b, 0xab,
|
0x7b, 0xe5, 0xb1, 0x83, 0x7b, 0xdd, 0xc1, 0xa0, 0xdb, 0x77, 0x9b, 0x6f, 0xa0, 0x26, 0x6c, 0x3c,
|
||||||
0x21, 0xb1, 0x9d, 0x68, 0x34, 0xbe, 0x1b, 0x25, 0x74, 0x0b, 0x1a, 0x9d, 0xb6, 0xeb, 0x7d, 0xd6,
|
0x71, 0x3a, 0xfd, 0x5e, 0xda, 0x58, 0x0d, 0x89, 0xed, 0x44, 0xa3, 0xf1, 0xdd, 0x2c, 0xa1, 0x9b,
|
||||||
0x75, 0x5e, 0x7a, 0x9d, 0x8f, 0xdb, 0xae, 0xeb, 0xbc, 0x68, 0x98, 0xe8, 0x3e, 0xdc, 0xc9, 0xb4,
|
0xd0, 0xec, 0xb4, 0x5d, 0xef, 0xf3, 0xae, 0xf3, 0xc2, 0xeb, 0x7c, 0xd2, 0x76, 0x5d, 0xe7, 0x79,
|
||||||
0x6d, 0xf7, 0xc8, 0x3b, 0xee, 0x0f, 0x86, 0xd9, 0x70, 0x19, 0xed, 0xc1, 0xcd, 0xc4, 0x4f, 0xb1,
|
0xd3, 0x44, 0xf7, 0xe0, 0x76, 0xa6, 0x6d, 0xbb, 0x47, 0xde, 0x71, 0x7f, 0x30, 0xcc, 0x86, 0xcb,
|
||||||
0x45, 0xa3, 0x5d, 0x40, 0x85, 0x01, 0xdd, 0xe1, 0xd7, 0xed, 0x7f, 0x56, 0x73, 0xe7, 0xff, 0xa8,
|
0x68, 0x17, 0x6e, 0x24, 0x7e, 0x8a, 0x2d, 0x1a, 0xed, 0x00, 0x2a, 0x0c, 0xe8, 0x0e, 0xbf, 0x66,
|
||||||
0xd8, 0xf8, 0xf4, 0x1d, 0x62, 0xe4, 0x2e, 0x3f, 0xe4, 0xc0, 0x86, 0xbe, 0x37, 0xd3, 0x7b, 0xea,
|
0xff, 0xb3, 0x96, 0x3b, 0xff, 0x47, 0xc5, 0xc6, 0xa7, 0xef, 0x10, 0x23, 0x77, 0xf9, 0x21, 0x07,
|
||||||
0x6b, 0x2b, 0xb6, 0x26, 0xe7, 0xa6, 0xa5, 0xaf, 0xbd, 0xe4, 0xac, 0xa4, 0x73, 0xd1, 0x47, 0x50,
|
0xd6, 0xf5, 0xbd, 0x99, 0xde, 0x53, 0xdf, 0x5c, 0x51, 0x9a, 0x9c, 0x9b, 0x03, 0x7d, 0xed, 0x25,
|
||||||
0x9b, 0xcc, 0xdb, 0x80, 0x02, 0x7d, 0xed, 0xf0, 0xad, 0xd7, 0x37, 0x0b, 0x9c, 0x9f, 0x82, 0x0e,
|
0x67, 0x25, 0x9d, 0x8b, 0x3e, 0x86, 0xfa, 0x64, 0xde, 0x06, 0x14, 0xe8, 0xeb, 0x87, 0x6f, 0xbe,
|
||||||
0xa1, 0x92, 0x92, 0x03, 0xb5, 0x0d, 0xb5, 0xc3, 0xdd, 0xdc, 0x74, 0xb5, 0x5b, 0x7a, 0x14, 0x67,
|
0xba, 0x59, 0xe0, 0xfc, 0x14, 0x74, 0x08, 0xd5, 0x94, 0x29, 0xa8, 0x32, 0xd4, 0x0f, 0x77, 0x72,
|
||||||
0x76, 0xe8, 0x43, 0x58, 0x93, 0xfb, 0xa8, 0x4f, 0x47, 0xed, 0xf0, 0xed, 0x6b, 0x42, 0x97, 0x5e,
|
0xd3, 0x55, 0xb5, 0xf4, 0x28, 0xce, 0xec, 0xd0, 0x47, 0x50, 0x91, 0x75, 0xd4, 0xa7, 0xa3, 0x7e,
|
||||||
0x92, 0xc0, 0xf5, 0x3c, 0x09, 0x8c, 0x53, 0x12, 0x7a, 0x23, 0xc6, 0x85, 0xb5, 0xa1, 0x81, 0x71,
|
0xf8, 0xf6, 0x35, 0xa1, 0x4b, 0x2f, 0x49, 0xe0, 0x7a, 0x9e, 0x04, 0xc6, 0x29, 0x09, 0xbd, 0x11,
|
||||||
0x4a, 0xc2, 0x17, 0x8c, 0x0b, 0xe4, 0x02, 0xf8, 0x44, 0xd0, 0xf3, 0x28, 0x66, 0x54, 0x9e, 0xa0,
|
0xe3, 0xc2, 0x5a, 0xd7, 0xc0, 0x38, 0x25, 0xe1, 0x73, 0xc6, 0x05, 0x72, 0x01, 0x7c, 0x22, 0xe8,
|
||||||
0x85, 0x56, 0xb2, 0x7a, 0x81, 0x6c, 0x82, 0x5e, 0x25, 0xe7, 0x01, 0x3d, 0x01, 0x8b, 0xc4, 0xfe,
|
0x79, 0x14, 0x33, 0x2a, 0x4f, 0xd0, 0x42, 0x2b, 0x59, 0xbd, 0x40, 0x36, 0x41, 0xaf, 0x92, 0xf3,
|
||||||
0x05, 0xbb, 0xa4, 0xde, 0x98, 0x9c, 0x87, 0x54, 0x8c, 0x58, 0xf8, 0x2a, 0xb9, 0xd5, 0xab, 0x6a,
|
0x80, 0x1e, 0x83, 0x45, 0x62, 0xff, 0x82, 0x5d, 0x52, 0x6f, 0x4c, 0xce, 0x43, 0x2a, 0x46, 0x2c,
|
||||||
0x47, 0x76, 0x93, 0xf1, 0x5e, 0x36, 0xac, 0x2e, 0x77, 0xf4, 0x0c, 0xb6, 0x48, 0x30, 0x66, 0xa1,
|
0x7c, 0x99, 0xdc, 0xea, 0x35, 0x55, 0x91, 0x9d, 0x64, 0xbc, 0x97, 0x0d, 0xab, 0xcb, 0x1d, 0x3d,
|
||||||
0xc7, 0xa9, 0x10, 0x2c, 0x3c, 0xe7, 0x16, 0xa8, 0xfa, 0x34, 0x57, 0x44, 0xd3, 0x96, 0x86, 0x83,
|
0x85, 0x4d, 0x12, 0x8c, 0x59, 0xe8, 0x71, 0x2a, 0x04, 0x0b, 0xcf, 0xb9, 0x05, 0x2a, 0x3f, 0xad,
|
||||||
0xc4, 0x0e, 0xd7, 0x49, 0x5e, 0x44, 0xff, 0x07, 0x75, 0x16, 0x8a, 0x38, 0xf2, 0xc6, 0x94, 0x73,
|
0x15, 0xd1, 0xb4, 0xa5, 0xe1, 0x20, 0xb1, 0xc3, 0x0d, 0x92, 0x17, 0xd1, 0xff, 0x41, 0x83, 0x85,
|
||||||
0x79, 0x05, 0xd6, 0xd4, 0xf1, 0xdc, 0x54, 0xca, 0x9e, 0xd6, 0x49, 0xa3, 0x68, 0x9a, 0x37, 0xda,
|
0x22, 0x8e, 0xbc, 0x31, 0xe5, 0x5c, 0x5e, 0x81, 0x75, 0x75, 0x3c, 0x37, 0x94, 0xb2, 0xa7, 0x75,
|
||||||
0xd4, 0x46, 0x4a, 0x99, 0x1a, 0x35, 0xa1, 0x4a, 0x43, 0x3f, 0x9e, 0x4d, 0x04, 0x0d, 0xac, 0xba,
|
0xd2, 0x28, 0x9a, 0xe6, 0x8d, 0x36, 0xb4, 0x91, 0x52, 0xa6, 0x46, 0x2d, 0xa8, 0xd1, 0xd0, 0x8f,
|
||||||
0x3c, 0x34, 0x8a, 0xc4, 0xcc, 0x95, 0xb2, 0xd1, 0x09, 0x72, 0xce, 0xad, 0x2d, 0x55, 0x55, 0xf5,
|
0x67, 0x13, 0x41, 0x03, 0xab, 0x21, 0x0f, 0x8d, 0x22, 0x31, 0x73, 0xa5, 0x6c, 0x74, 0x82, 0x9c,
|
||||||
0x8d, 0x08, 0xec, 0xe8, 0x63, 0x9c, 0x87, 0xca, 0xb6, 0xaa, 0xec, 0x37, 0xaf, 0xa9, 0xec, 0x42,
|
0x73, 0x6b, 0x53, 0x65, 0x55, 0x7d, 0x23, 0x02, 0xdb, 0xfa, 0x18, 0xe7, 0xa1, 0xb2, 0xa5, 0x32,
|
||||||
0x73, 0x48, 0xea, 0xdb, 0x10, 0x0b, 0x6a, 0xf4, 0x43, 0xb8, 0x33, 0xa7, 0x8e, 0x6a, 0x94, 0x7b,
|
0xfb, 0x9d, 0x6b, 0x32, 0xbb, 0xd0, 0x1c, 0x92, 0xfc, 0x36, 0xc5, 0x82, 0x1a, 0xfd, 0x18, 0x6e,
|
||||||
0xe3, 0x84, 0x46, 0x58, 0x0d, 0xb5, 0x54, 0xf3, 0x3a, 0xba, 0x81, 0xf7, 0xfc, 0x82, 0x9e, 0x67,
|
0xcf, 0xa9, 0xa3, 0x1a, 0xe5, 0xde, 0x38, 0xa1, 0x11, 0x56, 0x53, 0x2d, 0xd5, 0xba, 0x8e, 0x6e,
|
||||||
0x2c, 0xe6, 0x1d, 0xb8, 0x45, 0x7c, 0xa1, 0xb6, 0x50, 0xe3, 0xde, 0x53, 0x5c, 0xcd, 0xda, 0x51,
|
0xe0, 0x5d, 0xbf, 0xa0, 0xe7, 0x19, 0x8b, 0x79, 0x07, 0x6e, 0x12, 0x5f, 0xa8, 0x12, 0x6a, 0xdc,
|
||||||
0xfb, 0x87, 0xf4, 0x58, 0x72, 0x40, 0x3a, 0x72, 0x64, 0xff, 0x04, 0x36, 0xf3, 0x07, 0x26, 0xdf,
|
0x7b, 0x8a, 0xab, 0x59, 0xdb, 0xaa, 0x7e, 0x48, 0x8f, 0x25, 0x07, 0xa4, 0x23, 0x47, 0xf6, 0x4e,
|
||||||
0x5f, 0xab, 0xba, 0xbf, 0x3e, 0xce, 0xf7, 0xd7, 0x02, 0x4d, 0x5c, 0x60, 0x9a, 0xb9, 0xd6, 0xbb,
|
0x60, 0x23, 0x7f, 0x60, 0xf2, 0xfd, 0xb5, 0xa6, 0xfb, 0xeb, 0xa3, 0x7c, 0x7f, 0x2d, 0xd0, 0xc4,
|
||||||
0xff, 0x29, 0xc0, 0x1c, 0xcc, 0x2b, 0x9c, 0x7e, 0xbd, 0xe8, 0x74, 0x6f, 0x85, 0x53, 0x39, 0x3f,
|
0x05, 0xa6, 0x99, 0x6b, 0xbd, 0x7b, 0x9f, 0x01, 0xcc, 0xc1, 0xbc, 0xc2, 0xe9, 0xb7, 0x8a, 0x4e,
|
||||||
0xef, 0xf2, 0x73, 0xd8, 0x5e, 0x80, 0xef, 0x0a, 0xbf, 0xef, 0x16, 0xfd, 0xde, 0x5d, 0xe5, 0x57,
|
0x77, 0x57, 0x38, 0x95, 0xf3, 0xf3, 0x2e, 0xbf, 0x80, 0xad, 0x05, 0xf8, 0xae, 0xf0, 0xfb, 0x6e,
|
||||||
0x3b, 0x99, 0xe5, 0x7d, 0x9f, 0xc3, 0xed, 0x95, 0x1b, 0xb8, 0x62, 0x85, 0x27, 0xc5, 0x15, 0xec,
|
0xd1, 0xef, 0x9d, 0x55, 0x7e, 0xb5, 0x93, 0x59, 0xde, 0xf7, 0x39, 0xdc, 0x5a, 0x59, 0xc0, 0x15,
|
||||||
0xeb, 0x2f, 0x8a, 0xfc, 0x95, 0xf4, 0xe3, 0x1c, 0x01, 0x2d, 0x1c, 0x05, 0x74, 0x04, 0x0f, 0x26,
|
0x2b, 0x3c, 0x2e, 0xae, 0x60, 0x5f, 0x7f, 0x51, 0xe4, 0xaf, 0xa4, 0x9f, 0xe6, 0x08, 0x68, 0xe1,
|
||||||
0x2c, 0x4c, 0x41, 0xed, 0x91, 0xd1, 0x28, 0xdb, 0x43, 0x1a, 0x92, 0xd3, 0x11, 0x0d, 0x12, 0x52,
|
0x28, 0xa0, 0x23, 0xb8, 0x3f, 0x61, 0x61, 0x0a, 0x6a, 0x8f, 0x8c, 0x46, 0x59, 0x0d, 0x69, 0x48,
|
||||||
0x74, 0x77, 0xc2, 0xc2, 0x04, 0xe6, 0xed, 0xd1, 0x28, 0xdb, 0x3c, 0x65, 0x62, 0xff, 0xb5, 0x04,
|
0x4e, 0x47, 0x34, 0x48, 0x48, 0xd1, 0x9d, 0x09, 0x0b, 0x13, 0x98, 0xb7, 0x47, 0xa3, 0xac, 0x78,
|
||||||
0xf5, 0x42, 0x05, 0xd1, 0x07, 0xf3, 0xfe, 0xa9, 0xe9, 0xc6, 0xff, 0x5f, 0x51, 0xeb, 0x37, 0x6b,
|
0xca, 0xc4, 0xfe, 0x5b, 0x09, 0x1a, 0x85, 0x0c, 0xa2, 0x0f, 0xe7, 0xfd, 0x53, 0xd3, 0x8d, 0xff,
|
||||||
0x9c, 0xa5, 0x2f, 0xd7, 0x38, 0xcd, 0x37, 0x6c, 0x9c, 0x0f, 0xa0, 0x96, 0xb4, 0x26, 0xf5, 0xc0,
|
0xbf, 0x22, 0xd7, 0xaf, 0xd7, 0x38, 0x4b, 0x5f, 0xaf, 0x71, 0x9a, 0xaf, 0xd9, 0x38, 0xef, 0x43,
|
||||||
0xd2, 0x6c, 0x24, 0xed, 0x56, 0xf2, 0x7d, 0xb5, 0x0f, 0x95, 0x49, 0xc4, 0x99, 0x22, 0xd1, 0xb2,
|
0x3d, 0x69, 0x4d, 0xea, 0x81, 0xa5, 0xd9, 0x48, 0xda, 0xad, 0xe4, 0xfb, 0x6a, 0x0f, 0xaa, 0x93,
|
||||||
0x1b, 0xaf, 0xe1, 0x4c, 0xfe, 0x2f, 0x61, 0xda, 0x0e, 0x60, 0x67, 0x09, 0x44, 0x8b, 0x81, 0x1a,
|
0x88, 0x33, 0x45, 0xa2, 0x65, 0x37, 0xae, 0xe0, 0x4c, 0xfe, 0x2f, 0x61, 0xda, 0x0e, 0x60, 0x7b,
|
||||||
0x4b, 0x81, 0xa6, 0x84, 0xaa, 0x54, 0x24, 0xd9, 0x59, 0xf0, 0x66, 0x31, 0x78, 0xfb, 0xd7, 0x06,
|
0x09, 0x44, 0x8b, 0x81, 0x1a, 0x4b, 0x81, 0xa6, 0x84, 0xaa, 0x54, 0x24, 0xd9, 0x59, 0xf0, 0x66,
|
||||||
0x6c, 0x2f, 0xbc, 0xbf, 0x24, 0xfd, 0x4d, 0x48, 0x63, 0xb2, 0x40, 0x2a, 0xa2, 0x7b, 0x50, 0xe5,
|
0x31, 0x78, 0xfb, 0xb7, 0x06, 0x6c, 0x2d, 0xbc, 0xbf, 0x24, 0xfd, 0x4d, 0x48, 0x63, 0xb2, 0x40,
|
||||||
0xec, 0x3c, 0x24, 0x62, 0x1a, 0xd3, 0xe4, 0x99, 0x39, 0x57, 0x48, 0x82, 0xe6, 0x5f, 0x10, 0xa6,
|
0x2a, 0xa2, 0xbb, 0x50, 0xe3, 0xec, 0x3c, 0x24, 0x62, 0x1a, 0xd3, 0xe4, 0x99, 0x39, 0x57, 0x48,
|
||||||
0x09, 0x9a, 0xa9, 0x09, 0x9a, 0x52, 0x48, 0x62, 0xf1, 0x08, 0x1a, 0x8c, 0xb7, 0x59, 0x1c, 0xc4,
|
0x82, 0xe6, 0x5f, 0x10, 0xa6, 0x09, 0x9a, 0xa9, 0x09, 0x9a, 0x52, 0x48, 0x62, 0xf1, 0x10, 0x9a,
|
||||||
0xd1, 0x24, 0x21, 0x59, 0xaa, 0xce, 0x15, 0xbc, 0xa4, 0xb7, 0xff, 0x61, 0xe4, 0x70, 0x8b, 0xe9,
|
0x8c, 0xb7, 0x59, 0x1c, 0xc4, 0xd1, 0x24, 0x21, 0x59, 0x2a, 0xcf, 0x55, 0xbc, 0xa4, 0xb7, 0xff,
|
||||||
0x4f, 0xa6, 0x94, 0x8b, 0x61, 0xf4, 0x49, 0xc4, 0xae, 0xba, 0xb5, 0x13, 0x2e, 0x9f, 0xcb, 0x5c,
|
0x61, 0xe4, 0x70, 0x8b, 0xe9, 0xcf, 0xa6, 0x94, 0x8b, 0x61, 0xf4, 0x69, 0xc4, 0xae, 0xba, 0xb5,
|
||||||
0x72, 0x79, 0x57, 0x26, 0x7f, 0xe5, 0xe3, 0x77, 0xf1, 0x55, 0x5d, 0x5e, 0x7e, 0x55, 0x3f, 0x84,
|
0x13, 0x2e, 0x9f, 0xdb, 0xb9, 0xe4, 0xf2, 0xae, 0xdc, 0xfc, 0x95, 0x8f, 0xdf, 0xc5, 0x57, 0x75,
|
||||||
0xcd, 0x80, 0xf1, 0xc9, 0x88, 0xcc, 0xb4, 0xeb, 0xb5, 0xe4, 0xf9, 0xa4, 0x75, 0xca, 0xfd, 0xf7,
|
0x79, 0xf9, 0x55, 0xfd, 0x00, 0x36, 0x02, 0xc6, 0x27, 0x23, 0x32, 0xd3, 0xae, 0x2b, 0xc9, 0xf3,
|
||||||
0x56, 0xbd, 0x70, 0xd7, 0xaf, 0x79, 0xe1, 0x2e, 0xbf, 0x6e, 0xed, 0xdf, 0x1a, 0x70, 0x2f, 0x4b,
|
0x49, 0xeb, 0x94, 0xfb, 0x1f, 0xac, 0x7a, 0xe1, 0xae, 0x5d, 0xf3, 0xc2, 0x5d, 0x7e, 0xdd, 0xda,
|
||||||
0xd9, 0x09, 0x98, 0x18, 0x5c, 0x90, 0x98, 0x06, 0x73, 0xce, 0xbd, 0x3a, 0xf1, 0xc5, 0x24, 0x4a,
|
0xbf, 0x37, 0xe0, 0x6e, 0xb6, 0x65, 0x27, 0x60, 0x62, 0x70, 0x41, 0x62, 0x1a, 0xcc, 0x39, 0xf7,
|
||||||
0xcb, 0x49, 0xac, 0x8c, 0xd0, 0xfc, 0xe2, 0x11, 0xfe, 0x3e, 0x1f, 0x61, 0x87, 0x84, 0x3e, 0x1d,
|
0xea, 0x8d, 0x2f, 0x6e, 0xa2, 0xb4, 0xbc, 0x89, 0x95, 0x11, 0x9a, 0x5f, 0x3d, 0xc2, 0x3f, 0xe6,
|
||||||
0xfd, 0x4f, 0x6f, 0x8d, 0xfd, 0x77, 0x03, 0xde, 0x5a, 0x8d, 0x22, 0x4c, 0xf9, 0x24, 0x0a, 0x39,
|
0x23, 0xec, 0x90, 0xd0, 0xa7, 0xa3, 0xff, 0xe9, 0xd2, 0xd8, 0x5f, 0x96, 0xe0, 0xcd, 0xd5, 0x28,
|
||||||
0xbd, 0x22, 0xe4, 0xef, 0x40, 0x35, 0x5b, 0xea, 0x35, 0x1d, 0x28, 0x77, 0x1f, 0xe3, 0xf9, 0x04,
|
0xc2, 0x94, 0x4f, 0xa2, 0x90, 0xd3, 0x2b, 0x42, 0xfe, 0x3e, 0xd4, 0xb2, 0xa5, 0x5e, 0xd1, 0x81,
|
||||||
0x79, 0xda, 0xe4, 0x6b, 0x4f, 0x51, 0x01, 0x53, 0x01, 0x3c, 0x93, 0xe5, 0x7a, 0xe7, 0x31, 0x09,
|
0x72, 0xf7, 0x31, 0x9e, 0x4f, 0x90, 0xa7, 0x4d, 0xbe, 0xf6, 0x14, 0x15, 0x30, 0x15, 0xc0, 0x33,
|
||||||
0x45, 0x92, 0x91, 0x16, 0x96, 0xd2, 0x5d, 0x5b, 0x4e, 0xf7, 0x3e, 0x80, 0x66, 0x49, 0xde, 0x34,
|
0x59, 0xae, 0x77, 0x1e, 0x93, 0x50, 0x24, 0x3b, 0xd2, 0xc2, 0xd2, 0x76, 0x2b, 0xcb, 0xdb, 0xbd,
|
||||||
0x66, 0xc9, 0x0b, 0xba, 0xaa, 0x35, 0x27, 0x31, 0xb3, 0x31, 0xec, 0x2d, 0x67, 0xfa, 0x82, 0x92,
|
0x07, 0xa0, 0x59, 0x92, 0x37, 0x8d, 0x59, 0xf2, 0x82, 0xae, 0x69, 0xcd, 0x49, 0xcc, 0xd0, 0x07,
|
||||||
0x4b, 0xfa, 0x6f, 0xe3, 0xc6, 0xfe, 0x3e, 0x3c, 0xcc, 0x75, 0x27, 0x7d, 0x01, 0x2c, 0x12, 0xb2,
|
0x70, 0x47, 0xc6, 0x47, 0x7d, 0x41, 0x03, 0x4f, 0x44, 0x13, 0xe6, 0xa7, 0x14, 0xde, 0x93, 0xad,
|
||||||
0x2b, 0xbc, 0x17, 0xa3, 0x2d, 0x2d, 0x46, 0xfb, 0x47, 0x03, 0x6a, 0x2f, 0xc9, 0xab, 0x69, 0xca,
|
0x68, 0x5d, 0x39, 0xb4, 0x32, 0x93, 0xa1, 0xb4, 0x48, 0x28, 0xfd, 0x33, 0x3a, 0x43, 0x6f, 0x41,
|
||||||
0x9e, 0x1a, 0x60, 0x72, 0x76, 0x9e, 0xfc, 0xad, 0x25, 0x3f, 0x65, 0x9f, 0x11, 0x6c, 0x4c, 0xb9,
|
0x45, 0xfd, 0xf1, 0xa4, 0x1e, 0x46, 0xf5, 0xc3, 0xad, 0xf9, 0x66, 0x25, 0x0a, 0x03, 0xac, 0x47,
|
||||||
0x20, 0xe3, 0x89, 0x9a, 0x5f, 0xc6, 0x73, 0x85, 0x5c, 0x54, 0x44, 0x13, 0xe6, 0xab, 0xf2, 0x6e,
|
0x6d, 0x0c, 0xbb, 0xcb, 0xf9, 0x7c, 0x4e, 0xc9, 0x25, 0xfd, 0xb7, 0xd1, 0x69, 0xff, 0x10, 0x1e,
|
||||||
0x62, 0x2d, 0xa8, 0x47, 0x3b, 0x99, 0x8d, 0x22, 0x92, 0xe2, 0x25, 0x15, 0xf5, 0x48, 0x10, 0xb0,
|
0xe4, 0x7a, 0xa0, 0xbe, 0x66, 0x16, 0x69, 0xdf, 0x15, 0xde, 0x8b, 0x39, 0x29, 0x2d, 0xe4, 0xc4,
|
||||||
0xf0, 0x3c, 0x29, 0x6d, 0x2a, 0xca, 0x6e, 0x79, 0x41, 0xf8, 0x85, 0x2a, 0xe8, 0x26, 0x56, 0xdf,
|
0xfe, 0xb3, 0x01, 0xf5, 0x17, 0xe4, 0xe5, 0x34, 0xe5, 0x68, 0x4d, 0x30, 0x39, 0x3b, 0x4f, 0xfe,
|
||||||
0xc8, 0x86, 0x4d, 0x71, 0xc1, 0xe2, 0xe0, 0x98, 0xc4, 0xb2, 0x0e, 0xc9, 0x53, 0xb2, 0xa0, 0xb3,
|
0x3c, 0x93, 0x9f, 0xb2, 0x9b, 0x09, 0x36, 0xa6, 0x5c, 0x90, 0xf1, 0x44, 0xcd, 0x2f, 0xe3, 0xb9,
|
||||||
0x7f, 0x0e, 0xfb, 0xb9, 0x04, 0xd2, 0xb2, 0xa4, 0xb4, 0xc8, 0x82, 0x8d, 0x4b, 0x1a, 0xcb, 0xdb,
|
0x42, 0x2e, 0xaa, 0x32, 0xa9, 0x8a, 0xb8, 0x81, 0xb5, 0xa0, 0xfe, 0x1a, 0x20, 0xb3, 0x51, 0x44,
|
||||||
0x48, 0xe5, 0x54, 0xc7, 0xa9, 0x28, 0xd7, 0x3b, 0x8b, 0xa3, 0x71, 0x92, 0x92, 0xfa, 0x96, 0x2f,
|
0x52, 0x54, 0xa6, 0xa2, 0x1e, 0x09, 0x02, 0x16, 0x9e, 0x27, 0x05, 0x4c, 0x45, 0xd9, 0x93, 0x2f,
|
||||||
0x43, 0x11, 0x25, 0x7f, 0x64, 0x95, 0x44, 0x24, 0xd7, 0x97, 0x2f, 0x6e, 0x1a, 0x8a, 0xa1, 0x4a,
|
0x08, 0xbf, 0x50, 0x65, 0xdb, 0xc0, 0xea, 0x1b, 0xd9, 0xb0, 0x21, 0x2e, 0x58, 0x1c, 0x1c, 0x93,
|
||||||
0x52, 0x3e, 0xd0, 0x36, 0x71, 0x41, 0x67, 0xff, 0xce, 0x00, 0xb4, 0x1c, 0xc0, 0x6b, 0x16, 0xfe,
|
0x58, 0xe6, 0x21, 0x79, 0xb0, 0x16, 0x74, 0xf6, 0x2f, 0x61, 0x2f, 0xb7, 0x81, 0x34, 0x2d, 0x29,
|
||||||
0x08, 0x2a, 0x19, 0xed, 0xd3, 0x88, 0xce, 0xdd, 0xcb, 0x57, 0xa7, 0x82, 0xb3, 0x59, 0xe8, 0x5d,
|
0xf9, 0xb2, 0x60, 0xfd, 0x92, 0xc6, 0xf2, 0xce, 0x53, 0x7b, 0x6a, 0xe0, 0x54, 0x94, 0xeb, 0x9d,
|
||||||
0xe9, 0x41, 0xd9, 0xa4, 0xdd, 0xe3, 0xf6, 0x4a, 0x0f, 0x38, 0x33, 0xb3, 0xff, 0x64, 0xc0, 0x83,
|
0xc5, 0xd1, 0x38, 0xd9, 0x92, 0xfa, 0x96, 0xef, 0x4f, 0x11, 0x25, 0x7f, 0x97, 0x95, 0x44, 0x24,
|
||||||
0x65, 0xdf, 0xdd, 0x30, 0xa0, 0x3f, 0x7d, 0x83, 0x5a, 0x7d, 0xf9, 0x90, 0x77, 0x61, 0x3d, 0x3a,
|
0xd7, 0x97, 0xef, 0x7a, 0x1a, 0x0a, 0x05, 0x06, 0xf5, 0x0c, 0xdc, 0xc0, 0x05, 0x9d, 0xfd, 0x07,
|
||||||
0x3b, 0xe3, 0x54, 0x24, 0xd5, 0x4d, 0x24, 0xb9, 0x0b, 0x9c, 0xfd, 0x8c, 0x26, 0xff, 0x7a, 0xaa,
|
0x03, 0xd0, 0x72, 0x00, 0xaf, 0x58, 0xf8, 0x63, 0xa8, 0x66, 0xe4, 0x52, 0x9f, 0x9b, 0xdc, 0xed,
|
||||||
0xef, 0x45, 0x8c, 0x94, 0x33, 0x8c, 0xd8, 0x7f, 0x31, 0x60, 0xef, 0x8a, 0x2c, 0xd0, 0x73, 0xa8,
|
0x7f, 0xf5, 0x56, 0x70, 0x36, 0x0b, 0xbd, 0x2b, 0x3d, 0x28, 0x9b, 0xb4, 0x47, 0xdd, 0x5a, 0xe9,
|
||||||
0x24, 0x8f, 0x94, 0x94, 0xee, 0x3c, 0x7e, 0x5d, 0x8c, 0x6a, 0x52, 0x2b, 0x11, 0x12, 0xe6, 0x93,
|
0x01, 0x67, 0x66, 0xf6, 0x5f, 0x0c, 0xb8, 0xbf, 0xec, 0xbb, 0x1b, 0x06, 0xf4, 0xe7, 0xaf, 0x91,
|
||||||
0x39, 0xd8, 0x3f, 0x83, 0x7a, 0x61, 0x68, 0x05, 0x91, 0xf8, 0xb0, 0x48, 0x24, 0xde, 0xbe, 0x76,
|
0xab, 0xaf, 0x1f, 0xf2, 0x0e, 0xac, 0x45, 0x67, 0x67, 0x9c, 0x8a, 0x24, 0xbb, 0x89, 0x24, 0xab,
|
||||||
0xb1, 0xac, 0x2a, 0x73, 0x62, 0xf1, 0xb4, 0xfe, 0x79, 0xad, 0xf5, 0xf8, 0xfd, 0x74, 0xe6, 0xe9,
|
0xc0, 0xd9, 0x2f, 0x68, 0xf2, 0xdf, 0xaa, 0xfa, 0x5e, 0xc4, 0x48, 0x39, 0xc3, 0x88, 0xfd, 0xa5,
|
||||||
0xba, 0xfa, 0xfa, 0xc6, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xba, 0xde, 0x8a, 0xe5, 0xae, 0x16,
|
0x01, 0xbb, 0x57, 0xec, 0x02, 0x3d, 0x83, 0x6a, 0xf2, 0x14, 0x4a, 0x49, 0xd5, 0xa3, 0x57, 0xc5,
|
||||||
0x00, 0x00,
|
0xa8, 0x26, 0x1d, 0x24, 0x42, 0xc2, 0xaf, 0x32, 0x07, 0x7b, 0x67, 0xd0, 0x28, 0x0c, 0xad, 0xa0,
|
||||||
|
0x2b, 0x1f, 0x15, 0xe9, 0xca, 0xdb, 0xd7, 0x2e, 0x96, 0x65, 0x65, 0x4e, 0x5f, 0x9e, 0x34, 0xbe,
|
||||||
|
0xa8, 0x1f, 0x3c, 0x7a, 0x3f, 0x9d, 0x79, 0xba, 0xa6, 0xbe, 0xbe, 0xfd, 0xaf, 0x00, 0x00, 0x00,
|
||||||
|
0xff, 0xff, 0xa6, 0x25, 0xae, 0xc0, 0x21, 0x17, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ syntax = "proto3";
|
||||||
option go_package = "./;protobuf";
|
option go_package = "./;protobuf";
|
||||||
import "chat_identity.proto";
|
import "chat_identity.proto";
|
||||||
import "enums.proto";
|
import "enums.proto";
|
||||||
|
import "shard.proto";
|
||||||
|
|
||||||
package protobuf;
|
package protobuf;
|
||||||
|
|
||||||
|
@ -155,6 +156,8 @@ message CommunityRequestToJoinResponse {
|
||||||
bytes grant = 4;
|
bytes grant = 4;
|
||||||
bytes community_id = 5;
|
bytes community_id = 5;
|
||||||
string magnet_uri = 6;
|
string magnet_uri = 6;
|
||||||
|
bytes protected_topic_private_key = 7;
|
||||||
|
Shard shard = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
message CommunityRequestToLeave {
|
message CommunityRequestToLeave {
|
||||||
|
|
|
@ -0,0 +1,107 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// source: community_shard_key.proto
|
||||||
|
|
||||||
|
package protobuf
|
||||||
|
|
||||||
|
import (
|
||||||
|
fmt "fmt"
|
||||||
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
math "math"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the proto package it is being compiled against.
|
||||||
|
// A compilation error at this line likely means your copy of the
|
||||||
|
// proto package needs to be updated.
|
||||||
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
|
type CommunityShardKey struct {
|
||||||
|
CommunityId []byte `protobuf:"bytes,1,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
|
||||||
|
PrivateKey []byte `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
|
||||||
|
Clock uint64 `protobuf:"varint,3,opt,name=clock,proto3" json:"clock,omitempty"`
|
||||||
|
Shard *Shard `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *CommunityShardKey) Reset() { *m = CommunityShardKey{} }
|
||||||
|
func (m *CommunityShardKey) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*CommunityShardKey) ProtoMessage() {}
|
||||||
|
func (*CommunityShardKey) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_03da8310cde9b7b2, []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *CommunityShardKey) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_CommunityShardKey.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *CommunityShardKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_CommunityShardKey.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *CommunityShardKey) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_CommunityShardKey.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *CommunityShardKey) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_CommunityShardKey.Size(m)
|
||||||
|
}
|
||||||
|
func (m *CommunityShardKey) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_CommunityShardKey.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_CommunityShardKey proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *CommunityShardKey) GetCommunityId() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.CommunityId
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *CommunityShardKey) GetPrivateKey() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.PrivateKey
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *CommunityShardKey) GetClock() uint64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Clock
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *CommunityShardKey) GetShard() *Shard {
|
||||||
|
if m != nil {
|
||||||
|
return m.Shard
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*CommunityShardKey)(nil), "protobuf.CommunityShardKey")
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterFile("community_shard_key.proto", fileDescriptor_03da8310cde9b7b2)
|
||||||
|
}
|
||||||
|
|
||||||
|
var fileDescriptor_03da8310cde9b7b2 = []byte{
|
||||||
|
// 173 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xce, 0xcf, 0xcd,
|
||||||
|
0x2d, 0xcd, 0xcb, 0x2c, 0xa9, 0x8c, 0x2f, 0xce, 0x48, 0x2c, 0x4a, 0x89, 0xcf, 0x4e, 0xad, 0xd4,
|
||||||
|
0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x52, 0xdc, 0x60, 0x29,
|
||||||
|
0x88, 0xb0, 0xd2, 0x14, 0x46, 0x2e, 0x41, 0x67, 0x98, 0xa6, 0x60, 0x90, 0x84, 0x77, 0x6a, 0xa5,
|
||||||
|
0x90, 0x22, 0x17, 0x0f, 0xc2, 0xa4, 0xcc, 0x14, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x9e, 0x20, 0x6e,
|
||||||
|
0xb8, 0x98, 0x67, 0x8a, 0x90, 0x3c, 0x17, 0x77, 0x41, 0x51, 0x66, 0x59, 0x62, 0x49, 0x2a, 0xc8,
|
||||||
|
0x12, 0x09, 0x26, 0xb0, 0x0a, 0x2e, 0xa8, 0x10, 0xc8, 0x0c, 0x11, 0x2e, 0xd6, 0xe4, 0x9c, 0xfc,
|
||||||
|
0xe4, 0x6c, 0x09, 0x66, 0x05, 0x46, 0x0d, 0x96, 0x20, 0x08, 0x47, 0x48, 0x95, 0x8b, 0x15, 0x6c,
|
||||||
|
0xbd, 0x04, 0x8b, 0x02, 0xa3, 0x06, 0xb7, 0x11, 0xbf, 0x1e, 0xcc, 0x59, 0x7a, 0x60, 0xcb, 0x83,
|
||||||
|
0x20, 0xb2, 0x4e, 0xbc, 0x51, 0xdc, 0x7a, 0xfa, 0xd6, 0x30, 0xb9, 0x24, 0x36, 0x30, 0xcb, 0x18,
|
||||||
|
0x10, 0x00, 0x00, 0xff, 0xff, 0x7e, 0xda, 0x17, 0x6d, 0xe0, 0x00, 0x00, 0x00,
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option go_package = "./;protobuf";
|
||||||
|
|
||||||
|
package protobuf;
|
||||||
|
|
||||||
|
import "shard.proto";
|
||||||
|
|
||||||
|
message CommunityShardKey {
|
||||||
|
bytes community_id = 1;
|
||||||
|
bytes private_key = 2;
|
||||||
|
uint64 clock = 3;
|
||||||
|
Shard shard = 4;
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate protoc --go_out=. ./chat_message.proto ./application_metadata_message.proto ./membership_update_message.proto ./command.proto ./contact.proto ./pairing.proto ./push_notifications.proto ./emoji_reaction.proto ./enums.proto ./group_chat_invitation.proto ./chat_identity.proto ./communities.proto ./pin_message.proto ./anon_metrics.proto ./status_update.proto ./sync_settings.proto ./contact_verification.proto ./community_update.proto ./url_data.proto ./community_privileged_user_sync_message.proto
|
//go:generate protoc --go_out=. ./chat_message.proto ./application_metadata_message.proto ./membership_update_message.proto ./command.proto ./contact.proto ./pairing.proto ./push_notifications.proto ./emoji_reaction.proto ./enums.proto ./shard.proto ./group_chat_invitation.proto ./chat_identity.proto ./communities.proto ./pin_message.proto ./anon_metrics.proto ./status_update.proto ./sync_settings.proto ./contact_verification.proto ./community_update.proto ./community_shard_key.proto ./url_data.proto ./community_privileged_user_sync_message.proto
|
||||||
|
|
||||||
func Unmarshal(payload []byte) (*ApplicationMetadataMessage, error) {
|
func Unmarshal(payload []byte) (*ApplicationMetadataMessage, error) {
|
||||||
var message ApplicationMetadataMessage
|
var message ApplicationMetadataMessage
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// source: shard.proto
|
||||||
|
|
||||||
|
package protobuf
|
||||||
|
|
||||||
|
import (
|
||||||
|
fmt "fmt"
|
||||||
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
math "math"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the proto package it is being compiled against.
|
||||||
|
// A compilation error at this line likely means your copy of the
|
||||||
|
// proto package needs to be updated.
|
||||||
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
|
type Shard struct {
|
||||||
|
Cluster int32 `protobuf:"varint,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
|
||||||
|
Index int32 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Shard) Reset() { *m = Shard{} }
|
||||||
|
func (m *Shard) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*Shard) ProtoMessage() {}
|
||||||
|
func (*Shard) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_319ea41e44cdc364, []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Shard) XXX_Unmarshal(b []byte) error {
|
||||||
|
return xxx_messageInfo_Shard.Unmarshal(m, b)
|
||||||
|
}
|
||||||
|
func (m *Shard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
return xxx_messageInfo_Shard.Marshal(b, m, deterministic)
|
||||||
|
}
|
||||||
|
func (m *Shard) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_Shard.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *Shard) XXX_Size() int {
|
||||||
|
return xxx_messageInfo_Shard.Size(m)
|
||||||
|
}
|
||||||
|
func (m *Shard) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_Shard.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_Shard proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *Shard) GetCluster() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Cluster
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Shard) GetIndex() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Index
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*Shard)(nil), "protobuf.Shard")
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterFile("shard.proto", fileDescriptor_319ea41e44cdc364)
|
||||||
|
}
|
||||||
|
|
||||||
|
var fileDescriptor_319ea41e44cdc364 = []byte{
|
||||||
|
// 99 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2e, 0xce, 0x48, 0x2c,
|
||||||
|
0x4a, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53, 0x49, 0xa5, 0x69, 0x4a, 0xe6,
|
||||||
|
0x5c, 0xac, 0xc1, 0x20, 0x09, 0x21, 0x09, 0x2e, 0xf6, 0xe4, 0x9c, 0xd2, 0xe2, 0x92, 0xd4, 0x22,
|
||||||
|
0x09, 0x46, 0x05, 0x46, 0x0d, 0xd6, 0x20, 0x18, 0x57, 0x48, 0x84, 0x8b, 0x35, 0x33, 0x2f, 0x25,
|
||||||
|
0xb5, 0x42, 0x82, 0x09, 0x2c, 0x0e, 0xe1, 0x38, 0xf1, 0x46, 0x71, 0xeb, 0xe9, 0x5b, 0xc3, 0xcc,
|
||||||
|
0x49, 0x62, 0x03, 0xb3, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xef, 0xcf, 0x9d, 0x21, 0x67,
|
||||||
|
0x00, 0x00, 0x00,
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option go_package = "./;protobuf";
|
||||||
|
package protobuf;
|
||||||
|
|
||||||
|
message Shard {
|
||||||
|
int32 cluster = 1;
|
||||||
|
int32 index = 2;
|
||||||
|
}
|
||||||
|
|
|
@ -228,6 +228,7 @@ func (m *User) GetColor() string {
|
||||||
type URLData struct {
|
type URLData struct {
|
||||||
// Community, Channel, or User
|
// Community, Channel, or User
|
||||||
Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
|
Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
|
||||||
|
Shard *Shard `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
@ -265,6 +266,13 @@ func (m *URLData) GetContent() []byte {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *URLData) GetShard() *Shard {
|
||||||
|
if m != nil {
|
||||||
|
return m.Shard
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Community)(nil), "protobuf.Community")
|
proto.RegisterType((*Community)(nil), "protobuf.Community")
|
||||||
proto.RegisterType((*Channel)(nil), "protobuf.Channel")
|
proto.RegisterType((*Channel)(nil), "protobuf.Channel")
|
||||||
|
@ -277,24 +285,26 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_5f1e15b5f0115710 = []byte{
|
var fileDescriptor_5f1e15b5f0115710 = []byte{
|
||||||
// 295 bytes of a gzipped FileDescriptorProto
|
// 321 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x90, 0xb1, 0x4e, 0xeb, 0x30,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0xb1, 0x4e, 0xc3, 0x30,
|
||||||
0x14, 0x86, 0xe5, 0xdb, 0xa6, 0xbd, 0x39, 0x69, 0x18, 0x4c, 0x07, 0x6f, 0x84, 0x74, 0xc9, 0x14,
|
0x10, 0x40, 0x15, 0xda, 0xb4, 0xe4, 0xdc, 0x80, 0x64, 0x3a, 0x58, 0x2c, 0x84, 0x20, 0xa4, 0x4c,
|
||||||
0x04, 0x8c, 0x6c, 0x94, 0x05, 0x09, 0x31, 0x58, 0xea, 0xc2, 0x12, 0x39, 0x8e, 0x29, 0x46, 0xb1,
|
0x41, 0x94, 0x91, 0x8d, 0xb2, 0x80, 0x10, 0x83, 0x51, 0x17, 0x96, 0xc8, 0x4d, 0x4c, 0x6b, 0x14,
|
||||||
0x1d, 0x39, 0xf6, 0xd0, 0x77, 0xe2, 0x25, 0x78, 0x33, 0x84, 0x93, 0x50, 0x16, 0xb6, 0x4e, 0x3e,
|
0xdb, 0x95, 0xe3, 0x0c, 0xfd, 0x27, 0x7e, 0x82, 0x3f, 0x43, 0xb5, 0x1b, 0xc2, 0xc2, 0xd6, 0xc9,
|
||||||
0xff, 0xa7, 0xa3, 0xe3, 0x4f, 0x3f, 0x9c, 0x79, 0xdb, 0x56, 0x0d, 0x73, 0xac, 0xec, 0xac, 0x71,
|
0x77, 0xef, 0x4e, 0xe7, 0xe7, 0x93, 0xe1, 0xa4, 0x35, 0x75, 0x51, 0x31, 0xcb, 0xf2, 0x8d, 0xd1,
|
||||||
0x06, 0xff, 0x0f, 0x4f, 0xed, 0x5f, 0xf3, 0x0f, 0x04, 0xf1, 0xd6, 0x28, 0xe5, 0xb5, 0x74, 0x07,
|
0x56, 0xe3, 0x63, 0x77, 0x2c, 0xdb, 0x8f, 0x73, 0xd4, 0xac, 0x99, 0xa9, 0x3c, 0x4e, 0xbf, 0x02,
|
||||||
0x7c, 0x09, 0xab, 0x46, 0xf6, 0x5d, 0xcb, 0x0e, 0x95, 0x66, 0x4a, 0x10, 0x94, 0xa1, 0x22, 0xa6,
|
0x88, 0xe6, 0x5a, 0xca, 0x56, 0x09, 0xbb, 0xc5, 0x97, 0x30, 0xa9, 0x44, 0xb3, 0xa9, 0xd9, 0xb6,
|
||||||
0xc9, 0xc8, 0x9e, 0x99, 0x12, 0x38, 0x83, 0xa4, 0x11, 0x3d, 0xb7, 0xb2, 0x73, 0xd2, 0x68, 0xf2,
|
0x50, 0x4c, 0x72, 0x12, 0x24, 0x41, 0x16, 0x51, 0xb4, 0x67, 0xaf, 0x4c, 0x72, 0x9c, 0x00, 0xaa,
|
||||||
0x6f, 0xdc, 0x38, 0x22, 0xbc, 0x81, 0x54, 0x09, 0x55, 0x0b, 0xdb, 0x57, 0xdc, 0x78, 0xed, 0xc8,
|
0x78, 0x53, 0x1a, 0xb1, 0xb1, 0x42, 0x2b, 0x72, 0xb4, 0xef, 0xe8, 0x11, 0xbe, 0x82, 0x58, 0x72,
|
||||||
0x2c, 0x43, 0x45, 0x4a, 0x57, 0x23, 0xdc, 0x7e, 0x33, 0xbc, 0x86, 0x88, 0x9b, 0xd6, 0x58, 0x32,
|
0xb9, 0xe4, 0xa6, 0x29, 0x4a, 0xdd, 0x2a, 0x4b, 0x06, 0x49, 0x90, 0xc5, 0x74, 0xb2, 0x87, 0xf3,
|
||||||
0x0f, 0x07, 0x86, 0x80, 0x2f, 0x20, 0x71, 0x6c, 0x5f, 0x49, 0xdd, 0x48, 0x2e, 0x7a, 0x12, 0x65,
|
0x1d, 0xc3, 0x53, 0x08, 0x4b, 0x5d, 0x6b, 0x43, 0x86, 0x6e, 0x80, 0x4f, 0xf0, 0x05, 0x20, 0xcb,
|
||||||
0xb3, 0x22, 0xa5, 0xe0, 0xd8, 0xfe, 0x71, 0x20, 0xf9, 0x27, 0x82, 0xe5, 0xf6, 0x8d, 0x69, 0x2d,
|
0x56, 0x85, 0x50, 0x95, 0x28, 0x79, 0x43, 0xc2, 0x64, 0x90, 0xc5, 0x14, 0x2c, 0x5b, 0x3d, 0x79,
|
||||||
0xda, 0xd3, 0xc8, 0xae, 0x21, 0x12, 0xca, 0xbc, 0xcb, 0x20, 0x19, 0xd3, 0x21, 0xfc, 0x61, 0x77,
|
0x92, 0x7e, 0x07, 0x30, 0x9e, 0xaf, 0x99, 0x52, 0xbc, 0x3e, 0x8c, 0xec, 0x14, 0x42, 0x2e, 0xf5,
|
||||||
0x0d, 0x31, 0x9f, 0xaa, 0x22, 0x51, 0x86, 0x8a, 0xe4, 0xe6, 0xbc, 0x9c, 0x9a, 0x2c, 0x7f, 0x5a,
|
0xa7, 0x70, 0x92, 0x11, 0xf5, 0xc9, 0x3f, 0x76, 0xb7, 0x10, 0x95, 0xdd, 0xaa, 0x48, 0x98, 0x04,
|
||||||
0xa4, 0xc7, 0x2d, 0x8c, 0x61, 0xee, 0xbd, 0x6c, 0xc8, 0x22, 0xdc, 0x09, 0x73, 0xce, 0x60, 0xbe,
|
0x19, 0x9a, 0x9d, 0xe5, 0xdd, 0x5a, 0xf3, 0xdf, 0x2d, 0xd2, 0xbe, 0x0b, 0x63, 0x18, 0xb6, 0xad,
|
||||||
0xeb, 0x85, 0x3d, 0x99, 0xff, 0x60, 0x3a, 0xfb, 0x65, 0x9a, 0x6f, 0x60, 0xb9, 0xa3, 0x4f, 0x0f,
|
0xa8, 0xc8, 0xc8, 0xcd, 0x71, 0x71, 0xca, 0x60, 0xb8, 0x68, 0xb8, 0x39, 0x98, 0xbf, 0x37, 0x1d,
|
||||||
0xcc, 0x31, 0x4c, 0x60, 0xc9, 0x8d, 0x76, 0x42, 0xbb, 0xf0, 0xc1, 0x8a, 0x4e, 0xf1, 0x3e, 0x7d,
|
0xfc, 0x31, 0x4d, 0x9f, 0x61, 0xbc, 0xa0, 0x2f, 0x8f, 0xcc, 0x32, 0x4c, 0x60, 0x5c, 0x6a, 0x65,
|
||||||
0x49, 0xca, 0xab, 0xbb, 0xc9, 0xbf, 0x5e, 0x84, 0xe9, 0xf6, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xd1,
|
0xb9, 0xb2, 0xee, 0x82, 0x09, 0xed, 0x52, 0x7c, 0x0d, 0xa1, 0xfb, 0x09, 0x6e, 0x2c, 0x9a, 0x9d,
|
||||||
0x08, 0xbf, 0x32, 0x2c, 0x02, 0x00, 0x00,
|
0xf6, 0x4f, 0x79, 0xdb, 0x61, 0xea, 0xab, 0x0f, 0xf1, 0x3b, 0xca, 0x6f, 0xee, 0xbb, 0xda, 0x72,
|
||||||
|
0xe4, 0xa2, 0xbb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x71, 0x2e, 0xf3, 0xde, 0x60, 0x02, 0x00,
|
||||||
|
0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ syntax = "proto3";
|
||||||
option go_package = "./;protobuf";
|
option go_package = "./;protobuf";
|
||||||
package protobuf;
|
package protobuf;
|
||||||
|
|
||||||
|
import "shard.proto";
|
||||||
|
|
||||||
message Community {
|
message Community {
|
||||||
string display_name = 1;
|
string display_name = 1;
|
||||||
string description = 2;
|
string description = 2;
|
||||||
|
@ -29,4 +31,5 @@ message User {
|
||||||
message URLData {
|
message URLData {
|
||||||
// Community, Channel, or User
|
// Community, Channel, or User
|
||||||
bytes content = 1;
|
bytes content = 1;
|
||||||
|
Shard shard = 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package requests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
|
"github.com/status-im/status-go/protocol/common"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SetCommunityShard struct {
|
||||||
|
CommunityID types.HexBytes `json:"communityId"`
|
||||||
|
Shard *common.Shard `json:"shard,omitempty"`
|
||||||
|
PrivateKey *types.HexBytes `json:"privateKey,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SetCommunityShard) Validate() error {
|
||||||
|
if s == nil {
|
||||||
|
return errors.New("invalid request")
|
||||||
|
}
|
||||||
|
if s.Shard != nil {
|
||||||
|
// TODO: for now only MainStatusShard(16) is accepted
|
||||||
|
if s.Shard.Cluster != common.MainStatusShard {
|
||||||
|
return errors.New("invalid shard cluster")
|
||||||
|
}
|
||||||
|
if s.Shard.Index > 1023 {
|
||||||
|
return errors.New("invalid shard index. Only 0-1023 is allowed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -8,9 +8,10 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,6 +19,11 @@ const (
|
||||||
minPow = 0.0
|
minPow = 0.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Shard struct {
|
||||||
|
Cluster uint16
|
||||||
|
Index uint16
|
||||||
|
}
|
||||||
|
|
||||||
type RawFilter struct {
|
type RawFilter struct {
|
||||||
FilterID string
|
FilterID string
|
||||||
Topic types.TopicType
|
Topic types.TopicType
|
||||||
|
@ -131,7 +137,7 @@ func (f *FiltersManager) InitPublicFilters(publicFiltersToInit []FiltersToInitia
|
||||||
var filters []*Filter
|
var filters []*Filter
|
||||||
// Add public, one-to-one and negotiated filters.
|
// Add public, one-to-one and negotiated filters.
|
||||||
for _, pf := range publicFiltersToInit {
|
for _, pf := range publicFiltersToInit {
|
||||||
f, err := f.LoadPublic(pf.ChatID, pf.PubsubTopic) // TODO: pubsubtopic
|
f, err := f.LoadPublic(pf.ChatID, pf.PubsubTopic)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -141,8 +147,8 @@ func (f *FiltersManager) InitPublicFilters(publicFiltersToInit []FiltersToInitia
|
||||||
}
|
}
|
||||||
|
|
||||||
type CommunityFilterToInitialize struct {
|
type CommunityFilterToInitialize struct {
|
||||||
CommunityID []byte
|
Shard *Shard
|
||||||
PrivKey *ecdsa.PrivateKey
|
PrivKey *ecdsa.PrivateKey
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FiltersManager) InitCommunityFilters(communityFiltersToInitialize []CommunityFilterToInitialize) ([]*Filter, error) {
|
func (f *FiltersManager) InitCommunityFilters(communityFiltersToInitialize []CommunityFilterToInitialize) ([]*Filter, error) {
|
||||||
|
@ -151,30 +157,43 @@ func (f *FiltersManager) InitCommunityFilters(communityFiltersToInitialize []Com
|
||||||
defer f.mutex.Unlock()
|
defer f.mutex.Unlock()
|
||||||
|
|
||||||
for _, cf := range communityFiltersToInitialize {
|
for _, cf := range communityFiltersToInitialize {
|
||||||
pubsubTopic := GetPubsubTopic(cf.CommunityID)
|
if cf.PrivKey == nil {
|
||||||
identityStr := PublicKeyToStr(&cf.PrivKey.PublicKey)
|
continue
|
||||||
rawFilter, err := f.addAsymmetric(identityStr, pubsubTopic, cf.PrivKey, true)
|
|
||||||
if err != nil {
|
|
||||||
f.logger.Debug("could not register community filter", zap.Error(err))
|
|
||||||
return nil, err
|
|
||||||
|
|
||||||
}
|
|
||||||
filterID := identityStr + "-admin"
|
|
||||||
filter := &Filter{
|
|
||||||
ChatID: filterID,
|
|
||||||
FilterID: rawFilter.FilterID,
|
|
||||||
PubsubTopic: pubsubTopic,
|
|
||||||
ContentTopic: rawFilter.Topic,
|
|
||||||
Identity: identityStr,
|
|
||||||
Listen: true,
|
|
||||||
OneToOne: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
f.filters[filterID] = filter
|
communityPubsubTopic := GetPubsubTopic(cf.Shard)
|
||||||
|
topics := []string{communityPubsubTopic}
|
||||||
|
if communityPubsubTopic != relay.DefaultWakuTopic {
|
||||||
|
topics = append(topics, relay.DefaultWakuTopic)
|
||||||
|
}
|
||||||
|
|
||||||
f.logger.Debug("registering filter for", zap.String("chatID", filterID), zap.String("type", "community"), zap.String("topic", rawFilter.Topic.String()))
|
// TODO: requests to join / cancels are currently being sent into the default waku topic.
|
||||||
|
// They must be sent into an specific non protected shard
|
||||||
|
for _, pubsubTopic := range topics {
|
||||||
|
identityStr := PublicKeyToStr(&cf.PrivKey.PublicKey)
|
||||||
|
rawFilter, err := f.addAsymmetric(identityStr, pubsubTopic, cf.PrivKey, true)
|
||||||
|
if err != nil {
|
||||||
|
f.logger.Debug("could not register community filter", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
|
||||||
filters = append(filters, filter)
|
}
|
||||||
|
filterID := identityStr + "-admin"
|
||||||
|
filter := &Filter{
|
||||||
|
ChatID: filterID,
|
||||||
|
FilterID: rawFilter.FilterID,
|
||||||
|
PubsubTopic: pubsubTopic,
|
||||||
|
ContentTopic: rawFilter.Topic,
|
||||||
|
Identity: identityStr,
|
||||||
|
Listen: true,
|
||||||
|
OneToOne: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
f.filters[filterID] = filter
|
||||||
|
|
||||||
|
f.logger.Debug("registering filter for", zap.String("chatID", filterID), zap.String("type", "community"), zap.String("topic", rawFilter.Topic.String()))
|
||||||
|
|
||||||
|
filters = append(filters, filter)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return filters, nil
|
return filters, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,9 +13,11 @@ import (
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/libp2p/go-libp2p/core/peer"
|
"github.com/libp2p/go-libp2p/core/peer"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol"
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/status-im/status-go/connection"
|
"github.com/status-im/status-go/connection"
|
||||||
"github.com/status-im/status-go/eth-node/crypto"
|
"github.com/status-im/status-go/eth-node/crypto"
|
||||||
|
@ -672,6 +674,14 @@ func (t *Transport) StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey)
|
||||||
return t.waku.StorePubsubTopicKey(topic, privKey)
|
return t.waku.StorePubsubTopicKey(topic, privKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPubsubTopic(communityID []byte) string {
|
func (t *Transport) RetrievePubsubTopicKey(topic string) (*ecdsa.PrivateKey, error) {
|
||||||
|
return t.waku.RetrievePubsubTopicKey(topic)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPubsubTopic(shard *Shard) string {
|
||||||
|
if shard != nil {
|
||||||
|
return protocol.NewStaticShardingPubsubTopic(shard.Cluster, shard.Index).String()
|
||||||
|
}
|
||||||
|
|
||||||
return relay.DefaultWakuTopic
|
return relay.DefaultWakuTopic
|
||||||
}
|
}
|
||||||
|
|
|
@ -436,6 +436,11 @@ func (api *PublicAPI) RemovePrivateKey(id types.HexBytes) (*protocol.MessengerRe
|
||||||
return api.service.messenger.RemovePrivateKey(id)
|
return api.service.messenger.RemovePrivateKey(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sets the community shard for a community and updates all active filters for the community
|
||||||
|
func (api *PublicAPI) SetCommunityShard(request *requests.SetCommunityShard) (*protocol.MessengerResponse, error) {
|
||||||
|
return api.service.messenger.SetCommunityShard(request)
|
||||||
|
}
|
||||||
|
|
||||||
// ExportCommunity exports the private key of the community with given ID
|
// ExportCommunity exports the private key of the community with given ID
|
||||||
func (api *PublicAPI) ExportCommunity(id types.HexBytes) (types.HexBytes, error) {
|
func (api *PublicAPI) ExportCommunity(id types.HexBytes) (types.HexBytes, error) {
|
||||||
key, err := api.service.messenger.ExportCommunity(id)
|
key, err := api.service.messenger.ExportCommunity(id)
|
||||||
|
@ -1169,12 +1174,22 @@ func (api *PublicAPI) EnsVerified(pk, ensName string) error {
|
||||||
return api.service.messenger.ENSVerified(pk, ensName)
|
return api.service.messenger.ENSVerified(pk, ensName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
func (api *PublicAPI) RequestCommunityInfoFromMailserver(communityID string) (*communities.Community, error) {
|
func (api *PublicAPI) RequestCommunityInfoFromMailserver(communityID string) (*communities.Community, error) {
|
||||||
return api.service.messenger.RequestCommunityInfoFromMailserver(communityID, true)
|
return api.service.messenger.RequestCommunityInfoFromMailserver(communityID, nil, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *PublicAPI) RequestCommunityInfoFromMailserverWithShard(communityID string, shard *common.Shard) (*communities.Community, error) {
|
||||||
|
return api.service.messenger.RequestCommunityInfoFromMailserver(communityID, shard, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
func (api *PublicAPI) RequestCommunityInfoFromMailserverAsync(communityID string) error {
|
func (api *PublicAPI) RequestCommunityInfoFromMailserverAsync(communityID string) error {
|
||||||
return api.service.messenger.RequestCommunityInfoFromMailserverAsync(communityID)
|
return api.service.messenger.RequestCommunityInfoFromMailserverAsync(communityID, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *PublicAPI) RequestCommunityInfoFromMailserverAsyncWithShard(communityID string, shard *common.Shard) error {
|
||||||
|
return api.service.messenger.RequestCommunityInfoFromMailserverAsync(communityID, shard)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *PublicAPI) ActivityCenterNotifications(request protocol.ActivityCenterNotificationsRequest) (*protocol.ActivityCenterPaginationResponse, error) {
|
func (api *PublicAPI) ActivityCenterNotifications(request protocol.ActivityCenterNotificationsRequest) (*protocol.ActivityCenterPaginationResponse, error) {
|
||||||
|
|
|
@ -561,6 +561,10 @@ func (s *Service) CanProvideCollectibleMetadata(id thirdparty.CollectibleUniqueI
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) FetchCollectibleMetadata(id thirdparty.CollectibleUniqueID, tokenURI string) (*thirdparty.FullCollectibleData, error) {
|
func (s *Service) FetchCollectibleMetadata(id thirdparty.CollectibleUniqueID, tokenURI string) (*thirdparty.FullCollectibleData, error) {
|
||||||
|
if s.messenger == nil {
|
||||||
|
return nil, fmt.Errorf("messenger not ready")
|
||||||
|
}
|
||||||
|
|
||||||
communityID := tokenURIToCommunityID(tokenURI)
|
communityID := tokenURIToCommunityID(tokenURI)
|
||||||
|
|
||||||
if communityID == "" {
|
if communityID == "" {
|
||||||
|
@ -670,7 +674,12 @@ func (s *Service) fetchCommunity(communityID string) (*communities.Community, er
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to fetch metadata from Messenger communities
|
// Try to fetch metadata from Messenger communities
|
||||||
community, err := s.messenger.RequestCommunityInfoFromMailserver(communityID, true)
|
|
||||||
|
// TODO: we need the shard information in the collectible to be able to retrieve info for
|
||||||
|
// communities that have specific shards
|
||||||
|
|
||||||
|
var shard *common.Shard = nil // TODO: build this with info from token
|
||||||
|
community, err := s.messenger.RequestCommunityInfoFromMailserver(communityID, shard, true)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/status-im/status-go/appdatabase"
|
"github.com/status-im/status-go/appdatabase"
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
|
|
||||||
"github.com/status-im/status-go/eth-node/types"
|
"github.com/status-im/status-go/eth-node/types"
|
||||||
"github.com/status-im/status-go/protocol"
|
"github.com/status-im/status-go/protocol"
|
||||||
|
"github.com/status-im/status-go/protocol/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Make sure that Service implements node.Lifecycle interface.
|
// Make sure that Service implements node.Lifecycle interface.
|
||||||
|
@ -69,12 +70,12 @@ type PublicAPI struct {
|
||||||
service *Service
|
service *Service
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PublicAPI) CommunityInfo(communityID types.HexBytes) (json.RawMessage, error) {
|
func (p *PublicAPI) CommunityInfo(communityID types.HexBytes, shard *common.Shard) (json.RawMessage, error) {
|
||||||
if p.service.messenger == nil {
|
if p.service.messenger == nil {
|
||||||
return nil, ErrNotInitialized
|
return nil, ErrNotInitialized
|
||||||
}
|
}
|
||||||
|
|
||||||
community, err := p.service.messenger.RequestCommunityInfoFromMailserver(communityID.String(), true)
|
community, err := p.service.messenger.RequestCommunityInfoFromMailserver(communityID.String(), shard, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,10 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"golang.org/x/exp/maps"
|
"golang.org/x/exp/maps"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/status-im/status-go/wakuv2/common"
|
"github.com/status-im/status-go/wakuv2/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,11 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"golang.org/x/exp/maps"
|
"golang.org/x/exp/maps"
|
||||||
|
|
||||||
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
|
|
|
@ -13,13 +13,14 @@ import (
|
||||||
|
|
||||||
"github.com/status-im/status-go/wakuv2/common"
|
"github.com/status-im/status-go/wakuv2/common"
|
||||||
|
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
|
|
||||||
node "github.com/waku-org/go-waku/waku/v2/node"
|
node "github.com/waku-org/go-waku/waku/v2/node"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol"
|
"github.com/waku-org/go-waku/waku/v2/protocol"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/filter"
|
"github.com/waku-org/go-waku/waku/v2/protocol/filter"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/subscription"
|
"github.com/waku-org/go-waku/waku/v2/protocol/subscription"
|
||||||
"go.uber.org/zap"
|
|
||||||
"golang.org/x/exp/maps"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -990,16 +990,17 @@ func (w *Waku) broadcast() {
|
||||||
select {
|
select {
|
||||||
case envelope := <-w.sendQueue:
|
case envelope := <-w.sendQueue:
|
||||||
var err error
|
var err error
|
||||||
|
logger := w.logger.With(zap.String("envelopeHash", hexutil.Encode(envelope.Hash())), zap.String("pubsubTopic", envelope.PubsubTopic()), zap.String("contentTopic", envelope.Message().ContentTopic), zap.Int64("timestamp", envelope.Message().Timestamp))
|
||||||
if w.settings.LightClient {
|
if w.settings.LightClient {
|
||||||
w.logger.Info("publishing message via lightpush", zap.String("envelopeHash", hexutil.Encode(envelope.Hash())), zap.String("pubsubTopic", envelope.PubsubTopic()))
|
w.logger.Info("publishing message via lightpush")
|
||||||
_, err = w.node.Lightpush().PublishToTopic(context.Background(), envelope.Message(), lightpush.WithPubSubTopic(envelope.PubsubTopic()))
|
_, err = w.node.Lightpush().PublishToTopic(context.Background(), envelope.Message(), lightpush.WithPubSubTopic(envelope.PubsubTopic()))
|
||||||
} else {
|
} else {
|
||||||
w.logger.Info("publishing message via relay", zap.String("envelopeHash", hexutil.Encode(envelope.Hash())), zap.String("pubsubTopic", envelope.PubsubTopic()))
|
logger.Info("publishing message via relay")
|
||||||
_, err = w.node.Relay().PublishToTopic(context.Background(), envelope.Message(), envelope.PubsubTopic())
|
_, err = w.node.Relay().PublishToTopic(context.Background(), envelope.Message(), envelope.PubsubTopic())
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.logger.Error("could not send message", zap.String("envelopeHash", hexutil.Encode(envelope.Hash())), zap.String("pubsubTopic", envelope.PubsubTopic()), zap.Error(err))
|
logger.Error("could not send message", zap.Error(err))
|
||||||
w.envelopeFeed.Send(common.EnvelopeEvent{
|
w.envelopeFeed.Send(common.EnvelopeEvent{
|
||||||
Hash: gethcommon.BytesToHash(envelope.Hash()),
|
Hash: gethcommon.BytesToHash(envelope.Hash()),
|
||||||
Event: common.EventEnvelopeExpired,
|
Event: common.EventEnvelopeExpired,
|
||||||
|
@ -1437,7 +1438,19 @@ func (w *Waku) SubscribeToPubsubTopic(topic string, pubkey *ecdsa.PublicKey) err
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *Waku) RetrievePubsubTopicKey(topic string) (*ecdsa.PrivateKey, error) {
|
||||||
|
if w.protectedTopicStore == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return w.protectedTopicStore.FetchPrivateKey(topic)
|
||||||
|
}
|
||||||
|
|
||||||
func (w *Waku) StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error {
|
func (w *Waku) StorePubsubTopicKey(topic string, privKey *ecdsa.PrivateKey) error {
|
||||||
|
if w.protectedTopicStore == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
return w.protectedTopicStore.Insert(topic, privKey, &privKey.PublicKey)
|
return w.protectedTopicStore.Insert(topic, privKey, &privKey.PublicKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,14 @@ import (
|
||||||
|
|
||||||
"github.com/cenkalti/backoff/v3"
|
"github.com/cenkalti/backoff/v3"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
|
|
||||||
"github.com/waku-org/go-waku/waku/v2/dnsdisc"
|
"github.com/waku-org/go-waku/waku/v2/dnsdisc"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
|
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
"github.com/waku-org/go-waku/waku/v2/protocol/relay"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/store"
|
"github.com/waku-org/go-waku/waku/v2/protocol/store"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/subscription"
|
"github.com/waku-org/go-waku/waku/v2/protocol/subscription"
|
||||||
"golang.org/x/exp/maps"
|
|
||||||
|
|
||||||
"github.com/status-im/status-go/protocol/tt"
|
"github.com/status-im/status-go/protocol/tt"
|
||||||
"github.com/status-im/status-go/wakuv2/common"
|
"github.com/status-im/status-go/wakuv2/common"
|
||||||
|
|
Loading…
Reference in New Issue