From 6a3fc713978a0c1c9290a4afd08b47886b49b635 Mon Sep 17 00:00:00 2001
From: Wim <wim@42.be>
Date: Sat, 13 Aug 2022 16:14:26 +0200
Subject: Update dependencies and go1.18 (#1873)

* Update dependencies and go1.18

* Exclude unnecessary linters and update build to go1.18
---
 vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.go  | 22181 ++++++++++---------
 vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.raw |   Bin 62723 -> 64404 bytes
 vendor/go.mau.fi/whatsmeow/binary/proto/def.proto  |  1541 +-
 3 files changed, 12324 insertions(+), 11398 deletions(-)

(limited to 'vendor/go.mau.fi/whatsmeow/binary')

diff --git a/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.go b/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.go
index 62088933..2506aa5e 100644
--- a/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.go
+++ b/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.go
@@ -81,6 +81,62 @@ func (KeepType) EnumDescriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{0}
 }
 
+type RmrSource int32
+
+const (
+	RmrSource_FAVORITE_STICKER RmrSource = 0
+	RmrSource_RECENT_STICKER   RmrSource = 1
+)
+
+// Enum value maps for RmrSource.
+var (
+	RmrSource_name = map[int32]string{
+		0: "FAVORITE_STICKER",
+		1: "RECENT_STICKER",
+	}
+	RmrSource_value = map[string]int32{
+		"FAVORITE_STICKER": 0,
+		"RECENT_STICKER":   1,
+	}
+)
+
+func (x RmrSource) Enum() *RmrSource {
+	p := new(RmrSource)
+	*p = x
+	return p
+}
+
+func (x RmrSource) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (RmrSource) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[1].Descriptor()
+}
+
+func (RmrSource) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[1]
+}
+
+func (x RmrSource) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *RmrSource) UnmarshalJSON(b []byte) error {
+	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+	if err != nil {
+		return err
+	}
+	*x = RmrSource(num)
+	return nil
+}
+
+// Deprecated: Use RmrSource.Descriptor instead.
+func (RmrSource) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{1}
+}
+
 type MediaVisibility int32
 
 const (
@@ -114,11 +170,11 @@ func (x MediaVisibility) String() string {
 }
 
 func (MediaVisibility) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[1].Descriptor()
+	return file_binary_proto_def_proto_enumTypes[2].Descriptor()
 }
 
 func (MediaVisibility) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[1]
+	return &file_binary_proto_def_proto_enumTypes[2]
 }
 
 func (x MediaVisibility) Number() protoreflect.EnumNumber {
@@ -137,31 +193,31 @@ func (x *MediaVisibility) UnmarshalJSON(b []byte) error {
 
 // Deprecated: Use MediaVisibility.Descriptor instead.
 func (MediaVisibility) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{1}
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{2}
 }
 
-type DeviceProps_DevicePropsPlatformType int32
+type DeviceProps_PlatformType int32
 
 const (
-	DeviceProps_UNKNOWN        DeviceProps_DevicePropsPlatformType = 0
-	DeviceProps_CHROME         DeviceProps_DevicePropsPlatformType = 1
-	DeviceProps_FIREFOX        DeviceProps_DevicePropsPlatformType = 2
-	DeviceProps_IE             DeviceProps_DevicePropsPlatformType = 3
-	DeviceProps_OPERA          DeviceProps_DevicePropsPlatformType = 4
-	DeviceProps_SAFARI         DeviceProps_DevicePropsPlatformType = 5
-	DeviceProps_EDGE           DeviceProps_DevicePropsPlatformType = 6
-	DeviceProps_DESKTOP        DeviceProps_DevicePropsPlatformType = 7
-	DeviceProps_IPAD           DeviceProps_DevicePropsPlatformType = 8
-	DeviceProps_ANDROID_TABLET DeviceProps_DevicePropsPlatformType = 9
-	DeviceProps_OHANA          DeviceProps_DevicePropsPlatformType = 10
-	DeviceProps_ALOHA          DeviceProps_DevicePropsPlatformType = 11
-	DeviceProps_CATALINA       DeviceProps_DevicePropsPlatformType = 12
-	DeviceProps_TCL_TV         DeviceProps_DevicePropsPlatformType = 13
+	DeviceProps_UNKNOWN        DeviceProps_PlatformType = 0
+	DeviceProps_CHROME         DeviceProps_PlatformType = 1
+	DeviceProps_FIREFOX        DeviceProps_PlatformType = 2
+	DeviceProps_IE             DeviceProps_PlatformType = 3
+	DeviceProps_OPERA          DeviceProps_PlatformType = 4
+	DeviceProps_SAFARI         DeviceProps_PlatformType = 5
+	DeviceProps_EDGE           DeviceProps_PlatformType = 6
+	DeviceProps_DESKTOP        DeviceProps_PlatformType = 7
+	DeviceProps_IPAD           DeviceProps_PlatformType = 8
+	DeviceProps_ANDROID_TABLET DeviceProps_PlatformType = 9
+	DeviceProps_OHANA          DeviceProps_PlatformType = 10
+	DeviceProps_ALOHA          DeviceProps_PlatformType = 11
+	DeviceProps_CATALINA       DeviceProps_PlatformType = 12
+	DeviceProps_TCL_TV         DeviceProps_PlatformType = 13
 )
 
-// Enum value maps for DeviceProps_DevicePropsPlatformType.
+// Enum value maps for DeviceProps_PlatformType.
 var (
-	DeviceProps_DevicePropsPlatformType_name = map[int32]string{
+	DeviceProps_PlatformType_name = map[int32]string{
 		0:  "UNKNOWN",
 		1:  "CHROME",
 		2:  "FIREFOX",
@@ -177,7 +233,7 @@ var (
 		12: "CATALINA",
 		13: "TCL_TV",
 	}
-	DeviceProps_DevicePropsPlatformType_value = map[string]int32{
+	DeviceProps_PlatformType_value = map[string]int32{
 		"UNKNOWN":        0,
 		"CHROME":         1,
 		"FIREFOX":        2,
@@ -195,61 +251,61 @@ var (
 	}
 )
 
-func (x DeviceProps_DevicePropsPlatformType) Enum() *DeviceProps_DevicePropsPlatformType {
-	p := new(DeviceProps_DevicePropsPlatformType)
+func (x DeviceProps_PlatformType) Enum() *DeviceProps_PlatformType {
+	p := new(DeviceProps_PlatformType)
 	*p = x
 	return p
 }
 
-func (x DeviceProps_DevicePropsPlatformType) String() string {
+func (x DeviceProps_PlatformType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (DeviceProps_DevicePropsPlatformType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[2].Descriptor()
+func (DeviceProps_PlatformType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[3].Descriptor()
 }
 
-func (DeviceProps_DevicePropsPlatformType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[2]
+func (DeviceProps_PlatformType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[3]
 }
 
-func (x DeviceProps_DevicePropsPlatformType) Number() protoreflect.EnumNumber {
+func (x DeviceProps_PlatformType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *DeviceProps_DevicePropsPlatformType) UnmarshalJSON(b []byte) error {
+func (x *DeviceProps_PlatformType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = DeviceProps_DevicePropsPlatformType(num)
+	*x = DeviceProps_PlatformType(num)
 	return nil
 }
 
-// Deprecated: Use DeviceProps_DevicePropsPlatformType.Descriptor instead.
-func (DeviceProps_DevicePropsPlatformType) EnumDescriptor() ([]byte, []int) {
+// Deprecated: Use DeviceProps_PlatformType.Descriptor instead.
+func (DeviceProps_PlatformType) EnumDescriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{5, 0}
 }
 
-type PaymentInviteMessage_PaymentInviteMessageServiceType int32
+type PaymentInviteMessage_ServiceType int32
 
 const (
-	PaymentInviteMessage_UNKNOWN PaymentInviteMessage_PaymentInviteMessageServiceType = 0
-	PaymentInviteMessage_FBPAY   PaymentInviteMessage_PaymentInviteMessageServiceType = 1
-	PaymentInviteMessage_NOVI    PaymentInviteMessage_PaymentInviteMessageServiceType = 2
-	PaymentInviteMessage_UPI     PaymentInviteMessage_PaymentInviteMessageServiceType = 3
+	PaymentInviteMessage_UNKNOWN PaymentInviteMessage_ServiceType = 0
+	PaymentInviteMessage_FBPAY   PaymentInviteMessage_ServiceType = 1
+	PaymentInviteMessage_NOVI    PaymentInviteMessage_ServiceType = 2
+	PaymentInviteMessage_UPI     PaymentInviteMessage_ServiceType = 3
 )
 
-// Enum value maps for PaymentInviteMessage_PaymentInviteMessageServiceType.
+// Enum value maps for PaymentInviteMessage_ServiceType.
 var (
-	PaymentInviteMessage_PaymentInviteMessageServiceType_name = map[int32]string{
+	PaymentInviteMessage_ServiceType_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "FBPAY",
 		2: "NOVI",
 		3: "UPI",
 	}
-	PaymentInviteMessage_PaymentInviteMessageServiceType_value = map[string]int32{
+	PaymentInviteMessage_ServiceType_value = map[string]int32{
 		"UNKNOWN": 0,
 		"FBPAY":   1,
 		"NOVI":    2,
@@ -257,338 +313,338 @@ var (
 	}
 )
 
-func (x PaymentInviteMessage_PaymentInviteMessageServiceType) Enum() *PaymentInviteMessage_PaymentInviteMessageServiceType {
-	p := new(PaymentInviteMessage_PaymentInviteMessageServiceType)
+func (x PaymentInviteMessage_ServiceType) Enum() *PaymentInviteMessage_ServiceType {
+	p := new(PaymentInviteMessage_ServiceType)
 	*p = x
 	return p
 }
 
-func (x PaymentInviteMessage_PaymentInviteMessageServiceType) String() string {
+func (x PaymentInviteMessage_ServiceType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (PaymentInviteMessage_PaymentInviteMessageServiceType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[3].Descriptor()
+func (PaymentInviteMessage_ServiceType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[4].Descriptor()
 }
 
-func (PaymentInviteMessage_PaymentInviteMessageServiceType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[3]
+func (PaymentInviteMessage_ServiceType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[4]
 }
 
-func (x PaymentInviteMessage_PaymentInviteMessageServiceType) Number() protoreflect.EnumNumber {
+func (x PaymentInviteMessage_ServiceType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *PaymentInviteMessage_PaymentInviteMessageServiceType) UnmarshalJSON(b []byte) error {
+func (x *PaymentInviteMessage_ServiceType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = PaymentInviteMessage_PaymentInviteMessageServiceType(num)
+	*x = PaymentInviteMessage_ServiceType(num)
 	return nil
 }
 
-// Deprecated: Use PaymentInviteMessage_PaymentInviteMessageServiceType.Descriptor instead.
-func (PaymentInviteMessage_PaymentInviteMessageServiceType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{15, 0}
+// Deprecated: Use PaymentInviteMessage_ServiceType.Descriptor instead.
+func (PaymentInviteMessage_ServiceType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{11, 0}
 }
 
-type OrderMessage_OrderMessageOrderStatus int32
+type OrderMessage_OrderSurface int32
 
 const (
-	OrderMessage_INQUIRY OrderMessage_OrderMessageOrderStatus = 1
+	OrderMessage_CATALOG OrderMessage_OrderSurface = 1
 )
 
-// Enum value maps for OrderMessage_OrderMessageOrderStatus.
+// Enum value maps for OrderMessage_OrderSurface.
 var (
-	OrderMessage_OrderMessageOrderStatus_name = map[int32]string{
-		1: "INQUIRY",
+	OrderMessage_OrderSurface_name = map[int32]string{
+		1: "CATALOG",
 	}
-	OrderMessage_OrderMessageOrderStatus_value = map[string]int32{
-		"INQUIRY": 1,
+	OrderMessage_OrderSurface_value = map[string]int32{
+		"CATALOG": 1,
 	}
 )
 
-func (x OrderMessage_OrderMessageOrderStatus) Enum() *OrderMessage_OrderMessageOrderStatus {
-	p := new(OrderMessage_OrderMessageOrderStatus)
+func (x OrderMessage_OrderSurface) Enum() *OrderMessage_OrderSurface {
+	p := new(OrderMessage_OrderSurface)
 	*p = x
 	return p
 }
 
-func (x OrderMessage_OrderMessageOrderStatus) String() string {
+func (x OrderMessage_OrderSurface) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (OrderMessage_OrderMessageOrderStatus) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[4].Descriptor()
+func (OrderMessage_OrderSurface) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[5].Descriptor()
 }
 
-func (OrderMessage_OrderMessageOrderStatus) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[4]
+func (OrderMessage_OrderSurface) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[5]
 }
 
-func (x OrderMessage_OrderMessageOrderStatus) Number() protoreflect.EnumNumber {
+func (x OrderMessage_OrderSurface) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *OrderMessage_OrderMessageOrderStatus) UnmarshalJSON(b []byte) error {
+func (x *OrderMessage_OrderSurface) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = OrderMessage_OrderMessageOrderStatus(num)
+	*x = OrderMessage_OrderSurface(num)
 	return nil
 }
 
-// Deprecated: Use OrderMessage_OrderMessageOrderStatus.Descriptor instead.
-func (OrderMessage_OrderMessageOrderStatus) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 0}
+// Deprecated: Use OrderMessage_OrderSurface.Descriptor instead.
+func (OrderMessage_OrderSurface) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{12, 0}
 }
 
-type OrderMessage_OrderMessageOrderSurface int32
+type OrderMessage_OrderStatus int32
 
 const (
-	OrderMessage_CATALOG OrderMessage_OrderMessageOrderSurface = 1
+	OrderMessage_INQUIRY OrderMessage_OrderStatus = 1
 )
 
-// Enum value maps for OrderMessage_OrderMessageOrderSurface.
+// Enum value maps for OrderMessage_OrderStatus.
 var (
-	OrderMessage_OrderMessageOrderSurface_name = map[int32]string{
-		1: "CATALOG",
+	OrderMessage_OrderStatus_name = map[int32]string{
+		1: "INQUIRY",
 	}
-	OrderMessage_OrderMessageOrderSurface_value = map[string]int32{
-		"CATALOG": 1,
+	OrderMessage_OrderStatus_value = map[string]int32{
+		"INQUIRY": 1,
 	}
 )
 
-func (x OrderMessage_OrderMessageOrderSurface) Enum() *OrderMessage_OrderMessageOrderSurface {
-	p := new(OrderMessage_OrderMessageOrderSurface)
+func (x OrderMessage_OrderStatus) Enum() *OrderMessage_OrderStatus {
+	p := new(OrderMessage_OrderStatus)
 	*p = x
 	return p
 }
 
-func (x OrderMessage_OrderMessageOrderSurface) String() string {
+func (x OrderMessage_OrderStatus) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (OrderMessage_OrderMessageOrderSurface) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[5].Descriptor()
+func (OrderMessage_OrderStatus) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[6].Descriptor()
 }
 
-func (OrderMessage_OrderMessageOrderSurface) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[5]
+func (OrderMessage_OrderStatus) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[6]
 }
 
-func (x OrderMessage_OrderMessageOrderSurface) Number() protoreflect.EnumNumber {
+func (x OrderMessage_OrderStatus) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *OrderMessage_OrderMessageOrderSurface) UnmarshalJSON(b []byte) error {
+func (x *OrderMessage_OrderStatus) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = OrderMessage_OrderMessageOrderSurface(num)
+	*x = OrderMessage_OrderStatus(num)
 	return nil
 }
 
-// Deprecated: Use OrderMessage_OrderMessageOrderSurface.Descriptor instead.
-func (OrderMessage_OrderMessageOrderSurface) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 1}
+// Deprecated: Use OrderMessage_OrderStatus.Descriptor instead.
+func (OrderMessage_OrderStatus) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{12, 1}
 }
 
-type ListResponseMessage_ListResponseMessageListType int32
+type ListResponseMessage_ListType int32
 
 const (
-	ListResponseMessage_UNKNOWN       ListResponseMessage_ListResponseMessageListType = 0
-	ListResponseMessage_SINGLE_SELECT ListResponseMessage_ListResponseMessageListType = 1
+	ListResponseMessage_UNKNOWN       ListResponseMessage_ListType = 0
+	ListResponseMessage_SINGLE_SELECT ListResponseMessage_ListType = 1
 )
 
-// Enum value maps for ListResponseMessage_ListResponseMessageListType.
+// Enum value maps for ListResponseMessage_ListType.
 var (
-	ListResponseMessage_ListResponseMessageListType_name = map[int32]string{
+	ListResponseMessage_ListType_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "SINGLE_SELECT",
 	}
-	ListResponseMessage_ListResponseMessageListType_value = map[string]int32{
+	ListResponseMessage_ListType_value = map[string]int32{
 		"UNKNOWN":       0,
 		"SINGLE_SELECT": 1,
 	}
 )
 
-func (x ListResponseMessage_ListResponseMessageListType) Enum() *ListResponseMessage_ListResponseMessageListType {
-	p := new(ListResponseMessage_ListResponseMessageListType)
+func (x ListResponseMessage_ListType) Enum() *ListResponseMessage_ListType {
+	p := new(ListResponseMessage_ListType)
 	*p = x
 	return p
 }
 
-func (x ListResponseMessage_ListResponseMessageListType) String() string {
+func (x ListResponseMessage_ListType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ListResponseMessage_ListResponseMessageListType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[6].Descriptor()
+func (ListResponseMessage_ListType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[7].Descriptor()
 }
 
-func (ListResponseMessage_ListResponseMessageListType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[6]
+func (ListResponseMessage_ListType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[7]
 }
 
-func (x ListResponseMessage_ListResponseMessageListType) Number() protoreflect.EnumNumber {
+func (x ListResponseMessage_ListType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ListResponseMessage_ListResponseMessageListType) UnmarshalJSON(b []byte) error {
+func (x *ListResponseMessage_ListType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ListResponseMessage_ListResponseMessageListType(num)
+	*x = ListResponseMessage_ListType(num)
 	return nil
 }
 
-// Deprecated: Use ListResponseMessage_ListResponseMessageListType.Descriptor instead.
-func (ListResponseMessage_ListResponseMessageListType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{19, 0}
+// Deprecated: Use ListResponseMessage_ListType.Descriptor instead.
+func (ListResponseMessage_ListType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{15, 0}
 }
 
-type ListMessage_ListMessageListType int32
+type ListMessage_ListType int32
 
 const (
-	ListMessage_UNKNOWN       ListMessage_ListMessageListType = 0
-	ListMessage_SINGLE_SELECT ListMessage_ListMessageListType = 1
-	ListMessage_PRODUCT_LIST  ListMessage_ListMessageListType = 2
+	ListMessage_UNKNOWN       ListMessage_ListType = 0
+	ListMessage_SINGLE_SELECT ListMessage_ListType = 1
+	ListMessage_PRODUCT_LIST  ListMessage_ListType = 2
 )
 
-// Enum value maps for ListMessage_ListMessageListType.
+// Enum value maps for ListMessage_ListType.
 var (
-	ListMessage_ListMessageListType_name = map[int32]string{
+	ListMessage_ListType_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "SINGLE_SELECT",
 		2: "PRODUCT_LIST",
 	}
-	ListMessage_ListMessageListType_value = map[string]int32{
+	ListMessage_ListType_value = map[string]int32{
 		"UNKNOWN":       0,
 		"SINGLE_SELECT": 1,
 		"PRODUCT_LIST":  2,
 	}
 )
 
-func (x ListMessage_ListMessageListType) Enum() *ListMessage_ListMessageListType {
-	p := new(ListMessage_ListMessageListType)
+func (x ListMessage_ListType) Enum() *ListMessage_ListType {
+	p := new(ListMessage_ListType)
 	*p = x
 	return p
 }
 
-func (x ListMessage_ListMessageListType) String() string {
+func (x ListMessage_ListType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ListMessage_ListMessageListType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[7].Descriptor()
+func (ListMessage_ListType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[8].Descriptor()
 }
 
-func (ListMessage_ListMessageListType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[7]
+func (ListMessage_ListType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[8]
 }
 
-func (x ListMessage_ListMessageListType) Number() protoreflect.EnumNumber {
+func (x ListMessage_ListType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ListMessage_ListMessageListType) UnmarshalJSON(b []byte) error {
+func (x *ListMessage_ListType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ListMessage_ListMessageListType(num)
+	*x = ListMessage_ListType(num)
 	return nil
 }
 
-// Deprecated: Use ListMessage_ListMessageListType.Descriptor instead.
-func (ListMessage_ListMessageListType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{21, 0}
+// Deprecated: Use ListMessage_ListType.Descriptor instead.
+func (ListMessage_ListType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 0}
 }
 
-type InvoiceMessage_InvoiceMessageAttachmentType int32
+type InvoiceMessage_AttachmentType int32
 
 const (
-	InvoiceMessage_IMAGE InvoiceMessage_InvoiceMessageAttachmentType = 0
-	InvoiceMessage_PDF   InvoiceMessage_InvoiceMessageAttachmentType = 1
+	InvoiceMessage_IMAGE InvoiceMessage_AttachmentType = 0
+	InvoiceMessage_PDF   InvoiceMessage_AttachmentType = 1
 )
 
-// Enum value maps for InvoiceMessage_InvoiceMessageAttachmentType.
+// Enum value maps for InvoiceMessage_AttachmentType.
 var (
-	InvoiceMessage_InvoiceMessageAttachmentType_name = map[int32]string{
+	InvoiceMessage_AttachmentType_name = map[int32]string{
 		0: "IMAGE",
 		1: "PDF",
 	}
-	InvoiceMessage_InvoiceMessageAttachmentType_value = map[string]int32{
+	InvoiceMessage_AttachmentType_value = map[string]int32{
 		"IMAGE": 0,
 		"PDF":   1,
 	}
 )
 
-func (x InvoiceMessage_InvoiceMessageAttachmentType) Enum() *InvoiceMessage_InvoiceMessageAttachmentType {
-	p := new(InvoiceMessage_InvoiceMessageAttachmentType)
+func (x InvoiceMessage_AttachmentType) Enum() *InvoiceMessage_AttachmentType {
+	p := new(InvoiceMessage_AttachmentType)
 	*p = x
 	return p
 }
 
-func (x InvoiceMessage_InvoiceMessageAttachmentType) String() string {
+func (x InvoiceMessage_AttachmentType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (InvoiceMessage_InvoiceMessageAttachmentType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[8].Descriptor()
+func (InvoiceMessage_AttachmentType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[9].Descriptor()
 }
 
-func (InvoiceMessage_InvoiceMessageAttachmentType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[8]
+func (InvoiceMessage_AttachmentType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[9]
 }
 
-func (x InvoiceMessage_InvoiceMessageAttachmentType) Number() protoreflect.EnumNumber {
+func (x InvoiceMessage_AttachmentType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *InvoiceMessage_InvoiceMessageAttachmentType) UnmarshalJSON(b []byte) error {
+func (x *InvoiceMessage_AttachmentType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = InvoiceMessage_InvoiceMessageAttachmentType(num)
+	*x = InvoiceMessage_AttachmentType(num)
 	return nil
 }
 
-// Deprecated: Use InvoiceMessage_InvoiceMessageAttachmentType.Descriptor instead.
-func (InvoiceMessage_InvoiceMessageAttachmentType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{29, 0}
+// Deprecated: Use InvoiceMessage_AttachmentType.Descriptor instead.
+func (InvoiceMessage_AttachmentType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{18, 0}
 }
 
-type ShopMessage_ShopMessageSurface int32
+type InteractiveMessage_ShopMessage_Surface int32
 
 const (
-	ShopMessage_UNKNOWN_SURFACE ShopMessage_ShopMessageSurface = 0
-	ShopMessage_FB              ShopMessage_ShopMessageSurface = 1
-	ShopMessage_IG              ShopMessage_ShopMessageSurface = 2
-	ShopMessage_WA              ShopMessage_ShopMessageSurface = 3
+	InteractiveMessage_ShopMessage_UNKNOWN_SURFACE InteractiveMessage_ShopMessage_Surface = 0
+	InteractiveMessage_ShopMessage_FB              InteractiveMessage_ShopMessage_Surface = 1
+	InteractiveMessage_ShopMessage_IG              InteractiveMessage_ShopMessage_Surface = 2
+	InteractiveMessage_ShopMessage_WA              InteractiveMessage_ShopMessage_Surface = 3
 )
 
-// Enum value maps for ShopMessage_ShopMessageSurface.
+// Enum value maps for InteractiveMessage_ShopMessage_Surface.
 var (
-	ShopMessage_ShopMessageSurface_name = map[int32]string{
+	InteractiveMessage_ShopMessage_Surface_name = map[int32]string{
 		0: "UNKNOWN_SURFACE",
 		1: "FB",
 		2: "IG",
 		3: "WA",
 	}
-	ShopMessage_ShopMessageSurface_value = map[string]int32{
+	InteractiveMessage_ShopMessage_Surface_value = map[string]int32{
 		"UNKNOWN_SURFACE": 0,
 		"FB":              1,
 		"IG":              2,
@@ -596,63 +652,63 @@ var (
 	}
 )
 
-func (x ShopMessage_ShopMessageSurface) Enum() *ShopMessage_ShopMessageSurface {
-	p := new(ShopMessage_ShopMessageSurface)
+func (x InteractiveMessage_ShopMessage_Surface) Enum() *InteractiveMessage_ShopMessage_Surface {
+	p := new(InteractiveMessage_ShopMessage_Surface)
 	*p = x
 	return p
 }
 
-func (x ShopMessage_ShopMessageSurface) String() string {
+func (x InteractiveMessage_ShopMessage_Surface) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ShopMessage_ShopMessageSurface) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[9].Descriptor()
+func (InteractiveMessage_ShopMessage_Surface) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[10].Descriptor()
 }
 
-func (ShopMessage_ShopMessageSurface) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[9]
+func (InteractiveMessage_ShopMessage_Surface) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[10]
 }
 
-func (x ShopMessage_ShopMessageSurface) Number() protoreflect.EnumNumber {
+func (x InteractiveMessage_ShopMessage_Surface) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ShopMessage_ShopMessageSurface) UnmarshalJSON(b []byte) error {
+func (x *InteractiveMessage_ShopMessage_Surface) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ShopMessage_ShopMessageSurface(num)
+	*x = InteractiveMessage_ShopMessage_Surface(num)
 	return nil
 }
 
-// Deprecated: Use ShopMessage_ShopMessageSurface.Descriptor instead.
-func (ShopMessage_ShopMessageSurface) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{34, 0}
+// Deprecated: Use InteractiveMessage_ShopMessage_Surface.Descriptor instead.
+func (InteractiveMessage_ShopMessage_Surface) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 0, 0}
 }
 
-type HistorySyncNotification_HistorySyncNotificationHistorySyncType int32
+type HistorySyncNotification_HistorySyncType int32
 
 const (
-	HistorySyncNotification_INITIAL_BOOTSTRAP HistorySyncNotification_HistorySyncNotificationHistorySyncType = 0
-	HistorySyncNotification_INITIAL_STATUS_V3 HistorySyncNotification_HistorySyncNotificationHistorySyncType = 1
-	HistorySyncNotification_FULL              HistorySyncNotification_HistorySyncNotificationHistorySyncType = 2
-	HistorySyncNotification_RECENT            HistorySyncNotification_HistorySyncNotificationHistorySyncType = 3
-	HistorySyncNotification_PUSH_NAME         HistorySyncNotification_HistorySyncNotificationHistorySyncType = 4
+	HistorySyncNotification_INITIAL_BOOTSTRAP HistorySyncNotification_HistorySyncType = 0
+	HistorySyncNotification_INITIAL_STATUS_V3 HistorySyncNotification_HistorySyncType = 1
+	HistorySyncNotification_FULL              HistorySyncNotification_HistorySyncType = 2
+	HistorySyncNotification_RECENT            HistorySyncNotification_HistorySyncType = 3
+	HistorySyncNotification_PUSH_NAME         HistorySyncNotification_HistorySyncType = 4
 )
 
-// Enum value maps for HistorySyncNotification_HistorySyncNotificationHistorySyncType.
+// Enum value maps for HistorySyncNotification_HistorySyncType.
 var (
-	HistorySyncNotification_HistorySyncNotificationHistorySyncType_name = map[int32]string{
+	HistorySyncNotification_HistorySyncType_name = map[int32]string{
 		0: "INITIAL_BOOTSTRAP",
 		1: "INITIAL_STATUS_V3",
 		2: "FULL",
 		3: "RECENT",
 		4: "PUSH_NAME",
 	}
-	HistorySyncNotification_HistorySyncNotificationHistorySyncType_value = map[string]int32{
+	HistorySyncNotification_HistorySyncType_value = map[string]int32{
 		"INITIAL_BOOTSTRAP": 0,
 		"INITIAL_STATUS_V3": 1,
 		"FULL":              2,
@@ -661,58 +717,58 @@ var (
 	}
 )
 
-func (x HistorySyncNotification_HistorySyncNotificationHistorySyncType) Enum() *HistorySyncNotification_HistorySyncNotificationHistorySyncType {
-	p := new(HistorySyncNotification_HistorySyncNotificationHistorySyncType)
+func (x HistorySyncNotification_HistorySyncType) Enum() *HistorySyncNotification_HistorySyncType {
+	p := new(HistorySyncNotification_HistorySyncType)
 	*p = x
 	return p
 }
 
-func (x HistorySyncNotification_HistorySyncNotificationHistorySyncType) String() string {
+func (x HistorySyncNotification_HistorySyncType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (HistorySyncNotification_HistorySyncNotificationHistorySyncType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[10].Descriptor()
+func (HistorySyncNotification_HistorySyncType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[11].Descriptor()
 }
 
-func (HistorySyncNotification_HistorySyncNotificationHistorySyncType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[10]
+func (HistorySyncNotification_HistorySyncType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[11]
 }
 
-func (x HistorySyncNotification_HistorySyncNotificationHistorySyncType) Number() protoreflect.EnumNumber {
+func (x HistorySyncNotification_HistorySyncType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *HistorySyncNotification_HistorySyncNotificationHistorySyncType) UnmarshalJSON(b []byte) error {
+func (x *HistorySyncNotification_HistorySyncType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = HistorySyncNotification_HistorySyncNotificationHistorySyncType(num)
+	*x = HistorySyncNotification_HistorySyncType(num)
 	return nil
 }
 
-// Deprecated: Use HistorySyncNotification_HistorySyncNotificationHistorySyncType.Descriptor instead.
-func (HistorySyncNotification_HistorySyncNotificationHistorySyncType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{43, 0}
+// Deprecated: Use HistorySyncNotification_HistorySyncType.Descriptor instead.
+func (HistorySyncNotification_HistorySyncType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{23, 0}
 }
 
-type HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType int32
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType int32
 
 const (
-	HSMDateTimeComponent_MONDAY    HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 1
-	HSMDateTimeComponent_TUESDAY   HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 2
-	HSMDateTimeComponent_WEDNESDAY HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 3
-	HSMDateTimeComponent_THURSDAY  HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 4
-	HSMDateTimeComponent_FRIDAY    HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 5
-	HSMDateTimeComponent_SATURDAY  HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 6
-	HSMDateTimeComponent_SUNDAY    HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType = 7
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_MONDAY    HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType = 1
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_TUESDAY   HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType = 2
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_WEDNESDAY HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType = 3
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_THURSDAY  HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType = 4
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_FRIDAY    HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType = 5
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_SATURDAY  HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType = 6
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_SUNDAY    HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType = 7
 )
 
-// Enum value maps for HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType.
+// Enum value maps for HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType.
 var (
-	HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType_name = map[int32]string{
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType_name = map[int32]string{
 		1: "MONDAY",
 		2: "TUESDAY",
 		3: "WEDNESDAY",
@@ -721,7 +777,7 @@ var (
 		6: "SATURDAY",
 		7: "SUNDAY",
 	}
-	HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType_value = map[string]int32{
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType_value = map[string]int32{
 		"MONDAY":    1,
 		"TUESDAY":   2,
 		"WEDNESDAY": 3,
@@ -732,406 +788,412 @@ var (
 	}
 )
 
-func (x HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Enum() *HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType {
-	p := new(HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType)
+func (x HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType) Enum() *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType {
+	p := new(HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType)
 	*p = x
 	return p
 }
 
-func (x HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) String() string {
+func (x HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[11].Descriptor()
+func (HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[12].Descriptor()
 }
 
-func (HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[11]
+func (HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[12]
 }
 
-func (x HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) Number() protoreflect.EnumNumber {
+func (x HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) UnmarshalJSON(b []byte) error {
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType(num)
+	*x = HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType(num)
 	return nil
 }
 
-// Deprecated: Use HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType.Descriptor instead.
-func (HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{48, 0}
+// Deprecated: Use HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType.Descriptor instead.
+func (HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24, 0, 0, 1, 0}
 }
 
-type HSMDateTimeComponent_HSMDateTimeComponentCalendarType int32
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType int32
 
 const (
-	HSMDateTimeComponent_GREGORIAN   HSMDateTimeComponent_HSMDateTimeComponentCalendarType = 1
-	HSMDateTimeComponent_SOLAR_HIJRI HSMDateTimeComponent_HSMDateTimeComponentCalendarType = 2
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_GREGORIAN   HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType = 1
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_SOLAR_HIJRI HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType = 2
 )
 
-// Enum value maps for HSMDateTimeComponent_HSMDateTimeComponentCalendarType.
+// Enum value maps for HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType.
 var (
-	HSMDateTimeComponent_HSMDateTimeComponentCalendarType_name = map[int32]string{
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType_name = map[int32]string{
 		1: "GREGORIAN",
 		2: "SOLAR_HIJRI",
 	}
-	HSMDateTimeComponent_HSMDateTimeComponentCalendarType_value = map[string]int32{
+	HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType_value = map[string]int32{
 		"GREGORIAN":   1,
 		"SOLAR_HIJRI": 2,
 	}
 )
 
-func (x HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Enum() *HSMDateTimeComponent_HSMDateTimeComponentCalendarType {
-	p := new(HSMDateTimeComponent_HSMDateTimeComponentCalendarType)
+func (x HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType) Enum() *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType {
+	p := new(HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType)
 	*p = x
 	return p
 }
 
-func (x HSMDateTimeComponent_HSMDateTimeComponentCalendarType) String() string {
+func (x HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[12].Descriptor()
+func (HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[13].Descriptor()
 }
 
-func (HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[12]
+func (HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[13]
 }
 
-func (x HSMDateTimeComponent_HSMDateTimeComponentCalendarType) Number() protoreflect.EnumNumber {
+func (x HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *HSMDateTimeComponent_HSMDateTimeComponentCalendarType) UnmarshalJSON(b []byte) error {
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = HSMDateTimeComponent_HSMDateTimeComponentCalendarType(num)
+	*x = HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType(num)
 	return nil
 }
 
-// Deprecated: Use HSMDateTimeComponent_HSMDateTimeComponentCalendarType.Descriptor instead.
-func (HSMDateTimeComponent_HSMDateTimeComponentCalendarType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{48, 1}
+// Deprecated: Use HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType.Descriptor instead.
+func (HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24, 0, 0, 1, 1}
 }
 
-type GroupInviteMessage_GroupInviteMessageGroupType int32
+type GroupInviteMessage_GroupType int32
 
 const (
-	GroupInviteMessage_DEFAULT GroupInviteMessage_GroupInviteMessageGroupType = 0
-	GroupInviteMessage_PARENT  GroupInviteMessage_GroupInviteMessageGroupType = 1
+	GroupInviteMessage_DEFAULT GroupInviteMessage_GroupType = 0
+	GroupInviteMessage_PARENT  GroupInviteMessage_GroupType = 1
 )
 
-// Enum value maps for GroupInviteMessage_GroupInviteMessageGroupType.
+// Enum value maps for GroupInviteMessage_GroupType.
 var (
-	GroupInviteMessage_GroupInviteMessageGroupType_name = map[int32]string{
+	GroupInviteMessage_GroupType_name = map[int32]string{
 		0: "DEFAULT",
 		1: "PARENT",
 	}
-	GroupInviteMessage_GroupInviteMessageGroupType_value = map[string]int32{
+	GroupInviteMessage_GroupType_value = map[string]int32{
 		"DEFAULT": 0,
 		"PARENT":  1,
 	}
 )
 
-func (x GroupInviteMessage_GroupInviteMessageGroupType) Enum() *GroupInviteMessage_GroupInviteMessageGroupType {
-	p := new(GroupInviteMessage_GroupInviteMessageGroupType)
+func (x GroupInviteMessage_GroupType) Enum() *GroupInviteMessage_GroupType {
+	p := new(GroupInviteMessage_GroupType)
 	*p = x
 	return p
 }
 
-func (x GroupInviteMessage_GroupInviteMessageGroupType) String() string {
+func (x GroupInviteMessage_GroupType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (GroupInviteMessage_GroupInviteMessageGroupType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[13].Descriptor()
+func (GroupInviteMessage_GroupType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[14].Descriptor()
 }
 
-func (GroupInviteMessage_GroupInviteMessageGroupType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[13]
+func (GroupInviteMessage_GroupType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[14]
 }
 
-func (x GroupInviteMessage_GroupInviteMessageGroupType) Number() protoreflect.EnumNumber {
+func (x GroupInviteMessage_GroupType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *GroupInviteMessage_GroupInviteMessageGroupType) UnmarshalJSON(b []byte) error {
+func (x *GroupInviteMessage_GroupType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = GroupInviteMessage_GroupInviteMessageGroupType(num)
+	*x = GroupInviteMessage_GroupType(num)
 	return nil
 }
 
-// Deprecated: Use GroupInviteMessage_GroupInviteMessageGroupType.Descriptor instead.
-func (GroupInviteMessage_GroupInviteMessageGroupType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{50, 0}
+// Deprecated: Use GroupInviteMessage_GroupType.Descriptor instead.
+func (GroupInviteMessage_GroupType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{25, 0}
 }
 
-type ExtendedTextMessage_ExtendedTextMessageFontType int32
+type ExtendedTextMessage_PreviewType int32
 
 const (
-	ExtendedTextMessage_SANS_SERIF        ExtendedTextMessage_ExtendedTextMessageFontType = 0
-	ExtendedTextMessage_SERIF             ExtendedTextMessage_ExtendedTextMessageFontType = 1
-	ExtendedTextMessage_NORICAN_REGULAR   ExtendedTextMessage_ExtendedTextMessageFontType = 2
-	ExtendedTextMessage_BRYNDAN_WRITE     ExtendedTextMessage_ExtendedTextMessageFontType = 3
-	ExtendedTextMessage_BEBASNEUE_REGULAR ExtendedTextMessage_ExtendedTextMessageFontType = 4
-	ExtendedTextMessage_OSWALD_HEAVY      ExtendedTextMessage_ExtendedTextMessageFontType = 5
+	ExtendedTextMessage_NONE  ExtendedTextMessage_PreviewType = 0
+	ExtendedTextMessage_VIDEO ExtendedTextMessage_PreviewType = 1
 )
 
-// Enum value maps for ExtendedTextMessage_ExtendedTextMessageFontType.
+// Enum value maps for ExtendedTextMessage_PreviewType.
 var (
-	ExtendedTextMessage_ExtendedTextMessageFontType_name = map[int32]string{
-		0: "SANS_SERIF",
-		1: "SERIF",
-		2: "NORICAN_REGULAR",
-		3: "BRYNDAN_WRITE",
-		4: "BEBASNEUE_REGULAR",
-		5: "OSWALD_HEAVY",
+	ExtendedTextMessage_PreviewType_name = map[int32]string{
+		0: "NONE",
+		1: "VIDEO",
 	}
-	ExtendedTextMessage_ExtendedTextMessageFontType_value = map[string]int32{
-		"SANS_SERIF":        0,
-		"SERIF":             1,
-		"NORICAN_REGULAR":   2,
-		"BRYNDAN_WRITE":     3,
-		"BEBASNEUE_REGULAR": 4,
-		"OSWALD_HEAVY":      5,
+	ExtendedTextMessage_PreviewType_value = map[string]int32{
+		"NONE":  0,
+		"VIDEO": 1,
 	}
 )
 
-func (x ExtendedTextMessage_ExtendedTextMessageFontType) Enum() *ExtendedTextMessage_ExtendedTextMessageFontType {
-	p := new(ExtendedTextMessage_ExtendedTextMessageFontType)
+func (x ExtendedTextMessage_PreviewType) Enum() *ExtendedTextMessage_PreviewType {
+	p := new(ExtendedTextMessage_PreviewType)
 	*p = x
 	return p
 }
 
-func (x ExtendedTextMessage_ExtendedTextMessageFontType) String() string {
+func (x ExtendedTextMessage_PreviewType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ExtendedTextMessage_ExtendedTextMessageFontType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[14].Descriptor()
+func (ExtendedTextMessage_PreviewType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[15].Descriptor()
 }
 
-func (ExtendedTextMessage_ExtendedTextMessageFontType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[14]
+func (ExtendedTextMessage_PreviewType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[15]
 }
 
-func (x ExtendedTextMessage_ExtendedTextMessageFontType) Number() protoreflect.EnumNumber {
+func (x ExtendedTextMessage_PreviewType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ExtendedTextMessage_ExtendedTextMessageFontType) UnmarshalJSON(b []byte) error {
+func (x *ExtendedTextMessage_PreviewType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ExtendedTextMessage_ExtendedTextMessageFontType(num)
+	*x = ExtendedTextMessage_PreviewType(num)
 	return nil
 }
 
-// Deprecated: Use ExtendedTextMessage_ExtendedTextMessageFontType.Descriptor instead.
-func (ExtendedTextMessage_ExtendedTextMessageFontType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{52, 0}
+// Deprecated: Use ExtendedTextMessage_PreviewType.Descriptor instead.
+func (ExtendedTextMessage_PreviewType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{27, 0}
 }
 
-type ExtendedTextMessage_ExtendedTextMessagePreviewType int32
+type ExtendedTextMessage_InviteLinkGroupType int32
 
 const (
-	ExtendedTextMessage_NONE  ExtendedTextMessage_ExtendedTextMessagePreviewType = 0
-	ExtendedTextMessage_VIDEO ExtendedTextMessage_ExtendedTextMessagePreviewType = 1
+	ExtendedTextMessage_DEFAULT     ExtendedTextMessage_InviteLinkGroupType = 0
+	ExtendedTextMessage_PARENT      ExtendedTextMessage_InviteLinkGroupType = 1
+	ExtendedTextMessage_SUB         ExtendedTextMessage_InviteLinkGroupType = 2
+	ExtendedTextMessage_DEFAULT_SUB ExtendedTextMessage_InviteLinkGroupType = 3
 )
 
-// Enum value maps for ExtendedTextMessage_ExtendedTextMessagePreviewType.
+// Enum value maps for ExtendedTextMessage_InviteLinkGroupType.
 var (
-	ExtendedTextMessage_ExtendedTextMessagePreviewType_name = map[int32]string{
-		0: "NONE",
-		1: "VIDEO",
+	ExtendedTextMessage_InviteLinkGroupType_name = map[int32]string{
+		0: "DEFAULT",
+		1: "PARENT",
+		2: "SUB",
+		3: "DEFAULT_SUB",
 	}
-	ExtendedTextMessage_ExtendedTextMessagePreviewType_value = map[string]int32{
-		"NONE":  0,
-		"VIDEO": 1,
+	ExtendedTextMessage_InviteLinkGroupType_value = map[string]int32{
+		"DEFAULT":     0,
+		"PARENT":      1,
+		"SUB":         2,
+		"DEFAULT_SUB": 3,
 	}
 )
 
-func (x ExtendedTextMessage_ExtendedTextMessagePreviewType) Enum() *ExtendedTextMessage_ExtendedTextMessagePreviewType {
-	p := new(ExtendedTextMessage_ExtendedTextMessagePreviewType)
+func (x ExtendedTextMessage_InviteLinkGroupType) Enum() *ExtendedTextMessage_InviteLinkGroupType {
+	p := new(ExtendedTextMessage_InviteLinkGroupType)
 	*p = x
 	return p
 }
 
-func (x ExtendedTextMessage_ExtendedTextMessagePreviewType) String() string {
+func (x ExtendedTextMessage_InviteLinkGroupType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ExtendedTextMessage_ExtendedTextMessagePreviewType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[15].Descriptor()
+func (ExtendedTextMessage_InviteLinkGroupType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[16].Descriptor()
 }
 
-func (ExtendedTextMessage_ExtendedTextMessagePreviewType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[15]
+func (ExtendedTextMessage_InviteLinkGroupType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[16]
 }
 
-func (x ExtendedTextMessage_ExtendedTextMessagePreviewType) Number() protoreflect.EnumNumber {
+func (x ExtendedTextMessage_InviteLinkGroupType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ExtendedTextMessage_ExtendedTextMessagePreviewType) UnmarshalJSON(b []byte) error {
+func (x *ExtendedTextMessage_InviteLinkGroupType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ExtendedTextMessage_ExtendedTextMessagePreviewType(num)
+	*x = ExtendedTextMessage_InviteLinkGroupType(num)
 	return nil
 }
 
-// Deprecated: Use ExtendedTextMessage_ExtendedTextMessagePreviewType.Descriptor instead.
-func (ExtendedTextMessage_ExtendedTextMessagePreviewType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{52, 1}
+// Deprecated: Use ExtendedTextMessage_InviteLinkGroupType.Descriptor instead.
+func (ExtendedTextMessage_InviteLinkGroupType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{27, 1}
 }
 
-type ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType int32
+type ExtendedTextMessage_FontType int32
 
 const (
-	ExtendedTextMessage_DEFAULT ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType = 0
-	ExtendedTextMessage_PARENT  ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType = 1
+	ExtendedTextMessage_SANS_SERIF        ExtendedTextMessage_FontType = 0
+	ExtendedTextMessage_SERIF             ExtendedTextMessage_FontType = 1
+	ExtendedTextMessage_NORICAN_REGULAR   ExtendedTextMessage_FontType = 2
+	ExtendedTextMessage_BRYNDAN_WRITE     ExtendedTextMessage_FontType = 3
+	ExtendedTextMessage_BEBASNEUE_REGULAR ExtendedTextMessage_FontType = 4
+	ExtendedTextMessage_OSWALD_HEAVY      ExtendedTextMessage_FontType = 5
 )
 
-// Enum value maps for ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType.
+// Enum value maps for ExtendedTextMessage_FontType.
 var (
-	ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType_name = map[int32]string{
-		0: "DEFAULT",
-		1: "PARENT",
+	ExtendedTextMessage_FontType_name = map[int32]string{
+		0: "SANS_SERIF",
+		1: "SERIF",
+		2: "NORICAN_REGULAR",
+		3: "BRYNDAN_WRITE",
+		4: "BEBASNEUE_REGULAR",
+		5: "OSWALD_HEAVY",
 	}
-	ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType_value = map[string]int32{
-		"DEFAULT": 0,
-		"PARENT":  1,
+	ExtendedTextMessage_FontType_value = map[string]int32{
+		"SANS_SERIF":        0,
+		"SERIF":             1,
+		"NORICAN_REGULAR":   2,
+		"BRYNDAN_WRITE":     3,
+		"BEBASNEUE_REGULAR": 4,
+		"OSWALD_HEAVY":      5,
 	}
 )
 
-func (x ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType) Enum() *ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType {
-	p := new(ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType)
+func (x ExtendedTextMessage_FontType) Enum() *ExtendedTextMessage_FontType {
+	p := new(ExtendedTextMessage_FontType)
 	*p = x
 	return p
 }
 
-func (x ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType) String() string {
+func (x ExtendedTextMessage_FontType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[16].Descriptor()
+func (ExtendedTextMessage_FontType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[17].Descriptor()
 }
 
-func (ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[16]
+func (ExtendedTextMessage_FontType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[17]
 }
 
-func (x ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType) Number() protoreflect.EnumNumber {
+func (x ExtendedTextMessage_FontType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType) UnmarshalJSON(b []byte) error {
+func (x *ExtendedTextMessage_FontType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType(num)
+	*x = ExtendedTextMessage_FontType(num)
 	return nil
 }
 
-// Deprecated: Use ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType.Descriptor instead.
-func (ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{52, 2}
+// Deprecated: Use ExtendedTextMessage_FontType.Descriptor instead.
+func (ExtendedTextMessage_FontType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{27, 2}
 }
 
-type ButtonsResponseMessage_ButtonsResponseMessageType int32
+type ButtonsResponseMessage_Type int32
 
 const (
-	ButtonsResponseMessage_UNKNOWN      ButtonsResponseMessage_ButtonsResponseMessageType = 0
-	ButtonsResponseMessage_DISPLAY_TEXT ButtonsResponseMessage_ButtonsResponseMessageType = 1
+	ButtonsResponseMessage_UNKNOWN      ButtonsResponseMessage_Type = 0
+	ButtonsResponseMessage_DISPLAY_TEXT ButtonsResponseMessage_Type = 1
 )
 
-// Enum value maps for ButtonsResponseMessage_ButtonsResponseMessageType.
+// Enum value maps for ButtonsResponseMessage_Type.
 var (
-	ButtonsResponseMessage_ButtonsResponseMessageType_name = map[int32]string{
+	ButtonsResponseMessage_Type_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "DISPLAY_TEXT",
 	}
-	ButtonsResponseMessage_ButtonsResponseMessageType_value = map[string]int32{
+	ButtonsResponseMessage_Type_value = map[string]int32{
 		"UNKNOWN":      0,
 		"DISPLAY_TEXT": 1,
 	}
 )
 
-func (x ButtonsResponseMessage_ButtonsResponseMessageType) Enum() *ButtonsResponseMessage_ButtonsResponseMessageType {
-	p := new(ButtonsResponseMessage_ButtonsResponseMessageType)
+func (x ButtonsResponseMessage_Type) Enum() *ButtonsResponseMessage_Type {
+	p := new(ButtonsResponseMessage_Type)
 	*p = x
 	return p
 }
 
-func (x ButtonsResponseMessage_ButtonsResponseMessageType) String() string {
+func (x ButtonsResponseMessage_Type) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ButtonsResponseMessage_ButtonsResponseMessageType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[17].Descriptor()
+func (ButtonsResponseMessage_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[18].Descriptor()
 }
 
-func (ButtonsResponseMessage_ButtonsResponseMessageType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[17]
+func (ButtonsResponseMessage_Type) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[18]
 }
 
-func (x ButtonsResponseMessage_ButtonsResponseMessageType) Number() protoreflect.EnumNumber {
+func (x ButtonsResponseMessage_Type) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ButtonsResponseMessage_ButtonsResponseMessageType) UnmarshalJSON(b []byte) error {
+func (x *ButtonsResponseMessage_Type) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ButtonsResponseMessage_ButtonsResponseMessageType(num)
+	*x = ButtonsResponseMessage_Type(num)
 	return nil
 }
 
-// Deprecated: Use ButtonsResponseMessage_ButtonsResponseMessageType.Descriptor instead.
-func (ButtonsResponseMessage_ButtonsResponseMessageType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{61, 0}
+// Deprecated: Use ButtonsResponseMessage_Type.Descriptor instead.
+func (ButtonsResponseMessage_Type) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{36, 0}
 }
 
-type ButtonsMessage_ButtonsMessageHeaderType int32
+type ButtonsMessage_HeaderType int32
 
 const (
-	ButtonsMessage_UNKNOWN  ButtonsMessage_ButtonsMessageHeaderType = 0
-	ButtonsMessage_EMPTY    ButtonsMessage_ButtonsMessageHeaderType = 1
-	ButtonsMessage_TEXT     ButtonsMessage_ButtonsMessageHeaderType = 2
-	ButtonsMessage_DOCUMENT ButtonsMessage_ButtonsMessageHeaderType = 3
-	ButtonsMessage_IMAGE    ButtonsMessage_ButtonsMessageHeaderType = 4
-	ButtonsMessage_VIDEO    ButtonsMessage_ButtonsMessageHeaderType = 5
-	ButtonsMessage_LOCATION ButtonsMessage_ButtonsMessageHeaderType = 6
+	ButtonsMessage_UNKNOWN  ButtonsMessage_HeaderType = 0
+	ButtonsMessage_EMPTY    ButtonsMessage_HeaderType = 1
+	ButtonsMessage_TEXT     ButtonsMessage_HeaderType = 2
+	ButtonsMessage_DOCUMENT ButtonsMessage_HeaderType = 3
+	ButtonsMessage_IMAGE    ButtonsMessage_HeaderType = 4
+	ButtonsMessage_VIDEO    ButtonsMessage_HeaderType = 5
+	ButtonsMessage_LOCATION ButtonsMessage_HeaderType = 6
 )
 
-// Enum value maps for ButtonsMessage_ButtonsMessageHeaderType.
+// Enum value maps for ButtonsMessage_HeaderType.
 var (
-	ButtonsMessage_ButtonsMessageHeaderType_name = map[int32]string{
+	ButtonsMessage_HeaderType_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "EMPTY",
 		2: "TEXT",
@@ -1140,7 +1202,7 @@ var (
 		5: "VIDEO",
 		6: "LOCATION",
 	}
-	ButtonsMessage_ButtonsMessageHeaderType_value = map[string]int32{
+	ButtonsMessage_HeaderType_value = map[string]int32{
 		"UNKNOWN":  0,
 		"EMPTY":    1,
 		"TEXT":     2,
@@ -1151,411 +1213,414 @@ var (
 	}
 )
 
-func (x ButtonsMessage_ButtonsMessageHeaderType) Enum() *ButtonsMessage_ButtonsMessageHeaderType {
-	p := new(ButtonsMessage_ButtonsMessageHeaderType)
+func (x ButtonsMessage_HeaderType) Enum() *ButtonsMessage_HeaderType {
+	p := new(ButtonsMessage_HeaderType)
 	*p = x
 	return p
 }
 
-func (x ButtonsMessage_ButtonsMessageHeaderType) String() string {
+func (x ButtonsMessage_HeaderType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ButtonsMessage_ButtonsMessageHeaderType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[18].Descriptor()
+func (ButtonsMessage_HeaderType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[19].Descriptor()
 }
 
-func (ButtonsMessage_ButtonsMessageHeaderType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[18]
+func (ButtonsMessage_HeaderType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[19]
 }
 
-func (x ButtonsMessage_ButtonsMessageHeaderType) Number() protoreflect.EnumNumber {
+func (x ButtonsMessage_HeaderType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ButtonsMessage_ButtonsMessageHeaderType) UnmarshalJSON(b []byte) error {
+func (x *ButtonsMessage_HeaderType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ButtonsMessage_ButtonsMessageHeaderType(num)
+	*x = ButtonsMessage_HeaderType(num)
 	return nil
 }
 
-// Deprecated: Use ButtonsMessage_ButtonsMessageHeaderType.Descriptor instead.
-func (ButtonsMessage_ButtonsMessageHeaderType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{62, 0}
+// Deprecated: Use ButtonsMessage_HeaderType.Descriptor instead.
+func (ButtonsMessage_HeaderType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{37, 0}
 }
 
-type Button_ButtonType int32
+type ButtonsMessage_Button_Type int32
 
 const (
-	Button_UNKNOWN     Button_ButtonType = 0
-	Button_RESPONSE    Button_ButtonType = 1
-	Button_NATIVE_FLOW Button_ButtonType = 2
+	ButtonsMessage_Button_UNKNOWN     ButtonsMessage_Button_Type = 0
+	ButtonsMessage_Button_RESPONSE    ButtonsMessage_Button_Type = 1
+	ButtonsMessage_Button_NATIVE_FLOW ButtonsMessage_Button_Type = 2
 )
 
-// Enum value maps for Button_ButtonType.
+// Enum value maps for ButtonsMessage_Button_Type.
 var (
-	Button_ButtonType_name = map[int32]string{
+	ButtonsMessage_Button_Type_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "RESPONSE",
 		2: "NATIVE_FLOW",
 	}
-	Button_ButtonType_value = map[string]int32{
+	ButtonsMessage_Button_Type_value = map[string]int32{
 		"UNKNOWN":     0,
 		"RESPONSE":    1,
 		"NATIVE_FLOW": 2,
 	}
 )
 
-func (x Button_ButtonType) Enum() *Button_ButtonType {
-	p := new(Button_ButtonType)
+func (x ButtonsMessage_Button_Type) Enum() *ButtonsMessage_Button_Type {
+	p := new(ButtonsMessage_Button_Type)
 	*p = x
 	return p
 }
 
-func (x Button_ButtonType) String() string {
+func (x ButtonsMessage_Button_Type) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (Button_ButtonType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[19].Descriptor()
+func (ButtonsMessage_Button_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[20].Descriptor()
 }
 
-func (Button_ButtonType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[19]
+func (ButtonsMessage_Button_Type) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[20]
 }
 
-func (x Button_ButtonType) Number() protoreflect.EnumNumber {
+func (x ButtonsMessage_Button_Type) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *Button_ButtonType) UnmarshalJSON(b []byte) error {
+func (x *ButtonsMessage_Button_Type) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = Button_ButtonType(num)
+	*x = ButtonsMessage_Button_Type(num)
 	return nil
 }
 
-// Deprecated: Use Button_ButtonType.Descriptor instead.
-func (Button_ButtonType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{63, 0}
+// Deprecated: Use ButtonsMessage_Button_Type.Descriptor instead.
+func (ButtonsMessage_Button_Type) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{37, 0, 0}
 }
 
-type DisappearingMode_DisappearingModeInitiator int32
+type DisappearingMode_Initiator int32
 
 const (
-	DisappearingMode_CHANGED_IN_CHAT    DisappearingMode_DisappearingModeInitiator = 0
-	DisappearingMode_INITIATED_BY_ME    DisappearingMode_DisappearingModeInitiator = 1
-	DisappearingMode_INITIATED_BY_OTHER DisappearingMode_DisappearingModeInitiator = 2
+	DisappearingMode_CHANGED_IN_CHAT    DisappearingMode_Initiator = 0
+	DisappearingMode_INITIATED_BY_ME    DisappearingMode_Initiator = 1
+	DisappearingMode_INITIATED_BY_OTHER DisappearingMode_Initiator = 2
 )
 
-// Enum value maps for DisappearingMode_DisappearingModeInitiator.
+// Enum value maps for DisappearingMode_Initiator.
 var (
-	DisappearingMode_DisappearingModeInitiator_name = map[int32]string{
+	DisappearingMode_Initiator_name = map[int32]string{
 		0: "CHANGED_IN_CHAT",
 		1: "INITIATED_BY_ME",
 		2: "INITIATED_BY_OTHER",
 	}
-	DisappearingMode_DisappearingModeInitiator_value = map[string]int32{
+	DisappearingMode_Initiator_value = map[string]int32{
 		"CHANGED_IN_CHAT":    0,
 		"INITIATED_BY_ME":    1,
 		"INITIATED_BY_OTHER": 2,
 	}
 )
 
-func (x DisappearingMode_DisappearingModeInitiator) Enum() *DisappearingMode_DisappearingModeInitiator {
-	p := new(DisappearingMode_DisappearingModeInitiator)
+func (x DisappearingMode_Initiator) Enum() *DisappearingMode_Initiator {
+	p := new(DisappearingMode_Initiator)
 	*p = x
 	return p
 }
 
-func (x DisappearingMode_DisappearingModeInitiator) String() string {
+func (x DisappearingMode_Initiator) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (DisappearingMode_DisappearingModeInitiator) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[20].Descriptor()
+func (DisappearingMode_Initiator) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[21].Descriptor()
 }
 
-func (DisappearingMode_DisappearingModeInitiator) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[20]
+func (DisappearingMode_Initiator) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[21]
 }
 
-func (x DisappearingMode_DisappearingModeInitiator) Number() protoreflect.EnumNumber {
+func (x DisappearingMode_Initiator) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *DisappearingMode_DisappearingModeInitiator) UnmarshalJSON(b []byte) error {
+func (x *DisappearingMode_Initiator) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = DisappearingMode_DisappearingModeInitiator(num)
+	*x = DisappearingMode_Initiator(num)
 	return nil
 }
 
-// Deprecated: Use DisappearingMode_DisappearingModeInitiator.Descriptor instead.
-func (DisappearingMode_DisappearingModeInitiator) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{80, 0}
+// Deprecated: Use DisappearingMode_Initiator.Descriptor instead.
+func (DisappearingMode_Initiator) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{49, 0}
 }
 
-type ExternalAdReplyInfo_ExternalAdReplyInfoMediaType int32
+type ContextInfo_ExternalAdReplyInfo_MediaType int32
 
 const (
-	ExternalAdReplyInfo_NONE  ExternalAdReplyInfo_ExternalAdReplyInfoMediaType = 0
-	ExternalAdReplyInfo_IMAGE ExternalAdReplyInfo_ExternalAdReplyInfoMediaType = 1
-	ExternalAdReplyInfo_VIDEO ExternalAdReplyInfo_ExternalAdReplyInfoMediaType = 2
+	ContextInfo_ExternalAdReplyInfo_NONE  ContextInfo_ExternalAdReplyInfo_MediaType = 0
+	ContextInfo_ExternalAdReplyInfo_IMAGE ContextInfo_ExternalAdReplyInfo_MediaType = 1
+	ContextInfo_ExternalAdReplyInfo_VIDEO ContextInfo_ExternalAdReplyInfo_MediaType = 2
 )
 
-// Enum value maps for ExternalAdReplyInfo_ExternalAdReplyInfoMediaType.
+// Enum value maps for ContextInfo_ExternalAdReplyInfo_MediaType.
 var (
-	ExternalAdReplyInfo_ExternalAdReplyInfoMediaType_name = map[int32]string{
+	ContextInfo_ExternalAdReplyInfo_MediaType_name = map[int32]string{
 		0: "NONE",
 		1: "IMAGE",
 		2: "VIDEO",
 	}
-	ExternalAdReplyInfo_ExternalAdReplyInfoMediaType_value = map[string]int32{
+	ContextInfo_ExternalAdReplyInfo_MediaType_value = map[string]int32{
 		"NONE":  0,
 		"IMAGE": 1,
 		"VIDEO": 2,
 	}
 )
 
-func (x ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Enum() *ExternalAdReplyInfo_ExternalAdReplyInfoMediaType {
-	p := new(ExternalAdReplyInfo_ExternalAdReplyInfoMediaType)
+func (x ContextInfo_ExternalAdReplyInfo_MediaType) Enum() *ContextInfo_ExternalAdReplyInfo_MediaType {
+	p := new(ContextInfo_ExternalAdReplyInfo_MediaType)
 	*p = x
 	return p
 }
 
-func (x ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) String() string {
+func (x ContextInfo_ExternalAdReplyInfo_MediaType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[21].Descriptor()
+func (ContextInfo_ExternalAdReplyInfo_MediaType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[22].Descriptor()
 }
 
-func (ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[21]
+func (ContextInfo_ExternalAdReplyInfo_MediaType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[22]
 }
 
-func (x ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) Number() protoreflect.EnumNumber {
+func (x ContextInfo_ExternalAdReplyInfo_MediaType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) UnmarshalJSON(b []byte) error {
+func (x *ContextInfo_ExternalAdReplyInfo_MediaType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ExternalAdReplyInfo_ExternalAdReplyInfoMediaType(num)
+	*x = ContextInfo_ExternalAdReplyInfo_MediaType(num)
 	return nil
 }
 
-// Deprecated: Use ExternalAdReplyInfo_ExternalAdReplyInfoMediaType.Descriptor instead.
-func (ExternalAdReplyInfo_ExternalAdReplyInfoMediaType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{83, 0}
+// Deprecated: Use ContextInfo_ExternalAdReplyInfo_MediaType.Descriptor instead.
+func (ContextInfo_ExternalAdReplyInfo_MediaType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{51, 0, 0}
 }
 
-type AdReplyInfo_AdReplyInfoMediaType int32
+type ContextInfo_AdReplyInfo_MediaType int32
 
 const (
-	AdReplyInfo_NONE  AdReplyInfo_AdReplyInfoMediaType = 0
-	AdReplyInfo_IMAGE AdReplyInfo_AdReplyInfoMediaType = 1
-	AdReplyInfo_VIDEO AdReplyInfo_AdReplyInfoMediaType = 2
+	ContextInfo_AdReplyInfo_NONE  ContextInfo_AdReplyInfo_MediaType = 0
+	ContextInfo_AdReplyInfo_IMAGE ContextInfo_AdReplyInfo_MediaType = 1
+	ContextInfo_AdReplyInfo_VIDEO ContextInfo_AdReplyInfo_MediaType = 2
 )
 
-// Enum value maps for AdReplyInfo_AdReplyInfoMediaType.
+// Enum value maps for ContextInfo_AdReplyInfo_MediaType.
 var (
-	AdReplyInfo_AdReplyInfoMediaType_name = map[int32]string{
+	ContextInfo_AdReplyInfo_MediaType_name = map[int32]string{
 		0: "NONE",
 		1: "IMAGE",
 		2: "VIDEO",
 	}
-	AdReplyInfo_AdReplyInfoMediaType_value = map[string]int32{
+	ContextInfo_AdReplyInfo_MediaType_value = map[string]int32{
 		"NONE":  0,
 		"IMAGE": 1,
 		"VIDEO": 2,
 	}
 )
 
-func (x AdReplyInfo_AdReplyInfoMediaType) Enum() *AdReplyInfo_AdReplyInfoMediaType {
-	p := new(AdReplyInfo_AdReplyInfoMediaType)
+func (x ContextInfo_AdReplyInfo_MediaType) Enum() *ContextInfo_AdReplyInfo_MediaType {
+	p := new(ContextInfo_AdReplyInfo_MediaType)
 	*p = x
 	return p
 }
 
-func (x AdReplyInfo_AdReplyInfoMediaType) String() string {
+func (x ContextInfo_AdReplyInfo_MediaType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (AdReplyInfo_AdReplyInfoMediaType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[22].Descriptor()
+func (ContextInfo_AdReplyInfo_MediaType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[23].Descriptor()
 }
 
-func (AdReplyInfo_AdReplyInfoMediaType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[22]
+func (ContextInfo_AdReplyInfo_MediaType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[23]
 }
 
-func (x AdReplyInfo_AdReplyInfoMediaType) Number() protoreflect.EnumNumber {
+func (x ContextInfo_AdReplyInfo_MediaType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *AdReplyInfo_AdReplyInfoMediaType) UnmarshalJSON(b []byte) error {
+func (x *ContextInfo_AdReplyInfo_MediaType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = AdReplyInfo_AdReplyInfoMediaType(num)
+	*x = ContextInfo_AdReplyInfo_MediaType(num)
 	return nil
 }
 
-// Deprecated: Use AdReplyInfo_AdReplyInfoMediaType.Descriptor instead.
-func (AdReplyInfo_AdReplyInfoMediaType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{84, 0}
+// Deprecated: Use ContextInfo_AdReplyInfo_MediaType.Descriptor instead.
+func (ContextInfo_AdReplyInfo_MediaType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{51, 1, 0}
 }
 
-type PaymentBackground_PaymentBackgroundType int32
+type PaymentBackground_Type int32
 
 const (
-	PaymentBackground_UNKNOWN PaymentBackground_PaymentBackgroundType = 0
-	PaymentBackground_DEFAULT PaymentBackground_PaymentBackgroundType = 1
+	PaymentBackground_UNKNOWN PaymentBackground_Type = 0
+	PaymentBackground_DEFAULT PaymentBackground_Type = 1
 )
 
-// Enum value maps for PaymentBackground_PaymentBackgroundType.
+// Enum value maps for PaymentBackground_Type.
 var (
-	PaymentBackground_PaymentBackgroundType_name = map[int32]string{
+	PaymentBackground_Type_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "DEFAULT",
 	}
-	PaymentBackground_PaymentBackgroundType_value = map[string]int32{
+	PaymentBackground_Type_value = map[string]int32{
 		"UNKNOWN": 0,
 		"DEFAULT": 1,
 	}
 )
 
-func (x PaymentBackground_PaymentBackgroundType) Enum() *PaymentBackground_PaymentBackgroundType {
-	p := new(PaymentBackground_PaymentBackgroundType)
+func (x PaymentBackground_Type) Enum() *PaymentBackground_Type {
+	p := new(PaymentBackground_Type)
 	*p = x
 	return p
 }
 
-func (x PaymentBackground_PaymentBackgroundType) String() string {
+func (x PaymentBackground_Type) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (PaymentBackground_PaymentBackgroundType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[23].Descriptor()
+func (PaymentBackground_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[24].Descriptor()
 }
 
-func (PaymentBackground_PaymentBackgroundType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[23]
+func (PaymentBackground_Type) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[24]
 }
 
-func (x PaymentBackground_PaymentBackgroundType) Number() protoreflect.EnumNumber {
+func (x PaymentBackground_Type) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *PaymentBackground_PaymentBackgroundType) UnmarshalJSON(b []byte) error {
+func (x *PaymentBackground_Type) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = PaymentBackground_PaymentBackgroundType(num)
+	*x = PaymentBackground_Type(num)
 	return nil
 }
 
-// Deprecated: Use PaymentBackground_PaymentBackgroundType.Descriptor instead.
-func (PaymentBackground_PaymentBackgroundType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{91, 0}
+// Deprecated: Use PaymentBackground_Type.Descriptor instead.
+func (PaymentBackground_Type) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{55, 0}
 }
 
-type VideoMessage_VideoMessageAttribution int32
+type VideoMessage_Attribution int32
 
 const (
-	VideoMessage_NONE  VideoMessage_VideoMessageAttribution = 0
-	VideoMessage_GIPHY VideoMessage_VideoMessageAttribution = 1
-	VideoMessage_TENOR VideoMessage_VideoMessageAttribution = 2
+	VideoMessage_NONE  VideoMessage_Attribution = 0
+	VideoMessage_GIPHY VideoMessage_Attribution = 1
+	VideoMessage_TENOR VideoMessage_Attribution = 2
 )
 
-// Enum value maps for VideoMessage_VideoMessageAttribution.
+// Enum value maps for VideoMessage_Attribution.
 var (
-	VideoMessage_VideoMessageAttribution_name = map[int32]string{
+	VideoMessage_Attribution_name = map[int32]string{
 		0: "NONE",
 		1: "GIPHY",
 		2: "TENOR",
 	}
-	VideoMessage_VideoMessageAttribution_value = map[string]int32{
+	VideoMessage_Attribution_value = map[string]int32{
 		"NONE":  0,
 		"GIPHY": 1,
 		"TENOR": 2,
 	}
 )
 
-func (x VideoMessage_VideoMessageAttribution) Enum() *VideoMessage_VideoMessageAttribution {
-	p := new(VideoMessage_VideoMessageAttribution)
+func (x VideoMessage_Attribution) Enum() *VideoMessage_Attribution {
+	p := new(VideoMessage_Attribution)
 	*p = x
 	return p
 }
 
-func (x VideoMessage_VideoMessageAttribution) String() string {
+func (x VideoMessage_Attribution) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (VideoMessage_VideoMessageAttribution) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[24].Descriptor()
+func (VideoMessage_Attribution) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[25].Descriptor()
 }
 
-func (VideoMessage_VideoMessageAttribution) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[24]
+func (VideoMessage_Attribution) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[25]
 }
 
-func (x VideoMessage_VideoMessageAttribution) Number() protoreflect.EnumNumber {
+func (x VideoMessage_Attribution) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *VideoMessage_VideoMessageAttribution) UnmarshalJSON(b []byte) error {
+func (x *VideoMessage_Attribution) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = VideoMessage_VideoMessageAttribution(num)
+	*x = VideoMessage_Attribution(num)
 	return nil
 }
 
-// Deprecated: Use VideoMessage_VideoMessageAttribution.Descriptor instead.
-func (VideoMessage_VideoMessageAttribution) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{96, 0}
+// Deprecated: Use VideoMessage_Attribution.Descriptor instead.
+func (VideoMessage_Attribution) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{59, 0}
 }
 
-type ProtocolMessage_ProtocolMessageType int32
+type ProtocolMessage_Type int32
 
 const (
-	ProtocolMessage_REVOKE                                     ProtocolMessage_ProtocolMessageType = 0
-	ProtocolMessage_EPHEMERAL_SETTING                          ProtocolMessage_ProtocolMessageType = 3
-	ProtocolMessage_EPHEMERAL_SYNC_RESPONSE                    ProtocolMessage_ProtocolMessageType = 4
-	ProtocolMessage_HISTORY_SYNC_NOTIFICATION                  ProtocolMessage_ProtocolMessageType = 5
-	ProtocolMessage_APP_STATE_SYNC_KEY_SHARE                   ProtocolMessage_ProtocolMessageType = 6
-	ProtocolMessage_APP_STATE_SYNC_KEY_REQUEST                 ProtocolMessage_ProtocolMessageType = 7
-	ProtocolMessage_MSG_FANOUT_BACKFILL_REQUEST                ProtocolMessage_ProtocolMessageType = 8
-	ProtocolMessage_INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC ProtocolMessage_ProtocolMessageType = 9
-	ProtocolMessage_APP_STATE_FATAL_EXCEPTION_NOTIFICATION     ProtocolMessage_ProtocolMessageType = 10
+	ProtocolMessage_REVOKE                                     ProtocolMessage_Type = 0
+	ProtocolMessage_EPHEMERAL_SETTING                          ProtocolMessage_Type = 3
+	ProtocolMessage_EPHEMERAL_SYNC_RESPONSE                    ProtocolMessage_Type = 4
+	ProtocolMessage_HISTORY_SYNC_NOTIFICATION                  ProtocolMessage_Type = 5
+	ProtocolMessage_APP_STATE_SYNC_KEY_SHARE                   ProtocolMessage_Type = 6
+	ProtocolMessage_APP_STATE_SYNC_KEY_REQUEST                 ProtocolMessage_Type = 7
+	ProtocolMessage_MSG_FANOUT_BACKFILL_REQUEST                ProtocolMessage_Type = 8
+	ProtocolMessage_INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC ProtocolMessage_Type = 9
+	ProtocolMessage_APP_STATE_FATAL_EXCEPTION_NOTIFICATION     ProtocolMessage_Type = 10
+	ProtocolMessage_SHARE_PHONE_NUMBER                         ProtocolMessage_Type = 11
+	ProtocolMessage_REQUEST_MEDIA_UPLOAD_MESSAGE               ProtocolMessage_Type = 12
+	ProtocolMessage_REQUEST_MEDIA_UPLOAD_RESPONSE_MESSAGE      ProtocolMessage_Type = 13
 )
 
-// Enum value maps for ProtocolMessage_ProtocolMessageType.
+// Enum value maps for ProtocolMessage_Type.
 var (
-	ProtocolMessage_ProtocolMessageType_name = map[int32]string{
+	ProtocolMessage_Type_name = map[int32]string{
 		0:  "REVOKE",
 		3:  "EPHEMERAL_SETTING",
 		4:  "EPHEMERAL_SYNC_RESPONSE",
@@ -1565,8 +1630,11 @@ var (
 		8:  "MSG_FANOUT_BACKFILL_REQUEST",
 		9:  "INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC",
 		10: "APP_STATE_FATAL_EXCEPTION_NOTIFICATION",
+		11: "SHARE_PHONE_NUMBER",
+		12: "REQUEST_MEDIA_UPLOAD_MESSAGE",
+		13: "REQUEST_MEDIA_UPLOAD_RESPONSE_MESSAGE",
 	}
-	ProtocolMessage_ProtocolMessageType_value = map[string]int32{
+	ProtocolMessage_Type_value = map[string]int32{
 		"REVOKE":                                     0,
 		"EPHEMERAL_SETTING":                          3,
 		"EPHEMERAL_SYNC_RESPONSE":                    4,
@@ -1576,244 +1644,306 @@ var (
 		"MSG_FANOUT_BACKFILL_REQUEST":                8,
 		"INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC": 9,
 		"APP_STATE_FATAL_EXCEPTION_NOTIFICATION":     10,
+		"SHARE_PHONE_NUMBER":                         11,
+		"REQUEST_MEDIA_UPLOAD_MESSAGE":               12,
+		"REQUEST_MEDIA_UPLOAD_RESPONSE_MESSAGE":      13,
 	}
 )
 
-func (x ProtocolMessage_ProtocolMessageType) Enum() *ProtocolMessage_ProtocolMessageType {
-	p := new(ProtocolMessage_ProtocolMessageType)
+func (x ProtocolMessage_Type) Enum() *ProtocolMessage_Type {
+	p := new(ProtocolMessage_Type)
 	*p = x
 	return p
 }
 
-func (x ProtocolMessage_ProtocolMessageType) String() string {
+func (x ProtocolMessage_Type) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ProtocolMessage_ProtocolMessageType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[25].Descriptor()
+func (ProtocolMessage_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[26].Descriptor()
 }
 
-func (ProtocolMessage_ProtocolMessageType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[25]
+func (ProtocolMessage_Type) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[26]
+}
+
+func (x ProtocolMessage_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ProtocolMessage_Type) UnmarshalJSON(b []byte) error {
+	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+	if err != nil {
+		return err
+	}
+	*x = ProtocolMessage_Type(num)
+	return nil
+}
+
+// Deprecated: Use ProtocolMessage_Type.Descriptor instead.
+func (ProtocolMessage_Type) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{71, 0}
+}
+
+type PastParticipant_LeaveReason int32
+
+const (
+	PastParticipant_LEFT    PastParticipant_LeaveReason = 0
+	PastParticipant_REMOVED PastParticipant_LeaveReason = 1
+)
+
+// Enum value maps for PastParticipant_LeaveReason.
+var (
+	PastParticipant_LeaveReason_name = map[int32]string{
+		0: "LEFT",
+		1: "REMOVED",
+	}
+	PastParticipant_LeaveReason_value = map[string]int32{
+		"LEFT":    0,
+		"REMOVED": 1,
+	}
+)
+
+func (x PastParticipant_LeaveReason) Enum() *PastParticipant_LeaveReason {
+	p := new(PastParticipant_LeaveReason)
+	*p = x
+	return p
+}
+
+func (x PastParticipant_LeaveReason) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (PastParticipant_LeaveReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[27].Descriptor()
+}
+
+func (PastParticipant_LeaveReason) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[27]
 }
 
-func (x ProtocolMessage_ProtocolMessageType) Number() protoreflect.EnumNumber {
+func (x PastParticipant_LeaveReason) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ProtocolMessage_ProtocolMessageType) UnmarshalJSON(b []byte) error {
+func (x *PastParticipant_LeaveReason) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ProtocolMessage_ProtocolMessageType(num)
+	*x = PastParticipant_LeaveReason(num)
 	return nil
 }
 
-// Deprecated: Use ProtocolMessage_ProtocolMessageType.Descriptor instead.
-func (ProtocolMessage_ProtocolMessageType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{107, 0}
+// Deprecated: Use PastParticipant_LeaveReason.Descriptor instead.
+func (PastParticipant_LeaveReason) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{78, 0}
 }
 
-type HistorySync_HistorySyncHistorySyncType int32
+type HistorySync_HistorySyncType int32
 
 const (
-	HistorySync_INITIAL_BOOTSTRAP HistorySync_HistorySyncHistorySyncType = 0
-	HistorySync_INITIAL_STATUS_V3 HistorySync_HistorySyncHistorySyncType = 1
-	HistorySync_FULL              HistorySync_HistorySyncHistorySyncType = 2
-	HistorySync_RECENT            HistorySync_HistorySyncHistorySyncType = 3
-	HistorySync_PUSH_NAME         HistorySync_HistorySyncHistorySyncType = 4
+	HistorySync_INITIAL_BOOTSTRAP HistorySync_HistorySyncType = 0
+	HistorySync_INITIAL_STATUS_V3 HistorySync_HistorySyncType = 1
+	HistorySync_FULL              HistorySync_HistorySyncType = 2
+	HistorySync_RECENT            HistorySync_HistorySyncType = 3
+	HistorySync_PUSH_NAME         HistorySync_HistorySyncType = 4
+	HistorySync_UNBLOCKING_DATA   HistorySync_HistorySyncType = 5
 )
 
-// Enum value maps for HistorySync_HistorySyncHistorySyncType.
+// Enum value maps for HistorySync_HistorySyncType.
 var (
-	HistorySync_HistorySyncHistorySyncType_name = map[int32]string{
+	HistorySync_HistorySyncType_name = map[int32]string{
 		0: "INITIAL_BOOTSTRAP",
 		1: "INITIAL_STATUS_V3",
 		2: "FULL",
 		3: "RECENT",
 		4: "PUSH_NAME",
+		5: "UNBLOCKING_DATA",
 	}
-	HistorySync_HistorySyncHistorySyncType_value = map[string]int32{
+	HistorySync_HistorySyncType_value = map[string]int32{
 		"INITIAL_BOOTSTRAP": 0,
 		"INITIAL_STATUS_V3": 1,
 		"FULL":              2,
 		"RECENT":            3,
 		"PUSH_NAME":         4,
+		"UNBLOCKING_DATA":   5,
 	}
 )
 
-func (x HistorySync_HistorySyncHistorySyncType) Enum() *HistorySync_HistorySyncHistorySyncType {
-	p := new(HistorySync_HistorySyncHistorySyncType)
+func (x HistorySync_HistorySyncType) Enum() *HistorySync_HistorySyncType {
+	p := new(HistorySync_HistorySyncType)
 	*p = x
 	return p
 }
 
-func (x HistorySync_HistorySyncHistorySyncType) String() string {
+func (x HistorySync_HistorySyncType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (HistorySync_HistorySyncHistorySyncType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[26].Descriptor()
+func (HistorySync_HistorySyncType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[28].Descriptor()
 }
 
-func (HistorySync_HistorySyncHistorySyncType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[26]
+func (HistorySync_HistorySyncType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[28]
 }
 
-func (x HistorySync_HistorySyncHistorySyncType) Number() protoreflect.EnumNumber {
+func (x HistorySync_HistorySyncType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *HistorySync_HistorySyncHistorySyncType) UnmarshalJSON(b []byte) error {
+func (x *HistorySync_HistorySyncType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = HistorySync_HistorySyncHistorySyncType(num)
+	*x = HistorySync_HistorySyncType(num)
 	return nil
 }
 
-// Deprecated: Use HistorySync_HistorySyncHistorySyncType.Descriptor instead.
-func (HistorySync_HistorySyncHistorySyncType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{112, 0}
+// Deprecated: Use HistorySync_HistorySyncType.Descriptor instead.
+func (HistorySync_HistorySyncType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{79, 0}
 }
 
-type GroupParticipant_GroupParticipantRank int32
+type GroupParticipant_Rank int32
 
 const (
-	GroupParticipant_REGULAR    GroupParticipant_GroupParticipantRank = 0
-	GroupParticipant_ADMIN      GroupParticipant_GroupParticipantRank = 1
-	GroupParticipant_SUPERADMIN GroupParticipant_GroupParticipantRank = 2
+	GroupParticipant_REGULAR    GroupParticipant_Rank = 0
+	GroupParticipant_ADMIN      GroupParticipant_Rank = 1
+	GroupParticipant_SUPERADMIN GroupParticipant_Rank = 2
 )
 
-// Enum value maps for GroupParticipant_GroupParticipantRank.
+// Enum value maps for GroupParticipant_Rank.
 var (
-	GroupParticipant_GroupParticipantRank_name = map[int32]string{
+	GroupParticipant_Rank_name = map[int32]string{
 		0: "REGULAR",
 		1: "ADMIN",
 		2: "SUPERADMIN",
 	}
-	GroupParticipant_GroupParticipantRank_value = map[string]int32{
+	GroupParticipant_Rank_value = map[string]int32{
 		"REGULAR":    0,
 		"ADMIN":      1,
 		"SUPERADMIN": 2,
 	}
 )
 
-func (x GroupParticipant_GroupParticipantRank) Enum() *GroupParticipant_GroupParticipantRank {
-	p := new(GroupParticipant_GroupParticipantRank)
+func (x GroupParticipant_Rank) Enum() *GroupParticipant_Rank {
+	p := new(GroupParticipant_Rank)
 	*p = x
 	return p
 }
 
-func (x GroupParticipant_GroupParticipantRank) String() string {
+func (x GroupParticipant_Rank) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (GroupParticipant_GroupParticipantRank) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[27].Descriptor()
+func (GroupParticipant_Rank) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[29].Descriptor()
 }
 
-func (GroupParticipant_GroupParticipantRank) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[27]
+func (GroupParticipant_Rank) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[29]
 }
 
-func (x GroupParticipant_GroupParticipantRank) Number() protoreflect.EnumNumber {
+func (x GroupParticipant_Rank) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *GroupParticipant_GroupParticipantRank) UnmarshalJSON(b []byte) error {
+func (x *GroupParticipant_Rank) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = GroupParticipant_GroupParticipantRank(num)
+	*x = GroupParticipant_Rank(num)
 	return nil
 }
 
-// Deprecated: Use GroupParticipant_GroupParticipantRank.Descriptor instead.
-func (GroupParticipant_GroupParticipantRank) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{114, 0}
+// Deprecated: Use GroupParticipant_Rank.Descriptor instead.
+func (GroupParticipant_Rank) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{81, 0}
 }
 
-type Conversation_ConversationEndOfHistoryTransferType int32
+type Conversation_EndOfHistoryTransferType int32
 
 const (
-	Conversation_COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY   Conversation_ConversationEndOfHistoryTransferType = 0
-	Conversation_COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY Conversation_ConversationEndOfHistoryTransferType = 1
+	Conversation_COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY   Conversation_EndOfHistoryTransferType = 0
+	Conversation_COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY Conversation_EndOfHistoryTransferType = 1
 )
 
-// Enum value maps for Conversation_ConversationEndOfHistoryTransferType.
+// Enum value maps for Conversation_EndOfHistoryTransferType.
 var (
-	Conversation_ConversationEndOfHistoryTransferType_name = map[int32]string{
+	Conversation_EndOfHistoryTransferType_name = map[int32]string{
 		0: "COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY",
 		1: "COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY",
 	}
-	Conversation_ConversationEndOfHistoryTransferType_value = map[string]int32{
+	Conversation_EndOfHistoryTransferType_value = map[string]int32{
 		"COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY":   0,
 		"COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY": 1,
 	}
 )
 
-func (x Conversation_ConversationEndOfHistoryTransferType) Enum() *Conversation_ConversationEndOfHistoryTransferType {
-	p := new(Conversation_ConversationEndOfHistoryTransferType)
+func (x Conversation_EndOfHistoryTransferType) Enum() *Conversation_EndOfHistoryTransferType {
+	p := new(Conversation_EndOfHistoryTransferType)
 	*p = x
 	return p
 }
 
-func (x Conversation_ConversationEndOfHistoryTransferType) String() string {
+func (x Conversation_EndOfHistoryTransferType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (Conversation_ConversationEndOfHistoryTransferType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[28].Descriptor()
+func (Conversation_EndOfHistoryTransferType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[30].Descriptor()
 }
 
-func (Conversation_ConversationEndOfHistoryTransferType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[28]
+func (Conversation_EndOfHistoryTransferType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[30]
 }
 
-func (x Conversation_ConversationEndOfHistoryTransferType) Number() protoreflect.EnumNumber {
+func (x Conversation_EndOfHistoryTransferType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *Conversation_ConversationEndOfHistoryTransferType) UnmarshalJSON(b []byte) error {
+func (x *Conversation_EndOfHistoryTransferType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = Conversation_ConversationEndOfHistoryTransferType(num)
+	*x = Conversation_EndOfHistoryTransferType(num)
 	return nil
 }
 
-// Deprecated: Use Conversation_ConversationEndOfHistoryTransferType.Descriptor instead.
-func (Conversation_ConversationEndOfHistoryTransferType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{116, 0}
+// Deprecated: Use Conversation_EndOfHistoryTransferType.Descriptor instead.
+func (Conversation_EndOfHistoryTransferType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{83, 0}
 }
 
-type MediaRetryNotification_MediaRetryNotificationResultType int32
+type MediaRetryNotification_ResultType int32
 
 const (
-	MediaRetryNotification_GENERAL_ERROR    MediaRetryNotification_MediaRetryNotificationResultType = 0
-	MediaRetryNotification_SUCCESS          MediaRetryNotification_MediaRetryNotificationResultType = 1
-	MediaRetryNotification_NOT_FOUND        MediaRetryNotification_MediaRetryNotificationResultType = 2
-	MediaRetryNotification_DECRYPTION_ERROR MediaRetryNotification_MediaRetryNotificationResultType = 3
+	MediaRetryNotification_GENERAL_ERROR    MediaRetryNotification_ResultType = 0
+	MediaRetryNotification_SUCCESS          MediaRetryNotification_ResultType = 1
+	MediaRetryNotification_NOT_FOUND        MediaRetryNotification_ResultType = 2
+	MediaRetryNotification_DECRYPTION_ERROR MediaRetryNotification_ResultType = 3
 )
 
-// Enum value maps for MediaRetryNotification_MediaRetryNotificationResultType.
+// Enum value maps for MediaRetryNotification_ResultType.
 var (
-	MediaRetryNotification_MediaRetryNotificationResultType_name = map[int32]string{
+	MediaRetryNotification_ResultType_name = map[int32]string{
 		0: "GENERAL_ERROR",
 		1: "SUCCESS",
 		2: "NOT_FOUND",
 		3: "DECRYPTION_ERROR",
 	}
-	MediaRetryNotification_MediaRetryNotificationResultType_value = map[string]int32{
+	MediaRetryNotification_ResultType_value = map[string]int32{
 		"GENERAL_ERROR":    0,
 		"SUCCESS":          1,
 		"NOT_FOUND":        2,
@@ -1821,677 +1951,677 @@ var (
 	}
 )
 
-func (x MediaRetryNotification_MediaRetryNotificationResultType) Enum() *MediaRetryNotification_MediaRetryNotificationResultType {
-	p := new(MediaRetryNotification_MediaRetryNotificationResultType)
+func (x MediaRetryNotification_ResultType) Enum() *MediaRetryNotification_ResultType {
+	p := new(MediaRetryNotification_ResultType)
 	*p = x
 	return p
 }
 
-func (x MediaRetryNotification_MediaRetryNotificationResultType) String() string {
+func (x MediaRetryNotification_ResultType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (MediaRetryNotification_MediaRetryNotificationResultType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[29].Descriptor()
+func (MediaRetryNotification_ResultType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[31].Descriptor()
 }
 
-func (MediaRetryNotification_MediaRetryNotificationResultType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[29]
+func (MediaRetryNotification_ResultType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[31]
 }
 
-func (x MediaRetryNotification_MediaRetryNotificationResultType) Number() protoreflect.EnumNumber {
+func (x MediaRetryNotification_ResultType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *MediaRetryNotification_MediaRetryNotificationResultType) UnmarshalJSON(b []byte) error {
+func (x *MediaRetryNotification_ResultType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = MediaRetryNotification_MediaRetryNotificationResultType(num)
+	*x = MediaRetryNotification_ResultType(num)
 	return nil
 }
 
-// Deprecated: Use MediaRetryNotification_MediaRetryNotificationResultType.Descriptor instead.
-func (MediaRetryNotification_MediaRetryNotificationResultType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{122, 0}
+// Deprecated: Use MediaRetryNotification_ResultType.Descriptor instead.
+func (MediaRetryNotification_ResultType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{88, 0}
 }
 
-type SyncdMutation_SyncdMutationSyncdOperation int32
+type SyncdMutation_SyncdOperation int32
 
 const (
-	SyncdMutation_SET    SyncdMutation_SyncdMutationSyncdOperation = 0
-	SyncdMutation_REMOVE SyncdMutation_SyncdMutationSyncdOperation = 1
+	SyncdMutation_SET    SyncdMutation_SyncdOperation = 0
+	SyncdMutation_REMOVE SyncdMutation_SyncdOperation = 1
 )
 
-// Enum value maps for SyncdMutation_SyncdMutationSyncdOperation.
+// Enum value maps for SyncdMutation_SyncdOperation.
 var (
-	SyncdMutation_SyncdMutationSyncdOperation_name = map[int32]string{
+	SyncdMutation_SyncdOperation_name = map[int32]string{
 		0: "SET",
 		1: "REMOVE",
 	}
-	SyncdMutation_SyncdMutationSyncdOperation_value = map[string]int32{
+	SyncdMutation_SyncdOperation_value = map[string]int32{
 		"SET":    0,
 		"REMOVE": 1,
 	}
 )
 
-func (x SyncdMutation_SyncdMutationSyncdOperation) Enum() *SyncdMutation_SyncdMutationSyncdOperation {
-	p := new(SyncdMutation_SyncdMutationSyncdOperation)
+func (x SyncdMutation_SyncdOperation) Enum() *SyncdMutation_SyncdOperation {
+	p := new(SyncdMutation_SyncdOperation)
 	*p = x
 	return p
 }
 
-func (x SyncdMutation_SyncdMutationSyncdOperation) String() string {
+func (x SyncdMutation_SyncdOperation) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (SyncdMutation_SyncdMutationSyncdOperation) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[30].Descriptor()
+func (SyncdMutation_SyncdOperation) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[32].Descriptor()
 }
 
-func (SyncdMutation_SyncdMutationSyncdOperation) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[30]
+func (SyncdMutation_SyncdOperation) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[32]
 }
 
-func (x SyncdMutation_SyncdMutationSyncdOperation) Number() protoreflect.EnumNumber {
+func (x SyncdMutation_SyncdOperation) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *SyncdMutation_SyncdMutationSyncdOperation) UnmarshalJSON(b []byte) error {
+func (x *SyncdMutation_SyncdOperation) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = SyncdMutation_SyncdMutationSyncdOperation(num)
+	*x = SyncdMutation_SyncdOperation(num)
 	return nil
 }
 
-// Deprecated: Use SyncdMutation_SyncdMutationSyncdOperation.Descriptor instead.
-func (SyncdMutation_SyncdMutationSyncdOperation) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{130, 0}
+// Deprecated: Use SyncdMutation_SyncdOperation.Descriptor instead.
+func (SyncdMutation_SyncdOperation) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{96, 0}
 }
 
-type BizIdentityInfo_BizIdentityInfoVerifiedLevelValue int32
+type BizIdentityInfo_VerifiedLevelValue int32
 
 const (
-	BizIdentityInfo_UNKNOWN BizIdentityInfo_BizIdentityInfoVerifiedLevelValue = 0
-	BizIdentityInfo_LOW     BizIdentityInfo_BizIdentityInfoVerifiedLevelValue = 1
-	BizIdentityInfo_HIGH    BizIdentityInfo_BizIdentityInfoVerifiedLevelValue = 2
+	BizIdentityInfo_UNKNOWN BizIdentityInfo_VerifiedLevelValue = 0
+	BizIdentityInfo_LOW     BizIdentityInfo_VerifiedLevelValue = 1
+	BizIdentityInfo_HIGH    BizIdentityInfo_VerifiedLevelValue = 2
 )
 
-// Enum value maps for BizIdentityInfo_BizIdentityInfoVerifiedLevelValue.
+// Enum value maps for BizIdentityInfo_VerifiedLevelValue.
 var (
-	BizIdentityInfo_BizIdentityInfoVerifiedLevelValue_name = map[int32]string{
+	BizIdentityInfo_VerifiedLevelValue_name = map[int32]string{
 		0: "UNKNOWN",
 		1: "LOW",
 		2: "HIGH",
 	}
-	BizIdentityInfo_BizIdentityInfoVerifiedLevelValue_value = map[string]int32{
+	BizIdentityInfo_VerifiedLevelValue_value = map[string]int32{
 		"UNKNOWN": 0,
 		"LOW":     1,
 		"HIGH":    2,
 	}
 )
 
-func (x BizIdentityInfo_BizIdentityInfoVerifiedLevelValue) Enum() *BizIdentityInfo_BizIdentityInfoVerifiedLevelValue {
-	p := new(BizIdentityInfo_BizIdentityInfoVerifiedLevelValue)
+func (x BizIdentityInfo_VerifiedLevelValue) Enum() *BizIdentityInfo_VerifiedLevelValue {
+	p := new(BizIdentityInfo_VerifiedLevelValue)
 	*p = x
 	return p
 }
 
-func (x BizIdentityInfo_BizIdentityInfoVerifiedLevelValue) String() string {
+func (x BizIdentityInfo_VerifiedLevelValue) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (BizIdentityInfo_BizIdentityInfoVerifiedLevelValue) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[31].Descriptor()
+func (BizIdentityInfo_VerifiedLevelValue) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[33].Descriptor()
 }
 
-func (BizIdentityInfo_BizIdentityInfoVerifiedLevelValue) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[31]
+func (BizIdentityInfo_VerifiedLevelValue) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[33]
 }
 
-func (x BizIdentityInfo_BizIdentityInfoVerifiedLevelValue) Number() protoreflect.EnumNumber {
+func (x BizIdentityInfo_VerifiedLevelValue) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *BizIdentityInfo_BizIdentityInfoVerifiedLevelValue) UnmarshalJSON(b []byte) error {
+func (x *BizIdentityInfo_VerifiedLevelValue) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = BizIdentityInfo_BizIdentityInfoVerifiedLevelValue(num)
+	*x = BizIdentityInfo_VerifiedLevelValue(num)
 	return nil
 }
 
-// Deprecated: Use BizIdentityInfo_BizIdentityInfoVerifiedLevelValue.Descriptor instead.
-func (BizIdentityInfo_BizIdentityInfoVerifiedLevelValue) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{171, 0}
+// Deprecated: Use BizIdentityInfo_VerifiedLevelValue.Descriptor instead.
+func (BizIdentityInfo_VerifiedLevelValue) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{135, 0}
 }
 
-type BizIdentityInfo_BizIdentityInfoHostStorageType int32
+type BizIdentityInfo_HostStorageType int32
 
 const (
-	BizIdentityInfo_ON_PREMISE BizIdentityInfo_BizIdentityInfoHostStorageType = 0
-	BizIdentityInfo_FACEBOOK   BizIdentityInfo_BizIdentityInfoHostStorageType = 1
+	BizIdentityInfo_ON_PREMISE BizIdentityInfo_HostStorageType = 0
+	BizIdentityInfo_FACEBOOK   BizIdentityInfo_HostStorageType = 1
 )
 
-// Enum value maps for BizIdentityInfo_BizIdentityInfoHostStorageType.
+// Enum value maps for BizIdentityInfo_HostStorageType.
 var (
-	BizIdentityInfo_BizIdentityInfoHostStorageType_name = map[int32]string{
+	BizIdentityInfo_HostStorageType_name = map[int32]string{
 		0: "ON_PREMISE",
 		1: "FACEBOOK",
 	}
-	BizIdentityInfo_BizIdentityInfoHostStorageType_value = map[string]int32{
+	BizIdentityInfo_HostStorageType_value = map[string]int32{
 		"ON_PREMISE": 0,
 		"FACEBOOK":   1,
 	}
 )
 
-func (x BizIdentityInfo_BizIdentityInfoHostStorageType) Enum() *BizIdentityInfo_BizIdentityInfoHostStorageType {
-	p := new(BizIdentityInfo_BizIdentityInfoHostStorageType)
+func (x BizIdentityInfo_HostStorageType) Enum() *BizIdentityInfo_HostStorageType {
+	p := new(BizIdentityInfo_HostStorageType)
 	*p = x
 	return p
 }
 
-func (x BizIdentityInfo_BizIdentityInfoHostStorageType) String() string {
+func (x BizIdentityInfo_HostStorageType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (BizIdentityInfo_BizIdentityInfoHostStorageType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[32].Descriptor()
+func (BizIdentityInfo_HostStorageType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[34].Descriptor()
 }
 
-func (BizIdentityInfo_BizIdentityInfoHostStorageType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[32]
+func (BizIdentityInfo_HostStorageType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[34]
 }
 
-func (x BizIdentityInfo_BizIdentityInfoHostStorageType) Number() protoreflect.EnumNumber {
+func (x BizIdentityInfo_HostStorageType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *BizIdentityInfo_BizIdentityInfoHostStorageType) UnmarshalJSON(b []byte) error {
+func (x *BizIdentityInfo_HostStorageType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = BizIdentityInfo_BizIdentityInfoHostStorageType(num)
+	*x = BizIdentityInfo_HostStorageType(num)
 	return nil
 }
 
-// Deprecated: Use BizIdentityInfo_BizIdentityInfoHostStorageType.Descriptor instead.
-func (BizIdentityInfo_BizIdentityInfoHostStorageType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{171, 1}
+// Deprecated: Use BizIdentityInfo_HostStorageType.Descriptor instead.
+func (BizIdentityInfo_HostStorageType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{135, 1}
 }
 
-type BizIdentityInfo_BizIdentityInfoActualActorsType int32
+type BizIdentityInfo_ActualActorsType int32
 
 const (
-	BizIdentityInfo_SELF BizIdentityInfo_BizIdentityInfoActualActorsType = 0
-	BizIdentityInfo_BSP  BizIdentityInfo_BizIdentityInfoActualActorsType = 1
+	BizIdentityInfo_SELF BizIdentityInfo_ActualActorsType = 0
+	BizIdentityInfo_BSP  BizIdentityInfo_ActualActorsType = 1
 )
 
-// Enum value maps for BizIdentityInfo_BizIdentityInfoActualActorsType.
+// Enum value maps for BizIdentityInfo_ActualActorsType.
 var (
-	BizIdentityInfo_BizIdentityInfoActualActorsType_name = map[int32]string{
+	BizIdentityInfo_ActualActorsType_name = map[int32]string{
 		0: "SELF",
 		1: "BSP",
 	}
-	BizIdentityInfo_BizIdentityInfoActualActorsType_value = map[string]int32{
+	BizIdentityInfo_ActualActorsType_value = map[string]int32{
 		"SELF": 0,
 		"BSP":  1,
 	}
 )
 
-func (x BizIdentityInfo_BizIdentityInfoActualActorsType) Enum() *BizIdentityInfo_BizIdentityInfoActualActorsType {
-	p := new(BizIdentityInfo_BizIdentityInfoActualActorsType)
+func (x BizIdentityInfo_ActualActorsType) Enum() *BizIdentityInfo_ActualActorsType {
+	p := new(BizIdentityInfo_ActualActorsType)
 	*p = x
 	return p
 }
 
-func (x BizIdentityInfo_BizIdentityInfoActualActorsType) String() string {
+func (x BizIdentityInfo_ActualActorsType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (BizIdentityInfo_BizIdentityInfoActualActorsType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[33].Descriptor()
+func (BizIdentityInfo_ActualActorsType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[35].Descriptor()
 }
 
-func (BizIdentityInfo_BizIdentityInfoActualActorsType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[33]
+func (BizIdentityInfo_ActualActorsType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[35]
 }
 
-func (x BizIdentityInfo_BizIdentityInfoActualActorsType) Number() protoreflect.EnumNumber {
+func (x BizIdentityInfo_ActualActorsType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *BizIdentityInfo_BizIdentityInfoActualActorsType) UnmarshalJSON(b []byte) error {
+func (x *BizIdentityInfo_ActualActorsType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = BizIdentityInfo_BizIdentityInfoActualActorsType(num)
+	*x = BizIdentityInfo_ActualActorsType(num)
 	return nil
 }
 
-// Deprecated: Use BizIdentityInfo_BizIdentityInfoActualActorsType.Descriptor instead.
-func (BizIdentityInfo_BizIdentityInfoActualActorsType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{171, 2}
+// Deprecated: Use BizIdentityInfo_ActualActorsType.Descriptor instead.
+func (BizIdentityInfo_ActualActorsType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{135, 2}
 }
 
-type BizAccountLinkInfo_BizAccountLinkInfoHostStorageType int32
+type BizAccountLinkInfo_HostStorageType int32
 
 const (
-	BizAccountLinkInfo_ON_PREMISE BizAccountLinkInfo_BizAccountLinkInfoHostStorageType = 0
-	BizAccountLinkInfo_FACEBOOK   BizAccountLinkInfo_BizAccountLinkInfoHostStorageType = 1
+	BizAccountLinkInfo_ON_PREMISE BizAccountLinkInfo_HostStorageType = 0
+	BizAccountLinkInfo_FACEBOOK   BizAccountLinkInfo_HostStorageType = 1
 )
 
-// Enum value maps for BizAccountLinkInfo_BizAccountLinkInfoHostStorageType.
+// Enum value maps for BizAccountLinkInfo_HostStorageType.
 var (
-	BizAccountLinkInfo_BizAccountLinkInfoHostStorageType_name = map[int32]string{
+	BizAccountLinkInfo_HostStorageType_name = map[int32]string{
 		0: "ON_PREMISE",
 		1: "FACEBOOK",
 	}
-	BizAccountLinkInfo_BizAccountLinkInfoHostStorageType_value = map[string]int32{
+	BizAccountLinkInfo_HostStorageType_value = map[string]int32{
 		"ON_PREMISE": 0,
 		"FACEBOOK":   1,
 	}
 )
 
-func (x BizAccountLinkInfo_BizAccountLinkInfoHostStorageType) Enum() *BizAccountLinkInfo_BizAccountLinkInfoHostStorageType {
-	p := new(BizAccountLinkInfo_BizAccountLinkInfoHostStorageType)
+func (x BizAccountLinkInfo_HostStorageType) Enum() *BizAccountLinkInfo_HostStorageType {
+	p := new(BizAccountLinkInfo_HostStorageType)
 	*p = x
 	return p
 }
 
-func (x BizAccountLinkInfo_BizAccountLinkInfoHostStorageType) String() string {
+func (x BizAccountLinkInfo_HostStorageType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (BizAccountLinkInfo_BizAccountLinkInfoHostStorageType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[34].Descriptor()
+func (BizAccountLinkInfo_HostStorageType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[36].Descriptor()
 }
 
-func (BizAccountLinkInfo_BizAccountLinkInfoHostStorageType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[34]
+func (BizAccountLinkInfo_HostStorageType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[36]
 }
 
-func (x BizAccountLinkInfo_BizAccountLinkInfoHostStorageType) Number() protoreflect.EnumNumber {
+func (x BizAccountLinkInfo_HostStorageType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *BizAccountLinkInfo_BizAccountLinkInfoHostStorageType) UnmarshalJSON(b []byte) error {
+func (x *BizAccountLinkInfo_HostStorageType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = BizAccountLinkInfo_BizAccountLinkInfoHostStorageType(num)
+	*x = BizAccountLinkInfo_HostStorageType(num)
 	return nil
 }
 
-// Deprecated: Use BizAccountLinkInfo_BizAccountLinkInfoHostStorageType.Descriptor instead.
-func (BizAccountLinkInfo_BizAccountLinkInfoHostStorageType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{173, 0}
+// Deprecated: Use BizAccountLinkInfo_HostStorageType.Descriptor instead.
+func (BizAccountLinkInfo_HostStorageType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{137, 0}
 }
 
-type BizAccountLinkInfo_BizAccountLinkInfoAccountType int32
+type BizAccountLinkInfo_AccountType int32
 
 const (
-	BizAccountLinkInfo_ENTERPRISE BizAccountLinkInfo_BizAccountLinkInfoAccountType = 0
+	BizAccountLinkInfo_ENTERPRISE BizAccountLinkInfo_AccountType = 0
 )
 
-// Enum value maps for BizAccountLinkInfo_BizAccountLinkInfoAccountType.
+// Enum value maps for BizAccountLinkInfo_AccountType.
 var (
-	BizAccountLinkInfo_BizAccountLinkInfoAccountType_name = map[int32]string{
+	BizAccountLinkInfo_AccountType_name = map[int32]string{
 		0: "ENTERPRISE",
 	}
-	BizAccountLinkInfo_BizAccountLinkInfoAccountType_value = map[string]int32{
+	BizAccountLinkInfo_AccountType_value = map[string]int32{
 		"ENTERPRISE": 0,
 	}
 )
 
-func (x BizAccountLinkInfo_BizAccountLinkInfoAccountType) Enum() *BizAccountLinkInfo_BizAccountLinkInfoAccountType {
-	p := new(BizAccountLinkInfo_BizAccountLinkInfoAccountType)
+func (x BizAccountLinkInfo_AccountType) Enum() *BizAccountLinkInfo_AccountType {
+	p := new(BizAccountLinkInfo_AccountType)
 	*p = x
 	return p
 }
 
-func (x BizAccountLinkInfo_BizAccountLinkInfoAccountType) String() string {
+func (x BizAccountLinkInfo_AccountType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (BizAccountLinkInfo_BizAccountLinkInfoAccountType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[35].Descriptor()
+func (BizAccountLinkInfo_AccountType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[37].Descriptor()
 }
 
-func (BizAccountLinkInfo_BizAccountLinkInfoAccountType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[35]
+func (BizAccountLinkInfo_AccountType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[37]
 }
 
-func (x BizAccountLinkInfo_BizAccountLinkInfoAccountType) Number() protoreflect.EnumNumber {
+func (x BizAccountLinkInfo_AccountType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *BizAccountLinkInfo_BizAccountLinkInfoAccountType) UnmarshalJSON(b []byte) error {
+func (x *BizAccountLinkInfo_AccountType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = BizAccountLinkInfo_BizAccountLinkInfoAccountType(num)
+	*x = BizAccountLinkInfo_AccountType(num)
 	return nil
 }
 
-// Deprecated: Use BizAccountLinkInfo_BizAccountLinkInfoAccountType.Descriptor instead.
-func (BizAccountLinkInfo_BizAccountLinkInfoAccountType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{173, 1}
+// Deprecated: Use BizAccountLinkInfo_AccountType.Descriptor instead.
+func (BizAccountLinkInfo_AccountType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{137, 1}
 }
 
-type ClientPayload_ClientPayloadConnectType int32
+type ClientPayload_Product int32
 
 const (
-	ClientPayload_CELLULAR_UNKNOWN ClientPayload_ClientPayloadConnectType = 0
-	ClientPayload_WIFI_UNKNOWN     ClientPayload_ClientPayloadConnectType = 1
-	ClientPayload_CELLULAR_EDGE    ClientPayload_ClientPayloadConnectType = 100
-	ClientPayload_CELLULAR_IDEN    ClientPayload_ClientPayloadConnectType = 101
-	ClientPayload_CELLULAR_UMTS    ClientPayload_ClientPayloadConnectType = 102
-	ClientPayload_CELLULAR_EVDO    ClientPayload_ClientPayloadConnectType = 103
-	ClientPayload_CELLULAR_GPRS    ClientPayload_ClientPayloadConnectType = 104
-	ClientPayload_CELLULAR_HSDPA   ClientPayload_ClientPayloadConnectType = 105
-	ClientPayload_CELLULAR_HSUPA   ClientPayload_ClientPayloadConnectType = 106
-	ClientPayload_CELLULAR_HSPA    ClientPayload_ClientPayloadConnectType = 107
-	ClientPayload_CELLULAR_CDMA    ClientPayload_ClientPayloadConnectType = 108
-	ClientPayload_CELLULAR_1XRTT   ClientPayload_ClientPayloadConnectType = 109
-	ClientPayload_CELLULAR_EHRPD   ClientPayload_ClientPayloadConnectType = 110
-	ClientPayload_CELLULAR_LTE     ClientPayload_ClientPayloadConnectType = 111
-	ClientPayload_CELLULAR_HSPAP   ClientPayload_ClientPayloadConnectType = 112
+	ClientPayload_WHATSAPP  ClientPayload_Product = 0
+	ClientPayload_MESSENGER ClientPayload_Product = 1
 )
 
-// Enum value maps for ClientPayload_ClientPayloadConnectType.
+// Enum value maps for ClientPayload_Product.
 var (
-	ClientPayload_ClientPayloadConnectType_name = map[int32]string{
-		0:   "CELLULAR_UNKNOWN",
-		1:   "WIFI_UNKNOWN",
-		100: "CELLULAR_EDGE",
-		101: "CELLULAR_IDEN",
-		102: "CELLULAR_UMTS",
-		103: "CELLULAR_EVDO",
-		104: "CELLULAR_GPRS",
-		105: "CELLULAR_HSDPA",
-		106: "CELLULAR_HSUPA",
-		107: "CELLULAR_HSPA",
-		108: "CELLULAR_CDMA",
-		109: "CELLULAR_1XRTT",
-		110: "CELLULAR_EHRPD",
-		111: "CELLULAR_LTE",
-		112: "CELLULAR_HSPAP",
+	ClientPayload_Product_name = map[int32]string{
+		0: "WHATSAPP",
+		1: "MESSENGER",
 	}
-	ClientPayload_ClientPayloadConnectType_value = map[string]int32{
-		"CELLULAR_UNKNOWN": 0,
-		"WIFI_UNKNOWN":     1,
-		"CELLULAR_EDGE":    100,
-		"CELLULAR_IDEN":    101,
-		"CELLULAR_UMTS":    102,
-		"CELLULAR_EVDO":    103,
-		"CELLULAR_GPRS":    104,
-		"CELLULAR_HSDPA":   105,
-		"CELLULAR_HSUPA":   106,
-		"CELLULAR_HSPA":    107,
-		"CELLULAR_CDMA":    108,
-		"CELLULAR_1XRTT":   109,
-		"CELLULAR_EHRPD":   110,
-		"CELLULAR_LTE":     111,
-		"CELLULAR_HSPAP":   112,
+	ClientPayload_Product_value = map[string]int32{
+		"WHATSAPP":  0,
+		"MESSENGER": 1,
 	}
 )
 
-func (x ClientPayload_ClientPayloadConnectType) Enum() *ClientPayload_ClientPayloadConnectType {
-	p := new(ClientPayload_ClientPayloadConnectType)
+func (x ClientPayload_Product) Enum() *ClientPayload_Product {
+	p := new(ClientPayload_Product)
 	*p = x
 	return p
 }
 
-func (x ClientPayload_ClientPayloadConnectType) String() string {
+func (x ClientPayload_Product) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ClientPayload_ClientPayloadConnectType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[36].Descriptor()
+func (ClientPayload_Product) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[38].Descriptor()
 }
 
-func (ClientPayload_ClientPayloadConnectType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[36]
+func (ClientPayload_Product) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[38]
 }
 
-func (x ClientPayload_ClientPayloadConnectType) Number() protoreflect.EnumNumber {
+func (x ClientPayload_Product) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ClientPayload_ClientPayloadConnectType) UnmarshalJSON(b []byte) error {
+func (x *ClientPayload_Product) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ClientPayload_ClientPayloadConnectType(num)
+	*x = ClientPayload_Product(num)
 	return nil
 }
 
-// Deprecated: Use ClientPayload_ClientPayloadConnectType.Descriptor instead.
-func (ClientPayload_ClientPayloadConnectType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{178, 0}
+// Deprecated: Use ClientPayload_Product.Descriptor instead.
+func (ClientPayload_Product) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 0}
 }
 
-type ClientPayload_ClientPayloadConnectReason int32
+type ClientPayload_IOSAppExtension int32
 
 const (
-	ClientPayload_PUSH            ClientPayload_ClientPayloadConnectReason = 0
-	ClientPayload_USER_ACTIVATED  ClientPayload_ClientPayloadConnectReason = 1
-	ClientPayload_SCHEDULED       ClientPayload_ClientPayloadConnectReason = 2
-	ClientPayload_ERROR_RECONNECT ClientPayload_ClientPayloadConnectReason = 3
-	ClientPayload_NETWORK_SWITCH  ClientPayload_ClientPayloadConnectReason = 4
-	ClientPayload_PING_RECONNECT  ClientPayload_ClientPayloadConnectReason = 5
+	ClientPayload_SHARE_EXTENSION   ClientPayload_IOSAppExtension = 0
+	ClientPayload_SERVICE_EXTENSION ClientPayload_IOSAppExtension = 1
+	ClientPayload_INTENTS_EXTENSION ClientPayload_IOSAppExtension = 2
 )
 
-// Enum value maps for ClientPayload_ClientPayloadConnectReason.
+// Enum value maps for ClientPayload_IOSAppExtension.
 var (
-	ClientPayload_ClientPayloadConnectReason_name = map[int32]string{
-		0: "PUSH",
-		1: "USER_ACTIVATED",
-		2: "SCHEDULED",
-		3: "ERROR_RECONNECT",
-		4: "NETWORK_SWITCH",
-		5: "PING_RECONNECT",
+	ClientPayload_IOSAppExtension_name = map[int32]string{
+		0: "SHARE_EXTENSION",
+		1: "SERVICE_EXTENSION",
+		2: "INTENTS_EXTENSION",
 	}
-	ClientPayload_ClientPayloadConnectReason_value = map[string]int32{
-		"PUSH":            0,
-		"USER_ACTIVATED":  1,
-		"SCHEDULED":       2,
-		"ERROR_RECONNECT": 3,
-		"NETWORK_SWITCH":  4,
-		"PING_RECONNECT":  5,
+	ClientPayload_IOSAppExtension_value = map[string]int32{
+		"SHARE_EXTENSION":   0,
+		"SERVICE_EXTENSION": 1,
+		"INTENTS_EXTENSION": 2,
 	}
 )
 
-func (x ClientPayload_ClientPayloadConnectReason) Enum() *ClientPayload_ClientPayloadConnectReason {
-	p := new(ClientPayload_ClientPayloadConnectReason)
+func (x ClientPayload_IOSAppExtension) Enum() *ClientPayload_IOSAppExtension {
+	p := new(ClientPayload_IOSAppExtension)
 	*p = x
 	return p
 }
 
-func (x ClientPayload_ClientPayloadConnectReason) String() string {
+func (x ClientPayload_IOSAppExtension) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ClientPayload_ClientPayloadConnectReason) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[37].Descriptor()
+func (ClientPayload_IOSAppExtension) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[39].Descriptor()
 }
 
-func (ClientPayload_ClientPayloadConnectReason) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[37]
+func (ClientPayload_IOSAppExtension) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[39]
 }
 
-func (x ClientPayload_ClientPayloadConnectReason) Number() protoreflect.EnumNumber {
+func (x ClientPayload_IOSAppExtension) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ClientPayload_ClientPayloadConnectReason) UnmarshalJSON(b []byte) error {
+func (x *ClientPayload_IOSAppExtension) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ClientPayload_ClientPayloadConnectReason(num)
+	*x = ClientPayload_IOSAppExtension(num)
 	return nil
 }
 
-// Deprecated: Use ClientPayload_ClientPayloadConnectReason.Descriptor instead.
-func (ClientPayload_ClientPayloadConnectReason) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{178, 1}
+// Deprecated: Use ClientPayload_IOSAppExtension.Descriptor instead.
+func (ClientPayload_IOSAppExtension) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 1}
 }
 
-type ClientPayload_ClientPayloadProduct int32
+type ClientPayload_ConnectType int32
 
 const (
-	ClientPayload_WHATSAPP  ClientPayload_ClientPayloadProduct = 0
-	ClientPayload_MESSENGER ClientPayload_ClientPayloadProduct = 1
+	ClientPayload_CELLULAR_UNKNOWN ClientPayload_ConnectType = 0
+	ClientPayload_WIFI_UNKNOWN     ClientPayload_ConnectType = 1
+	ClientPayload_CELLULAR_EDGE    ClientPayload_ConnectType = 100
+	ClientPayload_CELLULAR_IDEN    ClientPayload_ConnectType = 101
+	ClientPayload_CELLULAR_UMTS    ClientPayload_ConnectType = 102
+	ClientPayload_CELLULAR_EVDO    ClientPayload_ConnectType = 103
+	ClientPayload_CELLULAR_GPRS    ClientPayload_ConnectType = 104
+	ClientPayload_CELLULAR_HSDPA   ClientPayload_ConnectType = 105
+	ClientPayload_CELLULAR_HSUPA   ClientPayload_ConnectType = 106
+	ClientPayload_CELLULAR_HSPA    ClientPayload_ConnectType = 107
+	ClientPayload_CELLULAR_CDMA    ClientPayload_ConnectType = 108
+	ClientPayload_CELLULAR_1XRTT   ClientPayload_ConnectType = 109
+	ClientPayload_CELLULAR_EHRPD   ClientPayload_ConnectType = 110
+	ClientPayload_CELLULAR_LTE     ClientPayload_ConnectType = 111
+	ClientPayload_CELLULAR_HSPAP   ClientPayload_ConnectType = 112
 )
 
-// Enum value maps for ClientPayload_ClientPayloadProduct.
+// Enum value maps for ClientPayload_ConnectType.
 var (
-	ClientPayload_ClientPayloadProduct_name = map[int32]string{
-		0: "WHATSAPP",
-		1: "MESSENGER",
+	ClientPayload_ConnectType_name = map[int32]string{
+		0:   "CELLULAR_UNKNOWN",
+		1:   "WIFI_UNKNOWN",
+		100: "CELLULAR_EDGE",
+		101: "CELLULAR_IDEN",
+		102: "CELLULAR_UMTS",
+		103: "CELLULAR_EVDO",
+		104: "CELLULAR_GPRS",
+		105: "CELLULAR_HSDPA",
+		106: "CELLULAR_HSUPA",
+		107: "CELLULAR_HSPA",
+		108: "CELLULAR_CDMA",
+		109: "CELLULAR_1XRTT",
+		110: "CELLULAR_EHRPD",
+		111: "CELLULAR_LTE",
+		112: "CELLULAR_HSPAP",
 	}
-	ClientPayload_ClientPayloadProduct_value = map[string]int32{
-		"WHATSAPP":  0,
-		"MESSENGER": 1,
+	ClientPayload_ConnectType_value = map[string]int32{
+		"CELLULAR_UNKNOWN": 0,
+		"WIFI_UNKNOWN":     1,
+		"CELLULAR_EDGE":    100,
+		"CELLULAR_IDEN":    101,
+		"CELLULAR_UMTS":    102,
+		"CELLULAR_EVDO":    103,
+		"CELLULAR_GPRS":    104,
+		"CELLULAR_HSDPA":   105,
+		"CELLULAR_HSUPA":   106,
+		"CELLULAR_HSPA":    107,
+		"CELLULAR_CDMA":    108,
+		"CELLULAR_1XRTT":   109,
+		"CELLULAR_EHRPD":   110,
+		"CELLULAR_LTE":     111,
+		"CELLULAR_HSPAP":   112,
 	}
 )
 
-func (x ClientPayload_ClientPayloadProduct) Enum() *ClientPayload_ClientPayloadProduct {
-	p := new(ClientPayload_ClientPayloadProduct)
+func (x ClientPayload_ConnectType) Enum() *ClientPayload_ConnectType {
+	p := new(ClientPayload_ConnectType)
 	*p = x
 	return p
 }
 
-func (x ClientPayload_ClientPayloadProduct) String() string {
+func (x ClientPayload_ConnectType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ClientPayload_ClientPayloadProduct) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[38].Descriptor()
+func (ClientPayload_ConnectType) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[40].Descriptor()
 }
 
-func (ClientPayload_ClientPayloadProduct) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[38]
+func (ClientPayload_ConnectType) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[40]
 }
 
-func (x ClientPayload_ClientPayloadProduct) Number() protoreflect.EnumNumber {
+func (x ClientPayload_ConnectType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ClientPayload_ClientPayloadProduct) UnmarshalJSON(b []byte) error {
+func (x *ClientPayload_ConnectType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ClientPayload_ClientPayloadProduct(num)
+	*x = ClientPayload_ConnectType(num)
 	return nil
 }
 
-// Deprecated: Use ClientPayload_ClientPayloadProduct.Descriptor instead.
-func (ClientPayload_ClientPayloadProduct) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{178, 2}
+// Deprecated: Use ClientPayload_ConnectType.Descriptor instead.
+func (ClientPayload_ConnectType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 2}
 }
 
-type ClientPayload_ClientPayloadIOSAppExtension int32
+type ClientPayload_ConnectReason int32
 
 const (
-	ClientPayload_SHARE_EXTENSION   ClientPayload_ClientPayloadIOSAppExtension = 0
-	ClientPayload_SERVICE_EXTENSION ClientPayload_ClientPayloadIOSAppExtension = 1
-	ClientPayload_INTENTS_EXTENSION ClientPayload_ClientPayloadIOSAppExtension = 2
+	ClientPayload_PUSH            ClientPayload_ConnectReason = 0
+	ClientPayload_USER_ACTIVATED  ClientPayload_ConnectReason = 1
+	ClientPayload_SCHEDULED       ClientPayload_ConnectReason = 2
+	ClientPayload_ERROR_RECONNECT ClientPayload_ConnectReason = 3
+	ClientPayload_NETWORK_SWITCH  ClientPayload_ConnectReason = 4
+	ClientPayload_PING_RECONNECT  ClientPayload_ConnectReason = 5
 )
 
-// Enum value maps for ClientPayload_ClientPayloadIOSAppExtension.
+// Enum value maps for ClientPayload_ConnectReason.
 var (
-	ClientPayload_ClientPayloadIOSAppExtension_name = map[int32]string{
-		0: "SHARE_EXTENSION",
-		1: "SERVICE_EXTENSION",
-		2: "INTENTS_EXTENSION",
+	ClientPayload_ConnectReason_name = map[int32]string{
+		0: "PUSH",
+		1: "USER_ACTIVATED",
+		2: "SCHEDULED",
+		3: "ERROR_RECONNECT",
+		4: "NETWORK_SWITCH",
+		5: "PING_RECONNECT",
 	}
-	ClientPayload_ClientPayloadIOSAppExtension_value = map[string]int32{
-		"SHARE_EXTENSION":   0,
-		"SERVICE_EXTENSION": 1,
-		"INTENTS_EXTENSION": 2,
+	ClientPayload_ConnectReason_value = map[string]int32{
+		"PUSH":            0,
+		"USER_ACTIVATED":  1,
+		"SCHEDULED":       2,
+		"ERROR_RECONNECT": 3,
+		"NETWORK_SWITCH":  4,
+		"PING_RECONNECT":  5,
 	}
 )
 
-func (x ClientPayload_ClientPayloadIOSAppExtension) Enum() *ClientPayload_ClientPayloadIOSAppExtension {
-	p := new(ClientPayload_ClientPayloadIOSAppExtension)
+func (x ClientPayload_ConnectReason) Enum() *ClientPayload_ConnectReason {
+	p := new(ClientPayload_ConnectReason)
 	*p = x
 	return p
 }
 
-func (x ClientPayload_ClientPayloadIOSAppExtension) String() string {
+func (x ClientPayload_ConnectReason) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (ClientPayload_ClientPayloadIOSAppExtension) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[39].Descriptor()
+func (ClientPayload_ConnectReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[41].Descriptor()
 }
 
-func (ClientPayload_ClientPayloadIOSAppExtension) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[39]
+func (ClientPayload_ConnectReason) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[41]
 }
 
-func (x ClientPayload_ClientPayloadIOSAppExtension) Number() protoreflect.EnumNumber {
+func (x ClientPayload_ConnectReason) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *ClientPayload_ClientPayloadIOSAppExtension) UnmarshalJSON(b []byte) error {
+func (x *ClientPayload_ConnectReason) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = ClientPayload_ClientPayloadIOSAppExtension(num)
+	*x = ClientPayload_ConnectReason(num)
 	return nil
 }
 
-// Deprecated: Use ClientPayload_ClientPayloadIOSAppExtension.Descriptor instead.
-func (ClientPayload_ClientPayloadIOSAppExtension) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{178, 3}
+// Deprecated: Use ClientPayload_ConnectReason.Descriptor instead.
+func (ClientPayload_ConnectReason) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 3}
 }
 
-type WebInfo_WebInfoWebSubPlatform int32
+type ClientPayload_WebInfo_WebSubPlatform int32
 
 const (
-	WebInfo_WEB_BROWSER WebInfo_WebInfoWebSubPlatform = 0
-	WebInfo_APP_STORE   WebInfo_WebInfoWebSubPlatform = 1
-	WebInfo_WIN_STORE   WebInfo_WebInfoWebSubPlatform = 2
-	WebInfo_DARWIN      WebInfo_WebInfoWebSubPlatform = 3
-	WebInfo_WIN32       WebInfo_WebInfoWebSubPlatform = 4
+	ClientPayload_WebInfo_WEB_BROWSER ClientPayload_WebInfo_WebSubPlatform = 0
+	ClientPayload_WebInfo_APP_STORE   ClientPayload_WebInfo_WebSubPlatform = 1
+	ClientPayload_WebInfo_WIN_STORE   ClientPayload_WebInfo_WebSubPlatform = 2
+	ClientPayload_WebInfo_DARWIN      ClientPayload_WebInfo_WebSubPlatform = 3
+	ClientPayload_WebInfo_WIN32       ClientPayload_WebInfo_WebSubPlatform = 4
 )
 
-// Enum value maps for WebInfo_WebInfoWebSubPlatform.
+// Enum value maps for ClientPayload_WebInfo_WebSubPlatform.
 var (
-	WebInfo_WebInfoWebSubPlatform_name = map[int32]string{
+	ClientPayload_WebInfo_WebSubPlatform_name = map[int32]string{
 		0: "WEB_BROWSER",
 		1: "APP_STORE",
 		2: "WIN_STORE",
 		3: "DARWIN",
 		4: "WIN32",
 	}
-	WebInfo_WebInfoWebSubPlatform_value = map[string]int32{
+	ClientPayload_WebInfo_WebSubPlatform_value = map[string]int32{
 		"WEB_BROWSER": 0,
 		"APP_STORE":   1,
 		"WIN_STORE":   2,
@@ -2500,80 +2630,142 @@ var (
 	}
 )
 
-func (x WebInfo_WebInfoWebSubPlatform) Enum() *WebInfo_WebInfoWebSubPlatform {
-	p := new(WebInfo_WebInfoWebSubPlatform)
+func (x ClientPayload_WebInfo_WebSubPlatform) Enum() *ClientPayload_WebInfo_WebSubPlatform {
+	p := new(ClientPayload_WebInfo_WebSubPlatform)
 	*p = x
 	return p
 }
 
-func (x WebInfo_WebInfoWebSubPlatform) String() string {
+func (x ClientPayload_WebInfo_WebSubPlatform) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (WebInfo_WebInfoWebSubPlatform) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[40].Descriptor()
+func (ClientPayload_WebInfo_WebSubPlatform) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[42].Descriptor()
 }
 
-func (WebInfo_WebInfoWebSubPlatform) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[40]
+func (ClientPayload_WebInfo_WebSubPlatform) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[42]
+}
+
+func (x ClientPayload_WebInfo_WebSubPlatform) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *ClientPayload_WebInfo_WebSubPlatform) UnmarshalJSON(b []byte) error {
+	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+	if err != nil {
+		return err
+	}
+	*x = ClientPayload_WebInfo_WebSubPlatform(num)
+	return nil
+}
+
+// Deprecated: Use ClientPayload_WebInfo_WebSubPlatform.Descriptor instead.
+func (ClientPayload_WebInfo_WebSubPlatform) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 0, 0}
+}
+
+type ClientPayload_UserAgent_ReleaseChannel int32
+
+const (
+	ClientPayload_UserAgent_RELEASE ClientPayload_UserAgent_ReleaseChannel = 0
+	ClientPayload_UserAgent_BETA    ClientPayload_UserAgent_ReleaseChannel = 1
+	ClientPayload_UserAgent_ALPHA   ClientPayload_UserAgent_ReleaseChannel = 2
+	ClientPayload_UserAgent_DEBUG   ClientPayload_UserAgent_ReleaseChannel = 3
+)
+
+// Enum value maps for ClientPayload_UserAgent_ReleaseChannel.
+var (
+	ClientPayload_UserAgent_ReleaseChannel_name = map[int32]string{
+		0: "RELEASE",
+		1: "BETA",
+		2: "ALPHA",
+		3: "DEBUG",
+	}
+	ClientPayload_UserAgent_ReleaseChannel_value = map[string]int32{
+		"RELEASE": 0,
+		"BETA":    1,
+		"ALPHA":   2,
+		"DEBUG":   3,
+	}
+)
+
+func (x ClientPayload_UserAgent_ReleaseChannel) Enum() *ClientPayload_UserAgent_ReleaseChannel {
+	p := new(ClientPayload_UserAgent_ReleaseChannel)
+	*p = x
+	return p
+}
+
+func (x ClientPayload_UserAgent_ReleaseChannel) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (x WebInfo_WebInfoWebSubPlatform) Number() protoreflect.EnumNumber {
+func (ClientPayload_UserAgent_ReleaseChannel) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[43].Descriptor()
+}
+
+func (ClientPayload_UserAgent_ReleaseChannel) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[43]
+}
+
+func (x ClientPayload_UserAgent_ReleaseChannel) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *WebInfo_WebInfoWebSubPlatform) UnmarshalJSON(b []byte) error {
+func (x *ClientPayload_UserAgent_ReleaseChannel) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = WebInfo_WebInfoWebSubPlatform(num)
+	*x = ClientPayload_UserAgent_ReleaseChannel(num)
 	return nil
 }
 
-// Deprecated: Use WebInfo_WebInfoWebSubPlatform.Descriptor instead.
-func (WebInfo_WebInfoWebSubPlatform) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{179, 0}
+// Deprecated: Use ClientPayload_UserAgent_ReleaseChannel.Descriptor instead.
+func (ClientPayload_UserAgent_ReleaseChannel) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 1, 0}
 }
 
-type UserAgent_UserAgentPlatform int32
+type ClientPayload_UserAgent_Platform int32
 
 const (
-	UserAgent_ANDROID        UserAgent_UserAgentPlatform = 0
-	UserAgent_IOS            UserAgent_UserAgentPlatform = 1
-	UserAgent_WINDOWS_PHONE  UserAgent_UserAgentPlatform = 2
-	UserAgent_BLACKBERRY     UserAgent_UserAgentPlatform = 3
-	UserAgent_BLACKBERRYX    UserAgent_UserAgentPlatform = 4
-	UserAgent_S40            UserAgent_UserAgentPlatform = 5
-	UserAgent_S60            UserAgent_UserAgentPlatform = 6
-	UserAgent_PYTHON_CLIENT  UserAgent_UserAgentPlatform = 7
-	UserAgent_TIZEN          UserAgent_UserAgentPlatform = 8
-	UserAgent_ENTERPRISE     UserAgent_UserAgentPlatform = 9
-	UserAgent_SMB_ANDROID    UserAgent_UserAgentPlatform = 10
-	UserAgent_KAIOS          UserAgent_UserAgentPlatform = 11
-	UserAgent_SMB_IOS        UserAgent_UserAgentPlatform = 12
-	UserAgent_WINDOWS        UserAgent_UserAgentPlatform = 13
-	UserAgent_WEB            UserAgent_UserAgentPlatform = 14
-	UserAgent_PORTAL         UserAgent_UserAgentPlatform = 15
-	UserAgent_GREEN_ANDROID  UserAgent_UserAgentPlatform = 16
-	UserAgent_GREEN_IPHONE   UserAgent_UserAgentPlatform = 17
-	UserAgent_BLUE_ANDROID   UserAgent_UserAgentPlatform = 18
-	UserAgent_BLUE_IPHONE    UserAgent_UserAgentPlatform = 19
-	UserAgent_FBLITE_ANDROID UserAgent_UserAgentPlatform = 20
-	UserAgent_MLITE_ANDROID  UserAgent_UserAgentPlatform = 21
-	UserAgent_IGLITE_ANDROID UserAgent_UserAgentPlatform = 22
-	UserAgent_PAGE           UserAgent_UserAgentPlatform = 23
-	UserAgent_MACOS          UserAgent_UserAgentPlatform = 24
-	UserAgent_OCULUS_MSG     UserAgent_UserAgentPlatform = 25
-	UserAgent_OCULUS_CALL    UserAgent_UserAgentPlatform = 26
-	UserAgent_MILAN          UserAgent_UserAgentPlatform = 27
-	UserAgent_CAPI           UserAgent_UserAgentPlatform = 28
+	ClientPayload_UserAgent_ANDROID        ClientPayload_UserAgent_Platform = 0
+	ClientPayload_UserAgent_IOS            ClientPayload_UserAgent_Platform = 1
+	ClientPayload_UserAgent_WINDOWS_PHONE  ClientPayload_UserAgent_Platform = 2
+	ClientPayload_UserAgent_BLACKBERRY     ClientPayload_UserAgent_Platform = 3
+	ClientPayload_UserAgent_BLACKBERRYX    ClientPayload_UserAgent_Platform = 4
+	ClientPayload_UserAgent_S40            ClientPayload_UserAgent_Platform = 5
+	ClientPayload_UserAgent_S60            ClientPayload_UserAgent_Platform = 6
+	ClientPayload_UserAgent_PYTHON_CLIENT  ClientPayload_UserAgent_Platform = 7
+	ClientPayload_UserAgent_TIZEN          ClientPayload_UserAgent_Platform = 8
+	ClientPayload_UserAgent_ENTERPRISE     ClientPayload_UserAgent_Platform = 9
+	ClientPayload_UserAgent_SMB_ANDROID    ClientPayload_UserAgent_Platform = 10
+	ClientPayload_UserAgent_KAIOS          ClientPayload_UserAgent_Platform = 11
+	ClientPayload_UserAgent_SMB_IOS        ClientPayload_UserAgent_Platform = 12
+	ClientPayload_UserAgent_WINDOWS        ClientPayload_UserAgent_Platform = 13
+	ClientPayload_UserAgent_WEB            ClientPayload_UserAgent_Platform = 14
+	ClientPayload_UserAgent_PORTAL         ClientPayload_UserAgent_Platform = 15
+	ClientPayload_UserAgent_GREEN_ANDROID  ClientPayload_UserAgent_Platform = 16
+	ClientPayload_UserAgent_GREEN_IPHONE   ClientPayload_UserAgent_Platform = 17
+	ClientPayload_UserAgent_BLUE_ANDROID   ClientPayload_UserAgent_Platform = 18
+	ClientPayload_UserAgent_BLUE_IPHONE    ClientPayload_UserAgent_Platform = 19
+	ClientPayload_UserAgent_FBLITE_ANDROID ClientPayload_UserAgent_Platform = 20
+	ClientPayload_UserAgent_MLITE_ANDROID  ClientPayload_UserAgent_Platform = 21
+	ClientPayload_UserAgent_IGLITE_ANDROID ClientPayload_UserAgent_Platform = 22
+	ClientPayload_UserAgent_PAGE           ClientPayload_UserAgent_Platform = 23
+	ClientPayload_UserAgent_MACOS          ClientPayload_UserAgent_Platform = 24
+	ClientPayload_UserAgent_OCULUS_MSG     ClientPayload_UserAgent_Platform = 25
+	ClientPayload_UserAgent_OCULUS_CALL    ClientPayload_UserAgent_Platform = 26
+	ClientPayload_UserAgent_MILAN          ClientPayload_UserAgent_Platform = 27
+	ClientPayload_UserAgent_CAPI           ClientPayload_UserAgent_Platform = 28
 )
 
-// Enum value maps for UserAgent_UserAgentPlatform.
+// Enum value maps for ClientPayload_UserAgent_Platform.
 var (
-	UserAgent_UserAgentPlatform_name = map[int32]string{
+	ClientPayload_UserAgent_Platform_name = map[int32]string{
 		0:  "ANDROID",
 		1:  "IOS",
 		2:  "WINDOWS_PHONE",
@@ -2604,7 +2796,7 @@ var (
 		27: "MILAN",
 		28: "CAPI",
 	}
-	UserAgent_UserAgentPlatform_value = map[string]int32{
+	ClientPayload_UserAgent_Platform_value = map[string]int32{
 		"ANDROID":        0,
 		"IOS":            1,
 		"WINDOWS_PHONE":  2,
@@ -2637,125 +2829,63 @@ var (
 	}
 )
 
-func (x UserAgent_UserAgentPlatform) Enum() *UserAgent_UserAgentPlatform {
-	p := new(UserAgent_UserAgentPlatform)
-	*p = x
-	return p
-}
-
-func (x UserAgent_UserAgentPlatform) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (UserAgent_UserAgentPlatform) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[41].Descriptor()
-}
-
-func (UserAgent_UserAgentPlatform) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[41]
-}
-
-func (x UserAgent_UserAgentPlatform) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *UserAgent_UserAgentPlatform) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = UserAgent_UserAgentPlatform(num)
-	return nil
-}
-
-// Deprecated: Use UserAgent_UserAgentPlatform.Descriptor instead.
-func (UserAgent_UserAgentPlatform) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{181, 0}
-}
-
-type UserAgent_UserAgentReleaseChannel int32
-
-const (
-	UserAgent_RELEASE UserAgent_UserAgentReleaseChannel = 0
-	UserAgent_BETA    UserAgent_UserAgentReleaseChannel = 1
-	UserAgent_ALPHA   UserAgent_UserAgentReleaseChannel = 2
-	UserAgent_DEBUG   UserAgent_UserAgentReleaseChannel = 3
-)
-
-// Enum value maps for UserAgent_UserAgentReleaseChannel.
-var (
-	UserAgent_UserAgentReleaseChannel_name = map[int32]string{
-		0: "RELEASE",
-		1: "BETA",
-		2: "ALPHA",
-		3: "DEBUG",
-	}
-	UserAgent_UserAgentReleaseChannel_value = map[string]int32{
-		"RELEASE": 0,
-		"BETA":    1,
-		"ALPHA":   2,
-		"DEBUG":   3,
-	}
-)
-
-func (x UserAgent_UserAgentReleaseChannel) Enum() *UserAgent_UserAgentReleaseChannel {
-	p := new(UserAgent_UserAgentReleaseChannel)
+func (x ClientPayload_UserAgent_Platform) Enum() *ClientPayload_UserAgent_Platform {
+	p := new(ClientPayload_UserAgent_Platform)
 	*p = x
 	return p
 }
 
-func (x UserAgent_UserAgentReleaseChannel) String() string {
+func (x ClientPayload_UserAgent_Platform) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (UserAgent_UserAgentReleaseChannel) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[42].Descriptor()
+func (ClientPayload_UserAgent_Platform) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[44].Descriptor()
 }
 
-func (UserAgent_UserAgentReleaseChannel) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[42]
+func (ClientPayload_UserAgent_Platform) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[44]
 }
 
-func (x UserAgent_UserAgentReleaseChannel) Number() protoreflect.EnumNumber {
+func (x ClientPayload_UserAgent_Platform) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *UserAgent_UserAgentReleaseChannel) UnmarshalJSON(b []byte) error {
+func (x *ClientPayload_UserAgent_Platform) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = UserAgent_UserAgentReleaseChannel(num)
+	*x = ClientPayload_UserAgent_Platform(num)
 	return nil
 }
 
-// Deprecated: Use UserAgent_UserAgentReleaseChannel.Descriptor instead.
-func (UserAgent_UserAgentReleaseChannel) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{181, 1}
+// Deprecated: Use ClientPayload_UserAgent_Platform.Descriptor instead.
+func (ClientPayload_UserAgent_Platform) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 1, 1}
 }
 
-type DNSSource_DNSSourceDNSResolutionMethod int32
+type ClientPayload_DNSSource_DNSResolutionMethod int32
 
 const (
-	DNSSource_SYSTEM    DNSSource_DNSSourceDNSResolutionMethod = 0
-	DNSSource_GOOGLE    DNSSource_DNSSourceDNSResolutionMethod = 1
-	DNSSource_HARDCODED DNSSource_DNSSourceDNSResolutionMethod = 2
-	DNSSource_OVERRIDE  DNSSource_DNSSourceDNSResolutionMethod = 3
-	DNSSource_FALLBACK  DNSSource_DNSSourceDNSResolutionMethod = 4
+	ClientPayload_DNSSource_SYSTEM    ClientPayload_DNSSource_DNSResolutionMethod = 0
+	ClientPayload_DNSSource_GOOGLE    ClientPayload_DNSSource_DNSResolutionMethod = 1
+	ClientPayload_DNSSource_HARDCODED ClientPayload_DNSSource_DNSResolutionMethod = 2
+	ClientPayload_DNSSource_OVERRIDE  ClientPayload_DNSSource_DNSResolutionMethod = 3
+	ClientPayload_DNSSource_FALLBACK  ClientPayload_DNSSource_DNSResolutionMethod = 4
 )
 
-// Enum value maps for DNSSource_DNSSourceDNSResolutionMethod.
+// Enum value maps for ClientPayload_DNSSource_DNSResolutionMethod.
 var (
-	DNSSource_DNSSourceDNSResolutionMethod_name = map[int32]string{
+	ClientPayload_DNSSource_DNSResolutionMethod_name = map[int32]string{
 		0: "SYSTEM",
 		1: "GOOGLE",
 		2: "HARDCODED",
 		3: "OVERRIDE",
 		4: "FALLBACK",
 	}
-	DNSSource_DNSSourceDNSResolutionMethod_value = map[string]int32{
+	ClientPayload_DNSSource_DNSResolutionMethod_value = map[string]int32{
 		"SYSTEM":    0,
 		"GOOGLE":    1,
 		"HARDCODED": 2,
@@ -2764,263 +2894,201 @@ var (
 	}
 )
 
-func (x DNSSource_DNSSourceDNSResolutionMethod) Enum() *DNSSource_DNSSourceDNSResolutionMethod {
-	p := new(DNSSource_DNSSourceDNSResolutionMethod)
+func (x ClientPayload_DNSSource_DNSResolutionMethod) Enum() *ClientPayload_DNSSource_DNSResolutionMethod {
+	p := new(ClientPayload_DNSSource_DNSResolutionMethod)
 	*p = x
 	return p
 }
 
-func (x DNSSource_DNSSourceDNSResolutionMethod) String() string {
+func (x ClientPayload_DNSSource_DNSResolutionMethod) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (DNSSource_DNSSourceDNSResolutionMethod) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[43].Descriptor()
+func (ClientPayload_DNSSource_DNSResolutionMethod) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[45].Descriptor()
 }
 
-func (DNSSource_DNSSourceDNSResolutionMethod) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[43]
+func (ClientPayload_DNSSource_DNSResolutionMethod) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[45]
 }
 
-func (x DNSSource_DNSSourceDNSResolutionMethod) Number() protoreflect.EnumNumber {
+func (x ClientPayload_DNSSource_DNSResolutionMethod) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *DNSSource_DNSSourceDNSResolutionMethod) UnmarshalJSON(b []byte) error {
+func (x *ClientPayload_DNSSource_DNSResolutionMethod) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = DNSSource_DNSSourceDNSResolutionMethod(num)
+	*x = ClientPayload_DNSSource_DNSResolutionMethod(num)
 	return nil
 }
 
-// Deprecated: Use DNSSource_DNSSourceDNSResolutionMethod.Descriptor instead.
-func (DNSSource_DNSSourceDNSResolutionMethod) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{183, 0}
+// Deprecated: Use ClientPayload_DNSSource_DNSResolutionMethod.Descriptor instead.
+func (ClientPayload_DNSSource_DNSResolutionMethod) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 3, 0}
 }
 
-type WebMessageInfo_WebMessageInfoStatus int32
+type WebMessageInfo_StubType int32
 
 const (
-	WebMessageInfo_ERROR        WebMessageInfo_WebMessageInfoStatus = 0
-	WebMessageInfo_PENDING      WebMessageInfo_WebMessageInfoStatus = 1
-	WebMessageInfo_SERVER_ACK   WebMessageInfo_WebMessageInfoStatus = 2
-	WebMessageInfo_DELIVERY_ACK WebMessageInfo_WebMessageInfoStatus = 3
-	WebMessageInfo_READ         WebMessageInfo_WebMessageInfoStatus = 4
-	WebMessageInfo_PLAYED       WebMessageInfo_WebMessageInfoStatus = 5
+	WebMessageInfo_UNKNOWN                                                  WebMessageInfo_StubType = 0
+	WebMessageInfo_REVOKE                                                   WebMessageInfo_StubType = 1
+	WebMessageInfo_CIPHERTEXT                                               WebMessageInfo_StubType = 2
+	WebMessageInfo_FUTUREPROOF                                              WebMessageInfo_StubType = 3
+	WebMessageInfo_NON_VERIFIED_TRANSITION                                  WebMessageInfo_StubType = 4
+	WebMessageInfo_UNVERIFIED_TRANSITION                                    WebMessageInfo_StubType = 5
+	WebMessageInfo_VERIFIED_TRANSITION                                      WebMessageInfo_StubType = 6
+	WebMessageInfo_VERIFIED_LOW_UNKNOWN                                     WebMessageInfo_StubType = 7
+	WebMessageInfo_VERIFIED_HIGH                                            WebMessageInfo_StubType = 8
+	WebMessageInfo_VERIFIED_INITIAL_UNKNOWN                                 WebMessageInfo_StubType = 9
+	WebMessageInfo_VERIFIED_INITIAL_LOW                                     WebMessageInfo_StubType = 10
+	WebMessageInfo_VERIFIED_INITIAL_HIGH                                    WebMessageInfo_StubType = 11
+	WebMessageInfo_VERIFIED_TRANSITION_ANY_TO_NONE                          WebMessageInfo_StubType = 12
+	WebMessageInfo_VERIFIED_TRANSITION_ANY_TO_HIGH                          WebMessageInfo_StubType = 13
+	WebMessageInfo_VERIFIED_TRANSITION_HIGH_TO_LOW                          WebMessageInfo_StubType = 14
+	WebMessageInfo_VERIFIED_TRANSITION_HIGH_TO_UNKNOWN                      WebMessageInfo_StubType = 15
+	WebMessageInfo_VERIFIED_TRANSITION_UNKNOWN_TO_LOW                       WebMessageInfo_StubType = 16
+	WebMessageInfo_VERIFIED_TRANSITION_LOW_TO_UNKNOWN                       WebMessageInfo_StubType = 17
+	WebMessageInfo_VERIFIED_TRANSITION_NONE_TO_LOW                          WebMessageInfo_StubType = 18
+	WebMessageInfo_VERIFIED_TRANSITION_NONE_TO_UNKNOWN                      WebMessageInfo_StubType = 19
+	WebMessageInfo_GROUP_CREATE                                             WebMessageInfo_StubType = 20
+	WebMessageInfo_GROUP_CHANGE_SUBJECT                                     WebMessageInfo_StubType = 21
+	WebMessageInfo_GROUP_CHANGE_ICON                                        WebMessageInfo_StubType = 22
+	WebMessageInfo_GROUP_CHANGE_INVITE_LINK                                 WebMessageInfo_StubType = 23
+	WebMessageInfo_GROUP_CHANGE_DESCRIPTION                                 WebMessageInfo_StubType = 24
+	WebMessageInfo_GROUP_CHANGE_RESTRICT                                    WebMessageInfo_StubType = 25
+	WebMessageInfo_GROUP_CHANGE_ANNOUNCE                                    WebMessageInfo_StubType = 26
+	WebMessageInfo_GROUP_PARTICIPANT_ADD                                    WebMessageInfo_StubType = 27
+	WebMessageInfo_GROUP_PARTICIPANT_REMOVE                                 WebMessageInfo_StubType = 28
+	WebMessageInfo_GROUP_PARTICIPANT_PROMOTE                                WebMessageInfo_StubType = 29
+	WebMessageInfo_GROUP_PARTICIPANT_DEMOTE                                 WebMessageInfo_StubType = 30
+	WebMessageInfo_GROUP_PARTICIPANT_INVITE                                 WebMessageInfo_StubType = 31
+	WebMessageInfo_GROUP_PARTICIPANT_LEAVE                                  WebMessageInfo_StubType = 32
+	WebMessageInfo_GROUP_PARTICIPANT_CHANGE_NUMBER                          WebMessageInfo_StubType = 33
+	WebMessageInfo_BROADCAST_CREATE                                         WebMessageInfo_StubType = 34
+	WebMessageInfo_BROADCAST_ADD                                            WebMessageInfo_StubType = 35
+	WebMessageInfo_BROADCAST_REMOVE                                         WebMessageInfo_StubType = 36
+	WebMessageInfo_GENERIC_NOTIFICATION                                     WebMessageInfo_StubType = 37
+	WebMessageInfo_E2E_IDENTITY_CHANGED                                     WebMessageInfo_StubType = 38
+	WebMessageInfo_E2E_ENCRYPTED                                            WebMessageInfo_StubType = 39
+	WebMessageInfo_CALL_MISSED_VOICE                                        WebMessageInfo_StubType = 40
+	WebMessageInfo_CALL_MISSED_VIDEO                                        WebMessageInfo_StubType = 41
+	WebMessageInfo_INDIVIDUAL_CHANGE_NUMBER                                 WebMessageInfo_StubType = 42
+	WebMessageInfo_GROUP_DELETE                                             WebMessageInfo_StubType = 43
+	WebMessageInfo_GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE                       WebMessageInfo_StubType = 44
+	WebMessageInfo_CALL_MISSED_GROUP_VOICE                                  WebMessageInfo_StubType = 45
+	WebMessageInfo_CALL_MISSED_GROUP_VIDEO                                  WebMessageInfo_StubType = 46
+	WebMessageInfo_PAYMENT_CIPHERTEXT                                       WebMessageInfo_StubType = 47
+	WebMessageInfo_PAYMENT_FUTUREPROOF                                      WebMessageInfo_StubType = 48
+	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED                 WebMessageInfo_StubType = 49
+	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED               WebMessageInfo_StubType = 50
+	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED          WebMessageInfo_StubType = 51
+	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP        WebMessageInfo_StubType = 52
+	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP WebMessageInfo_StubType = 53
+	WebMessageInfo_PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER                    WebMessageInfo_StubType = 54
+	WebMessageInfo_PAYMENT_ACTION_SEND_PAYMENT_REMINDER                     WebMessageInfo_StubType = 55
+	WebMessageInfo_PAYMENT_ACTION_SEND_PAYMENT_INVITATION                   WebMessageInfo_StubType = 56
+	WebMessageInfo_PAYMENT_ACTION_REQUEST_DECLINED                          WebMessageInfo_StubType = 57
+	WebMessageInfo_PAYMENT_ACTION_REQUEST_EXPIRED                           WebMessageInfo_StubType = 58
+	WebMessageInfo_PAYMENT_ACTION_REQUEST_CANCELLED                         WebMessageInfo_StubType = 59
+	WebMessageInfo_BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM                    WebMessageInfo_StubType = 60
+	WebMessageInfo_BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP                    WebMessageInfo_StubType = 61
+	WebMessageInfo_BIZ_INTRO_TOP                                            WebMessageInfo_StubType = 62
+	WebMessageInfo_BIZ_INTRO_BOTTOM                                         WebMessageInfo_StubType = 63
+	WebMessageInfo_BIZ_NAME_CHANGE                                          WebMessageInfo_StubType = 64
+	WebMessageInfo_BIZ_MOVE_TO_CONSUMER_APP                                 WebMessageInfo_StubType = 65
+	WebMessageInfo_BIZ_TWO_TIER_MIGRATION_TOP                               WebMessageInfo_StubType = 66
+	WebMessageInfo_BIZ_TWO_TIER_MIGRATION_BOTTOM                            WebMessageInfo_StubType = 67
+	WebMessageInfo_OVERSIZED                                                WebMessageInfo_StubType = 68
+	WebMessageInfo_GROUP_CHANGE_NO_FREQUENTLY_FORWARDED                     WebMessageInfo_StubType = 69
+	WebMessageInfo_GROUP_V4_ADD_INVITE_SENT                                 WebMessageInfo_StubType = 70
+	WebMessageInfo_GROUP_PARTICIPANT_ADD_REQUEST_JOIN                       WebMessageInfo_StubType = 71
+	WebMessageInfo_CHANGE_EPHEMERAL_SETTING                                 WebMessageInfo_StubType = 72
+	WebMessageInfo_E2E_DEVICE_CHANGED                                       WebMessageInfo_StubType = 73
+	WebMessageInfo_VIEWED_ONCE                                              WebMessageInfo_StubType = 74
+	WebMessageInfo_E2E_ENCRYPTED_NOW                                        WebMessageInfo_StubType = 75
+	WebMessageInfo_BLUE_MSG_BSP_FB_TO_BSP_PREMISE                           WebMessageInfo_StubType = 76
+	WebMessageInfo_BLUE_MSG_BSP_FB_TO_SELF_FB                               WebMessageInfo_StubType = 77
+	WebMessageInfo_BLUE_MSG_BSP_FB_TO_SELF_PREMISE                          WebMessageInfo_StubType = 78
+	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED                               WebMessageInfo_StubType = 79
+	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED      WebMessageInfo_StubType = 80
+	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED                                 WebMessageInfo_StubType = 81
+	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED      WebMessageInfo_StubType = 82
+	WebMessageInfo_BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE                     WebMessageInfo_StubType = 83
+	WebMessageInfo_BLUE_MSG_BSP_PREMISE_UNVERIFIED                          WebMessageInfo_StubType = 84
+	WebMessageInfo_BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED WebMessageInfo_StubType = 85
+	WebMessageInfo_BLUE_MSG_BSP_PREMISE_VERIFIED                            WebMessageInfo_StubType = 86
+	WebMessageInfo_BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED WebMessageInfo_StubType = 87
+	WebMessageInfo_BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED                   WebMessageInfo_StubType = 88
+	WebMessageInfo_BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED              WebMessageInfo_StubType = 89
+	WebMessageInfo_BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED                  WebMessageInfo_StubType = 90
+	WebMessageInfo_BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED             WebMessageInfo_StubType = 91
+	WebMessageInfo_BLUE_MSG_SELF_FB_TO_BSP_PREMISE                          WebMessageInfo_StubType = 92
+	WebMessageInfo_BLUE_MSG_SELF_FB_TO_SELF_PREMISE                         WebMessageInfo_StubType = 93
+	WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED                              WebMessageInfo_StubType = 94
+	WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED     WebMessageInfo_StubType = 95
+	WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED                                WebMessageInfo_StubType = 96
+	WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED     WebMessageInfo_StubType = 97
+	WebMessageInfo_BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE                     WebMessageInfo_StubType = 98
+	WebMessageInfo_BLUE_MSG_SELF_PREMISE_UNVERIFIED                         WebMessageInfo_StubType = 99
+	WebMessageInfo_BLUE_MSG_SELF_PREMISE_VERIFIED                           WebMessageInfo_StubType = 100
+	WebMessageInfo_BLUE_MSG_TO_BSP_FB                                       WebMessageInfo_StubType = 101
+	WebMessageInfo_BLUE_MSG_TO_CONSUMER                                     WebMessageInfo_StubType = 102
+	WebMessageInfo_BLUE_MSG_TO_SELF_FB                                      WebMessageInfo_StubType = 103
+	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED                   WebMessageInfo_StubType = 104
+	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED              WebMessageInfo_StubType = 105
+	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED                  WebMessageInfo_StubType = 106
+	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_VERIFIED                          WebMessageInfo_StubType = 107
+	WebMessageInfo_BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED                   WebMessageInfo_StubType = 108
+	WebMessageInfo_BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED              WebMessageInfo_StubType = 109
+	WebMessageInfo_BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED                  WebMessageInfo_StubType = 110
+	WebMessageInfo_BLUE_MSG_VERIFIED_TO_UNVERIFIED                          WebMessageInfo_StubType = 111
+	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED       WebMessageInfo_StubType = 112
+	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED           WebMessageInfo_StubType = 113
+	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED       WebMessageInfo_StubType = 114
+	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED           WebMessageInfo_StubType = 115
+	WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED      WebMessageInfo_StubType = 116
+	WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED      WebMessageInfo_StubType = 117
+	WebMessageInfo_E2E_IDENTITY_UNAVAILABLE                                 WebMessageInfo_StubType = 118
+	WebMessageInfo_GROUP_CREATING                                           WebMessageInfo_StubType = 119
+	WebMessageInfo_GROUP_CREATE_FAILED                                      WebMessageInfo_StubType = 120
+	WebMessageInfo_GROUP_BOUNCED                                            WebMessageInfo_StubType = 121
+	WebMessageInfo_BLOCK_CONTACT                                            WebMessageInfo_StubType = 122
+	WebMessageInfo_EPHEMERAL_SETTING_NOT_APPLIED                            WebMessageInfo_StubType = 123
+	WebMessageInfo_SYNC_FAILED                                              WebMessageInfo_StubType = 124
+	WebMessageInfo_SYNCING                                                  WebMessageInfo_StubType = 125
+	WebMessageInfo_BIZ_PRIVACY_MODE_INIT_FB                                 WebMessageInfo_StubType = 126
+	WebMessageInfo_BIZ_PRIVACY_MODE_INIT_BSP                                WebMessageInfo_StubType = 127
+	WebMessageInfo_BIZ_PRIVACY_MODE_TO_FB                                   WebMessageInfo_StubType = 128
+	WebMessageInfo_BIZ_PRIVACY_MODE_TO_BSP                                  WebMessageInfo_StubType = 129
+	WebMessageInfo_DISAPPEARING_MODE                                        WebMessageInfo_StubType = 130
+	WebMessageInfo_E2E_DEVICE_FETCH_FAILED                                  WebMessageInfo_StubType = 131
+	WebMessageInfo_ADMIN_REVOKE                                             WebMessageInfo_StubType = 132
+	WebMessageInfo_GROUP_INVITE_LINK_GROWTH_LOCKED                          WebMessageInfo_StubType = 133
+	WebMessageInfo_COMMUNITY_LINK_PARENT_GROUP                              WebMessageInfo_StubType = 134
+	WebMessageInfo_COMMUNITY_LINK_SIBLING_GROUP                             WebMessageInfo_StubType = 135
+	WebMessageInfo_COMMUNITY_LINK_SUB_GROUP                                 WebMessageInfo_StubType = 136
+	WebMessageInfo_COMMUNITY_UNLINK_PARENT_GROUP                            WebMessageInfo_StubType = 137
+	WebMessageInfo_COMMUNITY_UNLINK_SIBLING_GROUP                           WebMessageInfo_StubType = 138
+	WebMessageInfo_COMMUNITY_UNLINK_SUB_GROUP                               WebMessageInfo_StubType = 139
+	WebMessageInfo_GROUP_PARTICIPANT_ACCEPT                                 WebMessageInfo_StubType = 140
+	WebMessageInfo_GROUP_PARTICIPANT_LINKED_GROUP_JOIN                      WebMessageInfo_StubType = 141
+	WebMessageInfo_COMMUNITY_CREATE                                         WebMessageInfo_StubType = 142
+	WebMessageInfo_EPHEMERAL_KEEP_IN_CHAT                                   WebMessageInfo_StubType = 143
+	WebMessageInfo_GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST                   WebMessageInfo_StubType = 144
+	WebMessageInfo_GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE                      WebMessageInfo_StubType = 145
+	WebMessageInfo_INTEGRITY_UNLINK_PARENT_GROUP                            WebMessageInfo_StubType = 146
+	WebMessageInfo_COMMUNITY_PARTICIPANT_PROMOTE                            WebMessageInfo_StubType = 147
+	WebMessageInfo_COMMUNITY_PARTICIPANT_DEMOTE                             WebMessageInfo_StubType = 148
+	WebMessageInfo_COMMUNITY_PARENT_GROUP_DELETED                           WebMessageInfo_StubType = 149
 )
 
-// Enum value maps for WebMessageInfo_WebMessageInfoStatus.
+// Enum value maps for WebMessageInfo_StubType.
 var (
-	WebMessageInfo_WebMessageInfoStatus_name = map[int32]string{
-		0: "ERROR",
-		1: "PENDING",
-		2: "SERVER_ACK",
-		3: "DELIVERY_ACK",
-		4: "READ",
-		5: "PLAYED",
-	}
-	WebMessageInfo_WebMessageInfoStatus_value = map[string]int32{
-		"ERROR":        0,
-		"PENDING":      1,
-		"SERVER_ACK":   2,
-		"DELIVERY_ACK": 3,
-		"READ":         4,
-		"PLAYED":       5,
-	}
-)
-
-func (x WebMessageInfo_WebMessageInfoStatus) Enum() *WebMessageInfo_WebMessageInfoStatus {
-	p := new(WebMessageInfo_WebMessageInfoStatus)
-	*p = x
-	return p
-}
-
-func (x WebMessageInfo_WebMessageInfoStatus) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (WebMessageInfo_WebMessageInfoStatus) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[44].Descriptor()
-}
-
-func (WebMessageInfo_WebMessageInfoStatus) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[44]
-}
-
-func (x WebMessageInfo_WebMessageInfoStatus) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *WebMessageInfo_WebMessageInfoStatus) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = WebMessageInfo_WebMessageInfoStatus(num)
-	return nil
-}
-
-// Deprecated: Use WebMessageInfo_WebMessageInfoStatus.Descriptor instead.
-func (WebMessageInfo_WebMessageInfoStatus) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{185, 0}
-}
-
-type WebMessageInfo_WebMessageInfoStubType int32
-
-const (
-	WebMessageInfo_UNKNOWN                                                  WebMessageInfo_WebMessageInfoStubType = 0
-	WebMessageInfo_REVOKE                                                   WebMessageInfo_WebMessageInfoStubType = 1
-	WebMessageInfo_CIPHERTEXT                                               WebMessageInfo_WebMessageInfoStubType = 2
-	WebMessageInfo_FUTUREPROOF                                              WebMessageInfo_WebMessageInfoStubType = 3
-	WebMessageInfo_NON_VERIFIED_TRANSITION                                  WebMessageInfo_WebMessageInfoStubType = 4
-	WebMessageInfo_UNVERIFIED_TRANSITION                                    WebMessageInfo_WebMessageInfoStubType = 5
-	WebMessageInfo_VERIFIED_TRANSITION                                      WebMessageInfo_WebMessageInfoStubType = 6
-	WebMessageInfo_VERIFIED_LOW_UNKNOWN                                     WebMessageInfo_WebMessageInfoStubType = 7
-	WebMessageInfo_VERIFIED_HIGH                                            WebMessageInfo_WebMessageInfoStubType = 8
-	WebMessageInfo_VERIFIED_INITIAL_UNKNOWN                                 WebMessageInfo_WebMessageInfoStubType = 9
-	WebMessageInfo_VERIFIED_INITIAL_LOW                                     WebMessageInfo_WebMessageInfoStubType = 10
-	WebMessageInfo_VERIFIED_INITIAL_HIGH                                    WebMessageInfo_WebMessageInfoStubType = 11
-	WebMessageInfo_VERIFIED_TRANSITION_ANY_TO_NONE                          WebMessageInfo_WebMessageInfoStubType = 12
-	WebMessageInfo_VERIFIED_TRANSITION_ANY_TO_HIGH                          WebMessageInfo_WebMessageInfoStubType = 13
-	WebMessageInfo_VERIFIED_TRANSITION_HIGH_TO_LOW                          WebMessageInfo_WebMessageInfoStubType = 14
-	WebMessageInfo_VERIFIED_TRANSITION_HIGH_TO_UNKNOWN                      WebMessageInfo_WebMessageInfoStubType = 15
-	WebMessageInfo_VERIFIED_TRANSITION_UNKNOWN_TO_LOW                       WebMessageInfo_WebMessageInfoStubType = 16
-	WebMessageInfo_VERIFIED_TRANSITION_LOW_TO_UNKNOWN                       WebMessageInfo_WebMessageInfoStubType = 17
-	WebMessageInfo_VERIFIED_TRANSITION_NONE_TO_LOW                          WebMessageInfo_WebMessageInfoStubType = 18
-	WebMessageInfo_VERIFIED_TRANSITION_NONE_TO_UNKNOWN                      WebMessageInfo_WebMessageInfoStubType = 19
-	WebMessageInfo_GROUP_CREATE                                             WebMessageInfo_WebMessageInfoStubType = 20
-	WebMessageInfo_GROUP_CHANGE_SUBJECT                                     WebMessageInfo_WebMessageInfoStubType = 21
-	WebMessageInfo_GROUP_CHANGE_ICON                                        WebMessageInfo_WebMessageInfoStubType = 22
-	WebMessageInfo_GROUP_CHANGE_INVITE_LINK                                 WebMessageInfo_WebMessageInfoStubType = 23
-	WebMessageInfo_GROUP_CHANGE_DESCRIPTION                                 WebMessageInfo_WebMessageInfoStubType = 24
-	WebMessageInfo_GROUP_CHANGE_RESTRICT                                    WebMessageInfo_WebMessageInfoStubType = 25
-	WebMessageInfo_GROUP_CHANGE_ANNOUNCE                                    WebMessageInfo_WebMessageInfoStubType = 26
-	WebMessageInfo_GROUP_PARTICIPANT_ADD                                    WebMessageInfo_WebMessageInfoStubType = 27
-	WebMessageInfo_GROUP_PARTICIPANT_REMOVE                                 WebMessageInfo_WebMessageInfoStubType = 28
-	WebMessageInfo_GROUP_PARTICIPANT_PROMOTE                                WebMessageInfo_WebMessageInfoStubType = 29
-	WebMessageInfo_GROUP_PARTICIPANT_DEMOTE                                 WebMessageInfo_WebMessageInfoStubType = 30
-	WebMessageInfo_GROUP_PARTICIPANT_INVITE                                 WebMessageInfo_WebMessageInfoStubType = 31
-	WebMessageInfo_GROUP_PARTICIPANT_LEAVE                                  WebMessageInfo_WebMessageInfoStubType = 32
-	WebMessageInfo_GROUP_PARTICIPANT_CHANGE_NUMBER                          WebMessageInfo_WebMessageInfoStubType = 33
-	WebMessageInfo_BROADCAST_CREATE                                         WebMessageInfo_WebMessageInfoStubType = 34
-	WebMessageInfo_BROADCAST_ADD                                            WebMessageInfo_WebMessageInfoStubType = 35
-	WebMessageInfo_BROADCAST_REMOVE                                         WebMessageInfo_WebMessageInfoStubType = 36
-	WebMessageInfo_GENERIC_NOTIFICATION                                     WebMessageInfo_WebMessageInfoStubType = 37
-	WebMessageInfo_E2E_IDENTITY_CHANGED                                     WebMessageInfo_WebMessageInfoStubType = 38
-	WebMessageInfo_E2E_ENCRYPTED                                            WebMessageInfo_WebMessageInfoStubType = 39
-	WebMessageInfo_CALL_MISSED_VOICE                                        WebMessageInfo_WebMessageInfoStubType = 40
-	WebMessageInfo_CALL_MISSED_VIDEO                                        WebMessageInfo_WebMessageInfoStubType = 41
-	WebMessageInfo_INDIVIDUAL_CHANGE_NUMBER                                 WebMessageInfo_WebMessageInfoStubType = 42
-	WebMessageInfo_GROUP_DELETE                                             WebMessageInfo_WebMessageInfoStubType = 43
-	WebMessageInfo_GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE                       WebMessageInfo_WebMessageInfoStubType = 44
-	WebMessageInfo_CALL_MISSED_GROUP_VOICE                                  WebMessageInfo_WebMessageInfoStubType = 45
-	WebMessageInfo_CALL_MISSED_GROUP_VIDEO                                  WebMessageInfo_WebMessageInfoStubType = 46
-	WebMessageInfo_PAYMENT_CIPHERTEXT                                       WebMessageInfo_WebMessageInfoStubType = 47
-	WebMessageInfo_PAYMENT_FUTUREPROOF                                      WebMessageInfo_WebMessageInfoStubType = 48
-	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED                 WebMessageInfo_WebMessageInfoStubType = 49
-	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED               WebMessageInfo_WebMessageInfoStubType = 50
-	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED          WebMessageInfo_WebMessageInfoStubType = 51
-	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP        WebMessageInfo_WebMessageInfoStubType = 52
-	WebMessageInfo_PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP WebMessageInfo_WebMessageInfoStubType = 53
-	WebMessageInfo_PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER                    WebMessageInfo_WebMessageInfoStubType = 54
-	WebMessageInfo_PAYMENT_ACTION_SEND_PAYMENT_REMINDER                     WebMessageInfo_WebMessageInfoStubType = 55
-	WebMessageInfo_PAYMENT_ACTION_SEND_PAYMENT_INVITATION                   WebMessageInfo_WebMessageInfoStubType = 56
-	WebMessageInfo_PAYMENT_ACTION_REQUEST_DECLINED                          WebMessageInfo_WebMessageInfoStubType = 57
-	WebMessageInfo_PAYMENT_ACTION_REQUEST_EXPIRED                           WebMessageInfo_WebMessageInfoStubType = 58
-	WebMessageInfo_PAYMENT_ACTION_REQUEST_CANCELLED                         WebMessageInfo_WebMessageInfoStubType = 59
-	WebMessageInfo_BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM                    WebMessageInfo_WebMessageInfoStubType = 60
-	WebMessageInfo_BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP                    WebMessageInfo_WebMessageInfoStubType = 61
-	WebMessageInfo_BIZ_INTRO_TOP                                            WebMessageInfo_WebMessageInfoStubType = 62
-	WebMessageInfo_BIZ_INTRO_BOTTOM                                         WebMessageInfo_WebMessageInfoStubType = 63
-	WebMessageInfo_BIZ_NAME_CHANGE                                          WebMessageInfo_WebMessageInfoStubType = 64
-	WebMessageInfo_BIZ_MOVE_TO_CONSUMER_APP                                 WebMessageInfo_WebMessageInfoStubType = 65
-	WebMessageInfo_BIZ_TWO_TIER_MIGRATION_TOP                               WebMessageInfo_WebMessageInfoStubType = 66
-	WebMessageInfo_BIZ_TWO_TIER_MIGRATION_BOTTOM                            WebMessageInfo_WebMessageInfoStubType = 67
-	WebMessageInfo_OVERSIZED                                                WebMessageInfo_WebMessageInfoStubType = 68
-	WebMessageInfo_GROUP_CHANGE_NO_FREQUENTLY_FORWARDED                     WebMessageInfo_WebMessageInfoStubType = 69
-	WebMessageInfo_GROUP_V4_ADD_INVITE_SENT                                 WebMessageInfo_WebMessageInfoStubType = 70
-	WebMessageInfo_GROUP_PARTICIPANT_ADD_REQUEST_JOIN                       WebMessageInfo_WebMessageInfoStubType = 71
-	WebMessageInfo_CHANGE_EPHEMERAL_SETTING                                 WebMessageInfo_WebMessageInfoStubType = 72
-	WebMessageInfo_E2E_DEVICE_CHANGED                                       WebMessageInfo_WebMessageInfoStubType = 73
-	WebMessageInfo_VIEWED_ONCE                                              WebMessageInfo_WebMessageInfoStubType = 74
-	WebMessageInfo_E2E_ENCRYPTED_NOW                                        WebMessageInfo_WebMessageInfoStubType = 75
-	WebMessageInfo_BLUE_MSG_BSP_FB_TO_BSP_PREMISE                           WebMessageInfo_WebMessageInfoStubType = 76
-	WebMessageInfo_BLUE_MSG_BSP_FB_TO_SELF_FB                               WebMessageInfo_WebMessageInfoStubType = 77
-	WebMessageInfo_BLUE_MSG_BSP_FB_TO_SELF_PREMISE                          WebMessageInfo_WebMessageInfoStubType = 78
-	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED                               WebMessageInfo_WebMessageInfoStubType = 79
-	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED      WebMessageInfo_WebMessageInfoStubType = 80
-	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED                                 WebMessageInfo_WebMessageInfoStubType = 81
-	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED      WebMessageInfo_WebMessageInfoStubType = 82
-	WebMessageInfo_BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE                     WebMessageInfo_WebMessageInfoStubType = 83
-	WebMessageInfo_BLUE_MSG_BSP_PREMISE_UNVERIFIED                          WebMessageInfo_WebMessageInfoStubType = 84
-	WebMessageInfo_BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED WebMessageInfo_WebMessageInfoStubType = 85
-	WebMessageInfo_BLUE_MSG_BSP_PREMISE_VERIFIED                            WebMessageInfo_WebMessageInfoStubType = 86
-	WebMessageInfo_BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED WebMessageInfo_WebMessageInfoStubType = 87
-	WebMessageInfo_BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED                   WebMessageInfo_WebMessageInfoStubType = 88
-	WebMessageInfo_BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED              WebMessageInfo_WebMessageInfoStubType = 89
-	WebMessageInfo_BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED                  WebMessageInfo_WebMessageInfoStubType = 90
-	WebMessageInfo_BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED             WebMessageInfo_WebMessageInfoStubType = 91
-	WebMessageInfo_BLUE_MSG_SELF_FB_TO_BSP_PREMISE                          WebMessageInfo_WebMessageInfoStubType = 92
-	WebMessageInfo_BLUE_MSG_SELF_FB_TO_SELF_PREMISE                         WebMessageInfo_WebMessageInfoStubType = 93
-	WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED                              WebMessageInfo_WebMessageInfoStubType = 94
-	WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED     WebMessageInfo_WebMessageInfoStubType = 95
-	WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED                                WebMessageInfo_WebMessageInfoStubType = 96
-	WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED     WebMessageInfo_WebMessageInfoStubType = 97
-	WebMessageInfo_BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE                     WebMessageInfo_WebMessageInfoStubType = 98
-	WebMessageInfo_BLUE_MSG_SELF_PREMISE_UNVERIFIED                         WebMessageInfo_WebMessageInfoStubType = 99
-	WebMessageInfo_BLUE_MSG_SELF_PREMISE_VERIFIED                           WebMessageInfo_WebMessageInfoStubType = 100
-	WebMessageInfo_BLUE_MSG_TO_BSP_FB                                       WebMessageInfo_WebMessageInfoStubType = 101
-	WebMessageInfo_BLUE_MSG_TO_CONSUMER                                     WebMessageInfo_WebMessageInfoStubType = 102
-	WebMessageInfo_BLUE_MSG_TO_SELF_FB                                      WebMessageInfo_WebMessageInfoStubType = 103
-	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED                   WebMessageInfo_WebMessageInfoStubType = 104
-	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED              WebMessageInfo_WebMessageInfoStubType = 105
-	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED                  WebMessageInfo_WebMessageInfoStubType = 106
-	WebMessageInfo_BLUE_MSG_UNVERIFIED_TO_VERIFIED                          WebMessageInfo_WebMessageInfoStubType = 107
-	WebMessageInfo_BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED                   WebMessageInfo_WebMessageInfoStubType = 108
-	WebMessageInfo_BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED              WebMessageInfo_WebMessageInfoStubType = 109
-	WebMessageInfo_BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED                  WebMessageInfo_WebMessageInfoStubType = 110
-	WebMessageInfo_BLUE_MSG_VERIFIED_TO_UNVERIFIED                          WebMessageInfo_WebMessageInfoStubType = 111
-	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED       WebMessageInfo_WebMessageInfoStubType = 112
-	WebMessageInfo_BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED           WebMessageInfo_WebMessageInfoStubType = 113
-	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED       WebMessageInfo_WebMessageInfoStubType = 114
-	WebMessageInfo_BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED           WebMessageInfo_WebMessageInfoStubType = 115
-	WebMessageInfo_BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED      WebMessageInfo_WebMessageInfoStubType = 116
-	WebMessageInfo_BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED      WebMessageInfo_WebMessageInfoStubType = 117
-	WebMessageInfo_E2E_IDENTITY_UNAVAILABLE                                 WebMessageInfo_WebMessageInfoStubType = 118
-	WebMessageInfo_GROUP_CREATING                                           WebMessageInfo_WebMessageInfoStubType = 119
-	WebMessageInfo_GROUP_CREATE_FAILED                                      WebMessageInfo_WebMessageInfoStubType = 120
-	WebMessageInfo_GROUP_BOUNCED                                            WebMessageInfo_WebMessageInfoStubType = 121
-	WebMessageInfo_BLOCK_CONTACT                                            WebMessageInfo_WebMessageInfoStubType = 122
-	WebMessageInfo_EPHEMERAL_SETTING_NOT_APPLIED                            WebMessageInfo_WebMessageInfoStubType = 123
-	WebMessageInfo_SYNC_FAILED                                              WebMessageInfo_WebMessageInfoStubType = 124
-	WebMessageInfo_SYNCING                                                  WebMessageInfo_WebMessageInfoStubType = 125
-	WebMessageInfo_BIZ_PRIVACY_MODE_INIT_FB                                 WebMessageInfo_WebMessageInfoStubType = 126
-	WebMessageInfo_BIZ_PRIVACY_MODE_INIT_BSP                                WebMessageInfo_WebMessageInfoStubType = 127
-	WebMessageInfo_BIZ_PRIVACY_MODE_TO_FB                                   WebMessageInfo_WebMessageInfoStubType = 128
-	WebMessageInfo_BIZ_PRIVACY_MODE_TO_BSP                                  WebMessageInfo_WebMessageInfoStubType = 129
-	WebMessageInfo_DISAPPEARING_MODE                                        WebMessageInfo_WebMessageInfoStubType = 130
-	WebMessageInfo_E2E_DEVICE_FETCH_FAILED                                  WebMessageInfo_WebMessageInfoStubType = 131
-	WebMessageInfo_ADMIN_REVOKE                                             WebMessageInfo_WebMessageInfoStubType = 132
-	WebMessageInfo_GROUP_INVITE_LINK_GROWTH_LOCKED                          WebMessageInfo_WebMessageInfoStubType = 133
-	WebMessageInfo_COMMUNITY_LINK_PARENT_GROUP                              WebMessageInfo_WebMessageInfoStubType = 134
-	WebMessageInfo_COMMUNITY_LINK_SIBLING_GROUP                             WebMessageInfo_WebMessageInfoStubType = 135
-	WebMessageInfo_COMMUNITY_LINK_SUB_GROUP                                 WebMessageInfo_WebMessageInfoStubType = 136
-	WebMessageInfo_COMMUNITY_UNLINK_PARENT_GROUP                            WebMessageInfo_WebMessageInfoStubType = 137
-	WebMessageInfo_COMMUNITY_UNLINK_SIBLING_GROUP                           WebMessageInfo_WebMessageInfoStubType = 138
-	WebMessageInfo_COMMUNITY_UNLINK_SUB_GROUP                               WebMessageInfo_WebMessageInfoStubType = 139
-	WebMessageInfo_GROUP_PARTICIPANT_ACCEPT                                 WebMessageInfo_WebMessageInfoStubType = 140
-	WebMessageInfo_GROUP_PARTICIPANT_LINKED_GROUP_JOIN                      WebMessageInfo_WebMessageInfoStubType = 141
-	WebMessageInfo_COMMUNITY_CREATE                                         WebMessageInfo_WebMessageInfoStubType = 142
-	WebMessageInfo_EPHEMERAL_KEEP_IN_CHAT                                   WebMessageInfo_WebMessageInfoStubType = 143
-)
-
-// Enum value maps for WebMessageInfo_WebMessageInfoStubType.
-var (
-	WebMessageInfo_WebMessageInfoStubType_name = map[int32]string{
+	WebMessageInfo_StubType_name = map[int32]string{
 		0:   "UNKNOWN",
 		1:   "REVOKE",
 		2:   "CIPHERTEXT",
@@ -3165,8 +3233,14 @@ var (
 		141: "GROUP_PARTICIPANT_LINKED_GROUP_JOIN",
 		142: "COMMUNITY_CREATE",
 		143: "EPHEMERAL_KEEP_IN_CHAT",
-	}
-	WebMessageInfo_WebMessageInfoStubType_value = map[string]int32{
+		144: "GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST",
+		145: "GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE",
+		146: "INTEGRITY_UNLINK_PARENT_GROUP",
+		147: "COMMUNITY_PARTICIPANT_PROMOTE",
+		148: "COMMUNITY_PARTICIPANT_DEMOTE",
+		149: "COMMUNITY_PARENT_GROUP_DELETED",
+	}
+	WebMessageInfo_StubType_value = map[string]int32{
 		"UNKNOWN":                                                  0,
 		"REVOKE":                                                   1,
 		"CIPHERTEXT":                                               2,
@@ -3311,352 +3385,284 @@ var (
 		"GROUP_PARTICIPANT_LINKED_GROUP_JOIN":                      141,
 		"COMMUNITY_CREATE":                                         142,
 		"EPHEMERAL_KEEP_IN_CHAT":                                   143,
+		"GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST":                   144,
+		"GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE":                      145,
+		"INTEGRITY_UNLINK_PARENT_GROUP":                            146,
+		"COMMUNITY_PARTICIPANT_PROMOTE":                            147,
+		"COMMUNITY_PARTICIPANT_DEMOTE":                             148,
+		"COMMUNITY_PARENT_GROUP_DELETED":                           149,
 	}
 )
 
-func (x WebMessageInfo_WebMessageInfoStubType) Enum() *WebMessageInfo_WebMessageInfoStubType {
-	p := new(WebMessageInfo_WebMessageInfoStubType)
-	*p = x
-	return p
-}
-
-func (x WebMessageInfo_WebMessageInfoStubType) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (WebMessageInfo_WebMessageInfoStubType) Descriptor() protoreflect.EnumDescriptor {
-	return file_binary_proto_def_proto_enumTypes[45].Descriptor()
-}
-
-func (WebMessageInfo_WebMessageInfoStubType) Type() protoreflect.EnumType {
-	return &file_binary_proto_def_proto_enumTypes[45]
-}
-
-func (x WebMessageInfo_WebMessageInfoStubType) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *WebMessageInfo_WebMessageInfoStubType) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = WebMessageInfo_WebMessageInfoStubType(num)
-	return nil
-}
-
-// Deprecated: Use WebMessageInfo_WebMessageInfoStubType.Descriptor instead.
-func (WebMessageInfo_WebMessageInfoStubType) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{185, 1}
-}
-
-type WebMessageInfo_WebMessageInfoBizPrivacyStatus int32
-
-const (
-	WebMessageInfo_E2EE       WebMessageInfo_WebMessageInfoBizPrivacyStatus = 0
-	WebMessageInfo_FB         WebMessageInfo_WebMessageInfoBizPrivacyStatus = 2
-	WebMessageInfo_BSP        WebMessageInfo_WebMessageInfoBizPrivacyStatus = 1
-	WebMessageInfo_BSP_AND_FB WebMessageInfo_WebMessageInfoBizPrivacyStatus = 3
-)
-
-// Enum value maps for WebMessageInfo_WebMessageInfoBizPrivacyStatus.
-var (
-	WebMessageInfo_WebMessageInfoBizPrivacyStatus_name = map[int32]string{
-		0: "E2EE",
-		2: "FB",
-		1: "BSP",
-		3: "BSP_AND_FB",
-	}
-	WebMessageInfo_WebMessageInfoBizPrivacyStatus_value = map[string]int32{
-		"E2EE":       0,
-		"FB":         2,
-		"BSP":        1,
-		"BSP_AND_FB": 3,
-	}
-)
-
-func (x WebMessageInfo_WebMessageInfoBizPrivacyStatus) Enum() *WebMessageInfo_WebMessageInfoBizPrivacyStatus {
-	p := new(WebMessageInfo_WebMessageInfoBizPrivacyStatus)
+func (x WebMessageInfo_StubType) Enum() *WebMessageInfo_StubType {
+	p := new(WebMessageInfo_StubType)
 	*p = x
 	return p
 }
 
-func (x WebMessageInfo_WebMessageInfoBizPrivacyStatus) String() string {
+func (x WebMessageInfo_StubType) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (WebMessageInfo_WebMessageInfoBizPrivacyStatus) Descriptor() protoreflect.EnumDescriptor {
+func (WebMessageInfo_StubType) Descriptor() protoreflect.EnumDescriptor {
 	return file_binary_proto_def_proto_enumTypes[46].Descriptor()
 }
 
-func (WebMessageInfo_WebMessageInfoBizPrivacyStatus) Type() protoreflect.EnumType {
+func (WebMessageInfo_StubType) Type() protoreflect.EnumType {
 	return &file_binary_proto_def_proto_enumTypes[46]
 }
 
-func (x WebMessageInfo_WebMessageInfoBizPrivacyStatus) Number() protoreflect.EnumNumber {
+func (x WebMessageInfo_StubType) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *WebMessageInfo_WebMessageInfoBizPrivacyStatus) UnmarshalJSON(b []byte) error {
+func (x *WebMessageInfo_StubType) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = WebMessageInfo_WebMessageInfoBizPrivacyStatus(num)
+	*x = WebMessageInfo_StubType(num)
 	return nil
 }
 
-// Deprecated: Use WebMessageInfo_WebMessageInfoBizPrivacyStatus.Descriptor instead.
-func (WebMessageInfo_WebMessageInfoBizPrivacyStatus) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{185, 2}
+// Deprecated: Use WebMessageInfo_StubType.Descriptor instead.
+func (WebMessageInfo_StubType) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{144, 0}
 }
 
-type WebFeatures_WebFeaturesFlag int32
+type WebMessageInfo_Status int32
 
 const (
-	WebFeatures_NOT_STARTED   WebFeatures_WebFeaturesFlag = 0
-	WebFeatures_FORCE_UPGRADE WebFeatures_WebFeaturesFlag = 1
-	WebFeatures_DEVELOPMENT   WebFeatures_WebFeaturesFlag = 2
-	WebFeatures_PRODUCTION    WebFeatures_WebFeaturesFlag = 3
+	WebMessageInfo_ERROR        WebMessageInfo_Status = 0
+	WebMessageInfo_PENDING      WebMessageInfo_Status = 1
+	WebMessageInfo_SERVER_ACK   WebMessageInfo_Status = 2
+	WebMessageInfo_DELIVERY_ACK WebMessageInfo_Status = 3
+	WebMessageInfo_READ         WebMessageInfo_Status = 4
+	WebMessageInfo_PLAYED       WebMessageInfo_Status = 5
 )
 
-// Enum value maps for WebFeatures_WebFeaturesFlag.
+// Enum value maps for WebMessageInfo_Status.
 var (
-	WebFeatures_WebFeaturesFlag_name = map[int32]string{
-		0: "NOT_STARTED",
-		1: "FORCE_UPGRADE",
-		2: "DEVELOPMENT",
-		3: "PRODUCTION",
+	WebMessageInfo_Status_name = map[int32]string{
+		0: "ERROR",
+		1: "PENDING",
+		2: "SERVER_ACK",
+		3: "DELIVERY_ACK",
+		4: "READ",
+		5: "PLAYED",
 	}
-	WebFeatures_WebFeaturesFlag_value = map[string]int32{
-		"NOT_STARTED":   0,
-		"FORCE_UPGRADE": 1,
-		"DEVELOPMENT":   2,
-		"PRODUCTION":    3,
+	WebMessageInfo_Status_value = map[string]int32{
+		"ERROR":        0,
+		"PENDING":      1,
+		"SERVER_ACK":   2,
+		"DELIVERY_ACK": 3,
+		"READ":         4,
+		"PLAYED":       5,
 	}
 )
 
-func (x WebFeatures_WebFeaturesFlag) Enum() *WebFeatures_WebFeaturesFlag {
-	p := new(WebFeatures_WebFeaturesFlag)
+func (x WebMessageInfo_Status) Enum() *WebMessageInfo_Status {
+	p := new(WebMessageInfo_Status)
 	*p = x
 	return p
 }
 
-func (x WebFeatures_WebFeaturesFlag) String() string {
+func (x WebMessageInfo_Status) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (WebFeatures_WebFeaturesFlag) Descriptor() protoreflect.EnumDescriptor {
+func (WebMessageInfo_Status) Descriptor() protoreflect.EnumDescriptor {
 	return file_binary_proto_def_proto_enumTypes[47].Descriptor()
 }
 
-func (WebFeatures_WebFeaturesFlag) Type() protoreflect.EnumType {
+func (WebMessageInfo_Status) Type() protoreflect.EnumType {
 	return &file_binary_proto_def_proto_enumTypes[47]
 }
 
-func (x WebFeatures_WebFeaturesFlag) Number() protoreflect.EnumNumber {
+func (x WebMessageInfo_Status) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *WebFeatures_WebFeaturesFlag) UnmarshalJSON(b []byte) error {
+func (x *WebMessageInfo_Status) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = WebFeatures_WebFeaturesFlag(num)
+	*x = WebMessageInfo_Status(num)
 	return nil
 }
 
-// Deprecated: Use WebFeatures_WebFeaturesFlag.Descriptor instead.
-func (WebFeatures_WebFeaturesFlag) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{186, 0}
+// Deprecated: Use WebMessageInfo_Status.Descriptor instead.
+func (WebMessageInfo_Status) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{144, 1}
 }
 
-type PaymentInfo_PaymentInfoCurrency int32
+type WebMessageInfo_BizPrivacyStatus int32
 
 const (
-	PaymentInfo_UNKNOWN_CURRENCY PaymentInfo_PaymentInfoCurrency = 0
-	PaymentInfo_INR              PaymentInfo_PaymentInfoCurrency = 1
+	WebMessageInfo_E2EE       WebMessageInfo_BizPrivacyStatus = 0
+	WebMessageInfo_FB         WebMessageInfo_BizPrivacyStatus = 2
+	WebMessageInfo_BSP        WebMessageInfo_BizPrivacyStatus = 1
+	WebMessageInfo_BSP_AND_FB WebMessageInfo_BizPrivacyStatus = 3
 )
 
-// Enum value maps for PaymentInfo_PaymentInfoCurrency.
+// Enum value maps for WebMessageInfo_BizPrivacyStatus.
 var (
-	PaymentInfo_PaymentInfoCurrency_name = map[int32]string{
-		0: "UNKNOWN_CURRENCY",
-		1: "INR",
+	WebMessageInfo_BizPrivacyStatus_name = map[int32]string{
+		0: "E2EE",
+		2: "FB",
+		1: "BSP",
+		3: "BSP_AND_FB",
 	}
-	PaymentInfo_PaymentInfoCurrency_value = map[string]int32{
-		"UNKNOWN_CURRENCY": 0,
-		"INR":              1,
+	WebMessageInfo_BizPrivacyStatus_value = map[string]int32{
+		"E2EE":       0,
+		"FB":         2,
+		"BSP":        1,
+		"BSP_AND_FB": 3,
 	}
 )
 
-func (x PaymentInfo_PaymentInfoCurrency) Enum() *PaymentInfo_PaymentInfoCurrency {
-	p := new(PaymentInfo_PaymentInfoCurrency)
+func (x WebMessageInfo_BizPrivacyStatus) Enum() *WebMessageInfo_BizPrivacyStatus {
+	p := new(WebMessageInfo_BizPrivacyStatus)
 	*p = x
 	return p
 }
 
-func (x PaymentInfo_PaymentInfoCurrency) String() string {
+func (x WebMessageInfo_BizPrivacyStatus) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (PaymentInfo_PaymentInfoCurrency) Descriptor() protoreflect.EnumDescriptor {
+func (WebMessageInfo_BizPrivacyStatus) Descriptor() protoreflect.EnumDescriptor {
 	return file_binary_proto_def_proto_enumTypes[48].Descriptor()
 }
 
-func (PaymentInfo_PaymentInfoCurrency) Type() protoreflect.EnumType {
+func (WebMessageInfo_BizPrivacyStatus) Type() protoreflect.EnumType {
 	return &file_binary_proto_def_proto_enumTypes[48]
 }
 
-func (x PaymentInfo_PaymentInfoCurrency) Number() protoreflect.EnumNumber {
+func (x WebMessageInfo_BizPrivacyStatus) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *PaymentInfo_PaymentInfoCurrency) UnmarshalJSON(b []byte) error {
+func (x *WebMessageInfo_BizPrivacyStatus) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = PaymentInfo_PaymentInfoCurrency(num)
+	*x = WebMessageInfo_BizPrivacyStatus(num)
 	return nil
 }
 
-// Deprecated: Use PaymentInfo_PaymentInfoCurrency.Descriptor instead.
-func (PaymentInfo_PaymentInfoCurrency) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{193, 0}
+// Deprecated: Use WebMessageInfo_BizPrivacyStatus.Descriptor instead.
+func (WebMessageInfo_BizPrivacyStatus) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{144, 2}
 }
 
-type PaymentInfo_PaymentInfoStatus int32
+type WebFeatures_Flag int32
 
 const (
-	PaymentInfo_UNKNOWN_STATUS     PaymentInfo_PaymentInfoStatus = 0
-	PaymentInfo_PROCESSING         PaymentInfo_PaymentInfoStatus = 1
-	PaymentInfo_SENT               PaymentInfo_PaymentInfoStatus = 2
-	PaymentInfo_NEED_TO_ACCEPT     PaymentInfo_PaymentInfoStatus = 3
-	PaymentInfo_COMPLETE           PaymentInfo_PaymentInfoStatus = 4
-	PaymentInfo_COULD_NOT_COMPLETE PaymentInfo_PaymentInfoStatus = 5
-	PaymentInfo_REFUNDED           PaymentInfo_PaymentInfoStatus = 6
-	PaymentInfo_EXPIRED            PaymentInfo_PaymentInfoStatus = 7
-	PaymentInfo_REJECTED           PaymentInfo_PaymentInfoStatus = 8
-	PaymentInfo_CANCELLED          PaymentInfo_PaymentInfoStatus = 9
-	PaymentInfo_WAITING_FOR_PAYER  PaymentInfo_PaymentInfoStatus = 10
-	PaymentInfo_WAITING            PaymentInfo_PaymentInfoStatus = 11
+	WebFeatures_NOT_STARTED   WebFeatures_Flag = 0
+	WebFeatures_FORCE_UPGRADE WebFeatures_Flag = 1
+	WebFeatures_DEVELOPMENT   WebFeatures_Flag = 2
+	WebFeatures_PRODUCTION    WebFeatures_Flag = 3
 )
 
-// Enum value maps for PaymentInfo_PaymentInfoStatus.
+// Enum value maps for WebFeatures_Flag.
 var (
-	PaymentInfo_PaymentInfoStatus_name = map[int32]string{
-		0:  "UNKNOWN_STATUS",
-		1:  "PROCESSING",
-		2:  "SENT",
-		3:  "NEED_TO_ACCEPT",
-		4:  "COMPLETE",
-		5:  "COULD_NOT_COMPLETE",
-		6:  "REFUNDED",
-		7:  "EXPIRED",
-		8:  "REJECTED",
-		9:  "CANCELLED",
-		10: "WAITING_FOR_PAYER",
-		11: "WAITING",
+	WebFeatures_Flag_name = map[int32]string{
+		0: "NOT_STARTED",
+		1: "FORCE_UPGRADE",
+		2: "DEVELOPMENT",
+		3: "PRODUCTION",
 	}
-	PaymentInfo_PaymentInfoStatus_value = map[string]int32{
-		"UNKNOWN_STATUS":     0,
-		"PROCESSING":         1,
-		"SENT":               2,
-		"NEED_TO_ACCEPT":     3,
-		"COMPLETE":           4,
-		"COULD_NOT_COMPLETE": 5,
-		"REFUNDED":           6,
-		"EXPIRED":            7,
-		"REJECTED":           8,
-		"CANCELLED":          9,
-		"WAITING_FOR_PAYER":  10,
-		"WAITING":            11,
+	WebFeatures_Flag_value = map[string]int32{
+		"NOT_STARTED":   0,
+		"FORCE_UPGRADE": 1,
+		"DEVELOPMENT":   2,
+		"PRODUCTION":    3,
 	}
 )
 
-func (x PaymentInfo_PaymentInfoStatus) Enum() *PaymentInfo_PaymentInfoStatus {
-	p := new(PaymentInfo_PaymentInfoStatus)
+func (x WebFeatures_Flag) Enum() *WebFeatures_Flag {
+	p := new(WebFeatures_Flag)
 	*p = x
 	return p
 }
 
-func (x PaymentInfo_PaymentInfoStatus) String() string {
+func (x WebFeatures_Flag) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (PaymentInfo_PaymentInfoStatus) Descriptor() protoreflect.EnumDescriptor {
+func (WebFeatures_Flag) Descriptor() protoreflect.EnumDescriptor {
 	return file_binary_proto_def_proto_enumTypes[49].Descriptor()
 }
 
-func (PaymentInfo_PaymentInfoStatus) Type() protoreflect.EnumType {
+func (WebFeatures_Flag) Type() protoreflect.EnumType {
 	return &file_binary_proto_def_proto_enumTypes[49]
 }
 
-func (x PaymentInfo_PaymentInfoStatus) Number() protoreflect.EnumNumber {
+func (x WebFeatures_Flag) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *PaymentInfo_PaymentInfoStatus) UnmarshalJSON(b []byte) error {
+func (x *WebFeatures_Flag) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = PaymentInfo_PaymentInfoStatus(num)
+	*x = WebFeatures_Flag(num)
 	return nil
 }
 
-// Deprecated: Use PaymentInfo_PaymentInfoStatus.Descriptor instead.
-func (PaymentInfo_PaymentInfoStatus) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{193, 1}
+// Deprecated: Use WebFeatures_Flag.Descriptor instead.
+func (WebFeatures_Flag) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{145, 0}
 }
 
-type PaymentInfo_PaymentInfoTxnStatus int32
+type PaymentInfo_TxnStatus int32
 
 const (
-	PaymentInfo_UNKNOWN                       PaymentInfo_PaymentInfoTxnStatus = 0
-	PaymentInfo_PENDING_SETUP                 PaymentInfo_PaymentInfoTxnStatus = 1
-	PaymentInfo_PENDING_RECEIVER_SETUP        PaymentInfo_PaymentInfoTxnStatus = 2
-	PaymentInfo_INIT                          PaymentInfo_PaymentInfoTxnStatus = 3
-	PaymentInfo_SUCCESS                       PaymentInfo_PaymentInfoTxnStatus = 4
-	PaymentInfo_COMPLETED                     PaymentInfo_PaymentInfoTxnStatus = 5
-	PaymentInfo_FAILED                        PaymentInfo_PaymentInfoTxnStatus = 6
-	PaymentInfo_FAILED_RISK                   PaymentInfo_PaymentInfoTxnStatus = 7
-	PaymentInfo_FAILED_PROCESSING             PaymentInfo_PaymentInfoTxnStatus = 8
-	PaymentInfo_FAILED_RECEIVER_PROCESSING    PaymentInfo_PaymentInfoTxnStatus = 9
-	PaymentInfo_FAILED_DA                     PaymentInfo_PaymentInfoTxnStatus = 10
-	PaymentInfo_FAILED_DA_FINAL               PaymentInfo_PaymentInfoTxnStatus = 11
-	PaymentInfo_REFUNDED_TXN                  PaymentInfo_PaymentInfoTxnStatus = 12
-	PaymentInfo_REFUND_FAILED                 PaymentInfo_PaymentInfoTxnStatus = 13
-	PaymentInfo_REFUND_FAILED_PROCESSING      PaymentInfo_PaymentInfoTxnStatus = 14
-	PaymentInfo_REFUND_FAILED_DA              PaymentInfo_PaymentInfoTxnStatus = 15
-	PaymentInfo_EXPIRED_TXN                   PaymentInfo_PaymentInfoTxnStatus = 16
-	PaymentInfo_AUTH_CANCELED                 PaymentInfo_PaymentInfoTxnStatus = 17
-	PaymentInfo_AUTH_CANCEL_FAILED_PROCESSING PaymentInfo_PaymentInfoTxnStatus = 18
-	PaymentInfo_AUTH_CANCEL_FAILED            PaymentInfo_PaymentInfoTxnStatus = 19
-	PaymentInfo_COLLECT_INIT                  PaymentInfo_PaymentInfoTxnStatus = 20
-	PaymentInfo_COLLECT_SUCCESS               PaymentInfo_PaymentInfoTxnStatus = 21
-	PaymentInfo_COLLECT_FAILED                PaymentInfo_PaymentInfoTxnStatus = 22
-	PaymentInfo_COLLECT_FAILED_RISK           PaymentInfo_PaymentInfoTxnStatus = 23
-	PaymentInfo_COLLECT_REJECTED              PaymentInfo_PaymentInfoTxnStatus = 24
-	PaymentInfo_COLLECT_EXPIRED               PaymentInfo_PaymentInfoTxnStatus = 25
-	PaymentInfo_COLLECT_CANCELED              PaymentInfo_PaymentInfoTxnStatus = 26
-	PaymentInfo_COLLECT_CANCELLING            PaymentInfo_PaymentInfoTxnStatus = 27
-	PaymentInfo_IN_REVIEW                     PaymentInfo_PaymentInfoTxnStatus = 28
-	PaymentInfo_REVERSAL_SUCCESS              PaymentInfo_PaymentInfoTxnStatus = 29
-	PaymentInfo_REVERSAL_PENDING              PaymentInfo_PaymentInfoTxnStatus = 30
-	PaymentInfo_REFUND_PENDING                PaymentInfo_PaymentInfoTxnStatus = 31
+	PaymentInfo_UNKNOWN                       PaymentInfo_TxnStatus = 0
+	PaymentInfo_PENDING_SETUP                 PaymentInfo_TxnStatus = 1
+	PaymentInfo_PENDING_RECEIVER_SETUP        PaymentInfo_TxnStatus = 2
+	PaymentInfo_INIT                          PaymentInfo_TxnStatus = 3
+	PaymentInfo_SUCCESS                       PaymentInfo_TxnStatus = 4
+	PaymentInfo_COMPLETED                     PaymentInfo_TxnStatus = 5
+	PaymentInfo_FAILED                        PaymentInfo_TxnStatus = 6
+	PaymentInfo_FAILED_RISK                   PaymentInfo_TxnStatus = 7
+	PaymentInfo_FAILED_PROCESSING             PaymentInfo_TxnStatus = 8
+	PaymentInfo_FAILED_RECEIVER_PROCESSING    PaymentInfo_TxnStatus = 9
+	PaymentInfo_FAILED_DA                     PaymentInfo_TxnStatus = 10
+	PaymentInfo_FAILED_DA_FINAL               PaymentInfo_TxnStatus = 11
+	PaymentInfo_REFUNDED_TXN                  PaymentInfo_TxnStatus = 12
+	PaymentInfo_REFUND_FAILED                 PaymentInfo_TxnStatus = 13
+	PaymentInfo_REFUND_FAILED_PROCESSING      PaymentInfo_TxnStatus = 14
+	PaymentInfo_REFUND_FAILED_DA              PaymentInfo_TxnStatus = 15
+	PaymentInfo_EXPIRED_TXN                   PaymentInfo_TxnStatus = 16
+	PaymentInfo_AUTH_CANCELED                 PaymentInfo_TxnStatus = 17
+	PaymentInfo_AUTH_CANCEL_FAILED_PROCESSING PaymentInfo_TxnStatus = 18
+	PaymentInfo_AUTH_CANCEL_FAILED            PaymentInfo_TxnStatus = 19
+	PaymentInfo_COLLECT_INIT                  PaymentInfo_TxnStatus = 20
+	PaymentInfo_COLLECT_SUCCESS               PaymentInfo_TxnStatus = 21
+	PaymentInfo_COLLECT_FAILED                PaymentInfo_TxnStatus = 22
+	PaymentInfo_COLLECT_FAILED_RISK           PaymentInfo_TxnStatus = 23
+	PaymentInfo_COLLECT_REJECTED              PaymentInfo_TxnStatus = 24
+	PaymentInfo_COLLECT_EXPIRED               PaymentInfo_TxnStatus = 25
+	PaymentInfo_COLLECT_CANCELED              PaymentInfo_TxnStatus = 26
+	PaymentInfo_COLLECT_CANCELLING            PaymentInfo_TxnStatus = 27
+	PaymentInfo_IN_REVIEW                     PaymentInfo_TxnStatus = 28
+	PaymentInfo_REVERSAL_SUCCESS              PaymentInfo_TxnStatus = 29
+	PaymentInfo_REVERSAL_PENDING              PaymentInfo_TxnStatus = 30
+	PaymentInfo_REFUND_PENDING                PaymentInfo_TxnStatus = 31
 )
 
-// Enum value maps for PaymentInfo_PaymentInfoTxnStatus.
+// Enum value maps for PaymentInfo_TxnStatus.
 var (
-	PaymentInfo_PaymentInfoTxnStatus_name = map[int32]string{
+	PaymentInfo_TxnStatus_name = map[int32]string{
 		0:  "UNKNOWN",
 		1:  "PENDING_SETUP",
 		2:  "PENDING_RECEIVER_SETUP",
@@ -3690,7 +3696,7 @@ var (
 		30: "REVERSAL_PENDING",
 		31: "REFUND_PENDING",
 	}
-	PaymentInfo_PaymentInfoTxnStatus_value = map[string]int32{
+	PaymentInfo_TxnStatus_value = map[string]int32{
 		"UNKNOWN":                       0,
 		"PENDING_SETUP":                 1,
 		"PENDING_RECEIVER_SETUP":        2,
@@ -3726,41 +3732,183 @@ var (
 	}
 )
 
-func (x PaymentInfo_PaymentInfoTxnStatus) Enum() *PaymentInfo_PaymentInfoTxnStatus {
-	p := new(PaymentInfo_PaymentInfoTxnStatus)
+func (x PaymentInfo_TxnStatus) Enum() *PaymentInfo_TxnStatus {
+	p := new(PaymentInfo_TxnStatus)
 	*p = x
 	return p
 }
 
-func (x PaymentInfo_PaymentInfoTxnStatus) String() string {
+func (x PaymentInfo_TxnStatus) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (PaymentInfo_PaymentInfoTxnStatus) Descriptor() protoreflect.EnumDescriptor {
+func (PaymentInfo_TxnStatus) Descriptor() protoreflect.EnumDescriptor {
 	return file_binary_proto_def_proto_enumTypes[50].Descriptor()
 }
 
-func (PaymentInfo_PaymentInfoTxnStatus) Type() protoreflect.EnumType {
+func (PaymentInfo_TxnStatus) Type() protoreflect.EnumType {
 	return &file_binary_proto_def_proto_enumTypes[50]
 }
 
-func (x PaymentInfo_PaymentInfoTxnStatus) Number() protoreflect.EnumNumber {
+func (x PaymentInfo_TxnStatus) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *PaymentInfo_TxnStatus) UnmarshalJSON(b []byte) error {
+	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+	if err != nil {
+		return err
+	}
+	*x = PaymentInfo_TxnStatus(num)
+	return nil
+}
+
+// Deprecated: Use PaymentInfo_TxnStatus.Descriptor instead.
+func (PaymentInfo_TxnStatus) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{152, 0}
+}
+
+type PaymentInfo_Status int32
+
+const (
+	PaymentInfo_UNKNOWN_STATUS     PaymentInfo_Status = 0
+	PaymentInfo_PROCESSING         PaymentInfo_Status = 1
+	PaymentInfo_SENT               PaymentInfo_Status = 2
+	PaymentInfo_NEED_TO_ACCEPT     PaymentInfo_Status = 3
+	PaymentInfo_COMPLETE           PaymentInfo_Status = 4
+	PaymentInfo_COULD_NOT_COMPLETE PaymentInfo_Status = 5
+	PaymentInfo_REFUNDED           PaymentInfo_Status = 6
+	PaymentInfo_EXPIRED            PaymentInfo_Status = 7
+	PaymentInfo_REJECTED           PaymentInfo_Status = 8
+	PaymentInfo_CANCELLED          PaymentInfo_Status = 9
+	PaymentInfo_WAITING_FOR_PAYER  PaymentInfo_Status = 10
+	PaymentInfo_WAITING            PaymentInfo_Status = 11
+)
+
+// Enum value maps for PaymentInfo_Status.
+var (
+	PaymentInfo_Status_name = map[int32]string{
+		0:  "UNKNOWN_STATUS",
+		1:  "PROCESSING",
+		2:  "SENT",
+		3:  "NEED_TO_ACCEPT",
+		4:  "COMPLETE",
+		5:  "COULD_NOT_COMPLETE",
+		6:  "REFUNDED",
+		7:  "EXPIRED",
+		8:  "REJECTED",
+		9:  "CANCELLED",
+		10: "WAITING_FOR_PAYER",
+		11: "WAITING",
+	}
+	PaymentInfo_Status_value = map[string]int32{
+		"UNKNOWN_STATUS":     0,
+		"PROCESSING":         1,
+		"SENT":               2,
+		"NEED_TO_ACCEPT":     3,
+		"COMPLETE":           4,
+		"COULD_NOT_COMPLETE": 5,
+		"REFUNDED":           6,
+		"EXPIRED":            7,
+		"REJECTED":           8,
+		"CANCELLED":          9,
+		"WAITING_FOR_PAYER":  10,
+		"WAITING":            11,
+	}
+)
+
+func (x PaymentInfo_Status) Enum() *PaymentInfo_Status {
+	p := new(PaymentInfo_Status)
+	*p = x
+	return p
+}
+
+func (x PaymentInfo_Status) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (PaymentInfo_Status) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[51].Descriptor()
+}
+
+func (PaymentInfo_Status) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[51]
+}
+
+func (x PaymentInfo_Status) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Do not use.
+func (x *PaymentInfo_Status) UnmarshalJSON(b []byte) error {
+	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
+	if err != nil {
+		return err
+	}
+	*x = PaymentInfo_Status(num)
+	return nil
+}
+
+// Deprecated: Use PaymentInfo_Status.Descriptor instead.
+func (PaymentInfo_Status) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{152, 1}
+}
+
+type PaymentInfo_Currency int32
+
+const (
+	PaymentInfo_UNKNOWN_CURRENCY PaymentInfo_Currency = 0
+	PaymentInfo_INR              PaymentInfo_Currency = 1
+)
+
+// Enum value maps for PaymentInfo_Currency.
+var (
+	PaymentInfo_Currency_name = map[int32]string{
+		0: "UNKNOWN_CURRENCY",
+		1: "INR",
+	}
+	PaymentInfo_Currency_value = map[string]int32{
+		"UNKNOWN_CURRENCY": 0,
+		"INR":              1,
+	}
+)
+
+func (x PaymentInfo_Currency) Enum() *PaymentInfo_Currency {
+	p := new(PaymentInfo_Currency)
+	*p = x
+	return p
+}
+
+func (x PaymentInfo_Currency) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (PaymentInfo_Currency) Descriptor() protoreflect.EnumDescriptor {
+	return file_binary_proto_def_proto_enumTypes[52].Descriptor()
+}
+
+func (PaymentInfo_Currency) Type() protoreflect.EnumType {
+	return &file_binary_proto_def_proto_enumTypes[52]
+}
+
+func (x PaymentInfo_Currency) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
 // Deprecated: Do not use.
-func (x *PaymentInfo_PaymentInfoTxnStatus) UnmarshalJSON(b []byte) error {
+func (x *PaymentInfo_Currency) UnmarshalJSON(b []byte) error {
 	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
 	if err != nil {
 		return err
 	}
-	*x = PaymentInfo_PaymentInfoTxnStatus(num)
+	*x = PaymentInfo_Currency(num)
 	return nil
 }
 
-// Deprecated: Use PaymentInfo_PaymentInfoTxnStatus.Descriptor instead.
-func (PaymentInfo_PaymentInfoTxnStatus) EnumDescriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{193, 2}
+// Deprecated: Use PaymentInfo_Currency.Descriptor instead.
+func (PaymentInfo_Currency) EnumDescriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{152, 2}
 }
 
 type ADVSignedKeyIndexList struct {
@@ -4083,10 +4231,10 @@ type DeviceProps struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Os              *string                              `protobuf:"bytes,1,opt,name=os" json:"os,omitempty"`
-	Version         *AppVersion                          `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
-	PlatformType    *DeviceProps_DevicePropsPlatformType `protobuf:"varint,3,opt,name=platformType,enum=proto.DeviceProps_DevicePropsPlatformType" json:"platformType,omitempty"`
-	RequireFullSync *bool                                `protobuf:"varint,4,opt,name=requireFullSync" json:"requireFullSync,omitempty"`
+	Os              *string                   `protobuf:"bytes,1,opt,name=os" json:"os,omitempty"`
+	Version         *DeviceProps_AppVersion   `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
+	PlatformType    *DeviceProps_PlatformType `protobuf:"varint,3,opt,name=platformType,enum=proto.DeviceProps_PlatformType" json:"platformType,omitempty"`
+	RequireFullSync *bool                     `protobuf:"varint,4,opt,name=requireFullSync" json:"requireFullSync,omitempty"`
 }
 
 func (x *DeviceProps) Reset() {
@@ -4128,14 +4276,14 @@ func (x *DeviceProps) GetOs() string {
 	return ""
 }
 
-func (x *DeviceProps) GetVersion() *AppVersion {
+func (x *DeviceProps) GetVersion() *DeviceProps_AppVersion {
 	if x != nil {
 		return x.Version
 	}
 	return nil
 }
 
-func (x *DeviceProps) GetPlatformType() DeviceProps_DevicePropsPlatformType {
+func (x *DeviceProps) GetPlatformType() DeviceProps_PlatformType {
 	if x != nil && x.PlatformType != nil {
 		return *x.PlatformType
 	}
@@ -4149,20 +4297,16 @@ func (x *DeviceProps) GetRequireFullSync() bool {
 	return false
 }
 
-type AppVersion struct {
+type PollVoteMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Primary    *uint32 `protobuf:"varint,1,opt,name=primary" json:"primary,omitempty"`
-	Secondary  *uint32 `protobuf:"varint,2,opt,name=secondary" json:"secondary,omitempty"`
-	Tertiary   *uint32 `protobuf:"varint,3,opt,name=tertiary" json:"tertiary,omitempty"`
-	Quaternary *uint32 `protobuf:"varint,4,opt,name=quaternary" json:"quaternary,omitempty"`
-	Quinary    *uint32 `protobuf:"varint,5,opt,name=quinary" json:"quinary,omitempty"`
+	SelectedOptions [][]byte `protobuf:"bytes,1,rep,name=selectedOptions" json:"selectedOptions,omitempty"`
 }
 
-func (x *AppVersion) Reset() {
-	*x = AppVersion{}
+func (x *PollVoteMessage) Reset() {
+	*x = PollVoteMessage{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[6]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4170,13 +4314,13 @@ func (x *AppVersion) Reset() {
 	}
 }
 
-func (x *AppVersion) String() string {
+func (x *PollVoteMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AppVersion) ProtoMessage() {}
+func (*PollVoteMessage) ProtoMessage() {}
 
-func (x *AppVersion) ProtoReflect() protoreflect.Message {
+func (x *PollVoteMessage) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[6]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4188,66 +4332,31 @@ func (x *AppVersion) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AppVersion.ProtoReflect.Descriptor instead.
-func (*AppVersion) Descriptor() ([]byte, []int) {
+// Deprecated: Use PollVoteMessage.ProtoReflect.Descriptor instead.
+func (*PollVoteMessage) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{6}
 }
 
-func (x *AppVersion) GetPrimary() uint32 {
-	if x != nil && x.Primary != nil {
-		return *x.Primary
+func (x *PollVoteMessage) GetSelectedOptions() [][]byte {
+	if x != nil {
+		return x.SelectedOptions
 	}
-	return 0
+	return nil
 }
 
-func (x *AppVersion) GetSecondary() uint32 {
-	if x != nil && x.Secondary != nil {
-		return *x.Secondary
-	}
-	return 0
-}
+type PollUpdateMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *AppVersion) GetTertiary() uint32 {
-	if x != nil && x.Tertiary != nil {
-		return *x.Tertiary
-	}
-	return 0
-}
-
-func (x *AppVersion) GetQuaternary() uint32 {
-	if x != nil && x.Quaternary != nil {
-		return *x.Quaternary
-	}
-	return 0
-}
-
-func (x *AppVersion) GetQuinary() uint32 {
-	if x != nil && x.Quinary != nil {
-		return *x.Quinary
-	}
-	return 0
-}
-
-type ProductSnapshot struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ProductImage        *ImageMessage `protobuf:"bytes,1,opt,name=productImage" json:"productImage,omitempty"`
-	ProductId           *string       `protobuf:"bytes,2,opt,name=productId" json:"productId,omitempty"`
-	Title               *string       `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
-	Description         *string       `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
-	CurrencyCode        *string       `protobuf:"bytes,5,opt,name=currencyCode" json:"currencyCode,omitempty"`
-	PriceAmount1000     *int64        `protobuf:"varint,6,opt,name=priceAmount1000" json:"priceAmount1000,omitempty"`
-	RetailerId          *string       `protobuf:"bytes,7,opt,name=retailerId" json:"retailerId,omitempty"`
-	Url                 *string       `protobuf:"bytes,8,opt,name=url" json:"url,omitempty"`
-	ProductImageCount   *uint32       `protobuf:"varint,9,opt,name=productImageCount" json:"productImageCount,omitempty"`
-	FirstImageId        *string       `protobuf:"bytes,11,opt,name=firstImageId" json:"firstImageId,omitempty"`
-	SalePriceAmount1000 *int64        `protobuf:"varint,12,opt,name=salePriceAmount1000" json:"salePriceAmount1000,omitempty"`
+	PollCreationMessageKey *MessageKey                `protobuf:"bytes,1,opt,name=pollCreationMessageKey" json:"pollCreationMessageKey,omitempty"`
+	Vote                   *PollEncValue              `protobuf:"bytes,2,opt,name=vote" json:"vote,omitempty"`
+	Metadata               *PollUpdateMessageMetadata `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"`
+	SenderTimestampMs      *int64                     `protobuf:"varint,4,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
 }
 
-func (x *ProductSnapshot) Reset() {
-	*x = ProductSnapshot{}
+func (x *PollUpdateMessage) Reset() {
+	*x = PollUpdateMessage{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[7]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4255,13 +4364,13 @@ func (x *ProductSnapshot) Reset() {
 	}
 }
 
-func (x *ProductSnapshot) String() string {
+func (x *PollUpdateMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ProductSnapshot) ProtoMessage() {}
+func (*PollUpdateMessage) ProtoMessage() {}
 
-func (x *ProductSnapshot) ProtoReflect() protoreflect.Message {
+func (x *PollUpdateMessage) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[7]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4273,100 +4382,47 @@ func (x *ProductSnapshot) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ProductSnapshot.ProtoReflect.Descriptor instead.
-func (*ProductSnapshot) Descriptor() ([]byte, []int) {
+// Deprecated: Use PollUpdateMessage.ProtoReflect.Descriptor instead.
+func (*PollUpdateMessage) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{7}
 }
 
-func (x *ProductSnapshot) GetProductImage() *ImageMessage {
+func (x *PollUpdateMessage) GetPollCreationMessageKey() *MessageKey {
 	if x != nil {
-		return x.ProductImage
+		return x.PollCreationMessageKey
 	}
 	return nil
 }
 
-func (x *ProductSnapshot) GetProductId() string {
-	if x != nil && x.ProductId != nil {
-		return *x.ProductId
-	}
-	return ""
-}
-
-func (x *ProductSnapshot) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
-	}
-	return ""
-}
-
-func (x *ProductSnapshot) GetDescription() string {
-	if x != nil && x.Description != nil {
-		return *x.Description
-	}
-	return ""
-}
-
-func (x *ProductSnapshot) GetCurrencyCode() string {
-	if x != nil && x.CurrencyCode != nil {
-		return *x.CurrencyCode
-	}
-	return ""
-}
-
-func (x *ProductSnapshot) GetPriceAmount1000() int64 {
-	if x != nil && x.PriceAmount1000 != nil {
-		return *x.PriceAmount1000
-	}
-	return 0
-}
-
-func (x *ProductSnapshot) GetRetailerId() string {
-	if x != nil && x.RetailerId != nil {
-		return *x.RetailerId
-	}
-	return ""
-}
-
-func (x *ProductSnapshot) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
-	}
-	return ""
-}
-
-func (x *ProductSnapshot) GetProductImageCount() uint32 {
-	if x != nil && x.ProductImageCount != nil {
-		return *x.ProductImageCount
+func (x *PollUpdateMessage) GetVote() *PollEncValue {
+	if x != nil {
+		return x.Vote
 	}
-	return 0
+	return nil
 }
 
-func (x *ProductSnapshot) GetFirstImageId() string {
-	if x != nil && x.FirstImageId != nil {
-		return *x.FirstImageId
+func (x *PollUpdateMessage) GetMetadata() *PollUpdateMessageMetadata {
+	if x != nil {
+		return x.Metadata
 	}
-	return ""
+	return nil
 }
 
-func (x *ProductSnapshot) GetSalePriceAmount1000() int64 {
-	if x != nil && x.SalePriceAmount1000 != nil {
-		return *x.SalePriceAmount1000
+func (x *PollUpdateMessage) GetSenderTimestampMs() int64 {
+	if x != nil && x.SenderTimestampMs != nil {
+		return *x.SenderTimestampMs
 	}
 	return 0
 }
 
-type CatalogSnapshot struct {
+type PollUpdateMessageMetadata struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
-
-	CatalogImage *ImageMessage `protobuf:"bytes,1,opt,name=catalogImage" json:"catalogImage,omitempty"`
-	Title        *string       `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"`
-	Description  *string       `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
 }
 
-func (x *CatalogSnapshot) Reset() {
-	*x = CatalogSnapshot{}
+func (x *PollUpdateMessageMetadata) Reset() {
+	*x = PollUpdateMessageMetadata{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[8]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4374,13 +4430,13 @@ func (x *CatalogSnapshot) Reset() {
 	}
 }
 
-func (x *CatalogSnapshot) String() string {
+func (x *PollUpdateMessageMetadata) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*CatalogSnapshot) ProtoMessage() {}
+func (*PollUpdateMessageMetadata) ProtoMessage() {}
 
-func (x *CatalogSnapshot) ProtoReflect() protoreflect.Message {
+func (x *PollUpdateMessageMetadata) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[8]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4392,43 +4448,22 @@ func (x *CatalogSnapshot) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use CatalogSnapshot.ProtoReflect.Descriptor instead.
-func (*CatalogSnapshot) Descriptor() ([]byte, []int) {
+// Deprecated: Use PollUpdateMessageMetadata.ProtoReflect.Descriptor instead.
+func (*PollUpdateMessageMetadata) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{8}
 }
 
-func (x *CatalogSnapshot) GetCatalogImage() *ImageMessage {
-	if x != nil {
-		return x.CatalogImage
-	}
-	return nil
-}
-
-func (x *CatalogSnapshot) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
-	}
-	return ""
-}
-
-func (x *CatalogSnapshot) GetDescription() string {
-	if x != nil && x.Description != nil {
-		return *x.Description
-	}
-	return ""
-}
-
-type PollVoteMessage struct {
+type PollEncValue struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	SelectedOptions   [][]byte `protobuf:"bytes,1,rep,name=selectedOptions" json:"selectedOptions,omitempty"`
-	SenderTimestampMs *int64   `protobuf:"varint,2,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
+	EncPayload []byte `protobuf:"bytes,1,opt,name=encPayload" json:"encPayload,omitempty"`
+	EncIv      []byte `protobuf:"bytes,2,opt,name=encIv" json:"encIv,omitempty"`
 }
 
-func (x *PollVoteMessage) Reset() {
-	*x = PollVoteMessage{}
+func (x *PollEncValue) Reset() {
+	*x = PollEncValue{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[9]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4436,13 +4471,13 @@ func (x *PollVoteMessage) Reset() {
 	}
 }
 
-func (x *PollVoteMessage) String() string {
+func (x *PollEncValue) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PollVoteMessage) ProtoMessage() {}
+func (*PollEncValue) ProtoMessage() {}
 
-func (x *PollVoteMessage) ProtoReflect() protoreflect.Message {
+func (x *PollEncValue) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[9]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4454,37 +4489,39 @@ func (x *PollVoteMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PollVoteMessage.ProtoReflect.Descriptor instead.
-func (*PollVoteMessage) Descriptor() ([]byte, []int) {
+// Deprecated: Use PollEncValue.ProtoReflect.Descriptor instead.
+func (*PollEncValue) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{9}
 }
 
-func (x *PollVoteMessage) GetSelectedOptions() [][]byte {
+func (x *PollEncValue) GetEncPayload() []byte {
 	if x != nil {
-		return x.SelectedOptions
+		return x.EncPayload
 	}
 	return nil
 }
 
-func (x *PollVoteMessage) GetSenderTimestampMs() int64 {
-	if x != nil && x.SenderTimestampMs != nil {
-		return *x.SenderTimestampMs
+func (x *PollEncValue) GetEncIv() []byte {
+	if x != nil {
+		return x.EncIv
 	}
-	return 0
+	return nil
 }
 
-type PollUpdateMessage struct {
+type PollCreationMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	PollCreationMessageKey *MessageKey                `protobuf:"bytes,1,opt,name=pollCreationMessageKey" json:"pollCreationMessageKey,omitempty"`
-	Vote                   *PollEncValue              `protobuf:"bytes,2,opt,name=vote" json:"vote,omitempty"`
-	Metadata               *PollUpdateMessageMetadata `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"`
+	EncKey                 []byte                        `protobuf:"bytes,1,opt,name=encKey" json:"encKey,omitempty"`
+	Name                   *string                       `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	Options                []*PollCreationMessage_Option `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"`
+	SelectableOptionsCount *uint32                       `protobuf:"varint,4,opt,name=selectableOptionsCount" json:"selectableOptionsCount,omitempty"`
+	ContextInfo            *ContextInfo                  `protobuf:"bytes,5,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *PollUpdateMessage) Reset() {
-	*x = PollUpdateMessage{}
+func (x *PollCreationMessage) Reset() {
+	*x = PollCreationMessage{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[10]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4492,13 +4529,13 @@ func (x *PollUpdateMessage) Reset() {
 	}
 }
 
-func (x *PollUpdateMessage) String() string {
+func (x *PollCreationMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PollUpdateMessage) ProtoMessage() {}
+func (*PollCreationMessage) ProtoMessage() {}
 
-func (x *PollUpdateMessage) ProtoReflect() protoreflect.Message {
+func (x *PollCreationMessage) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[10]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4510,40 +4547,57 @@ func (x *PollUpdateMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PollUpdateMessage.ProtoReflect.Descriptor instead.
-func (*PollUpdateMessage) Descriptor() ([]byte, []int) {
+// Deprecated: Use PollCreationMessage.ProtoReflect.Descriptor instead.
+func (*PollCreationMessage) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{10}
 }
 
-func (x *PollUpdateMessage) GetPollCreationMessageKey() *MessageKey {
+func (x *PollCreationMessage) GetEncKey() []byte {
 	if x != nil {
-		return x.PollCreationMessageKey
+		return x.EncKey
 	}
 	return nil
 }
 
-func (x *PollUpdateMessage) GetVote() *PollEncValue {
+func (x *PollCreationMessage) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
+	}
+	return ""
+}
+
+func (x *PollCreationMessage) GetOptions() []*PollCreationMessage_Option {
 	if x != nil {
-		return x.Vote
+		return x.Options
 	}
 	return nil
 }
 
-func (x *PollUpdateMessage) GetMetadata() *PollUpdateMessageMetadata {
+func (x *PollCreationMessage) GetSelectableOptionsCount() uint32 {
+	if x != nil && x.SelectableOptionsCount != nil {
+		return *x.SelectableOptionsCount
+	}
+	return 0
+}
+
+func (x *PollCreationMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
-		return x.Metadata
+		return x.ContextInfo
 	}
 	return nil
 }
 
-type PollUpdateMessageMetadata struct {
+type PaymentInviteMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
+
+	ServiceType     *PaymentInviteMessage_ServiceType `protobuf:"varint,1,opt,name=serviceType,enum=proto.PaymentInviteMessage_ServiceType" json:"serviceType,omitempty"`
+	ExpiryTimestamp *int64                            `protobuf:"varint,2,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"`
 }
 
-func (x *PollUpdateMessageMetadata) Reset() {
-	*x = PollUpdateMessageMetadata{}
+func (x *PaymentInviteMessage) Reset() {
+	*x = PaymentInviteMessage{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[11]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4551,13 +4605,13 @@ func (x *PollUpdateMessageMetadata) Reset() {
 	}
 }
 
-func (x *PollUpdateMessageMetadata) String() string {
+func (x *PaymentInviteMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PollUpdateMessageMetadata) ProtoMessage() {}
+func (*PaymentInviteMessage) ProtoMessage() {}
 
-func (x *PollUpdateMessageMetadata) ProtoReflect() protoreflect.Message {
+func (x *PaymentInviteMessage) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[11]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4569,22 +4623,46 @@ func (x *PollUpdateMessageMetadata) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PollUpdateMessageMetadata.ProtoReflect.Descriptor instead.
-func (*PollUpdateMessageMetadata) Descriptor() ([]byte, []int) {
+// Deprecated: Use PaymentInviteMessage.ProtoReflect.Descriptor instead.
+func (*PaymentInviteMessage) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{11}
 }
 
-type PollEncValue struct {
+func (x *PaymentInviteMessage) GetServiceType() PaymentInviteMessage_ServiceType {
+	if x != nil && x.ServiceType != nil {
+		return *x.ServiceType
+	}
+	return PaymentInviteMessage_UNKNOWN
+}
+
+func (x *PaymentInviteMessage) GetExpiryTimestamp() int64 {
+	if x != nil && x.ExpiryTimestamp != nil {
+		return *x.ExpiryTimestamp
+	}
+	return 0
+}
+
+type OrderMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	EncPayload []byte `protobuf:"bytes,1,opt,name=encPayload" json:"encPayload,omitempty"`
-	EncIv      []byte `protobuf:"bytes,2,opt,name=encIv" json:"encIv,omitempty"`
+	OrderId           *string                    `protobuf:"bytes,1,opt,name=orderId" json:"orderId,omitempty"`
+	Thumbnail         []byte                     `protobuf:"bytes,2,opt,name=thumbnail" json:"thumbnail,omitempty"`
+	ItemCount         *int32                     `protobuf:"varint,3,opt,name=itemCount" json:"itemCount,omitempty"`
+	Status            *OrderMessage_OrderStatus  `protobuf:"varint,4,opt,name=status,enum=proto.OrderMessage_OrderStatus" json:"status,omitempty"`
+	Surface           *OrderMessage_OrderSurface `protobuf:"varint,5,opt,name=surface,enum=proto.OrderMessage_OrderSurface" json:"surface,omitempty"`
+	Message           *string                    `protobuf:"bytes,6,opt,name=message" json:"message,omitempty"`
+	OrderTitle        *string                    `protobuf:"bytes,7,opt,name=orderTitle" json:"orderTitle,omitempty"`
+	SellerJid         *string                    `protobuf:"bytes,8,opt,name=sellerJid" json:"sellerJid,omitempty"`
+	Token             *string                    `protobuf:"bytes,9,opt,name=token" json:"token,omitempty"`
+	TotalAmount1000   *int64                     `protobuf:"varint,10,opt,name=totalAmount1000" json:"totalAmount1000,omitempty"`
+	TotalCurrencyCode *string                    `protobuf:"bytes,11,opt,name=totalCurrencyCode" json:"totalCurrencyCode,omitempty"`
+	ContextInfo       *ContextInfo               `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *PollEncValue) Reset() {
-	*x = PollEncValue{}
+func (x *OrderMessage) Reset() {
+	*x = OrderMessage{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[12]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4592,13 +4670,13 @@ func (x *PollEncValue) Reset() {
 	}
 }
 
-func (x *PollEncValue) String() string {
+func (x *OrderMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PollEncValue) ProtoMessage() {}
+func (*OrderMessage) ProtoMessage() {}
 
-func (x *PollEncValue) ProtoReflect() protoreflect.Message {
+func (x *OrderMessage) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[12]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -4610,257 +4688,11 @@ func (x *PollEncValue) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PollEncValue.ProtoReflect.Descriptor instead.
-func (*PollEncValue) Descriptor() ([]byte, []int) {
+// Deprecated: Use OrderMessage.ProtoReflect.Descriptor instead.
+func (*OrderMessage) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{12}
 }
 
-func (x *PollEncValue) GetEncPayload() []byte {
-	if x != nil {
-		return x.EncPayload
-	}
-	return nil
-}
-
-func (x *PollEncValue) GetEncIv() []byte {
-	if x != nil {
-		return x.EncIv
-	}
-	return nil
-}
-
-type PollCreationMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	EncKey                 []byte       `protobuf:"bytes,1,opt,name=encKey" json:"encKey,omitempty"`
-	Name                   *string      `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
-	Options                []*Option    `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"`
-	SelectableOptionsCount *uint32      `protobuf:"varint,4,opt,name=selectableOptionsCount" json:"selectableOptionsCount,omitempty"`
-	ContextInfo            *ContextInfo `protobuf:"bytes,5,opt,name=contextInfo" json:"contextInfo,omitempty"`
-}
-
-func (x *PollCreationMessage) Reset() {
-	*x = PollCreationMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PollCreationMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PollCreationMessage) ProtoMessage() {}
-
-func (x *PollCreationMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PollCreationMessage.ProtoReflect.Descriptor instead.
-func (*PollCreationMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *PollCreationMessage) GetEncKey() []byte {
-	if x != nil {
-		return x.EncKey
-	}
-	return nil
-}
-
-func (x *PollCreationMessage) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *PollCreationMessage) GetOptions() []*Option {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *PollCreationMessage) GetSelectableOptionsCount() uint32 {
-	if x != nil && x.SelectableOptionsCount != nil {
-		return *x.SelectableOptionsCount
-	}
-	return 0
-}
-
-func (x *PollCreationMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
-	}
-	return nil
-}
-
-type Option struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionName *string `protobuf:"bytes,1,opt,name=optionName" json:"optionName,omitempty"`
-}
-
-func (x *Option) Reset() {
-	*x = Option{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Option) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Option) ProtoMessage() {}
-
-func (x *Option) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Option.ProtoReflect.Descriptor instead.
-func (*Option) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Option) GetOptionName() string {
-	if x != nil && x.OptionName != nil {
-		return *x.OptionName
-	}
-	return ""
-}
-
-type PaymentInviteMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ServiceType     *PaymentInviteMessage_PaymentInviteMessageServiceType `protobuf:"varint,1,opt,name=serviceType,enum=proto.PaymentInviteMessage_PaymentInviteMessageServiceType" json:"serviceType,omitempty"`
-	ExpiryTimestamp *int64                                                `protobuf:"varint,2,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"`
-}
-
-func (x *PaymentInviteMessage) Reset() {
-	*x = PaymentInviteMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PaymentInviteMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PaymentInviteMessage) ProtoMessage() {}
-
-func (x *PaymentInviteMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PaymentInviteMessage.ProtoReflect.Descriptor instead.
-func (*PaymentInviteMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *PaymentInviteMessage) GetServiceType() PaymentInviteMessage_PaymentInviteMessageServiceType {
-	if x != nil && x.ServiceType != nil {
-		return *x.ServiceType
-	}
-	return PaymentInviteMessage_UNKNOWN
-}
-
-func (x *PaymentInviteMessage) GetExpiryTimestamp() int64 {
-	if x != nil && x.ExpiryTimestamp != nil {
-		return *x.ExpiryTimestamp
-	}
-	return 0
-}
-
-type OrderMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OrderId           *string                                `protobuf:"bytes,1,opt,name=orderId" json:"orderId,omitempty"`
-	Thumbnail         []byte                                 `protobuf:"bytes,2,opt,name=thumbnail" json:"thumbnail,omitempty"`
-	ItemCount         *int32                                 `protobuf:"varint,3,opt,name=itemCount" json:"itemCount,omitempty"`
-	Status            *OrderMessage_OrderMessageOrderStatus  `protobuf:"varint,4,opt,name=status,enum=proto.OrderMessage_OrderMessageOrderStatus" json:"status,omitempty"`
-	Surface           *OrderMessage_OrderMessageOrderSurface `protobuf:"varint,5,opt,name=surface,enum=proto.OrderMessage_OrderMessageOrderSurface" json:"surface,omitempty"`
-	Message           *string                                `protobuf:"bytes,6,opt,name=message" json:"message,omitempty"`
-	OrderTitle        *string                                `protobuf:"bytes,7,opt,name=orderTitle" json:"orderTitle,omitempty"`
-	SellerJid         *string                                `protobuf:"bytes,8,opt,name=sellerJid" json:"sellerJid,omitempty"`
-	Token             *string                                `protobuf:"bytes,9,opt,name=token" json:"token,omitempty"`
-	TotalAmount1000   *int64                                 `protobuf:"varint,10,opt,name=totalAmount1000" json:"totalAmount1000,omitempty"`
-	TotalCurrencyCode *string                                `protobuf:"bytes,11,opt,name=totalCurrencyCode" json:"totalCurrencyCode,omitempty"`
-	ContextInfo       *ContextInfo                           `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
-}
-
-func (x *OrderMessage) Reset() {
-	*x = OrderMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *OrderMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OrderMessage) ProtoMessage() {}
-
-func (x *OrderMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use OrderMessage.ProtoReflect.Descriptor instead.
-func (*OrderMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{16}
-}
-
 func (x *OrderMessage) GetOrderId() string {
 	if x != nil && x.OrderId != nil {
 		return *x.OrderId
@@ -4882,14 +4714,14 @@ func (x *OrderMessage) GetItemCount() int32 {
 	return 0
 }
 
-func (x *OrderMessage) GetStatus() OrderMessage_OrderMessageOrderStatus {
+func (x *OrderMessage) GetStatus() OrderMessage_OrderStatus {
 	if x != nil && x.Status != nil {
 		return *x.Status
 	}
 	return OrderMessage_INQUIRY
 }
 
-func (x *OrderMessage) GetSurface() OrderMessage_OrderMessageOrderSurface {
+func (x *OrderMessage) GetSurface() OrderMessage_OrderSurface {
 	if x != nil && x.Surface != nil {
 		return *x.Surface
 	}
@@ -4967,7 +4799,7 @@ type LocationMessage struct {
 func (x *LocationMessage) Reset() {
 	*x = LocationMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[17]
+		mi := &file_binary_proto_def_proto_msgTypes[13]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4980,7 +4812,7 @@ func (x *LocationMessage) String() string {
 func (*LocationMessage) ProtoMessage() {}
 
 func (x *LocationMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[17]
+	mi := &file_binary_proto_def_proto_msgTypes[13]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4993,7 +4825,7 @@ func (x *LocationMessage) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use LocationMessage.ProtoReflect.Descriptor instead.
 func (*LocationMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{17}
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{13}
 }
 
 func (x *LocationMessage) GetDegreesLatitude() float64 {
@@ -5100,7 +4932,7 @@ type LiveLocationMessage struct {
 func (x *LiveLocationMessage) Reset() {
 	*x = LiveLocationMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[18]
+		mi := &file_binary_proto_def_proto_msgTypes[14]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5113,7 +4945,7 @@ func (x *LiveLocationMessage) String() string {
 func (*LiveLocationMessage) ProtoMessage() {}
 
 func (x *LiveLocationMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[18]
+	mi := &file_binary_proto_def_proto_msgTypes[14]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5126,7 +4958,7 @@ func (x *LiveLocationMessage) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use LiveLocationMessage.ProtoReflect.Descriptor instead.
 func (*LiveLocationMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{18}
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{14}
 }
 
 func (x *LiveLocationMessage) GetDegreesLatitude() float64 {
@@ -5204,17 +5036,17 @@ type ListResponseMessage struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Title             *string                                          `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
-	ListType          *ListResponseMessage_ListResponseMessageListType `protobuf:"varint,2,opt,name=listType,enum=proto.ListResponseMessage_ListResponseMessageListType" json:"listType,omitempty"`
-	SingleSelectReply *SingleSelectReply                               `protobuf:"bytes,3,opt,name=singleSelectReply" json:"singleSelectReply,omitempty"`
-	ContextInfo       *ContextInfo                                     `protobuf:"bytes,4,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	Description       *string                                          `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
+	Title             *string                                `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
+	ListType          *ListResponseMessage_ListType          `protobuf:"varint,2,opt,name=listType,enum=proto.ListResponseMessage_ListType" json:"listType,omitempty"`
+	SingleSelectReply *ListResponseMessage_SingleSelectReply `protobuf:"bytes,3,opt,name=singleSelectReply" json:"singleSelectReply,omitempty"`
+	ContextInfo       *ContextInfo                           `protobuf:"bytes,4,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	Description       *string                                `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
 }
 
 func (x *ListResponseMessage) Reset() {
 	*x = ListResponseMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[19]
+		mi := &file_binary_proto_def_proto_msgTypes[15]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5227,7 +5059,7 @@ func (x *ListResponseMessage) String() string {
 func (*ListResponseMessage) ProtoMessage() {}
 
 func (x *ListResponseMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[19]
+	mi := &file_binary_proto_def_proto_msgTypes[15]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5240,7 +5072,7 @@ func (x *ListResponseMessage) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListResponseMessage.ProtoReflect.Descriptor instead.
 func (*ListResponseMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{19}
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{15}
 }
 
 func (x *ListResponseMessage) GetTitle() string {
@@ -5250,14 +5082,14 @@ func (x *ListResponseMessage) GetTitle() string {
 	return ""
 }
 
-func (x *ListResponseMessage) GetListType() ListResponseMessage_ListResponseMessageListType {
+func (x *ListResponseMessage) GetListType() ListResponseMessage_ListType {
 	if x != nil && x.ListType != nil {
 		return *x.ListType
 	}
 	return ListResponseMessage_UNKNOWN
 }
 
-func (x *ListResponseMessage) GetSingleSelectReply() *SingleSelectReply {
+func (x *ListResponseMessage) GetSingleSelectReply() *ListResponseMessage_SingleSelectReply {
 	if x != nil {
 		return x.SingleSelectReply
 	}
@@ -5278,31 +5110,38 @@ func (x *ListResponseMessage) GetDescription() string {
 	return ""
 }
 
-type SingleSelectReply struct {
+type ListMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	SelectedRowId *string `protobuf:"bytes,1,opt,name=selectedRowId" json:"selectedRowId,omitempty"`
+	Title           *string                      `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
+	Description     *string                      `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+	ButtonText      *string                      `protobuf:"bytes,3,opt,name=buttonText" json:"buttonText,omitempty"`
+	ListType        *ListMessage_ListType        `protobuf:"varint,4,opt,name=listType,enum=proto.ListMessage_ListType" json:"listType,omitempty"`
+	Sections        []*ListMessage_Section       `protobuf:"bytes,5,rep,name=sections" json:"sections,omitempty"`
+	ProductListInfo *ListMessage_ProductListInfo `protobuf:"bytes,6,opt,name=productListInfo" json:"productListInfo,omitempty"`
+	FooterText      *string                      `protobuf:"bytes,7,opt,name=footerText" json:"footerText,omitempty"`
+	ContextInfo     *ContextInfo                 `protobuf:"bytes,8,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *SingleSelectReply) Reset() {
-	*x = SingleSelectReply{}
+func (x *ListMessage) Reset() {
+	*x = ListMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[20]
+		mi := &file_binary_proto_def_proto_msgTypes[16]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SingleSelectReply) String() string {
+func (x *ListMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SingleSelectReply) ProtoMessage() {}
+func (*ListMessage) ProtoMessage() {}
 
-func (x *SingleSelectReply) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[20]
+func (x *ListMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[16]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5313,68 +5152,14 @@ func (x *SingleSelectReply) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SingleSelectReply.ProtoReflect.Descriptor instead.
-func (*SingleSelectReply) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{20}
+// Deprecated: Use ListMessage.ProtoReflect.Descriptor instead.
+func (*ListMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16}
 }
 
-func (x *SingleSelectReply) GetSelectedRowId() string {
-	if x != nil && x.SelectedRowId != nil {
-		return *x.SelectedRowId
-	}
-	return ""
-}
-
-type ListMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Title           *string                          `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
-	Description     *string                          `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
-	ButtonText      *string                          `protobuf:"bytes,3,opt,name=buttonText" json:"buttonText,omitempty"`
-	ListType        *ListMessage_ListMessageListType `protobuf:"varint,4,opt,name=listType,enum=proto.ListMessage_ListMessageListType" json:"listType,omitempty"`
-	Sections        []*Section                       `protobuf:"bytes,5,rep,name=sections" json:"sections,omitempty"`
-	ProductListInfo *ProductListInfo                 `protobuf:"bytes,6,opt,name=productListInfo" json:"productListInfo,omitempty"`
-	FooterText      *string                          `protobuf:"bytes,7,opt,name=footerText" json:"footerText,omitempty"`
-	ContextInfo     *ContextInfo                     `protobuf:"bytes,8,opt,name=contextInfo" json:"contextInfo,omitempty"`
-}
-
-func (x *ListMessage) Reset() {
-	*x = ListMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListMessage) ProtoMessage() {}
-
-func (x *ListMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListMessage.ProtoReflect.Descriptor instead.
-func (*ListMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *ListMessage) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
+func (x *ListMessage) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
 	return ""
 }
@@ -5393,21 +5178,21 @@ func (x *ListMessage) GetButtonText() string {
 	return ""
 }
 
-func (x *ListMessage) GetListType() ListMessage_ListMessageListType {
+func (x *ListMessage) GetListType() ListMessage_ListType {
 	if x != nil && x.ListType != nil {
 		return *x.ListType
 	}
 	return ListMessage_UNKNOWN
 }
 
-func (x *ListMessage) GetSections() []*Section {
+func (x *ListMessage) GetSections() []*ListMessage_Section {
 	if x != nil {
 		return x.Sections
 	}
 	return nil
 }
 
-func (x *ListMessage) GetProductListInfo() *ProductListInfo {
+func (x *ListMessage) GetProductListInfo() *ListMessage_ProductListInfo {
 	if x != nil {
 		return x.ProductListInfo
 	}
@@ -5428,32 +5213,33 @@ func (x *ListMessage) GetContextInfo() *ContextInfo {
 	return nil
 }
 
-type Section struct {
+type KeepInChatMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
-	Rows  []*Row  `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"`
+	Key         *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+	KeepType    *KeepType   `protobuf:"varint,2,opt,name=keepType,enum=proto.KeepType" json:"keepType,omitempty"`
+	TimestampMs *int64      `protobuf:"varint,3,opt,name=timestampMs" json:"timestampMs,omitempty"`
 }
 
-func (x *Section) Reset() {
-	*x = Section{}
+func (x *KeepInChatMessage) Reset() {
+	*x = KeepInChatMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[22]
+		mi := &file_binary_proto_def_proto_msgTypes[17]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Section) String() string {
+func (x *KeepInChatMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Section) ProtoMessage() {}
+func (*KeepInChatMessage) ProtoMessage() {}
 
-func (x *Section) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[22]
+func (x *KeepInChatMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[17]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5464,52 +5250,66 @@ func (x *Section) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Section.ProtoReflect.Descriptor instead.
-func (*Section) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{22}
+// Deprecated: Use KeepInChatMessage.ProtoReflect.Descriptor instead.
+func (*KeepInChatMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{17}
 }
 
-func (x *Section) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
+func (x *KeepInChatMessage) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
 	}
-	return ""
+	return nil
 }
 
-func (x *Section) GetRows() []*Row {
-	if x != nil {
-		return x.Rows
+func (x *KeepInChatMessage) GetKeepType() KeepType {
+	if x != nil && x.KeepType != nil {
+		return *x.KeepType
 	}
-	return nil
+	return KeepType_UNKNOWN
+}
+
+func (x *KeepInChatMessage) GetTimestampMs() int64 {
+	if x != nil && x.TimestampMs != nil {
+		return *x.TimestampMs
+	}
+	return 0
 }
 
-type Row struct {
+type InvoiceMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Title       *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
-	Description *string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
-	RowId       *string `protobuf:"bytes,3,opt,name=rowId" json:"rowId,omitempty"`
+	Note                        *string                        `protobuf:"bytes,1,opt,name=note" json:"note,omitempty"`
+	Token                       *string                        `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
+	AttachmentType              *InvoiceMessage_AttachmentType `protobuf:"varint,3,opt,name=attachmentType,enum=proto.InvoiceMessage_AttachmentType" json:"attachmentType,omitempty"`
+	AttachmentMimetype          *string                        `protobuf:"bytes,4,opt,name=attachmentMimetype" json:"attachmentMimetype,omitempty"`
+	AttachmentMediaKey          []byte                         `protobuf:"bytes,5,opt,name=attachmentMediaKey" json:"attachmentMediaKey,omitempty"`
+	AttachmentMediaKeyTimestamp *int64                         `protobuf:"varint,6,opt,name=attachmentMediaKeyTimestamp" json:"attachmentMediaKeyTimestamp,omitempty"`
+	AttachmentFileSha256        []byte                         `protobuf:"bytes,7,opt,name=attachmentFileSha256" json:"attachmentFileSha256,omitempty"`
+	AttachmentFileEncSha256     []byte                         `protobuf:"bytes,8,opt,name=attachmentFileEncSha256" json:"attachmentFileEncSha256,omitempty"`
+	AttachmentDirectPath        *string                        `protobuf:"bytes,9,opt,name=attachmentDirectPath" json:"attachmentDirectPath,omitempty"`
+	AttachmentJpegThumbnail     []byte                         `protobuf:"bytes,10,opt,name=attachmentJpegThumbnail" json:"attachmentJpegThumbnail,omitempty"`
 }
 
-func (x *Row) Reset() {
-	*x = Row{}
+func (x *InvoiceMessage) Reset() {
+	*x = InvoiceMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[23]
+		mi := &file_binary_proto_def_proto_msgTypes[18]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Row) String() string {
+func (x *InvoiceMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Row) ProtoMessage() {}
+func (*InvoiceMessage) ProtoMessage() {}
 
-func (x *Row) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[23]
+func (x *InvoiceMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[18]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5520,105 +5320,110 @@ func (x *Row) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Row.ProtoReflect.Descriptor instead.
-func (*Row) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{23}
+// Deprecated: Use InvoiceMessage.ProtoReflect.Descriptor instead.
+func (*InvoiceMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{18}
 }
 
-func (x *Row) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
+func (x *InvoiceMessage) GetNote() string {
+	if x != nil && x.Note != nil {
+		return *x.Note
 	}
 	return ""
 }
 
-func (x *Row) GetDescription() string {
-	if x != nil && x.Description != nil {
-		return *x.Description
+func (x *InvoiceMessage) GetToken() string {
+	if x != nil && x.Token != nil {
+		return *x.Token
 	}
 	return ""
 }
 
-func (x *Row) GetRowId() string {
-	if x != nil && x.RowId != nil {
-		return *x.RowId
+func (x *InvoiceMessage) GetAttachmentType() InvoiceMessage_AttachmentType {
+	if x != nil && x.AttachmentType != nil {
+		return *x.AttachmentType
 	}
-	return ""
+	return InvoiceMessage_IMAGE
 }
 
-type Product struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ProductId *string `protobuf:"bytes,1,opt,name=productId" json:"productId,omitempty"`
+func (x *InvoiceMessage) GetAttachmentMimetype() string {
+	if x != nil && x.AttachmentMimetype != nil {
+		return *x.AttachmentMimetype
+	}
+	return ""
 }
 
-func (x *Product) Reset() {
-	*x = Product{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *InvoiceMessage) GetAttachmentMediaKey() []byte {
+	if x != nil {
+		return x.AttachmentMediaKey
 	}
+	return nil
 }
 
-func (x *Product) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *InvoiceMessage) GetAttachmentMediaKeyTimestamp() int64 {
+	if x != nil && x.AttachmentMediaKeyTimestamp != nil {
+		return *x.AttachmentMediaKeyTimestamp
+	}
+	return 0
 }
 
-func (*Product) ProtoMessage() {}
-
-func (x *Product) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *InvoiceMessage) GetAttachmentFileSha256() []byte {
+	if x != nil {
+		return x.AttachmentFileSha256
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use Product.ProtoReflect.Descriptor instead.
-func (*Product) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{24}
+func (x *InvoiceMessage) GetAttachmentFileEncSha256() []byte {
+	if x != nil {
+		return x.AttachmentFileEncSha256
+	}
+	return nil
 }
 
-func (x *Product) GetProductId() string {
-	if x != nil && x.ProductId != nil {
-		return *x.ProductId
+func (x *InvoiceMessage) GetAttachmentDirectPath() string {
+	if x != nil && x.AttachmentDirectPath != nil {
+		return *x.AttachmentDirectPath
 	}
 	return ""
 }
 
-type ProductSection struct {
+func (x *InvoiceMessage) GetAttachmentJpegThumbnail() []byte {
+	if x != nil {
+		return x.AttachmentJpegThumbnail
+	}
+	return nil
+}
+
+type InteractiveResponseMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Title    *string    `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
-	Products []*Product `protobuf:"bytes,2,rep,name=products" json:"products,omitempty"`
+	Body        *InteractiveResponseMessage_Body `protobuf:"bytes,1,opt,name=body" json:"body,omitempty"`
+	ContextInfo *ContextInfo                     `protobuf:"bytes,15,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	// Types that are assignable to InteractiveResponseMessage:
+	//	*InteractiveResponseMessage_NativeFlowResponseMessage_
+	InteractiveResponseMessage isInteractiveResponseMessage_InteractiveResponseMessage `protobuf_oneof:"interactiveResponseMessage"`
 }
 
-func (x *ProductSection) Reset() {
-	*x = ProductSection{}
+func (x *InteractiveResponseMessage) Reset() {
+	*x = InteractiveResponseMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[25]
+		mi := &file_binary_proto_def_proto_msgTypes[19]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ProductSection) String() string {
+func (x *InteractiveResponseMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ProductSection) ProtoMessage() {}
+func (*InteractiveResponseMessage) ProtoMessage() {}
 
-func (x *ProductSection) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[25]
+func (x *InteractiveResponseMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[19]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5629,52 +5434,83 @@ func (x *ProductSection) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ProductSection.ProtoReflect.Descriptor instead.
-func (*ProductSection) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{25}
+// Deprecated: Use InteractiveResponseMessage.ProtoReflect.Descriptor instead.
+func (*InteractiveResponseMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{19}
 }
 
-func (x *ProductSection) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
+func (x *InteractiveResponseMessage) GetBody() *InteractiveResponseMessage_Body {
+	if x != nil {
+		return x.Body
 	}
-	return ""
+	return nil
 }
 
-func (x *ProductSection) GetProducts() []*Product {
+func (x *InteractiveResponseMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
-		return x.Products
+		return x.ContextInfo
+	}
+	return nil
+}
+
+func (m *InteractiveResponseMessage) GetInteractiveResponseMessage() isInteractiveResponseMessage_InteractiveResponseMessage {
+	if m != nil {
+		return m.InteractiveResponseMessage
+	}
+	return nil
+}
+
+func (x *InteractiveResponseMessage) GetNativeFlowResponseMessage() *InteractiveResponseMessage_NativeFlowResponseMessage {
+	if x, ok := x.GetInteractiveResponseMessage().(*InteractiveResponseMessage_NativeFlowResponseMessage_); ok {
+		return x.NativeFlowResponseMessage
 	}
 	return nil
 }
 
-type ProductListInfo struct {
+type isInteractiveResponseMessage_InteractiveResponseMessage interface {
+	isInteractiveResponseMessage_InteractiveResponseMessage()
+}
+
+type InteractiveResponseMessage_NativeFlowResponseMessage_ struct {
+	NativeFlowResponseMessage *InteractiveResponseMessage_NativeFlowResponseMessage `protobuf:"bytes,2,opt,name=nativeFlowResponseMessage,oneof"`
+}
+
+func (*InteractiveResponseMessage_NativeFlowResponseMessage_) isInteractiveResponseMessage_InteractiveResponseMessage() {
+}
+
+type InteractiveMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ProductSections  []*ProductSection       `protobuf:"bytes,1,rep,name=productSections" json:"productSections,omitempty"`
-	HeaderImage      *ProductListHeaderImage `protobuf:"bytes,2,opt,name=headerImage" json:"headerImage,omitempty"`
-	BusinessOwnerJid *string                 `protobuf:"bytes,3,opt,name=businessOwnerJid" json:"businessOwnerJid,omitempty"`
+	Header      *InteractiveMessage_Header `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+	Body        *InteractiveMessage_Body   `protobuf:"bytes,2,opt,name=body" json:"body,omitempty"`
+	Footer      *InteractiveMessage_Footer `protobuf:"bytes,3,opt,name=footer" json:"footer,omitempty"`
+	ContextInfo *ContextInfo               `protobuf:"bytes,15,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	// Types that are assignable to InteractiveMessage:
+	//	*InteractiveMessage_ShopStorefrontMessage
+	//	*InteractiveMessage_CollectionMessage_
+	//	*InteractiveMessage_NativeFlowMessage_
+	InteractiveMessage isInteractiveMessage_InteractiveMessage `protobuf_oneof:"interactiveMessage"`
 }
 
-func (x *ProductListInfo) Reset() {
-	*x = ProductListInfo{}
+func (x *InteractiveMessage) Reset() {
+	*x = InteractiveMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[26]
+		mi := &file_binary_proto_def_proto_msgTypes[20]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ProductListInfo) String() string {
+func (x *InteractiveMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ProductListInfo) ProtoMessage() {}
+func (*InteractiveMessage) ProtoMessage() {}
 
-func (x *ProductListInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[26]
+func (x *InteractiveMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[20]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5685,114 +5521,114 @@ func (x *ProductListInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ProductListInfo.ProtoReflect.Descriptor instead.
-func (*ProductListInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{26}
+// Deprecated: Use InteractiveMessage.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20}
 }
 
-func (x *ProductListInfo) GetProductSections() []*ProductSection {
+func (x *InteractiveMessage) GetHeader() *InteractiveMessage_Header {
 	if x != nil {
-		return x.ProductSections
+		return x.Header
 	}
 	return nil
 }
 
-func (x *ProductListInfo) GetHeaderImage() *ProductListHeaderImage {
+func (x *InteractiveMessage) GetBody() *InteractiveMessage_Body {
 	if x != nil {
-		return x.HeaderImage
+		return x.Body
 	}
 	return nil
 }
 
-func (x *ProductListInfo) GetBusinessOwnerJid() string {
-	if x != nil && x.BusinessOwnerJid != nil {
-		return *x.BusinessOwnerJid
+func (x *InteractiveMessage) GetFooter() *InteractiveMessage_Footer {
+	if x != nil {
+		return x.Footer
 	}
-	return ""
+	return nil
 }
 
-type ProductListHeaderImage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ProductId     *string `protobuf:"bytes,1,opt,name=productId" json:"productId,omitempty"`
-	JpegThumbnail []byte  `protobuf:"bytes,2,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
+func (x *InteractiveMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
+	}
+	return nil
 }
 
-func (x *ProductListHeaderImage) Reset() {
-	*x = ProductListHeaderImage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (m *InteractiveMessage) GetInteractiveMessage() isInteractiveMessage_InteractiveMessage {
+	if m != nil {
+		return m.InteractiveMessage
 	}
+	return nil
 }
 
-func (x *ProductListHeaderImage) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *InteractiveMessage) GetShopStorefrontMessage() *InteractiveMessage_ShopMessage {
+	if x, ok := x.GetInteractiveMessage().(*InteractiveMessage_ShopStorefrontMessage); ok {
+		return x.ShopStorefrontMessage
+	}
+	return nil
 }
 
-func (*ProductListHeaderImage) ProtoMessage() {}
+func (x *InteractiveMessage) GetCollectionMessage() *InteractiveMessage_CollectionMessage {
+	if x, ok := x.GetInteractiveMessage().(*InteractiveMessage_CollectionMessage_); ok {
+		return x.CollectionMessage
+	}
+	return nil
+}
 
-func (x *ProductListHeaderImage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *InteractiveMessage) GetNativeFlowMessage() *InteractiveMessage_NativeFlowMessage {
+	if x, ok := x.GetInteractiveMessage().(*InteractiveMessage_NativeFlowMessage_); ok {
+		return x.NativeFlowMessage
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use ProductListHeaderImage.ProtoReflect.Descriptor instead.
-func (*ProductListHeaderImage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{27}
+type isInteractiveMessage_InteractiveMessage interface {
+	isInteractiveMessage_InteractiveMessage()
 }
 
-func (x *ProductListHeaderImage) GetProductId() string {
-	if x != nil && x.ProductId != nil {
-		return *x.ProductId
-	}
-	return ""
+type InteractiveMessage_ShopStorefrontMessage struct {
+	ShopStorefrontMessage *InteractiveMessage_ShopMessage `protobuf:"bytes,4,opt,name=shopStorefrontMessage,oneof"`
 }
 
-func (x *ProductListHeaderImage) GetJpegThumbnail() []byte {
-	if x != nil {
-		return x.JpegThumbnail
-	}
-	return nil
+type InteractiveMessage_CollectionMessage_ struct {
+	CollectionMessage *InteractiveMessage_CollectionMessage `protobuf:"bytes,5,opt,name=collectionMessage,oneof"`
 }
 
-type KeepInChatMessage struct {
+type InteractiveMessage_NativeFlowMessage_ struct {
+	NativeFlowMessage *InteractiveMessage_NativeFlowMessage `protobuf:"bytes,6,opt,name=nativeFlowMessage,oneof"`
+}
+
+func (*InteractiveMessage_ShopStorefrontMessage) isInteractiveMessage_InteractiveMessage() {}
+
+func (*InteractiveMessage_CollectionMessage_) isInteractiveMessage_InteractiveMessage() {}
+
+func (*InteractiveMessage_NativeFlowMessage_) isInteractiveMessage_InteractiveMessage() {}
+
+type InitialSecurityNotificationSettingSync struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key         *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
-	KeepType    *KeepType   `protobuf:"varint,2,opt,name=keepType,enum=proto.KeepType" json:"keepType,omitempty"`
-	TimestampMs *int64      `protobuf:"varint,3,opt,name=timestampMs" json:"timestampMs,omitempty"`
+	SecurityNotificationEnabled *bool `protobuf:"varint,1,opt,name=securityNotificationEnabled" json:"securityNotificationEnabled,omitempty"`
 }
 
-func (x *KeepInChatMessage) Reset() {
-	*x = KeepInChatMessage{}
+func (x *InitialSecurityNotificationSettingSync) Reset() {
+	*x = InitialSecurityNotificationSettingSync{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[28]
+		mi := &file_binary_proto_def_proto_msgTypes[21]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *KeepInChatMessage) String() string {
+func (x *InitialSecurityNotificationSettingSync) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*KeepInChatMessage) ProtoMessage() {}
+func (*InitialSecurityNotificationSettingSync) ProtoMessage() {}
 
-func (x *KeepInChatMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[28]
+func (x *InitialSecurityNotificationSettingSync) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[21]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5803,66 +5639,68 @@ func (x *KeepInChatMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use KeepInChatMessage.ProtoReflect.Descriptor instead.
-func (*KeepInChatMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *KeepInChatMessage) GetKey() *MessageKey {
-	if x != nil {
-		return x.Key
-	}
-	return nil
-}
-
-func (x *KeepInChatMessage) GetKeepType() KeepType {
-	if x != nil && x.KeepType != nil {
-		return *x.KeepType
-	}
-	return KeepType_UNKNOWN
+// Deprecated: Use InitialSecurityNotificationSettingSync.ProtoReflect.Descriptor instead.
+func (*InitialSecurityNotificationSettingSync) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{21}
 }
 
-func (x *KeepInChatMessage) GetTimestampMs() int64 {
-	if x != nil && x.TimestampMs != nil {
-		return *x.TimestampMs
+func (x *InitialSecurityNotificationSettingSync) GetSecurityNotificationEnabled() bool {
+	if x != nil && x.SecurityNotificationEnabled != nil {
+		return *x.SecurityNotificationEnabled
 	}
-	return 0
+	return false
 }
 
-type InvoiceMessage struct {
+type ImageMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Note                        *string                                      `protobuf:"bytes,1,opt,name=note" json:"note,omitempty"`
-	Token                       *string                                      `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
-	AttachmentType              *InvoiceMessage_InvoiceMessageAttachmentType `protobuf:"varint,3,opt,name=attachmentType,enum=proto.InvoiceMessage_InvoiceMessageAttachmentType" json:"attachmentType,omitempty"`
-	AttachmentMimetype          *string                                      `protobuf:"bytes,4,opt,name=attachmentMimetype" json:"attachmentMimetype,omitempty"`
-	AttachmentMediaKey          []byte                                       `protobuf:"bytes,5,opt,name=attachmentMediaKey" json:"attachmentMediaKey,omitempty"`
-	AttachmentMediaKeyTimestamp *int64                                       `protobuf:"varint,6,opt,name=attachmentMediaKeyTimestamp" json:"attachmentMediaKeyTimestamp,omitempty"`
-	AttachmentFileSha256        []byte                                       `protobuf:"bytes,7,opt,name=attachmentFileSha256" json:"attachmentFileSha256,omitempty"`
-	AttachmentFileEncSha256     []byte                                       `protobuf:"bytes,8,opt,name=attachmentFileEncSha256" json:"attachmentFileEncSha256,omitempty"`
-	AttachmentDirectPath        *string                                      `protobuf:"bytes,9,opt,name=attachmentDirectPath" json:"attachmentDirectPath,omitempty"`
-	AttachmentJpegThumbnail     []byte                                       `protobuf:"bytes,10,opt,name=attachmentJpegThumbnail" json:"attachmentJpegThumbnail,omitempty"`
+	Url                     *string                  `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Mimetype                *string                  `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
+	Caption                 *string                  `protobuf:"bytes,3,opt,name=caption" json:"caption,omitempty"`
+	FileSha256              []byte                   `protobuf:"bytes,4,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileLength              *uint64                  `protobuf:"varint,5,opt,name=fileLength" json:"fileLength,omitempty"`
+	Height                  *uint32                  `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
+	Width                   *uint32                  `protobuf:"varint,7,opt,name=width" json:"width,omitempty"`
+	MediaKey                []byte                   `protobuf:"bytes,8,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	FileEncSha256           []byte                   `protobuf:"bytes,9,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	InteractiveAnnotations  []*InteractiveAnnotation `protobuf:"bytes,10,rep,name=interactiveAnnotations" json:"interactiveAnnotations,omitempty"`
+	DirectPath              *string                  `protobuf:"bytes,11,opt,name=directPath" json:"directPath,omitempty"`
+	MediaKeyTimestamp       *int64                   `protobuf:"varint,12,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
+	JpegThumbnail           []byte                   `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
+	ContextInfo             *ContextInfo             `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	FirstScanSidecar        []byte                   `protobuf:"bytes,18,opt,name=firstScanSidecar" json:"firstScanSidecar,omitempty"`
+	FirstScanLength         *uint32                  `protobuf:"varint,19,opt,name=firstScanLength" json:"firstScanLength,omitempty"`
+	ExperimentGroupId       *uint32                  `protobuf:"varint,20,opt,name=experimentGroupId" json:"experimentGroupId,omitempty"`
+	ScansSidecar            []byte                   `protobuf:"bytes,21,opt,name=scansSidecar" json:"scansSidecar,omitempty"`
+	ScanLengths             []uint32                 `protobuf:"varint,22,rep,name=scanLengths" json:"scanLengths,omitempty"`
+	MidQualityFileSha256    []byte                   `protobuf:"bytes,23,opt,name=midQualityFileSha256" json:"midQualityFileSha256,omitempty"`
+	MidQualityFileEncSha256 []byte                   `protobuf:"bytes,24,opt,name=midQualityFileEncSha256" json:"midQualityFileEncSha256,omitempty"`
+	ViewOnce                *bool                    `protobuf:"varint,25,opt,name=viewOnce" json:"viewOnce,omitempty"`
+	ThumbnailDirectPath     *string                  `protobuf:"bytes,26,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
+	ThumbnailSha256         []byte                   `protobuf:"bytes,27,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
+	ThumbnailEncSha256      []byte                   `protobuf:"bytes,28,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
+	StaticUrl               *string                  `protobuf:"bytes,29,opt,name=staticUrl" json:"staticUrl,omitempty"`
 }
 
-func (x *InvoiceMessage) Reset() {
-	*x = InvoiceMessage{}
+func (x *ImageMessage) Reset() {
+	*x = ImageMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[29]
+		mi := &file_binary_proto_def_proto_msgTypes[22]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *InvoiceMessage) String() string {
+func (x *ImageMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*InvoiceMessage) ProtoMessage() {}
+func (*ImageMessage) ProtoMessage() {}
 
-func (x *InvoiceMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[29]
+func (x *ImageMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[22]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5873,191 +5711,226 @@ func (x *InvoiceMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use InvoiceMessage.ProtoReflect.Descriptor instead.
-func (*InvoiceMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{29}
+// Deprecated: Use ImageMessage.ProtoReflect.Descriptor instead.
+func (*ImageMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{22}
 }
 
-func (x *InvoiceMessage) GetNote() string {
-	if x != nil && x.Note != nil {
-		return *x.Note
+func (x *ImageMessage) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
 	return ""
 }
 
-func (x *InvoiceMessage) GetToken() string {
-	if x != nil && x.Token != nil {
-		return *x.Token
+func (x *ImageMessage) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
 	}
 	return ""
 }
 
-func (x *InvoiceMessage) GetAttachmentType() InvoiceMessage_InvoiceMessageAttachmentType {
-	if x != nil && x.AttachmentType != nil {
-		return *x.AttachmentType
-	}
-	return InvoiceMessage_IMAGE
-}
-
-func (x *InvoiceMessage) GetAttachmentMimetype() string {
-	if x != nil && x.AttachmentMimetype != nil {
-		return *x.AttachmentMimetype
+func (x *ImageMessage) GetCaption() string {
+	if x != nil && x.Caption != nil {
+		return *x.Caption
 	}
 	return ""
 }
 
-func (x *InvoiceMessage) GetAttachmentMediaKey() []byte {
+func (x *ImageMessage) GetFileSha256() []byte {
 	if x != nil {
-		return x.AttachmentMediaKey
+		return x.FileSha256
 	}
 	return nil
 }
 
-func (x *InvoiceMessage) GetAttachmentMediaKeyTimestamp() int64 {
-	if x != nil && x.AttachmentMediaKeyTimestamp != nil {
-		return *x.AttachmentMediaKeyTimestamp
+func (x *ImageMessage) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
 	}
 	return 0
 }
 
-func (x *InvoiceMessage) GetAttachmentFileSha256() []byte {
-	if x != nil {
-		return x.AttachmentFileSha256
+func (x *ImageMessage) GetHeight() uint32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
-	return nil
+	return 0
 }
 
-func (x *InvoiceMessage) GetAttachmentFileEncSha256() []byte {
-	if x != nil {
-		return x.AttachmentFileEncSha256
+func (x *ImageMessage) GetWidth() uint32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
 	}
-	return nil
+	return 0
 }
 
-func (x *InvoiceMessage) GetAttachmentDirectPath() string {
-	if x != nil && x.AttachmentDirectPath != nil {
-		return *x.AttachmentDirectPath
+func (x *ImageMessage) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
 	}
-	return ""
+	return nil
 }
 
-func (x *InvoiceMessage) GetAttachmentJpegThumbnail() []byte {
+func (x *ImageMessage) GetFileEncSha256() []byte {
 	if x != nil {
-		return x.AttachmentJpegThumbnail
+		return x.FileEncSha256
 	}
 	return nil
 }
 
-type InteractiveResponseMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Body        *InteractiveResponseMessageBody `protobuf:"bytes,1,opt,name=body" json:"body,omitempty"`
-	ContextInfo *ContextInfo                    `protobuf:"bytes,15,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	// Types that are assignable to InteractiveResponseMessage:
-	//	*InteractiveResponseMessage_NativeFlowResponseMessage
-	InteractiveResponseMessage isInteractiveResponseMessage_InteractiveResponseMessage `protobuf_oneof:"interactiveResponseMessage"`
-}
-
-func (x *InteractiveResponseMessage) Reset() {
-	*x = InteractiveResponseMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ImageMessage) GetInteractiveAnnotations() []*InteractiveAnnotation {
+	if x != nil {
+		return x.InteractiveAnnotations
 	}
+	return nil
 }
 
-func (x *InteractiveResponseMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ImageMessage) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
+	}
+	return ""
 }
 
-func (*InteractiveResponseMessage) ProtoMessage() {}
-
-func (x *InteractiveResponseMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ImageMessage) GetMediaKeyTimestamp() int64 {
+	if x != nil && x.MediaKeyTimestamp != nil {
+		return *x.MediaKeyTimestamp
 	}
-	return mi.MessageOf(x)
+	return 0
 }
 
-// Deprecated: Use InteractiveResponseMessage.ProtoReflect.Descriptor instead.
-func (*InteractiveResponseMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{30}
+func (x *ImageMessage) GetJpegThumbnail() []byte {
+	if x != nil {
+		return x.JpegThumbnail
+	}
+	return nil
 }
 
-func (x *InteractiveResponseMessage) GetBody() *InteractiveResponseMessageBody {
+func (x *ImageMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
-		return x.Body
+		return x.ContextInfo
 	}
 	return nil
 }
 
-func (x *InteractiveResponseMessage) GetContextInfo() *ContextInfo {
+func (x *ImageMessage) GetFirstScanSidecar() []byte {
 	if x != nil {
-		return x.ContextInfo
+		return x.FirstScanSidecar
 	}
 	return nil
 }
 
-func (m *InteractiveResponseMessage) GetInteractiveResponseMessage() isInteractiveResponseMessage_InteractiveResponseMessage {
-	if m != nil {
-		return m.InteractiveResponseMessage
+func (x *ImageMessage) GetFirstScanLength() uint32 {
+	if x != nil && x.FirstScanLength != nil {
+		return *x.FirstScanLength
+	}
+	return 0
+}
+
+func (x *ImageMessage) GetExperimentGroupId() uint32 {
+	if x != nil && x.ExperimentGroupId != nil {
+		return *x.ExperimentGroupId
+	}
+	return 0
+}
+
+func (x *ImageMessage) GetScansSidecar() []byte {
+	if x != nil {
+		return x.ScansSidecar
 	}
 	return nil
 }
 
-func (x *InteractiveResponseMessage) GetNativeFlowResponseMessage() *NativeFlowResponseMessage {
-	if x, ok := x.GetInteractiveResponseMessage().(*InteractiveResponseMessage_NativeFlowResponseMessage); ok {
-		return x.NativeFlowResponseMessage
+func (x *ImageMessage) GetScanLengths() []uint32 {
+	if x != nil {
+		return x.ScanLengths
 	}
 	return nil
 }
 
-type isInteractiveResponseMessage_InteractiveResponseMessage interface {
-	isInteractiveResponseMessage_InteractiveResponseMessage()
+func (x *ImageMessage) GetMidQualityFileSha256() []byte {
+	if x != nil {
+		return x.MidQualityFileSha256
+	}
+	return nil
 }
 
-type InteractiveResponseMessage_NativeFlowResponseMessage struct {
-	NativeFlowResponseMessage *NativeFlowResponseMessage `protobuf:"bytes,2,opt,name=nativeFlowResponseMessage,oneof"`
+func (x *ImageMessage) GetMidQualityFileEncSha256() []byte {
+	if x != nil {
+		return x.MidQualityFileEncSha256
+	}
+	return nil
+}
+
+func (x *ImageMessage) GetViewOnce() bool {
+	if x != nil && x.ViewOnce != nil {
+		return *x.ViewOnce
+	}
+	return false
+}
+
+func (x *ImageMessage) GetThumbnailDirectPath() string {
+	if x != nil && x.ThumbnailDirectPath != nil {
+		return *x.ThumbnailDirectPath
+	}
+	return ""
+}
+
+func (x *ImageMessage) GetThumbnailSha256() []byte {
+	if x != nil {
+		return x.ThumbnailSha256
+	}
+	return nil
+}
+
+func (x *ImageMessage) GetThumbnailEncSha256() []byte {
+	if x != nil {
+		return x.ThumbnailEncSha256
+	}
+	return nil
 }
 
-func (*InteractiveResponseMessage_NativeFlowResponseMessage) isInteractiveResponseMessage_InteractiveResponseMessage() {
+func (x *ImageMessage) GetStaticUrl() string {
+	if x != nil && x.StaticUrl != nil {
+		return *x.StaticUrl
+	}
+	return ""
 }
 
-type NativeFlowResponseMessage struct {
+type HistorySyncNotification struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Name       *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	ParamsJson *string `protobuf:"bytes,2,opt,name=paramsJson" json:"paramsJson,omitempty"`
-	Version    *int32  `protobuf:"varint,3,opt,name=version" json:"version,omitempty"`
+	FileSha256        []byte                                   `protobuf:"bytes,1,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileLength        *uint64                                  `protobuf:"varint,2,opt,name=fileLength" json:"fileLength,omitempty"`
+	MediaKey          []byte                                   `protobuf:"bytes,3,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	FileEncSha256     []byte                                   `protobuf:"bytes,4,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	DirectPath        *string                                  `protobuf:"bytes,5,opt,name=directPath" json:"directPath,omitempty"`
+	SyncType          *HistorySyncNotification_HistorySyncType `protobuf:"varint,6,opt,name=syncType,enum=proto.HistorySyncNotification_HistorySyncType" json:"syncType,omitempty"`
+	ChunkOrder        *uint32                                  `protobuf:"varint,7,opt,name=chunkOrder" json:"chunkOrder,omitempty"`
+	OriginalMessageId *string                                  `protobuf:"bytes,8,opt,name=originalMessageId" json:"originalMessageId,omitempty"`
+	Progress          *uint32                                  `protobuf:"varint,9,opt,name=progress" json:"progress,omitempty"`
 }
 
-func (x *NativeFlowResponseMessage) Reset() {
-	*x = NativeFlowResponseMessage{}
+func (x *HistorySyncNotification) Reset() {
+	*x = HistorySyncNotification{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[31]
+		mi := &file_binary_proto_def_proto_msgTypes[23]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *NativeFlowResponseMessage) String() string {
+func (x *HistorySyncNotification) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*NativeFlowResponseMessage) ProtoMessage() {}
+func (*HistorySyncNotification) ProtoMessage() {}
 
-func (x *NativeFlowResponseMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[31]
+func (x *HistorySyncNotification) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[23]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6068,113 +5941,107 @@ func (x *NativeFlowResponseMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use NativeFlowResponseMessage.ProtoReflect.Descriptor instead.
-func (*NativeFlowResponseMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{31}
+// Deprecated: Use HistorySyncNotification.ProtoReflect.Descriptor instead.
+func (*HistorySyncNotification) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{23}
 }
 
-func (x *NativeFlowResponseMessage) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (x *HistorySyncNotification) GetFileSha256() []byte {
+	if x != nil {
+		return x.FileSha256
 	}
-	return ""
+	return nil
 }
 
-func (x *NativeFlowResponseMessage) GetParamsJson() string {
-	if x != nil && x.ParamsJson != nil {
-		return *x.ParamsJson
+func (x *HistorySyncNotification) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
 	}
-	return ""
+	return 0
 }
 
-func (x *NativeFlowResponseMessage) GetVersion() int32 {
-	if x != nil && x.Version != nil {
-		return *x.Version
+func (x *HistorySyncNotification) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
 	}
-	return 0
+	return nil
 }
 
-// Renamed from Message$InteractiveResponseMessage$Body
-type InteractiveResponseMessageBody struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+func (x *HistorySyncNotification) GetFileEncSha256() []byte {
+	if x != nil {
+		return x.FileEncSha256
+	}
+	return nil
 }
 
-func (x *InteractiveResponseMessageBody) Reset() {
-	*x = InteractiveResponseMessageBody{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *HistorySyncNotification) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
 	}
+	return ""
 }
 
-func (x *InteractiveResponseMessageBody) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *HistorySyncNotification) GetSyncType() HistorySyncNotification_HistorySyncType {
+	if x != nil && x.SyncType != nil {
+		return *x.SyncType
+	}
+	return HistorySyncNotification_INITIAL_BOOTSTRAP
 }
 
-func (*InteractiveResponseMessageBody) ProtoMessage() {}
-
-func (x *InteractiveResponseMessageBody) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *HistorySyncNotification) GetChunkOrder() uint32 {
+	if x != nil && x.ChunkOrder != nil {
+		return *x.ChunkOrder
 	}
-	return mi.MessageOf(x)
+	return 0
 }
 
-// Deprecated: Use InteractiveResponseMessageBody.ProtoReflect.Descriptor instead.
-func (*InteractiveResponseMessageBody) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{32}
+func (x *HistorySyncNotification) GetOriginalMessageId() string {
+	if x != nil && x.OriginalMessageId != nil {
+		return *x.OriginalMessageId
+	}
+	return ""
 }
 
-func (x *InteractiveResponseMessageBody) GetText() string {
-	if x != nil && x.Text != nil {
-		return *x.Text
+func (x *HistorySyncNotification) GetProgress() uint32 {
+	if x != nil && x.Progress != nil {
+		return *x.Progress
 	}
-	return ""
+	return 0
 }
 
-type InteractiveMessage struct {
+type HighlyStructuredMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Header      *Header                 `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
-	Body        *InteractiveMessageBody `protobuf:"bytes,2,opt,name=body" json:"body,omitempty"`
-	Footer      *Footer                 `protobuf:"bytes,3,opt,name=footer" json:"footer,omitempty"`
-	ContextInfo *ContextInfo            `protobuf:"bytes,15,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	// Types that are assignable to InteractiveMessage:
-	//	*InteractiveMessage_ShopStorefrontMessage
-	//	*InteractiveMessage_CollectionMessage
-	//	*InteractiveMessage_NativeFlowMessage
-	InteractiveMessage isInteractiveMessage_InteractiveMessage `protobuf_oneof:"interactiveMessage"`
+	Namespace         *string                                            `protobuf:"bytes,1,opt,name=namespace" json:"namespace,omitempty"`
+	ElementName       *string                                            `protobuf:"bytes,2,opt,name=elementName" json:"elementName,omitempty"`
+	Params            []string                                           `protobuf:"bytes,3,rep,name=params" json:"params,omitempty"`
+	FallbackLg        *string                                            `protobuf:"bytes,4,opt,name=fallbackLg" json:"fallbackLg,omitempty"`
+	FallbackLc        *string                                            `protobuf:"bytes,5,opt,name=fallbackLc" json:"fallbackLc,omitempty"`
+	LocalizableParams []*HighlyStructuredMessage_HSMLocalizableParameter `protobuf:"bytes,6,rep,name=localizableParams" json:"localizableParams,omitempty"`
+	DeterministicLg   *string                                            `protobuf:"bytes,7,opt,name=deterministicLg" json:"deterministicLg,omitempty"`
+	DeterministicLc   *string                                            `protobuf:"bytes,8,opt,name=deterministicLc" json:"deterministicLc,omitempty"`
+	HydratedHsm       *TemplateMessage                                   `protobuf:"bytes,9,opt,name=hydratedHsm" json:"hydratedHsm,omitempty"`
 }
 
-func (x *InteractiveMessage) Reset() {
-	*x = InteractiveMessage{}
+func (x *HighlyStructuredMessage) Reset() {
+	*x = HighlyStructuredMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[33]
+		mi := &file_binary_proto_def_proto_msgTypes[24]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *InteractiveMessage) String() string {
+func (x *HighlyStructuredMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*InteractiveMessage) ProtoMessage() {}
+func (*HighlyStructuredMessage) ProtoMessage() {}
 
-func (x *InteractiveMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[33]
+func (x *HighlyStructuredMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[24]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6185,116 +6052,106 @@ func (x *InteractiveMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use InteractiveMessage.ProtoReflect.Descriptor instead.
-func (*InteractiveMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{33}
+// Deprecated: Use HighlyStructuredMessage.ProtoReflect.Descriptor instead.
+func (*HighlyStructuredMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24}
 }
 
-func (x *InteractiveMessage) GetHeader() *Header {
-	if x != nil {
-		return x.Header
+func (x *HighlyStructuredMessage) GetNamespace() string {
+	if x != nil && x.Namespace != nil {
+		return *x.Namespace
 	}
-	return nil
+	return ""
 }
 
-func (x *InteractiveMessage) GetBody() *InteractiveMessageBody {
-	if x != nil {
-		return x.Body
+func (x *HighlyStructuredMessage) GetElementName() string {
+	if x != nil && x.ElementName != nil {
+		return *x.ElementName
 	}
-	return nil
+	return ""
 }
 
-func (x *InteractiveMessage) GetFooter() *Footer {
+func (x *HighlyStructuredMessage) GetParams() []string {
 	if x != nil {
-		return x.Footer
+		return x.Params
 	}
 	return nil
 }
 
-func (x *InteractiveMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
+func (x *HighlyStructuredMessage) GetFallbackLg() string {
+	if x != nil && x.FallbackLg != nil {
+		return *x.FallbackLg
 	}
-	return nil
+	return ""
 }
 
-func (m *InteractiveMessage) GetInteractiveMessage() isInteractiveMessage_InteractiveMessage {
-	if m != nil {
-		return m.InteractiveMessage
+func (x *HighlyStructuredMessage) GetFallbackLc() string {
+	if x != nil && x.FallbackLc != nil {
+		return *x.FallbackLc
 	}
-	return nil
+	return ""
 }
 
-func (x *InteractiveMessage) GetShopStorefrontMessage() *ShopMessage {
-	if x, ok := x.GetInteractiveMessage().(*InteractiveMessage_ShopStorefrontMessage); ok {
-		return x.ShopStorefrontMessage
+func (x *HighlyStructuredMessage) GetLocalizableParams() []*HighlyStructuredMessage_HSMLocalizableParameter {
+	if x != nil {
+		return x.LocalizableParams
 	}
 	return nil
 }
 
-func (x *InteractiveMessage) GetCollectionMessage() *CollectionMessage {
-	if x, ok := x.GetInteractiveMessage().(*InteractiveMessage_CollectionMessage); ok {
-		return x.CollectionMessage
+func (x *HighlyStructuredMessage) GetDeterministicLg() string {
+	if x != nil && x.DeterministicLg != nil {
+		return *x.DeterministicLg
 	}
-	return nil
+	return ""
 }
 
-func (x *InteractiveMessage) GetNativeFlowMessage() *NativeFlowMessage {
-	if x, ok := x.GetInteractiveMessage().(*InteractiveMessage_NativeFlowMessage); ok {
-		return x.NativeFlowMessage
+func (x *HighlyStructuredMessage) GetDeterministicLc() string {
+	if x != nil && x.DeterministicLc != nil {
+		return *x.DeterministicLc
 	}
-	return nil
-}
-
-type isInteractiveMessage_InteractiveMessage interface {
-	isInteractiveMessage_InteractiveMessage()
-}
-
-type InteractiveMessage_ShopStorefrontMessage struct {
-	ShopStorefrontMessage *ShopMessage `protobuf:"bytes,4,opt,name=shopStorefrontMessage,oneof"`
-}
-
-type InteractiveMessage_CollectionMessage struct {
-	CollectionMessage *CollectionMessage `protobuf:"bytes,5,opt,name=collectionMessage,oneof"`
+	return ""
 }
 
-type InteractiveMessage_NativeFlowMessage struct {
-	NativeFlowMessage *NativeFlowMessage `protobuf:"bytes,6,opt,name=nativeFlowMessage,oneof"`
+func (x *HighlyStructuredMessage) GetHydratedHsm() *TemplateMessage {
+	if x != nil {
+		return x.HydratedHsm
+	}
+	return nil
 }
 
-func (*InteractiveMessage_ShopStorefrontMessage) isInteractiveMessage_InteractiveMessage() {}
-
-func (*InteractiveMessage_CollectionMessage) isInteractiveMessage_InteractiveMessage() {}
-
-func (*InteractiveMessage_NativeFlowMessage) isInteractiveMessage_InteractiveMessage() {}
-
-type ShopMessage struct {
+type GroupInviteMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Id             *string                         `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
-	Surface        *ShopMessage_ShopMessageSurface `protobuf:"varint,2,opt,name=surface,enum=proto.ShopMessage_ShopMessageSurface" json:"surface,omitempty"`
-	MessageVersion *int32                          `protobuf:"varint,3,opt,name=messageVersion" json:"messageVersion,omitempty"`
+	GroupJid         *string                       `protobuf:"bytes,1,opt,name=groupJid" json:"groupJid,omitempty"`
+	InviteCode       *string                       `protobuf:"bytes,2,opt,name=inviteCode" json:"inviteCode,omitempty"`
+	InviteExpiration *int64                        `protobuf:"varint,3,opt,name=inviteExpiration" json:"inviteExpiration,omitempty"`
+	GroupName        *string                       `protobuf:"bytes,4,opt,name=groupName" json:"groupName,omitempty"`
+	JpegThumbnail    []byte                        `protobuf:"bytes,5,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
+	Caption          *string                       `protobuf:"bytes,6,opt,name=caption" json:"caption,omitempty"`
+	ContextInfo      *ContextInfo                  `protobuf:"bytes,7,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	GroupType        *GroupInviteMessage_GroupType `protobuf:"varint,8,opt,name=groupType,enum=proto.GroupInviteMessage_GroupType" json:"groupType,omitempty"`
 }
 
-func (x *ShopMessage) Reset() {
-	*x = ShopMessage{}
+func (x *GroupInviteMessage) Reset() {
+	*x = GroupInviteMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[34]
+		mi := &file_binary_proto_def_proto_msgTypes[25]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ShopMessage) String() string {
+func (x *GroupInviteMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ShopMessage) ProtoMessage() {}
+func (*GroupInviteMessage) ProtoMessage() {}
 
-func (x *ShopMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[34]
+func (x *GroupInviteMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[25]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6305,121 +6162,92 @@ func (x *ShopMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ShopMessage.ProtoReflect.Descriptor instead.
-func (*ShopMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{34}
+// Deprecated: Use GroupInviteMessage.ProtoReflect.Descriptor instead.
+func (*GroupInviteMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{25}
 }
 
-func (x *ShopMessage) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
+func (x *GroupInviteMessage) GetGroupJid() string {
+	if x != nil && x.GroupJid != nil {
+		return *x.GroupJid
 	}
 	return ""
 }
 
-func (x *ShopMessage) GetSurface() ShopMessage_ShopMessageSurface {
-	if x != nil && x.Surface != nil {
-		return *x.Surface
+func (x *GroupInviteMessage) GetInviteCode() string {
+	if x != nil && x.InviteCode != nil {
+		return *x.InviteCode
 	}
-	return ShopMessage_UNKNOWN_SURFACE
+	return ""
 }
 
-func (x *ShopMessage) GetMessageVersion() int32 {
-	if x != nil && x.MessageVersion != nil {
-		return *x.MessageVersion
+func (x *GroupInviteMessage) GetInviteExpiration() int64 {
+	if x != nil && x.InviteExpiration != nil {
+		return *x.InviteExpiration
 	}
 	return 0
 }
 
-type NativeFlowMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Buttons           []*NativeFlowButton `protobuf:"bytes,1,rep,name=buttons" json:"buttons,omitempty"`
-	MessageParamsJson *string             `protobuf:"bytes,2,opt,name=messageParamsJson" json:"messageParamsJson,omitempty"`
-	MessageVersion    *int32              `protobuf:"varint,3,opt,name=messageVersion" json:"messageVersion,omitempty"`
-}
-
-func (x *NativeFlowMessage) Reset() {
-	*x = NativeFlowMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *GroupInviteMessage) GetGroupName() string {
+	if x != nil && x.GroupName != nil {
+		return *x.GroupName
 	}
+	return ""
 }
 
-func (x *NativeFlowMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NativeFlowMessage) ProtoMessage() {}
-
-func (x *NativeFlowMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *GroupInviteMessage) GetJpegThumbnail() []byte {
+	if x != nil {
+		return x.JpegThumbnail
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use NativeFlowMessage.ProtoReflect.Descriptor instead.
-func (*NativeFlowMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{35}
+func (x *GroupInviteMessage) GetCaption() string {
+	if x != nil && x.Caption != nil {
+		return *x.Caption
+	}
+	return ""
 }
 
-func (x *NativeFlowMessage) GetButtons() []*NativeFlowButton {
+func (x *GroupInviteMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
-		return x.Buttons
+		return x.ContextInfo
 	}
 	return nil
 }
 
-func (x *NativeFlowMessage) GetMessageParamsJson() string {
-	if x != nil && x.MessageParamsJson != nil {
-		return *x.MessageParamsJson
-	}
-	return ""
-}
-
-func (x *NativeFlowMessage) GetMessageVersion() int32 {
-	if x != nil && x.MessageVersion != nil {
-		return *x.MessageVersion
+func (x *GroupInviteMessage) GetGroupType() GroupInviteMessage_GroupType {
+	if x != nil && x.GroupType != nil {
+		return *x.GroupType
 	}
-	return 0
+	return GroupInviteMessage_DEFAULT
 }
 
-type NativeFlowButton struct {
+type FutureProofMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Name             *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	ButtonParamsJson *string `protobuf:"bytes,2,opt,name=buttonParamsJson" json:"buttonParamsJson,omitempty"`
+	Message *Message `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
 }
 
-func (x *NativeFlowButton) Reset() {
-	*x = NativeFlowButton{}
+func (x *FutureProofMessage) Reset() {
+	*x = FutureProofMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[36]
+		mi := &file_binary_proto_def_proto_msgTypes[26]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *NativeFlowButton) String() string {
+func (x *FutureProofMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*NativeFlowButton) ProtoMessage() {}
+func (*FutureProofMessage) ProtoMessage() {}
 
-func (x *NativeFlowButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[36]
+func (x *FutureProofMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[26]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6430,58 +6258,65 @@ func (x *NativeFlowButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use NativeFlowButton.ProtoReflect.Descriptor instead.
-func (*NativeFlowButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *NativeFlowButton) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
+// Deprecated: Use FutureProofMessage.ProtoReflect.Descriptor instead.
+func (*FutureProofMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{26}
 }
 
-func (x *NativeFlowButton) GetButtonParamsJson() string {
-	if x != nil && x.ButtonParamsJson != nil {
-		return *x.ButtonParamsJson
+func (x *FutureProofMessage) GetMessage() *Message {
+	if x != nil {
+		return x.Message
 	}
-	return ""
+	return nil
 }
 
-type Header struct {
+type ExtendedTextMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Title              *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
-	Subtitle           *string `protobuf:"bytes,2,opt,name=subtitle" json:"subtitle,omitempty"`
-	HasMediaAttachment *bool   `protobuf:"varint,5,opt,name=hasMediaAttachment" json:"hasMediaAttachment,omitempty"`
-	// Types that are assignable to Media:
-	//	*Header_DocumentMessage
-	//	*Header_ImageMessage
-	//	*Header_JpegThumbnail
-	//	*Header_VideoMessage
-	Media isHeader_Media `protobuf_oneof:"media"`
+	Text                             *string                                  `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+	MatchedText                      *string                                  `protobuf:"bytes,2,opt,name=matchedText" json:"matchedText,omitempty"`
+	CanonicalUrl                     *string                                  `protobuf:"bytes,4,opt,name=canonicalUrl" json:"canonicalUrl,omitempty"`
+	Description                      *string                                  `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
+	Title                            *string                                  `protobuf:"bytes,6,opt,name=title" json:"title,omitempty"`
+	TextArgb                         *uint32                                  `protobuf:"fixed32,7,opt,name=textArgb" json:"textArgb,omitempty"`
+	BackgroundArgb                   *uint32                                  `protobuf:"fixed32,8,opt,name=backgroundArgb" json:"backgroundArgb,omitempty"`
+	Font                             *ExtendedTextMessage_FontType            `protobuf:"varint,9,opt,name=font,enum=proto.ExtendedTextMessage_FontType" json:"font,omitempty"`
+	PreviewType                      *ExtendedTextMessage_PreviewType         `protobuf:"varint,10,opt,name=previewType,enum=proto.ExtendedTextMessage_PreviewType" json:"previewType,omitempty"`
+	JpegThumbnail                    []byte                                   `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
+	ContextInfo                      *ContextInfo                             `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	DoNotPlayInline                  *bool                                    `protobuf:"varint,18,opt,name=doNotPlayInline" json:"doNotPlayInline,omitempty"`
+	ThumbnailDirectPath              *string                                  `protobuf:"bytes,19,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
+	ThumbnailSha256                  []byte                                   `protobuf:"bytes,20,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
+	ThumbnailEncSha256               []byte                                   `protobuf:"bytes,21,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
+	MediaKey                         []byte                                   `protobuf:"bytes,22,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	MediaKeyTimestamp                *int64                                   `protobuf:"varint,23,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
+	ThumbnailHeight                  *uint32                                  `protobuf:"varint,24,opt,name=thumbnailHeight" json:"thumbnailHeight,omitempty"`
+	ThumbnailWidth                   *uint32                                  `protobuf:"varint,25,opt,name=thumbnailWidth" json:"thumbnailWidth,omitempty"`
+	InviteLinkGroupType              *ExtendedTextMessage_InviteLinkGroupType `protobuf:"varint,26,opt,name=inviteLinkGroupType,enum=proto.ExtendedTextMessage_InviteLinkGroupType" json:"inviteLinkGroupType,omitempty"`
+	InviteLinkParentGroupSubjectV2   *string                                  `protobuf:"bytes,27,opt,name=inviteLinkParentGroupSubjectV2" json:"inviteLinkParentGroupSubjectV2,omitempty"`
+	InviteLinkParentGroupThumbnailV2 []byte                                   `protobuf:"bytes,28,opt,name=inviteLinkParentGroupThumbnailV2" json:"inviteLinkParentGroupThumbnailV2,omitempty"`
+	InviteLinkGroupTypeV2            *ExtendedTextMessage_InviteLinkGroupType `protobuf:"varint,29,opt,name=inviteLinkGroupTypeV2,enum=proto.ExtendedTextMessage_InviteLinkGroupType" json:"inviteLinkGroupTypeV2,omitempty"`
 }
 
-func (x *Header) Reset() {
-	*x = Header{}
+func (x *ExtendedTextMessage) Reset() {
+	*x = ExtendedTextMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[37]
+		mi := &file_binary_proto_def_proto_msgTypes[27]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Header) String() string {
+func (x *ExtendedTextMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Header) ProtoMessage() {}
+func (*ExtendedTextMessage) ProtoMessage() {}
 
-func (x *Header) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[37]
+func (x *ExtendedTextMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[27]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6492,169 +6327,216 @@ func (x *Header) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Header.ProtoReflect.Descriptor instead.
-func (*Header) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{37}
+// Deprecated: Use ExtendedTextMessage.ProtoReflect.Descriptor instead.
+func (*ExtendedTextMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{27}
 }
 
-func (x *Header) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
+func (x *ExtendedTextMessage) GetText() string {
+	if x != nil && x.Text != nil {
+		return *x.Text
 	}
 	return ""
 }
 
-func (x *Header) GetSubtitle() string {
-	if x != nil && x.Subtitle != nil {
-		return *x.Subtitle
+func (x *ExtendedTextMessage) GetMatchedText() string {
+	if x != nil && x.MatchedText != nil {
+		return *x.MatchedText
 	}
 	return ""
 }
 
-func (x *Header) GetHasMediaAttachment() bool {
-	if x != nil && x.HasMediaAttachment != nil {
-		return *x.HasMediaAttachment
+func (x *ExtendedTextMessage) GetCanonicalUrl() string {
+	if x != nil && x.CanonicalUrl != nil {
+		return *x.CanonicalUrl
 	}
-	return false
+	return ""
 }
 
-func (m *Header) GetMedia() isHeader_Media {
-	if m != nil {
-		return m.Media
+func (x *ExtendedTextMessage) GetDescription() string {
+	if x != nil && x.Description != nil {
+		return *x.Description
 	}
-	return nil
+	return ""
 }
 
-func (x *Header) GetDocumentMessage() *DocumentMessage {
-	if x, ok := x.GetMedia().(*Header_DocumentMessage); ok {
-		return x.DocumentMessage
+func (x *ExtendedTextMessage) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
-	return nil
+	return ""
 }
 
-func (x *Header) GetImageMessage() *ImageMessage {
-	if x, ok := x.GetMedia().(*Header_ImageMessage); ok {
-		return x.ImageMessage
+func (x *ExtendedTextMessage) GetTextArgb() uint32 {
+	if x != nil && x.TextArgb != nil {
+		return *x.TextArgb
 	}
-	return nil
+	return 0
 }
 
-func (x *Header) GetJpegThumbnail() []byte {
-	if x, ok := x.GetMedia().(*Header_JpegThumbnail); ok {
-		return x.JpegThumbnail
+func (x *ExtendedTextMessage) GetBackgroundArgb() uint32 {
+	if x != nil && x.BackgroundArgb != nil {
+		return *x.BackgroundArgb
 	}
-	return nil
+	return 0
 }
 
-func (x *Header) GetVideoMessage() *VideoMessage {
-	if x, ok := x.GetMedia().(*Header_VideoMessage); ok {
-		return x.VideoMessage
+func (x *ExtendedTextMessage) GetFont() ExtendedTextMessage_FontType {
+	if x != nil && x.Font != nil {
+		return *x.Font
 	}
-	return nil
+	return ExtendedTextMessage_SANS_SERIF
 }
 
-type isHeader_Media interface {
-	isHeader_Media()
+func (x *ExtendedTextMessage) GetPreviewType() ExtendedTextMessage_PreviewType {
+	if x != nil && x.PreviewType != nil {
+		return *x.PreviewType
+	}
+	return ExtendedTextMessage_NONE
 }
 
-type Header_DocumentMessage struct {
-	DocumentMessage *DocumentMessage `protobuf:"bytes,3,opt,name=documentMessage,oneof"`
+func (x *ExtendedTextMessage) GetJpegThumbnail() []byte {
+	if x != nil {
+		return x.JpegThumbnail
+	}
+	return nil
 }
 
-type Header_ImageMessage struct {
-	ImageMessage *ImageMessage `protobuf:"bytes,4,opt,name=imageMessage,oneof"`
+func (x *ExtendedTextMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
+	}
+	return nil
 }
 
-type Header_JpegThumbnail struct {
-	JpegThumbnail []byte `protobuf:"bytes,6,opt,name=jpegThumbnail,oneof"`
+func (x *ExtendedTextMessage) GetDoNotPlayInline() bool {
+	if x != nil && x.DoNotPlayInline != nil {
+		return *x.DoNotPlayInline
+	}
+	return false
 }
 
-type Header_VideoMessage struct {
-	VideoMessage *VideoMessage `protobuf:"bytes,7,opt,name=videoMessage,oneof"`
+func (x *ExtendedTextMessage) GetThumbnailDirectPath() string {
+	if x != nil && x.ThumbnailDirectPath != nil {
+		return *x.ThumbnailDirectPath
+	}
+	return ""
 }
 
-func (*Header_DocumentMessage) isHeader_Media() {}
-
-func (*Header_ImageMessage) isHeader_Media() {}
-
-func (*Header_JpegThumbnail) isHeader_Media() {}
-
-func (*Header_VideoMessage) isHeader_Media() {}
-
-type Footer struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+func (x *ExtendedTextMessage) GetThumbnailSha256() []byte {
+	if x != nil {
+		return x.ThumbnailSha256
+	}
+	return nil
 }
 
-func (x *Footer) Reset() {
-	*x = Footer{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ExtendedTextMessage) GetThumbnailEncSha256() []byte {
+	if x != nil {
+		return x.ThumbnailEncSha256
 	}
+	return nil
 }
 
-func (x *Footer) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ExtendedTextMessage) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
+	}
+	return nil
 }
 
-func (*Footer) ProtoMessage() {}
+func (x *ExtendedTextMessage) GetMediaKeyTimestamp() int64 {
+	if x != nil && x.MediaKeyTimestamp != nil {
+		return *x.MediaKeyTimestamp
+	}
+	return 0
+}
 
-func (x *Footer) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ExtendedTextMessage) GetThumbnailHeight() uint32 {
+	if x != nil && x.ThumbnailHeight != nil {
+		return *x.ThumbnailHeight
 	}
-	return mi.MessageOf(x)
+	return 0
 }
 
-// Deprecated: Use Footer.ProtoReflect.Descriptor instead.
-func (*Footer) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{38}
+func (x *ExtendedTextMessage) GetThumbnailWidth() uint32 {
+	if x != nil && x.ThumbnailWidth != nil {
+		return *x.ThumbnailWidth
+	}
+	return 0
 }
 
-func (x *Footer) GetText() string {
-	if x != nil && x.Text != nil {
-		return *x.Text
+func (x *ExtendedTextMessage) GetInviteLinkGroupType() ExtendedTextMessage_InviteLinkGroupType {
+	if x != nil && x.InviteLinkGroupType != nil {
+		return *x.InviteLinkGroupType
 	}
-	return ""
+	return ExtendedTextMessage_DEFAULT
 }
 
-type CollectionMessage struct {
+func (x *ExtendedTextMessage) GetInviteLinkParentGroupSubjectV2() string {
+	if x != nil && x.InviteLinkParentGroupSubjectV2 != nil {
+		return *x.InviteLinkParentGroupSubjectV2
+	}
+	return ""
+}
+
+func (x *ExtendedTextMessage) GetInviteLinkParentGroupThumbnailV2() []byte {
+	if x != nil {
+		return x.InviteLinkParentGroupThumbnailV2
+	}
+	return nil
+}
+
+func (x *ExtendedTextMessage) GetInviteLinkGroupTypeV2() ExtendedTextMessage_InviteLinkGroupType {
+	if x != nil && x.InviteLinkGroupTypeV2 != nil {
+		return *x.InviteLinkGroupTypeV2
+	}
+	return ExtendedTextMessage_DEFAULT
+}
+
+type DocumentMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	BizJid         *string `protobuf:"bytes,1,opt,name=bizJid" json:"bizJid,omitempty"`
-	Id             *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
-	MessageVersion *int32  `protobuf:"varint,3,opt,name=messageVersion" json:"messageVersion,omitempty"`
+	Url                 *string      `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Mimetype            *string      `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
+	Title               *string      `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
+	FileSha256          []byte       `protobuf:"bytes,4,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileLength          *uint64      `protobuf:"varint,5,opt,name=fileLength" json:"fileLength,omitempty"`
+	PageCount           *uint32      `protobuf:"varint,6,opt,name=pageCount" json:"pageCount,omitempty"`
+	MediaKey            []byte       `protobuf:"bytes,7,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	FileName            *string      `protobuf:"bytes,8,opt,name=fileName" json:"fileName,omitempty"`
+	FileEncSha256       []byte       `protobuf:"bytes,9,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	DirectPath          *string      `protobuf:"bytes,10,opt,name=directPath" json:"directPath,omitempty"`
+	MediaKeyTimestamp   *int64       `protobuf:"varint,11,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
+	ContactVcard        *bool        `protobuf:"varint,12,opt,name=contactVcard" json:"contactVcard,omitempty"`
+	ThumbnailDirectPath *string      `protobuf:"bytes,13,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
+	ThumbnailSha256     []byte       `protobuf:"bytes,14,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
+	ThumbnailEncSha256  []byte       `protobuf:"bytes,15,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
+	JpegThumbnail       []byte       `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
+	ContextInfo         *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	ThumbnailHeight     *uint32      `protobuf:"varint,18,opt,name=thumbnailHeight" json:"thumbnailHeight,omitempty"`
+	ThumbnailWidth      *uint32      `protobuf:"varint,19,opt,name=thumbnailWidth" json:"thumbnailWidth,omitempty"`
+	Caption             *string      `protobuf:"bytes,20,opt,name=caption" json:"caption,omitempty"`
 }
 
-func (x *CollectionMessage) Reset() {
-	*x = CollectionMessage{}
+func (x *DocumentMessage) Reset() {
+	*x = DocumentMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[39]
+		mi := &file_binary_proto_def_proto_msgTypes[28]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *CollectionMessage) String() string {
+func (x *DocumentMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*CollectionMessage) ProtoMessage() {}
+func (*DocumentMessage) ProtoMessage() {}
 
-func (x *CollectionMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[39]
+func (x *DocumentMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[28]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6665,58 +6547,178 @@ func (x *CollectionMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use CollectionMessage.ProtoReflect.Descriptor instead.
-func (*CollectionMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{39}
+// Deprecated: Use DocumentMessage.ProtoReflect.Descriptor instead.
+func (*DocumentMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{28}
 }
 
-func (x *CollectionMessage) GetBizJid() string {
-	if x != nil && x.BizJid != nil {
-		return *x.BizJid
+func (x *DocumentMessage) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
 	return ""
 }
 
-func (x *CollectionMessage) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
+func (x *DocumentMessage) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
 	}
 	return ""
 }
 
-func (x *CollectionMessage) GetMessageVersion() int32 {
-	if x != nil && x.MessageVersion != nil {
-		return *x.MessageVersion
+func (x *DocumentMessage) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
+	}
+	return ""
+}
+
+func (x *DocumentMessage) GetFileSha256() []byte {
+	if x != nil {
+		return x.FileSha256
+	}
+	return nil
+}
+
+func (x *DocumentMessage) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
+	}
+	return 0
+}
+
+func (x *DocumentMessage) GetPageCount() uint32 {
+	if x != nil && x.PageCount != nil {
+		return *x.PageCount
+	}
+	return 0
+}
+
+func (x *DocumentMessage) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
+	}
+	return nil
+}
+
+func (x *DocumentMessage) GetFileName() string {
+	if x != nil && x.FileName != nil {
+		return *x.FileName
+	}
+	return ""
+}
+
+func (x *DocumentMessage) GetFileEncSha256() []byte {
+	if x != nil {
+		return x.FileEncSha256
+	}
+	return nil
+}
+
+func (x *DocumentMessage) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
+	}
+	return ""
+}
+
+func (x *DocumentMessage) GetMediaKeyTimestamp() int64 {
+	if x != nil && x.MediaKeyTimestamp != nil {
+		return *x.MediaKeyTimestamp
+	}
+	return 0
+}
+
+func (x *DocumentMessage) GetContactVcard() bool {
+	if x != nil && x.ContactVcard != nil {
+		return *x.ContactVcard
+	}
+	return false
+}
+
+func (x *DocumentMessage) GetThumbnailDirectPath() string {
+	if x != nil && x.ThumbnailDirectPath != nil {
+		return *x.ThumbnailDirectPath
+	}
+	return ""
+}
+
+func (x *DocumentMessage) GetThumbnailSha256() []byte {
+	if x != nil {
+		return x.ThumbnailSha256
+	}
+	return nil
+}
+
+func (x *DocumentMessage) GetThumbnailEncSha256() []byte {
+	if x != nil {
+		return x.ThumbnailEncSha256
+	}
+	return nil
+}
+
+func (x *DocumentMessage) GetJpegThumbnail() []byte {
+	if x != nil {
+		return x.JpegThumbnail
+	}
+	return nil
+}
+
+func (x *DocumentMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
+	}
+	return nil
+}
+
+func (x *DocumentMessage) GetThumbnailHeight() uint32 {
+	if x != nil && x.ThumbnailHeight != nil {
+		return *x.ThumbnailHeight
 	}
 	return 0
 }
 
-// Renamed from Message$InteractiveMessage$Body
-type InteractiveMessageBody struct {
+func (x *DocumentMessage) GetThumbnailWidth() uint32 {
+	if x != nil && x.ThumbnailWidth != nil {
+		return *x.ThumbnailWidth
+	}
+	return 0
+}
+
+func (x *DocumentMessage) GetCaption() string {
+	if x != nil && x.Caption != nil {
+		return *x.Caption
+	}
+	return ""
+}
+
+type DeviceSentMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+	DestinationJid *string  `protobuf:"bytes,1,opt,name=destinationJid" json:"destinationJid,omitempty"`
+	Message        *Message `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
+	Phash          *string  `protobuf:"bytes,3,opt,name=phash" json:"phash,omitempty"`
 }
 
-func (x *InteractiveMessageBody) Reset() {
-	*x = InteractiveMessageBody{}
+func (x *DeviceSentMessage) Reset() {
+	*x = DeviceSentMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[40]
+		mi := &file_binary_proto_def_proto_msgTypes[29]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *InteractiveMessageBody) String() string {
+func (x *DeviceSentMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*InteractiveMessageBody) ProtoMessage() {}
+func (*DeviceSentMessage) ProtoMessage() {}
 
-func (x *InteractiveMessageBody) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[40]
+func (x *DeviceSentMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[29]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6727,43 +6729,57 @@ func (x *InteractiveMessageBody) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use InteractiveMessageBody.ProtoReflect.Descriptor instead.
-func (*InteractiveMessageBody) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{40}
+// Deprecated: Use DeviceSentMessage.ProtoReflect.Descriptor instead.
+func (*DeviceSentMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{29}
 }
 
-func (x *InteractiveMessageBody) GetText() string {
-	if x != nil && x.Text != nil {
-		return *x.Text
+func (x *DeviceSentMessage) GetDestinationJid() string {
+	if x != nil && x.DestinationJid != nil {
+		return *x.DestinationJid
 	}
 	return ""
 }
 
-type InitialSecurityNotificationSettingSync struct {
+func (x *DeviceSentMessage) GetMessage() *Message {
+	if x != nil {
+		return x.Message
+	}
+	return nil
+}
+
+func (x *DeviceSentMessage) GetPhash() string {
+	if x != nil && x.Phash != nil {
+		return *x.Phash
+	}
+	return ""
+}
+
+type DeclinePaymentRequestMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	SecurityNotificationEnabled *bool `protobuf:"varint,1,opt,name=securityNotificationEnabled" json:"securityNotificationEnabled,omitempty"`
+	Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
 }
 
-func (x *InitialSecurityNotificationSettingSync) Reset() {
-	*x = InitialSecurityNotificationSettingSync{}
+func (x *DeclinePaymentRequestMessage) Reset() {
+	*x = DeclinePaymentRequestMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[41]
+		mi := &file_binary_proto_def_proto_msgTypes[30]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *InitialSecurityNotificationSettingSync) String() string {
+func (x *DeclinePaymentRequestMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*InitialSecurityNotificationSettingSync) ProtoMessage() {}
+func (*DeclinePaymentRequestMessage) ProtoMessage() {}
 
-func (x *InitialSecurityNotificationSettingSync) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[41]
+func (x *DeclinePaymentRequestMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[30]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6774,68 +6790,45 @@ func (x *InitialSecurityNotificationSettingSync) ProtoReflect() protoreflect.Mes
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use InitialSecurityNotificationSettingSync.ProtoReflect.Descriptor instead.
-func (*InitialSecurityNotificationSettingSync) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{41}
+// Deprecated: Use DeclinePaymentRequestMessage.ProtoReflect.Descriptor instead.
+func (*DeclinePaymentRequestMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{30}
 }
 
-func (x *InitialSecurityNotificationSettingSync) GetSecurityNotificationEnabled() bool {
-	if x != nil && x.SecurityNotificationEnabled != nil {
-		return *x.SecurityNotificationEnabled
+func (x *DeclinePaymentRequestMessage) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
 	}
-	return false
+	return nil
 }
 
-type ImageMessage struct {
+type ContactsArrayMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Url                     *string                  `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
-	Mimetype                *string                  `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
-	Caption                 *string                  `protobuf:"bytes,3,opt,name=caption" json:"caption,omitempty"`
-	FileSha256              []byte                   `protobuf:"bytes,4,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileLength              *uint64                  `protobuf:"varint,5,opt,name=fileLength" json:"fileLength,omitempty"`
-	Height                  *uint32                  `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
-	Width                   *uint32                  `protobuf:"varint,7,opt,name=width" json:"width,omitempty"`
-	MediaKey                []byte                   `protobuf:"bytes,8,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	FileEncSha256           []byte                   `protobuf:"bytes,9,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
-	InteractiveAnnotations  []*InteractiveAnnotation `protobuf:"bytes,10,rep,name=interactiveAnnotations" json:"interactiveAnnotations,omitempty"`
-	DirectPath              *string                  `protobuf:"bytes,11,opt,name=directPath" json:"directPath,omitempty"`
-	MediaKeyTimestamp       *int64                   `protobuf:"varint,12,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	JpegThumbnail           []byte                   `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
-	ContextInfo             *ContextInfo             `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	FirstScanSidecar        []byte                   `protobuf:"bytes,18,opt,name=firstScanSidecar" json:"firstScanSidecar,omitempty"`
-	FirstScanLength         *uint32                  `protobuf:"varint,19,opt,name=firstScanLength" json:"firstScanLength,omitempty"`
-	ExperimentGroupId       *uint32                  `protobuf:"varint,20,opt,name=experimentGroupId" json:"experimentGroupId,omitempty"`
-	ScansSidecar            []byte                   `protobuf:"bytes,21,opt,name=scansSidecar" json:"scansSidecar,omitempty"`
-	ScanLengths             []uint32                 `protobuf:"varint,22,rep,name=scanLengths" json:"scanLengths,omitempty"`
-	MidQualityFileSha256    []byte                   `protobuf:"bytes,23,opt,name=midQualityFileSha256" json:"midQualityFileSha256,omitempty"`
-	MidQualityFileEncSha256 []byte                   `protobuf:"bytes,24,opt,name=midQualityFileEncSha256" json:"midQualityFileEncSha256,omitempty"`
-	ViewOnce                *bool                    `protobuf:"varint,25,opt,name=viewOnce" json:"viewOnce,omitempty"`
-	ThumbnailDirectPath     *string                  `protobuf:"bytes,26,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
-	ThumbnailSha256         []byte                   `protobuf:"bytes,27,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
-	ThumbnailEncSha256      []byte                   `protobuf:"bytes,28,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
-	StaticUrl               *string                  `protobuf:"bytes,29,opt,name=staticUrl" json:"staticUrl,omitempty"`
+	DisplayName *string           `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"`
+	Contacts    []*ContactMessage `protobuf:"bytes,2,rep,name=contacts" json:"contacts,omitempty"`
+	ContextInfo *ContextInfo      `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *ImageMessage) Reset() {
-	*x = ImageMessage{}
+func (x *ContactsArrayMessage) Reset() {
+	*x = ContactsArrayMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[42]
+		mi := &file_binary_proto_def_proto_msgTypes[31]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ImageMessage) String() string {
+func (x *ContactsArrayMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ImageMessage) ProtoMessage() {}
+func (*ContactsArrayMessage) ProtoMessage() {}
 
-func (x *ImageMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[42]
+func (x *ContactsArrayMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[31]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6846,225 +6839,121 @@ func (x *ImageMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ImageMessage.ProtoReflect.Descriptor instead.
-func (*ImageMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{42}
-}
-
-func (x *ImageMessage) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
-	}
-	return ""
-}
-
-func (x *ImageMessage) GetMimetype() string {
-	if x != nil && x.Mimetype != nil {
-		return *x.Mimetype
-	}
-	return ""
-}
-
-func (x *ImageMessage) GetCaption() string {
-	if x != nil && x.Caption != nil {
-		return *x.Caption
-	}
-	return ""
-}
-
-func (x *ImageMessage) GetFileSha256() []byte {
-	if x != nil {
-		return x.FileSha256
-	}
-	return nil
-}
-
-func (x *ImageMessage) GetFileLength() uint64 {
-	if x != nil && x.FileLength != nil {
-		return *x.FileLength
-	}
-	return 0
-}
-
-func (x *ImageMessage) GetHeight() uint32 {
-	if x != nil && x.Height != nil {
-		return *x.Height
-	}
-	return 0
-}
-
-func (x *ImageMessage) GetWidth() uint32 {
-	if x != nil && x.Width != nil {
-		return *x.Width
-	}
-	return 0
-}
-
-func (x *ImageMessage) GetMediaKey() []byte {
-	if x != nil {
-		return x.MediaKey
-	}
-	return nil
-}
-
-func (x *ImageMessage) GetFileEncSha256() []byte {
-	if x != nil {
-		return x.FileEncSha256
-	}
-	return nil
-}
-
-func (x *ImageMessage) GetInteractiveAnnotations() []*InteractiveAnnotation {
-	if x != nil {
-		return x.InteractiveAnnotations
-	}
-	return nil
+// Deprecated: Use ContactsArrayMessage.ProtoReflect.Descriptor instead.
+func (*ContactsArrayMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{31}
 }
 
-func (x *ImageMessage) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
+func (x *ContactsArrayMessage) GetDisplayName() string {
+	if x != nil && x.DisplayName != nil {
+		return *x.DisplayName
 	}
 	return ""
 }
 
-func (x *ImageMessage) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
-	}
-	return 0
-}
-
-func (x *ImageMessage) GetJpegThumbnail() []byte {
+func (x *ContactsArrayMessage) GetContacts() []*ContactMessage {
 	if x != nil {
-		return x.JpegThumbnail
+		return x.Contacts
 	}
 	return nil
 }
 
-func (x *ImageMessage) GetContextInfo() *ContextInfo {
+func (x *ContactsArrayMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
 		return x.ContextInfo
 	}
 	return nil
 }
 
-func (x *ImageMessage) GetFirstScanSidecar() []byte {
-	if x != nil {
-		return x.FirstScanSidecar
-	}
-	return nil
-}
-
-func (x *ImageMessage) GetFirstScanLength() uint32 {
-	if x != nil && x.FirstScanLength != nil {
-		return *x.FirstScanLength
-	}
-	return 0
-}
+type ContactMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *ImageMessage) GetExperimentGroupId() uint32 {
-	if x != nil && x.ExperimentGroupId != nil {
-		return *x.ExperimentGroupId
-	}
-	return 0
+	DisplayName *string      `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"`
+	Vcard       *string      `protobuf:"bytes,16,opt,name=vcard" json:"vcard,omitempty"`
+	ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *ImageMessage) GetScansSidecar() []byte {
-	if x != nil {
-		return x.ScansSidecar
+func (x *ContactMessage) Reset() {
+	*x = ContactMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[32]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *ImageMessage) GetScanLengths() []uint32 {
-	if x != nil {
-		return x.ScanLengths
-	}
-	return nil
+func (x *ContactMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *ImageMessage) GetMidQualityFileSha256() []byte {
-	if x != nil {
-		return x.MidQualityFileSha256
-	}
-	return nil
-}
+func (*ContactMessage) ProtoMessage() {}
 
-func (x *ImageMessage) GetMidQualityFileEncSha256() []byte {
-	if x != nil {
-		return x.MidQualityFileEncSha256
+func (x *ContactMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[32]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *ImageMessage) GetViewOnce() bool {
-	if x != nil && x.ViewOnce != nil {
-		return *x.ViewOnce
-	}
-	return false
+// Deprecated: Use ContactMessage.ProtoReflect.Descriptor instead.
+func (*ContactMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{32}
 }
 
-func (x *ImageMessage) GetThumbnailDirectPath() string {
-	if x != nil && x.ThumbnailDirectPath != nil {
-		return *x.ThumbnailDirectPath
+func (x *ContactMessage) GetDisplayName() string {
+	if x != nil && x.DisplayName != nil {
+		return *x.DisplayName
 	}
 	return ""
 }
 
-func (x *ImageMessage) GetThumbnailSha256() []byte {
-	if x != nil {
-		return x.ThumbnailSha256
+func (x *ContactMessage) GetVcard() string {
+	if x != nil && x.Vcard != nil {
+		return *x.Vcard
 	}
-	return nil
+	return ""
 }
 
-func (x *ImageMessage) GetThumbnailEncSha256() []byte {
+func (x *ContactMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
-		return x.ThumbnailEncSha256
+		return x.ContextInfo
 	}
 	return nil
 }
 
-func (x *ImageMessage) GetStaticUrl() string {
-	if x != nil && x.StaticUrl != nil {
-		return *x.StaticUrl
-	}
-	return ""
-}
-
-type HistorySyncNotification struct {
+type Chat struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	FileSha256        []byte                                                          `protobuf:"bytes,1,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileLength        *uint64                                                         `protobuf:"varint,2,opt,name=fileLength" json:"fileLength,omitempty"`
-	MediaKey          []byte                                                          `protobuf:"bytes,3,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	FileEncSha256     []byte                                                          `protobuf:"bytes,4,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
-	DirectPath        *string                                                         `protobuf:"bytes,5,opt,name=directPath" json:"directPath,omitempty"`
-	SyncType          *HistorySyncNotification_HistorySyncNotificationHistorySyncType `protobuf:"varint,6,opt,name=syncType,enum=proto.HistorySyncNotification_HistorySyncNotificationHistorySyncType" json:"syncType,omitempty"`
-	ChunkOrder        *uint32                                                         `protobuf:"varint,7,opt,name=chunkOrder" json:"chunkOrder,omitempty"`
-	OriginalMessageId *string                                                         `protobuf:"bytes,8,opt,name=originalMessageId" json:"originalMessageId,omitempty"`
+	DisplayName *string `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"`
+	Id          *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
 }
 
-func (x *HistorySyncNotification) Reset() {
-	*x = HistorySyncNotification{}
+func (x *Chat) Reset() {
+	*x = Chat{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[43]
+		mi := &file_binary_proto_def_proto_msgTypes[33]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HistorySyncNotification) String() string {
+func (x *Chat) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HistorySyncNotification) ProtoMessage() {}
+func (*Chat) ProtoMessage() {}
 
-func (x *HistorySyncNotification) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[43]
+func (x *Chat) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[33]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7075,100 +6964,100 @@ func (x *HistorySyncNotification) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HistorySyncNotification.ProtoReflect.Descriptor instead.
-func (*HistorySyncNotification) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{43}
+// Deprecated: Use Chat.ProtoReflect.Descriptor instead.
+func (*Chat) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{33}
 }
 
-func (x *HistorySyncNotification) GetFileSha256() []byte {
-	if x != nil {
-		return x.FileSha256
+func (x *Chat) GetDisplayName() string {
+	if x != nil && x.DisplayName != nil {
+		return *x.DisplayName
 	}
-	return nil
+	return ""
 }
 
-func (x *HistorySyncNotification) GetFileLength() uint64 {
-	if x != nil && x.FileLength != nil {
-		return *x.FileLength
+func (x *Chat) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return 0
+	return ""
 }
 
-func (x *HistorySyncNotification) GetMediaKey() []byte {
-	if x != nil {
-		return x.MediaKey
-	}
-	return nil
+type CancelPaymentRequestMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
 }
 
-func (x *HistorySyncNotification) GetFileEncSha256() []byte {
-	if x != nil {
-		return x.FileEncSha256
+func (x *CancelPaymentRequestMessage) Reset() {
+	*x = CancelPaymentRequestMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[34]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *HistorySyncNotification) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
-	}
-	return ""
+func (x *CancelPaymentRequestMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *HistorySyncNotification) GetSyncType() HistorySyncNotification_HistorySyncNotificationHistorySyncType {
-	if x != nil && x.SyncType != nil {
-		return *x.SyncType
+func (*CancelPaymentRequestMessage) ProtoMessage() {}
+
+func (x *CancelPaymentRequestMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[34]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return HistorySyncNotification_INITIAL_BOOTSTRAP
+	return mi.MessageOf(x)
 }
 
-func (x *HistorySyncNotification) GetChunkOrder() uint32 {
-	if x != nil && x.ChunkOrder != nil {
-		return *x.ChunkOrder
-	}
-	return 0
+// Deprecated: Use CancelPaymentRequestMessage.ProtoReflect.Descriptor instead.
+func (*CancelPaymentRequestMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{34}
 }
 
-func (x *HistorySyncNotification) GetOriginalMessageId() string {
-	if x != nil && x.OriginalMessageId != nil {
-		return *x.OriginalMessageId
+func (x *CancelPaymentRequestMessage) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
 	}
-	return ""
+	return nil
 }
 
-type HighlyStructuredMessage struct {
+type Call struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Namespace         *string                    `protobuf:"bytes,1,opt,name=namespace" json:"namespace,omitempty"`
-	ElementName       *string                    `protobuf:"bytes,2,opt,name=elementName" json:"elementName,omitempty"`
-	Params            []string                   `protobuf:"bytes,3,rep,name=params" json:"params,omitempty"`
-	FallbackLg        *string                    `protobuf:"bytes,4,opt,name=fallbackLg" json:"fallbackLg,omitempty"`
-	FallbackLc        *string                    `protobuf:"bytes,5,opt,name=fallbackLc" json:"fallbackLc,omitempty"`
-	LocalizableParams []*HSMLocalizableParameter `protobuf:"bytes,6,rep,name=localizableParams" json:"localizableParams,omitempty"`
-	DeterministicLg   *string                    `protobuf:"bytes,7,opt,name=deterministicLg" json:"deterministicLg,omitempty"`
-	DeterministicLc   *string                    `protobuf:"bytes,8,opt,name=deterministicLc" json:"deterministicLc,omitempty"`
-	HydratedHsm       *TemplateMessage           `protobuf:"bytes,9,opt,name=hydratedHsm" json:"hydratedHsm,omitempty"`
+	CallKey                []byte  `protobuf:"bytes,1,opt,name=callKey" json:"callKey,omitempty"`
+	ConversionSource       *string `protobuf:"bytes,2,opt,name=conversionSource" json:"conversionSource,omitempty"`
+	ConversionData         []byte  `protobuf:"bytes,3,opt,name=conversionData" json:"conversionData,omitempty"`
+	ConversionDelaySeconds *uint32 `protobuf:"varint,4,opt,name=conversionDelaySeconds" json:"conversionDelaySeconds,omitempty"`
 }
 
-func (x *HighlyStructuredMessage) Reset() {
-	*x = HighlyStructuredMessage{}
+func (x *Call) Reset() {
+	*x = Call{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[44]
+		mi := &file_binary_proto_def_proto_msgTypes[35]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HighlyStructuredMessage) String() string {
+func (x *Call) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HighlyStructuredMessage) ProtoMessage() {}
+func (*Call) ProtoMessage() {}
 
-func (x *HighlyStructuredMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[44]
+func (x *Call) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[35]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7179,103 +7068,69 @@ func (x *HighlyStructuredMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HighlyStructuredMessage.ProtoReflect.Descriptor instead.
-func (*HighlyStructuredMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{44}
-}
-
-func (x *HighlyStructuredMessage) GetNamespace() string {
-	if x != nil && x.Namespace != nil {
-		return *x.Namespace
-	}
-	return ""
-}
-
-func (x *HighlyStructuredMessage) GetElementName() string {
-	if x != nil && x.ElementName != nil {
-		return *x.ElementName
-	}
-	return ""
+// Deprecated: Use Call.ProtoReflect.Descriptor instead.
+func (*Call) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{35}
 }
 
-func (x *HighlyStructuredMessage) GetParams() []string {
+func (x *Call) GetCallKey() []byte {
 	if x != nil {
-		return x.Params
+		return x.CallKey
 	}
 	return nil
 }
 
-func (x *HighlyStructuredMessage) GetFallbackLg() string {
-	if x != nil && x.FallbackLg != nil {
-		return *x.FallbackLg
-	}
-	return ""
-}
-
-func (x *HighlyStructuredMessage) GetFallbackLc() string {
-	if x != nil && x.FallbackLc != nil {
-		return *x.FallbackLc
+func (x *Call) GetConversionSource() string {
+	if x != nil && x.ConversionSource != nil {
+		return *x.ConversionSource
 	}
 	return ""
 }
 
-func (x *HighlyStructuredMessage) GetLocalizableParams() []*HSMLocalizableParameter {
+func (x *Call) GetConversionData() []byte {
 	if x != nil {
-		return x.LocalizableParams
+		return x.ConversionData
 	}
 	return nil
 }
 
-func (x *HighlyStructuredMessage) GetDeterministicLg() string {
-	if x != nil && x.DeterministicLg != nil {
-		return *x.DeterministicLg
-	}
-	return ""
-}
-
-func (x *HighlyStructuredMessage) GetDeterministicLc() string {
-	if x != nil && x.DeterministicLc != nil {
-		return *x.DeterministicLc
-	}
-	return ""
-}
-
-func (x *HighlyStructuredMessage) GetHydratedHsm() *TemplateMessage {
-	if x != nil {
-		return x.HydratedHsm
+func (x *Call) GetConversionDelaySeconds() uint32 {
+	if x != nil && x.ConversionDelaySeconds != nil {
+		return *x.ConversionDelaySeconds
 	}
-	return nil
+	return 0
 }
 
-type HSMLocalizableParameter struct {
+type ButtonsResponseMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Default *string `protobuf:"bytes,1,opt,name=default" json:"default,omitempty"`
-	// Types that are assignable to ParamOneof:
-	//	*HSMLocalizableParameter_Currency
-	//	*HSMLocalizableParameter_DateTime
-	ParamOneof isHSMLocalizableParameter_ParamOneof `protobuf_oneof:"paramOneof"`
+	SelectedButtonId *string                      `protobuf:"bytes,1,opt,name=selectedButtonId" json:"selectedButtonId,omitempty"`
+	ContextInfo      *ContextInfo                 `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	Type             *ButtonsResponseMessage_Type `protobuf:"varint,4,opt,name=type,enum=proto.ButtonsResponseMessage_Type" json:"type,omitempty"`
+	// Types that are assignable to Response:
+	//	*ButtonsResponseMessage_SelectedDisplayText
+	Response isButtonsResponseMessage_Response `protobuf_oneof:"response"`
 }
 
-func (x *HSMLocalizableParameter) Reset() {
-	*x = HSMLocalizableParameter{}
+func (x *ButtonsResponseMessage) Reset() {
+	*x = ButtonsResponseMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[45]
+		mi := &file_binary_proto_def_proto_msgTypes[36]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HSMLocalizableParameter) String() string {
+func (x *ButtonsResponseMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HSMLocalizableParameter) ProtoMessage() {}
+func (*ButtonsResponseMessage) ProtoMessage() {}
 
-func (x *HSMLocalizableParameter) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[45]
+func (x *ButtonsResponseMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[36]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7286,83 +7141,92 @@ func (x *HSMLocalizableParameter) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HSMLocalizableParameter.ProtoReflect.Descriptor instead.
-func (*HSMLocalizableParameter) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{45}
+// Deprecated: Use ButtonsResponseMessage.ProtoReflect.Descriptor instead.
+func (*ButtonsResponseMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{36}
 }
 
-func (x *HSMLocalizableParameter) GetDefault() string {
-	if x != nil && x.Default != nil {
-		return *x.Default
+func (x *ButtonsResponseMessage) GetSelectedButtonId() string {
+	if x != nil && x.SelectedButtonId != nil {
+		return *x.SelectedButtonId
 	}
 	return ""
 }
 
-func (m *HSMLocalizableParameter) GetParamOneof() isHSMLocalizableParameter_ParamOneof {
-	if m != nil {
-		return m.ParamOneof
+func (x *ButtonsResponseMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
 	}
 	return nil
 }
 
-func (x *HSMLocalizableParameter) GetCurrency() *HSMCurrency {
-	if x, ok := x.GetParamOneof().(*HSMLocalizableParameter_Currency); ok {
-		return x.Currency
+func (x *ButtonsResponseMessage) GetType() ButtonsResponseMessage_Type {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return nil
+	return ButtonsResponseMessage_UNKNOWN
 }
 
-func (x *HSMLocalizableParameter) GetDateTime() *HSMDateTime {
-	if x, ok := x.GetParamOneof().(*HSMLocalizableParameter_DateTime); ok {
-		return x.DateTime
+func (m *ButtonsResponseMessage) GetResponse() isButtonsResponseMessage_Response {
+	if m != nil {
+		return m.Response
 	}
 	return nil
 }
 
-type isHSMLocalizableParameter_ParamOneof interface {
-	isHSMLocalizableParameter_ParamOneof()
+func (x *ButtonsResponseMessage) GetSelectedDisplayText() string {
+	if x, ok := x.GetResponse().(*ButtonsResponseMessage_SelectedDisplayText); ok {
+		return x.SelectedDisplayText
+	}
+	return ""
 }
 
-type HSMLocalizableParameter_Currency struct {
-	Currency *HSMCurrency `protobuf:"bytes,2,opt,name=currency,oneof"`
+type isButtonsResponseMessage_Response interface {
+	isButtonsResponseMessage_Response()
 }
 
-type HSMLocalizableParameter_DateTime struct {
-	DateTime *HSMDateTime `protobuf:"bytes,3,opt,name=dateTime,oneof"`
+type ButtonsResponseMessage_SelectedDisplayText struct {
+	SelectedDisplayText string `protobuf:"bytes,2,opt,name=selectedDisplayText,oneof"`
 }
 
-func (*HSMLocalizableParameter_Currency) isHSMLocalizableParameter_ParamOneof() {}
-
-func (*HSMLocalizableParameter_DateTime) isHSMLocalizableParameter_ParamOneof() {}
+func (*ButtonsResponseMessage_SelectedDisplayText) isButtonsResponseMessage_Response() {}
 
-type HSMDateTime struct {
+type ButtonsMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	// Types that are assignable to DatetimeOneof:
-	//	*HSMDateTime_Component
-	//	*HSMDateTime_UnixEpoch
-	DatetimeOneof isHSMDateTime_DatetimeOneof `protobuf_oneof:"datetimeOneof"`
+	ContentText *string                    `protobuf:"bytes,6,opt,name=contentText" json:"contentText,omitempty"`
+	FooterText  *string                    `protobuf:"bytes,7,opt,name=footerText" json:"footerText,omitempty"`
+	ContextInfo *ContextInfo               `protobuf:"bytes,8,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	Buttons     []*ButtonsMessage_Button   `protobuf:"bytes,9,rep,name=buttons" json:"buttons,omitempty"`
+	HeaderType  *ButtonsMessage_HeaderType `protobuf:"varint,10,opt,name=headerType,enum=proto.ButtonsMessage_HeaderType" json:"headerType,omitempty"`
+	// Types that are assignable to Header:
+	//	*ButtonsMessage_Text
+	//	*ButtonsMessage_DocumentMessage
+	//	*ButtonsMessage_ImageMessage
+	//	*ButtonsMessage_VideoMessage
+	//	*ButtonsMessage_LocationMessage
+	Header isButtonsMessage_Header `protobuf_oneof:"header"`
 }
 
-func (x *HSMDateTime) Reset() {
-	*x = HSMDateTime{}
+func (x *ButtonsMessage) Reset() {
+	*x = ButtonsMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[46]
+		mi := &file_binary_proto_def_proto_msgTypes[37]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HSMDateTime) String() string {
+func (x *ButtonsMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HSMDateTime) ProtoMessage() {}
+func (*ButtonsMessage) ProtoMessage() {}
 
-func (x *HSMDateTime) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[46]
+func (x *ButtonsMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[37]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7373,126 +7237,159 @@ func (x *HSMDateTime) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HSMDateTime.ProtoReflect.Descriptor instead.
-func (*HSMDateTime) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{46}
+// Deprecated: Use ButtonsMessage.ProtoReflect.Descriptor instead.
+func (*ButtonsMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{37}
 }
 
-func (m *HSMDateTime) GetDatetimeOneof() isHSMDateTime_DatetimeOneof {
-	if m != nil {
-		return m.DatetimeOneof
+func (x *ButtonsMessage) GetContentText() string {
+	if x != nil && x.ContentText != nil {
+		return *x.ContentText
 	}
-	return nil
+	return ""
 }
 
-func (x *HSMDateTime) GetComponent() *HSMDateTimeComponent {
-	if x, ok := x.GetDatetimeOneof().(*HSMDateTime_Component); ok {
-		return x.Component
+func (x *ButtonsMessage) GetFooterText() string {
+	if x != nil && x.FooterText != nil {
+		return *x.FooterText
 	}
-	return nil
+	return ""
 }
 
-func (x *HSMDateTime) GetUnixEpoch() *HSMDateTimeUnixEpoch {
-	if x, ok := x.GetDatetimeOneof().(*HSMDateTime_UnixEpoch); ok {
-		return x.UnixEpoch
+func (x *ButtonsMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
 	}
 	return nil
 }
 
-type isHSMDateTime_DatetimeOneof interface {
-	isHSMDateTime_DatetimeOneof()
-}
-
-type HSMDateTime_Component struct {
-	Component *HSMDateTimeComponent `protobuf:"bytes,1,opt,name=component,oneof"`
+func (x *ButtonsMessage) GetButtons() []*ButtonsMessage_Button {
+	if x != nil {
+		return x.Buttons
+	}
+	return nil
 }
 
-type HSMDateTime_UnixEpoch struct {
-	UnixEpoch *HSMDateTimeUnixEpoch `protobuf:"bytes,2,opt,name=unixEpoch,oneof"`
-}
+func (x *ButtonsMessage) GetHeaderType() ButtonsMessage_HeaderType {
+	if x != nil && x.HeaderType != nil {
+		return *x.HeaderType
+	}
+	return ButtonsMessage_UNKNOWN
+}
 
-func (*HSMDateTime_Component) isHSMDateTime_DatetimeOneof() {}
+func (m *ButtonsMessage) GetHeader() isButtonsMessage_Header {
+	if m != nil {
+		return m.Header
+	}
+	return nil
+}
 
-func (*HSMDateTime_UnixEpoch) isHSMDateTime_DatetimeOneof() {}
+func (x *ButtonsMessage) GetText() string {
+	if x, ok := x.GetHeader().(*ButtonsMessage_Text); ok {
+		return x.Text
+	}
+	return ""
+}
 
-type HSMDateTimeUnixEpoch struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
+func (x *ButtonsMessage) GetDocumentMessage() *DocumentMessage {
+	if x, ok := x.GetHeader().(*ButtonsMessage_DocumentMessage); ok {
+		return x.DocumentMessage
+	}
+	return nil
+}
 
-	Timestamp *int64 `protobuf:"varint,1,opt,name=timestamp" json:"timestamp,omitempty"`
+func (x *ButtonsMessage) GetImageMessage() *ImageMessage {
+	if x, ok := x.GetHeader().(*ButtonsMessage_ImageMessage); ok {
+		return x.ImageMessage
+	}
+	return nil
 }
 
-func (x *HSMDateTimeUnixEpoch) Reset() {
-	*x = HSMDateTimeUnixEpoch{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[47]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ButtonsMessage) GetVideoMessage() *VideoMessage {
+	if x, ok := x.GetHeader().(*ButtonsMessage_VideoMessage); ok {
+		return x.VideoMessage
 	}
+	return nil
 }
 
-func (x *HSMDateTimeUnixEpoch) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ButtonsMessage) GetLocationMessage() *LocationMessage {
+	if x, ok := x.GetHeader().(*ButtonsMessage_LocationMessage); ok {
+		return x.LocationMessage
+	}
+	return nil
 }
 
-func (*HSMDateTimeUnixEpoch) ProtoMessage() {}
+type isButtonsMessage_Header interface {
+	isButtonsMessage_Header()
+}
 
-func (x *HSMDateTimeUnixEpoch) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[47]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
+type ButtonsMessage_Text struct {
+	Text string `protobuf:"bytes,1,opt,name=text,oneof"`
 }
 
-// Deprecated: Use HSMDateTimeUnixEpoch.ProtoReflect.Descriptor instead.
-func (*HSMDateTimeUnixEpoch) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{47}
+type ButtonsMessage_DocumentMessage struct {
+	DocumentMessage *DocumentMessage `protobuf:"bytes,2,opt,name=documentMessage,oneof"`
 }
 
-func (x *HSMDateTimeUnixEpoch) GetTimestamp() int64 {
-	if x != nil && x.Timestamp != nil {
-		return *x.Timestamp
-	}
-	return 0
+type ButtonsMessage_ImageMessage struct {
+	ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"`
+}
+
+type ButtonsMessage_VideoMessage struct {
+	VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"`
+}
+
+type ButtonsMessage_LocationMessage struct {
+	LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"`
 }
 
-type HSMDateTimeComponent struct {
+func (*ButtonsMessage_Text) isButtonsMessage_Header() {}
+
+func (*ButtonsMessage_DocumentMessage) isButtonsMessage_Header() {}
+
+func (*ButtonsMessage_ImageMessage) isButtonsMessage_Header() {}
+
+func (*ButtonsMessage_VideoMessage) isButtonsMessage_Header() {}
+
+func (*ButtonsMessage_LocationMessage) isButtonsMessage_Header() {}
+
+type AudioMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DayOfWeek  *HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType `protobuf:"varint,1,opt,name=dayOfWeek,enum=proto.HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType" json:"dayOfWeek,omitempty"`
-	Year       *uint32                                                 `protobuf:"varint,2,opt,name=year" json:"year,omitempty"`
-	Month      *uint32                                                 `protobuf:"varint,3,opt,name=month" json:"month,omitempty"`
-	DayOfMonth *uint32                                                 `protobuf:"varint,4,opt,name=dayOfMonth" json:"dayOfMonth,omitempty"`
-	Hour       *uint32                                                 `protobuf:"varint,5,opt,name=hour" json:"hour,omitempty"`
-	Minute     *uint32                                                 `protobuf:"varint,6,opt,name=minute" json:"minute,omitempty"`
-	Calendar   *HSMDateTimeComponent_HSMDateTimeComponentCalendarType  `protobuf:"varint,7,opt,name=calendar,enum=proto.HSMDateTimeComponent_HSMDateTimeComponentCalendarType" json:"calendar,omitempty"`
+	Url               *string      `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Mimetype          *string      `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
+	FileSha256        []byte       `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileLength        *uint64      `protobuf:"varint,4,opt,name=fileLength" json:"fileLength,omitempty"`
+	Seconds           *uint32      `protobuf:"varint,5,opt,name=seconds" json:"seconds,omitempty"`
+	Ptt               *bool        `protobuf:"varint,6,opt,name=ptt" json:"ptt,omitempty"`
+	MediaKey          []byte       `protobuf:"bytes,7,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	FileEncSha256     []byte       `protobuf:"bytes,8,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	DirectPath        *string      `protobuf:"bytes,9,opt,name=directPath" json:"directPath,omitempty"`
+	MediaKeyTimestamp *int64       `protobuf:"varint,10,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
+	ContextInfo       *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	StreamingSidecar  []byte       `protobuf:"bytes,18,opt,name=streamingSidecar" json:"streamingSidecar,omitempty"`
+	Waveform          []byte       `protobuf:"bytes,19,opt,name=waveform" json:"waveform,omitempty"`
 }
 
-func (x *HSMDateTimeComponent) Reset() {
-	*x = HSMDateTimeComponent{}
+func (x *AudioMessage) Reset() {
+	*x = AudioMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[48]
+		mi := &file_binary_proto_def_proto_msgTypes[38]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HSMDateTimeComponent) String() string {
+func (x *AudioMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HSMDateTimeComponent) ProtoMessage() {}
+func (*AudioMessage) ProtoMessage() {}
 
-func (x *HSMDateTimeComponent) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[48]
+func (x *AudioMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[38]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7503,86 +7400,128 @@ func (x *HSMDateTimeComponent) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HSMDateTimeComponent.ProtoReflect.Descriptor instead.
-func (*HSMDateTimeComponent) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{48}
+// Deprecated: Use AudioMessage.ProtoReflect.Descriptor instead.
+func (*AudioMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{38}
 }
 
-func (x *HSMDateTimeComponent) GetDayOfWeek() HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType {
-	if x != nil && x.DayOfWeek != nil {
-		return *x.DayOfWeek
+func (x *AudioMessage) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
-	return HSMDateTimeComponent_MONDAY
+	return ""
 }
 
-func (x *HSMDateTimeComponent) GetYear() uint32 {
-	if x != nil && x.Year != nil {
-		return *x.Year
+func (x *AudioMessage) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
 	}
-	return 0
+	return ""
 }
 
-func (x *HSMDateTimeComponent) GetMonth() uint32 {
-	if x != nil && x.Month != nil {
-		return *x.Month
+func (x *AudioMessage) GetFileSha256() []byte {
+	if x != nil {
+		return x.FileSha256
 	}
-	return 0
+	return nil
 }
 
-func (x *HSMDateTimeComponent) GetDayOfMonth() uint32 {
-	if x != nil && x.DayOfMonth != nil {
-		return *x.DayOfMonth
+func (x *AudioMessage) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
 	}
 	return 0
 }
 
-func (x *HSMDateTimeComponent) GetHour() uint32 {
-	if x != nil && x.Hour != nil {
-		return *x.Hour
+func (x *AudioMessage) GetSeconds() uint32 {
+	if x != nil && x.Seconds != nil {
+		return *x.Seconds
 	}
 	return 0
 }
 
-func (x *HSMDateTimeComponent) GetMinute() uint32 {
-	if x != nil && x.Minute != nil {
-		return *x.Minute
+func (x *AudioMessage) GetPtt() bool {
+	if x != nil && x.Ptt != nil {
+		return *x.Ptt
+	}
+	return false
+}
+
+func (x *AudioMessage) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
+	}
+	return nil
+}
+
+func (x *AudioMessage) GetFileEncSha256() []byte {
+	if x != nil {
+		return x.FileEncSha256
+	}
+	return nil
+}
+
+func (x *AudioMessage) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
+	}
+	return ""
+}
+
+func (x *AudioMessage) GetMediaKeyTimestamp() int64 {
+	if x != nil && x.MediaKeyTimestamp != nil {
+		return *x.MediaKeyTimestamp
 	}
 	return 0
 }
 
-func (x *HSMDateTimeComponent) GetCalendar() HSMDateTimeComponent_HSMDateTimeComponentCalendarType {
-	if x != nil && x.Calendar != nil {
-		return *x.Calendar
+func (x *AudioMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
+	}
+	return nil
+}
+
+func (x *AudioMessage) GetStreamingSidecar() []byte {
+	if x != nil {
+		return x.StreamingSidecar
+	}
+	return nil
+}
+
+func (x *AudioMessage) GetWaveform() []byte {
+	if x != nil {
+		return x.Waveform
 	}
-	return HSMDateTimeComponent_GREGORIAN
+	return nil
 }
 
-type HSMCurrency struct {
+type AppStateSyncKey struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	CurrencyCode *string `protobuf:"bytes,1,opt,name=currencyCode" json:"currencyCode,omitempty"`
-	Amount1000   *int64  `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"`
+	KeyId   *AppStateSyncKeyId   `protobuf:"bytes,1,opt,name=keyId" json:"keyId,omitempty"`
+	KeyData *AppStateSyncKeyData `protobuf:"bytes,2,opt,name=keyData" json:"keyData,omitempty"`
 }
 
-func (x *HSMCurrency) Reset() {
-	*x = HSMCurrency{}
+func (x *AppStateSyncKey) Reset() {
+	*x = AppStateSyncKey{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[49]
+		mi := &file_binary_proto_def_proto_msgTypes[39]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HSMCurrency) String() string {
+func (x *AppStateSyncKey) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HSMCurrency) ProtoMessage() {}
+func (*AppStateSyncKey) ProtoMessage() {}
 
-func (x *HSMCurrency) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[49]
+func (x *AppStateSyncKey) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[39]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7593,57 +7532,50 @@ func (x *HSMCurrency) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HSMCurrency.ProtoReflect.Descriptor instead.
-func (*HSMCurrency) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{49}
+// Deprecated: Use AppStateSyncKey.ProtoReflect.Descriptor instead.
+func (*AppStateSyncKey) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{39}
 }
 
-func (x *HSMCurrency) GetCurrencyCode() string {
-	if x != nil && x.CurrencyCode != nil {
-		return *x.CurrencyCode
+func (x *AppStateSyncKey) GetKeyId() *AppStateSyncKeyId {
+	if x != nil {
+		return x.KeyId
 	}
-	return ""
+	return nil
 }
 
-func (x *HSMCurrency) GetAmount1000() int64 {
-	if x != nil && x.Amount1000 != nil {
-		return *x.Amount1000
+func (x *AppStateSyncKey) GetKeyData() *AppStateSyncKeyData {
+	if x != nil {
+		return x.KeyData
 	}
-	return 0
+	return nil
 }
 
-type GroupInviteMessage struct {
+type AppStateSyncKeyShare struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	GroupJid         *string                                         `protobuf:"bytes,1,opt,name=groupJid" json:"groupJid,omitempty"`
-	InviteCode       *string                                         `protobuf:"bytes,2,opt,name=inviteCode" json:"inviteCode,omitempty"`
-	InviteExpiration *int64                                          `protobuf:"varint,3,opt,name=inviteExpiration" json:"inviteExpiration,omitempty"`
-	GroupName        *string                                         `protobuf:"bytes,4,opt,name=groupName" json:"groupName,omitempty"`
-	JpegThumbnail    []byte                                          `protobuf:"bytes,5,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
-	Caption          *string                                         `protobuf:"bytes,6,opt,name=caption" json:"caption,omitempty"`
-	ContextInfo      *ContextInfo                                    `protobuf:"bytes,7,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	GroupType        *GroupInviteMessage_GroupInviteMessageGroupType `protobuf:"varint,8,opt,name=groupType,enum=proto.GroupInviteMessage_GroupInviteMessageGroupType" json:"groupType,omitempty"`
+	Keys []*AppStateSyncKey `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"`
 }
 
-func (x *GroupInviteMessage) Reset() {
-	*x = GroupInviteMessage{}
+func (x *AppStateSyncKeyShare) Reset() {
+	*x = AppStateSyncKeyShare{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[50]
+		mi := &file_binary_proto_def_proto_msgTypes[40]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *GroupInviteMessage) String() string {
+func (x *AppStateSyncKeyShare) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GroupInviteMessage) ProtoMessage() {}
+func (*AppStateSyncKeyShare) ProtoMessage() {}
 
-func (x *GroupInviteMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[50]
+func (x *AppStateSyncKeyShare) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[40]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7654,92 +7586,90 @@ func (x *GroupInviteMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GroupInviteMessage.ProtoReflect.Descriptor instead.
-func (*GroupInviteMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{50}
+// Deprecated: Use AppStateSyncKeyShare.ProtoReflect.Descriptor instead.
+func (*AppStateSyncKeyShare) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{40}
 }
 
-func (x *GroupInviteMessage) GetGroupJid() string {
-	if x != nil && x.GroupJid != nil {
-		return *x.GroupJid
-	}
-	return ""
+func (x *AppStateSyncKeyShare) GetKeys() []*AppStateSyncKey {
+	if x != nil {
+		return x.Keys
+	}
+	return nil
 }
 
-func (x *GroupInviteMessage) GetInviteCode() string {
-	if x != nil && x.InviteCode != nil {
-		return *x.InviteCode
-	}
-	return ""
+type AppStateSyncKeyRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	KeyIds []*AppStateSyncKeyId `protobuf:"bytes,1,rep,name=keyIds" json:"keyIds,omitempty"`
 }
 
-func (x *GroupInviteMessage) GetInviteExpiration() int64 {
-	if x != nil && x.InviteExpiration != nil {
-		return *x.InviteExpiration
+func (x *AppStateSyncKeyRequest) Reset() {
+	*x = AppStateSyncKeyRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[41]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *GroupInviteMessage) GetGroupName() string {
-	if x != nil && x.GroupName != nil {
-		return *x.GroupName
-	}
-	return ""
+func (x *AppStateSyncKeyRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *GroupInviteMessage) GetJpegThumbnail() []byte {
-	if x != nil {
-		return x.JpegThumbnail
+func (*AppStateSyncKeyRequest) ProtoMessage() {}
+
+func (x *AppStateSyncKeyRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[41]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *GroupInviteMessage) GetCaption() string {
-	if x != nil && x.Caption != nil {
-		return *x.Caption
-	}
-	return ""
+// Deprecated: Use AppStateSyncKeyRequest.ProtoReflect.Descriptor instead.
+func (*AppStateSyncKeyRequest) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{41}
 }
 
-func (x *GroupInviteMessage) GetContextInfo() *ContextInfo {
+func (x *AppStateSyncKeyRequest) GetKeyIds() []*AppStateSyncKeyId {
 	if x != nil {
-		return x.ContextInfo
+		return x.KeyIds
 	}
 	return nil
 }
 
-func (x *GroupInviteMessage) GetGroupType() GroupInviteMessage_GroupInviteMessageGroupType {
-	if x != nil && x.GroupType != nil {
-		return *x.GroupType
-	}
-	return GroupInviteMessage_DEFAULT
-}
-
-type FutureProofMessage struct {
+type AppStateSyncKeyId struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Message *Message `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
+	KeyId []byte `protobuf:"bytes,1,opt,name=keyId" json:"keyId,omitempty"`
 }
 
-func (x *FutureProofMessage) Reset() {
-	*x = FutureProofMessage{}
+func (x *AppStateSyncKeyId) Reset() {
+	*x = AppStateSyncKeyId{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[51]
+		mi := &file_binary_proto_def_proto_msgTypes[42]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *FutureProofMessage) String() string {
+func (x *AppStateSyncKeyId) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*FutureProofMessage) ProtoMessage() {}
+func (*AppStateSyncKeyId) ProtoMessage() {}
 
-func (x *FutureProofMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[51]
+func (x *AppStateSyncKeyId) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[42]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7750,65 +7680,45 @@ func (x *FutureProofMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use FutureProofMessage.ProtoReflect.Descriptor instead.
-func (*FutureProofMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{51}
+// Deprecated: Use AppStateSyncKeyId.ProtoReflect.Descriptor instead.
+func (*AppStateSyncKeyId) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{42}
 }
 
-func (x *FutureProofMessage) GetMessage() *Message {
+func (x *AppStateSyncKeyId) GetKeyId() []byte {
 	if x != nil {
-		return x.Message
+		return x.KeyId
 	}
 	return nil
 }
 
-type ExtendedTextMessage struct {
+type AppStateSyncKeyFingerprint struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Text                             *string                                                     `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
-	MatchedText                      *string                                                     `protobuf:"bytes,2,opt,name=matchedText" json:"matchedText,omitempty"`
-	CanonicalUrl                     *string                                                     `protobuf:"bytes,4,opt,name=canonicalUrl" json:"canonicalUrl,omitempty"`
-	Description                      *string                                                     `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
-	Title                            *string                                                     `protobuf:"bytes,6,opt,name=title" json:"title,omitempty"`
-	TextArgb                         *uint32                                                     `protobuf:"fixed32,7,opt,name=textArgb" json:"textArgb,omitempty"`
-	BackgroundArgb                   *uint32                                                     `protobuf:"fixed32,8,opt,name=backgroundArgb" json:"backgroundArgb,omitempty"`
-	Font                             *ExtendedTextMessage_ExtendedTextMessageFontType            `protobuf:"varint,9,opt,name=font,enum=proto.ExtendedTextMessage_ExtendedTextMessageFontType" json:"font,omitempty"`
-	PreviewType                      *ExtendedTextMessage_ExtendedTextMessagePreviewType         `protobuf:"varint,10,opt,name=previewType,enum=proto.ExtendedTextMessage_ExtendedTextMessagePreviewType" json:"previewType,omitempty"`
-	JpegThumbnail                    []byte                                                      `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
-	ContextInfo                      *ContextInfo                                                `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	DoNotPlayInline                  *bool                                                       `protobuf:"varint,18,opt,name=doNotPlayInline" json:"doNotPlayInline,omitempty"`
-	ThumbnailDirectPath              *string                                                     `protobuf:"bytes,19,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
-	ThumbnailSha256                  []byte                                                      `protobuf:"bytes,20,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
-	ThumbnailEncSha256               []byte                                                      `protobuf:"bytes,21,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
-	MediaKey                         []byte                                                      `protobuf:"bytes,22,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	MediaKeyTimestamp                *int64                                                      `protobuf:"varint,23,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	ThumbnailHeight                  *uint32                                                     `protobuf:"varint,24,opt,name=thumbnailHeight" json:"thumbnailHeight,omitempty"`
-	ThumbnailWidth                   *uint32                                                     `protobuf:"varint,25,opt,name=thumbnailWidth" json:"thumbnailWidth,omitempty"`
-	InviteLinkGroupType              *ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType `protobuf:"varint,26,opt,name=inviteLinkGroupType,enum=proto.ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType" json:"inviteLinkGroupType,omitempty"`
-	InviteLinkParentGroupSubjectV2   *string                                                     `protobuf:"bytes,27,opt,name=inviteLinkParentGroupSubjectV2" json:"inviteLinkParentGroupSubjectV2,omitempty"`
-	InviteLinkParentGroupThumbnailV2 []byte                                                      `protobuf:"bytes,28,opt,name=inviteLinkParentGroupThumbnailV2" json:"inviteLinkParentGroupThumbnailV2,omitempty"`
-	InviteLinkGroupTypeV2            *ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType `protobuf:"varint,29,opt,name=inviteLinkGroupTypeV2,enum=proto.ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType" json:"inviteLinkGroupTypeV2,omitempty"`
+	RawId         *uint32  `protobuf:"varint,1,opt,name=rawId" json:"rawId,omitempty"`
+	CurrentIndex  *uint32  `protobuf:"varint,2,opt,name=currentIndex" json:"currentIndex,omitempty"`
+	DeviceIndexes []uint32 `protobuf:"varint,3,rep,packed,name=deviceIndexes" json:"deviceIndexes,omitempty"`
 }
 
-func (x *ExtendedTextMessage) Reset() {
-	*x = ExtendedTextMessage{}
+func (x *AppStateSyncKeyFingerprint) Reset() {
+	*x = AppStateSyncKeyFingerprint{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[52]
+		mi := &file_binary_proto_def_proto_msgTypes[43]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ExtendedTextMessage) String() string {
+func (x *AppStateSyncKeyFingerprint) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ExtendedTextMessage) ProtoMessage() {}
+func (*AppStateSyncKeyFingerprint) ProtoMessage() {}
 
-func (x *ExtendedTextMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[52]
+func (x *AppStateSyncKeyFingerprint) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[43]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7819,215 +7729,177 @@ func (x *ExtendedTextMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ExtendedTextMessage.ProtoReflect.Descriptor instead.
-func (*ExtendedTextMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{52}
+// Deprecated: Use AppStateSyncKeyFingerprint.ProtoReflect.Descriptor instead.
+func (*AppStateSyncKeyFingerprint) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{43}
 }
 
-func (x *ExtendedTextMessage) GetText() string {
-	if x != nil && x.Text != nil {
-		return *x.Text
+func (x *AppStateSyncKeyFingerprint) GetRawId() uint32 {
+	if x != nil && x.RawId != nil {
+		return *x.RawId
 	}
-	return ""
+	return 0
 }
 
-func (x *ExtendedTextMessage) GetMatchedText() string {
-	if x != nil && x.MatchedText != nil {
-		return *x.MatchedText
+func (x *AppStateSyncKeyFingerprint) GetCurrentIndex() uint32 {
+	if x != nil && x.CurrentIndex != nil {
+		return *x.CurrentIndex
 	}
-	return ""
+	return 0
 }
 
-func (x *ExtendedTextMessage) GetCanonicalUrl() string {
-	if x != nil && x.CanonicalUrl != nil {
-		return *x.CanonicalUrl
+func (x *AppStateSyncKeyFingerprint) GetDeviceIndexes() []uint32 {
+	if x != nil {
+		return x.DeviceIndexes
 	}
-	return ""
+	return nil
 }
 
-func (x *ExtendedTextMessage) GetDescription() string {
-	if x != nil && x.Description != nil {
-		return *x.Description
-	}
-	return ""
-}
+type AppStateSyncKeyData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *ExtendedTextMessage) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
-	}
-	return ""
+	KeyData     []byte                      `protobuf:"bytes,1,opt,name=keyData" json:"keyData,omitempty"`
+	Fingerprint *AppStateSyncKeyFingerprint `protobuf:"bytes,2,opt,name=fingerprint" json:"fingerprint,omitempty"`
+	Timestamp   *int64                      `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"`
 }
 
-func (x *ExtendedTextMessage) GetTextArgb() uint32 {
-	if x != nil && x.TextArgb != nil {
-		return *x.TextArgb
+func (x *AppStateSyncKeyData) Reset() {
+	*x = AppStateSyncKeyData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[44]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *ExtendedTextMessage) GetBackgroundArgb() uint32 {
-	if x != nil && x.BackgroundArgb != nil {
-		return *x.BackgroundArgb
-	}
-	return 0
+func (x *AppStateSyncKeyData) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *ExtendedTextMessage) GetFont() ExtendedTextMessage_ExtendedTextMessageFontType {
-	if x != nil && x.Font != nil {
-		return *x.Font
+func (*AppStateSyncKeyData) ProtoMessage() {}
+
+func (x *AppStateSyncKeyData) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[44]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ExtendedTextMessage_SANS_SERIF
+	return mi.MessageOf(x)
 }
 
-func (x *ExtendedTextMessage) GetPreviewType() ExtendedTextMessage_ExtendedTextMessagePreviewType {
-	if x != nil && x.PreviewType != nil {
-		return *x.PreviewType
-	}
-	return ExtendedTextMessage_NONE
+// Deprecated: Use AppStateSyncKeyData.ProtoReflect.Descriptor instead.
+func (*AppStateSyncKeyData) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{44}
 }
 
-func (x *ExtendedTextMessage) GetJpegThumbnail() []byte {
+func (x *AppStateSyncKeyData) GetKeyData() []byte {
 	if x != nil {
-		return x.JpegThumbnail
+		return x.KeyData
 	}
 	return nil
 }
 
-func (x *ExtendedTextMessage) GetContextInfo() *ContextInfo {
+func (x *AppStateSyncKeyData) GetFingerprint() *AppStateSyncKeyFingerprint {
 	if x != nil {
-		return x.ContextInfo
+		return x.Fingerprint
 	}
 	return nil
 }
 
-func (x *ExtendedTextMessage) GetDoNotPlayInline() bool {
-	if x != nil && x.DoNotPlayInline != nil {
-		return *x.DoNotPlayInline
+func (x *AppStateSyncKeyData) GetTimestamp() int64 {
+	if x != nil && x.Timestamp != nil {
+		return *x.Timestamp
 	}
-	return false
+	return 0
 }
 
-func (x *ExtendedTextMessage) GetThumbnailDirectPath() string {
-	if x != nil && x.ThumbnailDirectPath != nil {
-		return *x.ThumbnailDirectPath
-	}
-	return ""
-}
+type AppStateFatalExceptionNotification struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *ExtendedTextMessage) GetThumbnailSha256() []byte {
-	if x != nil {
-		return x.ThumbnailSha256
-	}
-	return nil
+	CollectionNames []string `protobuf:"bytes,1,rep,name=collectionNames" json:"collectionNames,omitempty"`
+	Timestamp       *int64   `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
 }
 
-func (x *ExtendedTextMessage) GetThumbnailEncSha256() []byte {
-	if x != nil {
-		return x.ThumbnailEncSha256
+func (x *AppStateFatalExceptionNotification) Reset() {
+	*x = AppStateFatalExceptionNotification{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[45]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *ExtendedTextMessage) GetMediaKey() []byte {
-	if x != nil {
-		return x.MediaKey
-	}
-	return nil
+func (x *AppStateFatalExceptionNotification) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *ExtendedTextMessage) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
-	}
-	return 0
-}
-
-func (x *ExtendedTextMessage) GetThumbnailHeight() uint32 {
-	if x != nil && x.ThumbnailHeight != nil {
-		return *x.ThumbnailHeight
-	}
-	return 0
-}
-
-func (x *ExtendedTextMessage) GetThumbnailWidth() uint32 {
-	if x != nil && x.ThumbnailWidth != nil {
-		return *x.ThumbnailWidth
-	}
-	return 0
-}
+func (*AppStateFatalExceptionNotification) ProtoMessage() {}
 
-func (x *ExtendedTextMessage) GetInviteLinkGroupType() ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType {
-	if x != nil && x.InviteLinkGroupType != nil {
-		return *x.InviteLinkGroupType
+func (x *AppStateFatalExceptionNotification) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[45]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ExtendedTextMessage_DEFAULT
+	return mi.MessageOf(x)
 }
 
-func (x *ExtendedTextMessage) GetInviteLinkParentGroupSubjectV2() string {
-	if x != nil && x.InviteLinkParentGroupSubjectV2 != nil {
-		return *x.InviteLinkParentGroupSubjectV2
-	}
-	return ""
+// Deprecated: Use AppStateFatalExceptionNotification.ProtoReflect.Descriptor instead.
+func (*AppStateFatalExceptionNotification) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{45}
 }
 
-func (x *ExtendedTextMessage) GetInviteLinkParentGroupThumbnailV2() []byte {
+func (x *AppStateFatalExceptionNotification) GetCollectionNames() []string {
 	if x != nil {
-		return x.InviteLinkParentGroupThumbnailV2
+		return x.CollectionNames
 	}
 	return nil
 }
 
-func (x *ExtendedTextMessage) GetInviteLinkGroupTypeV2() ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType {
-	if x != nil && x.InviteLinkGroupTypeV2 != nil {
-		return *x.InviteLinkGroupTypeV2
+func (x *AppStateFatalExceptionNotification) GetTimestamp() int64 {
+	if x != nil && x.Timestamp != nil {
+		return *x.Timestamp
 	}
-	return ExtendedTextMessage_DEFAULT
+	return 0
 }
 
-type DocumentMessage struct {
+type Location struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Url                 *string      `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
-	Mimetype            *string      `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
-	Title               *string      `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
-	FileSha256          []byte       `protobuf:"bytes,4,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileLength          *uint64      `protobuf:"varint,5,opt,name=fileLength" json:"fileLength,omitempty"`
-	PageCount           *uint32      `protobuf:"varint,6,opt,name=pageCount" json:"pageCount,omitempty"`
-	MediaKey            []byte       `protobuf:"bytes,7,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	FileName            *string      `protobuf:"bytes,8,opt,name=fileName" json:"fileName,omitempty"`
-	FileEncSha256       []byte       `protobuf:"bytes,9,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
-	DirectPath          *string      `protobuf:"bytes,10,opt,name=directPath" json:"directPath,omitempty"`
-	MediaKeyTimestamp   *int64       `protobuf:"varint,11,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	ContactVcard        *bool        `protobuf:"varint,12,opt,name=contactVcard" json:"contactVcard,omitempty"`
-	ThumbnailDirectPath *string      `protobuf:"bytes,13,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
-	ThumbnailSha256     []byte       `protobuf:"bytes,14,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
-	ThumbnailEncSha256  []byte       `protobuf:"bytes,15,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
-	JpegThumbnail       []byte       `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
-	ContextInfo         *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	ThumbnailHeight     *uint32      `protobuf:"varint,18,opt,name=thumbnailHeight" json:"thumbnailHeight,omitempty"`
-	ThumbnailWidth      *uint32      `protobuf:"varint,19,opt,name=thumbnailWidth" json:"thumbnailWidth,omitempty"`
+	DegreesLatitude  *float64 `protobuf:"fixed64,1,opt,name=degreesLatitude" json:"degreesLatitude,omitempty"`
+	DegreesLongitude *float64 `protobuf:"fixed64,2,opt,name=degreesLongitude" json:"degreesLongitude,omitempty"`
+	Name             *string  `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
 }
 
-func (x *DocumentMessage) Reset() {
-	*x = DocumentMessage{}
+func (x *Location) Reset() {
+	*x = Location{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[53]
+		mi := &file_binary_proto_def_proto_msgTypes[46]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *DocumentMessage) String() string {
+func (x *Location) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DocumentMessage) ProtoMessage() {}
+func (*Location) ProtoMessage() {}
 
-func (x *DocumentMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[53]
+func (x *Location) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[46]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8038,171 +7910,136 @@ func (x *DocumentMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DocumentMessage.ProtoReflect.Descriptor instead.
-func (*DocumentMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{53}
-}
-
-func (x *DocumentMessage) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
-	}
-	return ""
-}
-
-func (x *DocumentMessage) GetMimetype() string {
-	if x != nil && x.Mimetype != nil {
-		return *x.Mimetype
-	}
-	return ""
-}
-
-func (x *DocumentMessage) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
-	}
-	return ""
-}
-
-func (x *DocumentMessage) GetFileSha256() []byte {
-	if x != nil {
-		return x.FileSha256
-	}
-	return nil
+// Deprecated: Use Location.ProtoReflect.Descriptor instead.
+func (*Location) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{46}
 }
 
-func (x *DocumentMessage) GetFileLength() uint64 {
-	if x != nil && x.FileLength != nil {
-		return *x.FileLength
+func (x *Location) GetDegreesLatitude() float64 {
+	if x != nil && x.DegreesLatitude != nil {
+		return *x.DegreesLatitude
 	}
 	return 0
 }
 
-func (x *DocumentMessage) GetPageCount() uint32 {
-	if x != nil && x.PageCount != nil {
-		return *x.PageCount
+func (x *Location) GetDegreesLongitude() float64 {
+	if x != nil && x.DegreesLongitude != nil {
+		return *x.DegreesLongitude
 	}
 	return 0
 }
 
-func (x *DocumentMessage) GetMediaKey() []byte {
-	if x != nil {
-		return x.MediaKey
-	}
-	return nil
-}
-
-func (x *DocumentMessage) GetFileName() string {
-	if x != nil && x.FileName != nil {
-		return *x.FileName
+func (x *Location) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
 	return ""
 }
 
-func (x *DocumentMessage) GetFileEncSha256() []byte {
-	if x != nil {
-		return x.FileEncSha256
-	}
-	return nil
-}
+type InteractiveAnnotation struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *DocumentMessage) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
-	}
-	return ""
+	PolygonVertices []*Point `protobuf:"bytes,1,rep,name=polygonVertices" json:"polygonVertices,omitempty"`
+	// Types that are assignable to Action:
+	//	*InteractiveAnnotation_Location
+	Action isInteractiveAnnotation_Action `protobuf_oneof:"action"`
 }
 
-func (x *DocumentMessage) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
+func (x *InteractiveAnnotation) Reset() {
+	*x = InteractiveAnnotation{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[47]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *DocumentMessage) GetContactVcard() bool {
-	if x != nil && x.ContactVcard != nil {
-		return *x.ContactVcard
-	}
-	return false
+func (x *InteractiveAnnotation) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *DocumentMessage) GetThumbnailDirectPath() string {
-	if x != nil && x.ThumbnailDirectPath != nil {
-		return *x.ThumbnailDirectPath
+func (*InteractiveAnnotation) ProtoMessage() {}
+
+func (x *InteractiveAnnotation) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[47]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ""
+	return mi.MessageOf(x)
 }
 
-func (x *DocumentMessage) GetThumbnailSha256() []byte {
-	if x != nil {
-		return x.ThumbnailSha256
-	}
-	return nil
+// Deprecated: Use InteractiveAnnotation.ProtoReflect.Descriptor instead.
+func (*InteractiveAnnotation) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{47}
 }
 
-func (x *DocumentMessage) GetThumbnailEncSha256() []byte {
+func (x *InteractiveAnnotation) GetPolygonVertices() []*Point {
 	if x != nil {
-		return x.ThumbnailEncSha256
+		return x.PolygonVertices
 	}
 	return nil
 }
 
-func (x *DocumentMessage) GetJpegThumbnail() []byte {
-	if x != nil {
-		return x.JpegThumbnail
+func (m *InteractiveAnnotation) GetAction() isInteractiveAnnotation_Action {
+	if m != nil {
+		return m.Action
 	}
 	return nil
 }
 
-func (x *DocumentMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
+func (x *InteractiveAnnotation) GetLocation() *Location {
+	if x, ok := x.GetAction().(*InteractiveAnnotation_Location); ok {
+		return x.Location
 	}
 	return nil
 }
 
-func (x *DocumentMessage) GetThumbnailHeight() uint32 {
-	if x != nil && x.ThumbnailHeight != nil {
-		return *x.ThumbnailHeight
-	}
-	return 0
+type isInteractiveAnnotation_Action interface {
+	isInteractiveAnnotation_Action()
 }
 
-func (x *DocumentMessage) GetThumbnailWidth() uint32 {
-	if x != nil && x.ThumbnailWidth != nil {
-		return *x.ThumbnailWidth
-	}
-	return 0
+type InteractiveAnnotation_Location struct {
+	Location *Location `protobuf:"bytes,2,opt,name=location,oneof"`
 }
 
-type DeviceSentMessage struct {
+func (*InteractiveAnnotation_Location) isInteractiveAnnotation_Action() {}
+
+type HydratedTemplateButton struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DestinationJid *string  `protobuf:"bytes,1,opt,name=destinationJid" json:"destinationJid,omitempty"`
-	Message        *Message `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
-	Phash          *string  `protobuf:"bytes,3,opt,name=phash" json:"phash,omitempty"`
+	Index *uint32 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
+	// Types that are assignable to HydratedButton:
+	//	*HydratedTemplateButton_QuickReplyButton
+	//	*HydratedTemplateButton_UrlButton
+	//	*HydratedTemplateButton_CallButton
+	HydratedButton isHydratedTemplateButton_HydratedButton `protobuf_oneof:"hydratedButton"`
 }
 
-func (x *DeviceSentMessage) Reset() {
-	*x = DeviceSentMessage{}
+func (x *HydratedTemplateButton) Reset() {
+	*x = HydratedTemplateButton{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[54]
+		mi := &file_binary_proto_def_proto_msgTypes[48]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *DeviceSentMessage) String() string {
+func (x *HydratedTemplateButton) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DeviceSentMessage) ProtoMessage() {}
+func (*HydratedTemplateButton) ProtoMessage() {}
 
-func (x *DeviceSentMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[54]
+func (x *HydratedTemplateButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[48]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8213,57 +8050,93 @@ func (x *DeviceSentMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DeviceSentMessage.ProtoReflect.Descriptor instead.
-func (*DeviceSentMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{54}
+// Deprecated: Use HydratedTemplateButton.ProtoReflect.Descriptor instead.
+func (*HydratedTemplateButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{48}
 }
 
-func (x *DeviceSentMessage) GetDestinationJid() string {
-	if x != nil && x.DestinationJid != nil {
-		return *x.DestinationJid
+func (x *HydratedTemplateButton) GetIndex() uint32 {
+	if x != nil && x.Index != nil {
+		return *x.Index
 	}
-	return ""
+	return 0
 }
 
-func (x *DeviceSentMessage) GetMessage() *Message {
-	if x != nil {
-		return x.Message
+func (m *HydratedTemplateButton) GetHydratedButton() isHydratedTemplateButton_HydratedButton {
+	if m != nil {
+		return m.HydratedButton
 	}
 	return nil
 }
 
-func (x *DeviceSentMessage) GetPhash() string {
-	if x != nil && x.Phash != nil {
-		return *x.Phash
+func (x *HydratedTemplateButton) GetQuickReplyButton() *HydratedTemplateButton_HydratedQuickReplyButton {
+	if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_QuickReplyButton); ok {
+		return x.QuickReplyButton
 	}
-	return ""
+	return nil
 }
 
-type DeclinePaymentRequestMessage struct {
+func (x *HydratedTemplateButton) GetUrlButton() *HydratedTemplateButton_HydratedURLButton {
+	if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_UrlButton); ok {
+		return x.UrlButton
+	}
+	return nil
+}
+
+func (x *HydratedTemplateButton) GetCallButton() *HydratedTemplateButton_HydratedCallButton {
+	if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_CallButton); ok {
+		return x.CallButton
+	}
+	return nil
+}
+
+type isHydratedTemplateButton_HydratedButton interface {
+	isHydratedTemplateButton_HydratedButton()
+}
+
+type HydratedTemplateButton_QuickReplyButton struct {
+	QuickReplyButton *HydratedTemplateButton_HydratedQuickReplyButton `protobuf:"bytes,1,opt,name=quickReplyButton,oneof"`
+}
+
+type HydratedTemplateButton_UrlButton struct {
+	UrlButton *HydratedTemplateButton_HydratedURLButton `protobuf:"bytes,2,opt,name=urlButton,oneof"`
+}
+
+type HydratedTemplateButton_CallButton struct {
+	CallButton *HydratedTemplateButton_HydratedCallButton `protobuf:"bytes,3,opt,name=callButton,oneof"`
+}
+
+func (*HydratedTemplateButton_QuickReplyButton) isHydratedTemplateButton_HydratedButton() {}
+
+func (*HydratedTemplateButton_UrlButton) isHydratedTemplateButton_HydratedButton() {}
+
+func (*HydratedTemplateButton_CallButton) isHydratedTemplateButton_HydratedButton() {}
+
+type DisappearingMode struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+	Initiator *DisappearingMode_Initiator `protobuf:"varint,1,opt,name=initiator,enum=proto.DisappearingMode_Initiator" json:"initiator,omitempty"`
 }
 
-func (x *DeclinePaymentRequestMessage) Reset() {
-	*x = DeclinePaymentRequestMessage{}
+func (x *DisappearingMode) Reset() {
+	*x = DisappearingMode{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[55]
+		mi := &file_binary_proto_def_proto_msgTypes[49]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *DeclinePaymentRequestMessage) String() string {
+func (x *DisappearingMode) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DeclinePaymentRequestMessage) ProtoMessage() {}
+func (*DisappearingMode) ProtoMessage() {}
 
-func (x *DeclinePaymentRequestMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[55]
+func (x *DisappearingMode) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[49]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8274,45 +8147,48 @@ func (x *DeclinePaymentRequestMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DeclinePaymentRequestMessage.ProtoReflect.Descriptor instead.
-func (*DeclinePaymentRequestMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{55}
+// Deprecated: Use DisappearingMode.ProtoReflect.Descriptor instead.
+func (*DisappearingMode) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{49}
 }
 
-func (x *DeclinePaymentRequestMessage) GetKey() *MessageKey {
-	if x != nil {
-		return x.Key
+func (x *DisappearingMode) GetInitiator() DisappearingMode_Initiator {
+	if x != nil && x.Initiator != nil {
+		return *x.Initiator
 	}
-	return nil
+	return DisappearingMode_CHANGED_IN_CHAT
 }
 
-type ContactsArrayMessage struct {
+type DeviceListMetadata struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayName *string           `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"`
-	Contacts    []*ContactMessage `protobuf:"bytes,2,rep,name=contacts" json:"contacts,omitempty"`
-	ContextInfo *ContextInfo      `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	SenderKeyHash       []byte   `protobuf:"bytes,1,opt,name=senderKeyHash" json:"senderKeyHash,omitempty"`
+	SenderTimestamp     *uint64  `protobuf:"varint,2,opt,name=senderTimestamp" json:"senderTimestamp,omitempty"`
+	SenderKeyIndexes    []uint32 `protobuf:"varint,3,rep,packed,name=senderKeyIndexes" json:"senderKeyIndexes,omitempty"`
+	RecipientKeyHash    []byte   `protobuf:"bytes,8,opt,name=recipientKeyHash" json:"recipientKeyHash,omitempty"`
+	RecipientTimestamp  *uint64  `protobuf:"varint,9,opt,name=recipientTimestamp" json:"recipientTimestamp,omitempty"`
+	RecipientKeyIndexes []uint32 `protobuf:"varint,10,rep,packed,name=recipientKeyIndexes" json:"recipientKeyIndexes,omitempty"`
 }
 
-func (x *ContactsArrayMessage) Reset() {
-	*x = ContactsArrayMessage{}
+func (x *DeviceListMetadata) Reset() {
+	*x = DeviceListMetadata{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[56]
+		mi := &file_binary_proto_def_proto_msgTypes[50]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ContactsArrayMessage) String() string {
+func (x *DeviceListMetadata) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ContactsArrayMessage) ProtoMessage() {}
+func (*DeviceListMetadata) ProtoMessage() {}
 
-func (x *ContactsArrayMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[56]
+func (x *DeviceListMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[50]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8323,59 +8199,100 @@ func (x *ContactsArrayMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ContactsArrayMessage.ProtoReflect.Descriptor instead.
-func (*ContactsArrayMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{56}
+// Deprecated: Use DeviceListMetadata.ProtoReflect.Descriptor instead.
+func (*DeviceListMetadata) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{50}
 }
 
-func (x *ContactsArrayMessage) GetDisplayName() string {
-	if x != nil && x.DisplayName != nil {
-		return *x.DisplayName
+func (x *DeviceListMetadata) GetSenderKeyHash() []byte {
+	if x != nil {
+		return x.SenderKeyHash
 	}
-	return ""
+	return nil
 }
 
-func (x *ContactsArrayMessage) GetContacts() []*ContactMessage {
+func (x *DeviceListMetadata) GetSenderTimestamp() uint64 {
+	if x != nil && x.SenderTimestamp != nil {
+		return *x.SenderTimestamp
+	}
+	return 0
+}
+
+func (x *DeviceListMetadata) GetSenderKeyIndexes() []uint32 {
 	if x != nil {
-		return x.Contacts
+		return x.SenderKeyIndexes
 	}
 	return nil
 }
 
-func (x *ContactsArrayMessage) GetContextInfo() *ContextInfo {
+func (x *DeviceListMetadata) GetRecipientKeyHash() []byte {
 	if x != nil {
-		return x.ContextInfo
+		return x.RecipientKeyHash
 	}
 	return nil
 }
 
-type ContactMessage struct {
+func (x *DeviceListMetadata) GetRecipientTimestamp() uint64 {
+	if x != nil && x.RecipientTimestamp != nil {
+		return *x.RecipientTimestamp
+	}
+	return 0
+}
+
+func (x *DeviceListMetadata) GetRecipientKeyIndexes() []uint32 {
+	if x != nil {
+		return x.RecipientKeyIndexes
+	}
+	return nil
+}
+
+type ContextInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayName *string      `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"`
-	Vcard       *string      `protobuf:"bytes,16,opt,name=vcard" json:"vcard,omitempty"`
-	ContextInfo *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	StanzaId                         *string                          `protobuf:"bytes,1,opt,name=stanzaId" json:"stanzaId,omitempty"`
+	Participant                      *string                          `protobuf:"bytes,2,opt,name=participant" json:"participant,omitempty"`
+	QuotedMessage                    *Message                         `protobuf:"bytes,3,opt,name=quotedMessage" json:"quotedMessage,omitempty"`
+	RemoteJid                        *string                          `protobuf:"bytes,4,opt,name=remoteJid" json:"remoteJid,omitempty"`
+	MentionedJid                     []string                         `protobuf:"bytes,15,rep,name=mentionedJid" json:"mentionedJid,omitempty"`
+	ConversionSource                 *string                          `protobuf:"bytes,18,opt,name=conversionSource" json:"conversionSource,omitempty"`
+	ConversionData                   []byte                           `protobuf:"bytes,19,opt,name=conversionData" json:"conversionData,omitempty"`
+	ConversionDelaySeconds           *uint32                          `protobuf:"varint,20,opt,name=conversionDelaySeconds" json:"conversionDelaySeconds,omitempty"`
+	ForwardingScore                  *uint32                          `protobuf:"varint,21,opt,name=forwardingScore" json:"forwardingScore,omitempty"`
+	IsForwarded                      *bool                            `protobuf:"varint,22,opt,name=isForwarded" json:"isForwarded,omitempty"`
+	QuotedAd                         *ContextInfo_AdReplyInfo         `protobuf:"bytes,23,opt,name=quotedAd" json:"quotedAd,omitempty"`
+	PlaceholderKey                   *MessageKey                      `protobuf:"bytes,24,opt,name=placeholderKey" json:"placeholderKey,omitempty"`
+	Expiration                       *uint32                          `protobuf:"varint,25,opt,name=expiration" json:"expiration,omitempty"`
+	EphemeralSettingTimestamp        *int64                           `protobuf:"varint,26,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"`
+	EphemeralSharedSecret            []byte                           `protobuf:"bytes,27,opt,name=ephemeralSharedSecret" json:"ephemeralSharedSecret,omitempty"`
+	ExternalAdReply                  *ContextInfo_ExternalAdReplyInfo `protobuf:"bytes,28,opt,name=externalAdReply" json:"externalAdReply,omitempty"`
+	EntryPointConversionSource       *string                          `protobuf:"bytes,29,opt,name=entryPointConversionSource" json:"entryPointConversionSource,omitempty"`
+	EntryPointConversionApp          *string                          `protobuf:"bytes,30,opt,name=entryPointConversionApp" json:"entryPointConversionApp,omitempty"`
+	EntryPointConversionDelaySeconds *uint32                          `protobuf:"varint,31,opt,name=entryPointConversionDelaySeconds" json:"entryPointConversionDelaySeconds,omitempty"`
+	DisappearingMode                 *DisappearingMode                `protobuf:"bytes,32,opt,name=disappearingMode" json:"disappearingMode,omitempty"`
+	ActionLink                       *ActionLink                      `protobuf:"bytes,33,opt,name=actionLink" json:"actionLink,omitempty"`
+	GroupSubject                     *string                          `protobuf:"bytes,34,opt,name=groupSubject" json:"groupSubject,omitempty"`
+	ParentGroupJid                   *string                          `protobuf:"bytes,35,opt,name=parentGroupJid" json:"parentGroupJid,omitempty"`
 }
 
-func (x *ContactMessage) Reset() {
-	*x = ContactMessage{}
+func (x *ContextInfo) Reset() {
+	*x = ContextInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[57]
+		mi := &file_binary_proto_def_proto_msgTypes[51]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ContactMessage) String() string {
+func (x *ContextInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ContactMessage) ProtoMessage() {}
+func (*ContextInfo) ProtoMessage() {}
 
-func (x *ContactMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[57]
+func (x *ContextInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[51]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8386,162 +8303,198 @@ func (x *ContactMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ContactMessage.ProtoReflect.Descriptor instead.
-func (*ContactMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{57}
+// Deprecated: Use ContextInfo.ProtoReflect.Descriptor instead.
+func (*ContextInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{51}
 }
 
-func (x *ContactMessage) GetDisplayName() string {
-	if x != nil && x.DisplayName != nil {
-		return *x.DisplayName
+func (x *ContextInfo) GetStanzaId() string {
+	if x != nil && x.StanzaId != nil {
+		return *x.StanzaId
 	}
 	return ""
 }
 
-func (x *ContactMessage) GetVcard() string {
-	if x != nil && x.Vcard != nil {
-		return *x.Vcard
+func (x *ContextInfo) GetParticipant() string {
+	if x != nil && x.Participant != nil {
+		return *x.Participant
 	}
 	return ""
 }
 
-func (x *ContactMessage) GetContextInfo() *ContextInfo {
+func (x *ContextInfo) GetQuotedMessage() *Message {
 	if x != nil {
-		return x.ContextInfo
+		return x.QuotedMessage
 	}
 	return nil
 }
 
-type Chat struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	DisplayName *string `protobuf:"bytes,1,opt,name=displayName" json:"displayName,omitempty"`
-	Id          *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
+func (x *ContextInfo) GetRemoteJid() string {
+	if x != nil && x.RemoteJid != nil {
+		return *x.RemoteJid
+	}
+	return ""
 }
 
-func (x *Chat) Reset() {
-	*x = Chat{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[58]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ContextInfo) GetMentionedJid() []string {
+	if x != nil {
+		return x.MentionedJid
 	}
+	return nil
 }
 
-func (x *Chat) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ContextInfo) GetConversionSource() string {
+	if x != nil && x.ConversionSource != nil {
+		return *x.ConversionSource
+	}
+	return ""
 }
 
-func (*Chat) ProtoMessage() {}
-
-func (x *Chat) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[58]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ContextInfo) GetConversionData() []byte {
+	if x != nil {
+		return x.ConversionData
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use Chat.ProtoReflect.Descriptor instead.
-func (*Chat) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{58}
+func (x *ContextInfo) GetConversionDelaySeconds() uint32 {
+	if x != nil && x.ConversionDelaySeconds != nil {
+		return *x.ConversionDelaySeconds
+	}
+	return 0
 }
 
-func (x *Chat) GetDisplayName() string {
-	if x != nil && x.DisplayName != nil {
-		return *x.DisplayName
-	}
-	return ""
+func (x *ContextInfo) GetForwardingScore() uint32 {
+	if x != nil && x.ForwardingScore != nil {
+		return *x.ForwardingScore
+	}
+	return 0
 }
 
-func (x *Chat) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
+func (x *ContextInfo) GetIsForwarded() bool {
+	if x != nil && x.IsForwarded != nil {
+		return *x.IsForwarded
 	}
-	return ""
+	return false
 }
 
-type CancelPaymentRequestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
+func (x *ContextInfo) GetQuotedAd() *ContextInfo_AdReplyInfo {
+	if x != nil {
+		return x.QuotedAd
+	}
+	return nil
+}
 
-	Key *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+func (x *ContextInfo) GetPlaceholderKey() *MessageKey {
+	if x != nil {
+		return x.PlaceholderKey
+	}
+	return nil
 }
 
-func (x *CancelPaymentRequestMessage) Reset() {
-	*x = CancelPaymentRequestMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[59]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ContextInfo) GetExpiration() uint32 {
+	if x != nil && x.Expiration != nil {
+		return *x.Expiration
 	}
+	return 0
 }
 
-func (x *CancelPaymentRequestMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ContextInfo) GetEphemeralSettingTimestamp() int64 {
+	if x != nil && x.EphemeralSettingTimestamp != nil {
+		return *x.EphemeralSettingTimestamp
+	}
+	return 0
 }
 
-func (*CancelPaymentRequestMessage) ProtoMessage() {}
+func (x *ContextInfo) GetEphemeralSharedSecret() []byte {
+	if x != nil {
+		return x.EphemeralSharedSecret
+	}
+	return nil
+}
 
-func (x *CancelPaymentRequestMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[59]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ContextInfo) GetExternalAdReply() *ContextInfo_ExternalAdReplyInfo {
+	if x != nil {
+		return x.ExternalAdReply
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use CancelPaymentRequestMessage.ProtoReflect.Descriptor instead.
-func (*CancelPaymentRequestMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{59}
+func (x *ContextInfo) GetEntryPointConversionSource() string {
+	if x != nil && x.EntryPointConversionSource != nil {
+		return *x.EntryPointConversionSource
+	}
+	return ""
 }
 
-func (x *CancelPaymentRequestMessage) GetKey() *MessageKey {
+func (x *ContextInfo) GetEntryPointConversionApp() string {
+	if x != nil && x.EntryPointConversionApp != nil {
+		return *x.EntryPointConversionApp
+	}
+	return ""
+}
+
+func (x *ContextInfo) GetEntryPointConversionDelaySeconds() uint32 {
+	if x != nil && x.EntryPointConversionDelaySeconds != nil {
+		return *x.EntryPointConversionDelaySeconds
+	}
+	return 0
+}
+
+func (x *ContextInfo) GetDisappearingMode() *DisappearingMode {
 	if x != nil {
-		return x.Key
+		return x.DisappearingMode
 	}
 	return nil
 }
 
-type Call struct {
+func (x *ContextInfo) GetActionLink() *ActionLink {
+	if x != nil {
+		return x.ActionLink
+	}
+	return nil
+}
+
+func (x *ContextInfo) GetGroupSubject() string {
+	if x != nil && x.GroupSubject != nil {
+		return *x.GroupSubject
+	}
+	return ""
+}
+
+func (x *ContextInfo) GetParentGroupJid() string {
+	if x != nil && x.ParentGroupJid != nil {
+		return *x.ParentGroupJid
+	}
+	return ""
+}
+
+type ActionLink struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	CallKey                []byte  `protobuf:"bytes,1,opt,name=callKey" json:"callKey,omitempty"`
-	ConversionSource       *string `protobuf:"bytes,2,opt,name=conversionSource" json:"conversionSource,omitempty"`
-	ConversionData         []byte  `protobuf:"bytes,3,opt,name=conversionData" json:"conversionData,omitempty"`
-	ConversionDelaySeconds *uint32 `protobuf:"varint,4,opt,name=conversionDelaySeconds" json:"conversionDelaySeconds,omitempty"`
+	Url         *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	ButtonTitle *string `protobuf:"bytes,2,opt,name=buttonTitle" json:"buttonTitle,omitempty"`
 }
 
-func (x *Call) Reset() {
-	*x = Call{}
+func (x *ActionLink) Reset() {
+	*x = ActionLink{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[60]
+		mi := &file_binary_proto_def_proto_msgTypes[52]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Call) String() string {
+func (x *ActionLink) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Call) ProtoMessage() {}
+func (*ActionLink) ProtoMessage() {}
 
-func (x *Call) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[60]
+func (x *ActionLink) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[52]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8552,69 +8505,55 @@ func (x *Call) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Call.ProtoReflect.Descriptor instead.
-func (*Call) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{60}
-}
-
-func (x *Call) GetCallKey() []byte {
-	if x != nil {
-		return x.CallKey
-	}
-	return nil
+// Deprecated: Use ActionLink.ProtoReflect.Descriptor instead.
+func (*ActionLink) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{52}
 }
 
-func (x *Call) GetConversionSource() string {
-	if x != nil && x.ConversionSource != nil {
-		return *x.ConversionSource
+func (x *ActionLink) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
 	return ""
 }
 
-func (x *Call) GetConversionData() []byte {
-	if x != nil {
-		return x.ConversionData
-	}
-	return nil
-}
-
-func (x *Call) GetConversionDelaySeconds() uint32 {
-	if x != nil && x.ConversionDelaySeconds != nil {
-		return *x.ConversionDelaySeconds
+func (x *ActionLink) GetButtonTitle() string {
+	if x != nil && x.ButtonTitle != nil {
+		return *x.ButtonTitle
 	}
-	return 0
+	return ""
 }
 
-type ButtonsResponseMessage struct {
+type TemplateButton struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	SelectedButtonId *string                                            `protobuf:"bytes,1,opt,name=selectedButtonId" json:"selectedButtonId,omitempty"`
-	ContextInfo      *ContextInfo                                       `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	Type             *ButtonsResponseMessage_ButtonsResponseMessageType `protobuf:"varint,4,opt,name=type,enum=proto.ButtonsResponseMessage_ButtonsResponseMessageType" json:"type,omitempty"`
-	// Types that are assignable to Response:
-	//	*ButtonsResponseMessage_SelectedDisplayText
-	Response isButtonsResponseMessage_Response `protobuf_oneof:"response"`
+	Index *uint32 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
+	// Types that are assignable to Button:
+	//	*TemplateButton_QuickReplyButton_
+	//	*TemplateButton_UrlButton
+	//	*TemplateButton_CallButton_
+	Button isTemplateButton_Button `protobuf_oneof:"button"`
 }
 
-func (x *ButtonsResponseMessage) Reset() {
-	*x = ButtonsResponseMessage{}
+func (x *TemplateButton) Reset() {
+	*x = TemplateButton{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[61]
+		mi := &file_binary_proto_def_proto_msgTypes[53]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ButtonsResponseMessage) String() string {
+func (x *TemplateButton) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ButtonsResponseMessage) ProtoMessage() {}
+func (*TemplateButton) ProtoMessage() {}
 
-func (x *ButtonsResponseMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[61]
+func (x *TemplateButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[53]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8625,92 +8564,96 @@ func (x *ButtonsResponseMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ButtonsResponseMessage.ProtoReflect.Descriptor instead.
-func (*ButtonsResponseMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{61}
+// Deprecated: Use TemplateButton.ProtoReflect.Descriptor instead.
+func (*TemplateButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{53}
 }
 
-func (x *ButtonsResponseMessage) GetSelectedButtonId() string {
-	if x != nil && x.SelectedButtonId != nil {
-		return *x.SelectedButtonId
+func (x *TemplateButton) GetIndex() uint32 {
+	if x != nil && x.Index != nil {
+		return *x.Index
 	}
-	return ""
+	return 0
 }
 
-func (x *ButtonsResponseMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
+func (m *TemplateButton) GetButton() isTemplateButton_Button {
+	if m != nil {
+		return m.Button
 	}
 	return nil
 }
 
-func (x *ButtonsResponseMessage) GetType() ButtonsResponseMessage_ButtonsResponseMessageType {
-	if x != nil && x.Type != nil {
-		return *x.Type
+func (x *TemplateButton) GetQuickReplyButton() *TemplateButton_QuickReplyButton {
+	if x, ok := x.GetButton().(*TemplateButton_QuickReplyButton_); ok {
+		return x.QuickReplyButton
 	}
-	return ButtonsResponseMessage_UNKNOWN
+	return nil
 }
 
-func (m *ButtonsResponseMessage) GetResponse() isButtonsResponseMessage_Response {
-	if m != nil {
-		return m.Response
+func (x *TemplateButton) GetUrlButton() *TemplateButton_URLButton {
+	if x, ok := x.GetButton().(*TemplateButton_UrlButton); ok {
+		return x.UrlButton
 	}
 	return nil
 }
 
-func (x *ButtonsResponseMessage) GetSelectedDisplayText() string {
-	if x, ok := x.GetResponse().(*ButtonsResponseMessage_SelectedDisplayText); ok {
-		return x.SelectedDisplayText
+func (x *TemplateButton) GetCallButton() *TemplateButton_CallButton {
+	if x, ok := x.GetButton().(*TemplateButton_CallButton_); ok {
+		return x.CallButton
 	}
-	return ""
+	return nil
 }
 
-type isButtonsResponseMessage_Response interface {
-	isButtonsResponseMessage_Response()
+type isTemplateButton_Button interface {
+	isTemplateButton_Button()
 }
 
-type ButtonsResponseMessage_SelectedDisplayText struct {
-	SelectedDisplayText string `protobuf:"bytes,2,opt,name=selectedDisplayText,oneof"`
+type TemplateButton_QuickReplyButton_ struct {
+	QuickReplyButton *TemplateButton_QuickReplyButton `protobuf:"bytes,1,opt,name=quickReplyButton,oneof"`
 }
 
-func (*ButtonsResponseMessage_SelectedDisplayText) isButtonsResponseMessage_Response() {}
+type TemplateButton_UrlButton struct {
+	UrlButton *TemplateButton_URLButton `protobuf:"bytes,2,opt,name=urlButton,oneof"`
+}
 
-type ButtonsMessage struct {
+type TemplateButton_CallButton_ struct {
+	CallButton *TemplateButton_CallButton `protobuf:"bytes,3,opt,name=callButton,oneof"`
+}
+
+func (*TemplateButton_QuickReplyButton_) isTemplateButton_Button() {}
+
+func (*TemplateButton_UrlButton) isTemplateButton_Button() {}
+
+func (*TemplateButton_CallButton_) isTemplateButton_Button() {}
+
+type Point struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ContentText *string                                  `protobuf:"bytes,6,opt,name=contentText" json:"contentText,omitempty"`
-	FooterText  *string                                  `protobuf:"bytes,7,opt,name=footerText" json:"footerText,omitempty"`
-	ContextInfo *ContextInfo                             `protobuf:"bytes,8,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	Buttons     []*Button                                `protobuf:"bytes,9,rep,name=buttons" json:"buttons,omitempty"`
-	HeaderType  *ButtonsMessage_ButtonsMessageHeaderType `protobuf:"varint,10,opt,name=headerType,enum=proto.ButtonsMessage_ButtonsMessageHeaderType" json:"headerType,omitempty"`
-	// Types that are assignable to Header:
-	//	*ButtonsMessage_Text
-	//	*ButtonsMessage_DocumentMessage
-	//	*ButtonsMessage_ImageMessage
-	//	*ButtonsMessage_VideoMessage
-	//	*ButtonsMessage_LocationMessage
-	Header isButtonsMessage_Header `protobuf_oneof:"header"`
+	XDeprecated *int32   `protobuf:"varint,1,opt,name=xDeprecated" json:"xDeprecated,omitempty"`
+	YDeprecated *int32   `protobuf:"varint,2,opt,name=yDeprecated" json:"yDeprecated,omitempty"`
+	X           *float64 `protobuf:"fixed64,3,opt,name=x" json:"x,omitempty"`
+	Y           *float64 `protobuf:"fixed64,4,opt,name=y" json:"y,omitempty"`
 }
 
-func (x *ButtonsMessage) Reset() {
-	*x = ButtonsMessage{}
+func (x *Point) Reset() {
+	*x = Point{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[62]
+		mi := &file_binary_proto_def_proto_msgTypes[54]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ButtonsMessage) String() string {
+func (x *Point) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ButtonsMessage) ProtoMessage() {}
+func (*Point) ProtoMessage() {}
 
-func (x *ButtonsMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[62]
+func (x *Point) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[54]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8721,150 +8664,73 @@ func (x *ButtonsMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ButtonsMessage.ProtoReflect.Descriptor instead.
-func (*ButtonsMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{62}
-}
-
-func (x *ButtonsMessage) GetContentText() string {
-	if x != nil && x.ContentText != nil {
-		return *x.ContentText
-	}
-	return ""
-}
-
-func (x *ButtonsMessage) GetFooterText() string {
-	if x != nil && x.FooterText != nil {
-		return *x.FooterText
-	}
-	return ""
-}
-
-func (x *ButtonsMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
-	}
-	return nil
-}
-
-func (x *ButtonsMessage) GetButtons() []*Button {
-	if x != nil {
-		return x.Buttons
-	}
-	return nil
-}
-
-func (x *ButtonsMessage) GetHeaderType() ButtonsMessage_ButtonsMessageHeaderType {
-	if x != nil && x.HeaderType != nil {
-		return *x.HeaderType
-	}
-	return ButtonsMessage_UNKNOWN
-}
-
-func (m *ButtonsMessage) GetHeader() isButtonsMessage_Header {
-	if m != nil {
-		return m.Header
-	}
-	return nil
-}
-
-func (x *ButtonsMessage) GetText() string {
-	if x, ok := x.GetHeader().(*ButtonsMessage_Text); ok {
-		return x.Text
-	}
-	return ""
+// Deprecated: Use Point.ProtoReflect.Descriptor instead.
+func (*Point) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{54}
 }
 
-func (x *ButtonsMessage) GetDocumentMessage() *DocumentMessage {
-	if x, ok := x.GetHeader().(*ButtonsMessage_DocumentMessage); ok {
-		return x.DocumentMessage
+func (x *Point) GetXDeprecated() int32 {
+	if x != nil && x.XDeprecated != nil {
+		return *x.XDeprecated
 	}
-	return nil
+	return 0
 }
 
-func (x *ButtonsMessage) GetImageMessage() *ImageMessage {
-	if x, ok := x.GetHeader().(*ButtonsMessage_ImageMessage); ok {
-		return x.ImageMessage
+func (x *Point) GetYDeprecated() int32 {
+	if x != nil && x.YDeprecated != nil {
+		return *x.YDeprecated
 	}
-	return nil
+	return 0
 }
 
-func (x *ButtonsMessage) GetVideoMessage() *VideoMessage {
-	if x, ok := x.GetHeader().(*ButtonsMessage_VideoMessage); ok {
-		return x.VideoMessage
+func (x *Point) GetX() float64 {
+	if x != nil && x.X != nil {
+		return *x.X
 	}
-	return nil
+	return 0
 }
 
-func (x *ButtonsMessage) GetLocationMessage() *LocationMessage {
-	if x, ok := x.GetHeader().(*ButtonsMessage_LocationMessage); ok {
-		return x.LocationMessage
+func (x *Point) GetY() float64 {
+	if x != nil && x.Y != nil {
+		return *x.Y
 	}
-	return nil
-}
-
-type isButtonsMessage_Header interface {
-	isButtonsMessage_Header()
-}
-
-type ButtonsMessage_Text struct {
-	Text string `protobuf:"bytes,1,opt,name=text,oneof"`
-}
-
-type ButtonsMessage_DocumentMessage struct {
-	DocumentMessage *DocumentMessage `protobuf:"bytes,2,opt,name=documentMessage,oneof"`
-}
-
-type ButtonsMessage_ImageMessage struct {
-	ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"`
-}
-
-type ButtonsMessage_VideoMessage struct {
-	VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"`
-}
-
-type ButtonsMessage_LocationMessage struct {
-	LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"`
+	return 0
 }
 
-func (*ButtonsMessage_Text) isButtonsMessage_Header() {}
-
-func (*ButtonsMessage_DocumentMessage) isButtonsMessage_Header() {}
-
-func (*ButtonsMessage_ImageMessage) isButtonsMessage_Header() {}
-
-func (*ButtonsMessage_VideoMessage) isButtonsMessage_Header() {}
-
-func (*ButtonsMessage_LocationMessage) isButtonsMessage_Header() {}
-
-type Button struct {
+type PaymentBackground struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ButtonId       *string            `protobuf:"bytes,1,opt,name=buttonId" json:"buttonId,omitempty"`
-	ButtonText     *ButtonText        `protobuf:"bytes,2,opt,name=buttonText" json:"buttonText,omitempty"`
-	Type           *Button_ButtonType `protobuf:"varint,3,opt,name=type,enum=proto.Button_ButtonType" json:"type,omitempty"`
-	NativeFlowInfo *NativeFlowInfo    `protobuf:"bytes,4,opt,name=nativeFlowInfo" json:"nativeFlowInfo,omitempty"`
+	Id              *string                      `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
+	FileLength      *uint64                      `protobuf:"varint,2,opt,name=fileLength" json:"fileLength,omitempty"`
+	Width           *uint32                      `protobuf:"varint,3,opt,name=width" json:"width,omitempty"`
+	Height          *uint32                      `protobuf:"varint,4,opt,name=height" json:"height,omitempty"`
+	Mimetype        *string                      `protobuf:"bytes,5,opt,name=mimetype" json:"mimetype,omitempty"`
+	PlaceholderArgb *uint32                      `protobuf:"fixed32,6,opt,name=placeholderArgb" json:"placeholderArgb,omitempty"`
+	TextArgb        *uint32                      `protobuf:"fixed32,7,opt,name=textArgb" json:"textArgb,omitempty"`
+	SubtextArgb     *uint32                      `protobuf:"fixed32,8,opt,name=subtextArgb" json:"subtextArgb,omitempty"`
+	MediaData       *PaymentBackground_MediaData `protobuf:"bytes,9,opt,name=mediaData" json:"mediaData,omitempty"`
+	Type            *PaymentBackground_Type      `protobuf:"varint,10,opt,name=type,enum=proto.PaymentBackground_Type" json:"type,omitempty"`
 }
 
-func (x *Button) Reset() {
-	*x = Button{}
+func (x *PaymentBackground) Reset() {
+	*x = PaymentBackground{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[63]
+		mi := &file_binary_proto_def_proto_msgTypes[55]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Button) String() string {
+func (x *PaymentBackground) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Button) ProtoMessage() {}
+func (*PaymentBackground) ProtoMessage() {}
 
-func (x *Button) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[63]
+func (x *PaymentBackground) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[55]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8875,119 +8741,108 @@ func (x *Button) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Button.ProtoReflect.Descriptor instead.
-func (*Button) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{63}
+// Deprecated: Use PaymentBackground.ProtoReflect.Descriptor instead.
+func (*PaymentBackground) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{55}
 }
 
-func (x *Button) GetButtonId() string {
-	if x != nil && x.ButtonId != nil {
-		return *x.ButtonId
+func (x *PaymentBackground) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
 	return ""
 }
 
-func (x *Button) GetButtonText() *ButtonText {
-	if x != nil {
-		return x.ButtonText
+func (x *PaymentBackground) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
 	}
-	return nil
+	return 0
 }
 
-func (x *Button) GetType() Button_ButtonType {
-	if x != nil && x.Type != nil {
-		return *x.Type
+func (x *PaymentBackground) GetWidth() uint32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
 	}
-	return Button_UNKNOWN
+	return 0
 }
 
-func (x *Button) GetNativeFlowInfo() *NativeFlowInfo {
-	if x != nil {
-		return x.NativeFlowInfo
+func (x *PaymentBackground) GetHeight() uint32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
-	return nil
-}
-
-type NativeFlowInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name       *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	ParamsJson *string `protobuf:"bytes,2,opt,name=paramsJson" json:"paramsJson,omitempty"`
+	return 0
 }
 
-func (x *NativeFlowInfo) Reset() {
-	*x = NativeFlowInfo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[64]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *PaymentBackground) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
 	}
+	return ""
 }
 
-func (x *NativeFlowInfo) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *PaymentBackground) GetPlaceholderArgb() uint32 {
+	if x != nil && x.PlaceholderArgb != nil {
+		return *x.PlaceholderArgb
+	}
+	return 0
 }
 
-func (*NativeFlowInfo) ProtoMessage() {}
-
-func (x *NativeFlowInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[64]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *PaymentBackground) GetTextArgb() uint32 {
+	if x != nil && x.TextArgb != nil {
+		return *x.TextArgb
 	}
-	return mi.MessageOf(x)
+	return 0
 }
 
-// Deprecated: Use NativeFlowInfo.ProtoReflect.Descriptor instead.
-func (*NativeFlowInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{64}
+func (x *PaymentBackground) GetSubtextArgb() uint32 {
+	if x != nil && x.SubtextArgb != nil {
+		return *x.SubtextArgb
+	}
+	return 0
 }
 
-func (x *NativeFlowInfo) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (x *PaymentBackground) GetMediaData() *PaymentBackground_MediaData {
+	if x != nil {
+		return x.MediaData
 	}
-	return ""
+	return nil
 }
 
-func (x *NativeFlowInfo) GetParamsJson() string {
-	if x != nil && x.ParamsJson != nil {
-		return *x.ParamsJson
+func (x *PaymentBackground) GetType() PaymentBackground_Type {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return ""
+	return PaymentBackground_UNKNOWN
 }
 
-type ButtonText struct {
+type Money struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
+	Value        *int64  `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
+	Offset       *uint32 `protobuf:"varint,2,opt,name=offset" json:"offset,omitempty"`
+	CurrencyCode *string `protobuf:"bytes,3,opt,name=currencyCode" json:"currencyCode,omitempty"`
 }
 
-func (x *ButtonText) Reset() {
-	*x = ButtonText{}
+func (x *Money) Reset() {
+	*x = Money{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[65]
+		mi := &file_binary_proto_def_proto_msgTypes[56]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ButtonText) String() string {
+func (x *Money) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ButtonText) ProtoMessage() {}
+func (*Money) ProtoMessage() {}
 
-func (x *ButtonText) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[65]
+func (x *Money) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[56]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8998,55 +8853,102 @@ func (x *ButtonText) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ButtonText.ProtoReflect.Descriptor instead.
-func (*ButtonText) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{65}
+// Deprecated: Use Money.ProtoReflect.Descriptor instead.
+func (*Money) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{56}
 }
 
-func (x *ButtonText) GetDisplayText() string {
-	if x != nil && x.DisplayText != nil {
-		return *x.DisplayText
+func (x *Money) GetValue() int64 {
+	if x != nil && x.Value != nil {
+		return *x.Value
 	}
-	return ""
+	return 0
 }
 
-type AudioMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Url               *string      `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
-	Mimetype          *string      `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
-	FileSha256        []byte       `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileLength        *uint64      `protobuf:"varint,4,opt,name=fileLength" json:"fileLength,omitempty"`
-	Seconds           *uint32      `protobuf:"varint,5,opt,name=seconds" json:"seconds,omitempty"`
-	Ptt               *bool        `protobuf:"varint,6,opt,name=ptt" json:"ptt,omitempty"`
-	MediaKey          []byte       `protobuf:"bytes,7,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	FileEncSha256     []byte       `protobuf:"bytes,8,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
-	DirectPath        *string      `protobuf:"bytes,9,opt,name=directPath" json:"directPath,omitempty"`
-	MediaKeyTimestamp *int64       `protobuf:"varint,10,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	ContextInfo       *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	StreamingSidecar  []byte       `protobuf:"bytes,18,opt,name=streamingSidecar" json:"streamingSidecar,omitempty"`
-	Waveform          []byte       `protobuf:"bytes,19,opt,name=waveform" json:"waveform,omitempty"`
+func (x *Money) GetOffset() uint32 {
+	if x != nil && x.Offset != nil {
+		return *x.Offset
+	}
+	return 0
 }
 
-func (x *AudioMessage) Reset() {
-	*x = AudioMessage{}
+func (x *Money) GetCurrencyCode() string {
+	if x != nil && x.CurrencyCode != nil {
+		return *x.CurrencyCode
+	}
+	return ""
+}
+
+type Message struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Conversation                               *string                       `protobuf:"bytes,1,opt,name=conversation" json:"conversation,omitempty"`
+	SenderKeyDistributionMessage               *SenderKeyDistributionMessage `protobuf:"bytes,2,opt,name=senderKeyDistributionMessage" json:"senderKeyDistributionMessage,omitempty"`
+	ImageMessage                               *ImageMessage                 `protobuf:"bytes,3,opt,name=imageMessage" json:"imageMessage,omitempty"`
+	ContactMessage                             *ContactMessage               `protobuf:"bytes,4,opt,name=contactMessage" json:"contactMessage,omitempty"`
+	LocationMessage                            *LocationMessage              `protobuf:"bytes,5,opt,name=locationMessage" json:"locationMessage,omitempty"`
+	ExtendedTextMessage                        *ExtendedTextMessage          `protobuf:"bytes,6,opt,name=extendedTextMessage" json:"extendedTextMessage,omitempty"`
+	DocumentMessage                            *DocumentMessage              `protobuf:"bytes,7,opt,name=documentMessage" json:"documentMessage,omitempty"`
+	AudioMessage                               *AudioMessage                 `protobuf:"bytes,8,opt,name=audioMessage" json:"audioMessage,omitempty"`
+	VideoMessage                               *VideoMessage                 `protobuf:"bytes,9,opt,name=videoMessage" json:"videoMessage,omitempty"`
+	Call                                       *Call                         `protobuf:"bytes,10,opt,name=call" json:"call,omitempty"`
+	Chat                                       *Chat                         `protobuf:"bytes,11,opt,name=chat" json:"chat,omitempty"`
+	ProtocolMessage                            *ProtocolMessage              `protobuf:"bytes,12,opt,name=protocolMessage" json:"protocolMessage,omitempty"`
+	ContactsArrayMessage                       *ContactsArrayMessage         `protobuf:"bytes,13,opt,name=contactsArrayMessage" json:"contactsArrayMessage,omitempty"`
+	HighlyStructuredMessage                    *HighlyStructuredMessage      `protobuf:"bytes,14,opt,name=highlyStructuredMessage" json:"highlyStructuredMessage,omitempty"`
+	FastRatchetKeySenderKeyDistributionMessage *SenderKeyDistributionMessage `protobuf:"bytes,15,opt,name=fastRatchetKeySenderKeyDistributionMessage" json:"fastRatchetKeySenderKeyDistributionMessage,omitempty"`
+	SendPaymentMessage                         *SendPaymentMessage           `protobuf:"bytes,16,opt,name=sendPaymentMessage" json:"sendPaymentMessage,omitempty"`
+	LiveLocationMessage                        *LiveLocationMessage          `protobuf:"bytes,18,opt,name=liveLocationMessage" json:"liveLocationMessage,omitempty"`
+	RequestPaymentMessage                      *RequestPaymentMessage        `protobuf:"bytes,22,opt,name=requestPaymentMessage" json:"requestPaymentMessage,omitempty"`
+	DeclinePaymentRequestMessage               *DeclinePaymentRequestMessage `protobuf:"bytes,23,opt,name=declinePaymentRequestMessage" json:"declinePaymentRequestMessage,omitempty"`
+	CancelPaymentRequestMessage                *CancelPaymentRequestMessage  `protobuf:"bytes,24,opt,name=cancelPaymentRequestMessage" json:"cancelPaymentRequestMessage,omitempty"`
+	TemplateMessage                            *TemplateMessage              `protobuf:"bytes,25,opt,name=templateMessage" json:"templateMessage,omitempty"`
+	StickerMessage                             *StickerMessage               `protobuf:"bytes,26,opt,name=stickerMessage" json:"stickerMessage,omitempty"`
+	GroupInviteMessage                         *GroupInviteMessage           `protobuf:"bytes,28,opt,name=groupInviteMessage" json:"groupInviteMessage,omitempty"`
+	TemplateButtonReplyMessage                 *TemplateButtonReplyMessage   `protobuf:"bytes,29,opt,name=templateButtonReplyMessage" json:"templateButtonReplyMessage,omitempty"`
+	ProductMessage                             *ProductMessage               `protobuf:"bytes,30,opt,name=productMessage" json:"productMessage,omitempty"`
+	DeviceSentMessage                          *DeviceSentMessage            `protobuf:"bytes,31,opt,name=deviceSentMessage" json:"deviceSentMessage,omitempty"`
+	MessageContextInfo                         *MessageContextInfo           `protobuf:"bytes,35,opt,name=messageContextInfo" json:"messageContextInfo,omitempty"`
+	ListMessage                                *ListMessage                  `protobuf:"bytes,36,opt,name=listMessage" json:"listMessage,omitempty"`
+	ViewOnceMessage                            *FutureProofMessage           `protobuf:"bytes,37,opt,name=viewOnceMessage" json:"viewOnceMessage,omitempty"`
+	OrderMessage                               *OrderMessage                 `protobuf:"bytes,38,opt,name=orderMessage" json:"orderMessage,omitempty"`
+	ListResponseMessage                        *ListResponseMessage          `protobuf:"bytes,39,opt,name=listResponseMessage" json:"listResponseMessage,omitempty"`
+	EphemeralMessage                           *FutureProofMessage           `protobuf:"bytes,40,opt,name=ephemeralMessage" json:"ephemeralMessage,omitempty"`
+	InvoiceMessage                             *InvoiceMessage               `protobuf:"bytes,41,opt,name=invoiceMessage" json:"invoiceMessage,omitempty"`
+	ButtonsMessage                             *ButtonsMessage               `protobuf:"bytes,42,opt,name=buttonsMessage" json:"buttonsMessage,omitempty"`
+	ButtonsResponseMessage                     *ButtonsResponseMessage       `protobuf:"bytes,43,opt,name=buttonsResponseMessage" json:"buttonsResponseMessage,omitempty"`
+	PaymentInviteMessage                       *PaymentInviteMessage         `protobuf:"bytes,44,opt,name=paymentInviteMessage" json:"paymentInviteMessage,omitempty"`
+	InteractiveMessage                         *InteractiveMessage           `protobuf:"bytes,45,opt,name=interactiveMessage" json:"interactiveMessage,omitempty"`
+	ReactionMessage                            *ReactionMessage              `protobuf:"bytes,46,opt,name=reactionMessage" json:"reactionMessage,omitempty"`
+	StickerSyncRmrMessage                      *StickerSyncRMRMessage        `protobuf:"bytes,47,opt,name=stickerSyncRmrMessage" json:"stickerSyncRmrMessage,omitempty"`
+	InteractiveResponseMessage                 *InteractiveResponseMessage   `protobuf:"bytes,48,opt,name=interactiveResponseMessage" json:"interactiveResponseMessage,omitempty"`
+	PollCreationMessage                        *PollCreationMessage          `protobuf:"bytes,49,opt,name=pollCreationMessage" json:"pollCreationMessage,omitempty"`
+	PollUpdateMessage                          *PollUpdateMessage            `protobuf:"bytes,50,opt,name=pollUpdateMessage" json:"pollUpdateMessage,omitempty"`
+	KeepInChatMessage                          *KeepInChatMessage            `protobuf:"bytes,51,opt,name=keepInChatMessage" json:"keepInChatMessage,omitempty"`
+	DocumentWithCaptionMessage                 *FutureProofMessage           `protobuf:"bytes,53,opt,name=documentWithCaptionMessage" json:"documentWithCaptionMessage,omitempty"`
+	RequestPhoneNumberMessage                  *RequestPhoneNumberMessage    `protobuf:"bytes,54,opt,name=requestPhoneNumberMessage" json:"requestPhoneNumberMessage,omitempty"`
+	ViewOnceMessageV2                          *FutureProofMessage           `protobuf:"bytes,55,opt,name=viewOnceMessageV2" json:"viewOnceMessageV2,omitempty"`
+}
+
+func (x *Message) Reset() {
+	*x = Message{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[66]
+		mi := &file_binary_proto_def_proto_msgTypes[57]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *AudioMessage) String() string {
+func (x *Message) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AudioMessage) ProtoMessage() {}
+func (*Message) ProtoMessage() {}
 
-func (x *AudioMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[66]
+func (x *Message) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[57]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -9057,388 +8959,361 @@ func (x *AudioMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AudioMessage.ProtoReflect.Descriptor instead.
-func (*AudioMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{66}
+// Deprecated: Use Message.ProtoReflect.Descriptor instead.
+func (*Message) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{57}
 }
 
-func (x *AudioMessage) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
+func (x *Message) GetConversation() string {
+	if x != nil && x.Conversation != nil {
+		return *x.Conversation
 	}
 	return ""
 }
 
-func (x *AudioMessage) GetMimetype() string {
-	if x != nil && x.Mimetype != nil {
-		return *x.Mimetype
+func (x *Message) GetSenderKeyDistributionMessage() *SenderKeyDistributionMessage {
+	if x != nil {
+		return x.SenderKeyDistributionMessage
 	}
-	return ""
+	return nil
 }
 
-func (x *AudioMessage) GetFileSha256() []byte {
+func (x *Message) GetImageMessage() *ImageMessage {
 	if x != nil {
-		return x.FileSha256
+		return x.ImageMessage
 	}
 	return nil
 }
 
-func (x *AudioMessage) GetFileLength() uint64 {
-	if x != nil && x.FileLength != nil {
-		return *x.FileLength
+func (x *Message) GetContactMessage() *ContactMessage {
+	if x != nil {
+		return x.ContactMessage
 	}
-	return 0
+	return nil
 }
 
-func (x *AudioMessage) GetSeconds() uint32 {
-	if x != nil && x.Seconds != nil {
-		return *x.Seconds
+func (x *Message) GetLocationMessage() *LocationMessage {
+	if x != nil {
+		return x.LocationMessage
 	}
-	return 0
+	return nil
 }
 
-func (x *AudioMessage) GetPtt() bool {
-	if x != nil && x.Ptt != nil {
-		return *x.Ptt
+func (x *Message) GetExtendedTextMessage() *ExtendedTextMessage {
+	if x != nil {
+		return x.ExtendedTextMessage
 	}
-	return false
+	return nil
 }
 
-func (x *AudioMessage) GetMediaKey() []byte {
+func (x *Message) GetDocumentMessage() *DocumentMessage {
 	if x != nil {
-		return x.MediaKey
+		return x.DocumentMessage
 	}
 	return nil
 }
 
-func (x *AudioMessage) GetFileEncSha256() []byte {
+func (x *Message) GetAudioMessage() *AudioMessage {
 	if x != nil {
-		return x.FileEncSha256
+		return x.AudioMessage
 	}
 	return nil
 }
 
-func (x *AudioMessage) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
+func (x *Message) GetVideoMessage() *VideoMessage {
+	if x != nil {
+		return x.VideoMessage
 	}
-	return ""
+	return nil
 }
 
-func (x *AudioMessage) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
+func (x *Message) GetCall() *Call {
+	if x != nil {
+		return x.Call
 	}
-	return 0
+	return nil
 }
 
-func (x *AudioMessage) GetContextInfo() *ContextInfo {
+func (x *Message) GetChat() *Chat {
 	if x != nil {
-		return x.ContextInfo
+		return x.Chat
 	}
 	return nil
 }
 
-func (x *AudioMessage) GetStreamingSidecar() []byte {
+func (x *Message) GetProtocolMessage() *ProtocolMessage {
 	if x != nil {
-		return x.StreamingSidecar
+		return x.ProtocolMessage
 	}
 	return nil
 }
 
-func (x *AudioMessage) GetWaveform() []byte {
+func (x *Message) GetContactsArrayMessage() *ContactsArrayMessage {
 	if x != nil {
-		return x.Waveform
+		return x.ContactsArrayMessage
 	}
 	return nil
 }
 
-type AppStateSyncKey struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	KeyId   *AppStateSyncKeyId   `protobuf:"bytes,1,opt,name=keyId" json:"keyId,omitempty"`
-	KeyData *AppStateSyncKeyData `protobuf:"bytes,2,opt,name=keyData" json:"keyData,omitempty"`
-}
-
-func (x *AppStateSyncKey) Reset() {
-	*x = AppStateSyncKey{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[67]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *Message) GetHighlyStructuredMessage() *HighlyStructuredMessage {
+	if x != nil {
+		return x.HighlyStructuredMessage
 	}
+	return nil
 }
 
-func (x *AppStateSyncKey) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *Message) GetFastRatchetKeySenderKeyDistributionMessage() *SenderKeyDistributionMessage {
+	if x != nil {
+		return x.FastRatchetKeySenderKeyDistributionMessage
+	}
+	return nil
 }
 
-func (*AppStateSyncKey) ProtoMessage() {}
-
-func (x *AppStateSyncKey) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[67]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *Message) GetSendPaymentMessage() *SendPaymentMessage {
+	if x != nil {
+		return x.SendPaymentMessage
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use AppStateSyncKey.ProtoReflect.Descriptor instead.
-func (*AppStateSyncKey) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{67}
+func (x *Message) GetLiveLocationMessage() *LiveLocationMessage {
+	if x != nil {
+		return x.LiveLocationMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKey) GetKeyId() *AppStateSyncKeyId {
+func (x *Message) GetRequestPaymentMessage() *RequestPaymentMessage {
 	if x != nil {
-		return x.KeyId
+		return x.RequestPaymentMessage
 	}
 	return nil
 }
 
-func (x *AppStateSyncKey) GetKeyData() *AppStateSyncKeyData {
+func (x *Message) GetDeclinePaymentRequestMessage() *DeclinePaymentRequestMessage {
 	if x != nil {
-		return x.KeyData
+		return x.DeclinePaymentRequestMessage
 	}
 	return nil
 }
 
-type AppStateSyncKeyShare struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Keys []*AppStateSyncKey `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"`
+func (x *Message) GetCancelPaymentRequestMessage() *CancelPaymentRequestMessage {
+	if x != nil {
+		return x.CancelPaymentRequestMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyShare) Reset() {
-	*x = AppStateSyncKeyShare{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[68]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *Message) GetTemplateMessage() *TemplateMessage {
+	if x != nil {
+		return x.TemplateMessage
 	}
+	return nil
 }
 
-func (x *AppStateSyncKeyShare) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *Message) GetStickerMessage() *StickerMessage {
+	if x != nil {
+		return x.StickerMessage
+	}
+	return nil
 }
 
-func (*AppStateSyncKeyShare) ProtoMessage() {}
-
-func (x *AppStateSyncKeyShare) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[68]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *Message) GetGroupInviteMessage() *GroupInviteMessage {
+	if x != nil {
+		return x.GroupInviteMessage
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use AppStateSyncKeyShare.ProtoReflect.Descriptor instead.
-func (*AppStateSyncKeyShare) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{68}
+func (x *Message) GetTemplateButtonReplyMessage() *TemplateButtonReplyMessage {
+	if x != nil {
+		return x.TemplateButtonReplyMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyShare) GetKeys() []*AppStateSyncKey {
+func (x *Message) GetProductMessage() *ProductMessage {
 	if x != nil {
-		return x.Keys
+		return x.ProductMessage
 	}
 	return nil
 }
 
-type AppStateSyncKeyRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	KeyIds []*AppStateSyncKeyId `protobuf:"bytes,1,rep,name=keyIds" json:"keyIds,omitempty"`
+func (x *Message) GetDeviceSentMessage() *DeviceSentMessage {
+	if x != nil {
+		return x.DeviceSentMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyRequest) Reset() {
-	*x = AppStateSyncKeyRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[69]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *Message) GetMessageContextInfo() *MessageContextInfo {
+	if x != nil {
+		return x.MessageContextInfo
 	}
+	return nil
 }
 
-func (x *AppStateSyncKeyRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *Message) GetListMessage() *ListMessage {
+	if x != nil {
+		return x.ListMessage
+	}
+	return nil
 }
 
-func (*AppStateSyncKeyRequest) ProtoMessage() {}
-
-func (x *AppStateSyncKeyRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[69]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *Message) GetViewOnceMessage() *FutureProofMessage {
+	if x != nil {
+		return x.ViewOnceMessage
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use AppStateSyncKeyRequest.ProtoReflect.Descriptor instead.
-func (*AppStateSyncKeyRequest) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{69}
+func (x *Message) GetOrderMessage() *OrderMessage {
+	if x != nil {
+		return x.OrderMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyRequest) GetKeyIds() []*AppStateSyncKeyId {
+func (x *Message) GetListResponseMessage() *ListResponseMessage {
 	if x != nil {
-		return x.KeyIds
+		return x.ListResponseMessage
 	}
 	return nil
 }
 
-type AppStateSyncKeyId struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	KeyId []byte `protobuf:"bytes,1,opt,name=keyId" json:"keyId,omitempty"`
+func (x *Message) GetEphemeralMessage() *FutureProofMessage {
+	if x != nil {
+		return x.EphemeralMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyId) Reset() {
-	*x = AppStateSyncKeyId{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[70]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *Message) GetInvoiceMessage() *InvoiceMessage {
+	if x != nil {
+		return x.InvoiceMessage
 	}
+	return nil
 }
 
-func (x *AppStateSyncKeyId) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *Message) GetButtonsMessage() *ButtonsMessage {
+	if x != nil {
+		return x.ButtonsMessage
+	}
+	return nil
 }
 
-func (*AppStateSyncKeyId) ProtoMessage() {}
-
-func (x *AppStateSyncKeyId) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[70]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *Message) GetButtonsResponseMessage() *ButtonsResponseMessage {
+	if x != nil {
+		return x.ButtonsResponseMessage
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use AppStateSyncKeyId.ProtoReflect.Descriptor instead.
-func (*AppStateSyncKeyId) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{70}
+func (x *Message) GetPaymentInviteMessage() *PaymentInviteMessage {
+	if x != nil {
+		return x.PaymentInviteMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyId) GetKeyId() []byte {
+func (x *Message) GetInteractiveMessage() *InteractiveMessage {
 	if x != nil {
-		return x.KeyId
+		return x.InteractiveMessage
 	}
 	return nil
 }
 
-type AppStateSyncKeyFingerprint struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RawId         *uint32  `protobuf:"varint,1,opt,name=rawId" json:"rawId,omitempty"`
-	CurrentIndex  *uint32  `protobuf:"varint,2,opt,name=currentIndex" json:"currentIndex,omitempty"`
-	DeviceIndexes []uint32 `protobuf:"varint,3,rep,packed,name=deviceIndexes" json:"deviceIndexes,omitempty"`
+func (x *Message) GetReactionMessage() *ReactionMessage {
+	if x != nil {
+		return x.ReactionMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyFingerprint) Reset() {
-	*x = AppStateSyncKeyFingerprint{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[71]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *Message) GetStickerSyncRmrMessage() *StickerSyncRMRMessage {
+	if x != nil {
+		return x.StickerSyncRmrMessage
 	}
+	return nil
 }
 
-func (x *AppStateSyncKeyFingerprint) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *Message) GetInteractiveResponseMessage() *InteractiveResponseMessage {
+	if x != nil {
+		return x.InteractiveResponseMessage
+	}
+	return nil
 }
 
-func (*AppStateSyncKeyFingerprint) ProtoMessage() {}
+func (x *Message) GetPollCreationMessage() *PollCreationMessage {
+	if x != nil {
+		return x.PollCreationMessage
+	}
+	return nil
+}
 
-func (x *AppStateSyncKeyFingerprint) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[71]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *Message) GetPollUpdateMessage() *PollUpdateMessage {
+	if x != nil {
+		return x.PollUpdateMessage
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use AppStateSyncKeyFingerprint.ProtoReflect.Descriptor instead.
-func (*AppStateSyncKeyFingerprint) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{71}
+func (x *Message) GetKeepInChatMessage() *KeepInChatMessage {
+	if x != nil {
+		return x.KeepInChatMessage
+	}
+	return nil
 }
 
-func (x *AppStateSyncKeyFingerprint) GetRawId() uint32 {
-	if x != nil && x.RawId != nil {
-		return *x.RawId
+func (x *Message) GetDocumentWithCaptionMessage() *FutureProofMessage {
+	if x != nil {
+		return x.DocumentWithCaptionMessage
 	}
-	return 0
+	return nil
 }
 
-func (x *AppStateSyncKeyFingerprint) GetCurrentIndex() uint32 {
-	if x != nil && x.CurrentIndex != nil {
-		return *x.CurrentIndex
+func (x *Message) GetRequestPhoneNumberMessage() *RequestPhoneNumberMessage {
+	if x != nil {
+		return x.RequestPhoneNumberMessage
 	}
-	return 0
+	return nil
 }
 
-func (x *AppStateSyncKeyFingerprint) GetDeviceIndexes() []uint32 {
+func (x *Message) GetViewOnceMessageV2() *FutureProofMessage {
 	if x != nil {
-		return x.DeviceIndexes
+		return x.ViewOnceMessageV2
 	}
 	return nil
 }
 
-type AppStateSyncKeyData struct {
+type MessageContextInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	KeyData     []byte                      `protobuf:"bytes,1,opt,name=keyData" json:"keyData,omitempty"`
-	Fingerprint *AppStateSyncKeyFingerprint `protobuf:"bytes,2,opt,name=fingerprint" json:"fingerprint,omitempty"`
-	Timestamp   *int64                      `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"`
+	DeviceListMetadata        *DeviceListMetadata `protobuf:"bytes,1,opt,name=deviceListMetadata" json:"deviceListMetadata,omitempty"`
+	DeviceListMetadataVersion *int32              `protobuf:"varint,2,opt,name=deviceListMetadataVersion" json:"deviceListMetadataVersion,omitempty"`
+	MessageSecret             []byte              `protobuf:"bytes,3,opt,name=messageSecret" json:"messageSecret,omitempty"`
+	PaddingBytes              []byte              `protobuf:"bytes,4,opt,name=paddingBytes" json:"paddingBytes,omitempty"`
 }
 
-func (x *AppStateSyncKeyData) Reset() {
-	*x = AppStateSyncKeyData{}
+func (x *MessageContextInfo) Reset() {
+	*x = MessageContextInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[72]
+		mi := &file_binary_proto_def_proto_msgTypes[58]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *AppStateSyncKeyData) String() string {
+func (x *MessageContextInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AppStateSyncKeyData) ProtoMessage() {}
+func (*MessageContextInfo) ProtoMessage() {}
 
-func (x *AppStateSyncKeyData) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[72]
+func (x *MessageContextInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[58]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -9449,58 +9324,86 @@ func (x *AppStateSyncKeyData) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AppStateSyncKeyData.ProtoReflect.Descriptor instead.
-func (*AppStateSyncKeyData) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{72}
+// Deprecated: Use MessageContextInfo.ProtoReflect.Descriptor instead.
+func (*MessageContextInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{58}
 }
 
-func (x *AppStateSyncKeyData) GetKeyData() []byte {
+func (x *MessageContextInfo) GetDeviceListMetadata() *DeviceListMetadata {
 	if x != nil {
-		return x.KeyData
+		return x.DeviceListMetadata
 	}
 	return nil
 }
 
-func (x *AppStateSyncKeyData) GetFingerprint() *AppStateSyncKeyFingerprint {
+func (x *MessageContextInfo) GetDeviceListMetadataVersion() int32 {
+	if x != nil && x.DeviceListMetadataVersion != nil {
+		return *x.DeviceListMetadataVersion
+	}
+	return 0
+}
+
+func (x *MessageContextInfo) GetMessageSecret() []byte {
 	if x != nil {
-		return x.Fingerprint
+		return x.MessageSecret
 	}
 	return nil
 }
 
-func (x *AppStateSyncKeyData) GetTimestamp() int64 {
-	if x != nil && x.Timestamp != nil {
-		return *x.Timestamp
+func (x *MessageContextInfo) GetPaddingBytes() []byte {
+	if x != nil {
+		return x.PaddingBytes
 	}
-	return 0
+	return nil
 }
 
-type AppStateFatalExceptionNotification struct {
+type VideoMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	CollectionNames []string `protobuf:"bytes,1,rep,name=collectionNames" json:"collectionNames,omitempty"`
-	Timestamp       *int64   `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	Url                    *string                   `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Mimetype               *string                   `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
+	FileSha256             []byte                    `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileLength             *uint64                   `protobuf:"varint,4,opt,name=fileLength" json:"fileLength,omitempty"`
+	Seconds                *uint32                   `protobuf:"varint,5,opt,name=seconds" json:"seconds,omitempty"`
+	MediaKey               []byte                    `protobuf:"bytes,6,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	Caption                *string                   `protobuf:"bytes,7,opt,name=caption" json:"caption,omitempty"`
+	GifPlayback            *bool                     `protobuf:"varint,8,opt,name=gifPlayback" json:"gifPlayback,omitempty"`
+	Height                 *uint32                   `protobuf:"varint,9,opt,name=height" json:"height,omitempty"`
+	Width                  *uint32                   `protobuf:"varint,10,opt,name=width" json:"width,omitempty"`
+	FileEncSha256          []byte                    `protobuf:"bytes,11,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	InteractiveAnnotations []*InteractiveAnnotation  `protobuf:"bytes,12,rep,name=interactiveAnnotations" json:"interactiveAnnotations,omitempty"`
+	DirectPath             *string                   `protobuf:"bytes,13,opt,name=directPath" json:"directPath,omitempty"`
+	MediaKeyTimestamp      *int64                    `protobuf:"varint,14,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
+	JpegThumbnail          []byte                    `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
+	ContextInfo            *ContextInfo              `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	StreamingSidecar       []byte                    `protobuf:"bytes,18,opt,name=streamingSidecar" json:"streamingSidecar,omitempty"`
+	GifAttribution         *VideoMessage_Attribution `protobuf:"varint,19,opt,name=gifAttribution,enum=proto.VideoMessage_Attribution" json:"gifAttribution,omitempty"`
+	ViewOnce               *bool                     `protobuf:"varint,20,opt,name=viewOnce" json:"viewOnce,omitempty"`
+	ThumbnailDirectPath    *string                   `protobuf:"bytes,21,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
+	ThumbnailSha256        []byte                    `protobuf:"bytes,22,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
+	ThumbnailEncSha256     []byte                    `protobuf:"bytes,23,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
+	StaticUrl              *string                   `protobuf:"bytes,24,opt,name=staticUrl" json:"staticUrl,omitempty"`
 }
 
-func (x *AppStateFatalExceptionNotification) Reset() {
-	*x = AppStateFatalExceptionNotification{}
+func (x *VideoMessage) Reset() {
+	*x = VideoMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[73]
+		mi := &file_binary_proto_def_proto_msgTypes[59]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *AppStateFatalExceptionNotification) String() string {
+func (x *VideoMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AppStateFatalExceptionNotification) ProtoMessage() {}
+func (*VideoMessage) ProtoMessage() {}
 
-func (x *AppStateFatalExceptionNotification) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[73]
+func (x *VideoMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[59]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -9511,192 +9414,202 @@ func (x *AppStateFatalExceptionNotification) ProtoReflect() protoreflect.Message
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AppStateFatalExceptionNotification.ProtoReflect.Descriptor instead.
-func (*AppStateFatalExceptionNotification) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{73}
+// Deprecated: Use VideoMessage.ProtoReflect.Descriptor instead.
+func (*VideoMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{59}
 }
 
-func (x *AppStateFatalExceptionNotification) GetCollectionNames() []string {
-	if x != nil {
-		return x.CollectionNames
+func (x *VideoMessage) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
-	return nil
+	return ""
 }
 
-func (x *AppStateFatalExceptionNotification) GetTimestamp() int64 {
-	if x != nil && x.Timestamp != nil {
-		return *x.Timestamp
+func (x *VideoMessage) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
 	}
-	return 0
+	return ""
 }
 
-type Location struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	DegreesLatitude  *float64 `protobuf:"fixed64,1,opt,name=degreesLatitude" json:"degreesLatitude,omitempty"`
-	DegreesLongitude *float64 `protobuf:"fixed64,2,opt,name=degreesLongitude" json:"degreesLongitude,omitempty"`
-	Name             *string  `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+func (x *VideoMessage) GetFileSha256() []byte {
+	if x != nil {
+		return x.FileSha256
+	}
+	return nil
 }
 
-func (x *Location) Reset() {
-	*x = Location{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[74]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *VideoMessage) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
 	}
+	return 0
 }
 
-func (x *Location) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *VideoMessage) GetSeconds() uint32 {
+	if x != nil && x.Seconds != nil {
+		return *x.Seconds
+	}
+	return 0
 }
 
-func (*Location) ProtoMessage() {}
+func (x *VideoMessage) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
+	}
+	return nil
+}
 
-func (x *Location) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[74]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *VideoMessage) GetCaption() string {
+	if x != nil && x.Caption != nil {
+		return *x.Caption
 	}
-	return mi.MessageOf(x)
+	return ""
 }
 
-// Deprecated: Use Location.ProtoReflect.Descriptor instead.
-func (*Location) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{74}
+func (x *VideoMessage) GetGifPlayback() bool {
+	if x != nil && x.GifPlayback != nil {
+		return *x.GifPlayback
+	}
+	return false
 }
 
-func (x *Location) GetDegreesLatitude() float64 {
-	if x != nil && x.DegreesLatitude != nil {
-		return *x.DegreesLatitude
+func (x *VideoMessage) GetHeight() uint32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
 	return 0
 }
 
-func (x *Location) GetDegreesLongitude() float64 {
-	if x != nil && x.DegreesLongitude != nil {
-		return *x.DegreesLongitude
+func (x *VideoMessage) GetWidth() uint32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
 	}
 	return 0
 }
 
-func (x *Location) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (x *VideoMessage) GetFileEncSha256() []byte {
+	if x != nil {
+		return x.FileEncSha256
 	}
-	return ""
+	return nil
 }
 
-type InteractiveAnnotation struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	PolygonVertices []*Point `protobuf:"bytes,1,rep,name=polygonVertices" json:"polygonVertices,omitempty"`
-	// Types that are assignable to Action:
-	//	*InteractiveAnnotation_Location
-	Action isInteractiveAnnotation_Action `protobuf_oneof:"action"`
+func (x *VideoMessage) GetInteractiveAnnotations() []*InteractiveAnnotation {
+	if x != nil {
+		return x.InteractiveAnnotations
+	}
+	return nil
 }
 
-func (x *InteractiveAnnotation) Reset() {
-	*x = InteractiveAnnotation{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[75]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *VideoMessage) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
 	}
+	return ""
 }
 
-func (x *InteractiveAnnotation) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *VideoMessage) GetMediaKeyTimestamp() int64 {
+	if x != nil && x.MediaKeyTimestamp != nil {
+		return *x.MediaKeyTimestamp
+	}
+	return 0
 }
 
-func (*InteractiveAnnotation) ProtoMessage() {}
-
-func (x *InteractiveAnnotation) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[75]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *VideoMessage) GetJpegThumbnail() []byte {
+	if x != nil {
+		return x.JpegThumbnail
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use InteractiveAnnotation.ProtoReflect.Descriptor instead.
-func (*InteractiveAnnotation) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{75}
+func (x *VideoMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
+	}
+	return nil
 }
 
-func (x *InteractiveAnnotation) GetPolygonVertices() []*Point {
+func (x *VideoMessage) GetStreamingSidecar() []byte {
 	if x != nil {
-		return x.PolygonVertices
+		return x.StreamingSidecar
 	}
 	return nil
 }
 
-func (m *InteractiveAnnotation) GetAction() isInteractiveAnnotation_Action {
-	if m != nil {
-		return m.Action
+func (x *VideoMessage) GetGifAttribution() VideoMessage_Attribution {
+	if x != nil && x.GifAttribution != nil {
+		return *x.GifAttribution
 	}
-	return nil
+	return VideoMessage_NONE
 }
 
-func (x *InteractiveAnnotation) GetLocation() *Location {
-	if x, ok := x.GetAction().(*InteractiveAnnotation_Location); ok {
-		return x.Location
+func (x *VideoMessage) GetViewOnce() bool {
+	if x != nil && x.ViewOnce != nil {
+		return *x.ViewOnce
 	}
-	return nil
+	return false
 }
 
-type isInteractiveAnnotation_Action interface {
-	isInteractiveAnnotation_Action()
+func (x *VideoMessage) GetThumbnailDirectPath() string {
+	if x != nil && x.ThumbnailDirectPath != nil {
+		return *x.ThumbnailDirectPath
+	}
+	return ""
 }
 
-type InteractiveAnnotation_Location struct {
-	Location *Location `protobuf:"bytes,2,opt,name=location,oneof"`
+func (x *VideoMessage) GetThumbnailSha256() []byte {
+	if x != nil {
+		return x.ThumbnailSha256
+	}
+	return nil
 }
 
-func (*InteractiveAnnotation_Location) isInteractiveAnnotation_Action() {}
+func (x *VideoMessage) GetThumbnailEncSha256() []byte {
+	if x != nil {
+		return x.ThumbnailEncSha256
+	}
+	return nil
+}
 
-type HydratedTemplateButton struct {
+func (x *VideoMessage) GetStaticUrl() string {
+	if x != nil && x.StaticUrl != nil {
+		return *x.StaticUrl
+	}
+	return ""
+}
+
+type TemplateMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Index *uint32 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
-	// Types that are assignable to HydratedButton:
-	//	*HydratedTemplateButton_QuickReplyButton
-	//	*HydratedTemplateButton_UrlButton
-	//	*HydratedTemplateButton_CallButton
-	HydratedButton isHydratedTemplateButton_HydratedButton `protobuf_oneof:"hydratedButton"`
+	ContextInfo      *ContextInfo                             `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	HydratedTemplate *TemplateMessage_HydratedFourRowTemplate `protobuf:"bytes,4,opt,name=hydratedTemplate" json:"hydratedTemplate,omitempty"`
+	// Types that are assignable to Format:
+	//	*TemplateMessage_FourRowTemplate_
+	//	*TemplateMessage_HydratedFourRowTemplate_
+	Format isTemplateMessage_Format `protobuf_oneof:"format"`
 }
 
-func (x *HydratedTemplateButton) Reset() {
-	*x = HydratedTemplateButton{}
+func (x *TemplateMessage) Reset() {
+	*x = TemplateMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[76]
+		mi := &file_binary_proto_def_proto_msgTypes[60]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HydratedTemplateButton) String() string {
+func (x *TemplateMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HydratedTemplateButton) ProtoMessage() {}
+func (*TemplateMessage) ProtoMessage() {}
 
-func (x *HydratedTemplateButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[76]
+func (x *TemplateMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[60]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -9707,94 +9620,90 @@ func (x *HydratedTemplateButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HydratedTemplateButton.ProtoReflect.Descriptor instead.
-func (*HydratedTemplateButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{76}
+// Deprecated: Use TemplateMessage.ProtoReflect.Descriptor instead.
+func (*TemplateMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{60}
 }
 
-func (x *HydratedTemplateButton) GetIndex() uint32 {
-	if x != nil && x.Index != nil {
-		return *x.Index
+func (x *TemplateMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
 	}
-	return 0
+	return nil
 }
 
-func (m *HydratedTemplateButton) GetHydratedButton() isHydratedTemplateButton_HydratedButton {
-	if m != nil {
-		return m.HydratedButton
+func (x *TemplateMessage) GetHydratedTemplate() *TemplateMessage_HydratedFourRowTemplate {
+	if x != nil {
+		return x.HydratedTemplate
 	}
 	return nil
 }
 
-func (x *HydratedTemplateButton) GetQuickReplyButton() *HydratedQuickReplyButton {
-	if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_QuickReplyButton); ok {
-		return x.QuickReplyButton
+func (m *TemplateMessage) GetFormat() isTemplateMessage_Format {
+	if m != nil {
+		return m.Format
 	}
 	return nil
 }
 
-func (x *HydratedTemplateButton) GetUrlButton() *HydratedURLButton {
-	if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_UrlButton); ok {
-		return x.UrlButton
+func (x *TemplateMessage) GetFourRowTemplate() *TemplateMessage_FourRowTemplate {
+	if x, ok := x.GetFormat().(*TemplateMessage_FourRowTemplate_); ok {
+		return x.FourRowTemplate
 	}
 	return nil
 }
 
-func (x *HydratedTemplateButton) GetCallButton() *HydratedCallButton {
-	if x, ok := x.GetHydratedButton().(*HydratedTemplateButton_CallButton); ok {
-		return x.CallButton
+func (x *TemplateMessage) GetHydratedFourRowTemplate() *TemplateMessage_HydratedFourRowTemplate {
+	if x, ok := x.GetFormat().(*TemplateMessage_HydratedFourRowTemplate_); ok {
+		return x.HydratedFourRowTemplate
 	}
 	return nil
 }
 
-type isHydratedTemplateButton_HydratedButton interface {
-	isHydratedTemplateButton_HydratedButton()
-}
-
-type HydratedTemplateButton_QuickReplyButton struct {
-	QuickReplyButton *HydratedQuickReplyButton `protobuf:"bytes,1,opt,name=quickReplyButton,oneof"`
+type isTemplateMessage_Format interface {
+	isTemplateMessage_Format()
 }
 
-type HydratedTemplateButton_UrlButton struct {
-	UrlButton *HydratedURLButton `protobuf:"bytes,2,opt,name=urlButton,oneof"`
+type TemplateMessage_FourRowTemplate_ struct {
+	FourRowTemplate *TemplateMessage_FourRowTemplate `protobuf:"bytes,1,opt,name=fourRowTemplate,oneof"`
 }
 
-type HydratedTemplateButton_CallButton struct {
-	CallButton *HydratedCallButton `protobuf:"bytes,3,opt,name=callButton,oneof"`
+type TemplateMessage_HydratedFourRowTemplate_ struct {
+	HydratedFourRowTemplate *TemplateMessage_HydratedFourRowTemplate `protobuf:"bytes,2,opt,name=hydratedFourRowTemplate,oneof"`
 }
 
-func (*HydratedTemplateButton_QuickReplyButton) isHydratedTemplateButton_HydratedButton() {}
-
-func (*HydratedTemplateButton_UrlButton) isHydratedTemplateButton_HydratedButton() {}
+func (*TemplateMessage_FourRowTemplate_) isTemplateMessage_Format() {}
 
-func (*HydratedTemplateButton_CallButton) isHydratedTemplateButton_HydratedButton() {}
+func (*TemplateMessage_HydratedFourRowTemplate_) isTemplateMessage_Format() {}
 
-type HydratedURLButton struct {
+type TemplateButtonReplyMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
-	Url         *string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
+	SelectedId          *string      `protobuf:"bytes,1,opt,name=selectedId" json:"selectedId,omitempty"`
+	SelectedDisplayText *string      `protobuf:"bytes,2,opt,name=selectedDisplayText" json:"selectedDisplayText,omitempty"`
+	ContextInfo         *ContextInfo `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	SelectedIndex       *uint32      `protobuf:"varint,4,opt,name=selectedIndex" json:"selectedIndex,omitempty"`
 }
 
-func (x *HydratedURLButton) Reset() {
-	*x = HydratedURLButton{}
+func (x *TemplateButtonReplyMessage) Reset() {
+	*x = TemplateButtonReplyMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[77]
+		mi := &file_binary_proto_def_proto_msgTypes[61]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HydratedURLButton) String() string {
+func (x *TemplateButtonReplyMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HydratedURLButton) ProtoMessage() {}
+func (*TemplateButtonReplyMessage) ProtoMessage() {}
 
-func (x *HydratedURLButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[77]
+func (x *TemplateButtonReplyMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[61]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -9805,51 +9714,66 @@ func (x *HydratedURLButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HydratedURLButton.ProtoReflect.Descriptor instead.
-func (*HydratedURLButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{77}
+// Deprecated: Use TemplateButtonReplyMessage.ProtoReflect.Descriptor instead.
+func (*TemplateButtonReplyMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{61}
 }
 
-func (x *HydratedURLButton) GetDisplayText() string {
-	if x != nil && x.DisplayText != nil {
-		return *x.DisplayText
+func (x *TemplateButtonReplyMessage) GetSelectedId() string {
+	if x != nil && x.SelectedId != nil {
+		return *x.SelectedId
 	}
 	return ""
 }
 
-func (x *HydratedURLButton) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
+func (x *TemplateButtonReplyMessage) GetSelectedDisplayText() string {
+	if x != nil && x.SelectedDisplayText != nil {
+		return *x.SelectedDisplayText
 	}
 	return ""
 }
 
-type HydratedQuickReplyButton struct {
+func (x *TemplateButtonReplyMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
+	}
+	return nil
+}
+
+func (x *TemplateButtonReplyMessage) GetSelectedIndex() uint32 {
+	if x != nil && x.SelectedIndex != nil {
+		return *x.SelectedIndex
+	}
+	return 0
+}
+
+type StickerSyncRMRMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
-	Id          *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
+	Filehash         []string `protobuf:"bytes,1,rep,name=filehash" json:"filehash,omitempty"`
+	RmrSource        *string  `protobuf:"bytes,2,opt,name=rmrSource" json:"rmrSource,omitempty"`
+	RequestTimestamp *int64   `protobuf:"varint,3,opt,name=requestTimestamp" json:"requestTimestamp,omitempty"`
 }
 
-func (x *HydratedQuickReplyButton) Reset() {
-	*x = HydratedQuickReplyButton{}
+func (x *StickerSyncRMRMessage) Reset() {
+	*x = StickerSyncRMRMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[78]
+		mi := &file_binary_proto_def_proto_msgTypes[62]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HydratedQuickReplyButton) String() string {
+func (x *StickerSyncRMRMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HydratedQuickReplyButton) ProtoMessage() {}
+func (*StickerSyncRMRMessage) ProtoMessage() {}
 
-func (x *HydratedQuickReplyButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[78]
+func (x *StickerSyncRMRMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[62]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -9860,51 +9784,71 @@ func (x *HydratedQuickReplyButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HydratedQuickReplyButton.ProtoReflect.Descriptor instead.
-func (*HydratedQuickReplyButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{78}
+// Deprecated: Use StickerSyncRMRMessage.ProtoReflect.Descriptor instead.
+func (*StickerSyncRMRMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{62}
 }
 
-func (x *HydratedQuickReplyButton) GetDisplayText() string {
-	if x != nil && x.DisplayText != nil {
-		return *x.DisplayText
+func (x *StickerSyncRMRMessage) GetFilehash() []string {
+	if x != nil {
+		return x.Filehash
 	}
-	return ""
+	return nil
 }
 
-func (x *HydratedQuickReplyButton) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
+func (x *StickerSyncRMRMessage) GetRmrSource() string {
+	if x != nil && x.RmrSource != nil {
+		return *x.RmrSource
 	}
 	return ""
 }
 
-type HydratedCallButton struct {
+func (x *StickerSyncRMRMessage) GetRequestTimestamp() int64 {
+	if x != nil && x.RequestTimestamp != nil {
+		return *x.RequestTimestamp
+	}
+	return 0
+}
+
+type StickerMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
-	PhoneNumber *string `protobuf:"bytes,2,opt,name=phoneNumber" json:"phoneNumber,omitempty"`
+	Url               *string      `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	FileSha256        []byte       `protobuf:"bytes,2,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileEncSha256     []byte       `protobuf:"bytes,3,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	MediaKey          []byte       `protobuf:"bytes,4,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	Mimetype          *string      `protobuf:"bytes,5,opt,name=mimetype" json:"mimetype,omitempty"`
+	Height            *uint32      `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
+	Width             *uint32      `protobuf:"varint,7,opt,name=width" json:"width,omitempty"`
+	DirectPath        *string      `protobuf:"bytes,8,opt,name=directPath" json:"directPath,omitempty"`
+	FileLength        *uint64      `protobuf:"varint,9,opt,name=fileLength" json:"fileLength,omitempty"`
+	MediaKeyTimestamp *int64       `protobuf:"varint,10,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
+	FirstFrameLength  *uint32      `protobuf:"varint,11,opt,name=firstFrameLength" json:"firstFrameLength,omitempty"`
+	FirstFrameSidecar []byte       `protobuf:"bytes,12,opt,name=firstFrameSidecar" json:"firstFrameSidecar,omitempty"`
+	IsAnimated        *bool        `protobuf:"varint,13,opt,name=isAnimated" json:"isAnimated,omitempty"`
+	PngThumbnail      []byte       `protobuf:"bytes,16,opt,name=pngThumbnail" json:"pngThumbnail,omitempty"`
+	ContextInfo       *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *HydratedCallButton) Reset() {
-	*x = HydratedCallButton{}
+func (x *StickerMessage) Reset() {
+	*x = StickerMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[79]
+		mi := &file_binary_proto_def_proto_msgTypes[63]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HydratedCallButton) String() string {
+func (x *StickerMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HydratedCallButton) ProtoMessage() {}
+func (*StickerMessage) ProtoMessage() {}
 
-func (x *HydratedCallButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[79]
+func (x *StickerMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[63]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -9915,206 +9859,198 @@ func (x *HydratedCallButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HydratedCallButton.ProtoReflect.Descriptor instead.
-func (*HydratedCallButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{79}
+// Deprecated: Use StickerMessage.ProtoReflect.Descriptor instead.
+func (*StickerMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{63}
 }
 
-func (x *HydratedCallButton) GetDisplayText() string {
-	if x != nil && x.DisplayText != nil {
-		return *x.DisplayText
+func (x *StickerMessage) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
 	return ""
 }
 
-func (x *HydratedCallButton) GetPhoneNumber() string {
-	if x != nil && x.PhoneNumber != nil {
-		return *x.PhoneNumber
+func (x *StickerMessage) GetFileSha256() []byte {
+	if x != nil {
+		return x.FileSha256
 	}
-	return ""
+	return nil
 }
 
-type DisappearingMode struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Initiator *DisappearingMode_DisappearingModeInitiator `protobuf:"varint,1,opt,name=initiator,enum=proto.DisappearingMode_DisappearingModeInitiator" json:"initiator,omitempty"`
+func (x *StickerMessage) GetFileEncSha256() []byte {
+	if x != nil {
+		return x.FileEncSha256
+	}
+	return nil
 }
 
-func (x *DisappearingMode) Reset() {
-	*x = DisappearingMode{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[80]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *StickerMessage) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
 	}
+	return nil
 }
 
-func (x *DisappearingMode) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *StickerMessage) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
+	}
+	return ""
 }
 
-func (*DisappearingMode) ProtoMessage() {}
-
-func (x *DisappearingMode) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[80]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *StickerMessage) GetHeight() uint32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
-	return mi.MessageOf(x)
+	return 0
 }
 
-// Deprecated: Use DisappearingMode.ProtoReflect.Descriptor instead.
-func (*DisappearingMode) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{80}
+func (x *StickerMessage) GetWidth() uint32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
+	}
+	return 0
 }
 
-func (x *DisappearingMode) GetInitiator() DisappearingMode_DisappearingModeInitiator {
-	if x != nil && x.Initiator != nil {
-		return *x.Initiator
+func (x *StickerMessage) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
 	}
-	return DisappearingMode_CHANGED_IN_CHAT
+	return ""
 }
 
-type DeviceListMetadata struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
+func (x *StickerMessage) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
+	}
+	return 0
+}
 
-	SenderKeyHash       []byte   `protobuf:"bytes,1,opt,name=senderKeyHash" json:"senderKeyHash,omitempty"`
-	SenderTimestamp     *uint64  `protobuf:"varint,2,opt,name=senderTimestamp" json:"senderTimestamp,omitempty"`
-	SenderKeyIndexes    []uint32 `protobuf:"varint,3,rep,packed,name=senderKeyIndexes" json:"senderKeyIndexes,omitempty"`
-	RecipientKeyHash    []byte   `protobuf:"bytes,8,opt,name=recipientKeyHash" json:"recipientKeyHash,omitempty"`
-	RecipientTimestamp  *uint64  `protobuf:"varint,9,opt,name=recipientTimestamp" json:"recipientTimestamp,omitempty"`
-	RecipientKeyIndexes []uint32 `protobuf:"varint,10,rep,packed,name=recipientKeyIndexes" json:"recipientKeyIndexes,omitempty"`
+func (x *StickerMessage) GetMediaKeyTimestamp() int64 {
+	if x != nil && x.MediaKeyTimestamp != nil {
+		return *x.MediaKeyTimestamp
+	}
+	return 0
 }
 
-func (x *DeviceListMetadata) Reset() {
-	*x = DeviceListMetadata{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[81]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *StickerMessage) GetFirstFrameLength() uint32 {
+	if x != nil && x.FirstFrameLength != nil {
+		return *x.FirstFrameLength
 	}
+	return 0
 }
 
-func (x *DeviceListMetadata) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *StickerMessage) GetFirstFrameSidecar() []byte {
+	if x != nil {
+		return x.FirstFrameSidecar
+	}
+	return nil
 }
 
-func (*DeviceListMetadata) ProtoMessage() {}
-
-func (x *DeviceListMetadata) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[81]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *StickerMessage) GetIsAnimated() bool {
+	if x != nil && x.IsAnimated != nil {
+		return *x.IsAnimated
 	}
-	return mi.MessageOf(x)
+	return false
 }
 
-// Deprecated: Use DeviceListMetadata.ProtoReflect.Descriptor instead.
-func (*DeviceListMetadata) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{81}
+func (x *StickerMessage) GetPngThumbnail() []byte {
+	if x != nil {
+		return x.PngThumbnail
+	}
+	return nil
 }
 
-func (x *DeviceListMetadata) GetSenderKeyHash() []byte {
+func (x *StickerMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
-		return x.SenderKeyHash
+		return x.ContextInfo
 	}
 	return nil
 }
 
-func (x *DeviceListMetadata) GetSenderTimestamp() uint64 {
-	if x != nil && x.SenderTimestamp != nil {
-		return *x.SenderTimestamp
-	}
-	return 0
+type SenderKeyDistributionMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	GroupId                             *string `protobuf:"bytes,1,opt,name=groupId" json:"groupId,omitempty"`
+	AxolotlSenderKeyDistributionMessage []byte  `protobuf:"bytes,2,opt,name=axolotlSenderKeyDistributionMessage" json:"axolotlSenderKeyDistributionMessage,omitempty"`
 }
 
-func (x *DeviceListMetadata) GetSenderKeyIndexes() []uint32 {
-	if x != nil {
-		return x.SenderKeyIndexes
+func (x *SenderKeyDistributionMessage) Reset() {
+	*x = SenderKeyDistributionMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[64]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *DeviceListMetadata) GetRecipientKeyHash() []byte {
-	if x != nil {
-		return x.RecipientKeyHash
+func (x *SenderKeyDistributionMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SenderKeyDistributionMessage) ProtoMessage() {}
+
+func (x *SenderKeyDistributionMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[64]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *DeviceListMetadata) GetRecipientTimestamp() uint64 {
-	if x != nil && x.RecipientTimestamp != nil {
-		return *x.RecipientTimestamp
+// Deprecated: Use SenderKeyDistributionMessage.ProtoReflect.Descriptor instead.
+func (*SenderKeyDistributionMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{64}
+}
+
+func (x *SenderKeyDistributionMessage) GetGroupId() string {
+	if x != nil && x.GroupId != nil {
+		return *x.GroupId
 	}
-	return 0
+	return ""
 }
 
-func (x *DeviceListMetadata) GetRecipientKeyIndexes() []uint32 {
+func (x *SenderKeyDistributionMessage) GetAxolotlSenderKeyDistributionMessage() []byte {
 	if x != nil {
-		return x.RecipientKeyIndexes
+		return x.AxolotlSenderKeyDistributionMessage
 	}
 	return nil
 }
 
-type ContextInfo struct {
+type SendPaymentMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	StanzaId                         *string              `protobuf:"bytes,1,opt,name=stanzaId" json:"stanzaId,omitempty"`
-	Participant                      *string              `protobuf:"bytes,2,opt,name=participant" json:"participant,omitempty"`
-	QuotedMessage                    *Message             `protobuf:"bytes,3,opt,name=quotedMessage" json:"quotedMessage,omitempty"`
-	RemoteJid                        *string              `protobuf:"bytes,4,opt,name=remoteJid" json:"remoteJid,omitempty"`
-	MentionedJid                     []string             `protobuf:"bytes,15,rep,name=mentionedJid" json:"mentionedJid,omitempty"`
-	ConversionSource                 *string              `protobuf:"bytes,18,opt,name=conversionSource" json:"conversionSource,omitempty"`
-	ConversionData                   []byte               `protobuf:"bytes,19,opt,name=conversionData" json:"conversionData,omitempty"`
-	ConversionDelaySeconds           *uint32              `protobuf:"varint,20,opt,name=conversionDelaySeconds" json:"conversionDelaySeconds,omitempty"`
-	ForwardingScore                  *uint32              `protobuf:"varint,21,opt,name=forwardingScore" json:"forwardingScore,omitempty"`
-	IsForwarded                      *bool                `protobuf:"varint,22,opt,name=isForwarded" json:"isForwarded,omitempty"`
-	QuotedAd                         *AdReplyInfo         `protobuf:"bytes,23,opt,name=quotedAd" json:"quotedAd,omitempty"`
-	PlaceholderKey                   *MessageKey          `protobuf:"bytes,24,opt,name=placeholderKey" json:"placeholderKey,omitempty"`
-	Expiration                       *uint32              `protobuf:"varint,25,opt,name=expiration" json:"expiration,omitempty"`
-	EphemeralSettingTimestamp        *int64               `protobuf:"varint,26,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"`
-	EphemeralSharedSecret            []byte               `protobuf:"bytes,27,opt,name=ephemeralSharedSecret" json:"ephemeralSharedSecret,omitempty"`
-	ExternalAdReply                  *ExternalAdReplyInfo `protobuf:"bytes,28,opt,name=externalAdReply" json:"externalAdReply,omitempty"`
-	EntryPointConversionSource       *string              `protobuf:"bytes,29,opt,name=entryPointConversionSource" json:"entryPointConversionSource,omitempty"`
-	EntryPointConversionApp          *string              `protobuf:"bytes,30,opt,name=entryPointConversionApp" json:"entryPointConversionApp,omitempty"`
-	EntryPointConversionDelaySeconds *uint32              `protobuf:"varint,31,opt,name=entryPointConversionDelaySeconds" json:"entryPointConversionDelaySeconds,omitempty"`
-	DisappearingMode                 *DisappearingMode    `protobuf:"bytes,32,opt,name=disappearingMode" json:"disappearingMode,omitempty"`
-	ActionLink                       *ActionLink          `protobuf:"bytes,33,opt,name=actionLink" json:"actionLink,omitempty"`
-	GroupSubject                     *string              `protobuf:"bytes,34,opt,name=groupSubject" json:"groupSubject,omitempty"`
-	ParentGroupJid                   *string              `protobuf:"bytes,35,opt,name=parentGroupJid" json:"parentGroupJid,omitempty"`
+	NoteMessage       *Message           `protobuf:"bytes,2,opt,name=noteMessage" json:"noteMessage,omitempty"`
+	RequestMessageKey *MessageKey        `protobuf:"bytes,3,opt,name=requestMessageKey" json:"requestMessageKey,omitempty"`
+	Background        *PaymentBackground `protobuf:"bytes,4,opt,name=background" json:"background,omitempty"`
 }
 
-func (x *ContextInfo) Reset() {
-	*x = ContextInfo{}
+func (x *SendPaymentMessage) Reset() {
+	*x = SendPaymentMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[82]
+		mi := &file_binary_proto_def_proto_msgTypes[65]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ContextInfo) String() string {
+func (x *SendPaymentMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ContextInfo) ProtoMessage() {}
+func (*SendPaymentMessage) ProtoMessage() {}
 
-func (x *ContextInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[82]
+func (x *SendPaymentMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[65]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10125,208 +10061,201 @@ func (x *ContextInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ContextInfo.ProtoReflect.Descriptor instead.
-func (*ContextInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{82}
+// Deprecated: Use SendPaymentMessage.ProtoReflect.Descriptor instead.
+func (*SendPaymentMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{65}
 }
 
-func (x *ContextInfo) GetStanzaId() string {
-	if x != nil && x.StanzaId != nil {
-		return *x.StanzaId
+func (x *SendPaymentMessage) GetNoteMessage() *Message {
+	if x != nil {
+		return x.NoteMessage
 	}
-	return ""
+	return nil
 }
 
-func (x *ContextInfo) GetParticipant() string {
-	if x != nil && x.Participant != nil {
-		return *x.Participant
+func (x *SendPaymentMessage) GetRequestMessageKey() *MessageKey {
+	if x != nil {
+		return x.RequestMessageKey
 	}
-	return ""
+	return nil
 }
 
-func (x *ContextInfo) GetQuotedMessage() *Message {
+func (x *SendPaymentMessage) GetBackground() *PaymentBackground {
 	if x != nil {
-		return x.QuotedMessage
+		return x.Background
 	}
 	return nil
 }
 
-func (x *ContextInfo) GetRemoteJid() string {
-	if x != nil && x.RemoteJid != nil {
-		return *x.RemoteJid
-	}
-	return ""
+type RequestPhoneNumberMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ContextInfo *ContextInfo `protobuf:"bytes,1,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *ContextInfo) GetMentionedJid() []string {
-	if x != nil {
-		return x.MentionedJid
+func (x *RequestPhoneNumberMessage) Reset() {
+	*x = RequestPhoneNumberMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[66]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *ContextInfo) GetConversionSource() string {
-	if x != nil && x.ConversionSource != nil {
-		return *x.ConversionSource
+func (x *RequestPhoneNumberMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RequestPhoneNumberMessage) ProtoMessage() {}
+
+func (x *RequestPhoneNumberMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[66]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ""
+	return mi.MessageOf(x)
 }
 
-func (x *ContextInfo) GetConversionData() []byte {
+// Deprecated: Use RequestPhoneNumberMessage.ProtoReflect.Descriptor instead.
+func (*RequestPhoneNumberMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{66}
+}
+
+func (x *RequestPhoneNumberMessage) GetContextInfo() *ContextInfo {
 	if x != nil {
-		return x.ConversionData
+		return x.ContextInfo
 	}
 	return nil
 }
 
-func (x *ContextInfo) GetConversionDelaySeconds() uint32 {
-	if x != nil && x.ConversionDelaySeconds != nil {
-		return *x.ConversionDelaySeconds
-	}
-	return 0
+type RequestPaymentMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	NoteMessage         *Message           `protobuf:"bytes,4,opt,name=noteMessage" json:"noteMessage,omitempty"`
+	CurrencyCodeIso4217 *string            `protobuf:"bytes,1,opt,name=currencyCodeIso4217" json:"currencyCodeIso4217,omitempty"`
+	Amount1000          *uint64            `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"`
+	RequestFrom         *string            `protobuf:"bytes,3,opt,name=requestFrom" json:"requestFrom,omitempty"`
+	ExpiryTimestamp     *int64             `protobuf:"varint,5,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"`
+	Amount              *Money             `protobuf:"bytes,6,opt,name=amount" json:"amount,omitempty"`
+	Background          *PaymentBackground `protobuf:"bytes,7,opt,name=background" json:"background,omitempty"`
 }
 
-func (x *ContextInfo) GetForwardingScore() uint32 {
-	if x != nil && x.ForwardingScore != nil {
-		return *x.ForwardingScore
+func (x *RequestPaymentMessage) Reset() {
+	*x = RequestPaymentMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[67]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *ContextInfo) GetIsForwarded() bool {
-	if x != nil && x.IsForwarded != nil {
-		return *x.IsForwarded
+func (x *RequestPaymentMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RequestPaymentMessage) ProtoMessage() {}
+
+func (x *RequestPaymentMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[67]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return false
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RequestPaymentMessage.ProtoReflect.Descriptor instead.
+func (*RequestPaymentMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{67}
 }
 
-func (x *ContextInfo) GetQuotedAd() *AdReplyInfo {
+func (x *RequestPaymentMessage) GetNoteMessage() *Message {
 	if x != nil {
-		return x.QuotedAd
+		return x.NoteMessage
 	}
 	return nil
 }
 
-func (x *ContextInfo) GetPlaceholderKey() *MessageKey {
-	if x != nil {
-		return x.PlaceholderKey
+func (x *RequestPaymentMessage) GetCurrencyCodeIso4217() string {
+	if x != nil && x.CurrencyCodeIso4217 != nil {
+		return *x.CurrencyCodeIso4217
 	}
-	return nil
+	return ""
 }
 
-func (x *ContextInfo) GetExpiration() uint32 {
-	if x != nil && x.Expiration != nil {
-		return *x.Expiration
+func (x *RequestPaymentMessage) GetAmount1000() uint64 {
+	if x != nil && x.Amount1000 != nil {
+		return *x.Amount1000
 	}
 	return 0
 }
 
-func (x *ContextInfo) GetEphemeralSettingTimestamp() int64 {
-	if x != nil && x.EphemeralSettingTimestamp != nil {
-		return *x.EphemeralSettingTimestamp
+func (x *RequestPaymentMessage) GetRequestFrom() string {
+	if x != nil && x.RequestFrom != nil {
+		return *x.RequestFrom
+	}
+	return ""
+}
+
+func (x *RequestPaymentMessage) GetExpiryTimestamp() int64 {
+	if x != nil && x.ExpiryTimestamp != nil {
+		return *x.ExpiryTimestamp
 	}
 	return 0
 }
 
-func (x *ContextInfo) GetEphemeralSharedSecret() []byte {
+func (x *RequestPaymentMessage) GetAmount() *Money {
 	if x != nil {
-		return x.EphemeralSharedSecret
+		return x.Amount
 	}
 	return nil
 }
 
-func (x *ContextInfo) GetExternalAdReply() *ExternalAdReplyInfo {
+func (x *RequestPaymentMessage) GetBackground() *PaymentBackground {
 	if x != nil {
-		return x.ExternalAdReply
+		return x.Background
 	}
 	return nil
 }
 
-func (x *ContextInfo) GetEntryPointConversionSource() string {
-	if x != nil && x.EntryPointConversionSource != nil {
-		return *x.EntryPointConversionSource
-	}
-	return ""
-}
-
-func (x *ContextInfo) GetEntryPointConversionApp() string {
-	if x != nil && x.EntryPointConversionApp != nil {
-		return *x.EntryPointConversionApp
-	}
-	return ""
-}
-
-func (x *ContextInfo) GetEntryPointConversionDelaySeconds() uint32 {
-	if x != nil && x.EntryPointConversionDelaySeconds != nil {
-		return *x.EntryPointConversionDelaySeconds
-	}
-	return 0
-}
-
-func (x *ContextInfo) GetDisappearingMode() *DisappearingMode {
-	if x != nil {
-		return x.DisappearingMode
-	}
-	return nil
-}
-
-func (x *ContextInfo) GetActionLink() *ActionLink {
-	if x != nil {
-		return x.ActionLink
-	}
-	return nil
-}
-
-func (x *ContextInfo) GetGroupSubject() string {
-	if x != nil && x.GroupSubject != nil {
-		return *x.GroupSubject
-	}
-	return ""
-}
-
-func (x *ContextInfo) GetParentGroupJid() string {
-	if x != nil && x.ParentGroupJid != nil {
-		return *x.ParentGroupJid
-	}
-	return ""
-}
-
-type ExternalAdReplyInfo struct {
+type RequestMediaUploadResponseMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Title                 *string                                           `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
-	Body                  *string                                           `protobuf:"bytes,2,opt,name=body" json:"body,omitempty"`
-	MediaType             *ExternalAdReplyInfo_ExternalAdReplyInfoMediaType `protobuf:"varint,3,opt,name=mediaType,enum=proto.ExternalAdReplyInfo_ExternalAdReplyInfoMediaType" json:"mediaType,omitempty"`
-	ThumbnailUrl          *string                                           `protobuf:"bytes,4,opt,name=thumbnailUrl" json:"thumbnailUrl,omitempty"`
-	MediaUrl              *string                                           `protobuf:"bytes,5,opt,name=mediaUrl" json:"mediaUrl,omitempty"`
-	Thumbnail             []byte                                            `protobuf:"bytes,6,opt,name=thumbnail" json:"thumbnail,omitempty"`
-	SourceType            *string                                           `protobuf:"bytes,7,opt,name=sourceType" json:"sourceType,omitempty"`
-	SourceId              *string                                           `protobuf:"bytes,8,opt,name=sourceId" json:"sourceId,omitempty"`
-	SourceUrl             *string                                           `protobuf:"bytes,9,opt,name=sourceUrl" json:"sourceUrl,omitempty"`
-	ContainsAutoReply     *bool                                             `protobuf:"varint,10,opt,name=containsAutoReply" json:"containsAutoReply,omitempty"`
-	RenderLargerThumbnail *bool                                             `protobuf:"varint,11,opt,name=renderLargerThumbnail" json:"renderLargerThumbnail,omitempty"`
-	ShowAdAttribution     *bool                                             `protobuf:"varint,12,opt,name=showAdAttribution" json:"showAdAttribution,omitempty"`
-}
-
-func (x *ExternalAdReplyInfo) Reset() {
-	*x = ExternalAdReplyInfo{}
+	RmrSource      *RmrSource                                                    `protobuf:"varint,1,opt,name=rmrSource,enum=proto.RmrSource" json:"rmrSource,omitempty"`
+	StanzaId       *string                                                       `protobuf:"bytes,2,opt,name=stanzaId" json:"stanzaId,omitempty"`
+	ReuploadResult []*RequestMediaUploadResponseMessage_RequestMediaUploadResult `protobuf:"bytes,3,rep,name=reuploadResult" json:"reuploadResult,omitempty"`
+}
+
+func (x *RequestMediaUploadResponseMessage) Reset() {
+	*x = RequestMediaUploadResponseMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[83]
+		mi := &file_binary_proto_def_proto_msgTypes[68]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ExternalAdReplyInfo) String() string {
+func (x *RequestMediaUploadResponseMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ExternalAdReplyInfo) ProtoMessage() {}
+func (*RequestMediaUploadResponseMessage) ProtoMessage() {}
 
-func (x *ExternalAdReplyInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[83]
+func (x *RequestMediaUploadResponseMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[68]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10337,123 +10266,58 @@ func (x *ExternalAdReplyInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ExternalAdReplyInfo.ProtoReflect.Descriptor instead.
-func (*ExternalAdReplyInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{83}
-}
-
-func (x *ExternalAdReplyInfo) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
-	}
-	return ""
-}
-
-func (x *ExternalAdReplyInfo) GetBody() string {
-	if x != nil && x.Body != nil {
-		return *x.Body
-	}
-	return ""
-}
-
-func (x *ExternalAdReplyInfo) GetMediaType() ExternalAdReplyInfo_ExternalAdReplyInfoMediaType {
-	if x != nil && x.MediaType != nil {
-		return *x.MediaType
-	}
-	return ExternalAdReplyInfo_NONE
+// Deprecated: Use RequestMediaUploadResponseMessage.ProtoReflect.Descriptor instead.
+func (*RequestMediaUploadResponseMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{68}
 }
 
-func (x *ExternalAdReplyInfo) GetThumbnailUrl() string {
-	if x != nil && x.ThumbnailUrl != nil {
-		return *x.ThumbnailUrl
+func (x *RequestMediaUploadResponseMessage) GetRmrSource() RmrSource {
+	if x != nil && x.RmrSource != nil {
+		return *x.RmrSource
 	}
-	return ""
+	return RmrSource_FAVORITE_STICKER
 }
 
-func (x *ExternalAdReplyInfo) GetMediaUrl() string {
-	if x != nil && x.MediaUrl != nil {
-		return *x.MediaUrl
+func (x *RequestMediaUploadResponseMessage) GetStanzaId() string {
+	if x != nil && x.StanzaId != nil {
+		return *x.StanzaId
 	}
 	return ""
 }
 
-func (x *ExternalAdReplyInfo) GetThumbnail() []byte {
+func (x *RequestMediaUploadResponseMessage) GetReuploadResult() []*RequestMediaUploadResponseMessage_RequestMediaUploadResult {
 	if x != nil {
-		return x.Thumbnail
+		return x.ReuploadResult
 	}
 	return nil
 }
 
-func (x *ExternalAdReplyInfo) GetSourceType() string {
-	if x != nil && x.SourceType != nil {
-		return *x.SourceType
-	}
-	return ""
-}
-
-func (x *ExternalAdReplyInfo) GetSourceId() string {
-	if x != nil && x.SourceId != nil {
-		return *x.SourceId
-	}
-	return ""
-}
-
-func (x *ExternalAdReplyInfo) GetSourceUrl() string {
-	if x != nil && x.SourceUrl != nil {
-		return *x.SourceUrl
-	}
-	return ""
-}
-
-func (x *ExternalAdReplyInfo) GetContainsAutoReply() bool {
-	if x != nil && x.ContainsAutoReply != nil {
-		return *x.ContainsAutoReply
-	}
-	return false
-}
-
-func (x *ExternalAdReplyInfo) GetRenderLargerThumbnail() bool {
-	if x != nil && x.RenderLargerThumbnail != nil {
-		return *x.RenderLargerThumbnail
-	}
-	return false
-}
-
-func (x *ExternalAdReplyInfo) GetShowAdAttribution() bool {
-	if x != nil && x.ShowAdAttribution != nil {
-		return *x.ShowAdAttribution
-	}
-	return false
-}
-
-type AdReplyInfo struct {
+type RequestMediaUploadMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	AdvertiserName *string                           `protobuf:"bytes,1,opt,name=advertiserName" json:"advertiserName,omitempty"`
-	MediaType      *AdReplyInfo_AdReplyInfoMediaType `protobuf:"varint,2,opt,name=mediaType,enum=proto.AdReplyInfo_AdReplyInfoMediaType" json:"mediaType,omitempty"`
-	JpegThumbnail  []byte                            `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
-	Caption        *string                           `protobuf:"bytes,17,opt,name=caption" json:"caption,omitempty"`
+	FileSha256 []string   `protobuf:"bytes,1,rep,name=fileSha256" json:"fileSha256,omitempty"`
+	RmrSource  *RmrSource `protobuf:"varint,2,opt,name=rmrSource,enum=proto.RmrSource" json:"rmrSource,omitempty"`
 }
 
-func (x *AdReplyInfo) Reset() {
-	*x = AdReplyInfo{}
+func (x *RequestMediaUploadMessage) Reset() {
+	*x = RequestMediaUploadMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[84]
+		mi := &file_binary_proto_def_proto_msgTypes[69]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *AdReplyInfo) String() string {
+func (x *RequestMediaUploadMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AdReplyInfo) ProtoMessage() {}
+func (*RequestMediaUploadMessage) ProtoMessage() {}
 
-func (x *AdReplyInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[84]
+func (x *RequestMediaUploadMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[69]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10464,65 +10328,53 @@ func (x *AdReplyInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AdReplyInfo.ProtoReflect.Descriptor instead.
-func (*AdReplyInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{84}
-}
-
-func (x *AdReplyInfo) GetAdvertiserName() string {
-	if x != nil && x.AdvertiserName != nil {
-		return *x.AdvertiserName
-	}
-	return ""
-}
-
-func (x *AdReplyInfo) GetMediaType() AdReplyInfo_AdReplyInfoMediaType {
-	if x != nil && x.MediaType != nil {
-		return *x.MediaType
-	}
-	return AdReplyInfo_NONE
+// Deprecated: Use RequestMediaUploadMessage.ProtoReflect.Descriptor instead.
+func (*RequestMediaUploadMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{69}
 }
 
-func (x *AdReplyInfo) GetJpegThumbnail() []byte {
+func (x *RequestMediaUploadMessage) GetFileSha256() []string {
 	if x != nil {
-		return x.JpegThumbnail
+		return x.FileSha256
 	}
 	return nil
 }
 
-func (x *AdReplyInfo) GetCaption() string {
-	if x != nil && x.Caption != nil {
-		return *x.Caption
+func (x *RequestMediaUploadMessage) GetRmrSource() RmrSource {
+	if x != nil && x.RmrSource != nil {
+		return *x.RmrSource
 	}
-	return ""
+	return RmrSource_FAVORITE_STICKER
 }
 
-type ActionLink struct {
+type ReactionMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Url         *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
-	ButtonTitle *string `protobuf:"bytes,2,opt,name=buttonTitle" json:"buttonTitle,omitempty"`
+	Key               *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+	Text              *string     `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
+	GroupingKey       *string     `protobuf:"bytes,3,opt,name=groupingKey" json:"groupingKey,omitempty"`
+	SenderTimestampMs *int64      `protobuf:"varint,4,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
 }
 
-func (x *ActionLink) Reset() {
-	*x = ActionLink{}
+func (x *ReactionMessage) Reset() {
+	*x = ReactionMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[85]
+		mi := &file_binary_proto_def_proto_msgTypes[70]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ActionLink) String() string {
+func (x *ReactionMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ActionLink) ProtoMessage() {}
+func (*ReactionMessage) ProtoMessage() {}
 
-func (x *ActionLink) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[85]
+func (x *ReactionMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[70]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10533,55 +10385,75 @@ func (x *ActionLink) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ActionLink.ProtoReflect.Descriptor instead.
-func (*ActionLink) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{85}
+// Deprecated: Use ReactionMessage.ProtoReflect.Descriptor instead.
+func (*ReactionMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{70}
 }
 
-func (x *ActionLink) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
+func (x *ReactionMessage) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
+	}
+	return nil
+}
+
+func (x *ReactionMessage) GetText() string {
+	if x != nil && x.Text != nil {
+		return *x.Text
 	}
 	return ""
 }
 
-func (x *ActionLink) GetButtonTitle() string {
-	if x != nil && x.ButtonTitle != nil {
-		return *x.ButtonTitle
+func (x *ReactionMessage) GetGroupingKey() string {
+	if x != nil && x.GroupingKey != nil {
+		return *x.GroupingKey
 	}
 	return ""
 }
 
-type TemplateButton struct {
+func (x *ReactionMessage) GetSenderTimestampMs() int64 {
+	if x != nil && x.SenderTimestampMs != nil {
+		return *x.SenderTimestampMs
+	}
+	return 0
+}
+
+type ProtocolMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Index *uint32 `protobuf:"varint,4,opt,name=index" json:"index,omitempty"`
-	// Types that are assignable to Button:
-	//	*TemplateButton_QuickReplyButton
-	//	*TemplateButton_UrlButton
-	//	*TemplateButton_CallButton
-	Button isTemplateButton_Button `protobuf_oneof:"button"`
+	Key                                    *MessageKey                             `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+	Type                                   *ProtocolMessage_Type                   `protobuf:"varint,2,opt,name=type,enum=proto.ProtocolMessage_Type" json:"type,omitempty"`
+	EphemeralExpiration                    *uint32                                 `protobuf:"varint,4,opt,name=ephemeralExpiration" json:"ephemeralExpiration,omitempty"`
+	EphemeralSettingTimestamp              *int64                                  `protobuf:"varint,5,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"`
+	HistorySyncNotification                *HistorySyncNotification                `protobuf:"bytes,6,opt,name=historySyncNotification" json:"historySyncNotification,omitempty"`
+	AppStateSyncKeyShare                   *AppStateSyncKeyShare                   `protobuf:"bytes,7,opt,name=appStateSyncKeyShare" json:"appStateSyncKeyShare,omitempty"`
+	AppStateSyncKeyRequest                 *AppStateSyncKeyRequest                 `protobuf:"bytes,8,opt,name=appStateSyncKeyRequest" json:"appStateSyncKeyRequest,omitempty"`
+	InitialSecurityNotificationSettingSync *InitialSecurityNotificationSettingSync `protobuf:"bytes,9,opt,name=initialSecurityNotificationSettingSync" json:"initialSecurityNotificationSettingSync,omitempty"`
+	AppStateFatalExceptionNotification     *AppStateFatalExceptionNotification     `protobuf:"bytes,10,opt,name=appStateFatalExceptionNotification" json:"appStateFatalExceptionNotification,omitempty"`
+	DisappearingMode                       *DisappearingMode                       `protobuf:"bytes,11,opt,name=disappearingMode" json:"disappearingMode,omitempty"`
+	RequestMediaUploadMessage              *RequestMediaUploadMessage              `protobuf:"bytes,12,opt,name=requestMediaUploadMessage" json:"requestMediaUploadMessage,omitempty"`
+	RequestMediaUploadResponseMessage      *RequestMediaUploadResponseMessage      `protobuf:"bytes,13,opt,name=requestMediaUploadResponseMessage" json:"requestMediaUploadResponseMessage,omitempty"`
 }
 
-func (x *TemplateButton) Reset() {
-	*x = TemplateButton{}
+func (x *ProtocolMessage) Reset() {
+	*x = ProtocolMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[86]
+		mi := &file_binary_proto_def_proto_msgTypes[71]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *TemplateButton) String() string {
+func (x *ProtocolMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*TemplateButton) ProtoMessage() {}
+func (*ProtocolMessage) ProtoMessage() {}
 
-func (x *TemplateButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[86]
+func (x *ProtocolMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[71]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10592,94 +10464,125 @@ func (x *TemplateButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use TemplateButton.ProtoReflect.Descriptor instead.
-func (*TemplateButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{86}
+// Deprecated: Use ProtocolMessage.ProtoReflect.Descriptor instead.
+func (*ProtocolMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{71}
 }
 
-func (x *TemplateButton) GetIndex() uint32 {
-	if x != nil && x.Index != nil {
-		return *x.Index
+func (x *ProtocolMessage) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
 	}
-	return 0
+	return nil
 }
 
-func (m *TemplateButton) GetButton() isTemplateButton_Button {
-	if m != nil {
-		return m.Button
+func (x *ProtocolMessage) GetType() ProtocolMessage_Type {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return nil
+	return ProtocolMessage_REVOKE
 }
 
-func (x *TemplateButton) GetQuickReplyButton() *QuickReplyButton {
-	if x, ok := x.GetButton().(*TemplateButton_QuickReplyButton); ok {
-		return x.QuickReplyButton
+func (x *ProtocolMessage) GetEphemeralExpiration() uint32 {
+	if x != nil && x.EphemeralExpiration != nil {
+		return *x.EphemeralExpiration
 	}
-	return nil
+	return 0
 }
 
-func (x *TemplateButton) GetUrlButton() *URLButton {
-	if x, ok := x.GetButton().(*TemplateButton_UrlButton); ok {
-		return x.UrlButton
+func (x *ProtocolMessage) GetEphemeralSettingTimestamp() int64 {
+	if x != nil && x.EphemeralSettingTimestamp != nil {
+		return *x.EphemeralSettingTimestamp
 	}
-	return nil
+	return 0
 }
 
-func (x *TemplateButton) GetCallButton() *CallButton {
-	if x, ok := x.GetButton().(*TemplateButton_CallButton); ok {
-		return x.CallButton
+func (x *ProtocolMessage) GetHistorySyncNotification() *HistorySyncNotification {
+	if x != nil {
+		return x.HistorySyncNotification
 	}
 	return nil
 }
 
-type isTemplateButton_Button interface {
-	isTemplateButton_Button()
+func (x *ProtocolMessage) GetAppStateSyncKeyShare() *AppStateSyncKeyShare {
+	if x != nil {
+		return x.AppStateSyncKeyShare
+	}
+	return nil
 }
 
-type TemplateButton_QuickReplyButton struct {
-	QuickReplyButton *QuickReplyButton `protobuf:"bytes,1,opt,name=quickReplyButton,oneof"`
+func (x *ProtocolMessage) GetAppStateSyncKeyRequest() *AppStateSyncKeyRequest {
+	if x != nil {
+		return x.AppStateSyncKeyRequest
+	}
+	return nil
 }
 
-type TemplateButton_UrlButton struct {
-	UrlButton *URLButton `protobuf:"bytes,2,opt,name=urlButton,oneof"`
+func (x *ProtocolMessage) GetInitialSecurityNotificationSettingSync() *InitialSecurityNotificationSettingSync {
+	if x != nil {
+		return x.InitialSecurityNotificationSettingSync
+	}
+	return nil
 }
 
-type TemplateButton_CallButton struct {
-	CallButton *CallButton `protobuf:"bytes,3,opt,name=callButton,oneof"`
+func (x *ProtocolMessage) GetAppStateFatalExceptionNotification() *AppStateFatalExceptionNotification {
+	if x != nil {
+		return x.AppStateFatalExceptionNotification
+	}
+	return nil
 }
 
-func (*TemplateButton_QuickReplyButton) isTemplateButton_Button() {}
+func (x *ProtocolMessage) GetDisappearingMode() *DisappearingMode {
+	if x != nil {
+		return x.DisappearingMode
+	}
+	return nil
+}
 
-func (*TemplateButton_UrlButton) isTemplateButton_Button() {}
+func (x *ProtocolMessage) GetRequestMediaUploadMessage() *RequestMediaUploadMessage {
+	if x != nil {
+		return x.RequestMediaUploadMessage
+	}
+	return nil
+}
 
-func (*TemplateButton_CallButton) isTemplateButton_Button() {}
+func (x *ProtocolMessage) GetRequestMediaUploadResponseMessage() *RequestMediaUploadResponseMessage {
+	if x != nil {
+		return x.RequestMediaUploadResponseMessage
+	}
+	return nil
+}
 
-type URLButton struct {
+type ProductMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
-	Url         *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
+	Product          *ProductMessage_ProductSnapshot `protobuf:"bytes,1,opt,name=product" json:"product,omitempty"`
+	BusinessOwnerJid *string                         `protobuf:"bytes,2,opt,name=businessOwnerJid" json:"businessOwnerJid,omitempty"`
+	Catalog          *ProductMessage_CatalogSnapshot `protobuf:"bytes,4,opt,name=catalog" json:"catalog,omitempty"`
+	Body             *string                         `protobuf:"bytes,5,opt,name=body" json:"body,omitempty"`
+	Footer           *string                         `protobuf:"bytes,6,opt,name=footer" json:"footer,omitempty"`
+	ContextInfo      *ContextInfo                    `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
 }
 
-func (x *URLButton) Reset() {
-	*x = URLButton{}
+func (x *ProductMessage) Reset() {
+	*x = ProductMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[87]
+		mi := &file_binary_proto_def_proto_msgTypes[72]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *URLButton) String() string {
+func (x *ProductMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*URLButton) ProtoMessage() {}
+func (*ProductMessage) ProtoMessage() {}
 
-func (x *URLButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[87]
+func (x *ProductMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[72]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10690,51 +10593,79 @@ func (x *URLButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use URLButton.ProtoReflect.Descriptor instead.
-func (*URLButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{87}
+// Deprecated: Use ProductMessage.ProtoReflect.Descriptor instead.
+func (*ProductMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{72}
 }
 
-func (x *URLButton) GetDisplayText() *HighlyStructuredMessage {
+func (x *ProductMessage) GetProduct() *ProductMessage_ProductSnapshot {
 	if x != nil {
-		return x.DisplayText
+		return x.Product
 	}
 	return nil
 }
 
-func (x *URLButton) GetUrl() *HighlyStructuredMessage {
+func (x *ProductMessage) GetBusinessOwnerJid() string {
+	if x != nil && x.BusinessOwnerJid != nil {
+		return *x.BusinessOwnerJid
+	}
+	return ""
+}
+
+func (x *ProductMessage) GetCatalog() *ProductMessage_CatalogSnapshot {
 	if x != nil {
-		return x.Url
+		return x.Catalog
+	}
+	return nil
+}
+
+func (x *ProductMessage) GetBody() string {
+	if x != nil && x.Body != nil {
+		return *x.Body
+	}
+	return ""
+}
+
+func (x *ProductMessage) GetFooter() string {
+	if x != nil && x.Footer != nil {
+		return *x.Footer
+	}
+	return ""
+}
+
+func (x *ProductMessage) GetContextInfo() *ContextInfo {
+	if x != nil {
+		return x.ContextInfo
 	}
 	return nil
 }
 
-type QuickReplyButton struct {
+type EphemeralSetting struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
-	Id          *string                  `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
+	Duration  *int32 `protobuf:"fixed32,1,opt,name=duration" json:"duration,omitempty"`
+	Timestamp *int64 `protobuf:"fixed64,2,opt,name=timestamp" json:"timestamp,omitempty"`
 }
 
-func (x *QuickReplyButton) Reset() {
-	*x = QuickReplyButton{}
+func (x *EphemeralSetting) Reset() {
+	*x = EphemeralSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[88]
+		mi := &file_binary_proto_def_proto_msgTypes[73]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *QuickReplyButton) String() string {
+func (x *EphemeralSetting) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*QuickReplyButton) ProtoMessage() {}
+func (*EphemeralSetting) ProtoMessage() {}
 
-func (x *QuickReplyButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[88]
+func (x *EphemeralSetting) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[73]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10745,51 +10676,51 @@ func (x *QuickReplyButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use QuickReplyButton.ProtoReflect.Descriptor instead.
-func (*QuickReplyButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{88}
+// Deprecated: Use EphemeralSetting.ProtoReflect.Descriptor instead.
+func (*EphemeralSetting) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{73}
 }
 
-func (x *QuickReplyButton) GetDisplayText() *HighlyStructuredMessage {
-	if x != nil {
-		return x.DisplayText
+func (x *EphemeralSetting) GetDuration() int32 {
+	if x != nil && x.Duration != nil {
+		return *x.Duration
 	}
-	return nil
+	return 0
 }
 
-func (x *QuickReplyButton) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
+func (x *EphemeralSetting) GetTimestamp() int64 {
+	if x != nil && x.Timestamp != nil {
+		return *x.Timestamp
 	}
-	return ""
+	return 0
 }
 
-type CallButton struct {
+type WallpaperSettings struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
-	PhoneNumber *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=phoneNumber" json:"phoneNumber,omitempty"`
+	Filename *string `protobuf:"bytes,1,opt,name=filename" json:"filename,omitempty"`
+	Opacity  *uint32 `protobuf:"varint,2,opt,name=opacity" json:"opacity,omitempty"`
 }
 
-func (x *CallButton) Reset() {
-	*x = CallButton{}
+func (x *WallpaperSettings) Reset() {
+	*x = WallpaperSettings{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[89]
+		mi := &file_binary_proto_def_proto_msgTypes[74]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *CallButton) String() string {
+func (x *WallpaperSettings) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*CallButton) ProtoMessage() {}
+func (*WallpaperSettings) ProtoMessage() {}
 
-func (x *CallButton) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[89]
+func (x *WallpaperSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[74]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10800,53 +10731,59 @@ func (x *CallButton) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use CallButton.ProtoReflect.Descriptor instead.
-func (*CallButton) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{89}
+// Deprecated: Use WallpaperSettings.ProtoReflect.Descriptor instead.
+func (*WallpaperSettings) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{74}
 }
 
-func (x *CallButton) GetDisplayText() *HighlyStructuredMessage {
-	if x != nil {
-		return x.DisplayText
+func (x *WallpaperSettings) GetFilename() string {
+	if x != nil && x.Filename != nil {
+		return *x.Filename
 	}
-	return nil
+	return ""
 }
 
-func (x *CallButton) GetPhoneNumber() *HighlyStructuredMessage {
-	if x != nil {
-		return x.PhoneNumber
+func (x *WallpaperSettings) GetOpacity() uint32 {
+	if x != nil && x.Opacity != nil {
+		return *x.Opacity
 	}
-	return nil
+	return 0
 }
 
-type Point struct {
+type StickerMetadata struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	XDeprecated *int32   `protobuf:"varint,1,opt,name=xDeprecated" json:"xDeprecated,omitempty"`
-	YDeprecated *int32   `protobuf:"varint,2,opt,name=yDeprecated" json:"yDeprecated,omitempty"`
-	X           *float64 `protobuf:"fixed64,3,opt,name=x" json:"x,omitempty"`
-	Y           *float64 `protobuf:"fixed64,4,opt,name=y" json:"y,omitempty"`
+	Url           *string  `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	FileSha256    []byte   `protobuf:"bytes,2,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileEncSha256 []byte   `protobuf:"bytes,3,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	MediaKey      []byte   `protobuf:"bytes,4,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	Mimetype      *string  `protobuf:"bytes,5,opt,name=mimetype" json:"mimetype,omitempty"`
+	Height        *uint32  `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
+	Width         *uint32  `protobuf:"varint,7,opt,name=width" json:"width,omitempty"`
+	DirectPath    *string  `protobuf:"bytes,8,opt,name=directPath" json:"directPath,omitempty"`
+	FileLength    *uint64  `protobuf:"varint,9,opt,name=fileLength" json:"fileLength,omitempty"`
+	Weight        *float32 `protobuf:"fixed32,10,opt,name=weight" json:"weight,omitempty"`
 }
 
-func (x *Point) Reset() {
-	*x = Point{}
+func (x *StickerMetadata) Reset() {
+	*x = StickerMetadata{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[90]
+		mi := &file_binary_proto_def_proto_msgTypes[75]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Point) String() string {
+func (x *StickerMetadata) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Point) ProtoMessage() {}
+func (*StickerMetadata) ProtoMessage() {}
 
-func (x *Point) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[90]
+func (x *StickerMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[75]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10857,73 +10794,107 @@ func (x *Point) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Point.ProtoReflect.Descriptor instead.
-func (*Point) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{90}
+// Deprecated: Use StickerMetadata.ProtoReflect.Descriptor instead.
+func (*StickerMetadata) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{75}
 }
 
-func (x *Point) GetXDeprecated() int32 {
-	if x != nil && x.XDeprecated != nil {
-		return *x.XDeprecated
+func (x *StickerMetadata) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
+	}
+	return ""
+}
+
+func (x *StickerMetadata) GetFileSha256() []byte {
+	if x != nil {
+		return x.FileSha256
+	}
+	return nil
+}
+
+func (x *StickerMetadata) GetFileEncSha256() []byte {
+	if x != nil {
+		return x.FileEncSha256
+	}
+	return nil
+}
+
+func (x *StickerMetadata) GetMediaKey() []byte {
+	if x != nil {
+		return x.MediaKey
+	}
+	return nil
+}
+
+func (x *StickerMetadata) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
+	}
+	return ""
+}
+
+func (x *StickerMetadata) GetHeight() uint32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
 	return 0
 }
 
-func (x *Point) GetYDeprecated() int32 {
-	if x != nil && x.YDeprecated != nil {
-		return *x.YDeprecated
+func (x *StickerMetadata) GetWidth() uint32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
 	}
 	return 0
 }
 
-func (x *Point) GetX() float64 {
-	if x != nil && x.X != nil {
-		return *x.X
+func (x *StickerMetadata) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
+	}
+	return ""
+}
+
+func (x *StickerMetadata) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
 	}
 	return 0
 }
 
-func (x *Point) GetY() float64 {
-	if x != nil && x.Y != nil {
-		return *x.Y
+func (x *StickerMetadata) GetWeight() float32 {
+	if x != nil && x.Weight != nil {
+		return *x.Weight
 	}
 	return 0
 }
 
-type PaymentBackground struct {
+type Pushname struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Id              *string                                  `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
-	FileLength      *uint64                                  `protobuf:"varint,2,opt,name=fileLength" json:"fileLength,omitempty"`
-	Width           *uint32                                  `protobuf:"varint,3,opt,name=width" json:"width,omitempty"`
-	Height          *uint32                                  `protobuf:"varint,4,opt,name=height" json:"height,omitempty"`
-	Mimetype        *string                                  `protobuf:"bytes,5,opt,name=mimetype" json:"mimetype,omitempty"`
-	PlaceholderArgb *uint32                                  `protobuf:"fixed32,6,opt,name=placeholderArgb" json:"placeholderArgb,omitempty"`
-	TextArgb        *uint32                                  `protobuf:"fixed32,7,opt,name=textArgb" json:"textArgb,omitempty"`
-	SubtextArgb     *uint32                                  `protobuf:"fixed32,8,opt,name=subtextArgb" json:"subtextArgb,omitempty"`
-	MediaData       *PBMediaData                             `protobuf:"bytes,9,opt,name=mediaData" json:"mediaData,omitempty"`
-	Type            *PaymentBackground_PaymentBackgroundType `protobuf:"varint,10,opt,name=type,enum=proto.PaymentBackground_PaymentBackgroundType" json:"type,omitempty"`
+	Id       *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
+	Pushname *string `protobuf:"bytes,2,opt,name=pushname" json:"pushname,omitempty"`
 }
 
-func (x *PaymentBackground) Reset() {
-	*x = PaymentBackground{}
+func (x *Pushname) Reset() {
+	*x = Pushname{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[91]
+		mi := &file_binary_proto_def_proto_msgTypes[76]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *PaymentBackground) String() string {
+func (x *Pushname) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PaymentBackground) ProtoMessage() {}
+func (*Pushname) ProtoMessage() {}
 
-func (x *PaymentBackground) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[91]
+func (x *Pushname) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[76]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -10934,111 +10905,51 @@ func (x *PaymentBackground) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PaymentBackground.ProtoReflect.Descriptor instead.
-func (*PaymentBackground) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{91}
+// Deprecated: Use Pushname.ProtoReflect.Descriptor instead.
+func (*Pushname) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{76}
 }
 
-func (x *PaymentBackground) GetId() string {
+func (x *Pushname) GetId() string {
 	if x != nil && x.Id != nil {
 		return *x.Id
 	}
 	return ""
 }
 
-func (x *PaymentBackground) GetFileLength() uint64 {
-	if x != nil && x.FileLength != nil {
-		return *x.FileLength
-	}
-	return 0
-}
-
-func (x *PaymentBackground) GetWidth() uint32 {
-	if x != nil && x.Width != nil {
-		return *x.Width
-	}
-	return 0
-}
-
-func (x *PaymentBackground) GetHeight() uint32 {
-	if x != nil && x.Height != nil {
-		return *x.Height
-	}
-	return 0
-}
-
-func (x *PaymentBackground) GetMimetype() string {
-	if x != nil && x.Mimetype != nil {
-		return *x.Mimetype
+func (x *Pushname) GetPushname() string {
+	if x != nil && x.Pushname != nil {
+		return *x.Pushname
 	}
 	return ""
 }
 
-func (x *PaymentBackground) GetPlaceholderArgb() uint32 {
-	if x != nil && x.PlaceholderArgb != nil {
-		return *x.PlaceholderArgb
-	}
-	return 0
-}
-
-func (x *PaymentBackground) GetTextArgb() uint32 {
-	if x != nil && x.TextArgb != nil {
-		return *x.TextArgb
-	}
-	return 0
-}
-
-func (x *PaymentBackground) GetSubtextArgb() uint32 {
-	if x != nil && x.SubtextArgb != nil {
-		return *x.SubtextArgb
-	}
-	return 0
-}
-
-func (x *PaymentBackground) GetMediaData() *PBMediaData {
-	if x != nil {
-		return x.MediaData
-	}
-	return nil
-}
-
-func (x *PaymentBackground) GetType() PaymentBackground_PaymentBackgroundType {
-	if x != nil && x.Type != nil {
-		return *x.Type
-	}
-	return PaymentBackground_UNKNOWN
-}
-
-// Renamed from PaymentBackground$MediaData
-type PBMediaData struct {
+type PastParticipants struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	MediaKey          []byte  `protobuf:"bytes,1,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	MediaKeyTimestamp *int64  `protobuf:"varint,2,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	FileSha256        []byte  `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileEncSha256     []byte  `protobuf:"bytes,4,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
-	DirectPath        *string `protobuf:"bytes,5,opt,name=directPath" json:"directPath,omitempty"`
+	GroupJid         *string            `protobuf:"bytes,1,req,name=groupJid" json:"groupJid,omitempty"`
+	PastParticipants []*PastParticipant `protobuf:"bytes,2,rep,name=pastParticipants" json:"pastParticipants,omitempty"`
 }
 
-func (x *PBMediaData) Reset() {
-	*x = PBMediaData{}
+func (x *PastParticipants) Reset() {
+	*x = PastParticipants{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[92]
+		mi := &file_binary_proto_def_proto_msgTypes[77]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *PBMediaData) String() string {
+func (x *PastParticipants) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PBMediaData) ProtoMessage() {}
+func (*PastParticipants) ProtoMessage() {}
 
-func (x *PBMediaData) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[92]
+func (x *PastParticipants) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[77]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -11049,73 +10960,52 @@ func (x *PBMediaData) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PBMediaData.ProtoReflect.Descriptor instead.
-func (*PBMediaData) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{92}
-}
-
-func (x *PBMediaData) GetMediaKey() []byte {
-	if x != nil {
-		return x.MediaKey
-	}
-	return nil
-}
-
-func (x *PBMediaData) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
-	}
-	return 0
+// Deprecated: Use PastParticipants.ProtoReflect.Descriptor instead.
+func (*PastParticipants) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{77}
 }
 
-func (x *PBMediaData) GetFileSha256() []byte {
-	if x != nil {
-		return x.FileSha256
+func (x *PastParticipants) GetGroupJid() string {
+	if x != nil && x.GroupJid != nil {
+		return *x.GroupJid
 	}
-	return nil
+	return ""
 }
 
-func (x *PBMediaData) GetFileEncSha256() []byte {
+func (x *PastParticipants) GetPastParticipants() []*PastParticipant {
 	if x != nil {
-		return x.FileEncSha256
+		return x.PastParticipants
 	}
 	return nil
 }
 
-func (x *PBMediaData) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
-	}
-	return ""
-}
-
-type Money struct {
+type PastParticipant struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Value        *int64  `protobuf:"varint,1,opt,name=value" json:"value,omitempty"`
-	Offset       *uint32 `protobuf:"varint,2,opt,name=offset" json:"offset,omitempty"`
-	CurrencyCode *string `protobuf:"bytes,3,opt,name=currencyCode" json:"currencyCode,omitempty"`
+	UserJid     *string                      `protobuf:"bytes,1,req,name=userJid" json:"userJid,omitempty"`
+	LeaveReason *PastParticipant_LeaveReason `protobuf:"varint,2,req,name=leaveReason,enum=proto.PastParticipant_LeaveReason" json:"leaveReason,omitempty"`
+	LeaveTs     *uint64                      `protobuf:"varint,3,req,name=leaveTs" json:"leaveTs,omitempty"`
 }
 
-func (x *Money) Reset() {
-	*x = Money{}
+func (x *PastParticipant) Reset() {
+	*x = PastParticipant{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[93]
+		mi := &file_binary_proto_def_proto_msgTypes[78]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Money) String() string {
+func (x *PastParticipant) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Money) ProtoMessage() {}
+func (*PastParticipant) ProtoMessage() {}
 
-func (x *Money) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[93]
+func (x *PastParticipant) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[78]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -11126,99 +11016,67 @@ func (x *Money) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Money.ProtoReflect.Descriptor instead.
-func (*Money) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{93}
+// Deprecated: Use PastParticipant.ProtoReflect.Descriptor instead.
+func (*PastParticipant) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{78}
 }
 
-func (x *Money) GetValue() int64 {
-	if x != nil && x.Value != nil {
-		return *x.Value
+func (x *PastParticipant) GetUserJid() string {
+	if x != nil && x.UserJid != nil {
+		return *x.UserJid
 	}
-	return 0
+	return ""
 }
 
-func (x *Money) GetOffset() uint32 {
-	if x != nil && x.Offset != nil {
-		return *x.Offset
+func (x *PastParticipant) GetLeaveReason() PastParticipant_LeaveReason {
+	if x != nil && x.LeaveReason != nil {
+		return *x.LeaveReason
 	}
-	return 0
+	return PastParticipant_LEFT
 }
 
-func (x *Money) GetCurrencyCode() string {
-	if x != nil && x.CurrencyCode != nil {
-		return *x.CurrencyCode
+func (x *PastParticipant) GetLeaveTs() uint64 {
+	if x != nil && x.LeaveTs != nil {
+		return *x.LeaveTs
 	}
-	return ""
+	return 0
 }
 
-type Message struct {
+type HistorySync struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Conversation                               *string                       `protobuf:"bytes,1,opt,name=conversation" json:"conversation,omitempty"`
-	SenderKeyDistributionMessage               *SenderKeyDistributionMessage `protobuf:"bytes,2,opt,name=senderKeyDistributionMessage" json:"senderKeyDistributionMessage,omitempty"`
-	ImageMessage                               *ImageMessage                 `protobuf:"bytes,3,opt,name=imageMessage" json:"imageMessage,omitempty"`
-	ContactMessage                             *ContactMessage               `protobuf:"bytes,4,opt,name=contactMessage" json:"contactMessage,omitempty"`
-	LocationMessage                            *LocationMessage              `protobuf:"bytes,5,opt,name=locationMessage" json:"locationMessage,omitempty"`
-	ExtendedTextMessage                        *ExtendedTextMessage          `protobuf:"bytes,6,opt,name=extendedTextMessage" json:"extendedTextMessage,omitempty"`
-	DocumentMessage                            *DocumentMessage              `protobuf:"bytes,7,opt,name=documentMessage" json:"documentMessage,omitempty"`
-	AudioMessage                               *AudioMessage                 `protobuf:"bytes,8,opt,name=audioMessage" json:"audioMessage,omitempty"`
-	VideoMessage                               *VideoMessage                 `protobuf:"bytes,9,opt,name=videoMessage" json:"videoMessage,omitempty"`
-	Call                                       *Call                         `protobuf:"bytes,10,opt,name=call" json:"call,omitempty"`
-	Chat                                       *Chat                         `protobuf:"bytes,11,opt,name=chat" json:"chat,omitempty"`
-	ProtocolMessage                            *ProtocolMessage              `protobuf:"bytes,12,opt,name=protocolMessage" json:"protocolMessage,omitempty"`
-	ContactsArrayMessage                       *ContactsArrayMessage         `protobuf:"bytes,13,opt,name=contactsArrayMessage" json:"contactsArrayMessage,omitempty"`
-	HighlyStructuredMessage                    *HighlyStructuredMessage      `protobuf:"bytes,14,opt,name=highlyStructuredMessage" json:"highlyStructuredMessage,omitempty"`
-	FastRatchetKeySenderKeyDistributionMessage *SenderKeyDistributionMessage `protobuf:"bytes,15,opt,name=fastRatchetKeySenderKeyDistributionMessage" json:"fastRatchetKeySenderKeyDistributionMessage,omitempty"`
-	SendPaymentMessage                         *SendPaymentMessage           `protobuf:"bytes,16,opt,name=sendPaymentMessage" json:"sendPaymentMessage,omitempty"`
-	LiveLocationMessage                        *LiveLocationMessage          `protobuf:"bytes,18,opt,name=liveLocationMessage" json:"liveLocationMessage,omitempty"`
-	RequestPaymentMessage                      *RequestPaymentMessage        `protobuf:"bytes,22,opt,name=requestPaymentMessage" json:"requestPaymentMessage,omitempty"`
-	DeclinePaymentRequestMessage               *DeclinePaymentRequestMessage `protobuf:"bytes,23,opt,name=declinePaymentRequestMessage" json:"declinePaymentRequestMessage,omitempty"`
-	CancelPaymentRequestMessage                *CancelPaymentRequestMessage  `protobuf:"bytes,24,opt,name=cancelPaymentRequestMessage" json:"cancelPaymentRequestMessage,omitempty"`
-	TemplateMessage                            *TemplateMessage              `protobuf:"bytes,25,opt,name=templateMessage" json:"templateMessage,omitempty"`
-	StickerMessage                             *StickerMessage               `protobuf:"bytes,26,opt,name=stickerMessage" json:"stickerMessage,omitempty"`
-	GroupInviteMessage                         *GroupInviteMessage           `protobuf:"bytes,28,opt,name=groupInviteMessage" json:"groupInviteMessage,omitempty"`
-	TemplateButtonReplyMessage                 *TemplateButtonReplyMessage   `protobuf:"bytes,29,opt,name=templateButtonReplyMessage" json:"templateButtonReplyMessage,omitempty"`
-	ProductMessage                             *ProductMessage               `protobuf:"bytes,30,opt,name=productMessage" json:"productMessage,omitempty"`
-	DeviceSentMessage                          *DeviceSentMessage            `protobuf:"bytes,31,opt,name=deviceSentMessage" json:"deviceSentMessage,omitempty"`
-	MessageContextInfo                         *MessageContextInfo           `protobuf:"bytes,35,opt,name=messageContextInfo" json:"messageContextInfo,omitempty"`
-	ListMessage                                *ListMessage                  `protobuf:"bytes,36,opt,name=listMessage" json:"listMessage,omitempty"`
-	ViewOnceMessage                            *FutureProofMessage           `protobuf:"bytes,37,opt,name=viewOnceMessage" json:"viewOnceMessage,omitempty"`
-	OrderMessage                               *OrderMessage                 `protobuf:"bytes,38,opt,name=orderMessage" json:"orderMessage,omitempty"`
-	ListResponseMessage                        *ListResponseMessage          `protobuf:"bytes,39,opt,name=listResponseMessage" json:"listResponseMessage,omitempty"`
-	EphemeralMessage                           *FutureProofMessage           `protobuf:"bytes,40,opt,name=ephemeralMessage" json:"ephemeralMessage,omitempty"`
-	InvoiceMessage                             *InvoiceMessage               `protobuf:"bytes,41,opt,name=invoiceMessage" json:"invoiceMessage,omitempty"`
-	ButtonsMessage                             *ButtonsMessage               `protobuf:"bytes,42,opt,name=buttonsMessage" json:"buttonsMessage,omitempty"`
-	ButtonsResponseMessage                     *ButtonsResponseMessage       `protobuf:"bytes,43,opt,name=buttonsResponseMessage" json:"buttonsResponseMessage,omitempty"`
-	PaymentInviteMessage                       *PaymentInviteMessage         `protobuf:"bytes,44,opt,name=paymentInviteMessage" json:"paymentInviteMessage,omitempty"`
-	InteractiveMessage                         *InteractiveMessage           `protobuf:"bytes,45,opt,name=interactiveMessage" json:"interactiveMessage,omitempty"`
-	ReactionMessage                            *ReactionMessage              `protobuf:"bytes,46,opt,name=reactionMessage" json:"reactionMessage,omitempty"`
-	StickerSyncRmrMessage                      *StickerSyncRMRMessage        `protobuf:"bytes,47,opt,name=stickerSyncRmrMessage" json:"stickerSyncRmrMessage,omitempty"`
-	InteractiveResponseMessage                 *InteractiveResponseMessage   `protobuf:"bytes,48,opt,name=interactiveResponseMessage" json:"interactiveResponseMessage,omitempty"`
-	PollCreationMessage                        *PollCreationMessage          `protobuf:"bytes,49,opt,name=pollCreationMessage" json:"pollCreationMessage,omitempty"`
-	PollUpdateMessage                          *PollUpdateMessage            `protobuf:"bytes,50,opt,name=pollUpdateMessage" json:"pollUpdateMessage,omitempty"`
-	KeepInChatMessage                          *KeepInChatMessage            `protobuf:"bytes,51,opt,name=keepInChatMessage" json:"keepInChatMessage,omitempty"`
+	SyncType                *HistorySync_HistorySyncType `protobuf:"varint,1,req,name=syncType,enum=proto.HistorySync_HistorySyncType" json:"syncType,omitempty"`
+	Conversations           []*Conversation              `protobuf:"bytes,2,rep,name=conversations" json:"conversations,omitempty"`
+	StatusV3Messages        []*WebMessageInfo            `protobuf:"bytes,3,rep,name=statusV3Messages" json:"statusV3Messages,omitempty"`
+	ChunkOrder              *uint32                      `protobuf:"varint,5,opt,name=chunkOrder" json:"chunkOrder,omitempty"`
+	Progress                *uint32                      `protobuf:"varint,6,opt,name=progress" json:"progress,omitempty"`
+	Pushnames               []*Pushname                  `protobuf:"bytes,7,rep,name=pushnames" json:"pushnames,omitempty"`
+	GlobalSettings          *GlobalSettings              `protobuf:"bytes,8,opt,name=globalSettings" json:"globalSettings,omitempty"`
+	ThreadIdUserSecret      []byte                       `protobuf:"bytes,9,opt,name=threadIdUserSecret" json:"threadIdUserSecret,omitempty"`
+	ThreadDsTimeframeOffset *uint32                      `protobuf:"varint,10,opt,name=threadDsTimeframeOffset" json:"threadDsTimeframeOffset,omitempty"`
+	RecentStickers          []*StickerMetadata           `protobuf:"bytes,11,rep,name=recentStickers" json:"recentStickers,omitempty"`
+	PastParticipants        []*PastParticipants          `protobuf:"bytes,12,rep,name=pastParticipants" json:"pastParticipants,omitempty"`
 }
 
-func (x *Message) Reset() {
-	*x = Message{}
+func (x *HistorySync) Reset() {
+	*x = HistorySync{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[94]
+		mi := &file_binary_proto_def_proto_msgTypes[79]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Message) String() string {
+func (x *HistorySync) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Message) ProtoMessage() {}
+func (*HistorySync) ProtoMessage() {}
 
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[94]
+func (x *HistorySync) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[79]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -11229,340 +11087,381 @@ func (x *Message) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{94}
+// Deprecated: Use HistorySync.ProtoReflect.Descriptor instead.
+func (*HistorySync) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{79}
 }
 
-func (x *Message) GetConversation() string {
-	if x != nil && x.Conversation != nil {
-		return *x.Conversation
+func (x *HistorySync) GetSyncType() HistorySync_HistorySyncType {
+	if x != nil && x.SyncType != nil {
+		return *x.SyncType
 	}
-	return ""
+	return HistorySync_INITIAL_BOOTSTRAP
 }
 
-func (x *Message) GetSenderKeyDistributionMessage() *SenderKeyDistributionMessage {
+func (x *HistorySync) GetConversations() []*Conversation {
 	if x != nil {
-		return x.SenderKeyDistributionMessage
+		return x.Conversations
 	}
 	return nil
 }
 
-func (x *Message) GetImageMessage() *ImageMessage {
+func (x *HistorySync) GetStatusV3Messages() []*WebMessageInfo {
 	if x != nil {
-		return x.ImageMessage
+		return x.StatusV3Messages
 	}
 	return nil
 }
 
-func (x *Message) GetContactMessage() *ContactMessage {
-	if x != nil {
-		return x.ContactMessage
+func (x *HistorySync) GetChunkOrder() uint32 {
+	if x != nil && x.ChunkOrder != nil {
+		return *x.ChunkOrder
 	}
-	return nil
+	return 0
 }
 
-func (x *Message) GetLocationMessage() *LocationMessage {
-	if x != nil {
-		return x.LocationMessage
+func (x *HistorySync) GetProgress() uint32 {
+	if x != nil && x.Progress != nil {
+		return *x.Progress
 	}
-	return nil
+	return 0
 }
 
-func (x *Message) GetExtendedTextMessage() *ExtendedTextMessage {
+func (x *HistorySync) GetPushnames() []*Pushname {
 	if x != nil {
-		return x.ExtendedTextMessage
+		return x.Pushnames
 	}
 	return nil
 }
 
-func (x *Message) GetDocumentMessage() *DocumentMessage {
+func (x *HistorySync) GetGlobalSettings() *GlobalSettings {
 	if x != nil {
-		return x.DocumentMessage
+		return x.GlobalSettings
 	}
 	return nil
 }
 
-func (x *Message) GetAudioMessage() *AudioMessage {
+func (x *HistorySync) GetThreadIdUserSecret() []byte {
 	if x != nil {
-		return x.AudioMessage
+		return x.ThreadIdUserSecret
 	}
 	return nil
 }
 
-func (x *Message) GetVideoMessage() *VideoMessage {
-	if x != nil {
-		return x.VideoMessage
+func (x *HistorySync) GetThreadDsTimeframeOffset() uint32 {
+	if x != nil && x.ThreadDsTimeframeOffset != nil {
+		return *x.ThreadDsTimeframeOffset
 	}
-	return nil
+	return 0
 }
 
-func (x *Message) GetCall() *Call {
+func (x *HistorySync) GetRecentStickers() []*StickerMetadata {
 	if x != nil {
-		return x.Call
+		return x.RecentStickers
 	}
 	return nil
 }
 
-func (x *Message) GetChat() *Chat {
+func (x *HistorySync) GetPastParticipants() []*PastParticipants {
 	if x != nil {
-		return x.Chat
+		return x.PastParticipants
 	}
 	return nil
 }
 
-func (x *Message) GetProtocolMessage() *ProtocolMessage {
-	if x != nil {
-		return x.ProtocolMessage
-	}
-	return nil
-}
+type HistorySyncMsg struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *Message) GetContactsArrayMessage() *ContactsArrayMessage {
-	if x != nil {
-		return x.ContactsArrayMessage
-	}
-	return nil
+	Message    *WebMessageInfo `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
+	MsgOrderId *uint64         `protobuf:"varint,2,opt,name=msgOrderId" json:"msgOrderId,omitempty"`
 }
 
-func (x *Message) GetHighlyStructuredMessage() *HighlyStructuredMessage {
-	if x != nil {
-		return x.HighlyStructuredMessage
+func (x *HistorySyncMsg) Reset() {
+	*x = HistorySyncMsg{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[80]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *Message) GetFastRatchetKeySenderKeyDistributionMessage() *SenderKeyDistributionMessage {
-	if x != nil {
-		return x.FastRatchetKeySenderKeyDistributionMessage
-	}
-	return nil
+func (x *HistorySyncMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *Message) GetSendPaymentMessage() *SendPaymentMessage {
-	if x != nil {
-		return x.SendPaymentMessage
+func (*HistorySyncMsg) ProtoMessage() {}
+
+func (x *HistorySyncMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[80]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *Message) GetLiveLocationMessage() *LiveLocationMessage {
-	if x != nil {
-		return x.LiveLocationMessage
-	}
-	return nil
+// Deprecated: Use HistorySyncMsg.ProtoReflect.Descriptor instead.
+func (*HistorySyncMsg) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{80}
 }
 
-func (x *Message) GetRequestPaymentMessage() *RequestPaymentMessage {
+func (x *HistorySyncMsg) GetMessage() *WebMessageInfo {
 	if x != nil {
-		return x.RequestPaymentMessage
+		return x.Message
 	}
 	return nil
 }
 
-func (x *Message) GetDeclinePaymentRequestMessage() *DeclinePaymentRequestMessage {
-	if x != nil {
-		return x.DeclinePaymentRequestMessage
+func (x *HistorySyncMsg) GetMsgOrderId() uint64 {
+	if x != nil && x.MsgOrderId != nil {
+		return *x.MsgOrderId
 	}
-	return nil
+	return 0
 }
 
-func (x *Message) GetCancelPaymentRequestMessage() *CancelPaymentRequestMessage {
-	if x != nil {
-		return x.CancelPaymentRequestMessage
-	}
-	return nil
+type GroupParticipant struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UserJid *string                `protobuf:"bytes,1,req,name=userJid" json:"userJid,omitempty"`
+	Rank    *GroupParticipant_Rank `protobuf:"varint,2,opt,name=rank,enum=proto.GroupParticipant_Rank" json:"rank,omitempty"`
 }
 
-func (x *Message) GetTemplateMessage() *TemplateMessage {
-	if x != nil {
-		return x.TemplateMessage
+func (x *GroupParticipant) Reset() {
+	*x = GroupParticipant{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[81]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *Message) GetStickerMessage() *StickerMessage {
-	if x != nil {
-		return x.StickerMessage
-	}
-	return nil
+func (x *GroupParticipant) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *Message) GetGroupInviteMessage() *GroupInviteMessage {
-	if x != nil {
-		return x.GroupInviteMessage
+func (*GroupParticipant) ProtoMessage() {}
+
+func (x *GroupParticipant) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[81]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *Message) GetTemplateButtonReplyMessage() *TemplateButtonReplyMessage {
-	if x != nil {
-		return x.TemplateButtonReplyMessage
-	}
-	return nil
+// Deprecated: Use GroupParticipant.ProtoReflect.Descriptor instead.
+func (*GroupParticipant) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{81}
 }
 
-func (x *Message) GetProductMessage() *ProductMessage {
-	if x != nil {
-		return x.ProductMessage
+func (x *GroupParticipant) GetUserJid() string {
+	if x != nil && x.UserJid != nil {
+		return *x.UserJid
 	}
-	return nil
+	return ""
 }
 
-func (x *Message) GetDeviceSentMessage() *DeviceSentMessage {
-	if x != nil {
-		return x.DeviceSentMessage
+func (x *GroupParticipant) GetRank() GroupParticipant_Rank {
+	if x != nil && x.Rank != nil {
+		return *x.Rank
 	}
-	return nil
+	return GroupParticipant_REGULAR
 }
 
-func (x *Message) GetMessageContextInfo() *MessageContextInfo {
-	if x != nil {
-		return x.MessageContextInfo
-	}
-	return nil
+type GlobalSettings struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	LightThemeWallpaper                *WallpaperSettings    `protobuf:"bytes,1,opt,name=lightThemeWallpaper" json:"lightThemeWallpaper,omitempty"`
+	MediaVisibility                    *MediaVisibility      `protobuf:"varint,2,opt,name=mediaVisibility,enum=proto.MediaVisibility" json:"mediaVisibility,omitempty"`
+	DarkThemeWallpaper                 *WallpaperSettings    `protobuf:"bytes,3,opt,name=darkThemeWallpaper" json:"darkThemeWallpaper,omitempty"`
+	AutoDownloadWiFi                   *AutoDownloadSettings `protobuf:"bytes,4,opt,name=autoDownloadWiFi" json:"autoDownloadWiFi,omitempty"`
+	AutoDownloadCellular               *AutoDownloadSettings `protobuf:"bytes,5,opt,name=autoDownloadCellular" json:"autoDownloadCellular,omitempty"`
+	AutoDownloadRoaming                *AutoDownloadSettings `protobuf:"bytes,6,opt,name=autoDownloadRoaming" json:"autoDownloadRoaming,omitempty"`
+	ShowIndividualNotificationsPreview *bool                 `protobuf:"varint,7,opt,name=showIndividualNotificationsPreview" json:"showIndividualNotificationsPreview,omitempty"`
+	ShowGroupNotificationsPreview      *bool                 `protobuf:"varint,8,opt,name=showGroupNotificationsPreview" json:"showGroupNotificationsPreview,omitempty"`
+	DisappearingModeDuration           *int32                `protobuf:"varint,9,opt,name=disappearingModeDuration" json:"disappearingModeDuration,omitempty"`
+	DisappearingModeTimestamp          *int64                `protobuf:"varint,10,opt,name=disappearingModeTimestamp" json:"disappearingModeTimestamp,omitempty"`
 }
 
-func (x *Message) GetListMessage() *ListMessage {
-	if x != nil {
-		return x.ListMessage
+func (x *GlobalSettings) Reset() {
+	*x = GlobalSettings{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[82]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *Message) GetViewOnceMessage() *FutureProofMessage {
-	if x != nil {
-		return x.ViewOnceMessage
-	}
-	return nil
+func (x *GlobalSettings) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *Message) GetOrderMessage() *OrderMessage {
-	if x != nil {
-		return x.OrderMessage
+func (*GlobalSettings) ProtoMessage() {}
+
+func (x *GlobalSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[82]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *Message) GetListResponseMessage() *ListResponseMessage {
-	if x != nil {
-		return x.ListResponseMessage
-	}
-	return nil
+// Deprecated: Use GlobalSettings.ProtoReflect.Descriptor instead.
+func (*GlobalSettings) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{82}
 }
 
-func (x *Message) GetEphemeralMessage() *FutureProofMessage {
+func (x *GlobalSettings) GetLightThemeWallpaper() *WallpaperSettings {
 	if x != nil {
-		return x.EphemeralMessage
+		return x.LightThemeWallpaper
 	}
 	return nil
 }
 
-func (x *Message) GetInvoiceMessage() *InvoiceMessage {
-	if x != nil {
-		return x.InvoiceMessage
+func (x *GlobalSettings) GetMediaVisibility() MediaVisibility {
+	if x != nil && x.MediaVisibility != nil {
+		return *x.MediaVisibility
 	}
-	return nil
+	return MediaVisibility_DEFAULT
 }
 
-func (x *Message) GetButtonsMessage() *ButtonsMessage {
+func (x *GlobalSettings) GetDarkThemeWallpaper() *WallpaperSettings {
 	if x != nil {
-		return x.ButtonsMessage
+		return x.DarkThemeWallpaper
 	}
 	return nil
 }
 
-func (x *Message) GetButtonsResponseMessage() *ButtonsResponseMessage {
+func (x *GlobalSettings) GetAutoDownloadWiFi() *AutoDownloadSettings {
 	if x != nil {
-		return x.ButtonsResponseMessage
+		return x.AutoDownloadWiFi
 	}
 	return nil
 }
 
-func (x *Message) GetPaymentInviteMessage() *PaymentInviteMessage {
+func (x *GlobalSettings) GetAutoDownloadCellular() *AutoDownloadSettings {
 	if x != nil {
-		return x.PaymentInviteMessage
+		return x.AutoDownloadCellular
 	}
 	return nil
 }
 
-func (x *Message) GetInteractiveMessage() *InteractiveMessage {
+func (x *GlobalSettings) GetAutoDownloadRoaming() *AutoDownloadSettings {
 	if x != nil {
-		return x.InteractiveMessage
+		return x.AutoDownloadRoaming
 	}
 	return nil
 }
 
-func (x *Message) GetReactionMessage() *ReactionMessage {
-	if x != nil {
-		return x.ReactionMessage
+func (x *GlobalSettings) GetShowIndividualNotificationsPreview() bool {
+	if x != nil && x.ShowIndividualNotificationsPreview != nil {
+		return *x.ShowIndividualNotificationsPreview
 	}
-	return nil
+	return false
 }
 
-func (x *Message) GetStickerSyncRmrMessage() *StickerSyncRMRMessage {
-	if x != nil {
-		return x.StickerSyncRmrMessage
+func (x *GlobalSettings) GetShowGroupNotificationsPreview() bool {
+	if x != nil && x.ShowGroupNotificationsPreview != nil {
+		return *x.ShowGroupNotificationsPreview
 	}
-	return nil
+	return false
 }
 
-func (x *Message) GetInteractiveResponseMessage() *InteractiveResponseMessage {
-	if x != nil {
-		return x.InteractiveResponseMessage
+func (x *GlobalSettings) GetDisappearingModeDuration() int32 {
+	if x != nil && x.DisappearingModeDuration != nil {
+		return *x.DisappearingModeDuration
 	}
-	return nil
+	return 0
 }
 
-func (x *Message) GetPollCreationMessage() *PollCreationMessage {
-	if x != nil {
-		return x.PollCreationMessage
+func (x *GlobalSettings) GetDisappearingModeTimestamp() int64 {
+	if x != nil && x.DisappearingModeTimestamp != nil {
+		return *x.DisappearingModeTimestamp
 	}
-	return nil
+	return 0
 }
 
-func (x *Message) GetPollUpdateMessage() *PollUpdateMessage {
-	if x != nil {
-		return x.PollUpdateMessage
-	}
-	return nil
-}
-
-func (x *Message) GetKeepInChatMessage() *KeepInChatMessage {
-	if x != nil {
-		return x.KeepInChatMessage
-	}
-	return nil
-}
-
-type MessageContextInfo struct {
+type Conversation struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DeviceListMetadata        *DeviceListMetadata `protobuf:"bytes,1,opt,name=deviceListMetadata" json:"deviceListMetadata,omitempty"`
-	DeviceListMetadataVersion *int32              `protobuf:"varint,2,opt,name=deviceListMetadataVersion" json:"deviceListMetadataVersion,omitempty"`
-	MessageSecret             []byte              `protobuf:"bytes,3,opt,name=messageSecret" json:"messageSecret,omitempty"`
-	PaddingBytes              []byte              `protobuf:"bytes,4,opt,name=paddingBytes" json:"paddingBytes,omitempty"`
+	Id                        *string                                `protobuf:"bytes,1,req,name=id" json:"id,omitempty"`
+	Messages                  []*HistorySyncMsg                      `protobuf:"bytes,2,rep,name=messages" json:"messages,omitempty"`
+	NewJid                    *string                                `protobuf:"bytes,3,opt,name=newJid" json:"newJid,omitempty"`
+	OldJid                    *string                                `protobuf:"bytes,4,opt,name=oldJid" json:"oldJid,omitempty"`
+	LastMsgTimestamp          *uint64                                `protobuf:"varint,5,opt,name=lastMsgTimestamp" json:"lastMsgTimestamp,omitempty"`
+	UnreadCount               *uint32                                `protobuf:"varint,6,opt,name=unreadCount" json:"unreadCount,omitempty"`
+	ReadOnly                  *bool                                  `protobuf:"varint,7,opt,name=readOnly" json:"readOnly,omitempty"`
+	EndOfHistoryTransfer      *bool                                  `protobuf:"varint,8,opt,name=endOfHistoryTransfer" json:"endOfHistoryTransfer,omitempty"`
+	EphemeralExpiration       *uint32                                `protobuf:"varint,9,opt,name=ephemeralExpiration" json:"ephemeralExpiration,omitempty"`
+	EphemeralSettingTimestamp *int64                                 `protobuf:"varint,10,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"`
+	EndOfHistoryTransferType  *Conversation_EndOfHistoryTransferType `protobuf:"varint,11,opt,name=endOfHistoryTransferType,enum=proto.Conversation_EndOfHistoryTransferType" json:"endOfHistoryTransferType,omitempty"`
+	ConversationTimestamp     *uint64                                `protobuf:"varint,12,opt,name=conversationTimestamp" json:"conversationTimestamp,omitempty"`
+	Name                      *string                                `protobuf:"bytes,13,opt,name=name" json:"name,omitempty"`
+	PHash                     *string                                `protobuf:"bytes,14,opt,name=pHash" json:"pHash,omitempty"`
+	NotSpam                   *bool                                  `protobuf:"varint,15,opt,name=notSpam" json:"notSpam,omitempty"`
+	Archived                  *bool                                  `protobuf:"varint,16,opt,name=archived" json:"archived,omitempty"`
+	DisappearingMode          *DisappearingMode                      `protobuf:"bytes,17,opt,name=disappearingMode" json:"disappearingMode,omitempty"`
+	UnreadMentionCount        *uint32                                `protobuf:"varint,18,opt,name=unreadMentionCount" json:"unreadMentionCount,omitempty"`
+	MarkedAsUnread            *bool                                  `protobuf:"varint,19,opt,name=markedAsUnread" json:"markedAsUnread,omitempty"`
+	Participant               []*GroupParticipant                    `protobuf:"bytes,20,rep,name=participant" json:"participant,omitempty"`
+	TcToken                   []byte                                 `protobuf:"bytes,21,opt,name=tcToken" json:"tcToken,omitempty"`
+	TcTokenTimestamp          *uint64                                `protobuf:"varint,22,opt,name=tcTokenTimestamp" json:"tcTokenTimestamp,omitempty"`
+	ContactPrimaryIdentityKey []byte                                 `protobuf:"bytes,23,opt,name=contactPrimaryIdentityKey" json:"contactPrimaryIdentityKey,omitempty"`
+	Pinned                    *uint32                                `protobuf:"varint,24,opt,name=pinned" json:"pinned,omitempty"`
+	MuteEndTime               *uint64                                `protobuf:"varint,25,opt,name=muteEndTime" json:"muteEndTime,omitempty"`
+	Wallpaper                 *WallpaperSettings                     `protobuf:"bytes,26,opt,name=wallpaper" json:"wallpaper,omitempty"`
+	MediaVisibility           *MediaVisibility                       `protobuf:"varint,27,opt,name=mediaVisibility,enum=proto.MediaVisibility" json:"mediaVisibility,omitempty"`
+	TcTokenSenderTimestamp    *uint64                                `protobuf:"varint,28,opt,name=tcTokenSenderTimestamp" json:"tcTokenSenderTimestamp,omitempty"`
+	Suspended                 *bool                                  `protobuf:"varint,29,opt,name=suspended" json:"suspended,omitempty"`
+	Terminated                *bool                                  `protobuf:"varint,30,opt,name=terminated" json:"terminated,omitempty"`
+	CreatedAt                 *uint64                                `protobuf:"varint,31,opt,name=createdAt" json:"createdAt,omitempty"`
+	CreatedBy                 *string                                `protobuf:"bytes,32,opt,name=createdBy" json:"createdBy,omitempty"`
+	Description               *string                                `protobuf:"bytes,33,opt,name=description" json:"description,omitempty"`
+	Support                   *bool                                  `protobuf:"varint,34,opt,name=support" json:"support,omitempty"`
+	IsParentGroup             *bool                                  `protobuf:"varint,35,opt,name=isParentGroup" json:"isParentGroup,omitempty"`
+	IsDefaultSubgroup         *bool                                  `protobuf:"varint,36,opt,name=isDefaultSubgroup" json:"isDefaultSubgroup,omitempty"`
+	ParentGroupId             *string                                `protobuf:"bytes,37,opt,name=parentGroupId" json:"parentGroupId,omitempty"`
+	DisplayName               *string                                `protobuf:"bytes,38,opt,name=displayName" json:"displayName,omitempty"`
+	PnJid                     *string                                `protobuf:"bytes,39,opt,name=pnJid" json:"pnJid,omitempty"`
+	SelfPnExposed             *bool                                  `protobuf:"varint,40,opt,name=selfPnExposed" json:"selfPnExposed,omitempty"`
 }
 
-func (x *MessageContextInfo) Reset() {
-	*x = MessageContextInfo{}
+func (x *Conversation) Reset() {
+	*x = Conversation{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[95]
+		mi := &file_binary_proto_def_proto_msgTypes[83]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *MessageContextInfo) String() string {
+func (x *Conversation) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MessageContextInfo) ProtoMessage() {}
+func (*Conversation) ProtoMessage() {}
 
-func (x *MessageContextInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[95]
+func (x *Conversation) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[83]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -11573,292 +11472,319 @@ func (x *MessageContextInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MessageContextInfo.ProtoReflect.Descriptor instead.
-func (*MessageContextInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{95}
+// Deprecated: Use Conversation.ProtoReflect.Descriptor instead.
+func (*Conversation) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{83}
 }
 
-func (x *MessageContextInfo) GetDeviceListMetadata() *DeviceListMetadata {
+func (x *Conversation) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
+	}
+	return ""
+}
+
+func (x *Conversation) GetMessages() []*HistorySyncMsg {
 	if x != nil {
-		return x.DeviceListMetadata
+		return x.Messages
 	}
 	return nil
 }
 
-func (x *MessageContextInfo) GetDeviceListMetadataVersion() int32 {
-	if x != nil && x.DeviceListMetadataVersion != nil {
-		return *x.DeviceListMetadataVersion
+func (x *Conversation) GetNewJid() string {
+	if x != nil && x.NewJid != nil {
+		return *x.NewJid
 	}
-	return 0
+	return ""
 }
 
-func (x *MessageContextInfo) GetMessageSecret() []byte {
-	if x != nil {
-		return x.MessageSecret
+func (x *Conversation) GetOldJid() string {
+	if x != nil && x.OldJid != nil {
+		return *x.OldJid
 	}
-	return nil
+	return ""
 }
 
-func (x *MessageContextInfo) GetPaddingBytes() []byte {
-	if x != nil {
-		return x.PaddingBytes
+func (x *Conversation) GetLastMsgTimestamp() uint64 {
+	if x != nil && x.LastMsgTimestamp != nil {
+		return *x.LastMsgTimestamp
 	}
-	return nil
+	return 0
 }
 
-type VideoMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Url                    *string                               `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
-	Mimetype               *string                               `protobuf:"bytes,2,opt,name=mimetype" json:"mimetype,omitempty"`
-	FileSha256             []byte                                `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileLength             *uint64                               `protobuf:"varint,4,opt,name=fileLength" json:"fileLength,omitempty"`
-	Seconds                *uint32                               `protobuf:"varint,5,opt,name=seconds" json:"seconds,omitempty"`
-	MediaKey               []byte                                `protobuf:"bytes,6,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	Caption                *string                               `protobuf:"bytes,7,opt,name=caption" json:"caption,omitempty"`
-	GifPlayback            *bool                                 `protobuf:"varint,8,opt,name=gifPlayback" json:"gifPlayback,omitempty"`
-	Height                 *uint32                               `protobuf:"varint,9,opt,name=height" json:"height,omitempty"`
-	Width                  *uint32                               `protobuf:"varint,10,opt,name=width" json:"width,omitempty"`
-	FileEncSha256          []byte                                `protobuf:"bytes,11,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
-	InteractiveAnnotations []*InteractiveAnnotation              `protobuf:"bytes,12,rep,name=interactiveAnnotations" json:"interactiveAnnotations,omitempty"`
-	DirectPath             *string                               `protobuf:"bytes,13,opt,name=directPath" json:"directPath,omitempty"`
-	MediaKeyTimestamp      *int64                                `protobuf:"varint,14,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	JpegThumbnail          []byte                                `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
-	ContextInfo            *ContextInfo                          `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	StreamingSidecar       []byte                                `protobuf:"bytes,18,opt,name=streamingSidecar" json:"streamingSidecar,omitempty"`
-	GifAttribution         *VideoMessage_VideoMessageAttribution `protobuf:"varint,19,opt,name=gifAttribution,enum=proto.VideoMessage_VideoMessageAttribution" json:"gifAttribution,omitempty"`
-	ViewOnce               *bool                                 `protobuf:"varint,20,opt,name=viewOnce" json:"viewOnce,omitempty"`
-	ThumbnailDirectPath    *string                               `protobuf:"bytes,21,opt,name=thumbnailDirectPath" json:"thumbnailDirectPath,omitempty"`
-	ThumbnailSha256        []byte                                `protobuf:"bytes,22,opt,name=thumbnailSha256" json:"thumbnailSha256,omitempty"`
-	ThumbnailEncSha256     []byte                                `protobuf:"bytes,23,opt,name=thumbnailEncSha256" json:"thumbnailEncSha256,omitempty"`
-	StaticUrl              *string                               `protobuf:"bytes,24,opt,name=staticUrl" json:"staticUrl,omitempty"`
+func (x *Conversation) GetUnreadCount() uint32 {
+	if x != nil && x.UnreadCount != nil {
+		return *x.UnreadCount
+	}
+	return 0
 }
 
-func (x *VideoMessage) Reset() {
-	*x = VideoMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[96]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *Conversation) GetReadOnly() bool {
+	if x != nil && x.ReadOnly != nil {
+		return *x.ReadOnly
 	}
+	return false
 }
 
-func (x *VideoMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *Conversation) GetEndOfHistoryTransfer() bool {
+	if x != nil && x.EndOfHistoryTransfer != nil {
+		return *x.EndOfHistoryTransfer
+	}
+	return false
 }
 
-func (*VideoMessage) ProtoMessage() {}
+func (x *Conversation) GetEphemeralExpiration() uint32 {
+	if x != nil && x.EphemeralExpiration != nil {
+		return *x.EphemeralExpiration
+	}
+	return 0
+}
 
-func (x *VideoMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[96]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *Conversation) GetEphemeralSettingTimestamp() int64 {
+	if x != nil && x.EphemeralSettingTimestamp != nil {
+		return *x.EphemeralSettingTimestamp
 	}
-	return mi.MessageOf(x)
+	return 0
 }
 
-// Deprecated: Use VideoMessage.ProtoReflect.Descriptor instead.
-func (*VideoMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{96}
+func (x *Conversation) GetEndOfHistoryTransferType() Conversation_EndOfHistoryTransferType {
+	if x != nil && x.EndOfHistoryTransferType != nil {
+		return *x.EndOfHistoryTransferType
+	}
+	return Conversation_COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY
 }
 
-func (x *VideoMessage) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
+func (x *Conversation) GetConversationTimestamp() uint64 {
+	if x != nil && x.ConversationTimestamp != nil {
+		return *x.ConversationTimestamp
 	}
-	return ""
+	return 0
 }
 
-func (x *VideoMessage) GetMimetype() string {
-	if x != nil && x.Mimetype != nil {
-		return *x.Mimetype
+func (x *Conversation) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
 	return ""
 }
 
-func (x *VideoMessage) GetFileSha256() []byte {
-	if x != nil {
-		return x.FileSha256
+func (x *Conversation) GetPHash() string {
+	if x != nil && x.PHash != nil {
+		return *x.PHash
 	}
-	return nil
+	return ""
 }
 
-func (x *VideoMessage) GetFileLength() uint64 {
-	if x != nil && x.FileLength != nil {
-		return *x.FileLength
+func (x *Conversation) GetNotSpam() bool {
+	if x != nil && x.NotSpam != nil {
+		return *x.NotSpam
 	}
-	return 0
+	return false
 }
 
-func (x *VideoMessage) GetSeconds() uint32 {
-	if x != nil && x.Seconds != nil {
-		return *x.Seconds
+func (x *Conversation) GetArchived() bool {
+	if x != nil && x.Archived != nil {
+		return *x.Archived
 	}
-	return 0
+	return false
 }
 
-func (x *VideoMessage) GetMediaKey() []byte {
+func (x *Conversation) GetDisappearingMode() *DisappearingMode {
 	if x != nil {
-		return x.MediaKey
+		return x.DisappearingMode
 	}
 	return nil
 }
 
-func (x *VideoMessage) GetCaption() string {
-	if x != nil && x.Caption != nil {
-		return *x.Caption
+func (x *Conversation) GetUnreadMentionCount() uint32 {
+	if x != nil && x.UnreadMentionCount != nil {
+		return *x.UnreadMentionCount
 	}
-	return ""
+	return 0
 }
 
-func (x *VideoMessage) GetGifPlayback() bool {
-	if x != nil && x.GifPlayback != nil {
-		return *x.GifPlayback
+func (x *Conversation) GetMarkedAsUnread() bool {
+	if x != nil && x.MarkedAsUnread != nil {
+		return *x.MarkedAsUnread
 	}
 	return false
 }
 
-func (x *VideoMessage) GetHeight() uint32 {
-	if x != nil && x.Height != nil {
-		return *x.Height
+func (x *Conversation) GetParticipant() []*GroupParticipant {
+	if x != nil {
+		return x.Participant
 	}
-	return 0
+	return nil
 }
 
-func (x *VideoMessage) GetWidth() uint32 {
-	if x != nil && x.Width != nil {
-		return *x.Width
+func (x *Conversation) GetTcToken() []byte {
+	if x != nil {
+		return x.TcToken
 	}
-	return 0
+	return nil
 }
 
-func (x *VideoMessage) GetFileEncSha256() []byte {
-	if x != nil {
-		return x.FileEncSha256
+func (x *Conversation) GetTcTokenTimestamp() uint64 {
+	if x != nil && x.TcTokenTimestamp != nil {
+		return *x.TcTokenTimestamp
 	}
-	return nil
+	return 0
 }
 
-func (x *VideoMessage) GetInteractiveAnnotations() []*InteractiveAnnotation {
+func (x *Conversation) GetContactPrimaryIdentityKey() []byte {
 	if x != nil {
-		return x.InteractiveAnnotations
+		return x.ContactPrimaryIdentityKey
 	}
 	return nil
 }
 
-func (x *VideoMessage) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
+func (x *Conversation) GetPinned() uint32 {
+	if x != nil && x.Pinned != nil {
+		return *x.Pinned
 	}
-	return ""
+	return 0
 }
 
-func (x *VideoMessage) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
+func (x *Conversation) GetMuteEndTime() uint64 {
+	if x != nil && x.MuteEndTime != nil {
+		return *x.MuteEndTime
 	}
 	return 0
 }
 
-func (x *VideoMessage) GetJpegThumbnail() []byte {
+func (x *Conversation) GetWallpaper() *WallpaperSettings {
 	if x != nil {
-		return x.JpegThumbnail
+		return x.Wallpaper
 	}
 	return nil
 }
 
-func (x *VideoMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
+func (x *Conversation) GetMediaVisibility() MediaVisibility {
+	if x != nil && x.MediaVisibility != nil {
+		return *x.MediaVisibility
 	}
-	return nil
+	return MediaVisibility_DEFAULT
 }
 
-func (x *VideoMessage) GetStreamingSidecar() []byte {
-	if x != nil {
-		return x.StreamingSidecar
+func (x *Conversation) GetTcTokenSenderTimestamp() uint64 {
+	if x != nil && x.TcTokenSenderTimestamp != nil {
+		return *x.TcTokenSenderTimestamp
 	}
-	return nil
+	return 0
 }
 
-func (x *VideoMessage) GetGifAttribution() VideoMessage_VideoMessageAttribution {
-	if x != nil && x.GifAttribution != nil {
-		return *x.GifAttribution
+func (x *Conversation) GetSuspended() bool {
+	if x != nil && x.Suspended != nil {
+		return *x.Suspended
 	}
-	return VideoMessage_NONE
+	return false
 }
 
-func (x *VideoMessage) GetViewOnce() bool {
-	if x != nil && x.ViewOnce != nil {
-		return *x.ViewOnce
+func (x *Conversation) GetTerminated() bool {
+	if x != nil && x.Terminated != nil {
+		return *x.Terminated
 	}
 	return false
 }
 
-func (x *VideoMessage) GetThumbnailDirectPath() string {
-	if x != nil && x.ThumbnailDirectPath != nil {
-		return *x.ThumbnailDirectPath
+func (x *Conversation) GetCreatedAt() uint64 {
+	if x != nil && x.CreatedAt != nil {
+		return *x.CreatedAt
+	}
+	return 0
+}
+
+func (x *Conversation) GetCreatedBy() string {
+	if x != nil && x.CreatedBy != nil {
+		return *x.CreatedBy
 	}
 	return ""
 }
 
-func (x *VideoMessage) GetThumbnailSha256() []byte {
-	if x != nil {
-		return x.ThumbnailSha256
+func (x *Conversation) GetDescription() string {
+	if x != nil && x.Description != nil {
+		return *x.Description
 	}
-	return nil
+	return ""
 }
 
-func (x *VideoMessage) GetThumbnailEncSha256() []byte {
-	if x != nil {
-		return x.ThumbnailEncSha256
+func (x *Conversation) GetSupport() bool {
+	if x != nil && x.Support != nil {
+		return *x.Support
 	}
-	return nil
+	return false
 }
 
-func (x *VideoMessage) GetStaticUrl() string {
-	if x != nil && x.StaticUrl != nil {
-		return *x.StaticUrl
+func (x *Conversation) GetIsParentGroup() bool {
+	if x != nil && x.IsParentGroup != nil {
+		return *x.IsParentGroup
+	}
+	return false
+}
+
+func (x *Conversation) GetIsDefaultSubgroup() bool {
+	if x != nil && x.IsDefaultSubgroup != nil {
+		return *x.IsDefaultSubgroup
+	}
+	return false
+}
+
+func (x *Conversation) GetParentGroupId() string {
+	if x != nil && x.ParentGroupId != nil {
+		return *x.ParentGroupId
 	}
 	return ""
 }
 
-type TemplateMessage struct {
+func (x *Conversation) GetDisplayName() string {
+	if x != nil && x.DisplayName != nil {
+		return *x.DisplayName
+	}
+	return ""
+}
+
+func (x *Conversation) GetPnJid() string {
+	if x != nil && x.PnJid != nil {
+		return *x.PnJid
+	}
+	return ""
+}
+
+func (x *Conversation) GetSelfPnExposed() bool {
+	if x != nil && x.SelfPnExposed != nil {
+		return *x.SelfPnExposed
+	}
+	return false
+}
+
+type AutoDownloadSettings struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ContextInfo      *ContextInfo             `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	HydratedTemplate *HydratedFourRowTemplate `protobuf:"bytes,4,opt,name=hydratedTemplate" json:"hydratedTemplate,omitempty"`
-	// Types that are assignable to Format:
-	//	*TemplateMessage_FourRowTemplate
-	//	*TemplateMessage_HydratedFourRowTemplate
-	Format isTemplateMessage_Format `protobuf_oneof:"format"`
+	DownloadImages    *bool `protobuf:"varint,1,opt,name=downloadImages" json:"downloadImages,omitempty"`
+	DownloadAudio     *bool `protobuf:"varint,2,opt,name=downloadAudio" json:"downloadAudio,omitempty"`
+	DownloadVideo     *bool `protobuf:"varint,3,opt,name=downloadVideo" json:"downloadVideo,omitempty"`
+	DownloadDocuments *bool `protobuf:"varint,4,opt,name=downloadDocuments" json:"downloadDocuments,omitempty"`
 }
 
-func (x *TemplateMessage) Reset() {
-	*x = TemplateMessage{}
+func (x *AutoDownloadSettings) Reset() {
+	*x = AutoDownloadSettings{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[97]
+		mi := &file_binary_proto_def_proto_msgTypes[84]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *TemplateMessage) String() string {
+func (x *AutoDownloadSettings) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*TemplateMessage) ProtoMessage() {}
+func (*AutoDownloadSettings) ProtoMessage() {}
 
-func (x *TemplateMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[97]
+func (x *AutoDownloadSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[84]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -11869,97 +11795,139 @@ func (x *TemplateMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use TemplateMessage.ProtoReflect.Descriptor instead.
-func (*TemplateMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{97}
+// Deprecated: Use AutoDownloadSettings.ProtoReflect.Descriptor instead.
+func (*AutoDownloadSettings) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{84}
 }
 
-func (x *TemplateMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
+func (x *AutoDownloadSettings) GetDownloadImages() bool {
+	if x != nil && x.DownloadImages != nil {
+		return *x.DownloadImages
 	}
-	return nil
+	return false
 }
 
-func (x *TemplateMessage) GetHydratedTemplate() *HydratedFourRowTemplate {
-	if x != nil {
-		return x.HydratedTemplate
+func (x *AutoDownloadSettings) GetDownloadAudio() bool {
+	if x != nil && x.DownloadAudio != nil {
+		return *x.DownloadAudio
 	}
-	return nil
+	return false
 }
 
-func (m *TemplateMessage) GetFormat() isTemplateMessage_Format {
-	if m != nil {
-		return m.Format
+func (x *AutoDownloadSettings) GetDownloadVideo() bool {
+	if x != nil && x.DownloadVideo != nil {
+		return *x.DownloadVideo
 	}
-	return nil
+	return false
 }
 
-func (x *TemplateMessage) GetFourRowTemplate() *FourRowTemplate {
-	if x, ok := x.GetFormat().(*TemplateMessage_FourRowTemplate); ok {
-		return x.FourRowTemplate
+func (x *AutoDownloadSettings) GetDownloadDocuments() bool {
+	if x != nil && x.DownloadDocuments != nil {
+		return *x.DownloadDocuments
 	}
-	return nil
+	return false
 }
 
-func (x *TemplateMessage) GetHydratedFourRowTemplate() *HydratedFourRowTemplate {
-	if x, ok := x.GetFormat().(*TemplateMessage_HydratedFourRowTemplate); ok {
-		return x.HydratedFourRowTemplate
+type MsgRowOpaqueData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	CurrentMsg *MsgOpaqueData `protobuf:"bytes,1,opt,name=currentMsg" json:"currentMsg,omitempty"`
+	QuotedMsg  *MsgOpaqueData `protobuf:"bytes,2,opt,name=quotedMsg" json:"quotedMsg,omitempty"`
+}
+
+func (x *MsgRowOpaqueData) Reset() {
+	*x = MsgRowOpaqueData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[85]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-type isTemplateMessage_Format interface {
-	isTemplateMessage_Format()
+func (x *MsgRowOpaqueData) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type TemplateMessage_FourRowTemplate struct {
-	FourRowTemplate *FourRowTemplate `protobuf:"bytes,1,opt,name=fourRowTemplate,oneof"`
+func (*MsgRowOpaqueData) ProtoMessage() {}
+
+func (x *MsgRowOpaqueData) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[85]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
 }
 
-type TemplateMessage_HydratedFourRowTemplate struct {
-	HydratedFourRowTemplate *HydratedFourRowTemplate `protobuf:"bytes,2,opt,name=hydratedFourRowTemplate,oneof"`
+// Deprecated: Use MsgRowOpaqueData.ProtoReflect.Descriptor instead.
+func (*MsgRowOpaqueData) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{85}
 }
 
-func (*TemplateMessage_FourRowTemplate) isTemplateMessage_Format() {}
+func (x *MsgRowOpaqueData) GetCurrentMsg() *MsgOpaqueData {
+	if x != nil {
+		return x.CurrentMsg
+	}
+	return nil
+}
 
-func (*TemplateMessage_HydratedFourRowTemplate) isTemplateMessage_Format() {}
+func (x *MsgRowOpaqueData) GetQuotedMsg() *MsgOpaqueData {
+	if x != nil {
+		return x.QuotedMsg
+	}
+	return nil
+}
 
-type HydratedFourRowTemplate struct {
+type MsgOpaqueData struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	HydratedContentText *string                   `protobuf:"bytes,6,opt,name=hydratedContentText" json:"hydratedContentText,omitempty"`
-	HydratedFooterText  *string                   `protobuf:"bytes,7,opt,name=hydratedFooterText" json:"hydratedFooterText,omitempty"`
-	HydratedButtons     []*HydratedTemplateButton `protobuf:"bytes,8,rep,name=hydratedButtons" json:"hydratedButtons,omitempty"`
-	TemplateId          *string                   `protobuf:"bytes,9,opt,name=templateId" json:"templateId,omitempty"`
-	// Types that are assignable to Title:
-	//	*HydratedFourRowTemplate_DocumentMessage
-	//	*HydratedFourRowTemplate_HydratedTitleText
-	//	*HydratedFourRowTemplate_ImageMessage
-	//	*HydratedFourRowTemplate_VideoMessage
-	//	*HydratedFourRowTemplate_LocationMessage
-	Title isHydratedFourRowTemplate_Title `protobuf_oneof:"title"`
+	Body                       *string                     `protobuf:"bytes,1,opt,name=body" json:"body,omitempty"`
+	Caption                    *string                     `protobuf:"bytes,3,opt,name=caption" json:"caption,omitempty"`
+	Lng                        *float64                    `protobuf:"fixed64,5,opt,name=lng" json:"lng,omitempty"`
+	IsLive                     *bool                       `protobuf:"varint,6,opt,name=isLive" json:"isLive,omitempty"`
+	Lat                        *float64                    `protobuf:"fixed64,7,opt,name=lat" json:"lat,omitempty"`
+	PaymentAmount1000          *int32                      `protobuf:"varint,8,opt,name=paymentAmount1000" json:"paymentAmount1000,omitempty"`
+	PaymentNoteMsgBody         *string                     `protobuf:"bytes,9,opt,name=paymentNoteMsgBody" json:"paymentNoteMsgBody,omitempty"`
+	CanonicalUrl               *string                     `protobuf:"bytes,10,opt,name=canonicalUrl" json:"canonicalUrl,omitempty"`
+	MatchedText                *string                     `protobuf:"bytes,11,opt,name=matchedText" json:"matchedText,omitempty"`
+	Title                      *string                     `protobuf:"bytes,12,opt,name=title" json:"title,omitempty"`
+	Description                *string                     `protobuf:"bytes,13,opt,name=description" json:"description,omitempty"`
+	FutureproofBuffer          []byte                      `protobuf:"bytes,14,opt,name=futureproofBuffer" json:"futureproofBuffer,omitempty"`
+	ClientUrl                  *string                     `protobuf:"bytes,15,opt,name=clientUrl" json:"clientUrl,omitempty"`
+	Loc                        *string                     `protobuf:"bytes,16,opt,name=loc" json:"loc,omitempty"`
+	PollName                   *string                     `protobuf:"bytes,17,opt,name=pollName" json:"pollName,omitempty"`
+	PollOptions                []*MsgOpaqueData_PollOption `protobuf:"bytes,18,rep,name=pollOptions" json:"pollOptions,omitempty"`
+	PollSelectableOptionsCount *uint32                     `protobuf:"varint,20,opt,name=pollSelectableOptionsCount" json:"pollSelectableOptionsCount,omitempty"`
+	MessageSecret              []byte                      `protobuf:"bytes,21,opt,name=messageSecret" json:"messageSecret,omitempty"`
+	SenderTimestampMs          *int64                      `protobuf:"varint,22,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
+	PollUpdateParentKey        *string                     `protobuf:"bytes,23,opt,name=pollUpdateParentKey" json:"pollUpdateParentKey,omitempty"`
+	EncPollVote                *PollEncValue               `protobuf:"bytes,24,opt,name=encPollVote" json:"encPollVote,omitempty"`
 }
 
-func (x *HydratedFourRowTemplate) Reset() {
-	*x = HydratedFourRowTemplate{}
+func (x *MsgOpaqueData) Reset() {
+	*x = MsgOpaqueData{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[98]
+		mi := &file_binary_proto_def_proto_msgTypes[86]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HydratedFourRowTemplate) String() string {
+func (x *MsgOpaqueData) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HydratedFourRowTemplate) ProtoMessage() {}
+func (*MsgOpaqueData) ProtoMessage() {}
 
-func (x *HydratedFourRowTemplate) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[98]
+func (x *MsgOpaqueData) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[86]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -11970,149 +11938,183 @@ func (x *HydratedFourRowTemplate) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HydratedFourRowTemplate.ProtoReflect.Descriptor instead.
-func (*HydratedFourRowTemplate) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{98}
+// Deprecated: Use MsgOpaqueData.ProtoReflect.Descriptor instead.
+func (*MsgOpaqueData) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{86}
 }
 
-func (x *HydratedFourRowTemplate) GetHydratedContentText() string {
-	if x != nil && x.HydratedContentText != nil {
-		return *x.HydratedContentText
+func (x *MsgOpaqueData) GetBody() string {
+	if x != nil && x.Body != nil {
+		return *x.Body
 	}
 	return ""
 }
 
-func (x *HydratedFourRowTemplate) GetHydratedFooterText() string {
-	if x != nil && x.HydratedFooterText != nil {
-		return *x.HydratedFooterText
+func (x *MsgOpaqueData) GetCaption() string {
+	if x != nil && x.Caption != nil {
+		return *x.Caption
 	}
 	return ""
 }
 
-func (x *HydratedFourRowTemplate) GetHydratedButtons() []*HydratedTemplateButton {
-	if x != nil {
-		return x.HydratedButtons
+func (x *MsgOpaqueData) GetLng() float64 {
+	if x != nil && x.Lng != nil {
+		return *x.Lng
 	}
-	return nil
+	return 0
 }
 
-func (x *HydratedFourRowTemplate) GetTemplateId() string {
-	if x != nil && x.TemplateId != nil {
-		return *x.TemplateId
+func (x *MsgOpaqueData) GetIsLive() bool {
+	if x != nil && x.IsLive != nil {
+		return *x.IsLive
 	}
-	return ""
+	return false
 }
 
-func (m *HydratedFourRowTemplate) GetTitle() isHydratedFourRowTemplate_Title {
-	if m != nil {
-		return m.Title
+func (x *MsgOpaqueData) GetLat() float64 {
+	if x != nil && x.Lat != nil {
+		return *x.Lat
 	}
-	return nil
+	return 0
 }
 
-func (x *HydratedFourRowTemplate) GetDocumentMessage() *DocumentMessage {
-	if x, ok := x.GetTitle().(*HydratedFourRowTemplate_DocumentMessage); ok {
-		return x.DocumentMessage
+func (x *MsgOpaqueData) GetPaymentAmount1000() int32 {
+	if x != nil && x.PaymentAmount1000 != nil {
+		return *x.PaymentAmount1000
 	}
-	return nil
+	return 0
 }
 
-func (x *HydratedFourRowTemplate) GetHydratedTitleText() string {
-	if x, ok := x.GetTitle().(*HydratedFourRowTemplate_HydratedTitleText); ok {
-		return x.HydratedTitleText
+func (x *MsgOpaqueData) GetPaymentNoteMsgBody() string {
+	if x != nil && x.PaymentNoteMsgBody != nil {
+		return *x.PaymentNoteMsgBody
 	}
 	return ""
 }
 
-func (x *HydratedFourRowTemplate) GetImageMessage() *ImageMessage {
-	if x, ok := x.GetTitle().(*HydratedFourRowTemplate_ImageMessage); ok {
-		return x.ImageMessage
+func (x *MsgOpaqueData) GetCanonicalUrl() string {
+	if x != nil && x.CanonicalUrl != nil {
+		return *x.CanonicalUrl
 	}
-	return nil
+	return ""
 }
 
-func (x *HydratedFourRowTemplate) GetVideoMessage() *VideoMessage {
-	if x, ok := x.GetTitle().(*HydratedFourRowTemplate_VideoMessage); ok {
-		return x.VideoMessage
+func (x *MsgOpaqueData) GetMatchedText() string {
+	if x != nil && x.MatchedText != nil {
+		return *x.MatchedText
 	}
-	return nil
+	return ""
 }
 
-func (x *HydratedFourRowTemplate) GetLocationMessage() *LocationMessage {
-	if x, ok := x.GetTitle().(*HydratedFourRowTemplate_LocationMessage); ok {
-		return x.LocationMessage
+func (x *MsgOpaqueData) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
-	return nil
-}
-
-type isHydratedFourRowTemplate_Title interface {
-	isHydratedFourRowTemplate_Title()
+	return ""
 }
 
-type HydratedFourRowTemplate_DocumentMessage struct {
-	DocumentMessage *DocumentMessage `protobuf:"bytes,1,opt,name=documentMessage,oneof"`
-}
+func (x *MsgOpaqueData) GetDescription() string {
+	if x != nil && x.Description != nil {
+		return *x.Description
+	}
+	return ""
+}
 
-type HydratedFourRowTemplate_HydratedTitleText struct {
-	HydratedTitleText string `protobuf:"bytes,2,opt,name=hydratedTitleText,oneof"`
+func (x *MsgOpaqueData) GetFutureproofBuffer() []byte {
+	if x != nil {
+		return x.FutureproofBuffer
+	}
+	return nil
 }
 
-type HydratedFourRowTemplate_ImageMessage struct {
-	ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"`
+func (x *MsgOpaqueData) GetClientUrl() string {
+	if x != nil && x.ClientUrl != nil {
+		return *x.ClientUrl
+	}
+	return ""
 }
 
-type HydratedFourRowTemplate_VideoMessage struct {
-	VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"`
+func (x *MsgOpaqueData) GetLoc() string {
+	if x != nil && x.Loc != nil {
+		return *x.Loc
+	}
+	return ""
 }
 
-type HydratedFourRowTemplate_LocationMessage struct {
-	LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"`
+func (x *MsgOpaqueData) GetPollName() string {
+	if x != nil && x.PollName != nil {
+		return *x.PollName
+	}
+	return ""
+}
+
+func (x *MsgOpaqueData) GetPollOptions() []*MsgOpaqueData_PollOption {
+	if x != nil {
+		return x.PollOptions
+	}
+	return nil
 }
 
-func (*HydratedFourRowTemplate_DocumentMessage) isHydratedFourRowTemplate_Title() {}
+func (x *MsgOpaqueData) GetPollSelectableOptionsCount() uint32 {
+	if x != nil && x.PollSelectableOptionsCount != nil {
+		return *x.PollSelectableOptionsCount
+	}
+	return 0
+}
 
-func (*HydratedFourRowTemplate_HydratedTitleText) isHydratedFourRowTemplate_Title() {}
+func (x *MsgOpaqueData) GetMessageSecret() []byte {
+	if x != nil {
+		return x.MessageSecret
+	}
+	return nil
+}
 
-func (*HydratedFourRowTemplate_ImageMessage) isHydratedFourRowTemplate_Title() {}
+func (x *MsgOpaqueData) GetSenderTimestampMs() int64 {
+	if x != nil && x.SenderTimestampMs != nil {
+		return *x.SenderTimestampMs
+	}
+	return 0
+}
 
-func (*HydratedFourRowTemplate_VideoMessage) isHydratedFourRowTemplate_Title() {}
+func (x *MsgOpaqueData) GetPollUpdateParentKey() string {
+	if x != nil && x.PollUpdateParentKey != nil {
+		return *x.PollUpdateParentKey
+	}
+	return ""
+}
 
-func (*HydratedFourRowTemplate_LocationMessage) isHydratedFourRowTemplate_Title() {}
+func (x *MsgOpaqueData) GetEncPollVote() *PollEncValue {
+	if x != nil {
+		return x.EncPollVote
+	}
+	return nil
+}
 
-type FourRowTemplate struct {
+type ServerErrorReceipt struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Content *HighlyStructuredMessage `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"`
-	Footer  *HighlyStructuredMessage `protobuf:"bytes,7,opt,name=footer" json:"footer,omitempty"`
-	Buttons []*TemplateButton        `protobuf:"bytes,8,rep,name=buttons" json:"buttons,omitempty"`
-	// Types that are assignable to Title:
-	//	*FourRowTemplate_DocumentMessage
-	//	*FourRowTemplate_HighlyStructuredMessage
-	//	*FourRowTemplate_ImageMessage
-	//	*FourRowTemplate_VideoMessage
-	//	*FourRowTemplate_LocationMessage
-	Title isFourRowTemplate_Title `protobuf_oneof:"title"`
+	StanzaId *string `protobuf:"bytes,1,opt,name=stanzaId" json:"stanzaId,omitempty"`
 }
 
-func (x *FourRowTemplate) Reset() {
-	*x = FourRowTemplate{}
+func (x *ServerErrorReceipt) Reset() {
+	*x = ServerErrorReceipt{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[99]
+		mi := &file_binary_proto_def_proto_msgTypes[87]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *FourRowTemplate) String() string {
+func (x *ServerErrorReceipt) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*FourRowTemplate) ProtoMessage() {}
+func (*ServerErrorReceipt) ProtoMessage() {}
 
-func (x *FourRowTemplate) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[99]
+func (x *ServerErrorReceipt) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[87]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12123,136 +12125,109 @@ func (x *FourRowTemplate) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use FourRowTemplate.ProtoReflect.Descriptor instead.
-func (*FourRowTemplate) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{99}
+// Deprecated: Use ServerErrorReceipt.ProtoReflect.Descriptor instead.
+func (*ServerErrorReceipt) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{87}
 }
 
-func (x *FourRowTemplate) GetContent() *HighlyStructuredMessage {
-	if x != nil {
-		return x.Content
+func (x *ServerErrorReceipt) GetStanzaId() string {
+	if x != nil && x.StanzaId != nil {
+		return *x.StanzaId
 	}
-	return nil
+	return ""
 }
 
-func (x *FourRowTemplate) GetFooter() *HighlyStructuredMessage {
-	if x != nil {
-		return x.Footer
-	}
-	return nil
-}
+type MediaRetryNotification struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *FourRowTemplate) GetButtons() []*TemplateButton {
-	if x != nil {
-		return x.Buttons
-	}
-	return nil
+	StanzaId   *string                            `protobuf:"bytes,1,opt,name=stanzaId" json:"stanzaId,omitempty"`
+	DirectPath *string                            `protobuf:"bytes,2,opt,name=directPath" json:"directPath,omitempty"`
+	Result     *MediaRetryNotification_ResultType `protobuf:"varint,3,opt,name=result,enum=proto.MediaRetryNotification_ResultType" json:"result,omitempty"`
 }
 
-func (m *FourRowTemplate) GetTitle() isFourRowTemplate_Title {
-	if m != nil {
-		return m.Title
+func (x *MediaRetryNotification) Reset() {
+	*x = MediaRetryNotification{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[88]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *FourRowTemplate) GetDocumentMessage() *DocumentMessage {
-	if x, ok := x.GetTitle().(*FourRowTemplate_DocumentMessage); ok {
-		return x.DocumentMessage
-	}
-	return nil
+func (x *MediaRetryNotification) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *FourRowTemplate) GetHighlyStructuredMessage() *HighlyStructuredMessage {
-	if x, ok := x.GetTitle().(*FourRowTemplate_HighlyStructuredMessage); ok {
-		return x.HighlyStructuredMessage
-	}
-	return nil
-}
+func (*MediaRetryNotification) ProtoMessage() {}
 
-func (x *FourRowTemplate) GetImageMessage() *ImageMessage {
-	if x, ok := x.GetTitle().(*FourRowTemplate_ImageMessage); ok {
-		return x.ImageMessage
+func (x *MediaRetryNotification) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[88]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *FourRowTemplate) GetVideoMessage() *VideoMessage {
-	if x, ok := x.GetTitle().(*FourRowTemplate_VideoMessage); ok {
-		return x.VideoMessage
-	}
-	return nil
+// Deprecated: Use MediaRetryNotification.ProtoReflect.Descriptor instead.
+func (*MediaRetryNotification) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{88}
 }
 
-func (x *FourRowTemplate) GetLocationMessage() *LocationMessage {
-	if x, ok := x.GetTitle().(*FourRowTemplate_LocationMessage); ok {
-		return x.LocationMessage
+func (x *MediaRetryNotification) GetStanzaId() string {
+	if x != nil && x.StanzaId != nil {
+		return *x.StanzaId
 	}
-	return nil
-}
-
-type isFourRowTemplate_Title interface {
-	isFourRowTemplate_Title()
-}
-
-type FourRowTemplate_DocumentMessage struct {
-	DocumentMessage *DocumentMessage `protobuf:"bytes,1,opt,name=documentMessage,oneof"`
-}
-
-type FourRowTemplate_HighlyStructuredMessage struct {
-	HighlyStructuredMessage *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=highlyStructuredMessage,oneof"`
-}
-
-type FourRowTemplate_ImageMessage struct {
-	ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"`
+	return ""
 }
 
-type FourRowTemplate_VideoMessage struct {
-	VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"`
+func (x *MediaRetryNotification) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
+	}
+	return ""
 }
 
-type FourRowTemplate_LocationMessage struct {
-	LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"`
+func (x *MediaRetryNotification) GetResult() MediaRetryNotification_ResultType {
+	if x != nil && x.Result != nil {
+		return *x.Result
+	}
+	return MediaRetryNotification_GENERAL_ERROR
 }
 
-func (*FourRowTemplate_DocumentMessage) isFourRowTemplate_Title() {}
-
-func (*FourRowTemplate_HighlyStructuredMessage) isFourRowTemplate_Title() {}
-
-func (*FourRowTemplate_ImageMessage) isFourRowTemplate_Title() {}
-
-func (*FourRowTemplate_VideoMessage) isFourRowTemplate_Title() {}
-
-func (*FourRowTemplate_LocationMessage) isFourRowTemplate_Title() {}
-
-type TemplateButtonReplyMessage struct {
+type MessageKey struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	SelectedId          *string      `protobuf:"bytes,1,opt,name=selectedId" json:"selectedId,omitempty"`
-	SelectedDisplayText *string      `protobuf:"bytes,2,opt,name=selectedDisplayText" json:"selectedDisplayText,omitempty"`
-	ContextInfo         *ContextInfo `protobuf:"bytes,3,opt,name=contextInfo" json:"contextInfo,omitempty"`
-	SelectedIndex       *uint32      `protobuf:"varint,4,opt,name=selectedIndex" json:"selectedIndex,omitempty"`
+	RemoteJid   *string `protobuf:"bytes,1,opt,name=remoteJid" json:"remoteJid,omitempty"`
+	FromMe      *bool   `protobuf:"varint,2,opt,name=fromMe" json:"fromMe,omitempty"`
+	Id          *string `protobuf:"bytes,3,opt,name=id" json:"id,omitempty"`
+	Participant *string `protobuf:"bytes,4,opt,name=participant" json:"participant,omitempty"`
 }
 
-func (x *TemplateButtonReplyMessage) Reset() {
-	*x = TemplateButtonReplyMessage{}
+func (x *MessageKey) Reset() {
+	*x = MessageKey{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[100]
+		mi := &file_binary_proto_def_proto_msgTypes[89]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *TemplateButtonReplyMessage) String() string {
+func (x *MessageKey) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*TemplateButtonReplyMessage) ProtoMessage() {}
+func (*MessageKey) ProtoMessage() {}
 
-func (x *TemplateButtonReplyMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[100]
+func (x *MessageKey) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[89]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12263,66 +12238,64 @@ func (x *TemplateButtonReplyMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use TemplateButtonReplyMessage.ProtoReflect.Descriptor instead.
-func (*TemplateButtonReplyMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{100}
+// Deprecated: Use MessageKey.ProtoReflect.Descriptor instead.
+func (*MessageKey) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{89}
 }
 
-func (x *TemplateButtonReplyMessage) GetSelectedId() string {
-	if x != nil && x.SelectedId != nil {
-		return *x.SelectedId
+func (x *MessageKey) GetRemoteJid() string {
+	if x != nil && x.RemoteJid != nil {
+		return *x.RemoteJid
 	}
 	return ""
 }
 
-func (x *TemplateButtonReplyMessage) GetSelectedDisplayText() string {
-	if x != nil && x.SelectedDisplayText != nil {
-		return *x.SelectedDisplayText
+func (x *MessageKey) GetFromMe() bool {
+	if x != nil && x.FromMe != nil {
+		return *x.FromMe
 	}
-	return ""
+	return false
 }
 
-func (x *TemplateButtonReplyMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
+func (x *MessageKey) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return nil
+	return ""
 }
 
-func (x *TemplateButtonReplyMessage) GetSelectedIndex() uint32 {
-	if x != nil && x.SelectedIndex != nil {
-		return *x.SelectedIndex
+func (x *MessageKey) GetParticipant() string {
+	if x != nil && x.Participant != nil {
+		return *x.Participant
 	}
-	return 0
+	return ""
 }
 
-type StickerSyncRMRMessage struct {
+type SyncdVersion struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Filehash         []string `protobuf:"bytes,1,rep,name=filehash" json:"filehash,omitempty"`
-	RmrSource        *string  `protobuf:"bytes,2,opt,name=rmrSource" json:"rmrSource,omitempty"`
-	RequestTimestamp *int64   `protobuf:"varint,3,opt,name=requestTimestamp" json:"requestTimestamp,omitempty"`
+	Version *uint64 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
 }
 
-func (x *StickerSyncRMRMessage) Reset() {
-	*x = StickerSyncRMRMessage{}
+func (x *SyncdVersion) Reset() {
+	*x = SyncdVersion{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[101]
+		mi := &file_binary_proto_def_proto_msgTypes[90]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *StickerSyncRMRMessage) String() string {
+func (x *SyncdVersion) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*StickerSyncRMRMessage) ProtoMessage() {}
+func (*SyncdVersion) ProtoMessage() {}
 
-func (x *StickerSyncRMRMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[101]
+func (x *SyncdVersion) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[90]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12333,71 +12306,43 @@ func (x *StickerSyncRMRMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use StickerSyncRMRMessage.ProtoReflect.Descriptor instead.
-func (*StickerSyncRMRMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{101}
+// Deprecated: Use SyncdVersion.ProtoReflect.Descriptor instead.
+func (*SyncdVersion) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{90}
 }
 
-func (x *StickerSyncRMRMessage) GetFilehash() []string {
-	if x != nil {
-		return x.Filehash
-	}
-	return nil
-}
-
-func (x *StickerSyncRMRMessage) GetRmrSource() string {
-	if x != nil && x.RmrSource != nil {
-		return *x.RmrSource
-	}
-	return ""
-}
-
-func (x *StickerSyncRMRMessage) GetRequestTimestamp() int64 {
-	if x != nil && x.RequestTimestamp != nil {
-		return *x.RequestTimestamp
+func (x *SyncdVersion) GetVersion() uint64 {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
 	return 0
 }
 
-type StickerMessage struct {
+type SyncdValue struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Url               *string      `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
-	FileSha256        []byte       `protobuf:"bytes,2,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileEncSha256     []byte       `protobuf:"bytes,3,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
-	MediaKey          []byte       `protobuf:"bytes,4,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	Mimetype          *string      `protobuf:"bytes,5,opt,name=mimetype" json:"mimetype,omitempty"`
-	Height            *uint32      `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
-	Width             *uint32      `protobuf:"varint,7,opt,name=width" json:"width,omitempty"`
-	DirectPath        *string      `protobuf:"bytes,8,opt,name=directPath" json:"directPath,omitempty"`
-	FileLength        *uint64      `protobuf:"varint,9,opt,name=fileLength" json:"fileLength,omitempty"`
-	MediaKeyTimestamp *int64       `protobuf:"varint,10,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	FirstFrameLength  *uint32      `protobuf:"varint,11,opt,name=firstFrameLength" json:"firstFrameLength,omitempty"`
-	FirstFrameSidecar []byte       `protobuf:"bytes,12,opt,name=firstFrameSidecar" json:"firstFrameSidecar,omitempty"`
-	IsAnimated        *bool        `protobuf:"varint,13,opt,name=isAnimated" json:"isAnimated,omitempty"`
-	PngThumbnail      []byte       `protobuf:"bytes,16,opt,name=pngThumbnail" json:"pngThumbnail,omitempty"`
-	ContextInfo       *ContextInfo `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	Blob []byte `protobuf:"bytes,1,opt,name=blob" json:"blob,omitempty"`
 }
 
-func (x *StickerMessage) Reset() {
-	*x = StickerMessage{}
+func (x *SyncdValue) Reset() {
+	*x = SyncdValue{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[102]
+		mi := &file_binary_proto_def_proto_msgTypes[91]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *StickerMessage) String() string {
+func (x *SyncdValue) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*StickerMessage) ProtoMessage() {}
+func (*SyncdValue) ProtoMessage() {}
 
-func (x *StickerMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[102]
+func (x *SyncdValue) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[91]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12408,142 +12353,116 @@ func (x *StickerMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use StickerMessage.ProtoReflect.Descriptor instead.
-func (*StickerMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{102}
-}
-
-func (x *StickerMessage) GetUrl() string {
-	if x != nil && x.Url != nil {
-		return *x.Url
-	}
-	return ""
-}
-
-func (x *StickerMessage) GetFileSha256() []byte {
-	if x != nil {
-		return x.FileSha256
-	}
-	return nil
-}
-
-func (x *StickerMessage) GetFileEncSha256() []byte {
-	if x != nil {
-		return x.FileEncSha256
-	}
-	return nil
+// Deprecated: Use SyncdValue.ProtoReflect.Descriptor instead.
+func (*SyncdValue) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{91}
 }
 
-func (x *StickerMessage) GetMediaKey() []byte {
+func (x *SyncdValue) GetBlob() []byte {
 	if x != nil {
-		return x.MediaKey
+		return x.Blob
 	}
 	return nil
 }
 
-func (x *StickerMessage) GetMimetype() string {
-	if x != nil && x.Mimetype != nil {
-		return *x.Mimetype
-	}
-	return ""
-}
+type SyncdSnapshot struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *StickerMessage) GetHeight() uint32 {
-	if x != nil && x.Height != nil {
-		return *x.Height
-	}
-	return 0
+	Version *SyncdVersion  `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
+	Records []*SyncdRecord `protobuf:"bytes,2,rep,name=records" json:"records,omitempty"`
+	Mac     []byte         `protobuf:"bytes,3,opt,name=mac" json:"mac,omitempty"`
+	KeyId   *KeyId         `protobuf:"bytes,4,opt,name=keyId" json:"keyId,omitempty"`
 }
 
-func (x *StickerMessage) GetWidth() uint32 {
-	if x != nil && x.Width != nil {
-		return *x.Width
+func (x *SyncdSnapshot) Reset() {
+	*x = SyncdSnapshot{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[92]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *StickerMessage) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
-	}
-	return ""
+func (x *SyncdSnapshot) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *StickerMessage) GetFileLength() uint64 {
-	if x != nil && x.FileLength != nil {
-		return *x.FileLength
-	}
-	return 0
-}
+func (*SyncdSnapshot) ProtoMessage() {}
 
-func (x *StickerMessage) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
+func (x *SyncdSnapshot) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[92]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return 0
+	return mi.MessageOf(x)
 }
 
-func (x *StickerMessage) GetFirstFrameLength() uint32 {
-	if x != nil && x.FirstFrameLength != nil {
-		return *x.FirstFrameLength
-	}
-	return 0
+// Deprecated: Use SyncdSnapshot.ProtoReflect.Descriptor instead.
+func (*SyncdSnapshot) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{92}
 }
 
-func (x *StickerMessage) GetFirstFrameSidecar() []byte {
+func (x *SyncdSnapshot) GetVersion() *SyncdVersion {
 	if x != nil {
-		return x.FirstFrameSidecar
+		return x.Version
 	}
 	return nil
 }
 
-func (x *StickerMessage) GetIsAnimated() bool {
-	if x != nil && x.IsAnimated != nil {
-		return *x.IsAnimated
+func (x *SyncdSnapshot) GetRecords() []*SyncdRecord {
+	if x != nil {
+		return x.Records
 	}
-	return false
+	return nil
 }
 
-func (x *StickerMessage) GetPngThumbnail() []byte {
+func (x *SyncdSnapshot) GetMac() []byte {
 	if x != nil {
-		return x.PngThumbnail
+		return x.Mac
 	}
 	return nil
 }
 
-func (x *StickerMessage) GetContextInfo() *ContextInfo {
+func (x *SyncdSnapshot) GetKeyId() *KeyId {
 	if x != nil {
-		return x.ContextInfo
+		return x.KeyId
 	}
 	return nil
 }
 
-type SenderKeyDistributionMessage struct {
+type SyncdRecord struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	GroupId                             *string `protobuf:"bytes,1,opt,name=groupId" json:"groupId,omitempty"`
-	AxolotlSenderKeyDistributionMessage []byte  `protobuf:"bytes,2,opt,name=axolotlSenderKeyDistributionMessage" json:"axolotlSenderKeyDistributionMessage,omitempty"`
+	Index *SyncdIndex `protobuf:"bytes,1,opt,name=index" json:"index,omitempty"`
+	Value *SyncdValue `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
+	KeyId *KeyId      `protobuf:"bytes,3,opt,name=keyId" json:"keyId,omitempty"`
 }
 
-func (x *SenderKeyDistributionMessage) Reset() {
-	*x = SenderKeyDistributionMessage{}
+func (x *SyncdRecord) Reset() {
+	*x = SyncdRecord{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[103]
+		mi := &file_binary_proto_def_proto_msgTypes[93]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SenderKeyDistributionMessage) String() string {
+func (x *SyncdRecord) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SenderKeyDistributionMessage) ProtoMessage() {}
+func (*SyncdRecord) ProtoMessage() {}
 
-func (x *SenderKeyDistributionMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[103]
+func (x *SyncdRecord) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[93]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12554,52 +12473,64 @@ func (x *SenderKeyDistributionMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SenderKeyDistributionMessage.ProtoReflect.Descriptor instead.
-func (*SenderKeyDistributionMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{103}
+// Deprecated: Use SyncdRecord.ProtoReflect.Descriptor instead.
+func (*SyncdRecord) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{93}
 }
 
-func (x *SenderKeyDistributionMessage) GetGroupId() string {
-	if x != nil && x.GroupId != nil {
-		return *x.GroupId
+func (x *SyncdRecord) GetIndex() *SyncdIndex {
+	if x != nil {
+		return x.Index
 	}
-	return ""
+	return nil
 }
 
-func (x *SenderKeyDistributionMessage) GetAxolotlSenderKeyDistributionMessage() []byte {
+func (x *SyncdRecord) GetValue() *SyncdValue {
 	if x != nil {
-		return x.AxolotlSenderKeyDistributionMessage
+		return x.Value
 	}
 	return nil
 }
 
-type SendPaymentMessage struct {
+func (x *SyncdRecord) GetKeyId() *KeyId {
+	if x != nil {
+		return x.KeyId
+	}
+	return nil
+}
+
+type SyncdPatch struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	NoteMessage       *Message           `protobuf:"bytes,2,opt,name=noteMessage" json:"noteMessage,omitempty"`
-	RequestMessageKey *MessageKey        `protobuf:"bytes,3,opt,name=requestMessageKey" json:"requestMessageKey,omitempty"`
-	Background        *PaymentBackground `protobuf:"bytes,4,opt,name=background" json:"background,omitempty"`
+	Version           *SyncdVersion          `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
+	Mutations         []*SyncdMutation       `protobuf:"bytes,2,rep,name=mutations" json:"mutations,omitempty"`
+	ExternalMutations *ExternalBlobReference `protobuf:"bytes,3,opt,name=externalMutations" json:"externalMutations,omitempty"`
+	SnapshotMac       []byte                 `protobuf:"bytes,4,opt,name=snapshotMac" json:"snapshotMac,omitempty"`
+	PatchMac          []byte                 `protobuf:"bytes,5,opt,name=patchMac" json:"patchMac,omitempty"`
+	KeyId             *KeyId                 `protobuf:"bytes,6,opt,name=keyId" json:"keyId,omitempty"`
+	ExitCode          *ExitCode              `protobuf:"bytes,7,opt,name=exitCode" json:"exitCode,omitempty"`
+	DeviceIndex       *uint32                `protobuf:"varint,8,opt,name=deviceIndex" json:"deviceIndex,omitempty"`
 }
 
-func (x *SendPaymentMessage) Reset() {
-	*x = SendPaymentMessage{}
+func (x *SyncdPatch) Reset() {
+	*x = SyncdPatch{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[104]
+		mi := &file_binary_proto_def_proto_msgTypes[94]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SendPaymentMessage) String() string {
+func (x *SyncdPatch) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SendPaymentMessage) ProtoMessage() {}
+func (*SyncdPatch) ProtoMessage() {}
 
-func (x *SendPaymentMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[104]
+func (x *SyncdPatch) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[94]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12610,63 +12541,92 @@ func (x *SendPaymentMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SendPaymentMessage.ProtoReflect.Descriptor instead.
-func (*SendPaymentMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{104}
+// Deprecated: Use SyncdPatch.ProtoReflect.Descriptor instead.
+func (*SyncdPatch) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{94}
 }
 
-func (x *SendPaymentMessage) GetNoteMessage() *Message {
+func (x *SyncdPatch) GetVersion() *SyncdVersion {
 	if x != nil {
-		return x.NoteMessage
+		return x.Version
 	}
 	return nil
 }
 
-func (x *SendPaymentMessage) GetRequestMessageKey() *MessageKey {
+func (x *SyncdPatch) GetMutations() []*SyncdMutation {
 	if x != nil {
-		return x.RequestMessageKey
+		return x.Mutations
 	}
 	return nil
 }
 
-func (x *SendPaymentMessage) GetBackground() *PaymentBackground {
+func (x *SyncdPatch) GetExternalMutations() *ExternalBlobReference {
 	if x != nil {
-		return x.Background
+		return x.ExternalMutations
 	}
 	return nil
 }
 
-type RequestPaymentMessage struct {
+func (x *SyncdPatch) GetSnapshotMac() []byte {
+	if x != nil {
+		return x.SnapshotMac
+	}
+	return nil
+}
+
+func (x *SyncdPatch) GetPatchMac() []byte {
+	if x != nil {
+		return x.PatchMac
+	}
+	return nil
+}
+
+func (x *SyncdPatch) GetKeyId() *KeyId {
+	if x != nil {
+		return x.KeyId
+	}
+	return nil
+}
+
+func (x *SyncdPatch) GetExitCode() *ExitCode {
+	if x != nil {
+		return x.ExitCode
+	}
+	return nil
+}
+
+func (x *SyncdPatch) GetDeviceIndex() uint32 {
+	if x != nil && x.DeviceIndex != nil {
+		return *x.DeviceIndex
+	}
+	return 0
+}
+
+type SyncdMutations struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	NoteMessage         *Message           `protobuf:"bytes,4,opt,name=noteMessage" json:"noteMessage,omitempty"`
-	CurrencyCodeIso4217 *string            `protobuf:"bytes,1,opt,name=currencyCodeIso4217" json:"currencyCodeIso4217,omitempty"`
-	Amount1000          *uint64            `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"`
-	RequestFrom         *string            `protobuf:"bytes,3,opt,name=requestFrom" json:"requestFrom,omitempty"`
-	ExpiryTimestamp     *int64             `protobuf:"varint,5,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"`
-	Amount              *Money             `protobuf:"bytes,6,opt,name=amount" json:"amount,omitempty"`
-	Background          *PaymentBackground `protobuf:"bytes,7,opt,name=background" json:"background,omitempty"`
+	Mutations []*SyncdMutation `protobuf:"bytes,1,rep,name=mutations" json:"mutations,omitempty"`
 }
 
-func (x *RequestPaymentMessage) Reset() {
-	*x = RequestPaymentMessage{}
+func (x *SyncdMutations) Reset() {
+	*x = SyncdMutations{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[105]
+		mi := &file_binary_proto_def_proto_msgTypes[95]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *RequestPaymentMessage) String() string {
+func (x *SyncdMutations) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*RequestPaymentMessage) ProtoMessage() {}
+func (*SyncdMutations) ProtoMessage() {}
 
-func (x *RequestPaymentMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[105]
+func (x *SyncdMutations) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[95]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12677,88 +12637,98 @@ func (x *RequestPaymentMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use RequestPaymentMessage.ProtoReflect.Descriptor instead.
-func (*RequestPaymentMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{105}
+// Deprecated: Use SyncdMutations.ProtoReflect.Descriptor instead.
+func (*SyncdMutations) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{95}
 }
 
-func (x *RequestPaymentMessage) GetNoteMessage() *Message {
+func (x *SyncdMutations) GetMutations() []*SyncdMutation {
 	if x != nil {
-		return x.NoteMessage
+		return x.Mutations
 	}
 	return nil
 }
 
-func (x *RequestPaymentMessage) GetCurrencyCodeIso4217() string {
-	if x != nil && x.CurrencyCodeIso4217 != nil {
-		return *x.CurrencyCodeIso4217
-	}
-	return ""
+type SyncdMutation struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Operation *SyncdMutation_SyncdOperation `protobuf:"varint,1,opt,name=operation,enum=proto.SyncdMutation_SyncdOperation" json:"operation,omitempty"`
+	Record    *SyncdRecord                  `protobuf:"bytes,2,opt,name=record" json:"record,omitempty"`
 }
 
-func (x *RequestPaymentMessage) GetAmount1000() uint64 {
-	if x != nil && x.Amount1000 != nil {
-		return *x.Amount1000
+func (x *SyncdMutation) Reset() {
+	*x = SyncdMutation{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[96]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *RequestPaymentMessage) GetRequestFrom() string {
-	if x != nil && x.RequestFrom != nil {
-		return *x.RequestFrom
-	}
-	return ""
+func (x *SyncdMutation) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *RequestPaymentMessage) GetExpiryTimestamp() int64 {
-	if x != nil && x.ExpiryTimestamp != nil {
-		return *x.ExpiryTimestamp
+func (*SyncdMutation) ProtoMessage() {}
+
+func (x *SyncdMutation) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[96]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return 0
+	return mi.MessageOf(x)
 }
 
-func (x *RequestPaymentMessage) GetAmount() *Money {
-	if x != nil {
-		return x.Amount
+// Deprecated: Use SyncdMutation.ProtoReflect.Descriptor instead.
+func (*SyncdMutation) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{96}
+}
+
+func (x *SyncdMutation) GetOperation() SyncdMutation_SyncdOperation {
+	if x != nil && x.Operation != nil {
+		return *x.Operation
 	}
-	return nil
+	return SyncdMutation_SET
 }
 
-func (x *RequestPaymentMessage) GetBackground() *PaymentBackground {
+func (x *SyncdMutation) GetRecord() *SyncdRecord {
 	if x != nil {
-		return x.Background
+		return x.Record
 	}
 	return nil
 }
 
-type ReactionMessage struct {
+type SyncdIndex struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key               *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
-	Text              *string     `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
-	GroupingKey       *string     `protobuf:"bytes,3,opt,name=groupingKey" json:"groupingKey,omitempty"`
-	SenderTimestampMs *int64      `protobuf:"varint,4,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
+	Blob []byte `protobuf:"bytes,1,opt,name=blob" json:"blob,omitempty"`
 }
 
-func (x *ReactionMessage) Reset() {
-	*x = ReactionMessage{}
+func (x *SyncdIndex) Reset() {
+	*x = SyncdIndex{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[106]
+		mi := &file_binary_proto_def_proto_msgTypes[97]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ReactionMessage) String() string {
+func (x *SyncdIndex) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ReactionMessage) ProtoMessage() {}
+func (*SyncdIndex) ProtoMessage() {}
 
-func (x *ReactionMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[106]
+func (x *SyncdIndex) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[97]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12769,73 +12739,95 @@ func (x *ReactionMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ReactionMessage.ProtoReflect.Descriptor instead.
-func (*ReactionMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{106}
+// Deprecated: Use SyncdIndex.ProtoReflect.Descriptor instead.
+func (*SyncdIndex) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{97}
 }
 
-func (x *ReactionMessage) GetKey() *MessageKey {
+func (x *SyncdIndex) GetBlob() []byte {
 	if x != nil {
-		return x.Key
+		return x.Blob
 	}
 	return nil
 }
 
-func (x *ReactionMessage) GetText() string {
-	if x != nil && x.Text != nil {
-		return *x.Text
+type KeyId struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id []byte `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
+}
+
+func (x *KeyId) Reset() {
+	*x = KeyId{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[98]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (x *ReactionMessage) GetGroupingKey() string {
-	if x != nil && x.GroupingKey != nil {
-		return *x.GroupingKey
+func (x *KeyId) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KeyId) ProtoMessage() {}
+
+func (x *KeyId) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[98]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ""
+	return mi.MessageOf(x)
 }
 
-func (x *ReactionMessage) GetSenderTimestampMs() int64 {
-	if x != nil && x.SenderTimestampMs != nil {
-		return *x.SenderTimestampMs
+// Deprecated: Use KeyId.ProtoReflect.Descriptor instead.
+func (*KeyId) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{98}
+}
+
+func (x *KeyId) GetId() []byte {
+	if x != nil {
+		return x.Id
 	}
-	return 0
+	return nil
 }
 
-type ProtocolMessage struct {
+type ExternalBlobReference struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key                                    *MessageKey                             `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
-	Type                                   *ProtocolMessage_ProtocolMessageType    `protobuf:"varint,2,opt,name=type,enum=proto.ProtocolMessage_ProtocolMessageType" json:"type,omitempty"`
-	EphemeralExpiration                    *uint32                                 `protobuf:"varint,4,opt,name=ephemeralExpiration" json:"ephemeralExpiration,omitempty"`
-	EphemeralSettingTimestamp              *int64                                  `protobuf:"varint,5,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"`
-	HistorySyncNotification                *HistorySyncNotification                `protobuf:"bytes,6,opt,name=historySyncNotification" json:"historySyncNotification,omitempty"`
-	AppStateSyncKeyShare                   *AppStateSyncKeyShare                   `protobuf:"bytes,7,opt,name=appStateSyncKeyShare" json:"appStateSyncKeyShare,omitempty"`
-	AppStateSyncKeyRequest                 *AppStateSyncKeyRequest                 `protobuf:"bytes,8,opt,name=appStateSyncKeyRequest" json:"appStateSyncKeyRequest,omitempty"`
-	InitialSecurityNotificationSettingSync *InitialSecurityNotificationSettingSync `protobuf:"bytes,9,opt,name=initialSecurityNotificationSettingSync" json:"initialSecurityNotificationSettingSync,omitempty"`
-	AppStateFatalExceptionNotification     *AppStateFatalExceptionNotification     `protobuf:"bytes,10,opt,name=appStateFatalExceptionNotification" json:"appStateFatalExceptionNotification,omitempty"`
-	DisappearingMode                       *DisappearingMode                       `protobuf:"bytes,11,opt,name=disappearingMode" json:"disappearingMode,omitempty"`
+	MediaKey      []byte  `protobuf:"bytes,1,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	DirectPath    *string `protobuf:"bytes,2,opt,name=directPath" json:"directPath,omitempty"`
+	Handle        *string `protobuf:"bytes,3,opt,name=handle" json:"handle,omitempty"`
+	FileSizeBytes *uint64 `protobuf:"varint,4,opt,name=fileSizeBytes" json:"fileSizeBytes,omitempty"`
+	FileSha256    []byte  `protobuf:"bytes,5,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileEncSha256 []byte  `protobuf:"bytes,6,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
 }
 
-func (x *ProtocolMessage) Reset() {
-	*x = ProtocolMessage{}
+func (x *ExternalBlobReference) Reset() {
+	*x = ExternalBlobReference{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[107]
+		mi := &file_binary_proto_def_proto_msgTypes[99]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ProtocolMessage) String() string {
+func (x *ExternalBlobReference) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ProtocolMessage) ProtoMessage() {}
+func (*ExternalBlobReference) ProtoMessage() {}
 
-func (x *ProtocolMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[107]
+func (x *ExternalBlobReference) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[99]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12846,111 +12838,79 @@ func (x *ProtocolMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ProtocolMessage.ProtoReflect.Descriptor instead.
-func (*ProtocolMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{107}
+// Deprecated: Use ExternalBlobReference.ProtoReflect.Descriptor instead.
+func (*ExternalBlobReference) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{99}
 }
 
-func (x *ProtocolMessage) GetKey() *MessageKey {
+func (x *ExternalBlobReference) GetMediaKey() []byte {
 	if x != nil {
-		return x.Key
+		return x.MediaKey
 	}
 	return nil
 }
 
-func (x *ProtocolMessage) GetType() ProtocolMessage_ProtocolMessageType {
-	if x != nil && x.Type != nil {
-		return *x.Type
+func (x *ExternalBlobReference) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
 	}
-	return ProtocolMessage_REVOKE
+	return ""
 }
 
-func (x *ProtocolMessage) GetEphemeralExpiration() uint32 {
-	if x != nil && x.EphemeralExpiration != nil {
-		return *x.EphemeralExpiration
+func (x *ExternalBlobReference) GetHandle() string {
+	if x != nil && x.Handle != nil {
+		return *x.Handle
 	}
-	return 0
+	return ""
 }
 
-func (x *ProtocolMessage) GetEphemeralSettingTimestamp() int64 {
-	if x != nil && x.EphemeralSettingTimestamp != nil {
-		return *x.EphemeralSettingTimestamp
+func (x *ExternalBlobReference) GetFileSizeBytes() uint64 {
+	if x != nil && x.FileSizeBytes != nil {
+		return *x.FileSizeBytes
 	}
 	return 0
 }
 
-func (x *ProtocolMessage) GetHistorySyncNotification() *HistorySyncNotification {
-	if x != nil {
-		return x.HistorySyncNotification
-	}
-	return nil
-}
-
-func (x *ProtocolMessage) GetAppStateSyncKeyShare() *AppStateSyncKeyShare {
-	if x != nil {
-		return x.AppStateSyncKeyShare
-	}
-	return nil
-}
-
-func (x *ProtocolMessage) GetAppStateSyncKeyRequest() *AppStateSyncKeyRequest {
-	if x != nil {
-		return x.AppStateSyncKeyRequest
-	}
-	return nil
-}
-
-func (x *ProtocolMessage) GetInitialSecurityNotificationSettingSync() *InitialSecurityNotificationSettingSync {
-	if x != nil {
-		return x.InitialSecurityNotificationSettingSync
-	}
-	return nil
-}
-
-func (x *ProtocolMessage) GetAppStateFatalExceptionNotification() *AppStateFatalExceptionNotification {
+func (x *ExternalBlobReference) GetFileSha256() []byte {
 	if x != nil {
-		return x.AppStateFatalExceptionNotification
+		return x.FileSha256
 	}
 	return nil
 }
 
-func (x *ProtocolMessage) GetDisappearingMode() *DisappearingMode {
+func (x *ExternalBlobReference) GetFileEncSha256() []byte {
 	if x != nil {
-		return x.DisappearingMode
+		return x.FileEncSha256
 	}
 	return nil
 }
 
-type ProductMessage struct {
+type ExitCode struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Product          *ProductSnapshot `protobuf:"bytes,1,opt,name=product" json:"product,omitempty"`
-	BusinessOwnerJid *string          `protobuf:"bytes,2,opt,name=businessOwnerJid" json:"businessOwnerJid,omitempty"`
-	Catalog          *CatalogSnapshot `protobuf:"bytes,4,opt,name=catalog" json:"catalog,omitempty"`
-	Body             *string          `protobuf:"bytes,5,opt,name=body" json:"body,omitempty"`
-	Footer           *string          `protobuf:"bytes,6,opt,name=footer" json:"footer,omitempty"`
-	ContextInfo      *ContextInfo     `protobuf:"bytes,17,opt,name=contextInfo" json:"contextInfo,omitempty"`
+	Code *uint64 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"`
+	Text *string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
 }
 
-func (x *ProductMessage) Reset() {
-	*x = ProductMessage{}
+func (x *ExitCode) Reset() {
+	*x = ExitCode{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[108]
+		mi := &file_binary_proto_def_proto_msgTypes[100]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ProductMessage) String() string {
+func (x *ExitCode) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ProductMessage) ProtoMessage() {}
+func (*ExitCode) ProtoMessage() {}
 
-func (x *ProductMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[108]
+func (x *ExitCode) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[100]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -12961,79 +12921,77 @@ func (x *ProductMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ProductMessage.ProtoReflect.Descriptor instead.
-func (*ProductMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{108}
-}
-
-func (x *ProductMessage) GetProduct() *ProductSnapshot {
-	if x != nil {
-		return x.Product
-	}
-	return nil
-}
-
-func (x *ProductMessage) GetBusinessOwnerJid() string {
-	if x != nil && x.BusinessOwnerJid != nil {
-		return *x.BusinessOwnerJid
-	}
-	return ""
-}
-
-func (x *ProductMessage) GetCatalog() *CatalogSnapshot {
-	if x != nil {
-		return x.Catalog
-	}
-	return nil
+// Deprecated: Use ExitCode.ProtoReflect.Descriptor instead.
+func (*ExitCode) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{100}
 }
 
-func (x *ProductMessage) GetBody() string {
-	if x != nil && x.Body != nil {
-		return *x.Body
+func (x *ExitCode) GetCode() uint64 {
+	if x != nil && x.Code != nil {
+		return *x.Code
 	}
-	return ""
+	return 0
 }
 
-func (x *ProductMessage) GetFooter() string {
-	if x != nil && x.Footer != nil {
-		return *x.Footer
+func (x *ExitCode) GetText() string {
+	if x != nil && x.Text != nil {
+		return *x.Text
 	}
 	return ""
 }
 
-func (x *ProductMessage) GetContextInfo() *ContextInfo {
-	if x != nil {
-		return x.ContextInfo
-	}
-	return nil
-}
-
-type EphemeralSetting struct {
+type SyncActionValue struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Duration  *int32 `protobuf:"fixed32,1,opt,name=duration" json:"duration,omitempty"`
-	Timestamp *int64 `protobuf:"fixed64,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	Timestamp                   *int64                       `protobuf:"varint,1,opt,name=timestamp" json:"timestamp,omitempty"`
+	StarAction                  *StarAction                  `protobuf:"bytes,2,opt,name=starAction" json:"starAction,omitempty"`
+	ContactAction               *ContactAction               `protobuf:"bytes,3,opt,name=contactAction" json:"contactAction,omitempty"`
+	MuteAction                  *MuteAction                  `protobuf:"bytes,4,opt,name=muteAction" json:"muteAction,omitempty"`
+	PinAction                   *PinAction                   `protobuf:"bytes,5,opt,name=pinAction" json:"pinAction,omitempty"`
+	SecurityNotificationSetting *SecurityNotificationSetting `protobuf:"bytes,6,opt,name=securityNotificationSetting" json:"securityNotificationSetting,omitempty"`
+	PushNameSetting             *PushNameSetting             `protobuf:"bytes,7,opt,name=pushNameSetting" json:"pushNameSetting,omitempty"`
+	QuickReplyAction            *QuickReplyAction            `protobuf:"bytes,8,opt,name=quickReplyAction" json:"quickReplyAction,omitempty"`
+	RecentEmojiWeightsAction    *RecentEmojiWeightsAction    `protobuf:"bytes,11,opt,name=recentEmojiWeightsAction" json:"recentEmojiWeightsAction,omitempty"`
+	LabelEditAction             *LabelEditAction             `protobuf:"bytes,14,opt,name=labelEditAction" json:"labelEditAction,omitempty"`
+	LabelAssociationAction      *LabelAssociationAction      `protobuf:"bytes,15,opt,name=labelAssociationAction" json:"labelAssociationAction,omitempty"`
+	LocaleSetting               *LocaleSetting               `protobuf:"bytes,16,opt,name=localeSetting" json:"localeSetting,omitempty"`
+	ArchiveChatAction           *ArchiveChatAction           `protobuf:"bytes,17,opt,name=archiveChatAction" json:"archiveChatAction,omitempty"`
+	DeleteMessageForMeAction    *DeleteMessageForMeAction    `protobuf:"bytes,18,opt,name=deleteMessageForMeAction" json:"deleteMessageForMeAction,omitempty"`
+	KeyExpiration               *KeyExpiration               `protobuf:"bytes,19,opt,name=keyExpiration" json:"keyExpiration,omitempty"`
+	MarkChatAsReadAction        *MarkChatAsReadAction        `protobuf:"bytes,20,opt,name=markChatAsReadAction" json:"markChatAsReadAction,omitempty"`
+	ClearChatAction             *ClearChatAction             `protobuf:"bytes,21,opt,name=clearChatAction" json:"clearChatAction,omitempty"`
+	DeleteChatAction            *DeleteChatAction            `protobuf:"bytes,22,opt,name=deleteChatAction" json:"deleteChatAction,omitempty"`
+	UnarchiveChatsSetting       *UnarchiveChatsSetting       `protobuf:"bytes,23,opt,name=unarchiveChatsSetting" json:"unarchiveChatsSetting,omitempty"`
+	PrimaryFeature              *PrimaryFeature              `protobuf:"bytes,24,opt,name=primaryFeature" json:"primaryFeature,omitempty"`
+	AndroidUnsupportedActions   *AndroidUnsupportedActions   `protobuf:"bytes,26,opt,name=androidUnsupportedActions" json:"androidUnsupportedActions,omitempty"`
+	AgentAction                 *AgentAction                 `protobuf:"bytes,27,opt,name=agentAction" json:"agentAction,omitempty"`
+	SubscriptionAction          *SubscriptionAction          `protobuf:"bytes,28,opt,name=subscriptionAction" json:"subscriptionAction,omitempty"`
+	UserStatusMuteAction        *UserStatusMuteAction        `protobuf:"bytes,29,opt,name=userStatusMuteAction" json:"userStatusMuteAction,omitempty"`
+	TimeFormatAction            *TimeFormatAction            `protobuf:"bytes,30,opt,name=timeFormatAction" json:"timeFormatAction,omitempty"`
+	NuxAction                   *NuxAction                   `protobuf:"bytes,31,opt,name=nuxAction" json:"nuxAction,omitempty"`
+	PrimaryVersionAction        *PrimaryVersionAction        `protobuf:"bytes,32,opt,name=primaryVersionAction" json:"primaryVersionAction,omitempty"`
+	StickerAction               *StickerAction               `protobuf:"bytes,33,opt,name=stickerAction" json:"stickerAction,omitempty"`
 }
 
-func (x *EphemeralSetting) Reset() {
-	*x = EphemeralSetting{}
+func (x *SyncActionValue) Reset() {
+	*x = SyncActionValue{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[109]
+		mi := &file_binary_proto_def_proto_msgTypes[101]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *EphemeralSetting) String() string {
+func (x *SyncActionValue) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*EphemeralSetting) ProtoMessage() {}
+func (*SyncActionValue) ProtoMessage() {}
 
-func (x *EphemeralSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[109]
+func (x *SyncActionValue) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[101]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -13044,272 +13002,232 @@ func (x *EphemeralSetting) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use EphemeralSetting.ProtoReflect.Descriptor instead.
-func (*EphemeralSetting) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{109}
+// Deprecated: Use SyncActionValue.ProtoReflect.Descriptor instead.
+func (*SyncActionValue) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{101}
 }
 
-func (x *EphemeralSetting) GetDuration() int32 {
-	if x != nil && x.Duration != nil {
-		return *x.Duration
+func (x *SyncActionValue) GetTimestamp() int64 {
+	if x != nil && x.Timestamp != nil {
+		return *x.Timestamp
 	}
 	return 0
 }
 
-func (x *EphemeralSetting) GetTimestamp() int64 {
-	if x != nil && x.Timestamp != nil {
-		return *x.Timestamp
+func (x *SyncActionValue) GetStarAction() *StarAction {
+	if x != nil {
+		return x.StarAction
 	}
-	return 0
+	return nil
 }
 
-type WallpaperSettings struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
+func (x *SyncActionValue) GetContactAction() *ContactAction {
+	if x != nil {
+		return x.ContactAction
+	}
+	return nil
+}
 
-	Filename *string `protobuf:"bytes,1,opt,name=filename" json:"filename,omitempty"`
-	Opacity  *uint32 `protobuf:"varint,2,opt,name=opacity" json:"opacity,omitempty"`
+func (x *SyncActionValue) GetMuteAction() *MuteAction {
+	if x != nil {
+		return x.MuteAction
+	}
+	return nil
 }
 
-func (x *WallpaperSettings) Reset() {
-	*x = WallpaperSettings{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[110]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *SyncActionValue) GetPinAction() *PinAction {
+	if x != nil {
+		return x.PinAction
 	}
+	return nil
 }
 
-func (x *WallpaperSettings) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *SyncActionValue) GetSecurityNotificationSetting() *SecurityNotificationSetting {
+	if x != nil {
+		return x.SecurityNotificationSetting
+	}
+	return nil
 }
 
-func (*WallpaperSettings) ProtoMessage() {}
+func (x *SyncActionValue) GetPushNameSetting() *PushNameSetting {
+	if x != nil {
+		return x.PushNameSetting
+	}
+	return nil
+}
 
-func (x *WallpaperSettings) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[110]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *SyncActionValue) GetQuickReplyAction() *QuickReplyAction {
+	if x != nil {
+		return x.QuickReplyAction
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use WallpaperSettings.ProtoReflect.Descriptor instead.
-func (*WallpaperSettings) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{110}
+func (x *SyncActionValue) GetRecentEmojiWeightsAction() *RecentEmojiWeightsAction {
+	if x != nil {
+		return x.RecentEmojiWeightsAction
+	}
+	return nil
 }
 
-func (x *WallpaperSettings) GetFilename() string {
-	if x != nil && x.Filename != nil {
-		return *x.Filename
+func (x *SyncActionValue) GetLabelEditAction() *LabelEditAction {
+	if x != nil {
+		return x.LabelEditAction
 	}
-	return ""
+	return nil
 }
 
-func (x *WallpaperSettings) GetOpacity() uint32 {
-	if x != nil && x.Opacity != nil {
-		return *x.Opacity
+func (x *SyncActionValue) GetLabelAssociationAction() *LabelAssociationAction {
+	if x != nil {
+		return x.LabelAssociationAction
 	}
-	return 0
+	return nil
 }
 
-type Pushname struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Id       *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
-	Pushname *string `protobuf:"bytes,2,opt,name=pushname" json:"pushname,omitempty"`
-}
-
-func (x *Pushname) Reset() {
-	*x = Pushname{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[111]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *SyncActionValue) GetLocaleSetting() *LocaleSetting {
+	if x != nil {
+		return x.LocaleSetting
 	}
+	return nil
 }
 
-func (x *Pushname) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Pushname) ProtoMessage() {}
-
-func (x *Pushname) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[111]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *SyncActionValue) GetArchiveChatAction() *ArchiveChatAction {
+	if x != nil {
+		return x.ArchiveChatAction
 	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Pushname.ProtoReflect.Descriptor instead.
-func (*Pushname) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{111}
+	return nil
 }
 
-func (x *Pushname) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
+func (x *SyncActionValue) GetDeleteMessageForMeAction() *DeleteMessageForMeAction {
+	if x != nil {
+		return x.DeleteMessageForMeAction
 	}
-	return ""
+	return nil
 }
 
-func (x *Pushname) GetPushname() string {
-	if x != nil && x.Pushname != nil {
-		return *x.Pushname
+func (x *SyncActionValue) GetKeyExpiration() *KeyExpiration {
+	if x != nil {
+		return x.KeyExpiration
 	}
-	return ""
-}
-
-type HistorySync struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SyncType                *HistorySync_HistorySyncHistorySyncType `protobuf:"varint,1,req,name=syncType,enum=proto.HistorySync_HistorySyncHistorySyncType" json:"syncType,omitempty"`
-	Conversations           []*Conversation                         `protobuf:"bytes,2,rep,name=conversations" json:"conversations,omitempty"`
-	StatusV3Messages        []*WebMessageInfo                       `protobuf:"bytes,3,rep,name=statusV3Messages" json:"statusV3Messages,omitempty"`
-	ChunkOrder              *uint32                                 `protobuf:"varint,5,opt,name=chunkOrder" json:"chunkOrder,omitempty"`
-	Progress                *uint32                                 `protobuf:"varint,6,opt,name=progress" json:"progress,omitempty"`
-	Pushnames               []*Pushname                             `protobuf:"bytes,7,rep,name=pushnames" json:"pushnames,omitempty"`
-	GlobalSettings          *GlobalSettings                         `protobuf:"bytes,8,opt,name=globalSettings" json:"globalSettings,omitempty"`
-	ThreadIdUserSecret      []byte                                  `protobuf:"bytes,9,opt,name=threadIdUserSecret" json:"threadIdUserSecret,omitempty"`
-	ThreadDsTimeframeOffset *uint32                                 `protobuf:"varint,10,opt,name=threadDsTimeframeOffset" json:"threadDsTimeframeOffset,omitempty"`
+	return nil
 }
 
-func (x *HistorySync) Reset() {
-	*x = HistorySync{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[112]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *SyncActionValue) GetMarkChatAsReadAction() *MarkChatAsReadAction {
+	if x != nil {
+		return x.MarkChatAsReadAction
 	}
+	return nil
 }
 
-func (x *HistorySync) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *SyncActionValue) GetClearChatAction() *ClearChatAction {
+	if x != nil {
+		return x.ClearChatAction
+	}
+	return nil
 }
 
-func (*HistorySync) ProtoMessage() {}
-
-func (x *HistorySync) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[112]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *SyncActionValue) GetDeleteChatAction() *DeleteChatAction {
+	if x != nil {
+		return x.DeleteChatAction
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use HistorySync.ProtoReflect.Descriptor instead.
-func (*HistorySync) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{112}
+func (x *SyncActionValue) GetUnarchiveChatsSetting() *UnarchiveChatsSetting {
+	if x != nil {
+		return x.UnarchiveChatsSetting
+	}
+	return nil
 }
 
-func (x *HistorySync) GetSyncType() HistorySync_HistorySyncHistorySyncType {
-	if x != nil && x.SyncType != nil {
-		return *x.SyncType
+func (x *SyncActionValue) GetPrimaryFeature() *PrimaryFeature {
+	if x != nil {
+		return x.PrimaryFeature
 	}
-	return HistorySync_INITIAL_BOOTSTRAP
+	return nil
 }
 
-func (x *HistorySync) GetConversations() []*Conversation {
+func (x *SyncActionValue) GetAndroidUnsupportedActions() *AndroidUnsupportedActions {
 	if x != nil {
-		return x.Conversations
+		return x.AndroidUnsupportedActions
 	}
 	return nil
 }
 
-func (x *HistorySync) GetStatusV3Messages() []*WebMessageInfo {
+func (x *SyncActionValue) GetAgentAction() *AgentAction {
 	if x != nil {
-		return x.StatusV3Messages
+		return x.AgentAction
 	}
 	return nil
 }
 
-func (x *HistorySync) GetChunkOrder() uint32 {
-	if x != nil && x.ChunkOrder != nil {
-		return *x.ChunkOrder
+func (x *SyncActionValue) GetSubscriptionAction() *SubscriptionAction {
+	if x != nil {
+		return x.SubscriptionAction
 	}
-	return 0
+	return nil
 }
 
-func (x *HistorySync) GetProgress() uint32 {
-	if x != nil && x.Progress != nil {
-		return *x.Progress
+func (x *SyncActionValue) GetUserStatusMuteAction() *UserStatusMuteAction {
+	if x != nil {
+		return x.UserStatusMuteAction
 	}
-	return 0
+	return nil
 }
 
-func (x *HistorySync) GetPushnames() []*Pushname {
+func (x *SyncActionValue) GetTimeFormatAction() *TimeFormatAction {
 	if x != nil {
-		return x.Pushnames
+		return x.TimeFormatAction
 	}
 	return nil
 }
 
-func (x *HistorySync) GetGlobalSettings() *GlobalSettings {
+func (x *SyncActionValue) GetNuxAction() *NuxAction {
 	if x != nil {
-		return x.GlobalSettings
+		return x.NuxAction
 	}
 	return nil
 }
 
-func (x *HistorySync) GetThreadIdUserSecret() []byte {
+func (x *SyncActionValue) GetPrimaryVersionAction() *PrimaryVersionAction {
 	if x != nil {
-		return x.ThreadIdUserSecret
+		return x.PrimaryVersionAction
 	}
 	return nil
 }
 
-func (x *HistorySync) GetThreadDsTimeframeOffset() uint32 {
-	if x != nil && x.ThreadDsTimeframeOffset != nil {
-		return *x.ThreadDsTimeframeOffset
+func (x *SyncActionValue) GetStickerAction() *StickerAction {
+	if x != nil {
+		return x.StickerAction
 	}
-	return 0
+	return nil
 }
 
-type HistorySyncMsg struct {
+type UserStatusMuteAction struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Message    *WebMessageInfo `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
-	MsgOrderId *uint64         `protobuf:"varint,2,opt,name=msgOrderId" json:"msgOrderId,omitempty"`
+	Muted *bool `protobuf:"varint,1,opt,name=muted" json:"muted,omitempty"`
 }
 
-func (x *HistorySyncMsg) Reset() {
-	*x = HistorySyncMsg{}
+func (x *UserStatusMuteAction) Reset() {
+	*x = UserStatusMuteAction{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[113]
+		mi := &file_binary_proto_def_proto_msgTypes[102]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HistorySyncMsg) String() string {
+func (x *UserStatusMuteAction) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HistorySyncMsg) ProtoMessage() {}
+func (*UserStatusMuteAction) ProtoMessage() {}
 
-func (x *HistorySyncMsg) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[113]
+func (x *UserStatusMuteAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[102]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -13320,51 +13238,43 @@ func (x *HistorySyncMsg) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HistorySyncMsg.ProtoReflect.Descriptor instead.
-func (*HistorySyncMsg) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{113}
-}
-
-func (x *HistorySyncMsg) GetMessage() *WebMessageInfo {
-	if x != nil {
-		return x.Message
-	}
-	return nil
+// Deprecated: Use UserStatusMuteAction.ProtoReflect.Descriptor instead.
+func (*UserStatusMuteAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{102}
 }
 
-func (x *HistorySyncMsg) GetMsgOrderId() uint64 {
-	if x != nil && x.MsgOrderId != nil {
-		return *x.MsgOrderId
+func (x *UserStatusMuteAction) GetMuted() bool {
+	if x != nil && x.Muted != nil {
+		return *x.Muted
 	}
-	return 0
+	return false
 }
 
-type GroupParticipant struct {
+type UnarchiveChatsSetting struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	UserJid *string                                `protobuf:"bytes,1,req,name=userJid" json:"userJid,omitempty"`
-	Rank    *GroupParticipant_GroupParticipantRank `protobuf:"varint,2,opt,name=rank,enum=proto.GroupParticipant_GroupParticipantRank" json:"rank,omitempty"`
+	UnarchiveChats *bool `protobuf:"varint,1,opt,name=unarchiveChats" json:"unarchiveChats,omitempty"`
 }
 
-func (x *GroupParticipant) Reset() {
-	*x = GroupParticipant{}
+func (x *UnarchiveChatsSetting) Reset() {
+	*x = UnarchiveChatsSetting{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[114]
+		mi := &file_binary_proto_def_proto_msgTypes[103]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *GroupParticipant) String() string {
+func (x *UnarchiveChatsSetting) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GroupParticipant) ProtoMessage() {}
+func (*UnarchiveChatsSetting) ProtoMessage() {}
 
-func (x *GroupParticipant) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[114]
+func (x *UnarchiveChatsSetting) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[103]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -13375,59 +13285,43 @@ func (x *GroupParticipant) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GroupParticipant.ProtoReflect.Descriptor instead.
-func (*GroupParticipant) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{114}
-}
-
-func (x *GroupParticipant) GetUserJid() string {
-	if x != nil && x.UserJid != nil {
-		return *x.UserJid
-	}
-	return ""
+// Deprecated: Use UnarchiveChatsSetting.ProtoReflect.Descriptor instead.
+func (*UnarchiveChatsSetting) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{103}
 }
 
-func (x *GroupParticipant) GetRank() GroupParticipant_GroupParticipantRank {
-	if x != nil && x.Rank != nil {
-		return *x.Rank
+func (x *UnarchiveChatsSetting) GetUnarchiveChats() bool {
+	if x != nil && x.UnarchiveChats != nil {
+		return *x.UnarchiveChats
 	}
-	return GroupParticipant_REGULAR
+	return false
 }
 
-type GlobalSettings struct {
+type TimeFormatAction struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	LightThemeWallpaper                *WallpaperSettings    `protobuf:"bytes,1,opt,name=lightThemeWallpaper" json:"lightThemeWallpaper,omitempty"`
-	MediaVisibility                    *MediaVisibility      `protobuf:"varint,2,opt,name=mediaVisibility,enum=proto.MediaVisibility" json:"mediaVisibility,omitempty"`
-	DarkThemeWallpaper                 *WallpaperSettings    `protobuf:"bytes,3,opt,name=darkThemeWallpaper" json:"darkThemeWallpaper,omitempty"`
-	AutoDownloadWiFi                   *AutoDownloadSettings `protobuf:"bytes,4,opt,name=autoDownloadWiFi" json:"autoDownloadWiFi,omitempty"`
-	AutoDownloadCellular               *AutoDownloadSettings `protobuf:"bytes,5,opt,name=autoDownloadCellular" json:"autoDownloadCellular,omitempty"`
-	AutoDownloadRoaming                *AutoDownloadSettings `protobuf:"bytes,6,opt,name=autoDownloadRoaming" json:"autoDownloadRoaming,omitempty"`
-	ShowIndividualNotificationsPreview *bool                 `protobuf:"varint,7,opt,name=showIndividualNotificationsPreview" json:"showIndividualNotificationsPreview,omitempty"`
-	ShowGroupNotificationsPreview      *bool                 `protobuf:"varint,8,opt,name=showGroupNotificationsPreview" json:"showGroupNotificationsPreview,omitempty"`
-	DisappearingModeDuration           *int32                `protobuf:"varint,9,opt,name=disappearingModeDuration" json:"disappearingModeDuration,omitempty"`
-	DisappearingModeTimestamp          *int64                `protobuf:"varint,10,opt,name=disappearingModeTimestamp" json:"disappearingModeTimestamp,omitempty"`
+	IsTwentyFourHourFormatEnabled *bool `protobuf:"varint,1,opt,name=isTwentyFourHourFormatEnabled" json:"isTwentyFourHourFormatEnabled,omitempty"`
 }
 
-func (x *GlobalSettings) Reset() {
-	*x = GlobalSettings{}
+func (x *TimeFormatAction) Reset() {
+	*x = TimeFormatAction{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[115]
+		mi := &file_binary_proto_def_proto_msgTypes[104]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *GlobalSettings) String() string {
+func (x *TimeFormatAction) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*GlobalSettings) ProtoMessage() {}
+func (*TimeFormatAction) ProtoMessage() {}
 
-func (x *GlobalSettings) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[115]
+func (x *TimeFormatAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[104]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -13438,145 +13332,100 @@ func (x *GlobalSettings) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use GlobalSettings.ProtoReflect.Descriptor instead.
-func (*GlobalSettings) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{115}
+// Deprecated: Use TimeFormatAction.ProtoReflect.Descriptor instead.
+func (*TimeFormatAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{104}
 }
 
-func (x *GlobalSettings) GetLightThemeWallpaper() *WallpaperSettings {
-	if x != nil {
-		return x.LightThemeWallpaper
+func (x *TimeFormatAction) GetIsTwentyFourHourFormatEnabled() bool {
+	if x != nil && x.IsTwentyFourHourFormatEnabled != nil {
+		return *x.IsTwentyFourHourFormatEnabled
 	}
-	return nil
+	return false
 }
 
-func (x *GlobalSettings) GetMediaVisibility() MediaVisibility {
-	if x != nil && x.MediaVisibility != nil {
-		return *x.MediaVisibility
-	}
-	return MediaVisibility_DEFAULT
-}
+type SyncActionMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *GlobalSettings) GetDarkThemeWallpaper() *WallpaperSettings {
-	if x != nil {
-		return x.DarkThemeWallpaper
-	}
-	return nil
+	Key       *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+	Timestamp *int64      `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
 }
 
-func (x *GlobalSettings) GetAutoDownloadWiFi() *AutoDownloadSettings {
-	if x != nil {
-		return x.AutoDownloadWiFi
+func (x *SyncActionMessage) Reset() {
+	*x = SyncActionMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[105]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *GlobalSettings) GetAutoDownloadCellular() *AutoDownloadSettings {
-	if x != nil {
-		return x.AutoDownloadCellular
-	}
-	return nil
+func (x *SyncActionMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *GlobalSettings) GetAutoDownloadRoaming() *AutoDownloadSettings {
-	if x != nil {
-		return x.AutoDownloadRoaming
-	}
-	return nil
-}
+func (*SyncActionMessage) ProtoMessage() {}
 
-func (x *GlobalSettings) GetShowIndividualNotificationsPreview() bool {
-	if x != nil && x.ShowIndividualNotificationsPreview != nil {
-		return *x.ShowIndividualNotificationsPreview
+func (x *SyncActionMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[105]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return false
+	return mi.MessageOf(x)
 }
 
-func (x *GlobalSettings) GetShowGroupNotificationsPreview() bool {
-	if x != nil && x.ShowGroupNotificationsPreview != nil {
-		return *x.ShowGroupNotificationsPreview
-	}
-	return false
+// Deprecated: Use SyncActionMessage.ProtoReflect.Descriptor instead.
+func (*SyncActionMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{105}
 }
 
-func (x *GlobalSettings) GetDisappearingModeDuration() int32 {
-	if x != nil && x.DisappearingModeDuration != nil {
-		return *x.DisappearingModeDuration
+func (x *SyncActionMessage) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
 	}
-	return 0
+	return nil
 }
 
-func (x *GlobalSettings) GetDisappearingModeTimestamp() int64 {
-	if x != nil && x.DisappearingModeTimestamp != nil {
-		return *x.DisappearingModeTimestamp
+func (x *SyncActionMessage) GetTimestamp() int64 {
+	if x != nil && x.Timestamp != nil {
+		return *x.Timestamp
 	}
 	return 0
 }
 
-type Conversation struct {
+type SyncActionMessageRange struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Id                        *string                                            `protobuf:"bytes,1,req,name=id" json:"id,omitempty"`
-	Messages                  []*HistorySyncMsg                                  `protobuf:"bytes,2,rep,name=messages" json:"messages,omitempty"`
-	NewJid                    *string                                            `protobuf:"bytes,3,opt,name=newJid" json:"newJid,omitempty"`
-	OldJid                    *string                                            `protobuf:"bytes,4,opt,name=oldJid" json:"oldJid,omitempty"`
-	LastMsgTimestamp          *uint64                                            `protobuf:"varint,5,opt,name=lastMsgTimestamp" json:"lastMsgTimestamp,omitempty"`
-	UnreadCount               *uint32                                            `protobuf:"varint,6,opt,name=unreadCount" json:"unreadCount,omitempty"`
-	ReadOnly                  *bool                                              `protobuf:"varint,7,opt,name=readOnly" json:"readOnly,omitempty"`
-	EndOfHistoryTransfer      *bool                                              `protobuf:"varint,8,opt,name=endOfHistoryTransfer" json:"endOfHistoryTransfer,omitempty"`
-	EphemeralExpiration       *uint32                                            `protobuf:"varint,9,opt,name=ephemeralExpiration" json:"ephemeralExpiration,omitempty"`
-	EphemeralSettingTimestamp *int64                                             `protobuf:"varint,10,opt,name=ephemeralSettingTimestamp" json:"ephemeralSettingTimestamp,omitempty"`
-	EndOfHistoryTransferType  *Conversation_ConversationEndOfHistoryTransferType `protobuf:"varint,11,opt,name=endOfHistoryTransferType,enum=proto.Conversation_ConversationEndOfHistoryTransferType" json:"endOfHistoryTransferType,omitempty"`
-	ConversationTimestamp     *uint64                                            `protobuf:"varint,12,opt,name=conversationTimestamp" json:"conversationTimestamp,omitempty"`
-	Name                      *string                                            `protobuf:"bytes,13,opt,name=name" json:"name,omitempty"`
-	PHash                     *string                                            `protobuf:"bytes,14,opt,name=pHash" json:"pHash,omitempty"`
-	NotSpam                   *bool                                              `protobuf:"varint,15,opt,name=notSpam" json:"notSpam,omitempty"`
-	Archived                  *bool                                              `protobuf:"varint,16,opt,name=archived" json:"archived,omitempty"`
-	DisappearingMode          *DisappearingMode                                  `protobuf:"bytes,17,opt,name=disappearingMode" json:"disappearingMode,omitempty"`
-	UnreadMentionCount        *uint32                                            `protobuf:"varint,18,opt,name=unreadMentionCount" json:"unreadMentionCount,omitempty"`
-	MarkedAsUnread            *bool                                              `protobuf:"varint,19,opt,name=markedAsUnread" json:"markedAsUnread,omitempty"`
-	Participant               []*GroupParticipant                                `protobuf:"bytes,20,rep,name=participant" json:"participant,omitempty"`
-	TcToken                   []byte                                             `protobuf:"bytes,21,opt,name=tcToken" json:"tcToken,omitempty"`
-	TcTokenTimestamp          *uint64                                            `protobuf:"varint,22,opt,name=tcTokenTimestamp" json:"tcTokenTimestamp,omitempty"`
-	ContactPrimaryIdentityKey []byte                                             `protobuf:"bytes,23,opt,name=contactPrimaryIdentityKey" json:"contactPrimaryIdentityKey,omitempty"`
-	Pinned                    *uint32                                            `protobuf:"varint,24,opt,name=pinned" json:"pinned,omitempty"`
-	MuteEndTime               *uint64                                            `protobuf:"varint,25,opt,name=muteEndTime" json:"muteEndTime,omitempty"`
-	Wallpaper                 *WallpaperSettings                                 `protobuf:"bytes,26,opt,name=wallpaper" json:"wallpaper,omitempty"`
-	MediaVisibility           *MediaVisibility                                   `protobuf:"varint,27,opt,name=mediaVisibility,enum=proto.MediaVisibility" json:"mediaVisibility,omitempty"`
-	TcTokenSenderTimestamp    *uint64                                            `protobuf:"varint,28,opt,name=tcTokenSenderTimestamp" json:"tcTokenSenderTimestamp,omitempty"`
-	Suspended                 *bool                                              `protobuf:"varint,29,opt,name=suspended" json:"suspended,omitempty"`
-	Terminated                *bool                                              `protobuf:"varint,30,opt,name=terminated" json:"terminated,omitempty"`
-	CreatedAt                 *uint64                                            `protobuf:"varint,31,opt,name=createdAt" json:"createdAt,omitempty"`
-	CreatedBy                 *string                                            `protobuf:"bytes,32,opt,name=createdBy" json:"createdBy,omitempty"`
-	Description               *string                                            `protobuf:"bytes,33,opt,name=description" json:"description,omitempty"`
-	Support                   *bool                                              `protobuf:"varint,34,opt,name=support" json:"support,omitempty"`
-	IsParentGroup             *bool                                              `protobuf:"varint,35,opt,name=isParentGroup" json:"isParentGroup,omitempty"`
-	IsDefaultSubgroup         *bool                                              `protobuf:"varint,36,opt,name=isDefaultSubgroup" json:"isDefaultSubgroup,omitempty"`
-	ParentGroupId             *string                                            `protobuf:"bytes,37,opt,name=parentGroupId" json:"parentGroupId,omitempty"`
-	DisplayName               *string                                            `protobuf:"bytes,38,opt,name=displayName" json:"displayName,omitempty"`
-	PnJid                     *string                                            `protobuf:"bytes,39,opt,name=pnJid" json:"pnJid,omitempty"`
-	SelfMasked                *bool                                              `protobuf:"varint,40,opt,name=selfMasked" json:"selfMasked,omitempty"`
+	LastMessageTimestamp       *int64               `protobuf:"varint,1,opt,name=lastMessageTimestamp" json:"lastMessageTimestamp,omitempty"`
+	LastSystemMessageTimestamp *int64               `protobuf:"varint,2,opt,name=lastSystemMessageTimestamp" json:"lastSystemMessageTimestamp,omitempty"`
+	Messages                   []*SyncActionMessage `protobuf:"bytes,3,rep,name=messages" json:"messages,omitempty"`
 }
 
-func (x *Conversation) Reset() {
-	*x = Conversation{}
+func (x *SyncActionMessageRange) Reset() {
+	*x = SyncActionMessageRange{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[116]
+		mi := &file_binary_proto_def_proto_msgTypes[106]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Conversation) String() string {
+func (x *SyncActionMessageRange) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Conversation) ProtoMessage() {}
+func (*SyncActionMessageRange) ProtoMessage() {}
 
-func (x *Conversation) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[116]
+func (x *SyncActionMessageRange) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[106]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -13587,319 +13436,1173 @@ func (x *Conversation) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Conversation.ProtoReflect.Descriptor instead.
-func (*Conversation) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{116}
+// Deprecated: Use SyncActionMessageRange.ProtoReflect.Descriptor instead.
+func (*SyncActionMessageRange) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{106}
 }
 
-func (x *Conversation) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
+func (x *SyncActionMessageRange) GetLastMessageTimestamp() int64 {
+	if x != nil && x.LastMessageTimestamp != nil {
+		return *x.LastMessageTimestamp
 	}
-	return ""
+	return 0
 }
 
-func (x *Conversation) GetMessages() []*HistorySyncMsg {
+func (x *SyncActionMessageRange) GetLastSystemMessageTimestamp() int64 {
+	if x != nil && x.LastSystemMessageTimestamp != nil {
+		return *x.LastSystemMessageTimestamp
+	}
+	return 0
+}
+
+func (x *SyncActionMessageRange) GetMessages() []*SyncActionMessage {
 	if x != nil {
 		return x.Messages
 	}
 	return nil
 }
 
-func (x *Conversation) GetNewJid() string {
-	if x != nil && x.NewJid != nil {
-		return *x.NewJid
-	}
-	return ""
+type SubscriptionAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	IsDeactivated  *bool  `protobuf:"varint,1,opt,name=isDeactivated" json:"isDeactivated,omitempty"`
+	IsAutoRenewing *bool  `protobuf:"varint,2,opt,name=isAutoRenewing" json:"isAutoRenewing,omitempty"`
+	ExpirationDate *int64 `protobuf:"varint,3,opt,name=expirationDate" json:"expirationDate,omitempty"`
 }
 
-func (x *Conversation) GetOldJid() string {
-	if x != nil && x.OldJid != nil {
-		return *x.OldJid
+func (x *SubscriptionAction) Reset() {
+	*x = SubscriptionAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[107]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (x *Conversation) GetLastMsgTimestamp() uint64 {
-	if x != nil && x.LastMsgTimestamp != nil {
-		return *x.LastMsgTimestamp
-	}
-	return 0
+func (x *SubscriptionAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *Conversation) GetUnreadCount() uint32 {
-	if x != nil && x.UnreadCount != nil {
-		return *x.UnreadCount
+func (*SubscriptionAction) ProtoMessage() {}
+
+func (x *SubscriptionAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[107]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return 0
+	return mi.MessageOf(x)
 }
 
-func (x *Conversation) GetReadOnly() bool {
-	if x != nil && x.ReadOnly != nil {
-		return *x.ReadOnly
+// Deprecated: Use SubscriptionAction.ProtoReflect.Descriptor instead.
+func (*SubscriptionAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{107}
+}
+
+func (x *SubscriptionAction) GetIsDeactivated() bool {
+	if x != nil && x.IsDeactivated != nil {
+		return *x.IsDeactivated
 	}
 	return false
 }
 
-func (x *Conversation) GetEndOfHistoryTransfer() bool {
-	if x != nil && x.EndOfHistoryTransfer != nil {
-		return *x.EndOfHistoryTransfer
+func (x *SubscriptionAction) GetIsAutoRenewing() bool {
+	if x != nil && x.IsAutoRenewing != nil {
+		return *x.IsAutoRenewing
 	}
 	return false
 }
 
-func (x *Conversation) GetEphemeralExpiration() uint32 {
-	if x != nil && x.EphemeralExpiration != nil {
-		return *x.EphemeralExpiration
+func (x *SubscriptionAction) GetExpirationDate() int64 {
+	if x != nil && x.ExpirationDate != nil {
+		return *x.ExpirationDate
 	}
 	return 0
 }
 
-func (x *Conversation) GetEphemeralSettingTimestamp() int64 {
-	if x != nil && x.EphemeralSettingTimestamp != nil {
-		return *x.EphemeralSettingTimestamp
-	}
-	return 0
+type StickerAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Url           *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	FileEncSha256 []byte  `protobuf:"bytes,2,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	MediaKey      []byte  `protobuf:"bytes,3,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	Mimetype      *string `protobuf:"bytes,4,opt,name=mimetype" json:"mimetype,omitempty"`
+	Height        *uint32 `protobuf:"varint,5,opt,name=height" json:"height,omitempty"`
+	Width         *uint32 `protobuf:"varint,6,opt,name=width" json:"width,omitempty"`
+	DirectPath    *string `protobuf:"bytes,7,opt,name=directPath" json:"directPath,omitempty"`
+	FileLength    *uint64 `protobuf:"varint,8,opt,name=fileLength" json:"fileLength,omitempty"`
+	IsFavorite    *bool   `protobuf:"varint,9,opt,name=isFavorite" json:"isFavorite,omitempty"`
+	DeviceIdHint  *uint32 `protobuf:"varint,10,opt,name=deviceIdHint" json:"deviceIdHint,omitempty"`
 }
 
-func (x *Conversation) GetEndOfHistoryTransferType() Conversation_ConversationEndOfHistoryTransferType {
-	if x != nil && x.EndOfHistoryTransferType != nil {
-		return *x.EndOfHistoryTransferType
+func (x *StickerAction) Reset() {
+	*x = StickerAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[108]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return Conversation_COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY
 }
 
-func (x *Conversation) GetConversationTimestamp() uint64 {
-	if x != nil && x.ConversationTimestamp != nil {
-		return *x.ConversationTimestamp
-	}
-	return 0
+func (x *StickerAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *Conversation) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (*StickerAction) ProtoMessage() {}
+
+func (x *StickerAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[108]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ""
+	return mi.MessageOf(x)
 }
 
-func (x *Conversation) GetPHash() string {
-	if x != nil && x.PHash != nil {
-		return *x.PHash
-	}
-	return ""
+// Deprecated: Use StickerAction.ProtoReflect.Descriptor instead.
+func (*StickerAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{108}
 }
 
-func (x *Conversation) GetNotSpam() bool {
-	if x != nil && x.NotSpam != nil {
-		return *x.NotSpam
+func (x *StickerAction) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
-	return false
+	return ""
 }
 
-func (x *Conversation) GetArchived() bool {
-	if x != nil && x.Archived != nil {
-		return *x.Archived
+func (x *StickerAction) GetFileEncSha256() []byte {
+	if x != nil {
+		return x.FileEncSha256
 	}
-	return false
+	return nil
 }
 
-func (x *Conversation) GetDisappearingMode() *DisappearingMode {
+func (x *StickerAction) GetMediaKey() []byte {
 	if x != nil {
-		return x.DisappearingMode
+		return x.MediaKey
 	}
 	return nil
 }
 
-func (x *Conversation) GetUnreadMentionCount() uint32 {
-	if x != nil && x.UnreadMentionCount != nil {
-		return *x.UnreadMentionCount
+func (x *StickerAction) GetMimetype() string {
+	if x != nil && x.Mimetype != nil {
+		return *x.Mimetype
 	}
-	return 0
+	return ""
 }
 
-func (x *Conversation) GetMarkedAsUnread() bool {
-	if x != nil && x.MarkedAsUnread != nil {
-		return *x.MarkedAsUnread
+func (x *StickerAction) GetHeight() uint32 {
+	if x != nil && x.Height != nil {
+		return *x.Height
 	}
-	return false
+	return 0
 }
 
-func (x *Conversation) GetParticipant() []*GroupParticipant {
-	if x != nil {
-		return x.Participant
+func (x *StickerAction) GetWidth() uint32 {
+	if x != nil && x.Width != nil {
+		return *x.Width
 	}
-	return nil
+	return 0
 }
 
-func (x *Conversation) GetTcToken() []byte {
-	if x != nil {
-		return x.TcToken
+func (x *StickerAction) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
 	}
-	return nil
+	return ""
 }
 
-func (x *Conversation) GetTcTokenTimestamp() uint64 {
-	if x != nil && x.TcTokenTimestamp != nil {
-		return *x.TcTokenTimestamp
+func (x *StickerAction) GetFileLength() uint64 {
+	if x != nil && x.FileLength != nil {
+		return *x.FileLength
 	}
 	return 0
 }
 
-func (x *Conversation) GetContactPrimaryIdentityKey() []byte {
-	if x != nil {
-		return x.ContactPrimaryIdentityKey
+func (x *StickerAction) GetIsFavorite() bool {
+	if x != nil && x.IsFavorite != nil {
+		return *x.IsFavorite
 	}
-	return nil
+	return false
 }
 
-func (x *Conversation) GetPinned() uint32 {
-	if x != nil && x.Pinned != nil {
-		return *x.Pinned
+func (x *StickerAction) GetDeviceIdHint() uint32 {
+	if x != nil && x.DeviceIdHint != nil {
+		return *x.DeviceIdHint
 	}
 	return 0
 }
 
-func (x *Conversation) GetMuteEndTime() uint64 {
-	if x != nil && x.MuteEndTime != nil {
-		return *x.MuteEndTime
+type StarAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Starred *bool `protobuf:"varint,1,opt,name=starred" json:"starred,omitempty"`
+}
+
+func (x *StarAction) Reset() {
+	*x = StarAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[109]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *Conversation) GetWallpaper() *WallpaperSettings {
-	if x != nil {
-		return x.Wallpaper
+func (x *StarAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StarAction) ProtoMessage() {}
+
+func (x *StarAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[109]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *Conversation) GetMediaVisibility() MediaVisibility {
-	if x != nil && x.MediaVisibility != nil {
-		return *x.MediaVisibility
+// Deprecated: Use StarAction.ProtoReflect.Descriptor instead.
+func (*StarAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{109}
+}
+
+func (x *StarAction) GetStarred() bool {
+	if x != nil && x.Starred != nil {
+		return *x.Starred
 	}
-	return MediaVisibility_DEFAULT
+	return false
 }
 
-func (x *Conversation) GetTcTokenSenderTimestamp() uint64 {
-	if x != nil && x.TcTokenSenderTimestamp != nil {
-		return *x.TcTokenSenderTimestamp
+type SecurityNotificationSetting struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ShowNotification *bool `protobuf:"varint,1,opt,name=showNotification" json:"showNotification,omitempty"`
+}
+
+func (x *SecurityNotificationSetting) Reset() {
+	*x = SecurityNotificationSetting{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[110]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *Conversation) GetSuspended() bool {
-	if x != nil && x.Suspended != nil {
-		return *x.Suspended
+func (x *SecurityNotificationSetting) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SecurityNotificationSetting) ProtoMessage() {}
+
+func (x *SecurityNotificationSetting) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[110]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return false
+	return mi.MessageOf(x)
 }
 
-func (x *Conversation) GetTerminated() bool {
-	if x != nil && x.Terminated != nil {
-		return *x.Terminated
+// Deprecated: Use SecurityNotificationSetting.ProtoReflect.Descriptor instead.
+func (*SecurityNotificationSetting) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{110}
+}
+
+func (x *SecurityNotificationSetting) GetShowNotification() bool {
+	if x != nil && x.ShowNotification != nil {
+		return *x.ShowNotification
 	}
 	return false
 }
 
-func (x *Conversation) GetCreatedAt() uint64 {
-	if x != nil && x.CreatedAt != nil {
-		return *x.CreatedAt
+type RecentEmojiWeightsAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Weights []*RecentEmojiWeight `protobuf:"bytes,1,rep,name=weights" json:"weights,omitempty"`
+}
+
+func (x *RecentEmojiWeightsAction) Reset() {
+	*x = RecentEmojiWeightsAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[111]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *Conversation) GetCreatedBy() string {
-	if x != nil && x.CreatedBy != nil {
-		return *x.CreatedBy
+func (x *RecentEmojiWeightsAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RecentEmojiWeightsAction) ProtoMessage() {}
+
+func (x *RecentEmojiWeightsAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[111]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RecentEmojiWeightsAction.ProtoReflect.Descriptor instead.
+func (*RecentEmojiWeightsAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{111}
+}
+
+func (x *RecentEmojiWeightsAction) GetWeights() []*RecentEmojiWeight {
+	if x != nil {
+		return x.Weights
+	}
+	return nil
+}
+
+type QuickReplyAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Shortcut *string  `protobuf:"bytes,1,opt,name=shortcut" json:"shortcut,omitempty"`
+	Message  *string  `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
+	Keywords []string `protobuf:"bytes,3,rep,name=keywords" json:"keywords,omitempty"`
+	Count    *int32   `protobuf:"varint,4,opt,name=count" json:"count,omitempty"`
+	Deleted  *bool    `protobuf:"varint,5,opt,name=deleted" json:"deleted,omitempty"`
+}
+
+func (x *QuickReplyAction) Reset() {
+	*x = QuickReplyAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[112]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *QuickReplyAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*QuickReplyAction) ProtoMessage() {}
+
+func (x *QuickReplyAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[112]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use QuickReplyAction.ProtoReflect.Descriptor instead.
+func (*QuickReplyAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{112}
+}
+
+func (x *QuickReplyAction) GetShortcut() string {
+	if x != nil && x.Shortcut != nil {
+		return *x.Shortcut
 	}
 	return ""
 }
 
-func (x *Conversation) GetDescription() string {
-	if x != nil && x.Description != nil {
-		return *x.Description
+func (x *QuickReplyAction) GetMessage() string {
+	if x != nil && x.Message != nil {
+		return *x.Message
 	}
 	return ""
 }
 
-func (x *Conversation) GetSupport() bool {
-	if x != nil && x.Support != nil {
-		return *x.Support
+func (x *QuickReplyAction) GetKeywords() []string {
+	if x != nil {
+		return x.Keywords
 	}
-	return false
+	return nil
 }
 
-func (x *Conversation) GetIsParentGroup() bool {
-	if x != nil && x.IsParentGroup != nil {
-		return *x.IsParentGroup
+func (x *QuickReplyAction) GetCount() int32 {
+	if x != nil && x.Count != nil {
+		return *x.Count
+	}
+	return 0
+}
+
+func (x *QuickReplyAction) GetDeleted() bool {
+	if x != nil && x.Deleted != nil {
+		return *x.Deleted
+	}
+	return false
+}
+
+type PushNameSetting struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (x *PushNameSetting) Reset() {
+	*x = PushNameSetting{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[113]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PushNameSetting) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PushNameSetting) ProtoMessage() {}
+
+func (x *PushNameSetting) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[113]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PushNameSetting.ProtoReflect.Descriptor instead.
+func (*PushNameSetting) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{113}
+}
+
+func (x *PushNameSetting) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
+	}
+	return ""
+}
+
+type PrimaryVersionAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Version *string `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
+}
+
+func (x *PrimaryVersionAction) Reset() {
+	*x = PrimaryVersionAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[114]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PrimaryVersionAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PrimaryVersionAction) ProtoMessage() {}
+
+func (x *PrimaryVersionAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[114]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PrimaryVersionAction.ProtoReflect.Descriptor instead.
+func (*PrimaryVersionAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{114}
+}
+
+func (x *PrimaryVersionAction) GetVersion() string {
+	if x != nil && x.Version != nil {
+		return *x.Version
+	}
+	return ""
+}
+
+type PrimaryFeature struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Flags []string `protobuf:"bytes,1,rep,name=flags" json:"flags,omitempty"`
+}
+
+func (x *PrimaryFeature) Reset() {
+	*x = PrimaryFeature{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[115]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PrimaryFeature) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PrimaryFeature) ProtoMessage() {}
+
+func (x *PrimaryFeature) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[115]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PrimaryFeature.ProtoReflect.Descriptor instead.
+func (*PrimaryFeature) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{115}
+}
+
+func (x *PrimaryFeature) GetFlags() []string {
+	if x != nil {
+		return x.Flags
+	}
+	return nil
+}
+
+type PinAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Pinned *bool `protobuf:"varint,1,opt,name=pinned" json:"pinned,omitempty"`
+}
+
+func (x *PinAction) Reset() {
+	*x = PinAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[116]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PinAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PinAction) ProtoMessage() {}
+
+func (x *PinAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[116]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PinAction.ProtoReflect.Descriptor instead.
+func (*PinAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{116}
+}
+
+func (x *PinAction) GetPinned() bool {
+	if x != nil && x.Pinned != nil {
+		return *x.Pinned
+	}
+	return false
+}
+
+type NuxAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Acknowledged *bool `protobuf:"varint,1,opt,name=acknowledged" json:"acknowledged,omitempty"`
+}
+
+func (x *NuxAction) Reset() {
+	*x = NuxAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[117]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *NuxAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NuxAction) ProtoMessage() {}
+
+func (x *NuxAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[117]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use NuxAction.ProtoReflect.Descriptor instead.
+func (*NuxAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{117}
+}
+
+func (x *NuxAction) GetAcknowledged() bool {
+	if x != nil && x.Acknowledged != nil {
+		return *x.Acknowledged
+	}
+	return false
+}
+
+type MuteAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Muted            *bool  `protobuf:"varint,1,opt,name=muted" json:"muted,omitempty"`
+	MuteEndTimestamp *int64 `protobuf:"varint,2,opt,name=muteEndTimestamp" json:"muteEndTimestamp,omitempty"`
+}
+
+func (x *MuteAction) Reset() {
+	*x = MuteAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[118]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MuteAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MuteAction) ProtoMessage() {}
+
+func (x *MuteAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[118]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MuteAction.ProtoReflect.Descriptor instead.
+func (*MuteAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{118}
+}
+
+func (x *MuteAction) GetMuted() bool {
+	if x != nil && x.Muted != nil {
+		return *x.Muted
+	}
+	return false
+}
+
+func (x *MuteAction) GetMuteEndTimestamp() int64 {
+	if x != nil && x.MuteEndTimestamp != nil {
+		return *x.MuteEndTimestamp
+	}
+	return 0
+}
+
+type MarkChatAsReadAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Read         *bool                   `protobuf:"varint,1,opt,name=read" json:"read,omitempty"`
+	MessageRange *SyncActionMessageRange `protobuf:"bytes,2,opt,name=messageRange" json:"messageRange,omitempty"`
+}
+
+func (x *MarkChatAsReadAction) Reset() {
+	*x = MarkChatAsReadAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[119]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MarkChatAsReadAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MarkChatAsReadAction) ProtoMessage() {}
+
+func (x *MarkChatAsReadAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[119]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MarkChatAsReadAction.ProtoReflect.Descriptor instead.
+func (*MarkChatAsReadAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{119}
+}
+
+func (x *MarkChatAsReadAction) GetRead() bool {
+	if x != nil && x.Read != nil {
+		return *x.Read
+	}
+	return false
+}
+
+func (x *MarkChatAsReadAction) GetMessageRange() *SyncActionMessageRange {
+	if x != nil {
+		return x.MessageRange
+	}
+	return nil
+}
+
+type LocaleSetting struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Locale *string `protobuf:"bytes,1,opt,name=locale" json:"locale,omitempty"`
+}
+
+func (x *LocaleSetting) Reset() {
+	*x = LocaleSetting{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[120]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LocaleSetting) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LocaleSetting) ProtoMessage() {}
+
+func (x *LocaleSetting) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[120]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LocaleSetting.ProtoReflect.Descriptor instead.
+func (*LocaleSetting) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{120}
+}
+
+func (x *LocaleSetting) GetLocale() string {
+	if x != nil && x.Locale != nil {
+		return *x.Locale
+	}
+	return ""
+}
+
+type LabelEditAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name         *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Color        *int32  `protobuf:"varint,2,opt,name=color" json:"color,omitempty"`
+	PredefinedId *int32  `protobuf:"varint,3,opt,name=predefinedId" json:"predefinedId,omitempty"`
+	Deleted      *bool   `protobuf:"varint,4,opt,name=deleted" json:"deleted,omitempty"`
+}
+
+func (x *LabelEditAction) Reset() {
+	*x = LabelEditAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[121]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LabelEditAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LabelEditAction) ProtoMessage() {}
+
+func (x *LabelEditAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[121]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LabelEditAction.ProtoReflect.Descriptor instead.
+func (*LabelEditAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{121}
+}
+
+func (x *LabelEditAction) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
+	}
+	return ""
+}
+
+func (x *LabelEditAction) GetColor() int32 {
+	if x != nil && x.Color != nil {
+		return *x.Color
+	}
+	return 0
+}
+
+func (x *LabelEditAction) GetPredefinedId() int32 {
+	if x != nil && x.PredefinedId != nil {
+		return *x.PredefinedId
+	}
+	return 0
+}
+
+func (x *LabelEditAction) GetDeleted() bool {
+	if x != nil && x.Deleted != nil {
+		return *x.Deleted
+	}
+	return false
+}
+
+type LabelAssociationAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Labeled *bool `protobuf:"varint,1,opt,name=labeled" json:"labeled,omitempty"`
+}
+
+func (x *LabelAssociationAction) Reset() {
+	*x = LabelAssociationAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[122]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LabelAssociationAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LabelAssociationAction) ProtoMessage() {}
+
+func (x *LabelAssociationAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[122]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LabelAssociationAction.ProtoReflect.Descriptor instead.
+func (*LabelAssociationAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{122}
+}
+
+func (x *LabelAssociationAction) GetLabeled() bool {
+	if x != nil && x.Labeled != nil {
+		return *x.Labeled
+	}
+	return false
+}
+
+type KeyExpiration struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ExpiredKeyEpoch *int32 `protobuf:"varint,1,opt,name=expiredKeyEpoch" json:"expiredKeyEpoch,omitempty"`
+}
+
+func (x *KeyExpiration) Reset() {
+	*x = KeyExpiration{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[123]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *KeyExpiration) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KeyExpiration) ProtoMessage() {}
+
+func (x *KeyExpiration) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[123]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KeyExpiration.ProtoReflect.Descriptor instead.
+func (*KeyExpiration) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{123}
+}
+
+func (x *KeyExpiration) GetExpiredKeyEpoch() int32 {
+	if x != nil && x.ExpiredKeyEpoch != nil {
+		return *x.ExpiredKeyEpoch
+	}
+	return 0
+}
+
+type DeleteMessageForMeAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DeleteMedia      *bool  `protobuf:"varint,1,opt,name=deleteMedia" json:"deleteMedia,omitempty"`
+	MessageTimestamp *int64 `protobuf:"varint,2,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"`
+}
+
+func (x *DeleteMessageForMeAction) Reset() {
+	*x = DeleteMessageForMeAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[124]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeleteMessageForMeAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteMessageForMeAction) ProtoMessage() {}
+
+func (x *DeleteMessageForMeAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[124]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteMessageForMeAction.ProtoReflect.Descriptor instead.
+func (*DeleteMessageForMeAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{124}
+}
+
+func (x *DeleteMessageForMeAction) GetDeleteMedia() bool {
+	if x != nil && x.DeleteMedia != nil {
+		return *x.DeleteMedia
+	}
+	return false
+}
+
+func (x *DeleteMessageForMeAction) GetMessageTimestamp() int64 {
+	if x != nil && x.MessageTimestamp != nil {
+		return *x.MessageTimestamp
+	}
+	return 0
+}
+
+type DeleteChatAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	MessageRange *SyncActionMessageRange `protobuf:"bytes,1,opt,name=messageRange" json:"messageRange,omitempty"`
+}
+
+func (x *DeleteChatAction) Reset() {
+	*x = DeleteChatAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[125]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeleteChatAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteChatAction) ProtoMessage() {}
+
+func (x *DeleteChatAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[125]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteChatAction.ProtoReflect.Descriptor instead.
+func (*DeleteChatAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{125}
+}
+
+func (x *DeleteChatAction) GetMessageRange() *SyncActionMessageRange {
+	if x != nil {
+		return x.MessageRange
+	}
+	return nil
+}
+
+type ContactAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	FullName  *string `protobuf:"bytes,1,opt,name=fullName" json:"fullName,omitempty"`
+	FirstName *string `protobuf:"bytes,2,opt,name=firstName" json:"firstName,omitempty"`
+}
+
+func (x *ContactAction) Reset() {
+	*x = ContactAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[126]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return false
 }
 
-func (x *Conversation) GetIsDefaultSubgroup() bool {
-	if x != nil && x.IsDefaultSubgroup != nil {
-		return *x.IsDefaultSubgroup
-	}
-	return false
+func (x *ContactAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *Conversation) GetParentGroupId() string {
-	if x != nil && x.ParentGroupId != nil {
-		return *x.ParentGroupId
+func (*ContactAction) ProtoMessage() {}
+
+func (x *ContactAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[126]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ""
+	return mi.MessageOf(x)
 }
 
-func (x *Conversation) GetDisplayName() string {
-	if x != nil && x.DisplayName != nil {
-		return *x.DisplayName
-	}
-	return ""
+// Deprecated: Use ContactAction.ProtoReflect.Descriptor instead.
+func (*ContactAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{126}
 }
 
-func (x *Conversation) GetPnJid() string {
-	if x != nil && x.PnJid != nil {
-		return *x.PnJid
+func (x *ContactAction) GetFullName() string {
+	if x != nil && x.FullName != nil {
+		return *x.FullName
 	}
 	return ""
 }
 
-func (x *Conversation) GetSelfMasked() bool {
-	if x != nil && x.SelfMasked != nil {
-		return *x.SelfMasked
+func (x *ContactAction) GetFirstName() string {
+	if x != nil && x.FirstName != nil {
+		return *x.FirstName
 	}
-	return false
+	return ""
 }
 
-type AutoDownloadSettings struct {
+type ClearChatAction struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DownloadImages    *bool `protobuf:"varint,1,opt,name=downloadImages" json:"downloadImages,omitempty"`
-	DownloadAudio     *bool `protobuf:"varint,2,opt,name=downloadAudio" json:"downloadAudio,omitempty"`
-	DownloadVideo     *bool `protobuf:"varint,3,opt,name=downloadVideo" json:"downloadVideo,omitempty"`
-	DownloadDocuments *bool `protobuf:"varint,4,opt,name=downloadDocuments" json:"downloadDocuments,omitempty"`
+	MessageRange *SyncActionMessageRange `protobuf:"bytes,1,opt,name=messageRange" json:"messageRange,omitempty"`
 }
 
-func (x *AutoDownloadSettings) Reset() {
-	*x = AutoDownloadSettings{}
+func (x *ClearChatAction) Reset() {
+	*x = ClearChatAction{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[117]
+		mi := &file_binary_proto_def_proto_msgTypes[127]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *AutoDownloadSettings) String() string {
+func (x *ClearChatAction) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AutoDownloadSettings) ProtoMessage() {}
+func (*ClearChatAction) ProtoMessage() {}
 
-func (x *AutoDownloadSettings) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[117]
+func (x *ClearChatAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[127]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -13910,65 +14613,44 @@ func (x *AutoDownloadSettings) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AutoDownloadSettings.ProtoReflect.Descriptor instead.
-func (*AutoDownloadSettings) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{117}
-}
-
-func (x *AutoDownloadSettings) GetDownloadImages() bool {
-	if x != nil && x.DownloadImages != nil {
-		return *x.DownloadImages
-	}
-	return false
-}
-
-func (x *AutoDownloadSettings) GetDownloadAudio() bool {
-	if x != nil && x.DownloadAudio != nil {
-		return *x.DownloadAudio
-	}
-	return false
-}
-
-func (x *AutoDownloadSettings) GetDownloadVideo() bool {
-	if x != nil && x.DownloadVideo != nil {
-		return *x.DownloadVideo
-	}
-	return false
+// Deprecated: Use ClearChatAction.ProtoReflect.Descriptor instead.
+func (*ClearChatAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{127}
 }
 
-func (x *AutoDownloadSettings) GetDownloadDocuments() bool {
-	if x != nil && x.DownloadDocuments != nil {
-		return *x.DownloadDocuments
+func (x *ClearChatAction) GetMessageRange() *SyncActionMessageRange {
+	if x != nil {
+		return x.MessageRange
 	}
-	return false
+	return nil
 }
 
-type MsgRowOpaqueData struct {
+type ArchiveChatAction struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	CurrentMsg *MsgOpaqueData `protobuf:"bytes,1,opt,name=currentMsg" json:"currentMsg,omitempty"`
-	QuotedMsg  *MsgOpaqueData `protobuf:"bytes,2,opt,name=quotedMsg" json:"quotedMsg,omitempty"`
+	Archived     *bool                   `protobuf:"varint,1,opt,name=archived" json:"archived,omitempty"`
+	MessageRange *SyncActionMessageRange `protobuf:"bytes,2,opt,name=messageRange" json:"messageRange,omitempty"`
 }
 
-func (x *MsgRowOpaqueData) Reset() {
-	*x = MsgRowOpaqueData{}
+func (x *ArchiveChatAction) Reset() {
+	*x = ArchiveChatAction{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[118]
+		mi := &file_binary_proto_def_proto_msgTypes[128]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *MsgRowOpaqueData) String() string {
+func (x *ArchiveChatAction) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MsgRowOpaqueData) ProtoMessage() {}
+func (*ArchiveChatAction) ProtoMessage() {}
 
-func (x *MsgRowOpaqueData) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[118]
+func (x *ArchiveChatAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[128]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -13979,67 +14661,50 @@ func (x *MsgRowOpaqueData) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MsgRowOpaqueData.ProtoReflect.Descriptor instead.
-func (*MsgRowOpaqueData) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{118}
+// Deprecated: Use ArchiveChatAction.ProtoReflect.Descriptor instead.
+func (*ArchiveChatAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{128}
 }
 
-func (x *MsgRowOpaqueData) GetCurrentMsg() *MsgOpaqueData {
-	if x != nil {
-		return x.CurrentMsg
+func (x *ArchiveChatAction) GetArchived() bool {
+	if x != nil && x.Archived != nil {
+		return *x.Archived
 	}
-	return nil
+	return false
 }
 
-func (x *MsgRowOpaqueData) GetQuotedMsg() *MsgOpaqueData {
+func (x *ArchiveChatAction) GetMessageRange() *SyncActionMessageRange {
 	if x != nil {
-		return x.QuotedMsg
+		return x.MessageRange
 	}
 	return nil
 }
 
-type MsgOpaqueData struct {
+type AndroidUnsupportedActions struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Body                       *string       `protobuf:"bytes,1,opt,name=body" json:"body,omitempty"`
-	Caption                    *string       `protobuf:"bytes,3,opt,name=caption" json:"caption,omitempty"`
-	Lng                        *float64      `protobuf:"fixed64,5,opt,name=lng" json:"lng,omitempty"`
-	IsLive                     *bool         `protobuf:"varint,6,opt,name=isLive" json:"isLive,omitempty"`
-	Lat                        *float64      `protobuf:"fixed64,7,opt,name=lat" json:"lat,omitempty"`
-	PaymentAmount1000          *int32        `protobuf:"varint,8,opt,name=paymentAmount1000" json:"paymentAmount1000,omitempty"`
-	PaymentNoteMsgBody         *string       `protobuf:"bytes,9,opt,name=paymentNoteMsgBody" json:"paymentNoteMsgBody,omitempty"`
-	CanonicalUrl               *string       `protobuf:"bytes,10,opt,name=canonicalUrl" json:"canonicalUrl,omitempty"`
-	MatchedText                *string       `protobuf:"bytes,11,opt,name=matchedText" json:"matchedText,omitempty"`
-	Title                      *string       `protobuf:"bytes,12,opt,name=title" json:"title,omitempty"`
-	Description                *string       `protobuf:"bytes,13,opt,name=description" json:"description,omitempty"`
-	FutureproofBuffer          []byte        `protobuf:"bytes,14,opt,name=futureproofBuffer" json:"futureproofBuffer,omitempty"`
-	ClientUrl                  *string       `protobuf:"bytes,15,opt,name=clientUrl" json:"clientUrl,omitempty"`
-	Loc                        *string       `protobuf:"bytes,16,opt,name=loc" json:"loc,omitempty"`
-	PollName                   *string       `protobuf:"bytes,17,opt,name=pollName" json:"pollName,omitempty"`
-	PollOptions                []*PollOption `protobuf:"bytes,18,rep,name=pollOptions" json:"pollOptions,omitempty"`
-	PollSelectableOptionsCount *uint32       `protobuf:"varint,20,opt,name=pollSelectableOptionsCount" json:"pollSelectableOptionsCount,omitempty"`
-	MessageSecret              []byte        `protobuf:"bytes,21,opt,name=messageSecret" json:"messageSecret,omitempty"`
+	Allowed *bool `protobuf:"varint,1,opt,name=allowed" json:"allowed,omitempty"`
 }
 
-func (x *MsgOpaqueData) Reset() {
-	*x = MsgOpaqueData{}
+func (x *AndroidUnsupportedActions) Reset() {
+	*x = AndroidUnsupportedActions{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[119]
+		mi := &file_binary_proto_def_proto_msgTypes[129]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *MsgOpaqueData) String() string {
+func (x *AndroidUnsupportedActions) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MsgOpaqueData) ProtoMessage() {}
+func (*AndroidUnsupportedActions) ProtoMessage() {}
 
-func (x *MsgOpaqueData) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[119]
+func (x *AndroidUnsupportedActions) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[129]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14050,162 +14715,178 @@ func (x *MsgOpaqueData) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MsgOpaqueData.ProtoReflect.Descriptor instead.
-func (*MsgOpaqueData) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{119}
+// Deprecated: Use AndroidUnsupportedActions.ProtoReflect.Descriptor instead.
+func (*AndroidUnsupportedActions) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{129}
 }
 
-func (x *MsgOpaqueData) GetBody() string {
-	if x != nil && x.Body != nil {
-		return *x.Body
+func (x *AndroidUnsupportedActions) GetAllowed() bool {
+	if x != nil && x.Allowed != nil {
+		return *x.Allowed
 	}
-	return ""
+	return false
 }
 
-func (x *MsgOpaqueData) GetCaption() string {
-	if x != nil && x.Caption != nil {
-		return *x.Caption
-	}
-	return ""
+type AgentAction struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name      *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	DeviceID  *int32  `protobuf:"varint,2,opt,name=deviceID" json:"deviceID,omitempty"`
+	IsDeleted *bool   `protobuf:"varint,3,opt,name=isDeleted" json:"isDeleted,omitempty"`
 }
 
-func (x *MsgOpaqueData) GetLng() float64 {
-	if x != nil && x.Lng != nil {
-		return *x.Lng
+func (x *AgentAction) Reset() {
+	*x = AgentAction{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[130]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *MsgOpaqueData) GetIsLive() bool {
-	if x != nil && x.IsLive != nil {
-		return *x.IsLive
-	}
-	return false
+func (x *AgentAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *MsgOpaqueData) GetLat() float64 {
-	if x != nil && x.Lat != nil {
-		return *x.Lat
+func (*AgentAction) ProtoMessage() {}
+
+func (x *AgentAction) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[130]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return 0
+	return mi.MessageOf(x)
 }
 
-func (x *MsgOpaqueData) GetPaymentAmount1000() int32 {
-	if x != nil && x.PaymentAmount1000 != nil {
-		return *x.PaymentAmount1000
-	}
-	return 0
+// Deprecated: Use AgentAction.ProtoReflect.Descriptor instead.
+func (*AgentAction) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{130}
 }
 
-func (x *MsgOpaqueData) GetPaymentNoteMsgBody() string {
-	if x != nil && x.PaymentNoteMsgBody != nil {
-		return *x.PaymentNoteMsgBody
+func (x *AgentAction) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
 	return ""
 }
 
-func (x *MsgOpaqueData) GetCanonicalUrl() string {
-	if x != nil && x.CanonicalUrl != nil {
-		return *x.CanonicalUrl
+func (x *AgentAction) GetDeviceID() int32 {
+	if x != nil && x.DeviceID != nil {
+		return *x.DeviceID
 	}
-	return ""
+	return 0
 }
 
-func (x *MsgOpaqueData) GetMatchedText() string {
-	if x != nil && x.MatchedText != nil {
-		return *x.MatchedText
+func (x *AgentAction) GetIsDeleted() bool {
+	if x != nil && x.IsDeleted != nil {
+		return *x.IsDeleted
 	}
-	return ""
+	return false
+}
+
+type SyncActionData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Index   []byte           `protobuf:"bytes,1,opt,name=index" json:"index,omitempty"`
+	Value   *SyncActionValue `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
+	Padding []byte           `protobuf:"bytes,3,opt,name=padding" json:"padding,omitempty"`
+	Version *int32           `protobuf:"varint,4,opt,name=version" json:"version,omitempty"`
 }
 
-func (x *MsgOpaqueData) GetTitle() string {
-	if x != nil && x.Title != nil {
-		return *x.Title
+func (x *SyncActionData) Reset() {
+	*x = SyncActionData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[131]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (x *MsgOpaqueData) GetDescription() string {
-	if x != nil && x.Description != nil {
-		return *x.Description
-	}
-	return ""
+func (x *SyncActionData) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *MsgOpaqueData) GetFutureproofBuffer() []byte {
-	if x != nil {
-		return x.FutureproofBuffer
-	}
-	return nil
-}
+func (*SyncActionData) ProtoMessage() {}
 
-func (x *MsgOpaqueData) GetClientUrl() string {
-	if x != nil && x.ClientUrl != nil {
-		return *x.ClientUrl
+func (x *SyncActionData) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[131]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ""
+	return mi.MessageOf(x)
 }
 
-func (x *MsgOpaqueData) GetLoc() string {
-	if x != nil && x.Loc != nil {
-		return *x.Loc
-	}
-	return ""
+// Deprecated: Use SyncActionData.ProtoReflect.Descriptor instead.
+func (*SyncActionData) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{131}
 }
 
-func (x *MsgOpaqueData) GetPollName() string {
-	if x != nil && x.PollName != nil {
-		return *x.PollName
+func (x *SyncActionData) GetIndex() []byte {
+	if x != nil {
+		return x.Index
 	}
-	return ""
+	return nil
 }
 
-func (x *MsgOpaqueData) GetPollOptions() []*PollOption {
+func (x *SyncActionData) GetValue() *SyncActionValue {
 	if x != nil {
-		return x.PollOptions
+		return x.Value
 	}
 	return nil
 }
 
-func (x *MsgOpaqueData) GetPollSelectableOptionsCount() uint32 {
-	if x != nil && x.PollSelectableOptionsCount != nil {
-		return *x.PollSelectableOptionsCount
+func (x *SyncActionData) GetPadding() []byte {
+	if x != nil {
+		return x.Padding
 	}
-	return 0
+	return nil
 }
 
-func (x *MsgOpaqueData) GetMessageSecret() []byte {
-	if x != nil {
-		return x.MessageSecret
+func (x *SyncActionData) GetVersion() int32 {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
-	return nil
+	return 0
 }
 
-type PollOption struct {
+type RecentEmojiWeight struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Emoji  *string  `protobuf:"bytes,1,opt,name=emoji" json:"emoji,omitempty"`
+	Weight *float32 `protobuf:"fixed32,2,opt,name=weight" json:"weight,omitempty"`
 }
 
-func (x *PollOption) Reset() {
-	*x = PollOption{}
+func (x *RecentEmojiWeight) Reset() {
+	*x = RecentEmojiWeight{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[120]
+		mi := &file_binary_proto_def_proto_msgTypes[132]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *PollOption) String() string {
+func (x *RecentEmojiWeight) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PollOption) ProtoMessage() {}
+func (*RecentEmojiWeight) ProtoMessage() {}
 
-func (x *PollOption) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[120]
+func (x *RecentEmojiWeight) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[132]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14216,43 +14897,52 @@ func (x *PollOption) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PollOption.ProtoReflect.Descriptor instead.
-func (*PollOption) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{120}
+// Deprecated: Use RecentEmojiWeight.ProtoReflect.Descriptor instead.
+func (*RecentEmojiWeight) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{132}
 }
 
-func (x *PollOption) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (x *RecentEmojiWeight) GetEmoji() string {
+	if x != nil && x.Emoji != nil {
+		return *x.Emoji
 	}
 	return ""
 }
 
-type ServerErrorReceipt struct {
+func (x *RecentEmojiWeight) GetWeight() float32 {
+	if x != nil && x.Weight != nil {
+		return *x.Weight
+	}
+	return 0
+}
+
+type VerifiedNameCertificate struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	StanzaId *string `protobuf:"bytes,1,opt,name=stanzaId" json:"stanzaId,omitempty"`
+	Details         []byte `protobuf:"bytes,1,opt,name=details" json:"details,omitempty"`
+	Signature       []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
+	ServerSignature []byte `protobuf:"bytes,3,opt,name=serverSignature" json:"serverSignature,omitempty"`
 }
 
-func (x *ServerErrorReceipt) Reset() {
-	*x = ServerErrorReceipt{}
+func (x *VerifiedNameCertificate) Reset() {
+	*x = VerifiedNameCertificate{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[121]
+		mi := &file_binary_proto_def_proto_msgTypes[133]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ServerErrorReceipt) String() string {
+func (x *VerifiedNameCertificate) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ServerErrorReceipt) ProtoMessage() {}
+func (*VerifiedNameCertificate) ProtoMessage() {}
 
-func (x *ServerErrorReceipt) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[121]
+func (x *VerifiedNameCertificate) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[133]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14263,45 +14953,59 @@ func (x *ServerErrorReceipt) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ServerErrorReceipt.ProtoReflect.Descriptor instead.
-func (*ServerErrorReceipt) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{121}
+// Deprecated: Use VerifiedNameCertificate.ProtoReflect.Descriptor instead.
+func (*VerifiedNameCertificate) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{133}
 }
 
-func (x *ServerErrorReceipt) GetStanzaId() string {
-	if x != nil && x.StanzaId != nil {
-		return *x.StanzaId
+func (x *VerifiedNameCertificate) GetDetails() []byte {
+	if x != nil {
+		return x.Details
 	}
-	return ""
+	return nil
 }
 
-type MediaRetryNotification struct {
+func (x *VerifiedNameCertificate) GetSignature() []byte {
+	if x != nil {
+		return x.Signature
+	}
+	return nil
+}
+
+func (x *VerifiedNameCertificate) GetServerSignature() []byte {
+	if x != nil {
+		return x.ServerSignature
+	}
+	return nil
+}
+
+type LocalizedName struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	StanzaId   *string                                                  `protobuf:"bytes,1,opt,name=stanzaId" json:"stanzaId,omitempty"`
-	DirectPath *string                                                  `protobuf:"bytes,2,opt,name=directPath" json:"directPath,omitempty"`
-	Result     *MediaRetryNotification_MediaRetryNotificationResultType `protobuf:"varint,3,opt,name=result,enum=proto.MediaRetryNotification_MediaRetryNotificationResultType" json:"result,omitempty"`
+	Lg           *string `protobuf:"bytes,1,opt,name=lg" json:"lg,omitempty"`
+	Lc           *string `protobuf:"bytes,2,opt,name=lc" json:"lc,omitempty"`
+	VerifiedName *string `protobuf:"bytes,3,opt,name=verifiedName" json:"verifiedName,omitempty"`
 }
 
-func (x *MediaRetryNotification) Reset() {
-	*x = MediaRetryNotification{}
+func (x *LocalizedName) Reset() {
+	*x = LocalizedName{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[122]
+		mi := &file_binary_proto_def_proto_msgTypes[134]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *MediaRetryNotification) String() string {
+func (x *LocalizedName) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MediaRetryNotification) ProtoMessage() {}
+func (*LocalizedName) ProtoMessage() {}
 
-func (x *MediaRetryNotification) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[122]
+func (x *LocalizedName) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[134]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14312,60 +15016,64 @@ func (x *MediaRetryNotification) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MediaRetryNotification.ProtoReflect.Descriptor instead.
-func (*MediaRetryNotification) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{122}
+// Deprecated: Use LocalizedName.ProtoReflect.Descriptor instead.
+func (*LocalizedName) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{134}
 }
 
-func (x *MediaRetryNotification) GetStanzaId() string {
-	if x != nil && x.StanzaId != nil {
-		return *x.StanzaId
+func (x *LocalizedName) GetLg() string {
+	if x != nil && x.Lg != nil {
+		return *x.Lg
 	}
 	return ""
 }
 
-func (x *MediaRetryNotification) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
+func (x *LocalizedName) GetLc() string {
+	if x != nil && x.Lc != nil {
+		return *x.Lc
 	}
 	return ""
 }
 
-func (x *MediaRetryNotification) GetResult() MediaRetryNotification_MediaRetryNotificationResultType {
-	if x != nil && x.Result != nil {
-		return *x.Result
+func (x *LocalizedName) GetVerifiedName() string {
+	if x != nil && x.VerifiedName != nil {
+		return *x.VerifiedName
 	}
-	return MediaRetryNotification_GENERAL_ERROR
+	return ""
 }
 
-type MessageKey struct {
+type BizIdentityInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	RemoteJid   *string `protobuf:"bytes,1,opt,name=remoteJid" json:"remoteJid,omitempty"`
-	FromMe      *bool   `protobuf:"varint,2,opt,name=fromMe" json:"fromMe,omitempty"`
-	Id          *string `protobuf:"bytes,3,opt,name=id" json:"id,omitempty"`
-	Participant *string `protobuf:"bytes,4,opt,name=participant" json:"participant,omitempty"`
+	Vlevel          *BizIdentityInfo_VerifiedLevelValue `protobuf:"varint,1,opt,name=vlevel,enum=proto.BizIdentityInfo_VerifiedLevelValue" json:"vlevel,omitempty"`
+	VnameCert       *VerifiedNameCertificate            `protobuf:"bytes,2,opt,name=vnameCert" json:"vnameCert,omitempty"`
+	Signed          *bool                               `protobuf:"varint,3,opt,name=signed" json:"signed,omitempty"`
+	Revoked         *bool                               `protobuf:"varint,4,opt,name=revoked" json:"revoked,omitempty"`
+	HostStorage     *BizIdentityInfo_HostStorageType    `protobuf:"varint,5,opt,name=hostStorage,enum=proto.BizIdentityInfo_HostStorageType" json:"hostStorage,omitempty"`
+	ActualActors    *BizIdentityInfo_ActualActorsType   `protobuf:"varint,6,opt,name=actualActors,enum=proto.BizIdentityInfo_ActualActorsType" json:"actualActors,omitempty"`
+	PrivacyModeTs   *uint64                             `protobuf:"varint,7,opt,name=privacyModeTs" json:"privacyModeTs,omitempty"`
+	FeatureControls *uint64                             `protobuf:"varint,8,opt,name=featureControls" json:"featureControls,omitempty"`
 }
 
-func (x *MessageKey) Reset() {
-	*x = MessageKey{}
+func (x *BizIdentityInfo) Reset() {
+	*x = BizIdentityInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[123]
+		mi := &file_binary_proto_def_proto_msgTypes[135]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *MessageKey) String() string {
+func (x *BizIdentityInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MessageKey) ProtoMessage() {}
+func (*BizIdentityInfo) ProtoMessage() {}
 
-func (x *MessageKey) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[123]
+func (x *BizIdentityInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[135]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14376,111 +15084,93 @@ func (x *MessageKey) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MessageKey.ProtoReflect.Descriptor instead.
-func (*MessageKey) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{123}
-}
-
-func (x *MessageKey) GetRemoteJid() string {
-	if x != nil && x.RemoteJid != nil {
-		return *x.RemoteJid
-	}
-	return ""
-}
-
-func (x *MessageKey) GetFromMe() bool {
-	if x != nil && x.FromMe != nil {
-		return *x.FromMe
-	}
-	return false
-}
-
-func (x *MessageKey) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
-	}
-	return ""
+// Deprecated: Use BizIdentityInfo.ProtoReflect.Descriptor instead.
+func (*BizIdentityInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{135}
 }
 
-func (x *MessageKey) GetParticipant() string {
-	if x != nil && x.Participant != nil {
-		return *x.Participant
+func (x *BizIdentityInfo) GetVlevel() BizIdentityInfo_VerifiedLevelValue {
+	if x != nil && x.Vlevel != nil {
+		return *x.Vlevel
 	}
-	return ""
+	return BizIdentityInfo_UNKNOWN
 }
 
-type SyncdVersion struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Version *uint64 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"`
+func (x *BizIdentityInfo) GetVnameCert() *VerifiedNameCertificate {
+	if x != nil {
+		return x.VnameCert
+	}
+	return nil
 }
 
-func (x *SyncdVersion) Reset() {
-	*x = SyncdVersion{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[124]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *BizIdentityInfo) GetSigned() bool {
+	if x != nil && x.Signed != nil {
+		return *x.Signed
 	}
+	return false
 }
 
-func (x *SyncdVersion) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *BizIdentityInfo) GetRevoked() bool {
+	if x != nil && x.Revoked != nil {
+		return *x.Revoked
+	}
+	return false
 }
 
-func (*SyncdVersion) ProtoMessage() {}
+func (x *BizIdentityInfo) GetHostStorage() BizIdentityInfo_HostStorageType {
+	if x != nil && x.HostStorage != nil {
+		return *x.HostStorage
+	}
+	return BizIdentityInfo_ON_PREMISE
+}
 
-func (x *SyncdVersion) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[124]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *BizIdentityInfo) GetActualActors() BizIdentityInfo_ActualActorsType {
+	if x != nil && x.ActualActors != nil {
+		return *x.ActualActors
 	}
-	return mi.MessageOf(x)
+	return BizIdentityInfo_SELF
 }
 
-// Deprecated: Use SyncdVersion.ProtoReflect.Descriptor instead.
-func (*SyncdVersion) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{124}
+func (x *BizIdentityInfo) GetPrivacyModeTs() uint64 {
+	if x != nil && x.PrivacyModeTs != nil {
+		return *x.PrivacyModeTs
+	}
+	return 0
 }
 
-func (x *SyncdVersion) GetVersion() uint64 {
-	if x != nil && x.Version != nil {
-		return *x.Version
+func (x *BizIdentityInfo) GetFeatureControls() uint64 {
+	if x != nil && x.FeatureControls != nil {
+		return *x.FeatureControls
 	}
 	return 0
 }
 
-type SyncdValue struct {
+type BizAccountPayload struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Blob []byte `protobuf:"bytes,1,opt,name=blob" json:"blob,omitempty"`
+	VnameCert       *VerifiedNameCertificate `protobuf:"bytes,1,opt,name=vnameCert" json:"vnameCert,omitempty"`
+	BizAcctLinkInfo []byte                   `protobuf:"bytes,2,opt,name=bizAcctLinkInfo" json:"bizAcctLinkInfo,omitempty"`
 }
 
-func (x *SyncdValue) Reset() {
-	*x = SyncdValue{}
+func (x *BizAccountPayload) Reset() {
+	*x = BizAccountPayload{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[125]
+		mi := &file_binary_proto_def_proto_msgTypes[136]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncdValue) String() string {
+func (x *BizAccountPayload) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncdValue) ProtoMessage() {}
+func (*BizAccountPayload) ProtoMessage() {}
 
-func (x *SyncdValue) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[125]
+func (x *BizAccountPayload) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[136]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14491,46 +15181,54 @@ func (x *SyncdValue) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncdValue.ProtoReflect.Descriptor instead.
-func (*SyncdValue) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{125}
+// Deprecated: Use BizAccountPayload.ProtoReflect.Descriptor instead.
+func (*BizAccountPayload) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{136}
 }
 
-func (x *SyncdValue) GetBlob() []byte {
+func (x *BizAccountPayload) GetVnameCert() *VerifiedNameCertificate {
 	if x != nil {
-		return x.Blob
+		return x.VnameCert
 	}
 	return nil
 }
 
-type SyncdSnapshot struct {
+func (x *BizAccountPayload) GetBizAcctLinkInfo() []byte {
+	if x != nil {
+		return x.BizAcctLinkInfo
+	}
+	return nil
+}
+
+type BizAccountLinkInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Version *SyncdVersion  `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
-	Records []*SyncdRecord `protobuf:"bytes,2,rep,name=records" json:"records,omitempty"`
-	Mac     []byte         `protobuf:"bytes,3,opt,name=mac" json:"mac,omitempty"`
-	KeyId   *KeyId         `protobuf:"bytes,4,opt,name=keyId" json:"keyId,omitempty"`
+	WhatsappBizAcctFbid *uint64                             `protobuf:"varint,1,opt,name=whatsappBizAcctFbid" json:"whatsappBizAcctFbid,omitempty"`
+	WhatsappAcctNumber  *string                             `protobuf:"bytes,2,opt,name=whatsappAcctNumber" json:"whatsappAcctNumber,omitempty"`
+	IssueTime           *uint64                             `protobuf:"varint,3,opt,name=issueTime" json:"issueTime,omitempty"`
+	HostStorage         *BizAccountLinkInfo_HostStorageType `protobuf:"varint,4,opt,name=hostStorage,enum=proto.BizAccountLinkInfo_HostStorageType" json:"hostStorage,omitempty"`
+	AccountType         *BizAccountLinkInfo_AccountType     `protobuf:"varint,5,opt,name=accountType,enum=proto.BizAccountLinkInfo_AccountType" json:"accountType,omitempty"`
 }
 
-func (x *SyncdSnapshot) Reset() {
-	*x = SyncdSnapshot{}
+func (x *BizAccountLinkInfo) Reset() {
+	*x = BizAccountLinkInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[126]
+		mi := &file_binary_proto_def_proto_msgTypes[137]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncdSnapshot) String() string {
+func (x *BizAccountLinkInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncdSnapshot) ProtoMessage() {}
+func (*BizAccountLinkInfo) ProtoMessage() {}
 
-func (x *SyncdSnapshot) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[126]
+func (x *BizAccountLinkInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[137]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14541,66 +15239,73 @@ func (x *SyncdSnapshot) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncdSnapshot.ProtoReflect.Descriptor instead.
-func (*SyncdSnapshot) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{126}
+// Deprecated: Use BizAccountLinkInfo.ProtoReflect.Descriptor instead.
+func (*BizAccountLinkInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{137}
 }
 
-func (x *SyncdSnapshot) GetVersion() *SyncdVersion {
-	if x != nil {
-		return x.Version
+func (x *BizAccountLinkInfo) GetWhatsappBizAcctFbid() uint64 {
+	if x != nil && x.WhatsappBizAcctFbid != nil {
+		return *x.WhatsappBizAcctFbid
 	}
-	return nil
+	return 0
 }
 
-func (x *SyncdSnapshot) GetRecords() []*SyncdRecord {
-	if x != nil {
-		return x.Records
+func (x *BizAccountLinkInfo) GetWhatsappAcctNumber() string {
+	if x != nil && x.WhatsappAcctNumber != nil {
+		return *x.WhatsappAcctNumber
 	}
-	return nil
+	return ""
 }
 
-func (x *SyncdSnapshot) GetMac() []byte {
-	if x != nil {
-		return x.Mac
+func (x *BizAccountLinkInfo) GetIssueTime() uint64 {
+	if x != nil && x.IssueTime != nil {
+		return *x.IssueTime
 	}
-	return nil
+	return 0
 }
 
-func (x *SyncdSnapshot) GetKeyId() *KeyId {
-	if x != nil {
-		return x.KeyId
+func (x *BizAccountLinkInfo) GetHostStorage() BizAccountLinkInfo_HostStorageType {
+	if x != nil && x.HostStorage != nil {
+		return *x.HostStorage
 	}
-	return nil
+	return BizAccountLinkInfo_ON_PREMISE
 }
 
-type SyncdRecord struct {
+func (x *BizAccountLinkInfo) GetAccountType() BizAccountLinkInfo_AccountType {
+	if x != nil && x.AccountType != nil {
+		return *x.AccountType
+	}
+	return BizAccountLinkInfo_ENTERPRISE
+}
+
+type HandshakeMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Index *SyncdIndex `protobuf:"bytes,1,opt,name=index" json:"index,omitempty"`
-	Value *SyncdValue `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
-	KeyId *KeyId      `protobuf:"bytes,3,opt,name=keyId" json:"keyId,omitempty"`
+	ClientHello  *HandshakeClientHello  `protobuf:"bytes,2,opt,name=clientHello" json:"clientHello,omitempty"`
+	ServerHello  *HandshakeServerHello  `protobuf:"bytes,3,opt,name=serverHello" json:"serverHello,omitempty"`
+	ClientFinish *HandshakeClientFinish `protobuf:"bytes,4,opt,name=clientFinish" json:"clientFinish,omitempty"`
 }
 
-func (x *SyncdRecord) Reset() {
-	*x = SyncdRecord{}
+func (x *HandshakeMessage) Reset() {
+	*x = HandshakeMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[127]
+		mi := &file_binary_proto_def_proto_msgTypes[138]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncdRecord) String() string {
+func (x *HandshakeMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncdRecord) ProtoMessage() {}
+func (*HandshakeMessage) ProtoMessage() {}
 
-func (x *SyncdRecord) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[127]
+func (x *HandshakeMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[138]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14611,64 +15316,59 @@ func (x *SyncdRecord) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncdRecord.ProtoReflect.Descriptor instead.
-func (*SyncdRecord) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{127}
+// Deprecated: Use HandshakeMessage.ProtoReflect.Descriptor instead.
+func (*HandshakeMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{138}
 }
 
-func (x *SyncdRecord) GetIndex() *SyncdIndex {
+func (x *HandshakeMessage) GetClientHello() *HandshakeClientHello {
 	if x != nil {
-		return x.Index
+		return x.ClientHello
 	}
 	return nil
 }
 
-func (x *SyncdRecord) GetValue() *SyncdValue {
+func (x *HandshakeMessage) GetServerHello() *HandshakeServerHello {
 	if x != nil {
-		return x.Value
+		return x.ServerHello
 	}
 	return nil
 }
 
-func (x *SyncdRecord) GetKeyId() *KeyId {
+func (x *HandshakeMessage) GetClientFinish() *HandshakeClientFinish {
 	if x != nil {
-		return x.KeyId
+		return x.ClientFinish
 	}
 	return nil
 }
 
-type SyncdPatch struct {
+type HandshakeServerHello struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Version           *SyncdVersion          `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
-	Mutations         []*SyncdMutation       `protobuf:"bytes,2,rep,name=mutations" json:"mutations,omitempty"`
-	ExternalMutations *ExternalBlobReference `protobuf:"bytes,3,opt,name=externalMutations" json:"externalMutations,omitempty"`
-	SnapshotMac       []byte                 `protobuf:"bytes,4,opt,name=snapshotMac" json:"snapshotMac,omitempty"`
-	PatchMac          []byte                 `protobuf:"bytes,5,opt,name=patchMac" json:"patchMac,omitempty"`
-	KeyId             *KeyId                 `protobuf:"bytes,6,opt,name=keyId" json:"keyId,omitempty"`
-	ExitCode          *ExitCode              `protobuf:"bytes,7,opt,name=exitCode" json:"exitCode,omitempty"`
-	DeviceIndex       *uint32                `protobuf:"varint,8,opt,name=deviceIndex" json:"deviceIndex,omitempty"`
+	Ephemeral []byte `protobuf:"bytes,1,opt,name=ephemeral" json:"ephemeral,omitempty"`
+	Static    []byte `protobuf:"bytes,2,opt,name=static" json:"static,omitempty"`
+	Payload   []byte `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"`
 }
 
-func (x *SyncdPatch) Reset() {
-	*x = SyncdPatch{}
+func (x *HandshakeServerHello) Reset() {
+	*x = HandshakeServerHello{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[128]
+		mi := &file_binary_proto_def_proto_msgTypes[139]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncdPatch) String() string {
+func (x *HandshakeServerHello) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncdPatch) ProtoMessage() {}
+func (*HandshakeServerHello) ProtoMessage() {}
 
-func (x *SyncdPatch) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[128]
+func (x *HandshakeServerHello) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[139]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14679,92 +15379,59 @@ func (x *SyncdPatch) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncdPatch.ProtoReflect.Descriptor instead.
-func (*SyncdPatch) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{128}
-}
-
-func (x *SyncdPatch) GetVersion() *SyncdVersion {
-	if x != nil {
-		return x.Version
-	}
-	return nil
-}
-
-func (x *SyncdPatch) GetMutations() []*SyncdMutation {
-	if x != nil {
-		return x.Mutations
-	}
-	return nil
-}
-
-func (x *SyncdPatch) GetExternalMutations() *ExternalBlobReference {
-	if x != nil {
-		return x.ExternalMutations
-	}
-	return nil
-}
-
-func (x *SyncdPatch) GetSnapshotMac() []byte {
-	if x != nil {
-		return x.SnapshotMac
-	}
-	return nil
+// Deprecated: Use HandshakeServerHello.ProtoReflect.Descriptor instead.
+func (*HandshakeServerHello) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{139}
 }
 
-func (x *SyncdPatch) GetPatchMac() []byte {
+func (x *HandshakeServerHello) GetEphemeral() []byte {
 	if x != nil {
-		return x.PatchMac
+		return x.Ephemeral
 	}
 	return nil
 }
 
-func (x *SyncdPatch) GetKeyId() *KeyId {
+func (x *HandshakeServerHello) GetStatic() []byte {
 	if x != nil {
-		return x.KeyId
+		return x.Static
 	}
 	return nil
 }
 
-func (x *SyncdPatch) GetExitCode() *ExitCode {
+func (x *HandshakeServerHello) GetPayload() []byte {
 	if x != nil {
-		return x.ExitCode
+		return x.Payload
 	}
 	return nil
 }
 
-func (x *SyncdPatch) GetDeviceIndex() uint32 {
-	if x != nil && x.DeviceIndex != nil {
-		return *x.DeviceIndex
-	}
-	return 0
-}
-
-type SyncdMutations struct {
+type HandshakeClientHello struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Mutations []*SyncdMutation `protobuf:"bytes,1,rep,name=mutations" json:"mutations,omitempty"`
+	Ephemeral []byte `protobuf:"bytes,1,opt,name=ephemeral" json:"ephemeral,omitempty"`
+	Static    []byte `protobuf:"bytes,2,opt,name=static" json:"static,omitempty"`
+	Payload   []byte `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"`
 }
 
-func (x *SyncdMutations) Reset() {
-	*x = SyncdMutations{}
+func (x *HandshakeClientHello) Reset() {
+	*x = HandshakeClientHello{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[129]
+		mi := &file_binary_proto_def_proto_msgTypes[140]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncdMutations) String() string {
+func (x *HandshakeClientHello) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncdMutations) ProtoMessage() {}
+func (*HandshakeClientHello) ProtoMessage() {}
 
-func (x *SyncdMutations) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[129]
+func (x *HandshakeClientHello) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[140]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14775,44 +15442,58 @@ func (x *SyncdMutations) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncdMutations.ProtoReflect.Descriptor instead.
-func (*SyncdMutations) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{129}
+// Deprecated: Use HandshakeClientHello.ProtoReflect.Descriptor instead.
+func (*HandshakeClientHello) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{140}
 }
 
-func (x *SyncdMutations) GetMutations() []*SyncdMutation {
+func (x *HandshakeClientHello) GetEphemeral() []byte {
 	if x != nil {
-		return x.Mutations
+		return x.Ephemeral
 	}
 	return nil
 }
 
-type SyncdMutation struct {
+func (x *HandshakeClientHello) GetStatic() []byte {
+	if x != nil {
+		return x.Static
+	}
+	return nil
+}
+
+func (x *HandshakeClientHello) GetPayload() []byte {
+	if x != nil {
+		return x.Payload
+	}
+	return nil
+}
+
+type HandshakeClientFinish struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Operation *SyncdMutation_SyncdMutationSyncdOperation `protobuf:"varint,1,opt,name=operation,enum=proto.SyncdMutation_SyncdMutationSyncdOperation" json:"operation,omitempty"`
-	Record    *SyncdRecord                               `protobuf:"bytes,2,opt,name=record" json:"record,omitempty"`
+	Static  []byte `protobuf:"bytes,1,opt,name=static" json:"static,omitempty"`
+	Payload []byte `protobuf:"bytes,2,opt,name=payload" json:"payload,omitempty"`
 }
 
-func (x *SyncdMutation) Reset() {
-	*x = SyncdMutation{}
+func (x *HandshakeClientFinish) Reset() {
+	*x = HandshakeClientFinish{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[130]
+		mi := &file_binary_proto_def_proto_msgTypes[141]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncdMutation) String() string {
+func (x *HandshakeClientFinish) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncdMutation) ProtoMessage() {}
+func (*HandshakeClientFinish) ProtoMessage() {}
 
-func (x *SyncdMutation) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[130]
+func (x *HandshakeClientFinish) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[141]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14823,50 +15504,73 @@ func (x *SyncdMutation) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncdMutation.ProtoReflect.Descriptor instead.
-func (*SyncdMutation) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{130}
+// Deprecated: Use HandshakeClientFinish.ProtoReflect.Descriptor instead.
+func (*HandshakeClientFinish) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{141}
 }
 
-func (x *SyncdMutation) GetOperation() SyncdMutation_SyncdMutationSyncdOperation {
-	if x != nil && x.Operation != nil {
-		return *x.Operation
+func (x *HandshakeClientFinish) GetStatic() []byte {
+	if x != nil {
+		return x.Static
 	}
-	return SyncdMutation_SET
+	return nil
 }
 
-func (x *SyncdMutation) GetRecord() *SyncdRecord {
+func (x *HandshakeClientFinish) GetPayload() []byte {
 	if x != nil {
-		return x.Record
+		return x.Payload
 	}
 	return nil
 }
 
-type SyncdIndex struct {
+type ClientPayload struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Blob []byte `protobuf:"bytes,1,opt,name=blob" json:"blob,omitempty"`
+	Username            *uint64                                      `protobuf:"varint,1,opt,name=username" json:"username,omitempty"`
+	Passive             *bool                                        `protobuf:"varint,3,opt,name=passive" json:"passive,omitempty"`
+	UserAgent           *ClientPayload_UserAgent                     `protobuf:"bytes,5,opt,name=userAgent" json:"userAgent,omitempty"`
+	WebInfo             *ClientPayload_WebInfo                       `protobuf:"bytes,6,opt,name=webInfo" json:"webInfo,omitempty"`
+	PushName            *string                                      `protobuf:"bytes,7,opt,name=pushName" json:"pushName,omitempty"`
+	SessionId           *int32                                       `protobuf:"fixed32,9,opt,name=sessionId" json:"sessionId,omitempty"`
+	ShortConnect        *bool                                        `protobuf:"varint,10,opt,name=shortConnect" json:"shortConnect,omitempty"`
+	ConnectType         *ClientPayload_ConnectType                   `protobuf:"varint,12,opt,name=connectType,enum=proto.ClientPayload_ConnectType" json:"connectType,omitempty"`
+	ConnectReason       *ClientPayload_ConnectReason                 `protobuf:"varint,13,opt,name=connectReason,enum=proto.ClientPayload_ConnectReason" json:"connectReason,omitempty"`
+	Shards              []int32                                      `protobuf:"varint,14,rep,name=shards" json:"shards,omitempty"`
+	DnsSource           *ClientPayload_DNSSource                     `protobuf:"bytes,15,opt,name=dnsSource" json:"dnsSource,omitempty"`
+	ConnectAttemptCount *uint32                                      `protobuf:"varint,16,opt,name=connectAttemptCount" json:"connectAttemptCount,omitempty"`
+	Device              *uint32                                      `protobuf:"varint,18,opt,name=device" json:"device,omitempty"`
+	DevicePairingData   *ClientPayload_DevicePairingRegistrationData `protobuf:"bytes,19,opt,name=devicePairingData" json:"devicePairingData,omitempty"`
+	Product             *ClientPayload_Product                       `protobuf:"varint,20,opt,name=product,enum=proto.ClientPayload_Product" json:"product,omitempty"`
+	FbCat               []byte                                       `protobuf:"bytes,21,opt,name=fbCat" json:"fbCat,omitempty"`
+	FbUserAgent         []byte                                       `protobuf:"bytes,22,opt,name=fbUserAgent" json:"fbUserAgent,omitempty"`
+	Oc                  *bool                                        `protobuf:"varint,23,opt,name=oc" json:"oc,omitempty"`
+	Lc                  *int32                                       `protobuf:"varint,24,opt,name=lc" json:"lc,omitempty"`
+	IosAppExtension     *ClientPayload_IOSAppExtension               `protobuf:"varint,30,opt,name=iosAppExtension,enum=proto.ClientPayload_IOSAppExtension" json:"iosAppExtension,omitempty"`
+	FbAppId             *uint64                                      `protobuf:"varint,31,opt,name=fbAppId" json:"fbAppId,omitempty"`
+	FbDeviceId          []byte                                       `protobuf:"bytes,32,opt,name=fbDeviceId" json:"fbDeviceId,omitempty"`
+	Pull                *bool                                        `protobuf:"varint,33,opt,name=pull" json:"pull,omitempty"`
+	PaddingBytes        []byte                                       `protobuf:"bytes,34,opt,name=paddingBytes" json:"paddingBytes,omitempty"`
 }
 
-func (x *SyncdIndex) Reset() {
-	*x = SyncdIndex{}
+func (x *ClientPayload) Reset() {
+	*x = ClientPayload{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[131]
+		mi := &file_binary_proto_def_proto_msgTypes[142]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncdIndex) String() string {
+func (x *ClientPayload) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncdIndex) ProtoMessage() {}
+func (*ClientPayload) ProtoMessage() {}
 
-func (x *SyncdIndex) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[131]
+func (x *ClientPayload) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[142]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -14877,178 +15581,207 @@ func (x *SyncdIndex) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncdIndex.ProtoReflect.Descriptor instead.
-func (*SyncdIndex) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{131}
+// Deprecated: Use ClientPayload.ProtoReflect.Descriptor instead.
+func (*ClientPayload) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142}
 }
 
-func (x *SyncdIndex) GetBlob() []byte {
+func (x *ClientPayload) GetUsername() uint64 {
+	if x != nil && x.Username != nil {
+		return *x.Username
+	}
+	return 0
+}
+
+func (x *ClientPayload) GetPassive() bool {
+	if x != nil && x.Passive != nil {
+		return *x.Passive
+	}
+	return false
+}
+
+func (x *ClientPayload) GetUserAgent() *ClientPayload_UserAgent {
 	if x != nil {
-		return x.Blob
+		return x.UserAgent
 	}
 	return nil
 }
 
-type KeyId struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Id []byte `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
+func (x *ClientPayload) GetWebInfo() *ClientPayload_WebInfo {
+	if x != nil {
+		return x.WebInfo
+	}
+	return nil
 }
 
-func (x *KeyId) Reset() {
-	*x = KeyId{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[132]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ClientPayload) GetPushName() string {
+	if x != nil && x.PushName != nil {
+		return *x.PushName
 	}
+	return ""
 }
 
-func (x *KeyId) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ClientPayload) GetSessionId() int32 {
+	if x != nil && x.SessionId != nil {
+		return *x.SessionId
+	}
+	return 0
 }
 
-func (*KeyId) ProtoMessage() {}
+func (x *ClientPayload) GetShortConnect() bool {
+	if x != nil && x.ShortConnect != nil {
+		return *x.ShortConnect
+	}
+	return false
+}
 
-func (x *KeyId) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[132]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ClientPayload) GetConnectType() ClientPayload_ConnectType {
+	if x != nil && x.ConnectType != nil {
+		return *x.ConnectType
 	}
-	return mi.MessageOf(x)
+	return ClientPayload_CELLULAR_UNKNOWN
 }
 
-// Deprecated: Use KeyId.ProtoReflect.Descriptor instead.
-func (*KeyId) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{132}
+func (x *ClientPayload) GetConnectReason() ClientPayload_ConnectReason {
+	if x != nil && x.ConnectReason != nil {
+		return *x.ConnectReason
+	}
+	return ClientPayload_PUSH
 }
 
-func (x *KeyId) GetId() []byte {
+func (x *ClientPayload) GetShards() []int32 {
 	if x != nil {
-		return x.Id
+		return x.Shards
 	}
 	return nil
 }
 
-type ExternalBlobReference struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	MediaKey      []byte  `protobuf:"bytes,1,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	DirectPath    *string `protobuf:"bytes,2,opt,name=directPath" json:"directPath,omitempty"`
-	Handle        *string `protobuf:"bytes,3,opt,name=handle" json:"handle,omitempty"`
-	FileSizeBytes *uint64 `protobuf:"varint,4,opt,name=fileSizeBytes" json:"fileSizeBytes,omitempty"`
-	FileSha256    []byte  `protobuf:"bytes,5,opt,name=fileSha256" json:"fileSha256,omitempty"`
-	FileEncSha256 []byte  `protobuf:"bytes,6,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+func (x *ClientPayload) GetDnsSource() *ClientPayload_DNSSource {
+	if x != nil {
+		return x.DnsSource
+	}
+	return nil
 }
 
-func (x *ExternalBlobReference) Reset() {
-	*x = ExternalBlobReference{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[133]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ClientPayload) GetConnectAttemptCount() uint32 {
+	if x != nil && x.ConnectAttemptCount != nil {
+		return *x.ConnectAttemptCount
 	}
+	return 0
 }
 
-func (x *ExternalBlobReference) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ClientPayload) GetDevice() uint32 {
+	if x != nil && x.Device != nil {
+		return *x.Device
+	}
+	return 0
 }
 
-func (*ExternalBlobReference) ProtoMessage() {}
+func (x *ClientPayload) GetDevicePairingData() *ClientPayload_DevicePairingRegistrationData {
+	if x != nil {
+		return x.DevicePairingData
+	}
+	return nil
+}
 
-func (x *ExternalBlobReference) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[133]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ClientPayload) GetProduct() ClientPayload_Product {
+	if x != nil && x.Product != nil {
+		return *x.Product
 	}
-	return mi.MessageOf(x)
+	return ClientPayload_WHATSAPP
 }
 
-// Deprecated: Use ExternalBlobReference.ProtoReflect.Descriptor instead.
-func (*ExternalBlobReference) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{133}
+func (x *ClientPayload) GetFbCat() []byte {
+	if x != nil {
+		return x.FbCat
+	}
+	return nil
 }
 
-func (x *ExternalBlobReference) GetMediaKey() []byte {
+func (x *ClientPayload) GetFbUserAgent() []byte {
 	if x != nil {
-		return x.MediaKey
+		return x.FbUserAgent
 	}
 	return nil
 }
 
-func (x *ExternalBlobReference) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
+func (x *ClientPayload) GetOc() bool {
+	if x != nil && x.Oc != nil {
+		return *x.Oc
 	}
-	return ""
+	return false
 }
 
-func (x *ExternalBlobReference) GetHandle() string {
-	if x != nil && x.Handle != nil {
-		return *x.Handle
+func (x *ClientPayload) GetLc() int32 {
+	if x != nil && x.Lc != nil {
+		return *x.Lc
 	}
-	return ""
+	return 0
 }
 
-func (x *ExternalBlobReference) GetFileSizeBytes() uint64 {
-	if x != nil && x.FileSizeBytes != nil {
-		return *x.FileSizeBytes
+func (x *ClientPayload) GetIosAppExtension() ClientPayload_IOSAppExtension {
+	if x != nil && x.IosAppExtension != nil {
+		return *x.IosAppExtension
+	}
+	return ClientPayload_SHARE_EXTENSION
+}
+
+func (x *ClientPayload) GetFbAppId() uint64 {
+	if x != nil && x.FbAppId != nil {
+		return *x.FbAppId
 	}
 	return 0
 }
 
-func (x *ExternalBlobReference) GetFileSha256() []byte {
+func (x *ClientPayload) GetFbDeviceId() []byte {
 	if x != nil {
-		return x.FileSha256
+		return x.FbDeviceId
 	}
 	return nil
 }
 
-func (x *ExternalBlobReference) GetFileEncSha256() []byte {
+func (x *ClientPayload) GetPull() bool {
+	if x != nil && x.Pull != nil {
+		return *x.Pull
+	}
+	return false
+}
+
+func (x *ClientPayload) GetPaddingBytes() []byte {
 	if x != nil {
-		return x.FileEncSha256
+		return x.PaddingBytes
 	}
 	return nil
 }
 
-type ExitCode struct {
+type WebNotificationsInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Code *uint64 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"`
-	Text *string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
+	Timestamp          *uint64           `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
+	UnreadChats        *uint32           `protobuf:"varint,3,opt,name=unreadChats" json:"unreadChats,omitempty"`
+	NotifyMessageCount *uint32           `protobuf:"varint,4,opt,name=notifyMessageCount" json:"notifyMessageCount,omitempty"`
+	NotifyMessages     []*WebMessageInfo `protobuf:"bytes,5,rep,name=notifyMessages" json:"notifyMessages,omitempty"`
 }
 
-func (x *ExitCode) Reset() {
-	*x = ExitCode{}
+func (x *WebNotificationsInfo) Reset() {
+	*x = WebNotificationsInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[134]
+		mi := &file_binary_proto_def_proto_msgTypes[143]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ExitCode) String() string {
+func (x *WebNotificationsInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ExitCode) ProtoMessage() {}
+func (*WebNotificationsInfo) ProtoMessage() {}
 
-func (x *ExitCode) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[134]
+func (x *WebNotificationsInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[143]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -15059,77 +15792,106 @@ func (x *ExitCode) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ExitCode.ProtoReflect.Descriptor instead.
-func (*ExitCode) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{134}
+// Deprecated: Use WebNotificationsInfo.ProtoReflect.Descriptor instead.
+func (*WebNotificationsInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{143}
 }
 
-func (x *ExitCode) GetCode() uint64 {
-	if x != nil && x.Code != nil {
-		return *x.Code
+func (x *WebNotificationsInfo) GetTimestamp() uint64 {
+	if x != nil && x.Timestamp != nil {
+		return *x.Timestamp
 	}
 	return 0
 }
 
-func (x *ExitCode) GetText() string {
-	if x != nil && x.Text != nil {
-		return *x.Text
+func (x *WebNotificationsInfo) GetUnreadChats() uint32 {
+	if x != nil && x.UnreadChats != nil {
+		return *x.UnreadChats
 	}
-	return ""
+	return 0
 }
 
-type SyncActionValue struct {
+func (x *WebNotificationsInfo) GetNotifyMessageCount() uint32 {
+	if x != nil && x.NotifyMessageCount != nil {
+		return *x.NotifyMessageCount
+	}
+	return 0
+}
+
+func (x *WebNotificationsInfo) GetNotifyMessages() []*WebMessageInfo {
+	if x != nil {
+		return x.NotifyMessages
+	}
+	return nil
+}
+
+type WebMessageInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp                   *int64                       `protobuf:"varint,1,opt,name=timestamp" json:"timestamp,omitempty"`
-	StarAction                  *StarAction                  `protobuf:"bytes,2,opt,name=starAction" json:"starAction,omitempty"`
-	ContactAction               *ContactAction               `protobuf:"bytes,3,opt,name=contactAction" json:"contactAction,omitempty"`
-	MuteAction                  *MuteAction                  `protobuf:"bytes,4,opt,name=muteAction" json:"muteAction,omitempty"`
-	PinAction                   *PinAction                   `protobuf:"bytes,5,opt,name=pinAction" json:"pinAction,omitempty"`
-	SecurityNotificationSetting *SecurityNotificationSetting `protobuf:"bytes,6,opt,name=securityNotificationSetting" json:"securityNotificationSetting,omitempty"`
-	PushNameSetting             *PushNameSetting             `protobuf:"bytes,7,opt,name=pushNameSetting" json:"pushNameSetting,omitempty"`
-	QuickReplyAction            *QuickReplyAction            `protobuf:"bytes,8,opt,name=quickReplyAction" json:"quickReplyAction,omitempty"`
-	RecentStickerWeightsAction  *RecentStickerWeightsAction  `protobuf:"bytes,9,opt,name=recentStickerWeightsAction" json:"recentStickerWeightsAction,omitempty"`
-	RecentStickerMetadata       *RecentStickerMetadata       `protobuf:"bytes,10,opt,name=recentStickerMetadata" json:"recentStickerMetadata,omitempty"`
-	RecentEmojiWeightsAction    *RecentEmojiWeightsAction    `protobuf:"bytes,11,opt,name=recentEmojiWeightsAction" json:"recentEmojiWeightsAction,omitempty"`
-	LabelEditAction             *LabelEditAction             `protobuf:"bytes,14,opt,name=labelEditAction" json:"labelEditAction,omitempty"`
-	LabelAssociationAction      *LabelAssociationAction      `protobuf:"bytes,15,opt,name=labelAssociationAction" json:"labelAssociationAction,omitempty"`
-	LocaleSetting               *LocaleSetting               `protobuf:"bytes,16,opt,name=localeSetting" json:"localeSetting,omitempty"`
-	ArchiveChatAction           *ArchiveChatAction           `protobuf:"bytes,17,opt,name=archiveChatAction" json:"archiveChatAction,omitempty"`
-	DeleteMessageForMeAction    *DeleteMessageForMeAction    `protobuf:"bytes,18,opt,name=deleteMessageForMeAction" json:"deleteMessageForMeAction,omitempty"`
-	KeyExpiration               *KeyExpiration               `protobuf:"bytes,19,opt,name=keyExpiration" json:"keyExpiration,omitempty"`
-	MarkChatAsReadAction        *MarkChatAsReadAction        `protobuf:"bytes,20,opt,name=markChatAsReadAction" json:"markChatAsReadAction,omitempty"`
-	ClearChatAction             *ClearChatAction             `protobuf:"bytes,21,opt,name=clearChatAction" json:"clearChatAction,omitempty"`
-	DeleteChatAction            *DeleteChatAction            `protobuf:"bytes,22,opt,name=deleteChatAction" json:"deleteChatAction,omitempty"`
-	UnarchiveChatsSetting       *UnarchiveChatsSetting       `protobuf:"bytes,23,opt,name=unarchiveChatsSetting" json:"unarchiveChatsSetting,omitempty"`
-	PrimaryFeature              *PrimaryFeature              `protobuf:"bytes,24,opt,name=primaryFeature" json:"primaryFeature,omitempty"`
-	FavoriteStickerAction       *FavoriteStickerAction       `protobuf:"bytes,25,opt,name=favoriteStickerAction" json:"favoriteStickerAction,omitempty"`
-	AndroidUnsupportedActions   *AndroidUnsupportedActions   `protobuf:"bytes,26,opt,name=androidUnsupportedActions" json:"androidUnsupportedActions,omitempty"`
-	AgentAction                 *AgentAction                 `protobuf:"bytes,27,opt,name=agentAction" json:"agentAction,omitempty"`
-	SubscriptionAction          *SubscriptionAction          `protobuf:"bytes,28,opt,name=subscriptionAction" json:"subscriptionAction,omitempty"`
-	UserStatusMuteAction        *UserStatusMuteAction        `protobuf:"bytes,29,opt,name=userStatusMuteAction" json:"userStatusMuteAction,omitempty"`
-	TimeFormatAction            *TimeFormatAction            `protobuf:"bytes,30,opt,name=timeFormatAction" json:"timeFormatAction,omitempty"`
+	Key                             *MessageKey                      `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
+	Message                         *Message                         `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
+	MessageTimestamp                *uint64                          `protobuf:"varint,3,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"`
+	Status                          *WebMessageInfo_Status           `protobuf:"varint,4,opt,name=status,enum=proto.WebMessageInfo_Status" json:"status,omitempty"`
+	Participant                     *string                          `protobuf:"bytes,5,opt,name=participant" json:"participant,omitempty"`
+	MessageC2STimestamp             *uint64                          `protobuf:"varint,6,opt,name=messageC2STimestamp" json:"messageC2STimestamp,omitempty"`
+	Ignore                          *bool                            `protobuf:"varint,16,opt,name=ignore" json:"ignore,omitempty"`
+	Starred                         *bool                            `protobuf:"varint,17,opt,name=starred" json:"starred,omitempty"`
+	Broadcast                       *bool                            `protobuf:"varint,18,opt,name=broadcast" json:"broadcast,omitempty"`
+	PushName                        *string                          `protobuf:"bytes,19,opt,name=pushName" json:"pushName,omitempty"`
+	MediaCiphertextSha256           []byte                           `protobuf:"bytes,20,opt,name=mediaCiphertextSha256" json:"mediaCiphertextSha256,omitempty"`
+	Multicast                       *bool                            `protobuf:"varint,21,opt,name=multicast" json:"multicast,omitempty"`
+	UrlText                         *bool                            `protobuf:"varint,22,opt,name=urlText" json:"urlText,omitempty"`
+	UrlNumber                       *bool                            `protobuf:"varint,23,opt,name=urlNumber" json:"urlNumber,omitempty"`
+	MessageStubType                 *WebMessageInfo_StubType         `protobuf:"varint,24,opt,name=messageStubType,enum=proto.WebMessageInfo_StubType" json:"messageStubType,omitempty"`
+	ClearMedia                      *bool                            `protobuf:"varint,25,opt,name=clearMedia" json:"clearMedia,omitempty"`
+	MessageStubParameters           []string                         `protobuf:"bytes,26,rep,name=messageStubParameters" json:"messageStubParameters,omitempty"`
+	Duration                        *uint32                          `protobuf:"varint,27,opt,name=duration" json:"duration,omitempty"`
+	Labels                          []string                         `protobuf:"bytes,28,rep,name=labels" json:"labels,omitempty"`
+	PaymentInfo                     *PaymentInfo                     `protobuf:"bytes,29,opt,name=paymentInfo" json:"paymentInfo,omitempty"`
+	FinalLiveLocation               *LiveLocationMessage             `protobuf:"bytes,30,opt,name=finalLiveLocation" json:"finalLiveLocation,omitempty"`
+	QuotedPaymentInfo               *PaymentInfo                     `protobuf:"bytes,31,opt,name=quotedPaymentInfo" json:"quotedPaymentInfo,omitempty"`
+	EphemeralStartTimestamp         *uint64                          `protobuf:"varint,32,opt,name=ephemeralStartTimestamp" json:"ephemeralStartTimestamp,omitempty"`
+	EphemeralDuration               *uint32                          `protobuf:"varint,33,opt,name=ephemeralDuration" json:"ephemeralDuration,omitempty"`
+	EphemeralOffToOn                *bool                            `protobuf:"varint,34,opt,name=ephemeralOffToOn" json:"ephemeralOffToOn,omitempty"`
+	EphemeralOutOfSync              *bool                            `protobuf:"varint,35,opt,name=ephemeralOutOfSync" json:"ephemeralOutOfSync,omitempty"`
+	BizPrivacyStatus                *WebMessageInfo_BizPrivacyStatus `protobuf:"varint,36,opt,name=bizPrivacyStatus,enum=proto.WebMessageInfo_BizPrivacyStatus" json:"bizPrivacyStatus,omitempty"`
+	VerifiedBizName                 *string                          `protobuf:"bytes,37,opt,name=verifiedBizName" json:"verifiedBizName,omitempty"`
+	MediaData                       *MediaData                       `protobuf:"bytes,38,opt,name=mediaData" json:"mediaData,omitempty"`
+	PhotoChange                     *PhotoChange                     `protobuf:"bytes,39,opt,name=photoChange" json:"photoChange,omitempty"`
+	UserReceipt                     []*UserReceipt                   `protobuf:"bytes,40,rep,name=userReceipt" json:"userReceipt,omitempty"`
+	Reactions                       []*Reaction                      `protobuf:"bytes,41,rep,name=reactions" json:"reactions,omitempty"`
+	QuotedStickerData               *MediaData                       `protobuf:"bytes,42,opt,name=quotedStickerData" json:"quotedStickerData,omitempty"`
+	FutureproofData                 []byte                           `protobuf:"bytes,43,opt,name=futureproofData" json:"futureproofData,omitempty"`
+	StatusPsa                       *StatusPSA                       `protobuf:"bytes,44,opt,name=statusPsa" json:"statusPsa,omitempty"`
+	PollUpdates                     []*PollUpdate                    `protobuf:"bytes,45,rep,name=pollUpdates" json:"pollUpdates,omitempty"`
+	PollAdditionalMetadata          *PollAdditionalMetadata          `protobuf:"bytes,46,opt,name=pollAdditionalMetadata" json:"pollAdditionalMetadata,omitempty"`
+	AgentId                         *string                          `protobuf:"bytes,47,opt,name=agentId" json:"agentId,omitempty"`
+	StatusAlreadyViewed             *bool                            `protobuf:"varint,48,opt,name=statusAlreadyViewed" json:"statusAlreadyViewed,omitempty"`
+	MessageSecret                   []byte                           `protobuf:"bytes,49,opt,name=messageSecret" json:"messageSecret,omitempty"`
+	KeepInChat                      *KeepInChat                      `protobuf:"bytes,50,opt,name=keepInChat" json:"keepInChat,omitempty"`
+	OriginalSelfAuthorUserJidString *string                          `protobuf:"bytes,51,opt,name=originalSelfAuthorUserJidString" json:"originalSelfAuthorUserJidString,omitempty"`
+	RevokeMessageTimestamp          *uint64                          `protobuf:"varint,52,opt,name=revokeMessageTimestamp" json:"revokeMessageTimestamp,omitempty"`
 }
 
-func (x *SyncActionValue) Reset() {
-	*x = SyncActionValue{}
+func (x *WebMessageInfo) Reset() {
+	*x = WebMessageInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[135]
+		mi := &file_binary_proto_def_proto_msgTypes[144]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncActionValue) String() string {
+func (x *WebMessageInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncActionValue) ProtoMessage() {}
+func (*WebMessageInfo) ProtoMessage() {}
 
-func (x *SyncActionValue) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[135]
+func (x *WebMessageInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[144]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -15140,430 +15902,381 @@ func (x *SyncActionValue) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncActionValue.ProtoReflect.Descriptor instead.
-func (*SyncActionValue) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{135}
-}
-
-func (x *SyncActionValue) GetTimestamp() int64 {
-	if x != nil && x.Timestamp != nil {
-		return *x.Timestamp
-	}
-	return 0
-}
-
-func (x *SyncActionValue) GetStarAction() *StarAction {
-	if x != nil {
-		return x.StarAction
-	}
-	return nil
-}
-
-func (x *SyncActionValue) GetContactAction() *ContactAction {
-	if x != nil {
-		return x.ContactAction
-	}
-	return nil
-}
-
-func (x *SyncActionValue) GetMuteAction() *MuteAction {
-	if x != nil {
-		return x.MuteAction
-	}
-	return nil
-}
-
-func (x *SyncActionValue) GetPinAction() *PinAction {
-	if x != nil {
-		return x.PinAction
-	}
-	return nil
-}
-
-func (x *SyncActionValue) GetSecurityNotificationSetting() *SecurityNotificationSetting {
-	if x != nil {
-		return x.SecurityNotificationSetting
-	}
-	return nil
+// Deprecated: Use WebMessageInfo.ProtoReflect.Descriptor instead.
+func (*WebMessageInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{144}
 }
 
-func (x *SyncActionValue) GetPushNameSetting() *PushNameSetting {
+func (x *WebMessageInfo) GetKey() *MessageKey {
 	if x != nil {
-		return x.PushNameSetting
+		return x.Key
 	}
 	return nil
 }
 
-func (x *SyncActionValue) GetQuickReplyAction() *QuickReplyAction {
+func (x *WebMessageInfo) GetMessage() *Message {
 	if x != nil {
-		return x.QuickReplyAction
+		return x.Message
 	}
 	return nil
 }
 
-func (x *SyncActionValue) GetRecentStickerWeightsAction() *RecentStickerWeightsAction {
-	if x != nil {
-		return x.RecentStickerWeightsAction
+func (x *WebMessageInfo) GetMessageTimestamp() uint64 {
+	if x != nil && x.MessageTimestamp != nil {
+		return *x.MessageTimestamp
 	}
-	return nil
+	return 0
 }
 
-func (x *SyncActionValue) GetRecentStickerMetadata() *RecentStickerMetadata {
-	if x != nil {
-		return x.RecentStickerMetadata
+func (x *WebMessageInfo) GetStatus() WebMessageInfo_Status {
+	if x != nil && x.Status != nil {
+		return *x.Status
 	}
-	return nil
+	return WebMessageInfo_ERROR
 }
 
-func (x *SyncActionValue) GetRecentEmojiWeightsAction() *RecentEmojiWeightsAction {
-	if x != nil {
-		return x.RecentEmojiWeightsAction
+func (x *WebMessageInfo) GetParticipant() string {
+	if x != nil && x.Participant != nil {
+		return *x.Participant
 	}
-	return nil
+	return ""
 }
 
-func (x *SyncActionValue) GetLabelEditAction() *LabelEditAction {
-	if x != nil {
-		return x.LabelEditAction
+func (x *WebMessageInfo) GetMessageC2STimestamp() uint64 {
+	if x != nil && x.MessageC2STimestamp != nil {
+		return *x.MessageC2STimestamp
 	}
-	return nil
+	return 0
 }
 
-func (x *SyncActionValue) GetLabelAssociationAction() *LabelAssociationAction {
-	if x != nil {
-		return x.LabelAssociationAction
+func (x *WebMessageInfo) GetIgnore() bool {
+	if x != nil && x.Ignore != nil {
+		return *x.Ignore
 	}
-	return nil
+	return false
 }
 
-func (x *SyncActionValue) GetLocaleSetting() *LocaleSetting {
-	if x != nil {
-		return x.LocaleSetting
+func (x *WebMessageInfo) GetStarred() bool {
+	if x != nil && x.Starred != nil {
+		return *x.Starred
 	}
-	return nil
+	return false
 }
 
-func (x *SyncActionValue) GetArchiveChatAction() *ArchiveChatAction {
-	if x != nil {
-		return x.ArchiveChatAction
+func (x *WebMessageInfo) GetBroadcast() bool {
+	if x != nil && x.Broadcast != nil {
+		return *x.Broadcast
 	}
-	return nil
+	return false
 }
 
-func (x *SyncActionValue) GetDeleteMessageForMeAction() *DeleteMessageForMeAction {
-	if x != nil {
-		return x.DeleteMessageForMeAction
+func (x *WebMessageInfo) GetPushName() string {
+	if x != nil && x.PushName != nil {
+		return *x.PushName
 	}
-	return nil
+	return ""
 }
 
-func (x *SyncActionValue) GetKeyExpiration() *KeyExpiration {
+func (x *WebMessageInfo) GetMediaCiphertextSha256() []byte {
 	if x != nil {
-		return x.KeyExpiration
+		return x.MediaCiphertextSha256
 	}
 	return nil
 }
 
-func (x *SyncActionValue) GetMarkChatAsReadAction() *MarkChatAsReadAction {
-	if x != nil {
-		return x.MarkChatAsReadAction
+func (x *WebMessageInfo) GetMulticast() bool {
+	if x != nil && x.Multicast != nil {
+		return *x.Multicast
 	}
-	return nil
+	return false
 }
 
-func (x *SyncActionValue) GetClearChatAction() *ClearChatAction {
-	if x != nil {
-		return x.ClearChatAction
+func (x *WebMessageInfo) GetUrlText() bool {
+	if x != nil && x.UrlText != nil {
+		return *x.UrlText
 	}
-	return nil
+	return false
 }
 
-func (x *SyncActionValue) GetDeleteChatAction() *DeleteChatAction {
-	if x != nil {
-		return x.DeleteChatAction
+func (x *WebMessageInfo) GetUrlNumber() bool {
+	if x != nil && x.UrlNumber != nil {
+		return *x.UrlNumber
 	}
-	return nil
+	return false
 }
 
-func (x *SyncActionValue) GetUnarchiveChatsSetting() *UnarchiveChatsSetting {
-	if x != nil {
-		return x.UnarchiveChatsSetting
+func (x *WebMessageInfo) GetMessageStubType() WebMessageInfo_StubType {
+	if x != nil && x.MessageStubType != nil {
+		return *x.MessageStubType
 	}
-	return nil
+	return WebMessageInfo_UNKNOWN
 }
 
-func (x *SyncActionValue) GetPrimaryFeature() *PrimaryFeature {
-	if x != nil {
-		return x.PrimaryFeature
+func (x *WebMessageInfo) GetClearMedia() bool {
+	if x != nil && x.ClearMedia != nil {
+		return *x.ClearMedia
 	}
-	return nil
+	return false
 }
 
-func (x *SyncActionValue) GetFavoriteStickerAction() *FavoriteStickerAction {
+func (x *WebMessageInfo) GetMessageStubParameters() []string {
 	if x != nil {
-		return x.FavoriteStickerAction
+		return x.MessageStubParameters
 	}
 	return nil
 }
 
-func (x *SyncActionValue) GetAndroidUnsupportedActions() *AndroidUnsupportedActions {
-	if x != nil {
-		return x.AndroidUnsupportedActions
+func (x *WebMessageInfo) GetDuration() uint32 {
+	if x != nil && x.Duration != nil {
+		return *x.Duration
 	}
-	return nil
+	return 0
 }
 
-func (x *SyncActionValue) GetAgentAction() *AgentAction {
+func (x *WebMessageInfo) GetLabels() []string {
 	if x != nil {
-		return x.AgentAction
+		return x.Labels
 	}
 	return nil
 }
 
-func (x *SyncActionValue) GetSubscriptionAction() *SubscriptionAction {
+func (x *WebMessageInfo) GetPaymentInfo() *PaymentInfo {
 	if x != nil {
-		return x.SubscriptionAction
+		return x.PaymentInfo
 	}
 	return nil
 }
 
-func (x *SyncActionValue) GetUserStatusMuteAction() *UserStatusMuteAction {
+func (x *WebMessageInfo) GetFinalLiveLocation() *LiveLocationMessage {
 	if x != nil {
-		return x.UserStatusMuteAction
+		return x.FinalLiveLocation
 	}
 	return nil
 }
 
-func (x *SyncActionValue) GetTimeFormatAction() *TimeFormatAction {
+func (x *WebMessageInfo) GetQuotedPaymentInfo() *PaymentInfo {
 	if x != nil {
-		return x.TimeFormatAction
+		return x.QuotedPaymentInfo
 	}
 	return nil
 }
 
-type UserStatusMuteAction struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Muted *bool `protobuf:"varint,1,opt,name=muted" json:"muted,omitempty"`
-}
-
-func (x *UserStatusMuteAction) Reset() {
-	*x = UserStatusMuteAction{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[136]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebMessageInfo) GetEphemeralStartTimestamp() uint64 {
+	if x != nil && x.EphemeralStartTimestamp != nil {
+		return *x.EphemeralStartTimestamp
 	}
+	return 0
 }
 
-func (x *UserStatusMuteAction) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UserStatusMuteAction) ProtoMessage() {}
-
-func (x *UserStatusMuteAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[136]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebMessageInfo) GetEphemeralDuration() uint32 {
+	if x != nil && x.EphemeralDuration != nil {
+		return *x.EphemeralDuration
 	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UserStatusMuteAction.ProtoReflect.Descriptor instead.
-func (*UserStatusMuteAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{136}
+	return 0
 }
 
-func (x *UserStatusMuteAction) GetMuted() bool {
-	if x != nil && x.Muted != nil {
-		return *x.Muted
+func (x *WebMessageInfo) GetEphemeralOffToOn() bool {
+	if x != nil && x.EphemeralOffToOn != nil {
+		return *x.EphemeralOffToOn
 	}
 	return false
 }
 
-type UnarchiveChatsSetting struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	UnarchiveChats *bool `protobuf:"varint,1,opt,name=unarchiveChats" json:"unarchiveChats,omitempty"`
-}
-
-func (x *UnarchiveChatsSetting) Reset() {
-	*x = UnarchiveChatsSetting{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[137]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebMessageInfo) GetEphemeralOutOfSync() bool {
+	if x != nil && x.EphemeralOutOfSync != nil {
+		return *x.EphemeralOutOfSync
 	}
+	return false
 }
 
-func (x *UnarchiveChatsSetting) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UnarchiveChatsSetting) ProtoMessage() {}
-
-func (x *UnarchiveChatsSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[137]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebMessageInfo) GetBizPrivacyStatus() WebMessageInfo_BizPrivacyStatus {
+	if x != nil && x.BizPrivacyStatus != nil {
+		return *x.BizPrivacyStatus
 	}
-	return mi.MessageOf(x)
+	return WebMessageInfo_E2EE
 }
 
-// Deprecated: Use UnarchiveChatsSetting.ProtoReflect.Descriptor instead.
-func (*UnarchiveChatsSetting) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{137}
+func (x *WebMessageInfo) GetVerifiedBizName() string {
+	if x != nil && x.VerifiedBizName != nil {
+		return *x.VerifiedBizName
+	}
+	return ""
 }
 
-func (x *UnarchiveChatsSetting) GetUnarchiveChats() bool {
-	if x != nil && x.UnarchiveChats != nil {
-		return *x.UnarchiveChats
+func (x *WebMessageInfo) GetMediaData() *MediaData {
+	if x != nil {
+		return x.MediaData
 	}
-	return false
+	return nil
 }
 
-type TimeFormatAction struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	IsTwentyFourHourFormatEnabled *bool `protobuf:"varint,1,opt,name=isTwentyFourHourFormatEnabled" json:"isTwentyFourHourFormatEnabled,omitempty"`
+func (x *WebMessageInfo) GetPhotoChange() *PhotoChange {
+	if x != nil {
+		return x.PhotoChange
+	}
+	return nil
 }
 
-func (x *TimeFormatAction) Reset() {
-	*x = TimeFormatAction{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[138]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebMessageInfo) GetUserReceipt() []*UserReceipt {
+	if x != nil {
+		return x.UserReceipt
 	}
+	return nil
 }
 
-func (x *TimeFormatAction) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *WebMessageInfo) GetReactions() []*Reaction {
+	if x != nil {
+		return x.Reactions
+	}
+	return nil
 }
 
-func (*TimeFormatAction) ProtoMessage() {}
-
-func (x *TimeFormatAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[138]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebMessageInfo) GetQuotedStickerData() *MediaData {
+	if x != nil {
+		return x.QuotedStickerData
 	}
-	return mi.MessageOf(x)
+	return nil
 }
 
-// Deprecated: Use TimeFormatAction.ProtoReflect.Descriptor instead.
-func (*TimeFormatAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{138}
+func (x *WebMessageInfo) GetFutureproofData() []byte {
+	if x != nil {
+		return x.FutureproofData
+	}
+	return nil
 }
 
-func (x *TimeFormatAction) GetIsTwentyFourHourFormatEnabled() bool {
-	if x != nil && x.IsTwentyFourHourFormatEnabled != nil {
-		return *x.IsTwentyFourHourFormatEnabled
+func (x *WebMessageInfo) GetStatusPsa() *StatusPSA {
+	if x != nil {
+		return x.StatusPsa
 	}
-	return false
+	return nil
 }
 
-type SyncActionMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Key       *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
-	Timestamp *int64      `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
+func (x *WebMessageInfo) GetPollUpdates() []*PollUpdate {
+	if x != nil {
+		return x.PollUpdates
+	}
+	return nil
 }
 
-func (x *SyncActionMessage) Reset() {
-	*x = SyncActionMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[139]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebMessageInfo) GetPollAdditionalMetadata() *PollAdditionalMetadata {
+	if x != nil {
+		return x.PollAdditionalMetadata
 	}
+	return nil
 }
 
-func (x *SyncActionMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *WebMessageInfo) GetAgentId() string {
+	if x != nil && x.AgentId != nil {
+		return *x.AgentId
+	}
+	return ""
 }
 
-func (*SyncActionMessage) ProtoMessage() {}
-
-func (x *SyncActionMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[139]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebMessageInfo) GetStatusAlreadyViewed() bool {
+	if x != nil && x.StatusAlreadyViewed != nil {
+		return *x.StatusAlreadyViewed
 	}
-	return mi.MessageOf(x)
+	return false
 }
 
-// Deprecated: Use SyncActionMessage.ProtoReflect.Descriptor instead.
-func (*SyncActionMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{139}
+func (x *WebMessageInfo) GetMessageSecret() []byte {
+	if x != nil {
+		return x.MessageSecret
+	}
+	return nil
 }
 
-func (x *SyncActionMessage) GetKey() *MessageKey {
+func (x *WebMessageInfo) GetKeepInChat() *KeepInChat {
 	if x != nil {
-		return x.Key
+		return x.KeepInChat
 	}
 	return nil
 }
 
-func (x *SyncActionMessage) GetTimestamp() int64 {
-	if x != nil && x.Timestamp != nil {
-		return *x.Timestamp
+func (x *WebMessageInfo) GetOriginalSelfAuthorUserJidString() string {
+	if x != nil && x.OriginalSelfAuthorUserJidString != nil {
+		return *x.OriginalSelfAuthorUserJidString
+	}
+	return ""
+}
+
+func (x *WebMessageInfo) GetRevokeMessageTimestamp() uint64 {
+	if x != nil && x.RevokeMessageTimestamp != nil {
+		return *x.RevokeMessageTimestamp
 	}
 	return 0
 }
 
-type SyncActionMessageRange struct {
+type WebFeatures struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	LastMessageTimestamp       *int64               `protobuf:"varint,1,opt,name=lastMessageTimestamp" json:"lastMessageTimestamp,omitempty"`
-	LastSystemMessageTimestamp *int64               `protobuf:"varint,2,opt,name=lastSystemMessageTimestamp" json:"lastSystemMessageTimestamp,omitempty"`
-	Messages                   []*SyncActionMessage `protobuf:"bytes,3,rep,name=messages" json:"messages,omitempty"`
+	LabelsDisplay                *WebFeatures_Flag `protobuf:"varint,1,opt,name=labelsDisplay,enum=proto.WebFeatures_Flag" json:"labelsDisplay,omitempty"`
+	VoipIndividualOutgoing       *WebFeatures_Flag `protobuf:"varint,2,opt,name=voipIndividualOutgoing,enum=proto.WebFeatures_Flag" json:"voipIndividualOutgoing,omitempty"`
+	GroupsV3                     *WebFeatures_Flag `protobuf:"varint,3,opt,name=groupsV3,enum=proto.WebFeatures_Flag" json:"groupsV3,omitempty"`
+	GroupsV3Create               *WebFeatures_Flag `protobuf:"varint,4,opt,name=groupsV3Create,enum=proto.WebFeatures_Flag" json:"groupsV3Create,omitempty"`
+	ChangeNumberV2               *WebFeatures_Flag `protobuf:"varint,5,opt,name=changeNumberV2,enum=proto.WebFeatures_Flag" json:"changeNumberV2,omitempty"`
+	QueryStatusV3Thumbnail       *WebFeatures_Flag `protobuf:"varint,6,opt,name=queryStatusV3Thumbnail,enum=proto.WebFeatures_Flag" json:"queryStatusV3Thumbnail,omitempty"`
+	LiveLocations                *WebFeatures_Flag `protobuf:"varint,7,opt,name=liveLocations,enum=proto.WebFeatures_Flag" json:"liveLocations,omitempty"`
+	QueryVname                   *WebFeatures_Flag `protobuf:"varint,8,opt,name=queryVname,enum=proto.WebFeatures_Flag" json:"queryVname,omitempty"`
+	VoipIndividualIncoming       *WebFeatures_Flag `protobuf:"varint,9,opt,name=voipIndividualIncoming,enum=proto.WebFeatures_Flag" json:"voipIndividualIncoming,omitempty"`
+	QuickRepliesQuery            *WebFeatures_Flag `protobuf:"varint,10,opt,name=quickRepliesQuery,enum=proto.WebFeatures_Flag" json:"quickRepliesQuery,omitempty"`
+	Payments                     *WebFeatures_Flag `protobuf:"varint,11,opt,name=payments,enum=proto.WebFeatures_Flag" json:"payments,omitempty"`
+	StickerPackQuery             *WebFeatures_Flag `protobuf:"varint,12,opt,name=stickerPackQuery,enum=proto.WebFeatures_Flag" json:"stickerPackQuery,omitempty"`
+	LiveLocationsFinal           *WebFeatures_Flag `protobuf:"varint,13,opt,name=liveLocationsFinal,enum=proto.WebFeatures_Flag" json:"liveLocationsFinal,omitempty"`
+	LabelsEdit                   *WebFeatures_Flag `protobuf:"varint,14,opt,name=labelsEdit,enum=proto.WebFeatures_Flag" json:"labelsEdit,omitempty"`
+	MediaUpload                  *WebFeatures_Flag `protobuf:"varint,15,opt,name=mediaUpload,enum=proto.WebFeatures_Flag" json:"mediaUpload,omitempty"`
+	MediaUploadRichQuickReplies  *WebFeatures_Flag `protobuf:"varint,18,opt,name=mediaUploadRichQuickReplies,enum=proto.WebFeatures_Flag" json:"mediaUploadRichQuickReplies,omitempty"`
+	VnameV2                      *WebFeatures_Flag `protobuf:"varint,19,opt,name=vnameV2,enum=proto.WebFeatures_Flag" json:"vnameV2,omitempty"`
+	VideoPlaybackUrl             *WebFeatures_Flag `protobuf:"varint,20,opt,name=videoPlaybackUrl,enum=proto.WebFeatures_Flag" json:"videoPlaybackUrl,omitempty"`
+	StatusRanking                *WebFeatures_Flag `protobuf:"varint,21,opt,name=statusRanking,enum=proto.WebFeatures_Flag" json:"statusRanking,omitempty"`
+	VoipIndividualVideo          *WebFeatures_Flag `protobuf:"varint,22,opt,name=voipIndividualVideo,enum=proto.WebFeatures_Flag" json:"voipIndividualVideo,omitempty"`
+	ThirdPartyStickers           *WebFeatures_Flag `protobuf:"varint,23,opt,name=thirdPartyStickers,enum=proto.WebFeatures_Flag" json:"thirdPartyStickers,omitempty"`
+	FrequentlyForwardedSetting   *WebFeatures_Flag `protobuf:"varint,24,opt,name=frequentlyForwardedSetting,enum=proto.WebFeatures_Flag" json:"frequentlyForwardedSetting,omitempty"`
+	GroupsV4JoinPermission       *WebFeatures_Flag `protobuf:"varint,25,opt,name=groupsV4JoinPermission,enum=proto.WebFeatures_Flag" json:"groupsV4JoinPermission,omitempty"`
+	RecentStickers               *WebFeatures_Flag `protobuf:"varint,26,opt,name=recentStickers,enum=proto.WebFeatures_Flag" json:"recentStickers,omitempty"`
+	Catalog                      *WebFeatures_Flag `protobuf:"varint,27,opt,name=catalog,enum=proto.WebFeatures_Flag" json:"catalog,omitempty"`
+	StarredStickers              *WebFeatures_Flag `protobuf:"varint,28,opt,name=starredStickers,enum=proto.WebFeatures_Flag" json:"starredStickers,omitempty"`
+	VoipGroupCall                *WebFeatures_Flag `protobuf:"varint,29,opt,name=voipGroupCall,enum=proto.WebFeatures_Flag" json:"voipGroupCall,omitempty"`
+	TemplateMessage              *WebFeatures_Flag `protobuf:"varint,30,opt,name=templateMessage,enum=proto.WebFeatures_Flag" json:"templateMessage,omitempty"`
+	TemplateMessageInteractivity *WebFeatures_Flag `protobuf:"varint,31,opt,name=templateMessageInteractivity,enum=proto.WebFeatures_Flag" json:"templateMessageInteractivity,omitempty"`
+	EphemeralMessages            *WebFeatures_Flag `protobuf:"varint,32,opt,name=ephemeralMessages,enum=proto.WebFeatures_Flag" json:"ephemeralMessages,omitempty"`
+	E2ENotificationSync          *WebFeatures_Flag `protobuf:"varint,33,opt,name=e2ENotificationSync,enum=proto.WebFeatures_Flag" json:"e2ENotificationSync,omitempty"`
+	RecentStickersV2             *WebFeatures_Flag `protobuf:"varint,34,opt,name=recentStickersV2,enum=proto.WebFeatures_Flag" json:"recentStickersV2,omitempty"`
+	RecentStickersV3             *WebFeatures_Flag `protobuf:"varint,36,opt,name=recentStickersV3,enum=proto.WebFeatures_Flag" json:"recentStickersV3,omitempty"`
+	UserNotice                   *WebFeatures_Flag `protobuf:"varint,37,opt,name=userNotice,enum=proto.WebFeatures_Flag" json:"userNotice,omitempty"`
+	Support                      *WebFeatures_Flag `protobuf:"varint,39,opt,name=support,enum=proto.WebFeatures_Flag" json:"support,omitempty"`
+	GroupUiiCleanup              *WebFeatures_Flag `protobuf:"varint,40,opt,name=groupUiiCleanup,enum=proto.WebFeatures_Flag" json:"groupUiiCleanup,omitempty"`
+	GroupDogfoodingInternalOnly  *WebFeatures_Flag `protobuf:"varint,41,opt,name=groupDogfoodingInternalOnly,enum=proto.WebFeatures_Flag" json:"groupDogfoodingInternalOnly,omitempty"`
+	SettingsSync                 *WebFeatures_Flag `protobuf:"varint,42,opt,name=settingsSync,enum=proto.WebFeatures_Flag" json:"settingsSync,omitempty"`
+	ArchiveV2                    *WebFeatures_Flag `protobuf:"varint,43,opt,name=archiveV2,enum=proto.WebFeatures_Flag" json:"archiveV2,omitempty"`
+	EphemeralAllowGroupMembers   *WebFeatures_Flag `protobuf:"varint,44,opt,name=ephemeralAllowGroupMembers,enum=proto.WebFeatures_Flag" json:"ephemeralAllowGroupMembers,omitempty"`
+	Ephemeral24HDuration         *WebFeatures_Flag `protobuf:"varint,45,opt,name=ephemeral24HDuration,enum=proto.WebFeatures_Flag" json:"ephemeral24HDuration,omitempty"`
+	MdForceUpgrade               *WebFeatures_Flag `protobuf:"varint,46,opt,name=mdForceUpgrade,enum=proto.WebFeatures_Flag" json:"mdForceUpgrade,omitempty"`
+	DisappearingMode             *WebFeatures_Flag `protobuf:"varint,47,opt,name=disappearingMode,enum=proto.WebFeatures_Flag" json:"disappearingMode,omitempty"`
+	ExternalMdOptInAvailable     *WebFeatures_Flag `protobuf:"varint,48,opt,name=externalMdOptInAvailable,enum=proto.WebFeatures_Flag" json:"externalMdOptInAvailable,omitempty"`
+	NoDeleteMessageTimeLimit     *WebFeatures_Flag `protobuf:"varint,49,opt,name=noDeleteMessageTimeLimit,enum=proto.WebFeatures_Flag" json:"noDeleteMessageTimeLimit,omitempty"`
 }
-
-func (x *SyncActionMessageRange) Reset() {
-	*x = SyncActionMessageRange{}
+
+func (x *WebFeatures) Reset() {
+	*x = WebFeatures{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[140]
+		mi := &file_binary_proto_def_proto_msgTypes[145]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncActionMessageRange) String() string {
+func (x *WebFeatures) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncActionMessageRange) ProtoMessage() {}
+func (*WebFeatures) ProtoMessage() {}
 
-func (x *SyncActionMessageRange) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[140]
+func (x *WebFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[145]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -15574,341 +16287,341 @@ func (x *SyncActionMessageRange) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncActionMessageRange.ProtoReflect.Descriptor instead.
-func (*SyncActionMessageRange) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{140}
+// Deprecated: Use WebFeatures.ProtoReflect.Descriptor instead.
+func (*WebFeatures) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{145}
 }
 
-func (x *SyncActionMessageRange) GetLastMessageTimestamp() int64 {
-	if x != nil && x.LastMessageTimestamp != nil {
-		return *x.LastMessageTimestamp
+func (x *WebFeatures) GetLabelsDisplay() WebFeatures_Flag {
+	if x != nil && x.LabelsDisplay != nil {
+		return *x.LabelsDisplay
 	}
-	return 0
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SyncActionMessageRange) GetLastSystemMessageTimestamp() int64 {
-	if x != nil && x.LastSystemMessageTimestamp != nil {
-		return *x.LastSystemMessageTimestamp
+func (x *WebFeatures) GetVoipIndividualOutgoing() WebFeatures_Flag {
+	if x != nil && x.VoipIndividualOutgoing != nil {
+		return *x.VoipIndividualOutgoing
 	}
-	return 0
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SyncActionMessageRange) GetMessages() []*SyncActionMessage {
-	if x != nil {
-		return x.Messages
+func (x *WebFeatures) GetGroupsV3() WebFeatures_Flag {
+	if x != nil && x.GroupsV3 != nil {
+		return *x.GroupsV3
 	}
-	return nil
+	return WebFeatures_NOT_STARTED
 }
 
-type SubscriptionAction struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	IsDeactivated  *bool  `protobuf:"varint,1,opt,name=isDeactivated" json:"isDeactivated,omitempty"`
-	IsAutoRenewing *bool  `protobuf:"varint,2,opt,name=isAutoRenewing" json:"isAutoRenewing,omitempty"`
-	ExpirationDate *int64 `protobuf:"varint,3,opt,name=expirationDate" json:"expirationDate,omitempty"`
+func (x *WebFeatures) GetGroupsV3Create() WebFeatures_Flag {
+	if x != nil && x.GroupsV3Create != nil {
+		return *x.GroupsV3Create
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SubscriptionAction) Reset() {
-	*x = SubscriptionAction{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[141]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebFeatures) GetChangeNumberV2() WebFeatures_Flag {
+	if x != nil && x.ChangeNumberV2 != nil {
+		return *x.ChangeNumberV2
 	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SubscriptionAction) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *WebFeatures) GetQueryStatusV3Thumbnail() WebFeatures_Flag {
+	if x != nil && x.QueryStatusV3Thumbnail != nil {
+		return *x.QueryStatusV3Thumbnail
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (*SubscriptionAction) ProtoMessage() {}
-
-func (x *SubscriptionAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[141]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebFeatures) GetLiveLocations() WebFeatures_Flag {
+	if x != nil && x.LiveLocations != nil {
+		return *x.LiveLocations
 	}
-	return mi.MessageOf(x)
+	return WebFeatures_NOT_STARTED
 }
 
-// Deprecated: Use SubscriptionAction.ProtoReflect.Descriptor instead.
-func (*SubscriptionAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{141}
+func (x *WebFeatures) GetQueryVname() WebFeatures_Flag {
+	if x != nil && x.QueryVname != nil {
+		return *x.QueryVname
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SubscriptionAction) GetIsDeactivated() bool {
-	if x != nil && x.IsDeactivated != nil {
-		return *x.IsDeactivated
+func (x *WebFeatures) GetVoipIndividualIncoming() WebFeatures_Flag {
+	if x != nil && x.VoipIndividualIncoming != nil {
+		return *x.VoipIndividualIncoming
 	}
-	return false
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SubscriptionAction) GetIsAutoRenewing() bool {
-	if x != nil && x.IsAutoRenewing != nil {
-		return *x.IsAutoRenewing
+func (x *WebFeatures) GetQuickRepliesQuery() WebFeatures_Flag {
+	if x != nil && x.QuickRepliesQuery != nil {
+		return *x.QuickRepliesQuery
 	}
-	return false
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SubscriptionAction) GetExpirationDate() int64 {
-	if x != nil && x.ExpirationDate != nil {
-		return *x.ExpirationDate
+func (x *WebFeatures) GetPayments() WebFeatures_Flag {
+	if x != nil && x.Payments != nil {
+		return *x.Payments
 	}
-	return 0
+	return WebFeatures_NOT_STARTED
 }
 
-type StarAction struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Starred *bool `protobuf:"varint,1,opt,name=starred" json:"starred,omitempty"`
+func (x *WebFeatures) GetStickerPackQuery() WebFeatures_Flag {
+	if x != nil && x.StickerPackQuery != nil {
+		return *x.StickerPackQuery
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *StarAction) Reset() {
-	*x = StarAction{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[142]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebFeatures) GetLiveLocationsFinal() WebFeatures_Flag {
+	if x != nil && x.LiveLocationsFinal != nil {
+		return *x.LiveLocationsFinal
 	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *StarAction) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *WebFeatures) GetLabelsEdit() WebFeatures_Flag {
+	if x != nil && x.LabelsEdit != nil {
+		return *x.LabelsEdit
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (*StarAction) ProtoMessage() {}
-
-func (x *StarAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[142]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebFeatures) GetMediaUpload() WebFeatures_Flag {
+	if x != nil && x.MediaUpload != nil {
+		return *x.MediaUpload
 	}
-	return mi.MessageOf(x)
+	return WebFeatures_NOT_STARTED
 }
 
-// Deprecated: Use StarAction.ProtoReflect.Descriptor instead.
-func (*StarAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{142}
+func (x *WebFeatures) GetMediaUploadRichQuickReplies() WebFeatures_Flag {
+	if x != nil && x.MediaUploadRichQuickReplies != nil {
+		return *x.MediaUploadRichQuickReplies
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *StarAction) GetStarred() bool {
-	if x != nil && x.Starred != nil {
-		return *x.Starred
+func (x *WebFeatures) GetVnameV2() WebFeatures_Flag {
+	if x != nil && x.VnameV2 != nil {
+		return *x.VnameV2
 	}
-	return false
+	return WebFeatures_NOT_STARTED
 }
 
-type SecurityNotificationSetting struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ShowNotification *bool `protobuf:"varint,1,opt,name=showNotification" json:"showNotification,omitempty"`
+func (x *WebFeatures) GetVideoPlaybackUrl() WebFeatures_Flag {
+	if x != nil && x.VideoPlaybackUrl != nil {
+		return *x.VideoPlaybackUrl
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SecurityNotificationSetting) Reset() {
-	*x = SecurityNotificationSetting{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[143]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebFeatures) GetStatusRanking() WebFeatures_Flag {
+	if x != nil && x.StatusRanking != nil {
+		return *x.StatusRanking
 	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SecurityNotificationSetting) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *WebFeatures) GetVoipIndividualVideo() WebFeatures_Flag {
+	if x != nil && x.VoipIndividualVideo != nil {
+		return *x.VoipIndividualVideo
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (*SecurityNotificationSetting) ProtoMessage() {}
+func (x *WebFeatures) GetThirdPartyStickers() WebFeatures_Flag {
+	if x != nil && x.ThirdPartyStickers != nil {
+		return *x.ThirdPartyStickers
+	}
+	return WebFeatures_NOT_STARTED
+}
 
-func (x *SecurityNotificationSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[143]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebFeatures) GetFrequentlyForwardedSetting() WebFeatures_Flag {
+	if x != nil && x.FrequentlyForwardedSetting != nil {
+		return *x.FrequentlyForwardedSetting
 	}
-	return mi.MessageOf(x)
+	return WebFeatures_NOT_STARTED
 }
 
-// Deprecated: Use SecurityNotificationSetting.ProtoReflect.Descriptor instead.
-func (*SecurityNotificationSetting) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{143}
+func (x *WebFeatures) GetGroupsV4JoinPermission() WebFeatures_Flag {
+	if x != nil && x.GroupsV4JoinPermission != nil {
+		return *x.GroupsV4JoinPermission
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *SecurityNotificationSetting) GetShowNotification() bool {
-	if x != nil && x.ShowNotification != nil {
-		return *x.ShowNotification
+func (x *WebFeatures) GetRecentStickers() WebFeatures_Flag {
+	if x != nil && x.RecentStickers != nil {
+		return *x.RecentStickers
 	}
-	return false
+	return WebFeatures_NOT_STARTED
 }
 
-type RecentStickerWeightsAction struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
+func (x *WebFeatures) GetCatalog() WebFeatures_Flag {
+	if x != nil && x.Catalog != nil {
+		return *x.Catalog
+	}
+	return WebFeatures_NOT_STARTED
+}
 
-	Weights []*RecentStickerWeight `protobuf:"bytes,1,rep,name=weights" json:"weights,omitempty"`
+func (x *WebFeatures) GetStarredStickers() WebFeatures_Flag {
+	if x != nil && x.StarredStickers != nil {
+		return *x.StarredStickers
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerWeightsAction) Reset() {
-	*x = RecentStickerWeightsAction{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[144]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebFeatures) GetVoipGroupCall() WebFeatures_Flag {
+	if x != nil && x.VoipGroupCall != nil {
+		return *x.VoipGroupCall
 	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerWeightsAction) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *WebFeatures) GetTemplateMessage() WebFeatures_Flag {
+	if x != nil && x.TemplateMessage != nil {
+		return *x.TemplateMessage
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (*RecentStickerWeightsAction) ProtoMessage() {}
+func (x *WebFeatures) GetTemplateMessageInteractivity() WebFeatures_Flag {
+	if x != nil && x.TemplateMessageInteractivity != nil {
+		return *x.TemplateMessageInteractivity
+	}
+	return WebFeatures_NOT_STARTED
+}
 
-func (x *RecentStickerWeightsAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[144]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebFeatures) GetEphemeralMessages() WebFeatures_Flag {
+	if x != nil && x.EphemeralMessages != nil {
+		return *x.EphemeralMessages
 	}
-	return mi.MessageOf(x)
+	return WebFeatures_NOT_STARTED
 }
 
-// Deprecated: Use RecentStickerWeightsAction.ProtoReflect.Descriptor instead.
-func (*RecentStickerWeightsAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{144}
+func (x *WebFeatures) GetE2ENotificationSync() WebFeatures_Flag {
+	if x != nil && x.E2ENotificationSync != nil {
+		return *x.E2ENotificationSync
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerWeightsAction) GetWeights() []*RecentStickerWeight {
-	if x != nil {
-		return x.Weights
+func (x *WebFeatures) GetRecentStickersV2() WebFeatures_Flag {
+	if x != nil && x.RecentStickersV2 != nil {
+		return *x.RecentStickersV2
 	}
-	return nil
+	return WebFeatures_NOT_STARTED
 }
 
-type RecentStickerMetadata struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	DirectPath  *string `protobuf:"bytes,1,opt,name=directPath" json:"directPath,omitempty"`
-	EncFilehash *string `protobuf:"bytes,2,opt,name=encFilehash" json:"encFilehash,omitempty"`
-	MediaKey    *string `protobuf:"bytes,3,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	StanzaId    *string `protobuf:"bytes,4,opt,name=stanzaId" json:"stanzaId,omitempty"`
-	ChatJid     *string `protobuf:"bytes,5,opt,name=chatJid" json:"chatJid,omitempty"`
-	Participant *string `protobuf:"bytes,6,opt,name=participant" json:"participant,omitempty"`
-	IsSentByMe  *bool   `protobuf:"varint,7,opt,name=isSentByMe" json:"isSentByMe,omitempty"`
+func (x *WebFeatures) GetRecentStickersV3() WebFeatures_Flag {
+	if x != nil && x.RecentStickersV3 != nil {
+		return *x.RecentStickersV3
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) Reset() {
-	*x = RecentStickerMetadata{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[145]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *WebFeatures) GetUserNotice() WebFeatures_Flag {
+	if x != nil && x.UserNotice != nil {
+		return *x.UserNotice
 	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *WebFeatures) GetSupport() WebFeatures_Flag {
+	if x != nil && x.Support != nil {
+		return *x.Support
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (*RecentStickerMetadata) ProtoMessage() {}
+func (x *WebFeatures) GetGroupUiiCleanup() WebFeatures_Flag {
+	if x != nil && x.GroupUiiCleanup != nil {
+		return *x.GroupUiiCleanup
+	}
+	return WebFeatures_NOT_STARTED
+}
 
-func (x *RecentStickerMetadata) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[145]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *WebFeatures) GetGroupDogfoodingInternalOnly() WebFeatures_Flag {
+	if x != nil && x.GroupDogfoodingInternalOnly != nil {
+		return *x.GroupDogfoodingInternalOnly
 	}
-	return mi.MessageOf(x)
+	return WebFeatures_NOT_STARTED
 }
 
-// Deprecated: Use RecentStickerMetadata.ProtoReflect.Descriptor instead.
-func (*RecentStickerMetadata) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{145}
+func (x *WebFeatures) GetSettingsSync() WebFeatures_Flag {
+	if x != nil && x.SettingsSync != nil {
+		return *x.SettingsSync
+	}
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
+func (x *WebFeatures) GetArchiveV2() WebFeatures_Flag {
+	if x != nil && x.ArchiveV2 != nil {
+		return *x.ArchiveV2
 	}
-	return ""
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) GetEncFilehash() string {
-	if x != nil && x.EncFilehash != nil {
-		return *x.EncFilehash
+func (x *WebFeatures) GetEphemeralAllowGroupMembers() WebFeatures_Flag {
+	if x != nil && x.EphemeralAllowGroupMembers != nil {
+		return *x.EphemeralAllowGroupMembers
 	}
-	return ""
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) GetMediaKey() string {
-	if x != nil && x.MediaKey != nil {
-		return *x.MediaKey
+func (x *WebFeatures) GetEphemeral24HDuration() WebFeatures_Flag {
+	if x != nil && x.Ephemeral24HDuration != nil {
+		return *x.Ephemeral24HDuration
 	}
-	return ""
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) GetStanzaId() string {
-	if x != nil && x.StanzaId != nil {
-		return *x.StanzaId
+func (x *WebFeatures) GetMdForceUpgrade() WebFeatures_Flag {
+	if x != nil && x.MdForceUpgrade != nil {
+		return *x.MdForceUpgrade
 	}
-	return ""
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) GetChatJid() string {
-	if x != nil && x.ChatJid != nil {
-		return *x.ChatJid
+func (x *WebFeatures) GetDisappearingMode() WebFeatures_Flag {
+	if x != nil && x.DisappearingMode != nil {
+		return *x.DisappearingMode
 	}
-	return ""
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) GetParticipant() string {
-	if x != nil && x.Participant != nil {
-		return *x.Participant
+func (x *WebFeatures) GetExternalMdOptInAvailable() WebFeatures_Flag {
+	if x != nil && x.ExternalMdOptInAvailable != nil {
+		return *x.ExternalMdOptInAvailable
 	}
-	return ""
+	return WebFeatures_NOT_STARTED
 }
 
-func (x *RecentStickerMetadata) GetIsSentByMe() bool {
-	if x != nil && x.IsSentByMe != nil {
-		return *x.IsSentByMe
+func (x *WebFeatures) GetNoDeleteMessageTimeLimit() WebFeatures_Flag {
+	if x != nil && x.NoDeleteMessageTimeLimit != nil {
+		return *x.NoDeleteMessageTimeLimit
 	}
-	return false
+	return WebFeatures_NOT_STARTED
 }
 
-type RecentEmojiWeightsAction struct {
+type UserReceipt struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Weights []*RecentEmojiWeight `protobuf:"bytes,1,rep,name=weights" json:"weights,omitempty"`
+	UserJid            *string  `protobuf:"bytes,1,req,name=userJid" json:"userJid,omitempty"`
+	ReceiptTimestamp   *int64   `protobuf:"varint,2,opt,name=receiptTimestamp" json:"receiptTimestamp,omitempty"`
+	ReadTimestamp      *int64   `protobuf:"varint,3,opt,name=readTimestamp" json:"readTimestamp,omitempty"`
+	PlayedTimestamp    *int64   `protobuf:"varint,4,opt,name=playedTimestamp" json:"playedTimestamp,omitempty"`
+	PendingDeviceJid   []string `protobuf:"bytes,5,rep,name=pendingDeviceJid" json:"pendingDeviceJid,omitempty"`
+	DeliveredDeviceJid []string `protobuf:"bytes,6,rep,name=deliveredDeviceJid" json:"deliveredDeviceJid,omitempty"`
 }
 
-func (x *RecentEmojiWeightsAction) Reset() {
-	*x = RecentEmojiWeightsAction{}
+func (x *UserReceipt) Reset() {
+	*x = UserReceipt{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[146]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -15916,13 +16629,13 @@ func (x *RecentEmojiWeightsAction) Reset() {
 	}
 }
 
-func (x *RecentEmojiWeightsAction) String() string {
+func (x *UserReceipt) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*RecentEmojiWeightsAction) ProtoMessage() {}
+func (*UserReceipt) ProtoMessage() {}
 
-func (x *RecentEmojiWeightsAction) ProtoReflect() protoreflect.Message {
+func (x *UserReceipt) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[146]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -15934,32 +16647,64 @@ func (x *RecentEmojiWeightsAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use RecentEmojiWeightsAction.ProtoReflect.Descriptor instead.
-func (*RecentEmojiWeightsAction) Descriptor() ([]byte, []int) {
+// Deprecated: Use UserReceipt.ProtoReflect.Descriptor instead.
+func (*UserReceipt) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{146}
 }
 
-func (x *RecentEmojiWeightsAction) GetWeights() []*RecentEmojiWeight {
+func (x *UserReceipt) GetUserJid() string {
+	if x != nil && x.UserJid != nil {
+		return *x.UserJid
+	}
+	return ""
+}
+
+func (x *UserReceipt) GetReceiptTimestamp() int64 {
+	if x != nil && x.ReceiptTimestamp != nil {
+		return *x.ReceiptTimestamp
+	}
+	return 0
+}
+
+func (x *UserReceipt) GetReadTimestamp() int64 {
+	if x != nil && x.ReadTimestamp != nil {
+		return *x.ReadTimestamp
+	}
+	return 0
+}
+
+func (x *UserReceipt) GetPlayedTimestamp() int64 {
+	if x != nil && x.PlayedTimestamp != nil {
+		return *x.PlayedTimestamp
+	}
+	return 0
+}
+
+func (x *UserReceipt) GetPendingDeviceJid() []string {
 	if x != nil {
-		return x.Weights
+		return x.PendingDeviceJid
 	}
 	return nil
 }
 
-type QuickReplyAction struct {
+func (x *UserReceipt) GetDeliveredDeviceJid() []string {
+	if x != nil {
+		return x.DeliveredDeviceJid
+	}
+	return nil
+}
+
+type StatusPSA struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Shortcut *string  `protobuf:"bytes,1,opt,name=shortcut" json:"shortcut,omitempty"`
-	Message  *string  `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
-	Keywords []string `protobuf:"bytes,3,rep,name=keywords" json:"keywords,omitempty"`
-	Count    *int32   `protobuf:"varint,4,opt,name=count" json:"count,omitempty"`
-	Deleted  *bool    `protobuf:"varint,5,opt,name=deleted" json:"deleted,omitempty"`
+	CampaignId                  *uint64 `protobuf:"varint,44,req,name=campaignId" json:"campaignId,omitempty"`
+	CampaignExpirationTimestamp *uint64 `protobuf:"varint,45,opt,name=campaignExpirationTimestamp" json:"campaignExpirationTimestamp,omitempty"`
 }
 
-func (x *QuickReplyAction) Reset() {
-	*x = QuickReplyAction{}
+func (x *StatusPSA) Reset() {
+	*x = StatusPSA{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[147]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -15967,13 +16712,13 @@ func (x *QuickReplyAction) Reset() {
 	}
 }
 
-func (x *QuickReplyAction) String() string {
+func (x *StatusPSA) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*QuickReplyAction) ProtoMessage() {}
+func (*StatusPSA) ProtoMessage() {}
 
-func (x *QuickReplyAction) ProtoReflect() protoreflect.Message {
+func (x *StatusPSA) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[147]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -15985,56 +16730,39 @@ func (x *QuickReplyAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use QuickReplyAction.ProtoReflect.Descriptor instead.
-func (*QuickReplyAction) Descriptor() ([]byte, []int) {
+// Deprecated: Use StatusPSA.ProtoReflect.Descriptor instead.
+func (*StatusPSA) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{147}
 }
 
-func (x *QuickReplyAction) GetShortcut() string {
-	if x != nil && x.Shortcut != nil {
-		return *x.Shortcut
-	}
-	return ""
-}
-
-func (x *QuickReplyAction) GetMessage() string {
-	if x != nil && x.Message != nil {
-		return *x.Message
-	}
-	return ""
-}
-
-func (x *QuickReplyAction) GetKeywords() []string {
-	if x != nil {
-		return x.Keywords
-	}
-	return nil
-}
-
-func (x *QuickReplyAction) GetCount() int32 {
-	if x != nil && x.Count != nil {
-		return *x.Count
+func (x *StatusPSA) GetCampaignId() uint64 {
+	if x != nil && x.CampaignId != nil {
+		return *x.CampaignId
 	}
 	return 0
 }
 
-func (x *QuickReplyAction) GetDeleted() bool {
-	if x != nil && x.Deleted != nil {
-		return *x.Deleted
+func (x *StatusPSA) GetCampaignExpirationTimestamp() uint64 {
+	if x != nil && x.CampaignExpirationTimestamp != nil {
+		return *x.CampaignExpirationTimestamp
 	}
-	return false
+	return 0
 }
 
-type PushNameSetting struct {
+type Reaction struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Key               *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+	Text              *string     `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
+	GroupingKey       *string     `protobuf:"bytes,3,opt,name=groupingKey" json:"groupingKey,omitempty"`
+	SenderTimestampMs *int64      `protobuf:"varint,4,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
+	Unread            *bool       `protobuf:"varint,5,opt,name=unread" json:"unread,omitempty"`
 }
 
-func (x *PushNameSetting) Reset() {
-	*x = PushNameSetting{}
+func (x *Reaction) Reset() {
+	*x = Reaction{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[148]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16042,13 +16770,13 @@ func (x *PushNameSetting) Reset() {
 	}
 }
 
-func (x *PushNameSetting) String() string {
+func (x *Reaction) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PushNameSetting) ProtoMessage() {}
+func (*Reaction) ProtoMessage() {}
 
-func (x *PushNameSetting) ProtoReflect() protoreflect.Message {
+func (x *Reaction) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[148]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16060,28 +16788,58 @@ func (x *PushNameSetting) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PushNameSetting.ProtoReflect.Descriptor instead.
-func (*PushNameSetting) Descriptor() ([]byte, []int) {
+// Deprecated: Use Reaction.ProtoReflect.Descriptor instead.
+func (*Reaction) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{148}
 }
 
-func (x *PushNameSetting) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (x *Reaction) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
+	}
+	return nil
+}
+
+func (x *Reaction) GetText() string {
+	if x != nil && x.Text != nil {
+		return *x.Text
+	}
+	return ""
+}
+
+func (x *Reaction) GetGroupingKey() string {
+	if x != nil && x.GroupingKey != nil {
+		return *x.GroupingKey
+	}
+	return ""
+}
+
+func (x *Reaction) GetSenderTimestampMs() int64 {
+	if x != nil && x.SenderTimestampMs != nil {
+		return *x.SenderTimestampMs
+	}
+	return 0
+}
+
+func (x *Reaction) GetUnread() bool {
+	if x != nil && x.Unread != nil {
+		return *x.Unread
 	}
-	return ""
+	return false
 }
 
-type PrimaryFeature struct {
+type PollUpdate struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Flags []string `protobuf:"bytes,1,rep,name=flags" json:"flags,omitempty"`
+	PollUpdateMessageKey *MessageKey      `protobuf:"bytes,1,opt,name=pollUpdateMessageKey" json:"pollUpdateMessageKey,omitempty"`
+	Vote                 *PollVoteMessage `protobuf:"bytes,2,opt,name=vote" json:"vote,omitempty"`
+	SenderTimestampMs    *int64           `protobuf:"varint,3,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
 }
 
-func (x *PrimaryFeature) Reset() {
-	*x = PrimaryFeature{}
+func (x *PollUpdate) Reset() {
+	*x = PollUpdate{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[149]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16089,13 +16847,13 @@ func (x *PrimaryFeature) Reset() {
 	}
 }
 
-func (x *PrimaryFeature) String() string {
+func (x *PollUpdate) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PrimaryFeature) ProtoMessage() {}
+func (*PollUpdate) ProtoMessage() {}
 
-func (x *PrimaryFeature) ProtoReflect() protoreflect.Message {
+func (x *PollUpdate) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[149]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16107,28 +16865,42 @@ func (x *PrimaryFeature) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PrimaryFeature.ProtoReflect.Descriptor instead.
-func (*PrimaryFeature) Descriptor() ([]byte, []int) {
+// Deprecated: Use PollUpdate.ProtoReflect.Descriptor instead.
+func (*PollUpdate) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{149}
 }
 
-func (x *PrimaryFeature) GetFlags() []string {
+func (x *PollUpdate) GetPollUpdateMessageKey() *MessageKey {
 	if x != nil {
-		return x.Flags
+		return x.PollUpdateMessageKey
 	}
 	return nil
 }
 
-type PinAction struct {
+func (x *PollUpdate) GetVote() *PollVoteMessage {
+	if x != nil {
+		return x.Vote
+	}
+	return nil
+}
+
+func (x *PollUpdate) GetSenderTimestampMs() int64 {
+	if x != nil && x.SenderTimestampMs != nil {
+		return *x.SenderTimestampMs
+	}
+	return 0
+}
+
+type PollAdditionalMetadata struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Pinned *bool `protobuf:"varint,1,opt,name=pinned" json:"pinned,omitempty"`
+	PollInvalidated *bool `protobuf:"varint,1,opt,name=pollInvalidated" json:"pollInvalidated,omitempty"`
 }
 
-func (x *PinAction) Reset() {
-	*x = PinAction{}
+func (x *PollAdditionalMetadata) Reset() {
+	*x = PollAdditionalMetadata{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[150]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16136,13 +16908,13 @@ func (x *PinAction) Reset() {
 	}
 }
 
-func (x *PinAction) String() string {
+func (x *PollAdditionalMetadata) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PinAction) ProtoMessage() {}
+func (*PollAdditionalMetadata) ProtoMessage() {}
 
-func (x *PinAction) ProtoReflect() protoreflect.Message {
+func (x *PollAdditionalMetadata) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[150]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16154,29 +16926,30 @@ func (x *PinAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PinAction.ProtoReflect.Descriptor instead.
-func (*PinAction) Descriptor() ([]byte, []int) {
+// Deprecated: Use PollAdditionalMetadata.ProtoReflect.Descriptor instead.
+func (*PollAdditionalMetadata) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{150}
 }
 
-func (x *PinAction) GetPinned() bool {
-	if x != nil && x.Pinned != nil {
-		return *x.Pinned
+func (x *PollAdditionalMetadata) GetPollInvalidated() bool {
+	if x != nil && x.PollInvalidated != nil {
+		return *x.PollInvalidated
 	}
 	return false
 }
 
-type MuteAction struct {
+type PhotoChange struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Muted            *bool  `protobuf:"varint,1,opt,name=muted" json:"muted,omitempty"`
-	MuteEndTimestamp *int64 `protobuf:"varint,2,opt,name=muteEndTimestamp" json:"muteEndTimestamp,omitempty"`
+	OldPhoto   []byte  `protobuf:"bytes,1,opt,name=oldPhoto" json:"oldPhoto,omitempty"`
+	NewPhoto   []byte  `protobuf:"bytes,2,opt,name=newPhoto" json:"newPhoto,omitempty"`
+	NewPhotoId *uint32 `protobuf:"varint,3,opt,name=newPhotoId" json:"newPhotoId,omitempty"`
 }
 
-func (x *MuteAction) Reset() {
-	*x = MuteAction{}
+func (x *PhotoChange) Reset() {
+	*x = PhotoChange{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[151]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16184,13 +16957,13 @@ func (x *MuteAction) Reset() {
 	}
 }
 
-func (x *MuteAction) String() string {
+func (x *PhotoChange) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MuteAction) ProtoMessage() {}
+func (*PhotoChange) ProtoMessage() {}
 
-func (x *MuteAction) ProtoReflect() protoreflect.Message {
+func (x *PhotoChange) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[151]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16202,36 +16975,54 @@ func (x *MuteAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MuteAction.ProtoReflect.Descriptor instead.
-func (*MuteAction) Descriptor() ([]byte, []int) {
+// Deprecated: Use PhotoChange.ProtoReflect.Descriptor instead.
+func (*PhotoChange) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{151}
 }
 
-func (x *MuteAction) GetMuted() bool {
-	if x != nil && x.Muted != nil {
-		return *x.Muted
+func (x *PhotoChange) GetOldPhoto() []byte {
+	if x != nil {
+		return x.OldPhoto
 	}
-	return false
+	return nil
 }
 
-func (x *MuteAction) GetMuteEndTimestamp() int64 {
-	if x != nil && x.MuteEndTimestamp != nil {
-		return *x.MuteEndTimestamp
+func (x *PhotoChange) GetNewPhoto() []byte {
+	if x != nil {
+		return x.NewPhoto
+	}
+	return nil
+}
+
+func (x *PhotoChange) GetNewPhotoId() uint32 {
+	if x != nil && x.NewPhotoId != nil {
+		return *x.NewPhotoId
 	}
 	return 0
 }
 
-type MarkChatAsReadAction struct {
+type PaymentInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Read         *bool                   `protobuf:"varint,1,opt,name=read" json:"read,omitempty"`
-	MessageRange *SyncActionMessageRange `protobuf:"bytes,2,opt,name=messageRange" json:"messageRange,omitempty"`
+	CurrencyDeprecated   *PaymentInfo_Currency  `protobuf:"varint,1,opt,name=currencyDeprecated,enum=proto.PaymentInfo_Currency" json:"currencyDeprecated,omitempty"`
+	Amount1000           *uint64                `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"`
+	ReceiverJid          *string                `protobuf:"bytes,3,opt,name=receiverJid" json:"receiverJid,omitempty"`
+	Status               *PaymentInfo_Status    `protobuf:"varint,4,opt,name=status,enum=proto.PaymentInfo_Status" json:"status,omitempty"`
+	TransactionTimestamp *uint64                `protobuf:"varint,5,opt,name=transactionTimestamp" json:"transactionTimestamp,omitempty"`
+	RequestMessageKey    *MessageKey            `protobuf:"bytes,6,opt,name=requestMessageKey" json:"requestMessageKey,omitempty"`
+	ExpiryTimestamp      *uint64                `protobuf:"varint,7,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"`
+	Futureproofed        *bool                  `protobuf:"varint,8,opt,name=futureproofed" json:"futureproofed,omitempty"`
+	Currency             *string                `protobuf:"bytes,9,opt,name=currency" json:"currency,omitempty"`
+	TxnStatus            *PaymentInfo_TxnStatus `protobuf:"varint,10,opt,name=txnStatus,enum=proto.PaymentInfo_TxnStatus" json:"txnStatus,omitempty"`
+	UseNoviFiatFormat    *bool                  `protobuf:"varint,11,opt,name=useNoviFiatFormat" json:"useNoviFiatFormat,omitempty"`
+	PrimaryAmount        *Money                 `protobuf:"bytes,12,opt,name=primaryAmount" json:"primaryAmount,omitempty"`
+	ExchangeAmount       *Money                 `protobuf:"bytes,13,opt,name=exchangeAmount" json:"exchangeAmount,omitempty"`
 }
 
-func (x *MarkChatAsReadAction) Reset() {
-	*x = MarkChatAsReadAction{}
+func (x *PaymentInfo) Reset() {
+	*x = PaymentInfo{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[152]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16239,13 +17030,13 @@ func (x *MarkChatAsReadAction) Reset() {
 	}
 }
 
-func (x *MarkChatAsReadAction) String() string {
+func (x *PaymentInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MarkChatAsReadAction) ProtoMessage() {}
+func (*PaymentInfo) ProtoMessage() {}
 
-func (x *MarkChatAsReadAction) ProtoReflect() protoreflect.Message {
+func (x *PaymentInfo) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[152]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -16257,168 +17048,130 @@ func (x *MarkChatAsReadAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MarkChatAsReadAction.ProtoReflect.Descriptor instead.
-func (*MarkChatAsReadAction) Descriptor() ([]byte, []int) {
+// Deprecated: Use PaymentInfo.ProtoReflect.Descriptor instead.
+func (*PaymentInfo) Descriptor() ([]byte, []int) {
 	return file_binary_proto_def_proto_rawDescGZIP(), []int{152}
 }
 
-func (x *MarkChatAsReadAction) GetRead() bool {
-	if x != nil && x.Read != nil {
-		return *x.Read
+func (x *PaymentInfo) GetCurrencyDeprecated() PaymentInfo_Currency {
+	if x != nil && x.CurrencyDeprecated != nil {
+		return *x.CurrencyDeprecated
 	}
-	return false
+	return PaymentInfo_UNKNOWN_CURRENCY
 }
 
-func (x *MarkChatAsReadAction) GetMessageRange() *SyncActionMessageRange {
-	if x != nil {
-		return x.MessageRange
+func (x *PaymentInfo) GetAmount1000() uint64 {
+	if x != nil && x.Amount1000 != nil {
+		return *x.Amount1000
 	}
-	return nil
-}
-
-type LocaleSetting struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Locale *string `protobuf:"bytes,1,opt,name=locale" json:"locale,omitempty"`
+	return 0
 }
 
-func (x *LocaleSetting) Reset() {
-	*x = LocaleSetting{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[153]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *PaymentInfo) GetReceiverJid() string {
+	if x != nil && x.ReceiverJid != nil {
+		return *x.ReceiverJid
 	}
+	return ""
 }
 
-func (x *LocaleSetting) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LocaleSetting) ProtoMessage() {}
-
-func (x *LocaleSetting) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[153]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *PaymentInfo) GetStatus() PaymentInfo_Status {
+	if x != nil && x.Status != nil {
+		return *x.Status
 	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use LocaleSetting.ProtoReflect.Descriptor instead.
-func (*LocaleSetting) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{153}
+	return PaymentInfo_UNKNOWN_STATUS
 }
 
-func (x *LocaleSetting) GetLocale() string {
-	if x != nil && x.Locale != nil {
-		return *x.Locale
+func (x *PaymentInfo) GetTransactionTimestamp() uint64 {
+	if x != nil && x.TransactionTimestamp != nil {
+		return *x.TransactionTimestamp
 	}
-	return ""
-}
-
-type LabelEditAction struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name         *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Color        *int32  `protobuf:"varint,2,opt,name=color" json:"color,omitempty"`
-	PredefinedId *int32  `protobuf:"varint,3,opt,name=predefinedId" json:"predefinedId,omitempty"`
-	Deleted      *bool   `protobuf:"varint,4,opt,name=deleted" json:"deleted,omitempty"`
+	return 0
 }
 
-func (x *LabelEditAction) Reset() {
-	*x = LabelEditAction{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[154]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *PaymentInfo) GetRequestMessageKey() *MessageKey {
+	if x != nil {
+		return x.RequestMessageKey
 	}
+	return nil
 }
 
-func (x *LabelEditAction) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*LabelEditAction) ProtoMessage() {}
-
-func (x *LabelEditAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[154]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *PaymentInfo) GetExpiryTimestamp() uint64 {
+	if x != nil && x.ExpiryTimestamp != nil {
+		return *x.ExpiryTimestamp
 	}
-	return mi.MessageOf(x)
+	return 0
 }
 
-// Deprecated: Use LabelEditAction.ProtoReflect.Descriptor instead.
-func (*LabelEditAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{154}
+func (x *PaymentInfo) GetFutureproofed() bool {
+	if x != nil && x.Futureproofed != nil {
+		return *x.Futureproofed
+	}
+	return false
 }
 
-func (x *LabelEditAction) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (x *PaymentInfo) GetCurrency() string {
+	if x != nil && x.Currency != nil {
+		return *x.Currency
 	}
 	return ""
 }
 
-func (x *LabelEditAction) GetColor() int32 {
-	if x != nil && x.Color != nil {
-		return *x.Color
+func (x *PaymentInfo) GetTxnStatus() PaymentInfo_TxnStatus {
+	if x != nil && x.TxnStatus != nil {
+		return *x.TxnStatus
+	}
+	return PaymentInfo_UNKNOWN
+}
+
+func (x *PaymentInfo) GetUseNoviFiatFormat() bool {
+	if x != nil && x.UseNoviFiatFormat != nil {
+		return *x.UseNoviFiatFormat
 	}
-	return 0
+	return false
 }
 
-func (x *LabelEditAction) GetPredefinedId() int32 {
-	if x != nil && x.PredefinedId != nil {
-		return *x.PredefinedId
+func (x *PaymentInfo) GetPrimaryAmount() *Money {
+	if x != nil {
+		return x.PrimaryAmount
 	}
-	return 0
+	return nil
 }
 
-func (x *LabelEditAction) GetDeleted() bool {
-	if x != nil && x.Deleted != nil {
-		return *x.Deleted
+func (x *PaymentInfo) GetExchangeAmount() *Money {
+	if x != nil {
+		return x.ExchangeAmount
 	}
-	return false
+	return nil
 }
 
-type LabelAssociationAction struct {
+type NotificationMessageInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Labeled *bool `protobuf:"varint,1,opt,name=labeled" json:"labeled,omitempty"`
+	Key              *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
+	Message          *Message    `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
+	MessageTimestamp *uint64     `protobuf:"varint,3,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"`
+	Participant      *string     `protobuf:"bytes,4,opt,name=participant" json:"participant,omitempty"`
 }
 
-func (x *LabelAssociationAction) Reset() {
-	*x = LabelAssociationAction{}
+func (x *NotificationMessageInfo) Reset() {
+	*x = NotificationMessageInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[155]
+		mi := &file_binary_proto_def_proto_msgTypes[153]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *LabelAssociationAction) String() string {
+func (x *NotificationMessageInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*LabelAssociationAction) ProtoMessage() {}
+func (*NotificationMessageInfo) ProtoMessage() {}
 
-func (x *LabelAssociationAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[155]
+func (x *NotificationMessageInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[153]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16429,97 +17182,64 @@ func (x *LabelAssociationAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use LabelAssociationAction.ProtoReflect.Descriptor instead.
-func (*LabelAssociationAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{155}
+// Deprecated: Use NotificationMessageInfo.ProtoReflect.Descriptor instead.
+func (*NotificationMessageInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{153}
 }
 
-func (x *LabelAssociationAction) GetLabeled() bool {
-	if x != nil && x.Labeled != nil {
-		return *x.Labeled
+func (x *NotificationMessageInfo) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
 	}
-	return false
-}
-
-type KeyExpiration struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ExpiredKeyEpoch *int32 `protobuf:"varint,1,opt,name=expiredKeyEpoch" json:"expiredKeyEpoch,omitempty"`
+	return nil
 }
 
-func (x *KeyExpiration) Reset() {
-	*x = KeyExpiration{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[156]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *NotificationMessageInfo) GetMessage() *Message {
+	if x != nil {
+		return x.Message
 	}
+	return nil
 }
 
-func (x *KeyExpiration) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KeyExpiration) ProtoMessage() {}
-
-func (x *KeyExpiration) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[156]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *NotificationMessageInfo) GetMessageTimestamp() uint64 {
+	if x != nil && x.MessageTimestamp != nil {
+		return *x.MessageTimestamp
 	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use KeyExpiration.ProtoReflect.Descriptor instead.
-func (*KeyExpiration) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{156}
+	return 0
 }
 
-func (x *KeyExpiration) GetExpiredKeyEpoch() int32 {
-	if x != nil && x.ExpiredKeyEpoch != nil {
-		return *x.ExpiredKeyEpoch
+func (x *NotificationMessageInfo) GetParticipant() string {
+	if x != nil && x.Participant != nil {
+		return *x.Participant
 	}
-	return 0
+	return ""
 }
 
-type FavoriteStickerAction struct {
+type MediaData struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DirectPath             *string `protobuf:"bytes,1,opt,name=directPath" json:"directPath,omitempty"`
-	LastUploadTimestamp    *string `protobuf:"bytes,2,opt,name=lastUploadTimestamp" json:"lastUploadTimestamp,omitempty"`
-	Handle                 *string `protobuf:"bytes,3,opt,name=handle" json:"handle,omitempty"`
-	EncFilehash            *string `protobuf:"bytes,4,opt,name=encFilehash" json:"encFilehash,omitempty"`
-	StickerHashWithoutMeta *string `protobuf:"bytes,5,opt,name=stickerHashWithoutMeta" json:"stickerHashWithoutMeta,omitempty"`
-	MediaKey               *string `protobuf:"bytes,6,opt,name=mediaKey" json:"mediaKey,omitempty"`
-	MediaKeyTimestamp      *int64  `protobuf:"varint,7,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
-	IsFavorite             *bool   `protobuf:"varint,8,opt,name=isFavorite" json:"isFavorite,omitempty"`
+	LocalPath *string `protobuf:"bytes,1,opt,name=localPath" json:"localPath,omitempty"`
 }
 
-func (x *FavoriteStickerAction) Reset() {
-	*x = FavoriteStickerAction{}
+func (x *MediaData) Reset() {
+	*x = MediaData{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[157]
+		mi := &file_binary_proto_def_proto_msgTypes[154]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *FavoriteStickerAction) String() string {
+func (x *MediaData) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*FavoriteStickerAction) ProtoMessage() {}
+func (*MediaData) ProtoMessage() {}
 
-func (x *FavoriteStickerAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[157]
+func (x *MediaData) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[154]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16530,93 +17250,46 @@ func (x *FavoriteStickerAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use FavoriteStickerAction.ProtoReflect.Descriptor instead.
-func (*FavoriteStickerAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{157}
-}
-
-func (x *FavoriteStickerAction) GetDirectPath() string {
-	if x != nil && x.DirectPath != nil {
-		return *x.DirectPath
-	}
-	return ""
-}
-
-func (x *FavoriteStickerAction) GetLastUploadTimestamp() string {
-	if x != nil && x.LastUploadTimestamp != nil {
-		return *x.LastUploadTimestamp
-	}
-	return ""
-}
-
-func (x *FavoriteStickerAction) GetHandle() string {
-	if x != nil && x.Handle != nil {
-		return *x.Handle
-	}
-	return ""
-}
-
-func (x *FavoriteStickerAction) GetEncFilehash() string {
-	if x != nil && x.EncFilehash != nil {
-		return *x.EncFilehash
-	}
-	return ""
-}
-
-func (x *FavoriteStickerAction) GetStickerHashWithoutMeta() string {
-	if x != nil && x.StickerHashWithoutMeta != nil {
-		return *x.StickerHashWithoutMeta
-	}
-	return ""
+// Deprecated: Use MediaData.ProtoReflect.Descriptor instead.
+func (*MediaData) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{154}
 }
 
-func (x *FavoriteStickerAction) GetMediaKey() string {
-	if x != nil && x.MediaKey != nil {
-		return *x.MediaKey
+func (x *MediaData) GetLocalPath() string {
+	if x != nil && x.LocalPath != nil {
+		return *x.LocalPath
 	}
 	return ""
 }
 
-func (x *FavoriteStickerAction) GetMediaKeyTimestamp() int64 {
-	if x != nil && x.MediaKeyTimestamp != nil {
-		return *x.MediaKeyTimestamp
-	}
-	return 0
-}
-
-func (x *FavoriteStickerAction) GetIsFavorite() bool {
-	if x != nil && x.IsFavorite != nil {
-		return *x.IsFavorite
-	}
-	return false
-}
-
-type DeleteMessageForMeAction struct {
+type KeepInChat struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DeleteMedia      *bool  `protobuf:"varint,1,opt,name=deleteMedia" json:"deleteMedia,omitempty"`
-	MessageTimestamp *int64 `protobuf:"varint,2,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"`
+	KeepType        *KeepType   `protobuf:"varint,1,opt,name=keepType,enum=proto.KeepType" json:"keepType,omitempty"`
+	ServerTimestamp *int64      `protobuf:"varint,2,opt,name=serverTimestamp" json:"serverTimestamp,omitempty"`
+	Key             *MessageKey `protobuf:"bytes,3,opt,name=key" json:"key,omitempty"`
+	DeviceJid       *string     `protobuf:"bytes,4,opt,name=deviceJid" json:"deviceJid,omitempty"`
 }
 
-func (x *DeleteMessageForMeAction) Reset() {
-	*x = DeleteMessageForMeAction{}
+func (x *KeepInChat) Reset() {
+	*x = KeepInChat{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[158]
+		mi := &file_binary_proto_def_proto_msgTypes[155]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *DeleteMessageForMeAction) String() string {
+func (x *KeepInChat) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DeleteMessageForMeAction) ProtoMessage() {}
+func (*KeepInChat) ProtoMessage() {}
 
-func (x *DeleteMessageForMeAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[158]
+func (x *KeepInChat) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[155]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16627,50 +17300,65 @@ func (x *DeleteMessageForMeAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DeleteMessageForMeAction.ProtoReflect.Descriptor instead.
-func (*DeleteMessageForMeAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{158}
+// Deprecated: Use KeepInChat.ProtoReflect.Descriptor instead.
+func (*KeepInChat) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{155}
 }
 
-func (x *DeleteMessageForMeAction) GetDeleteMedia() bool {
-	if x != nil && x.DeleteMedia != nil {
-		return *x.DeleteMedia
+func (x *KeepInChat) GetKeepType() KeepType {
+	if x != nil && x.KeepType != nil {
+		return *x.KeepType
 	}
-	return false
+	return KeepType_UNKNOWN
 }
 
-func (x *DeleteMessageForMeAction) GetMessageTimestamp() int64 {
-	if x != nil && x.MessageTimestamp != nil {
-		return *x.MessageTimestamp
+func (x *KeepInChat) GetServerTimestamp() int64 {
+	if x != nil && x.ServerTimestamp != nil {
+		return *x.ServerTimestamp
 	}
 	return 0
 }
 
-type DeleteChatAction struct {
+func (x *KeepInChat) GetKey() *MessageKey {
+	if x != nil {
+		return x.Key
+	}
+	return nil
+}
+
+func (x *KeepInChat) GetDeviceJid() string {
+	if x != nil && x.DeviceJid != nil {
+		return *x.DeviceJid
+	}
+	return ""
+}
+
+type NoiseCertificate struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	MessageRange *SyncActionMessageRange `protobuf:"bytes,1,opt,name=messageRange" json:"messageRange,omitempty"`
+	Details   []byte `protobuf:"bytes,1,opt,name=details" json:"details,omitempty"`
+	Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
 }
 
-func (x *DeleteChatAction) Reset() {
-	*x = DeleteChatAction{}
+func (x *NoiseCertificate) Reset() {
+	*x = NoiseCertificate{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[159]
+		mi := &file_binary_proto_def_proto_msgTypes[156]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *DeleteChatAction) String() string {
+func (x *NoiseCertificate) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DeleteChatAction) ProtoMessage() {}
+func (*NoiseCertificate) ProtoMessage() {}
 
-func (x *DeleteChatAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[159]
+func (x *NoiseCertificate) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[156]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16681,44 +17369,51 @@ func (x *DeleteChatAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DeleteChatAction.ProtoReflect.Descriptor instead.
-func (*DeleteChatAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{159}
+// Deprecated: Use NoiseCertificate.ProtoReflect.Descriptor instead.
+func (*NoiseCertificate) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{156}
 }
 
-func (x *DeleteChatAction) GetMessageRange() *SyncActionMessageRange {
+func (x *NoiseCertificate) GetDetails() []byte {
 	if x != nil {
-		return x.MessageRange
+		return x.Details
 	}
 	return nil
 }
 
-type ContactAction struct {
+func (x *NoiseCertificate) GetSignature() []byte {
+	if x != nil {
+		return x.Signature
+	}
+	return nil
+}
+
+type CertChain struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	FullName  *string `protobuf:"bytes,1,opt,name=fullName" json:"fullName,omitempty"`
-	FirstName *string `protobuf:"bytes,2,opt,name=firstName" json:"firstName,omitempty"`
+	Leaf         *CertChain_NoiseCertificate `protobuf:"bytes,1,opt,name=leaf" json:"leaf,omitempty"`
+	Intermediate *CertChain_NoiseCertificate `protobuf:"bytes,2,opt,name=intermediate" json:"intermediate,omitempty"`
 }
 
-func (x *ContactAction) Reset() {
-	*x = ContactAction{}
+func (x *CertChain) Reset() {
+	*x = CertChain{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[160]
+		mi := &file_binary_proto_def_proto_msgTypes[157]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ContactAction) String() string {
+func (x *CertChain) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ContactAction) ProtoMessage() {}
+func (*CertChain) ProtoMessage() {}
 
-func (x *ContactAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[160]
+func (x *CertChain) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[157]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16729,50 +17424,54 @@ func (x *ContactAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ContactAction.ProtoReflect.Descriptor instead.
-func (*ContactAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{160}
+// Deprecated: Use CertChain.ProtoReflect.Descriptor instead.
+func (*CertChain) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{157}
 }
 
-func (x *ContactAction) GetFullName() string {
-	if x != nil && x.FullName != nil {
-		return *x.FullName
+func (x *CertChain) GetLeaf() *CertChain_NoiseCertificate {
+	if x != nil {
+		return x.Leaf
 	}
-	return ""
+	return nil
 }
 
-func (x *ContactAction) GetFirstName() string {
-	if x != nil && x.FirstName != nil {
-		return *x.FirstName
+func (x *CertChain) GetIntermediate() *CertChain_NoiseCertificate {
+	if x != nil {
+		return x.Intermediate
 	}
-	return ""
+	return nil
 }
 
-type ClearChatAction struct {
+type DeviceProps_AppVersion struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	MessageRange *SyncActionMessageRange `protobuf:"bytes,1,opt,name=messageRange" json:"messageRange,omitempty"`
+	Primary    *uint32 `protobuf:"varint,1,opt,name=primary" json:"primary,omitempty"`
+	Secondary  *uint32 `protobuf:"varint,2,opt,name=secondary" json:"secondary,omitempty"`
+	Tertiary   *uint32 `protobuf:"varint,3,opt,name=tertiary" json:"tertiary,omitempty"`
+	Quaternary *uint32 `protobuf:"varint,4,opt,name=quaternary" json:"quaternary,omitempty"`
+	Quinary    *uint32 `protobuf:"varint,5,opt,name=quinary" json:"quinary,omitempty"`
 }
 
-func (x *ClearChatAction) Reset() {
-	*x = ClearChatAction{}
+func (x *DeviceProps_AppVersion) Reset() {
+	*x = DeviceProps_AppVersion{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[161]
+		mi := &file_binary_proto_def_proto_msgTypes[158]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ClearChatAction) String() string {
+func (x *DeviceProps_AppVersion) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ClearChatAction) ProtoMessage() {}
+func (*DeviceProps_AppVersion) ProtoMessage() {}
 
-func (x *ClearChatAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[161]
+func (x *DeviceProps_AppVersion) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[158]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16783,44 +17482,71 @@ func (x *ClearChatAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ClearChatAction.ProtoReflect.Descriptor instead.
-func (*ClearChatAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{161}
+// Deprecated: Use DeviceProps_AppVersion.ProtoReflect.Descriptor instead.
+func (*DeviceProps_AppVersion) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{5, 0}
 }
 
-func (x *ClearChatAction) GetMessageRange() *SyncActionMessageRange {
-	if x != nil {
-		return x.MessageRange
+func (x *DeviceProps_AppVersion) GetPrimary() uint32 {
+	if x != nil && x.Primary != nil {
+		return *x.Primary
 	}
-	return nil
+	return 0
 }
 
-type ArchiveChatAction struct {
+func (x *DeviceProps_AppVersion) GetSecondary() uint32 {
+	if x != nil && x.Secondary != nil {
+		return *x.Secondary
+	}
+	return 0
+}
+
+func (x *DeviceProps_AppVersion) GetTertiary() uint32 {
+	if x != nil && x.Tertiary != nil {
+		return *x.Tertiary
+	}
+	return 0
+}
+
+func (x *DeviceProps_AppVersion) GetQuaternary() uint32 {
+	if x != nil && x.Quaternary != nil {
+		return *x.Quaternary
+	}
+	return 0
+}
+
+func (x *DeviceProps_AppVersion) GetQuinary() uint32 {
+	if x != nil && x.Quinary != nil {
+		return *x.Quinary
+	}
+	return 0
+}
+
+type PollCreationMessage_Option struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Archived     *bool                   `protobuf:"varint,1,opt,name=archived" json:"archived,omitempty"`
-	MessageRange *SyncActionMessageRange `protobuf:"bytes,2,opt,name=messageRange" json:"messageRange,omitempty"`
+	OptionName *string `protobuf:"bytes,1,opt,name=optionName" json:"optionName,omitempty"`
 }
 
-func (x *ArchiveChatAction) Reset() {
-	*x = ArchiveChatAction{}
+func (x *PollCreationMessage_Option) Reset() {
+	*x = PollCreationMessage_Option{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[162]
+		mi := &file_binary_proto_def_proto_msgTypes[159]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ArchiveChatAction) String() string {
+func (x *PollCreationMessage_Option) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ArchiveChatAction) ProtoMessage() {}
+func (*PollCreationMessage_Option) ProtoMessage() {}
 
-func (x *ArchiveChatAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[162]
+func (x *PollCreationMessage_Option) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[159]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16831,50 +17557,43 @@ func (x *ArchiveChatAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ArchiveChatAction.ProtoReflect.Descriptor instead.
-func (*ArchiveChatAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{162}
-}
-
-func (x *ArchiveChatAction) GetArchived() bool {
-	if x != nil && x.Archived != nil {
-		return *x.Archived
-	}
-	return false
+// Deprecated: Use PollCreationMessage_Option.ProtoReflect.Descriptor instead.
+func (*PollCreationMessage_Option) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{10, 0}
 }
 
-func (x *ArchiveChatAction) GetMessageRange() *SyncActionMessageRange {
-	if x != nil {
-		return x.MessageRange
+func (x *PollCreationMessage_Option) GetOptionName() string {
+	if x != nil && x.OptionName != nil {
+		return *x.OptionName
 	}
-	return nil
+	return ""
 }
 
-type AndroidUnsupportedActions struct {
+type ListResponseMessage_SingleSelectReply struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Allowed *bool `protobuf:"varint,1,opt,name=allowed" json:"allowed,omitempty"`
+	SelectedRowId *string `protobuf:"bytes,1,opt,name=selectedRowId" json:"selectedRowId,omitempty"`
 }
 
-func (x *AndroidUnsupportedActions) Reset() {
-	*x = AndroidUnsupportedActions{}
+func (x *ListResponseMessage_SingleSelectReply) Reset() {
+	*x = ListResponseMessage_SingleSelectReply{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[163]
+		mi := &file_binary_proto_def_proto_msgTypes[160]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *AndroidUnsupportedActions) String() string {
+func (x *ListResponseMessage_SingleSelectReply) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AndroidUnsupportedActions) ProtoMessage() {}
+func (*ListResponseMessage_SingleSelectReply) ProtoMessage() {}
 
-func (x *AndroidUnsupportedActions) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[163]
+func (x *ListResponseMessage_SingleSelectReply) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[160]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16885,45 +17604,44 @@ func (x *AndroidUnsupportedActions) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AndroidUnsupportedActions.ProtoReflect.Descriptor instead.
-func (*AndroidUnsupportedActions) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{163}
+// Deprecated: Use ListResponseMessage_SingleSelectReply.ProtoReflect.Descriptor instead.
+func (*ListResponseMessage_SingleSelectReply) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{15, 0}
 }
 
-func (x *AndroidUnsupportedActions) GetAllowed() bool {
-	if x != nil && x.Allowed != nil {
-		return *x.Allowed
+func (x *ListResponseMessage_SingleSelectReply) GetSelectedRowId() string {
+	if x != nil && x.SelectedRowId != nil {
+		return *x.SelectedRowId
 	}
-	return false
+	return ""
 }
 
-type AgentAction struct {
+type ListMessage_Section struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Name      *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	DeviceID  *int32  `protobuf:"varint,2,opt,name=deviceID" json:"deviceID,omitempty"`
-	IsDeleted *bool   `protobuf:"varint,3,opt,name=isDeleted" json:"isDeleted,omitempty"`
+	Title *string            `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
+	Rows  []*ListMessage_Row `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"`
 }
 
-func (x *AgentAction) Reset() {
-	*x = AgentAction{}
+func (x *ListMessage_Section) Reset() {
+	*x = ListMessage_Section{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[164]
+		mi := &file_binary_proto_def_proto_msgTypes[161]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *AgentAction) String() string {
+func (x *ListMessage_Section) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*AgentAction) ProtoMessage() {}
+func (*ListMessage_Section) ProtoMessage() {}
 
-func (x *AgentAction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[164]
+func (x *ListMessage_Section) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[161]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16934,60 +17652,52 @@ func (x *AgentAction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use AgentAction.ProtoReflect.Descriptor instead.
-func (*AgentAction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{164}
+// Deprecated: Use ListMessage_Section.ProtoReflect.Descriptor instead.
+func (*ListMessage_Section) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 0}
 }
 
-func (x *AgentAction) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
+func (x *ListMessage_Section) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
 	return ""
 }
 
-func (x *AgentAction) GetDeviceID() int32 {
-	if x != nil && x.DeviceID != nil {
-		return *x.DeviceID
-	}
-	return 0
-}
-
-func (x *AgentAction) GetIsDeleted() bool {
-	if x != nil && x.IsDeleted != nil {
-		return *x.IsDeleted
+func (x *ListMessage_Section) GetRows() []*ListMessage_Row {
+	if x != nil {
+		return x.Rows
 	}
-	return false
+	return nil
 }
 
-type SyncActionData struct {
+type ListMessage_Row struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Index   []byte           `protobuf:"bytes,1,opt,name=index" json:"index,omitempty"`
-	Value   *SyncActionValue `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
-	Padding []byte           `protobuf:"bytes,3,opt,name=padding" json:"padding,omitempty"`
-	Version *int32           `protobuf:"varint,4,opt,name=version" json:"version,omitempty"`
+	Title       *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
+	Description *string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+	RowId       *string `protobuf:"bytes,3,opt,name=rowId" json:"rowId,omitempty"`
 }
 
-func (x *SyncActionData) Reset() {
-	*x = SyncActionData{}
+func (x *ListMessage_Row) Reset() {
+	*x = ListMessage_Row{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[165]
+		mi := &file_binary_proto_def_proto_msgTypes[162]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *SyncActionData) String() string {
+func (x *ListMessage_Row) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*SyncActionData) ProtoMessage() {}
+func (*ListMessage_Row) ProtoMessage() {}
 
-func (x *SyncActionData) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[165]
+func (x *ListMessage_Row) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[162]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -16998,65 +17708,57 @@ func (x *SyncActionData) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use SyncActionData.ProtoReflect.Descriptor instead.
-func (*SyncActionData) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{165}
-}
-
-func (x *SyncActionData) GetIndex() []byte {
-	if x != nil {
-		return x.Index
-	}
-	return nil
+// Deprecated: Use ListMessage_Row.ProtoReflect.Descriptor instead.
+func (*ListMessage_Row) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 1}
 }
 
-func (x *SyncActionData) GetValue() *SyncActionValue {
-	if x != nil {
-		return x.Value
+func (x *ListMessage_Row) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
-	return nil
+	return ""
 }
 
-func (x *SyncActionData) GetPadding() []byte {
-	if x != nil {
-		return x.Padding
+func (x *ListMessage_Row) GetDescription() string {
+	if x != nil && x.Description != nil {
+		return *x.Description
 	}
-	return nil
+	return ""
 }
 
-func (x *SyncActionData) GetVersion() int32 {
-	if x != nil && x.Version != nil {
-		return *x.Version
+func (x *ListMessage_Row) GetRowId() string {
+	if x != nil && x.RowId != nil {
+		return *x.RowId
 	}
-	return 0
+	return ""
 }
 
-type RecentStickerWeight struct {
+type ListMessage_Product struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Filehash *string  `protobuf:"bytes,1,opt,name=filehash" json:"filehash,omitempty"`
-	Weight   *float32 `protobuf:"fixed32,2,opt,name=weight" json:"weight,omitempty"`
+	ProductId *string `protobuf:"bytes,1,opt,name=productId" json:"productId,omitempty"`
 }
 
-func (x *RecentStickerWeight) Reset() {
-	*x = RecentStickerWeight{}
+func (x *ListMessage_Product) Reset() {
+	*x = ListMessage_Product{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[166]
+		mi := &file_binary_proto_def_proto_msgTypes[163]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *RecentStickerWeight) String() string {
+func (x *ListMessage_Product) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*RecentStickerWeight) ProtoMessage() {}
+func (*ListMessage_Product) ProtoMessage() {}
 
-func (x *RecentStickerWeight) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[166]
+func (x *ListMessage_Product) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[163]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17067,51 +17769,44 @@ func (x *RecentStickerWeight) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use RecentStickerWeight.ProtoReflect.Descriptor instead.
-func (*RecentStickerWeight) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{166}
+// Deprecated: Use ListMessage_Product.ProtoReflect.Descriptor instead.
+func (*ListMessage_Product) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 2}
 }
 
-func (x *RecentStickerWeight) GetFilehash() string {
-	if x != nil && x.Filehash != nil {
-		return *x.Filehash
+func (x *ListMessage_Product) GetProductId() string {
+	if x != nil && x.ProductId != nil {
+		return *x.ProductId
 	}
 	return ""
 }
 
-func (x *RecentStickerWeight) GetWeight() float32 {
-	if x != nil && x.Weight != nil {
-		return *x.Weight
-	}
-	return 0
-}
-
-type RecentEmojiWeight struct {
+type ListMessage_ProductSection struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Emoji  *string  `protobuf:"bytes,1,opt,name=emoji" json:"emoji,omitempty"`
-	Weight *float32 `protobuf:"fixed32,2,opt,name=weight" json:"weight,omitempty"`
+	Title    *string                `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
+	Products []*ListMessage_Product `protobuf:"bytes,2,rep,name=products" json:"products,omitempty"`
 }
 
-func (x *RecentEmojiWeight) Reset() {
-	*x = RecentEmojiWeight{}
+func (x *ListMessage_ProductSection) Reset() {
+	*x = ListMessage_ProductSection{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[167]
+		mi := &file_binary_proto_def_proto_msgTypes[164]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *RecentEmojiWeight) String() string {
+func (x *ListMessage_ProductSection) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*RecentEmojiWeight) ProtoMessage() {}
+func (*ListMessage_ProductSection) ProtoMessage() {}
 
-func (x *RecentEmojiWeight) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[167]
+func (x *ListMessage_ProductSection) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[164]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17122,52 +17817,52 @@ func (x *RecentEmojiWeight) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use RecentEmojiWeight.ProtoReflect.Descriptor instead.
-func (*RecentEmojiWeight) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{167}
+// Deprecated: Use ListMessage_ProductSection.ProtoReflect.Descriptor instead.
+func (*ListMessage_ProductSection) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 3}
 }
 
-func (x *RecentEmojiWeight) GetEmoji() string {
-	if x != nil && x.Emoji != nil {
-		return *x.Emoji
+func (x *ListMessage_ProductSection) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
 	return ""
 }
 
-func (x *RecentEmojiWeight) GetWeight() float32 {
-	if x != nil && x.Weight != nil {
-		return *x.Weight
+func (x *ListMessage_ProductSection) GetProducts() []*ListMessage_Product {
+	if x != nil {
+		return x.Products
 	}
-	return 0
+	return nil
 }
 
-type VerifiedNameCertificate struct {
+type ListMessage_ProductListInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
-
-	Details         []byte `protobuf:"bytes,1,opt,name=details" json:"details,omitempty"`
-	Signature       []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
-	ServerSignature []byte `protobuf:"bytes,3,opt,name=serverSignature" json:"serverSignature,omitempty"`
+
+	ProductSections  []*ListMessage_ProductSection       `protobuf:"bytes,1,rep,name=productSections" json:"productSections,omitempty"`
+	HeaderImage      *ListMessage_ProductListHeaderImage `protobuf:"bytes,2,opt,name=headerImage" json:"headerImage,omitempty"`
+	BusinessOwnerJid *string                             `protobuf:"bytes,3,opt,name=businessOwnerJid" json:"businessOwnerJid,omitempty"`
 }
 
-func (x *VerifiedNameCertificate) Reset() {
-	*x = VerifiedNameCertificate{}
+func (x *ListMessage_ProductListInfo) Reset() {
+	*x = ListMessage_ProductListInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[168]
+		mi := &file_binary_proto_def_proto_msgTypes[165]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *VerifiedNameCertificate) String() string {
+func (x *ListMessage_ProductListInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*VerifiedNameCertificate) ProtoMessage() {}
+func (*ListMessage_ProductListInfo) ProtoMessage() {}
 
-func (x *VerifiedNameCertificate) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[168]
+func (x *ListMessage_ProductListInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[165]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17178,62 +17873,58 @@ func (x *VerifiedNameCertificate) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use VerifiedNameCertificate.ProtoReflect.Descriptor instead.
-func (*VerifiedNameCertificate) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{168}
+// Deprecated: Use ListMessage_ProductListInfo.ProtoReflect.Descriptor instead.
+func (*ListMessage_ProductListInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 4}
 }
 
-func (x *VerifiedNameCertificate) GetDetails() []byte {
+func (x *ListMessage_ProductListInfo) GetProductSections() []*ListMessage_ProductSection {
 	if x != nil {
-		return x.Details
+		return x.ProductSections
 	}
 	return nil
 }
 
-func (x *VerifiedNameCertificate) GetSignature() []byte {
+func (x *ListMessage_ProductListInfo) GetHeaderImage() *ListMessage_ProductListHeaderImage {
 	if x != nil {
-		return x.Signature
+		return x.HeaderImage
 	}
 	return nil
 }
 
-func (x *VerifiedNameCertificate) GetServerSignature() []byte {
-	if x != nil {
-		return x.ServerSignature
+func (x *ListMessage_ProductListInfo) GetBusinessOwnerJid() string {
+	if x != nil && x.BusinessOwnerJid != nil {
+		return *x.BusinessOwnerJid
 	}
-	return nil
+	return ""
 }
 
-// Renamed from VerifiedNameCertificate$Details
-type VerifiedNameDetails struct {
+type ListMessage_ProductListHeaderImage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Serial         *uint64          `protobuf:"varint,1,opt,name=serial" json:"serial,omitempty"`
-	Issuer         *string          `protobuf:"bytes,2,opt,name=issuer" json:"issuer,omitempty"`
-	VerifiedName   *string          `protobuf:"bytes,4,opt,name=verifiedName" json:"verifiedName,omitempty"`
-	LocalizedNames []*LocalizedName `protobuf:"bytes,8,rep,name=localizedNames" json:"localizedNames,omitempty"`
-	IssueTime      *uint64          `protobuf:"varint,10,opt,name=issueTime" json:"issueTime,omitempty"`
+	ProductId     *string `protobuf:"bytes,1,opt,name=productId" json:"productId,omitempty"`
+	JpegThumbnail []byte  `protobuf:"bytes,2,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
 }
 
-func (x *VerifiedNameDetails) Reset() {
-	*x = VerifiedNameDetails{}
+func (x *ListMessage_ProductListHeaderImage) Reset() {
+	*x = ListMessage_ProductListHeaderImage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[169]
+		mi := &file_binary_proto_def_proto_msgTypes[166]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *VerifiedNameDetails) String() string {
+func (x *ListMessage_ProductListHeaderImage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*VerifiedNameDetails) ProtoMessage() {}
+func (*ListMessage_ProductListHeaderImage) ProtoMessage() {}
 
-func (x *VerifiedNameDetails) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[169]
+func (x *ListMessage_ProductListHeaderImage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[166]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17244,73 +17935,52 @@ func (x *VerifiedNameDetails) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use VerifiedNameDetails.ProtoReflect.Descriptor instead.
-func (*VerifiedNameDetails) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{169}
-}
-
-func (x *VerifiedNameDetails) GetSerial() uint64 {
-	if x != nil && x.Serial != nil {
-		return *x.Serial
-	}
-	return 0
-}
-
-func (x *VerifiedNameDetails) GetIssuer() string {
-	if x != nil && x.Issuer != nil {
-		return *x.Issuer
-	}
-	return ""
+// Deprecated: Use ListMessage_ProductListHeaderImage.ProtoReflect.Descriptor instead.
+func (*ListMessage_ProductListHeaderImage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{16, 5}
 }
 
-func (x *VerifiedNameDetails) GetVerifiedName() string {
-	if x != nil && x.VerifiedName != nil {
-		return *x.VerifiedName
+func (x *ListMessage_ProductListHeaderImage) GetProductId() string {
+	if x != nil && x.ProductId != nil {
+		return *x.ProductId
 	}
 	return ""
 }
 
-func (x *VerifiedNameDetails) GetLocalizedNames() []*LocalizedName {
+func (x *ListMessage_ProductListHeaderImage) GetJpegThumbnail() []byte {
 	if x != nil {
-		return x.LocalizedNames
+		return x.JpegThumbnail
 	}
 	return nil
 }
 
-func (x *VerifiedNameDetails) GetIssueTime() uint64 {
-	if x != nil && x.IssueTime != nil {
-		return *x.IssueTime
-	}
-	return 0
-}
-
-type LocalizedName struct {
+type InteractiveResponseMessage_NativeFlowResponseMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Lg           *string `protobuf:"bytes,1,opt,name=lg" json:"lg,omitempty"`
-	Lc           *string `protobuf:"bytes,2,opt,name=lc" json:"lc,omitempty"`
-	VerifiedName *string `protobuf:"bytes,3,opt,name=verifiedName" json:"verifiedName,omitempty"`
+	Name       *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	ParamsJson *string `protobuf:"bytes,2,opt,name=paramsJson" json:"paramsJson,omitempty"`
+	Version    *int32  `protobuf:"varint,3,opt,name=version" json:"version,omitempty"`
 }
 
-func (x *LocalizedName) Reset() {
-	*x = LocalizedName{}
+func (x *InteractiveResponseMessage_NativeFlowResponseMessage) Reset() {
+	*x = InteractiveResponseMessage_NativeFlowResponseMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[170]
+		mi := &file_binary_proto_def_proto_msgTypes[167]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *LocalizedName) String() string {
+func (x *InteractiveResponseMessage_NativeFlowResponseMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*LocalizedName) ProtoMessage() {}
+func (*InteractiveResponseMessage_NativeFlowResponseMessage) ProtoMessage() {}
 
-func (x *LocalizedName) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[170]
+func (x *InteractiveResponseMessage_NativeFlowResponseMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[167]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17321,64 +17991,57 @@ func (x *LocalizedName) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use LocalizedName.ProtoReflect.Descriptor instead.
-func (*LocalizedName) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{170}
+// Deprecated: Use InteractiveResponseMessage_NativeFlowResponseMessage.ProtoReflect.Descriptor instead.
+func (*InteractiveResponseMessage_NativeFlowResponseMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{19, 0}
 }
 
-func (x *LocalizedName) GetLg() string {
-	if x != nil && x.Lg != nil {
-		return *x.Lg
+func (x *InteractiveResponseMessage_NativeFlowResponseMessage) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
 	return ""
 }
 
-func (x *LocalizedName) GetLc() string {
-	if x != nil && x.Lc != nil {
-		return *x.Lc
+func (x *InteractiveResponseMessage_NativeFlowResponseMessage) GetParamsJson() string {
+	if x != nil && x.ParamsJson != nil {
+		return *x.ParamsJson
 	}
 	return ""
 }
 
-func (x *LocalizedName) GetVerifiedName() string {
-	if x != nil && x.VerifiedName != nil {
-		return *x.VerifiedName
+func (x *InteractiveResponseMessage_NativeFlowResponseMessage) GetVersion() int32 {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
-	return ""
+	return 0
 }
 
-type BizIdentityInfo struct {
+type InteractiveResponseMessage_Body struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Vlevel          *BizIdentityInfo_BizIdentityInfoVerifiedLevelValue `protobuf:"varint,1,opt,name=vlevel,enum=proto.BizIdentityInfo_BizIdentityInfoVerifiedLevelValue" json:"vlevel,omitempty"`
-	VnameCert       *VerifiedNameCertificate                           `protobuf:"bytes,2,opt,name=vnameCert" json:"vnameCert,omitempty"`
-	Signed          *bool                                              `protobuf:"varint,3,opt,name=signed" json:"signed,omitempty"`
-	Revoked         *bool                                              `protobuf:"varint,4,opt,name=revoked" json:"revoked,omitempty"`
-	HostStorage     *BizIdentityInfo_BizIdentityInfoHostStorageType    `protobuf:"varint,5,opt,name=hostStorage,enum=proto.BizIdentityInfo_BizIdentityInfoHostStorageType" json:"hostStorage,omitempty"`
-	ActualActors    *BizIdentityInfo_BizIdentityInfoActualActorsType   `protobuf:"varint,6,opt,name=actualActors,enum=proto.BizIdentityInfo_BizIdentityInfoActualActorsType" json:"actualActors,omitempty"`
-	PrivacyModeTs   *uint64                                            `protobuf:"varint,7,opt,name=privacyModeTs" json:"privacyModeTs,omitempty"`
-	FeatureControls *uint64                                            `protobuf:"varint,8,opt,name=featureControls" json:"featureControls,omitempty"`
+	Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
 }
 
-func (x *BizIdentityInfo) Reset() {
-	*x = BizIdentityInfo{}
+func (x *InteractiveResponseMessage_Body) Reset() {
+	*x = InteractiveResponseMessage_Body{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[171]
+		mi := &file_binary_proto_def_proto_msgTypes[168]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *BizIdentityInfo) String() string {
+func (x *InteractiveResponseMessage_Body) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*BizIdentityInfo) ProtoMessage() {}
+func (*InteractiveResponseMessage_Body) ProtoMessage() {}
 
-func (x *BizIdentityInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[171]
+func (x *InteractiveResponseMessage_Body) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[168]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17389,93 +18052,108 @@ func (x *BizIdentityInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use BizIdentityInfo.ProtoReflect.Descriptor instead.
-func (*BizIdentityInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{171}
+// Deprecated: Use InteractiveResponseMessage_Body.ProtoReflect.Descriptor instead.
+func (*InteractiveResponseMessage_Body) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{19, 1}
 }
 
-func (x *BizIdentityInfo) GetVlevel() BizIdentityInfo_BizIdentityInfoVerifiedLevelValue {
-	if x != nil && x.Vlevel != nil {
-		return *x.Vlevel
+func (x *InteractiveResponseMessage_Body) GetText() string {
+	if x != nil && x.Text != nil {
+		return *x.Text
 	}
-	return BizIdentityInfo_UNKNOWN
+	return ""
 }
 
-func (x *BizIdentityInfo) GetVnameCert() *VerifiedNameCertificate {
-	if x != nil {
-		return x.VnameCert
-	}
-	return nil
+type InteractiveMessage_ShopMessage struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id             *string                                 `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
+	Surface        *InteractiveMessage_ShopMessage_Surface `protobuf:"varint,2,opt,name=surface,enum=proto.InteractiveMessage_ShopMessage_Surface" json:"surface,omitempty"`
+	MessageVersion *int32                                  `protobuf:"varint,3,opt,name=messageVersion" json:"messageVersion,omitempty"`
 }
 
-func (x *BizIdentityInfo) GetSigned() bool {
-	if x != nil && x.Signed != nil {
-		return *x.Signed
+func (x *InteractiveMessage_ShopMessage) Reset() {
+	*x = InteractiveMessage_ShopMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[169]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return false
 }
 
-func (x *BizIdentityInfo) GetRevoked() bool {
-	if x != nil && x.Revoked != nil {
-		return *x.Revoked
-	}
-	return false
+func (x *InteractiveMessage_ShopMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *BizIdentityInfo) GetHostStorage() BizIdentityInfo_BizIdentityInfoHostStorageType {
-	if x != nil && x.HostStorage != nil {
-		return *x.HostStorage
+func (*InteractiveMessage_ShopMessage) ProtoMessage() {}
+
+func (x *InteractiveMessage_ShopMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[169]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return BizIdentityInfo_ON_PREMISE
+	return mi.MessageOf(x)
 }
 
-func (x *BizIdentityInfo) GetActualActors() BizIdentityInfo_BizIdentityInfoActualActorsType {
-	if x != nil && x.ActualActors != nil {
-		return *x.ActualActors
+// Deprecated: Use InteractiveMessage_ShopMessage.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage_ShopMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 0}
+}
+
+func (x *InteractiveMessage_ShopMessage) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return BizIdentityInfo_SELF
+	return ""
 }
 
-func (x *BizIdentityInfo) GetPrivacyModeTs() uint64 {
-	if x != nil && x.PrivacyModeTs != nil {
-		return *x.PrivacyModeTs
+func (x *InteractiveMessage_ShopMessage) GetSurface() InteractiveMessage_ShopMessage_Surface {
+	if x != nil && x.Surface != nil {
+		return *x.Surface
 	}
-	return 0
+	return InteractiveMessage_ShopMessage_UNKNOWN_SURFACE
 }
 
-func (x *BizIdentityInfo) GetFeatureControls() uint64 {
-	if x != nil && x.FeatureControls != nil {
-		return *x.FeatureControls
+func (x *InteractiveMessage_ShopMessage) GetMessageVersion() int32 {
+	if x != nil && x.MessageVersion != nil {
+		return *x.MessageVersion
 	}
 	return 0
 }
 
-type BizAccountPayload struct {
+type InteractiveMessage_NativeFlowMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	VnameCert       *VerifiedNameCertificate `protobuf:"bytes,1,opt,name=vnameCert" json:"vnameCert,omitempty"`
-	BizAcctLinkInfo []byte                   `protobuf:"bytes,2,opt,name=bizAcctLinkInfo" json:"bizAcctLinkInfo,omitempty"`
+	Buttons           []*InteractiveMessage_NativeFlowMessage_NativeFlowButton `protobuf:"bytes,1,rep,name=buttons" json:"buttons,omitempty"`
+	MessageParamsJson *string                                                  `protobuf:"bytes,2,opt,name=messageParamsJson" json:"messageParamsJson,omitempty"`
+	MessageVersion    *int32                                                   `protobuf:"varint,3,opt,name=messageVersion" json:"messageVersion,omitempty"`
 }
 
-func (x *BizAccountPayload) Reset() {
-	*x = BizAccountPayload{}
+func (x *InteractiveMessage_NativeFlowMessage) Reset() {
+	*x = InteractiveMessage_NativeFlowMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[172]
+		mi := &file_binary_proto_def_proto_msgTypes[170]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *BizAccountPayload) String() string {
+func (x *InteractiveMessage_NativeFlowMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*BizAccountPayload) ProtoMessage() {}
+func (*InteractiveMessage_NativeFlowMessage) ProtoMessage() {}
 
-func (x *BizAccountPayload) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[172]
+func (x *InteractiveMessage_NativeFlowMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[170]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17486,54 +18164,65 @@ func (x *BizAccountPayload) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use BizAccountPayload.ProtoReflect.Descriptor instead.
-func (*BizAccountPayload) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{172}
+// Deprecated: Use InteractiveMessage_NativeFlowMessage.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage_NativeFlowMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 1}
 }
 
-func (x *BizAccountPayload) GetVnameCert() *VerifiedNameCertificate {
+func (x *InteractiveMessage_NativeFlowMessage) GetButtons() []*InteractiveMessage_NativeFlowMessage_NativeFlowButton {
 	if x != nil {
-		return x.VnameCert
+		return x.Buttons
 	}
 	return nil
 }
 
-func (x *BizAccountPayload) GetBizAcctLinkInfo() []byte {
-	if x != nil {
-		return x.BizAcctLinkInfo
+func (x *InteractiveMessage_NativeFlowMessage) GetMessageParamsJson() string {
+	if x != nil && x.MessageParamsJson != nil {
+		return *x.MessageParamsJson
 	}
-	return nil
+	return ""
 }
 
-type BizAccountLinkInfo struct {
+func (x *InteractiveMessage_NativeFlowMessage) GetMessageVersion() int32 {
+	if x != nil && x.MessageVersion != nil {
+		return *x.MessageVersion
+	}
+	return 0
+}
+
+type InteractiveMessage_Header struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	WhatsappBizAcctFbid *uint64                                               `protobuf:"varint,1,opt,name=whatsappBizAcctFbid" json:"whatsappBizAcctFbid,omitempty"`
-	WhatsappAcctNumber  *string                                               `protobuf:"bytes,2,opt,name=whatsappAcctNumber" json:"whatsappAcctNumber,omitempty"`
-	IssueTime           *uint64                                               `protobuf:"varint,3,opt,name=issueTime" json:"issueTime,omitempty"`
-	HostStorage         *BizAccountLinkInfo_BizAccountLinkInfoHostStorageType `protobuf:"varint,4,opt,name=hostStorage,enum=proto.BizAccountLinkInfo_BizAccountLinkInfoHostStorageType" json:"hostStorage,omitempty"`
-	AccountType         *BizAccountLinkInfo_BizAccountLinkInfoAccountType     `protobuf:"varint,5,opt,name=accountType,enum=proto.BizAccountLinkInfo_BizAccountLinkInfoAccountType" json:"accountType,omitempty"`
+	Title              *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
+	Subtitle           *string `protobuf:"bytes,2,opt,name=subtitle" json:"subtitle,omitempty"`
+	HasMediaAttachment *bool   `protobuf:"varint,5,opt,name=hasMediaAttachment" json:"hasMediaAttachment,omitempty"`
+	// Types that are assignable to Media:
+	//	*InteractiveMessage_Header_DocumentMessage
+	//	*InteractiveMessage_Header_ImageMessage
+	//	*InteractiveMessage_Header_JpegThumbnail
+	//	*InteractiveMessage_Header_VideoMessage
+	Media isInteractiveMessage_Header_Media `protobuf_oneof:"media"`
 }
 
-func (x *BizAccountLinkInfo) Reset() {
-	*x = BizAccountLinkInfo{}
+func (x *InteractiveMessage_Header) Reset() {
+	*x = InteractiveMessage_Header{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[173]
+		mi := &file_binary_proto_def_proto_msgTypes[171]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *BizAccountLinkInfo) String() string {
+func (x *InteractiveMessage_Header) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*BizAccountLinkInfo) ProtoMessage() {}
+func (*InteractiveMessage_Header) ProtoMessage() {}
 
-func (x *BizAccountLinkInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[173]
+func (x *InteractiveMessage_Header) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[171]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17544,73 +18233,120 @@ func (x *BizAccountLinkInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use BizAccountLinkInfo.ProtoReflect.Descriptor instead.
-func (*BizAccountLinkInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{173}
+// Deprecated: Use InteractiveMessage_Header.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage_Header) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 2}
+}
+
+func (x *InteractiveMessage_Header) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
+	}
+	return ""
+}
+
+func (x *InteractiveMessage_Header) GetSubtitle() string {
+	if x != nil && x.Subtitle != nil {
+		return *x.Subtitle
+	}
+	return ""
+}
+
+func (x *InteractiveMessage_Header) GetHasMediaAttachment() bool {
+	if x != nil && x.HasMediaAttachment != nil {
+		return *x.HasMediaAttachment
+	}
+	return false
+}
+
+func (m *InteractiveMessage_Header) GetMedia() isInteractiveMessage_Header_Media {
+	if m != nil {
+		return m.Media
+	}
+	return nil
+}
+
+func (x *InteractiveMessage_Header) GetDocumentMessage() *DocumentMessage {
+	if x, ok := x.GetMedia().(*InteractiveMessage_Header_DocumentMessage); ok {
+		return x.DocumentMessage
+	}
+	return nil
+}
+
+func (x *InteractiveMessage_Header) GetImageMessage() *ImageMessage {
+	if x, ok := x.GetMedia().(*InteractiveMessage_Header_ImageMessage); ok {
+		return x.ImageMessage
+	}
+	return nil
+}
+
+func (x *InteractiveMessage_Header) GetJpegThumbnail() []byte {
+	if x, ok := x.GetMedia().(*InteractiveMessage_Header_JpegThumbnail); ok {
+		return x.JpegThumbnail
+	}
+	return nil
 }
 
-func (x *BizAccountLinkInfo) GetWhatsappBizAcctFbid() uint64 {
-	if x != nil && x.WhatsappBizAcctFbid != nil {
-		return *x.WhatsappBizAcctFbid
+func (x *InteractiveMessage_Header) GetVideoMessage() *VideoMessage {
+	if x, ok := x.GetMedia().(*InteractiveMessage_Header_VideoMessage); ok {
+		return x.VideoMessage
 	}
-	return 0
+	return nil
 }
 
-func (x *BizAccountLinkInfo) GetWhatsappAcctNumber() string {
-	if x != nil && x.WhatsappAcctNumber != nil {
-		return *x.WhatsappAcctNumber
-	}
-	return ""
+type isInteractiveMessage_Header_Media interface {
+	isInteractiveMessage_Header_Media()
 }
 
-func (x *BizAccountLinkInfo) GetIssueTime() uint64 {
-	if x != nil && x.IssueTime != nil {
-		return *x.IssueTime
-	}
-	return 0
+type InteractiveMessage_Header_DocumentMessage struct {
+	DocumentMessage *DocumentMessage `protobuf:"bytes,3,opt,name=documentMessage,oneof"`
 }
 
-func (x *BizAccountLinkInfo) GetHostStorage() BizAccountLinkInfo_BizAccountLinkInfoHostStorageType {
-	if x != nil && x.HostStorage != nil {
-		return *x.HostStorage
-	}
-	return BizAccountLinkInfo_ON_PREMISE
+type InteractiveMessage_Header_ImageMessage struct {
+	ImageMessage *ImageMessage `protobuf:"bytes,4,opt,name=imageMessage,oneof"`
 }
 
-func (x *BizAccountLinkInfo) GetAccountType() BizAccountLinkInfo_BizAccountLinkInfoAccountType {
-	if x != nil && x.AccountType != nil {
-		return *x.AccountType
-	}
-	return BizAccountLinkInfo_ENTERPRISE
+type InteractiveMessage_Header_JpegThumbnail struct {
+	JpegThumbnail []byte `protobuf:"bytes,6,opt,name=jpegThumbnail,oneof"`
 }
 
-type HandshakeMessage struct {
+type InteractiveMessage_Header_VideoMessage struct {
+	VideoMessage *VideoMessage `protobuf:"bytes,7,opt,name=videoMessage,oneof"`
+}
+
+func (*InteractiveMessage_Header_DocumentMessage) isInteractiveMessage_Header_Media() {}
+
+func (*InteractiveMessage_Header_ImageMessage) isInteractiveMessage_Header_Media() {}
+
+func (*InteractiveMessage_Header_JpegThumbnail) isInteractiveMessage_Header_Media() {}
+
+func (*InteractiveMessage_Header_VideoMessage) isInteractiveMessage_Header_Media() {}
+
+type InteractiveMessage_Footer struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ClientHello  *ClientHello  `protobuf:"bytes,2,opt,name=clientHello" json:"clientHello,omitempty"`
-	ServerHello  *ServerHello  `protobuf:"bytes,3,opt,name=serverHello" json:"serverHello,omitempty"`
-	ClientFinish *ClientFinish `protobuf:"bytes,4,opt,name=clientFinish" json:"clientFinish,omitempty"`
+	Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
 }
 
-func (x *HandshakeMessage) Reset() {
-	*x = HandshakeMessage{}
+func (x *InteractiveMessage_Footer) Reset() {
+	*x = InteractiveMessage_Footer{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[174]
+		mi := &file_binary_proto_def_proto_msgTypes[172]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *HandshakeMessage) String() string {
+func (x *InteractiveMessage_Footer) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*HandshakeMessage) ProtoMessage() {}
+func (*InteractiveMessage_Footer) ProtoMessage() {}
 
-func (x *HandshakeMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[174]
+func (x *InteractiveMessage_Footer) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[172]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17621,59 +18357,45 @@ func (x *HandshakeMessage) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use HandshakeMessage.ProtoReflect.Descriptor instead.
-func (*HandshakeMessage) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{174}
-}
-
-func (x *HandshakeMessage) GetClientHello() *ClientHello {
-	if x != nil {
-		return x.ClientHello
-	}
-	return nil
-}
-
-func (x *HandshakeMessage) GetServerHello() *ServerHello {
-	if x != nil {
-		return x.ServerHello
-	}
-	return nil
+// Deprecated: Use InteractiveMessage_Footer.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage_Footer) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 3}
 }
 
-func (x *HandshakeMessage) GetClientFinish() *ClientFinish {
-	if x != nil {
-		return x.ClientFinish
+func (x *InteractiveMessage_Footer) GetText() string {
+	if x != nil && x.Text != nil {
+		return *x.Text
 	}
-	return nil
+	return ""
 }
 
-type ServerHello struct {
+type InteractiveMessage_CollectionMessage struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Ephemeral []byte `protobuf:"bytes,1,opt,name=ephemeral" json:"ephemeral,omitempty"`
-	Static    []byte `protobuf:"bytes,2,opt,name=static" json:"static,omitempty"`
-	Payload   []byte `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"`
+	BizJid         *string `protobuf:"bytes,1,opt,name=bizJid" json:"bizJid,omitempty"`
+	Id             *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
+	MessageVersion *int32  `protobuf:"varint,3,opt,name=messageVersion" json:"messageVersion,omitempty"`
 }
 
-func (x *ServerHello) Reset() {
-	*x = ServerHello{}
+func (x *InteractiveMessage_CollectionMessage) Reset() {
+	*x = InteractiveMessage_CollectionMessage{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[175]
+		mi := &file_binary_proto_def_proto_msgTypes[173]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ServerHello) String() string {
+func (x *InteractiveMessage_CollectionMessage) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ServerHello) ProtoMessage() {}
+func (*InteractiveMessage_CollectionMessage) ProtoMessage() {}
 
-func (x *ServerHello) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[175]
+func (x *InteractiveMessage_CollectionMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[173]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17684,59 +18406,57 @@ func (x *ServerHello) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ServerHello.ProtoReflect.Descriptor instead.
-func (*ServerHello) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{175}
+// Deprecated: Use InteractiveMessage_CollectionMessage.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage_CollectionMessage) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 4}
 }
 
-func (x *ServerHello) GetEphemeral() []byte {
-	if x != nil {
-		return x.Ephemeral
+func (x *InteractiveMessage_CollectionMessage) GetBizJid() string {
+	if x != nil && x.BizJid != nil {
+		return *x.BizJid
 	}
-	return nil
+	return ""
 }
 
-func (x *ServerHello) GetStatic() []byte {
-	if x != nil {
-		return x.Static
+func (x *InteractiveMessage_CollectionMessage) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return nil
+	return ""
 }
 
-func (x *ServerHello) GetPayload() []byte {
-	if x != nil {
-		return x.Payload
+func (x *InteractiveMessage_CollectionMessage) GetMessageVersion() int32 {
+	if x != nil && x.MessageVersion != nil {
+		return *x.MessageVersion
 	}
-	return nil
+	return 0
 }
 
-type ClientHello struct {
+type InteractiveMessage_Body struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Ephemeral []byte `protobuf:"bytes,1,opt,name=ephemeral" json:"ephemeral,omitempty"`
-	Static    []byte `protobuf:"bytes,2,opt,name=static" json:"static,omitempty"`
-	Payload   []byte `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"`
+	Text *string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
 }
 
-func (x *ClientHello) Reset() {
-	*x = ClientHello{}
+func (x *InteractiveMessage_Body) Reset() {
+	*x = InteractiveMessage_Body{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[176]
+		mi := &file_binary_proto_def_proto_msgTypes[174]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ClientHello) String() string {
+func (x *InteractiveMessage_Body) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ClientHello) ProtoMessage() {}
+func (*InteractiveMessage_Body) ProtoMessage() {}
 
-func (x *ClientHello) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[176]
+func (x *InteractiveMessage_Body) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[174]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17747,58 +18467,44 @@ func (x *ClientHello) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ClientHello.ProtoReflect.Descriptor instead.
-func (*ClientHello) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{176}
-}
-
-func (x *ClientHello) GetEphemeral() []byte {
-	if x != nil {
-		return x.Ephemeral
-	}
-	return nil
-}
-
-func (x *ClientHello) GetStatic() []byte {
-	if x != nil {
-		return x.Static
-	}
-	return nil
+// Deprecated: Use InteractiveMessage_Body.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage_Body) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 5}
 }
 
-func (x *ClientHello) GetPayload() []byte {
-	if x != nil {
-		return x.Payload
+func (x *InteractiveMessage_Body) GetText() string {
+	if x != nil && x.Text != nil {
+		return *x.Text
 	}
-	return nil
+	return ""
 }
 
-type ClientFinish struct {
+type InteractiveMessage_NativeFlowMessage_NativeFlowButton struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Static  []byte `protobuf:"bytes,1,opt,name=static" json:"static,omitempty"`
-	Payload []byte `protobuf:"bytes,2,opt,name=payload" json:"payload,omitempty"`
+	Name             *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	ButtonParamsJson *string `protobuf:"bytes,2,opt,name=buttonParamsJson" json:"buttonParamsJson,omitempty"`
 }
 
-func (x *ClientFinish) Reset() {
-	*x = ClientFinish{}
+func (x *InteractiveMessage_NativeFlowMessage_NativeFlowButton) Reset() {
+	*x = InteractiveMessage_NativeFlowMessage_NativeFlowButton{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[177]
+		mi := &file_binary_proto_def_proto_msgTypes[175]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ClientFinish) String() string {
+func (x *InteractiveMessage_NativeFlowMessage_NativeFlowButton) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ClientFinish) ProtoMessage() {}
+func (*InteractiveMessage_NativeFlowMessage_NativeFlowButton) ProtoMessage() {}
 
-func (x *ClientFinish) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[177]
+func (x *InteractiveMessage_NativeFlowMessage_NativeFlowButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[175]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17809,72 +18515,54 @@ func (x *ClientFinish) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ClientFinish.ProtoReflect.Descriptor instead.
-func (*ClientFinish) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{177}
+// Deprecated: Use InteractiveMessage_NativeFlowMessage_NativeFlowButton.ProtoReflect.Descriptor instead.
+func (*InteractiveMessage_NativeFlowMessage_NativeFlowButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{20, 1, 0}
 }
 
-func (x *ClientFinish) GetStatic() []byte {
-	if x != nil {
-		return x.Static
+func (x *InteractiveMessage_NativeFlowMessage_NativeFlowButton) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
-	return nil
+	return ""
 }
 
-func (x *ClientFinish) GetPayload() []byte {
-	if x != nil {
-		return x.Payload
+func (x *InteractiveMessage_NativeFlowMessage_NativeFlowButton) GetButtonParamsJson() string {
+	if x != nil && x.ButtonParamsJson != nil {
+		return *x.ButtonParamsJson
 	}
-	return nil
+	return ""
 }
 
-type ClientPayload struct {
+type HighlyStructuredMessage_HSMLocalizableParameter struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Username            *uint64                                     `protobuf:"varint,1,opt,name=username" json:"username,omitempty"`
-	Passive             *bool                                       `protobuf:"varint,3,opt,name=passive" json:"passive,omitempty"`
-	UserAgent           *UserAgent                                  `protobuf:"bytes,5,opt,name=userAgent" json:"userAgent,omitempty"`
-	WebInfo             *WebInfo                                    `protobuf:"bytes,6,opt,name=webInfo" json:"webInfo,omitempty"`
-	PushName            *string                                     `protobuf:"bytes,7,opt,name=pushName" json:"pushName,omitempty"`
-	SessionId           *int32                                      `protobuf:"fixed32,9,opt,name=sessionId" json:"sessionId,omitempty"`
-	ShortConnect        *bool                                       `protobuf:"varint,10,opt,name=shortConnect" json:"shortConnect,omitempty"`
-	ConnectType         *ClientPayload_ClientPayloadConnectType     `protobuf:"varint,12,opt,name=connectType,enum=proto.ClientPayload_ClientPayloadConnectType" json:"connectType,omitempty"`
-	ConnectReason       *ClientPayload_ClientPayloadConnectReason   `protobuf:"varint,13,opt,name=connectReason,enum=proto.ClientPayload_ClientPayloadConnectReason" json:"connectReason,omitempty"`
-	Shards              []int32                                     `protobuf:"varint,14,rep,name=shards" json:"shards,omitempty"`
-	DnsSource           *DNSSource                                  `protobuf:"bytes,15,opt,name=dnsSource" json:"dnsSource,omitempty"`
-	ConnectAttemptCount *uint32                                     `protobuf:"varint,16,opt,name=connectAttemptCount" json:"connectAttemptCount,omitempty"`
-	Device              *uint32                                     `protobuf:"varint,18,opt,name=device" json:"device,omitempty"`
-	DevicePairingData   *DevicePairingRegistrationData              `protobuf:"bytes,19,opt,name=devicePairingData" json:"devicePairingData,omitempty"`
-	Product             *ClientPayload_ClientPayloadProduct         `protobuf:"varint,20,opt,name=product,enum=proto.ClientPayload_ClientPayloadProduct" json:"product,omitempty"`
-	FbCat               []byte                                      `protobuf:"bytes,21,opt,name=fbCat" json:"fbCat,omitempty"`
-	FbUserAgent         []byte                                      `protobuf:"bytes,22,opt,name=fbUserAgent" json:"fbUserAgent,omitempty"`
-	Oc                  *bool                                       `protobuf:"varint,23,opt,name=oc" json:"oc,omitempty"`
-	Lc                  *int32                                      `protobuf:"varint,24,opt,name=lc" json:"lc,omitempty"`
-	IosAppExtension     *ClientPayload_ClientPayloadIOSAppExtension `protobuf:"varint,30,opt,name=iosAppExtension,enum=proto.ClientPayload_ClientPayloadIOSAppExtension" json:"iosAppExtension,omitempty"`
-	FbAppId             *uint64                                     `protobuf:"varint,31,opt,name=fbAppId" json:"fbAppId,omitempty"`
-	FbDeviceId          []byte                                      `protobuf:"bytes,32,opt,name=fbDeviceId" json:"fbDeviceId,omitempty"`
-	Pull                *bool                                       `protobuf:"varint,33,opt,name=pull" json:"pull,omitempty"`
+	Default *string `protobuf:"bytes,1,opt,name=default" json:"default,omitempty"`
+	// Types that are assignable to ParamOneof:
+	//	*HighlyStructuredMessage_HSMLocalizableParameter_Currency
+	//	*HighlyStructuredMessage_HSMLocalizableParameter_DateTime
+	ParamOneof isHighlyStructuredMessage_HSMLocalizableParameter_ParamOneof `protobuf_oneof:"paramOneof"`
 }
 
-func (x *ClientPayload) Reset() {
-	*x = ClientPayload{}
+func (x *HighlyStructuredMessage_HSMLocalizableParameter) Reset() {
+	*x = HighlyStructuredMessage_HSMLocalizableParameter{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[178]
+		mi := &file_binary_proto_def_proto_msgTypes[176]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ClientPayload) String() string {
+func (x *HighlyStructuredMessage_HSMLocalizableParameter) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ClientPayload) ProtoMessage() {}
+func (*HighlyStructuredMessage_HSMLocalizableParameter) ProtoMessage() {}
 
-func (x *ClientPayload) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[178]
+func (x *HighlyStructuredMessage_HSMLocalizableParameter) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[176]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -17885,200 +18573,165 @@ func (x *ClientPayload) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ClientPayload.ProtoReflect.Descriptor instead.
-func (*ClientPayload) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{178}
+// Deprecated: Use HighlyStructuredMessage_HSMLocalizableParameter.ProtoReflect.Descriptor instead.
+func (*HighlyStructuredMessage_HSMLocalizableParameter) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24, 0}
 }
 
-func (x *ClientPayload) GetUsername() uint64 {
-	if x != nil && x.Username != nil {
-		return *x.Username
+func (x *HighlyStructuredMessage_HSMLocalizableParameter) GetDefault() string {
+	if x != nil && x.Default != nil {
+		return *x.Default
 	}
-	return 0
+	return ""
 }
 
-func (x *ClientPayload) GetPassive() bool {
-	if x != nil && x.Passive != nil {
-		return *x.Passive
+func (m *HighlyStructuredMessage_HSMLocalizableParameter) GetParamOneof() isHighlyStructuredMessage_HSMLocalizableParameter_ParamOneof {
+	if m != nil {
+		return m.ParamOneof
 	}
-	return false
+	return nil
 }
 
-func (x *ClientPayload) GetUserAgent() *UserAgent {
-	if x != nil {
-		return x.UserAgent
+func (x *HighlyStructuredMessage_HSMLocalizableParameter) GetCurrency() *HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency {
+	if x, ok := x.GetParamOneof().(*HighlyStructuredMessage_HSMLocalizableParameter_Currency); ok {
+		return x.Currency
 	}
 	return nil
 }
 
-func (x *ClientPayload) GetWebInfo() *WebInfo {
-	if x != nil {
-		return x.WebInfo
+func (x *HighlyStructuredMessage_HSMLocalizableParameter) GetDateTime() *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime {
+	if x, ok := x.GetParamOneof().(*HighlyStructuredMessage_HSMLocalizableParameter_DateTime); ok {
+		return x.DateTime
 	}
 	return nil
 }
 
-func (x *ClientPayload) GetPushName() string {
-	if x != nil && x.PushName != nil {
-		return *x.PushName
-	}
-	return ""
+type isHighlyStructuredMessage_HSMLocalizableParameter_ParamOneof interface {
+	isHighlyStructuredMessage_HSMLocalizableParameter_ParamOneof()
 }
 
-func (x *ClientPayload) GetSessionId() int32 {
-	if x != nil && x.SessionId != nil {
-		return *x.SessionId
-	}
-	return 0
+type HighlyStructuredMessage_HSMLocalizableParameter_Currency struct {
+	Currency *HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency `protobuf:"bytes,2,opt,name=currency,oneof"`
 }
 
-func (x *ClientPayload) GetShortConnect() bool {
-	if x != nil && x.ShortConnect != nil {
-		return *x.ShortConnect
-	}
-	return false
+type HighlyStructuredMessage_HSMLocalizableParameter_DateTime struct {
+	DateTime *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime `protobuf:"bytes,3,opt,name=dateTime,oneof"`
 }
 
-func (x *ClientPayload) GetConnectType() ClientPayload_ClientPayloadConnectType {
-	if x != nil && x.ConnectType != nil {
-		return *x.ConnectType
-	}
-	return ClientPayload_CELLULAR_UNKNOWN
+func (*HighlyStructuredMessage_HSMLocalizableParameter_Currency) isHighlyStructuredMessage_HSMLocalizableParameter_ParamOneof() {
 }
 
-func (x *ClientPayload) GetConnectReason() ClientPayload_ClientPayloadConnectReason {
-	if x != nil && x.ConnectReason != nil {
-		return *x.ConnectReason
-	}
-	return ClientPayload_PUSH
+func (*HighlyStructuredMessage_HSMLocalizableParameter_DateTime) isHighlyStructuredMessage_HSMLocalizableParameter_ParamOneof() {
 }
 
-func (x *ClientPayload) GetShards() []int32 {
-	if x != nil {
-		return x.Shards
-	}
-	return nil
-}
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *ClientPayload) GetDnsSource() *DNSSource {
-	if x != nil {
-		return x.DnsSource
-	}
-	return nil
+	// Types that are assignable to DatetimeOneof:
+	//	*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_Component
+	//	*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_UnixEpoch
+	DatetimeOneof isHighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_DatetimeOneof `protobuf_oneof:"datetimeOneof"`
 }
 
-func (x *ClientPayload) GetConnectAttemptCount() uint32 {
-	if x != nil && x.ConnectAttemptCount != nil {
-		return *x.ConnectAttemptCount
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) Reset() {
+	*x = HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[177]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return 0
 }
 
-func (x *ClientPayload) GetDevice() uint32 {
-	if x != nil && x.Device != nil {
-		return *x.Device
-	}
-	return 0
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *ClientPayload) GetDevicePairingData() *DevicePairingRegistrationData {
-	if x != nil {
-		return x.DevicePairingData
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) ProtoMessage() {}
+
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[177]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *ClientPayload) GetProduct() ClientPayload_ClientPayloadProduct {
-	if x != nil && x.Product != nil {
-		return *x.Product
-	}
-	return ClientPayload_WHATSAPP
+// Deprecated: Use HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime.ProtoReflect.Descriptor instead.
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24, 0, 0}
 }
 
-func (x *ClientPayload) GetFbCat() []byte {
-	if x != nil {
-		return x.FbCat
+func (m *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) GetDatetimeOneof() isHighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_DatetimeOneof {
+	if m != nil {
+		return m.DatetimeOneof
 	}
 	return nil
 }
 
-func (x *ClientPayload) GetFbUserAgent() []byte {
-	if x != nil {
-		return x.FbUserAgent
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) GetComponent() *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent {
+	if x, ok := x.GetDatetimeOneof().(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_Component); ok {
+		return x.Component
 	}
 	return nil
 }
 
-func (x *ClientPayload) GetOc() bool {
-	if x != nil && x.Oc != nil {
-		return *x.Oc
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime) GetUnixEpoch() *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch {
+	if x, ok := x.GetDatetimeOneof().(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_UnixEpoch); ok {
+		return x.UnixEpoch
 	}
-	return false
+	return nil
 }
 
-func (x *ClientPayload) GetLc() int32 {
-	if x != nil && x.Lc != nil {
-		return *x.Lc
-	}
-	return 0
+type isHighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_DatetimeOneof interface {
+	isHighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_DatetimeOneof()
 }
 
-func (x *ClientPayload) GetIosAppExtension() ClientPayload_ClientPayloadIOSAppExtension {
-	if x != nil && x.IosAppExtension != nil {
-		return *x.IosAppExtension
-	}
-	return ClientPayload_SHARE_EXTENSION
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_Component struct {
+	Component *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent `protobuf:"bytes,1,opt,name=component,oneof"`
 }
 
-func (x *ClientPayload) GetFbAppId() uint64 {
-	if x != nil && x.FbAppId != nil {
-		return *x.FbAppId
-	}
-	return 0
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_UnixEpoch struct {
+	UnixEpoch *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch `protobuf:"bytes,2,opt,name=unixEpoch,oneof"`
 }
 
-func (x *ClientPayload) GetFbDeviceId() []byte {
-	if x != nil {
-		return x.FbDeviceId
-	}
-	return nil
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_Component) isHighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_DatetimeOneof() {
 }
 
-func (x *ClientPayload) GetPull() bool {
-	if x != nil && x.Pull != nil {
-		return *x.Pull
-	}
-	return false
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_UnixEpoch) isHighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_DatetimeOneof() {
 }
 
-type WebInfo struct {
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	RefToken       *string                        `protobuf:"bytes,1,opt,name=refToken" json:"refToken,omitempty"`
-	Version        *string                        `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
-	WebdPayload    *WebdPayload                   `protobuf:"bytes,3,opt,name=webdPayload" json:"webdPayload,omitempty"`
-	WebSubPlatform *WebInfo_WebInfoWebSubPlatform `protobuf:"varint,4,opt,name=webSubPlatform,enum=proto.WebInfo_WebInfoWebSubPlatform" json:"webSubPlatform,omitempty"`
+	CurrencyCode *string `protobuf:"bytes,1,opt,name=currencyCode" json:"currencyCode,omitempty"`
+	Amount1000   *int64  `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"`
 }
 
-func (x *WebInfo) Reset() {
-	*x = WebInfo{}
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency) Reset() {
+	*x = HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[179]
+		mi := &file_binary_proto_def_proto_msgTypes[178]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *WebInfo) String() string {
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*WebInfo) ProtoMessage() {}
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency) ProtoMessage() {}
 
-func (x *WebInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[179]
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[178]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -18089,74 +18742,51 @@ func (x *WebInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use WebInfo.ProtoReflect.Descriptor instead.
-func (*WebInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{179}
-}
-
-func (x *WebInfo) GetRefToken() string {
-	if x != nil && x.RefToken != nil {
-		return *x.RefToken
-	}
-	return ""
+// Deprecated: Use HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency.ProtoReflect.Descriptor instead.
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24, 0, 1}
 }
 
-func (x *WebInfo) GetVersion() string {
-	if x != nil && x.Version != nil {
-		return *x.Version
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency) GetCurrencyCode() string {
+	if x != nil && x.CurrencyCode != nil {
+		return *x.CurrencyCode
 	}
 	return ""
 }
 
-func (x *WebInfo) GetWebdPayload() *WebdPayload {
-	if x != nil {
-		return x.WebdPayload
-	}
-	return nil
-}
-
-func (x *WebInfo) GetWebSubPlatform() WebInfo_WebInfoWebSubPlatform {
-	if x != nil && x.WebSubPlatform != nil {
-		return *x.WebSubPlatform
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency) GetAmount1000() int64 {
+	if x != nil && x.Amount1000 != nil {
+		return *x.Amount1000
 	}
-	return WebInfo_WEB_BROWSER
+	return 0
 }
 
-type WebdPayload struct {
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	UsesParticipantInKey     *bool   `protobuf:"varint,1,opt,name=usesParticipantInKey" json:"usesParticipantInKey,omitempty"`
-	SupportsStarredMessages  *bool   `protobuf:"varint,2,opt,name=supportsStarredMessages" json:"supportsStarredMessages,omitempty"`
-	SupportsDocumentMessages *bool   `protobuf:"varint,3,opt,name=supportsDocumentMessages" json:"supportsDocumentMessages,omitempty"`
-	SupportsUrlMessages      *bool   `protobuf:"varint,4,opt,name=supportsUrlMessages" json:"supportsUrlMessages,omitempty"`
-	SupportsMediaRetry       *bool   `protobuf:"varint,5,opt,name=supportsMediaRetry" json:"supportsMediaRetry,omitempty"`
-	SupportsE2EImage         *bool   `protobuf:"varint,6,opt,name=supportsE2EImage" json:"supportsE2EImage,omitempty"`
-	SupportsE2EVideo         *bool   `protobuf:"varint,7,opt,name=supportsE2EVideo" json:"supportsE2EVideo,omitempty"`
-	SupportsE2EAudio         *bool   `protobuf:"varint,8,opt,name=supportsE2EAudio" json:"supportsE2EAudio,omitempty"`
-	SupportsE2EDocument      *bool   `protobuf:"varint,9,opt,name=supportsE2EDocument" json:"supportsE2EDocument,omitempty"`
-	DocumentTypes            *string `protobuf:"bytes,10,opt,name=documentTypes" json:"documentTypes,omitempty"`
-	Features                 []byte  `protobuf:"bytes,11,opt,name=features" json:"features,omitempty"`
+	Timestamp *int64 `protobuf:"varint,1,opt,name=timestamp" json:"timestamp,omitempty"`
 }
 
-func (x *WebdPayload) Reset() {
-	*x = WebdPayload{}
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch) Reset() {
+	*x = HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[180]
+		mi := &file_binary_proto_def_proto_msgTypes[179]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *WebdPayload) String() string {
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*WebdPayload) ProtoMessage() {}
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch) ProtoMessage() {
+}
 
-func (x *WebdPayload) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[180]
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[179]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -18167,110 +18797,127 @@ func (x *WebdPayload) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use WebdPayload.ProtoReflect.Descriptor instead.
-func (*WebdPayload) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{180}
+// Deprecated: Use HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch.ProtoReflect.Descriptor instead.
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24, 0, 0, 0}
 }
 
-func (x *WebdPayload) GetUsesParticipantInKey() bool {
-	if x != nil && x.UsesParticipantInKey != nil {
-		return *x.UsesParticipantInKey
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch) GetTimestamp() int64 {
+	if x != nil && x.Timestamp != nil {
+		return *x.Timestamp
 	}
-	return false
+	return 0
 }
 
-func (x *WebdPayload) GetSupportsStarredMessages() bool {
-	if x != nil && x.SupportsStarredMessages != nil {
-		return *x.SupportsStarredMessages
-	}
-	return false
+type HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DayOfWeek  *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType `protobuf:"varint,1,opt,name=dayOfWeek,enum=proto.HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType" json:"dayOfWeek,omitempty"`
+	Year       *uint32                                                                                         `protobuf:"varint,2,opt,name=year" json:"year,omitempty"`
+	Month      *uint32                                                                                         `protobuf:"varint,3,opt,name=month" json:"month,omitempty"`
+	DayOfMonth *uint32                                                                                         `protobuf:"varint,4,opt,name=dayOfMonth" json:"dayOfMonth,omitempty"`
+	Hour       *uint32                                                                                         `protobuf:"varint,5,opt,name=hour" json:"hour,omitempty"`
+	Minute     *uint32                                                                                         `protobuf:"varint,6,opt,name=minute" json:"minute,omitempty"`
+	Calendar   *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType  `protobuf:"varint,7,opt,name=calendar,enum=proto.HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType" json:"calendar,omitempty"`
 }
 
-func (x *WebdPayload) GetSupportsDocumentMessages() bool {
-	if x != nil && x.SupportsDocumentMessages != nil {
-		return *x.SupportsDocumentMessages
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) Reset() {
+	*x = HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[180]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return false
 }
 
-func (x *WebdPayload) GetSupportsUrlMessages() bool {
-	if x != nil && x.SupportsUrlMessages != nil {
-		return *x.SupportsUrlMessages
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) ProtoMessage() {
+}
+
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[180]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return false
+	return mi.MessageOf(x)
 }
 
-func (x *WebdPayload) GetSupportsMediaRetry() bool {
-	if x != nil && x.SupportsMediaRetry != nil {
-		return *x.SupportsMediaRetry
+// Deprecated: Use HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent.ProtoReflect.Descriptor instead.
+func (*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{24, 0, 0, 1}
+}
+
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) GetDayOfWeek() HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType {
+	if x != nil && x.DayOfWeek != nil {
+		return *x.DayOfWeek
 	}
-	return false
+	return HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_MONDAY
 }
 
-func (x *WebdPayload) GetSupportsE2EImage() bool {
-	if x != nil && x.SupportsE2EImage != nil {
-		return *x.SupportsE2EImage
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) GetYear() uint32 {
+	if x != nil && x.Year != nil {
+		return *x.Year
 	}
-	return false
+	return 0
 }
 
-func (x *WebdPayload) GetSupportsE2EVideo() bool {
-	if x != nil && x.SupportsE2EVideo != nil {
-		return *x.SupportsE2EVideo
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) GetMonth() uint32 {
+	if x != nil && x.Month != nil {
+		return *x.Month
 	}
-	return false
+	return 0
 }
 
-func (x *WebdPayload) GetSupportsE2EAudio() bool {
-	if x != nil && x.SupportsE2EAudio != nil {
-		return *x.SupportsE2EAudio
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) GetDayOfMonth() uint32 {
+	if x != nil && x.DayOfMonth != nil {
+		return *x.DayOfMonth
 	}
-	return false
+	return 0
 }
 
-func (x *WebdPayload) GetSupportsE2EDocument() bool {
-	if x != nil && x.SupportsE2EDocument != nil {
-		return *x.SupportsE2EDocument
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) GetHour() uint32 {
+	if x != nil && x.Hour != nil {
+		return *x.Hour
 	}
-	return false
+	return 0
 }
 
-func (x *WebdPayload) GetDocumentTypes() string {
-	if x != nil && x.DocumentTypes != nil {
-		return *x.DocumentTypes
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) GetMinute() uint32 {
+	if x != nil && x.Minute != nil {
+		return *x.Minute
 	}
-	return ""
+	return 0
 }
 
-func (x *WebdPayload) GetFeatures() []byte {
-	if x != nil {
-		return x.Features
+func (x *HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent) GetCalendar() HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType {
+	if x != nil && x.Calendar != nil {
+		return *x.Calendar
 	}
-	return nil
+	return HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_GREGORIAN
 }
 
-type UserAgent struct {
+type ButtonsMessage_Button struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Platform                    *UserAgent_UserAgentPlatform       `protobuf:"varint,1,opt,name=platform,enum=proto.UserAgent_UserAgentPlatform" json:"platform,omitempty"`
-	AppVersion                  *AppVersion                        `protobuf:"bytes,2,opt,name=appVersion" json:"appVersion,omitempty"`
-	Mcc                         *string                            `protobuf:"bytes,3,opt,name=mcc" json:"mcc,omitempty"`
-	Mnc                         *string                            `protobuf:"bytes,4,opt,name=mnc" json:"mnc,omitempty"`
-	OsVersion                   *string                            `protobuf:"bytes,5,opt,name=osVersion" json:"osVersion,omitempty"`
-	Manufacturer                *string                            `protobuf:"bytes,6,opt,name=manufacturer" json:"manufacturer,omitempty"`
-	Device                      *string                            `protobuf:"bytes,7,opt,name=device" json:"device,omitempty"`
-	OsBuildNumber               *string                            `protobuf:"bytes,8,opt,name=osBuildNumber" json:"osBuildNumber,omitempty"`
-	PhoneId                     *string                            `protobuf:"bytes,9,opt,name=phoneId" json:"phoneId,omitempty"`
-	ReleaseChannel              *UserAgent_UserAgentReleaseChannel `protobuf:"varint,10,opt,name=releaseChannel,enum=proto.UserAgent_UserAgentReleaseChannel" json:"releaseChannel,omitempty"`
-	LocaleLanguageIso6391       *string                            `protobuf:"bytes,11,opt,name=localeLanguageIso6391" json:"localeLanguageIso6391,omitempty"`
-	LocaleCountryIso31661Alpha2 *string                            `protobuf:"bytes,12,opt,name=localeCountryIso31661Alpha2" json:"localeCountryIso31661Alpha2,omitempty"`
-	DeviceBoard                 *string                            `protobuf:"bytes,13,opt,name=deviceBoard" json:"deviceBoard,omitempty"`
-}
-
-func (x *UserAgent) Reset() {
-	*x = UserAgent{}
+	ButtonId       *string                               `protobuf:"bytes,1,opt,name=buttonId" json:"buttonId,omitempty"`
+	ButtonText     *ButtonsMessage_Button_ButtonText     `protobuf:"bytes,2,opt,name=buttonText" json:"buttonText,omitempty"`
+	Type           *ButtonsMessage_Button_Type           `protobuf:"varint,3,opt,name=type,enum=proto.ButtonsMessage_Button_Type" json:"type,omitempty"`
+	NativeFlowInfo *ButtonsMessage_Button_NativeFlowInfo `protobuf:"bytes,4,opt,name=nativeFlowInfo" json:"nativeFlowInfo,omitempty"`
+}
+
+func (x *ButtonsMessage_Button) Reset() {
+	*x = ButtonsMessage_Button{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_binary_proto_def_proto_msgTypes[181]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -18278,13 +18925,13 @@ func (x *UserAgent) Reset() {
 	}
 }
 
-func (x *UserAgent) String() string {
+func (x *ButtonsMessage_Button) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*UserAgent) ProtoMessage() {}
+func (*ButtonsMessage_Button) ProtoMessage() {}
 
-func (x *UserAgent) ProtoReflect() protoreflect.Message {
+func (x *ButtonsMessage_Button) ProtoReflect() protoreflect.Message {
 	mi := &file_binary_proto_def_proto_msgTypes[181]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -18296,134 +18943,119 @@ func (x *UserAgent) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use UserAgent.ProtoReflect.Descriptor instead.
-func (*UserAgent) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{181}
+// Deprecated: Use ButtonsMessage_Button.ProtoReflect.Descriptor instead.
+func (*ButtonsMessage_Button) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{37, 0}
 }
 
-func (x *UserAgent) GetPlatform() UserAgent_UserAgentPlatform {
-	if x != nil && x.Platform != nil {
-		return *x.Platform
+func (x *ButtonsMessage_Button) GetButtonId() string {
+	if x != nil && x.ButtonId != nil {
+		return *x.ButtonId
 	}
-	return UserAgent_ANDROID
+	return ""
 }
 
-func (x *UserAgent) GetAppVersion() *AppVersion {
+func (x *ButtonsMessage_Button) GetButtonText() *ButtonsMessage_Button_ButtonText {
 	if x != nil {
-		return x.AppVersion
+		return x.ButtonText
 	}
 	return nil
 }
 
-func (x *UserAgent) GetMcc() string {
-	if x != nil && x.Mcc != nil {
-		return *x.Mcc
+func (x *ButtonsMessage_Button) GetType() ButtonsMessage_Button_Type {
+	if x != nil && x.Type != nil {
+		return *x.Type
 	}
-	return ""
+	return ButtonsMessage_Button_UNKNOWN
 }
 
-func (x *UserAgent) GetMnc() string {
-	if x != nil && x.Mnc != nil {
-		return *x.Mnc
+func (x *ButtonsMessage_Button) GetNativeFlowInfo() *ButtonsMessage_Button_NativeFlowInfo {
+	if x != nil {
+		return x.NativeFlowInfo
 	}
-	return ""
+	return nil
 }
 
-func (x *UserAgent) GetOsVersion() string {
-	if x != nil && x.OsVersion != nil {
-		return *x.OsVersion
-	}
-	return ""
-}
+type ButtonsMessage_Button_NativeFlowInfo struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *UserAgent) GetManufacturer() string {
-	if x != nil && x.Manufacturer != nil {
-		return *x.Manufacturer
-	}
-	return ""
+	Name       *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	ParamsJson *string `protobuf:"bytes,2,opt,name=paramsJson" json:"paramsJson,omitempty"`
 }
 
-func (x *UserAgent) GetDevice() string {
-	if x != nil && x.Device != nil {
-		return *x.Device
+func (x *ButtonsMessage_Button_NativeFlowInfo) Reset() {
+	*x = ButtonsMessage_Button_NativeFlowInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[182]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return ""
 }
 
-func (x *UserAgent) GetOsBuildNumber() string {
-	if x != nil && x.OsBuildNumber != nil {
-		return *x.OsBuildNumber
-	}
-	return ""
+func (x *ButtonsMessage_Button_NativeFlowInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *UserAgent) GetPhoneId() string {
-	if x != nil && x.PhoneId != nil {
-		return *x.PhoneId
-	}
-	return ""
-}
+func (*ButtonsMessage_Button_NativeFlowInfo) ProtoMessage() {}
 
-func (x *UserAgent) GetReleaseChannel() UserAgent_UserAgentReleaseChannel {
-	if x != nil && x.ReleaseChannel != nil {
-		return *x.ReleaseChannel
+func (x *ButtonsMessage_Button_NativeFlowInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[182]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return UserAgent_RELEASE
+	return mi.MessageOf(x)
 }
 
-func (x *UserAgent) GetLocaleLanguageIso6391() string {
-	if x != nil && x.LocaleLanguageIso6391 != nil {
-		return *x.LocaleLanguageIso6391
-	}
-	return ""
+// Deprecated: Use ButtonsMessage_Button_NativeFlowInfo.ProtoReflect.Descriptor instead.
+func (*ButtonsMessage_Button_NativeFlowInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{37, 0, 0}
 }
 
-func (x *UserAgent) GetLocaleCountryIso31661Alpha2() string {
-	if x != nil && x.LocaleCountryIso31661Alpha2 != nil {
-		return *x.LocaleCountryIso31661Alpha2
+func (x *ButtonsMessage_Button_NativeFlowInfo) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
 	return ""
 }
 
-func (x *UserAgent) GetDeviceBoard() string {
-	if x != nil && x.DeviceBoard != nil {
-		return *x.DeviceBoard
+func (x *ButtonsMessage_Button_NativeFlowInfo) GetParamsJson() string {
+	if x != nil && x.ParamsJson != nil {
+		return *x.ParamsJson
 	}
 	return ""
 }
 
-type DevicePairingRegistrationData struct {
+type ButtonsMessage_Button_ButtonText struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	ERegid      []byte `protobuf:"bytes,1,opt,name=eRegid" json:"eRegid,omitempty"`
-	EKeytype    []byte `protobuf:"bytes,2,opt,name=eKeytype" json:"eKeytype,omitempty"`
-	EIdent      []byte `protobuf:"bytes,3,opt,name=eIdent" json:"eIdent,omitempty"`
-	ESkeyId     []byte `protobuf:"bytes,4,opt,name=eSkeyId" json:"eSkeyId,omitempty"`
-	ESkeyVal    []byte `protobuf:"bytes,5,opt,name=eSkeyVal" json:"eSkeyVal,omitempty"`
-	ESkeySig    []byte `protobuf:"bytes,6,opt,name=eSkeySig" json:"eSkeySig,omitempty"`
-	BuildHash   []byte `protobuf:"bytes,7,opt,name=buildHash" json:"buildHash,omitempty"`
-	DeviceProps []byte `protobuf:"bytes,8,opt,name=deviceProps" json:"deviceProps,omitempty"`
+	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
 }
 
-func (x *DevicePairingRegistrationData) Reset() {
-	*x = DevicePairingRegistrationData{}
+func (x *ButtonsMessage_Button_ButtonText) Reset() {
+	*x = ButtonsMessage_Button_ButtonText{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[182]
+		mi := &file_binary_proto_def_proto_msgTypes[183]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *DevicePairingRegistrationData) String() string {
+func (x *ButtonsMessage_Button_ButtonText) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DevicePairingRegistrationData) ProtoMessage() {}
+func (*ButtonsMessage_Button_ButtonText) ProtoMessage() {}
 
-func (x *DevicePairingRegistrationData) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[182]
+func (x *ButtonsMessage_Button_ButtonText) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[183]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -18434,93 +19066,99 @@ func (x *DevicePairingRegistrationData) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DevicePairingRegistrationData.ProtoReflect.Descriptor instead.
-func (*DevicePairingRegistrationData) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{182}
+// Deprecated: Use ButtonsMessage_Button_ButtonText.ProtoReflect.Descriptor instead.
+func (*ButtonsMessage_Button_ButtonText) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{37, 0, 1}
 }
 
-func (x *DevicePairingRegistrationData) GetERegid() []byte {
-	if x != nil {
-		return x.ERegid
+func (x *ButtonsMessage_Button_ButtonText) GetDisplayText() string {
+	if x != nil && x.DisplayText != nil {
+		return *x.DisplayText
 	}
-	return nil
+	return ""
 }
 
-func (x *DevicePairingRegistrationData) GetEKeytype() []byte {
-	if x != nil {
-		return x.EKeytype
-	}
-	return nil
+type HydratedTemplateButton_HydratedURLButton struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
+	Url         *string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
 }
 
-func (x *DevicePairingRegistrationData) GetEIdent() []byte {
-	if x != nil {
-		return x.EIdent
+func (x *HydratedTemplateButton_HydratedURLButton) Reset() {
+	*x = HydratedTemplateButton_HydratedURLButton{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[184]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *DevicePairingRegistrationData) GetESkeyId() []byte {
-	if x != nil {
-		return x.ESkeyId
-	}
-	return nil
+func (x *HydratedTemplateButton_HydratedURLButton) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *DevicePairingRegistrationData) GetESkeyVal() []byte {
-	if x != nil {
-		return x.ESkeyVal
+func (*HydratedTemplateButton_HydratedURLButton) ProtoMessage() {}
+
+func (x *HydratedTemplateButton_HydratedURLButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[184]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *DevicePairingRegistrationData) GetESkeySig() []byte {
-	if x != nil {
-		return x.ESkeySig
-	}
-	return nil
+// Deprecated: Use HydratedTemplateButton_HydratedURLButton.ProtoReflect.Descriptor instead.
+func (*HydratedTemplateButton_HydratedURLButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{48, 0}
 }
 
-func (x *DevicePairingRegistrationData) GetBuildHash() []byte {
-	if x != nil {
-		return x.BuildHash
+func (x *HydratedTemplateButton_HydratedURLButton) GetDisplayText() string {
+	if x != nil && x.DisplayText != nil {
+		return *x.DisplayText
 	}
-	return nil
+	return ""
 }
 
-func (x *DevicePairingRegistrationData) GetDeviceProps() []byte {
-	if x != nil {
-		return x.DeviceProps
+func (x *HydratedTemplateButton_HydratedURLButton) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
-	return nil
+	return ""
 }
 
-type DNSSource struct {
+type HydratedTemplateButton_HydratedQuickReplyButton struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	DnsMethod *DNSSource_DNSSourceDNSResolutionMethod `protobuf:"varint,15,opt,name=dnsMethod,enum=proto.DNSSource_DNSSourceDNSResolutionMethod" json:"dnsMethod,omitempty"`
-	AppCached *bool                                   `protobuf:"varint,16,opt,name=appCached" json:"appCached,omitempty"`
+	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
+	Id          *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
 }
 
-func (x *DNSSource) Reset() {
-	*x = DNSSource{}
+func (x *HydratedTemplateButton_HydratedQuickReplyButton) Reset() {
+	*x = HydratedTemplateButton_HydratedQuickReplyButton{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[183]
+		mi := &file_binary_proto_def_proto_msgTypes[185]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *DNSSource) String() string {
+func (x *HydratedTemplateButton_HydratedQuickReplyButton) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*DNSSource) ProtoMessage() {}
+func (*HydratedTemplateButton_HydratedQuickReplyButton) ProtoMessage() {}
 
-func (x *DNSSource) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[183]
+func (x *HydratedTemplateButton_HydratedQuickReplyButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[185]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -18531,53 +19169,51 @@ func (x *DNSSource) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use DNSSource.ProtoReflect.Descriptor instead.
-func (*DNSSource) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{183}
+// Deprecated: Use HydratedTemplateButton_HydratedQuickReplyButton.ProtoReflect.Descriptor instead.
+func (*HydratedTemplateButton_HydratedQuickReplyButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{48, 1}
 }
 
-func (x *DNSSource) GetDnsMethod() DNSSource_DNSSourceDNSResolutionMethod {
-	if x != nil && x.DnsMethod != nil {
-		return *x.DnsMethod
+func (x *HydratedTemplateButton_HydratedQuickReplyButton) GetDisplayText() string {
+	if x != nil && x.DisplayText != nil {
+		return *x.DisplayText
 	}
-	return DNSSource_SYSTEM
+	return ""
 }
 
-func (x *DNSSource) GetAppCached() bool {
-	if x != nil && x.AppCached != nil {
-		return *x.AppCached
+func (x *HydratedTemplateButton_HydratedQuickReplyButton) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return false
+	return ""
 }
 
-type WebNotificationsInfo struct {
+type HydratedTemplateButton_HydratedCallButton struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Timestamp          *uint64           `protobuf:"varint,2,opt,name=timestamp" json:"timestamp,omitempty"`
-	UnreadChats        *uint32           `protobuf:"varint,3,opt,name=unreadChats" json:"unreadChats,omitempty"`
-	NotifyMessageCount *uint32           `protobuf:"varint,4,opt,name=notifyMessageCount" json:"notifyMessageCount,omitempty"`
-	NotifyMessages     []*WebMessageInfo `protobuf:"bytes,5,rep,name=notifyMessages" json:"notifyMessages,omitempty"`
+	DisplayText *string `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
+	PhoneNumber *string `protobuf:"bytes,2,opt,name=phoneNumber" json:"phoneNumber,omitempty"`
 }
 
-func (x *WebNotificationsInfo) Reset() {
-	*x = WebNotificationsInfo{}
+func (x *HydratedTemplateButton_HydratedCallButton) Reset() {
+	*x = HydratedTemplateButton_HydratedCallButton{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[184]
+		mi := &file_binary_proto_def_proto_msgTypes[186]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *WebNotificationsInfo) String() string {
+func (x *HydratedTemplateButton_HydratedCallButton) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*WebNotificationsInfo) ProtoMessage() {}
+func (*HydratedTemplateButton_HydratedCallButton) ProtoMessage() {}
 
-func (x *WebNotificationsInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[184]
+func (x *HydratedTemplateButton_HydratedCallButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[186]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -18588,104 +19224,61 @@ func (x *WebNotificationsInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use WebNotificationsInfo.ProtoReflect.Descriptor instead.
-func (*WebNotificationsInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{184}
-}
-
-func (x *WebNotificationsInfo) GetTimestamp() uint64 {
-	if x != nil && x.Timestamp != nil {
-		return *x.Timestamp
-	}
-	return 0
-}
-
-func (x *WebNotificationsInfo) GetUnreadChats() uint32 {
-	if x != nil && x.UnreadChats != nil {
-		return *x.UnreadChats
-	}
-	return 0
+// Deprecated: Use HydratedTemplateButton_HydratedCallButton.ProtoReflect.Descriptor instead.
+func (*HydratedTemplateButton_HydratedCallButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{48, 2}
 }
 
-func (x *WebNotificationsInfo) GetNotifyMessageCount() uint32 {
-	if x != nil && x.NotifyMessageCount != nil {
-		return *x.NotifyMessageCount
+func (x *HydratedTemplateButton_HydratedCallButton) GetDisplayText() string {
+	if x != nil && x.DisplayText != nil {
+		return *x.DisplayText
 	}
-	return 0
+	return ""
 }
 
-func (x *WebNotificationsInfo) GetNotifyMessages() []*WebMessageInfo {
-	if x != nil {
-		return x.NotifyMessages
+func (x *HydratedTemplateButton_HydratedCallButton) GetPhoneNumber() string {
+	if x != nil && x.PhoneNumber != nil {
+		return *x.PhoneNumber
 	}
-	return nil
+	return ""
 }
 
-type WebMessageInfo struct {
+type ContextInfo_ExternalAdReplyInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key                     *MessageKey                                    `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
-	Message                 *Message                                       `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
-	MessageTimestamp        *uint64                                        `protobuf:"varint,3,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"`
-	Status                  *WebMessageInfo_WebMessageInfoStatus           `protobuf:"varint,4,opt,name=status,enum=proto.WebMessageInfo_WebMessageInfoStatus" json:"status,omitempty"`
-	Participant             *string                                        `protobuf:"bytes,5,opt,name=participant" json:"participant,omitempty"`
-	MessageC2STimestamp     *uint64                                        `protobuf:"varint,6,opt,name=messageC2STimestamp" json:"messageC2STimestamp,omitempty"`
-	Ignore                  *bool                                          `protobuf:"varint,16,opt,name=ignore" json:"ignore,omitempty"`
-	Starred                 *bool                                          `protobuf:"varint,17,opt,name=starred" json:"starred,omitempty"`
-	Broadcast               *bool                                          `protobuf:"varint,18,opt,name=broadcast" json:"broadcast,omitempty"`
-	PushName                *string                                        `protobuf:"bytes,19,opt,name=pushName" json:"pushName,omitempty"`
-	MediaCiphertextSha256   []byte                                         `protobuf:"bytes,20,opt,name=mediaCiphertextSha256" json:"mediaCiphertextSha256,omitempty"`
-	Multicast               *bool                                          `protobuf:"varint,21,opt,name=multicast" json:"multicast,omitempty"`
-	UrlText                 *bool                                          `protobuf:"varint,22,opt,name=urlText" json:"urlText,omitempty"`
-	UrlNumber               *bool                                          `protobuf:"varint,23,opt,name=urlNumber" json:"urlNumber,omitempty"`
-	MessageStubType         *WebMessageInfo_WebMessageInfoStubType         `protobuf:"varint,24,opt,name=messageStubType,enum=proto.WebMessageInfo_WebMessageInfoStubType" json:"messageStubType,omitempty"`
-	ClearMedia              *bool                                          `protobuf:"varint,25,opt,name=clearMedia" json:"clearMedia,omitempty"`
-	MessageStubParameters   []string                                       `protobuf:"bytes,26,rep,name=messageStubParameters" json:"messageStubParameters,omitempty"`
-	Duration                *uint32                                        `protobuf:"varint,27,opt,name=duration" json:"duration,omitempty"`
-	Labels                  []string                                       `protobuf:"bytes,28,rep,name=labels" json:"labels,omitempty"`
-	PaymentInfo             *PaymentInfo                                   `protobuf:"bytes,29,opt,name=paymentInfo" json:"paymentInfo,omitempty"`
-	FinalLiveLocation       *LiveLocationMessage                           `protobuf:"bytes,30,opt,name=finalLiveLocation" json:"finalLiveLocation,omitempty"`
-	QuotedPaymentInfo       *PaymentInfo                                   `protobuf:"bytes,31,opt,name=quotedPaymentInfo" json:"quotedPaymentInfo,omitempty"`
-	EphemeralStartTimestamp *uint64                                        `protobuf:"varint,32,opt,name=ephemeralStartTimestamp" json:"ephemeralStartTimestamp,omitempty"`
-	EphemeralDuration       *uint32                                        `protobuf:"varint,33,opt,name=ephemeralDuration" json:"ephemeralDuration,omitempty"`
-	EphemeralOffToOn        *bool                                          `protobuf:"varint,34,opt,name=ephemeralOffToOn" json:"ephemeralOffToOn,omitempty"`
-	EphemeralOutOfSync      *bool                                          `protobuf:"varint,35,opt,name=ephemeralOutOfSync" json:"ephemeralOutOfSync,omitempty"`
-	BizPrivacyStatus        *WebMessageInfo_WebMessageInfoBizPrivacyStatus `protobuf:"varint,36,opt,name=bizPrivacyStatus,enum=proto.WebMessageInfo_WebMessageInfoBizPrivacyStatus" json:"bizPrivacyStatus,omitempty"`
-	VerifiedBizName         *string                                        `protobuf:"bytes,37,opt,name=verifiedBizName" json:"verifiedBizName,omitempty"`
-	MediaData               *MediaData                                     `protobuf:"bytes,38,opt,name=mediaData" json:"mediaData,omitempty"`
-	PhotoChange             *PhotoChange                                   `protobuf:"bytes,39,opt,name=photoChange" json:"photoChange,omitempty"`
-	UserReceipt             []*UserReceipt                                 `protobuf:"bytes,40,rep,name=userReceipt" json:"userReceipt,omitempty"`
-	Reactions               []*Reaction                                    `protobuf:"bytes,41,rep,name=reactions" json:"reactions,omitempty"`
-	QuotedStickerData       *MediaData                                     `protobuf:"bytes,42,opt,name=quotedStickerData" json:"quotedStickerData,omitempty"`
-	FutureproofData         []byte                                         `protobuf:"bytes,43,opt,name=futureproofData" json:"futureproofData,omitempty"`
-	StatusPsa               *StatusPSA                                     `protobuf:"bytes,44,opt,name=statusPsa" json:"statusPsa,omitempty"`
-	PollUpdates             []*PollUpdate                                  `protobuf:"bytes,45,rep,name=pollUpdates" json:"pollUpdates,omitempty"`
-	PollAdditionalMetadata  *PollAdditionalMetadata                        `protobuf:"bytes,46,opt,name=pollAdditionalMetadata" json:"pollAdditionalMetadata,omitempty"`
-	AgentId                 *string                                        `protobuf:"bytes,47,opt,name=agentId" json:"agentId,omitempty"`
-	StatusAlreadyViewed     *bool                                          `protobuf:"varint,48,opt,name=statusAlreadyViewed" json:"statusAlreadyViewed,omitempty"`
-	MessageSecret           []byte                                         `protobuf:"bytes,49,opt,name=messageSecret" json:"messageSecret,omitempty"`
-	KeepInChat              *KeepInChat                                    `protobuf:"bytes,50,opt,name=keepInChat" json:"keepInChat,omitempty"`
-}
-
-func (x *WebMessageInfo) Reset() {
-	*x = WebMessageInfo{}
+	Title                 *string                                    `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"`
+	Body                  *string                                    `protobuf:"bytes,2,opt,name=body" json:"body,omitempty"`
+	MediaType             *ContextInfo_ExternalAdReplyInfo_MediaType `protobuf:"varint,3,opt,name=mediaType,enum=proto.ContextInfo_ExternalAdReplyInfo_MediaType" json:"mediaType,omitempty"`
+	ThumbnailUrl          *string                                    `protobuf:"bytes,4,opt,name=thumbnailUrl" json:"thumbnailUrl,omitempty"`
+	MediaUrl              *string                                    `protobuf:"bytes,5,opt,name=mediaUrl" json:"mediaUrl,omitempty"`
+	Thumbnail             []byte                                     `protobuf:"bytes,6,opt,name=thumbnail" json:"thumbnail,omitempty"`
+	SourceType            *string                                    `protobuf:"bytes,7,opt,name=sourceType" json:"sourceType,omitempty"`
+	SourceId              *string                                    `protobuf:"bytes,8,opt,name=sourceId" json:"sourceId,omitempty"`
+	SourceUrl             *string                                    `protobuf:"bytes,9,opt,name=sourceUrl" json:"sourceUrl,omitempty"`
+	ContainsAutoReply     *bool                                      `protobuf:"varint,10,opt,name=containsAutoReply" json:"containsAutoReply,omitempty"`
+	RenderLargerThumbnail *bool                                      `protobuf:"varint,11,opt,name=renderLargerThumbnail" json:"renderLargerThumbnail,omitempty"`
+	ShowAdAttribution     *bool                                      `protobuf:"varint,12,opt,name=showAdAttribution" json:"showAdAttribution,omitempty"`
+}
+
+func (x *ContextInfo_ExternalAdReplyInfo) Reset() {
+	*x = ContextInfo_ExternalAdReplyInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[185]
+		mi := &file_binary_proto_def_proto_msgTypes[187]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *WebMessageInfo) String() string {
+func (x *ContextInfo_ExternalAdReplyInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*WebMessageInfo) ProtoMessage() {}
+func (*ContextInfo_ExternalAdReplyInfo) ProtoMessage() {}
 
-func (x *WebMessageInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[185]
+func (x *ContextInfo_ExternalAdReplyInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[187]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -18696,367 +19289,445 @@ func (x *WebMessageInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use WebMessageInfo.ProtoReflect.Descriptor instead.
-func (*WebMessageInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{185}
+// Deprecated: Use ContextInfo_ExternalAdReplyInfo.ProtoReflect.Descriptor instead.
+func (*ContextInfo_ExternalAdReplyInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{51, 0}
 }
 
-func (x *WebMessageInfo) GetKey() *MessageKey {
-	if x != nil {
-		return x.Key
+func (x *ContextInfo_ExternalAdReplyInfo) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
-	return nil
+	return ""
 }
 
-func (x *WebMessageInfo) GetMessage() *Message {
+func (x *ContextInfo_ExternalAdReplyInfo) GetBody() string {
+	if x != nil && x.Body != nil {
+		return *x.Body
+	}
+	return ""
+}
+
+func (x *ContextInfo_ExternalAdReplyInfo) GetMediaType() ContextInfo_ExternalAdReplyInfo_MediaType {
+	if x != nil && x.MediaType != nil {
+		return *x.MediaType
+	}
+	return ContextInfo_ExternalAdReplyInfo_NONE
+}
+
+func (x *ContextInfo_ExternalAdReplyInfo) GetThumbnailUrl() string {
+	if x != nil && x.ThumbnailUrl != nil {
+		return *x.ThumbnailUrl
+	}
+	return ""
+}
+
+func (x *ContextInfo_ExternalAdReplyInfo) GetMediaUrl() string {
+	if x != nil && x.MediaUrl != nil {
+		return *x.MediaUrl
+	}
+	return ""
+}
+
+func (x *ContextInfo_ExternalAdReplyInfo) GetThumbnail() []byte {
 	if x != nil {
-		return x.Message
+		return x.Thumbnail
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetMessageTimestamp() uint64 {
-	if x != nil && x.MessageTimestamp != nil {
-		return *x.MessageTimestamp
+func (x *ContextInfo_ExternalAdReplyInfo) GetSourceType() string {
+	if x != nil && x.SourceType != nil {
+		return *x.SourceType
 	}
-	return 0
+	return ""
 }
 
-func (x *WebMessageInfo) GetStatus() WebMessageInfo_WebMessageInfoStatus {
-	if x != nil && x.Status != nil {
-		return *x.Status
+func (x *ContextInfo_ExternalAdReplyInfo) GetSourceId() string {
+	if x != nil && x.SourceId != nil {
+		return *x.SourceId
 	}
-	return WebMessageInfo_ERROR
+	return ""
 }
 
-func (x *WebMessageInfo) GetParticipant() string {
-	if x != nil && x.Participant != nil {
-		return *x.Participant
+func (x *ContextInfo_ExternalAdReplyInfo) GetSourceUrl() string {
+	if x != nil && x.SourceUrl != nil {
+		return *x.SourceUrl
 	}
 	return ""
 }
 
-func (x *WebMessageInfo) GetMessageC2STimestamp() uint64 {
-	if x != nil && x.MessageC2STimestamp != nil {
-		return *x.MessageC2STimestamp
+func (x *ContextInfo_ExternalAdReplyInfo) GetContainsAutoReply() bool {
+	if x != nil && x.ContainsAutoReply != nil {
+		return *x.ContainsAutoReply
 	}
-	return 0
+	return false
 }
 
-func (x *WebMessageInfo) GetIgnore() bool {
-	if x != nil && x.Ignore != nil {
-		return *x.Ignore
+func (x *ContextInfo_ExternalAdReplyInfo) GetRenderLargerThumbnail() bool {
+	if x != nil && x.RenderLargerThumbnail != nil {
+		return *x.RenderLargerThumbnail
 	}
 	return false
 }
 
-func (x *WebMessageInfo) GetStarred() bool {
-	if x != nil && x.Starred != nil {
-		return *x.Starred
+func (x *ContextInfo_ExternalAdReplyInfo) GetShowAdAttribution() bool {
+	if x != nil && x.ShowAdAttribution != nil {
+		return *x.ShowAdAttribution
 	}
 	return false
 }
 
-func (x *WebMessageInfo) GetBroadcast() bool {
-	if x != nil && x.Broadcast != nil {
-		return *x.Broadcast
+type ContextInfo_AdReplyInfo struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	AdvertiserName *string                            `protobuf:"bytes,1,opt,name=advertiserName" json:"advertiserName,omitempty"`
+	MediaType      *ContextInfo_AdReplyInfo_MediaType `protobuf:"varint,2,opt,name=mediaType,enum=proto.ContextInfo_AdReplyInfo_MediaType" json:"mediaType,omitempty"`
+	JpegThumbnail  []byte                             `protobuf:"bytes,16,opt,name=jpegThumbnail" json:"jpegThumbnail,omitempty"`
+	Caption        *string                            `protobuf:"bytes,17,opt,name=caption" json:"caption,omitempty"`
+}
+
+func (x *ContextInfo_AdReplyInfo) Reset() {
+	*x = ContextInfo_AdReplyInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[188]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return false
 }
 
-func (x *WebMessageInfo) GetPushName() string {
-	if x != nil && x.PushName != nil {
-		return *x.PushName
+func (x *ContextInfo_AdReplyInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ContextInfo_AdReplyInfo) ProtoMessage() {}
+
+func (x *ContextInfo_AdReplyInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[188]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ContextInfo_AdReplyInfo.ProtoReflect.Descriptor instead.
+func (*ContextInfo_AdReplyInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{51, 1}
+}
+
+func (x *ContextInfo_AdReplyInfo) GetAdvertiserName() string {
+	if x != nil && x.AdvertiserName != nil {
+		return *x.AdvertiserName
 	}
 	return ""
 }
 
-func (x *WebMessageInfo) GetMediaCiphertextSha256() []byte {
+func (x *ContextInfo_AdReplyInfo) GetMediaType() ContextInfo_AdReplyInfo_MediaType {
+	if x != nil && x.MediaType != nil {
+		return *x.MediaType
+	}
+	return ContextInfo_AdReplyInfo_NONE
+}
+
+func (x *ContextInfo_AdReplyInfo) GetJpegThumbnail() []byte {
 	if x != nil {
-		return x.MediaCiphertextSha256
+		return x.JpegThumbnail
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetMulticast() bool {
-	if x != nil && x.Multicast != nil {
-		return *x.Multicast
+func (x *ContextInfo_AdReplyInfo) GetCaption() string {
+	if x != nil && x.Caption != nil {
+		return *x.Caption
 	}
-	return false
+	return ""
 }
 
-func (x *WebMessageInfo) GetUrlText() bool {
-	if x != nil && x.UrlText != nil {
-		return *x.UrlText
+type TemplateButton_URLButton struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
+	Url         *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
+}
+
+func (x *TemplateButton_URLButton) Reset() {
+	*x = TemplateButton_URLButton{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[189]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return false
 }
 
-func (x *WebMessageInfo) GetUrlNumber() bool {
-	if x != nil && x.UrlNumber != nil {
-		return *x.UrlNumber
+func (x *TemplateButton_URLButton) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TemplateButton_URLButton) ProtoMessage() {}
+
+func (x *TemplateButton_URLButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[189]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return false
+	return mi.MessageOf(x)
 }
 
-func (x *WebMessageInfo) GetMessageStubType() WebMessageInfo_WebMessageInfoStubType {
-	if x != nil && x.MessageStubType != nil {
-		return *x.MessageStubType
-	}
-	return WebMessageInfo_UNKNOWN
+// Deprecated: Use TemplateButton_URLButton.ProtoReflect.Descriptor instead.
+func (*TemplateButton_URLButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{53, 0}
 }
 
-func (x *WebMessageInfo) GetClearMedia() bool {
-	if x != nil && x.ClearMedia != nil {
-		return *x.ClearMedia
+func (x *TemplateButton_URLButton) GetDisplayText() *HighlyStructuredMessage {
+	if x != nil {
+		return x.DisplayText
 	}
-	return false
+	return nil
 }
 
-func (x *WebMessageInfo) GetMessageStubParameters() []string {
+func (x *TemplateButton_URLButton) GetUrl() *HighlyStructuredMessage {
 	if x != nil {
-		return x.MessageStubParameters
+		return x.Url
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetDuration() uint32 {
-	if x != nil && x.Duration != nil {
-		return *x.Duration
-	}
-	return 0
+type TemplateButton_QuickReplyButton struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
+	Id          *string                  `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
 }
 
-func (x *WebMessageInfo) GetLabels() []string {
-	if x != nil {
-		return x.Labels
+func (x *TemplateButton_QuickReplyButton) Reset() {
+	*x = TemplateButton_QuickReplyButton{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[190]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *WebMessageInfo) GetPaymentInfo() *PaymentInfo {
-	if x != nil {
-		return x.PaymentInfo
-	}
-	return nil
+func (x *TemplateButton_QuickReplyButton) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *WebMessageInfo) GetFinalLiveLocation() *LiveLocationMessage {
-	if x != nil {
-		return x.FinalLiveLocation
+func (*TemplateButton_QuickReplyButton) ProtoMessage() {}
+
+func (x *TemplateButton_QuickReplyButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[190]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *WebMessageInfo) GetQuotedPaymentInfo() *PaymentInfo {
+// Deprecated: Use TemplateButton_QuickReplyButton.ProtoReflect.Descriptor instead.
+func (*TemplateButton_QuickReplyButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{53, 1}
+}
+
+func (x *TemplateButton_QuickReplyButton) GetDisplayText() *HighlyStructuredMessage {
 	if x != nil {
-		return x.QuotedPaymentInfo
+		return x.DisplayText
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetEphemeralStartTimestamp() uint64 {
-	if x != nil && x.EphemeralStartTimestamp != nil {
-		return *x.EphemeralStartTimestamp
+func (x *TemplateButton_QuickReplyButton) GetId() string {
+	if x != nil && x.Id != nil {
+		return *x.Id
 	}
-	return 0
+	return ""
 }
 
-func (x *WebMessageInfo) GetEphemeralDuration() uint32 {
-	if x != nil && x.EphemeralDuration != nil {
-		return *x.EphemeralDuration
-	}
-	return 0
-}
+type TemplateButton_CallButton struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 
-func (x *WebMessageInfo) GetEphemeralOffToOn() bool {
-	if x != nil && x.EphemeralOffToOn != nil {
-		return *x.EphemeralOffToOn
-	}
-	return false
+	DisplayText *HighlyStructuredMessage `protobuf:"bytes,1,opt,name=displayText" json:"displayText,omitempty"`
+	PhoneNumber *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=phoneNumber" json:"phoneNumber,omitempty"`
 }
 
-func (x *WebMessageInfo) GetEphemeralOutOfSync() bool {
-	if x != nil && x.EphemeralOutOfSync != nil {
-		return *x.EphemeralOutOfSync
+func (x *TemplateButton_CallButton) Reset() {
+	*x = TemplateButton_CallButton{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[191]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return false
 }
 
-func (x *WebMessageInfo) GetBizPrivacyStatus() WebMessageInfo_WebMessageInfoBizPrivacyStatus {
-	if x != nil && x.BizPrivacyStatus != nil {
-		return *x.BizPrivacyStatus
-	}
-	return WebMessageInfo_E2EE
+func (x *TemplateButton_CallButton) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *WebMessageInfo) GetVerifiedBizName() string {
-	if x != nil && x.VerifiedBizName != nil {
-		return *x.VerifiedBizName
+func (*TemplateButton_CallButton) ProtoMessage() {}
+
+func (x *TemplateButton_CallButton) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[191]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return ""
+	return mi.MessageOf(x)
 }
 
-func (x *WebMessageInfo) GetMediaData() *MediaData {
-	if x != nil {
-		return x.MediaData
-	}
-	return nil
+// Deprecated: Use TemplateButton_CallButton.ProtoReflect.Descriptor instead.
+func (*TemplateButton_CallButton) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{53, 2}
 }
 
-func (x *WebMessageInfo) GetPhotoChange() *PhotoChange {
+func (x *TemplateButton_CallButton) GetDisplayText() *HighlyStructuredMessage {
 	if x != nil {
-		return x.PhotoChange
+		return x.DisplayText
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetUserReceipt() []*UserReceipt {
+func (x *TemplateButton_CallButton) GetPhoneNumber() *HighlyStructuredMessage {
 	if x != nil {
-		return x.UserReceipt
+		return x.PhoneNumber
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetReactions() []*Reaction {
-	if x != nil {
-		return x.Reactions
-	}
-	return nil
+type PaymentBackground_MediaData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	MediaKey          []byte  `protobuf:"bytes,1,opt,name=mediaKey" json:"mediaKey,omitempty"`
+	MediaKeyTimestamp *int64  `protobuf:"varint,2,opt,name=mediaKeyTimestamp" json:"mediaKeyTimestamp,omitempty"`
+	FileSha256        []byte  `protobuf:"bytes,3,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	FileEncSha256     []byte  `protobuf:"bytes,4,opt,name=fileEncSha256" json:"fileEncSha256,omitempty"`
+	DirectPath        *string `protobuf:"bytes,5,opt,name=directPath" json:"directPath,omitempty"`
 }
 
-func (x *WebMessageInfo) GetQuotedStickerData() *MediaData {
-	if x != nil {
-		return x.QuotedStickerData
+func (x *PaymentBackground_MediaData) Reset() {
+	*x = PaymentBackground_MediaData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[192]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-func (x *WebMessageInfo) GetFutureproofData() []byte {
-	if x != nil {
-		return x.FutureproofData
-	}
-	return nil
+func (x *PaymentBackground_MediaData) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *WebMessageInfo) GetStatusPsa() *StatusPSA {
-	if x != nil {
-		return x.StatusPsa
+func (*PaymentBackground_MediaData) ProtoMessage() {}
+
+func (x *PaymentBackground_MediaData) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[192]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return nil
+	return mi.MessageOf(x)
 }
 
-func (x *WebMessageInfo) GetPollUpdates() []*PollUpdate {
-	if x != nil {
-		return x.PollUpdates
-	}
-	return nil
+// Deprecated: Use PaymentBackground_MediaData.ProtoReflect.Descriptor instead.
+func (*PaymentBackground_MediaData) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{55, 0}
 }
 
-func (x *WebMessageInfo) GetPollAdditionalMetadata() *PollAdditionalMetadata {
+func (x *PaymentBackground_MediaData) GetMediaKey() []byte {
 	if x != nil {
-		return x.PollAdditionalMetadata
+		return x.MediaKey
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetAgentId() string {
-	if x != nil && x.AgentId != nil {
-		return *x.AgentId
+func (x *PaymentBackground_MediaData) GetMediaKeyTimestamp() int64 {
+	if x != nil && x.MediaKeyTimestamp != nil {
+		return *x.MediaKeyTimestamp
 	}
-	return ""
+	return 0
 }
 
-func (x *WebMessageInfo) GetStatusAlreadyViewed() bool {
-	if x != nil && x.StatusAlreadyViewed != nil {
-		return *x.StatusAlreadyViewed
+func (x *PaymentBackground_MediaData) GetFileSha256() []byte {
+	if x != nil {
+		return x.FileSha256
 	}
-	return false
+	return nil
 }
 
-func (x *WebMessageInfo) GetMessageSecret() []byte {
+func (x *PaymentBackground_MediaData) GetFileEncSha256() []byte {
 	if x != nil {
-		return x.MessageSecret
+		return x.FileEncSha256
 	}
 	return nil
 }
 
-func (x *WebMessageInfo) GetKeepInChat() *KeepInChat {
-	if x != nil {
-		return x.KeepInChat
+func (x *PaymentBackground_MediaData) GetDirectPath() string {
+	if x != nil && x.DirectPath != nil {
+		return *x.DirectPath
 	}
-	return nil
+	return ""
 }
 
-type WebFeatures struct {
+type TemplateMessage_HydratedFourRowTemplate struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	LabelsDisplay                *WebFeatures_WebFeaturesFlag `protobuf:"varint,1,opt,name=labelsDisplay,enum=proto.WebFeatures_WebFeaturesFlag" json:"labelsDisplay,omitempty"`
-	VoipIndividualOutgoing       *WebFeatures_WebFeaturesFlag `protobuf:"varint,2,opt,name=voipIndividualOutgoing,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipIndividualOutgoing,omitempty"`
-	GroupsV3                     *WebFeatures_WebFeaturesFlag `protobuf:"varint,3,opt,name=groupsV3,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupsV3,omitempty"`
-	GroupsV3Create               *WebFeatures_WebFeaturesFlag `protobuf:"varint,4,opt,name=groupsV3Create,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupsV3Create,omitempty"`
-	ChangeNumberV2               *WebFeatures_WebFeaturesFlag `protobuf:"varint,5,opt,name=changeNumberV2,enum=proto.WebFeatures_WebFeaturesFlag" json:"changeNumberV2,omitempty"`
-	QueryStatusV3Thumbnail       *WebFeatures_WebFeaturesFlag `protobuf:"varint,6,opt,name=queryStatusV3Thumbnail,enum=proto.WebFeatures_WebFeaturesFlag" json:"queryStatusV3Thumbnail,omitempty"`
-	LiveLocations                *WebFeatures_WebFeaturesFlag `protobuf:"varint,7,opt,name=liveLocations,enum=proto.WebFeatures_WebFeaturesFlag" json:"liveLocations,omitempty"`
-	QueryVname                   *WebFeatures_WebFeaturesFlag `protobuf:"varint,8,opt,name=queryVname,enum=proto.WebFeatures_WebFeaturesFlag" json:"queryVname,omitempty"`
-	VoipIndividualIncoming       *WebFeatures_WebFeaturesFlag `protobuf:"varint,9,opt,name=voipIndividualIncoming,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipIndividualIncoming,omitempty"`
-	QuickRepliesQuery            *WebFeatures_WebFeaturesFlag `protobuf:"varint,10,opt,name=quickRepliesQuery,enum=proto.WebFeatures_WebFeaturesFlag" json:"quickRepliesQuery,omitempty"`
-	Payments                     *WebFeatures_WebFeaturesFlag `protobuf:"varint,11,opt,name=payments,enum=proto.WebFeatures_WebFeaturesFlag" json:"payments,omitempty"`
-	StickerPackQuery             *WebFeatures_WebFeaturesFlag `protobuf:"varint,12,opt,name=stickerPackQuery,enum=proto.WebFeatures_WebFeaturesFlag" json:"stickerPackQuery,omitempty"`
-	LiveLocationsFinal           *WebFeatures_WebFeaturesFlag `protobuf:"varint,13,opt,name=liveLocationsFinal,enum=proto.WebFeatures_WebFeaturesFlag" json:"liveLocationsFinal,omitempty"`
-	LabelsEdit                   *WebFeatures_WebFeaturesFlag `protobuf:"varint,14,opt,name=labelsEdit,enum=proto.WebFeatures_WebFeaturesFlag" json:"labelsEdit,omitempty"`
-	MediaUpload                  *WebFeatures_WebFeaturesFlag `protobuf:"varint,15,opt,name=mediaUpload,enum=proto.WebFeatures_WebFeaturesFlag" json:"mediaUpload,omitempty"`
-	MediaUploadRichQuickReplies  *WebFeatures_WebFeaturesFlag `protobuf:"varint,18,opt,name=mediaUploadRichQuickReplies,enum=proto.WebFeatures_WebFeaturesFlag" json:"mediaUploadRichQuickReplies,omitempty"`
-	VnameV2                      *WebFeatures_WebFeaturesFlag `protobuf:"varint,19,opt,name=vnameV2,enum=proto.WebFeatures_WebFeaturesFlag" json:"vnameV2,omitempty"`
-	VideoPlaybackUrl             *WebFeatures_WebFeaturesFlag `protobuf:"varint,20,opt,name=videoPlaybackUrl,enum=proto.WebFeatures_WebFeaturesFlag" json:"videoPlaybackUrl,omitempty"`
-	StatusRanking                *WebFeatures_WebFeaturesFlag `protobuf:"varint,21,opt,name=statusRanking,enum=proto.WebFeatures_WebFeaturesFlag" json:"statusRanking,omitempty"`
-	VoipIndividualVideo          *WebFeatures_WebFeaturesFlag `protobuf:"varint,22,opt,name=voipIndividualVideo,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipIndividualVideo,omitempty"`
-	ThirdPartyStickers           *WebFeatures_WebFeaturesFlag `protobuf:"varint,23,opt,name=thirdPartyStickers,enum=proto.WebFeatures_WebFeaturesFlag" json:"thirdPartyStickers,omitempty"`
-	FrequentlyForwardedSetting   *WebFeatures_WebFeaturesFlag `protobuf:"varint,24,opt,name=frequentlyForwardedSetting,enum=proto.WebFeatures_WebFeaturesFlag" json:"frequentlyForwardedSetting,omitempty"`
-	GroupsV4JoinPermission       *WebFeatures_WebFeaturesFlag `protobuf:"varint,25,opt,name=groupsV4JoinPermission,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupsV4JoinPermission,omitempty"`
-	RecentStickers               *WebFeatures_WebFeaturesFlag `protobuf:"varint,26,opt,name=recentStickers,enum=proto.WebFeatures_WebFeaturesFlag" json:"recentStickers,omitempty"`
-	Catalog                      *WebFeatures_WebFeaturesFlag `protobuf:"varint,27,opt,name=catalog,enum=proto.WebFeatures_WebFeaturesFlag" json:"catalog,omitempty"`
-	StarredStickers              *WebFeatures_WebFeaturesFlag `protobuf:"varint,28,opt,name=starredStickers,enum=proto.WebFeatures_WebFeaturesFlag" json:"starredStickers,omitempty"`
-	VoipGroupCall                *WebFeatures_WebFeaturesFlag `protobuf:"varint,29,opt,name=voipGroupCall,enum=proto.WebFeatures_WebFeaturesFlag" json:"voipGroupCall,omitempty"`
-	TemplateMessage              *WebFeatures_WebFeaturesFlag `protobuf:"varint,30,opt,name=templateMessage,enum=proto.WebFeatures_WebFeaturesFlag" json:"templateMessage,omitempty"`
-	TemplateMessageInteractivity *WebFeatures_WebFeaturesFlag `protobuf:"varint,31,opt,name=templateMessageInteractivity,enum=proto.WebFeatures_WebFeaturesFlag" json:"templateMessageInteractivity,omitempty"`
-	EphemeralMessages            *WebFeatures_WebFeaturesFlag `protobuf:"varint,32,opt,name=ephemeralMessages,enum=proto.WebFeatures_WebFeaturesFlag" json:"ephemeralMessages,omitempty"`
-	E2ENotificationSync          *WebFeatures_WebFeaturesFlag `protobuf:"varint,33,opt,name=e2ENotificationSync,enum=proto.WebFeatures_WebFeaturesFlag" json:"e2ENotificationSync,omitempty"`
-	RecentStickersV2             *WebFeatures_WebFeaturesFlag `protobuf:"varint,34,opt,name=recentStickersV2,enum=proto.WebFeatures_WebFeaturesFlag" json:"recentStickersV2,omitempty"`
-	RecentStickersV3             *WebFeatures_WebFeaturesFlag `protobuf:"varint,36,opt,name=recentStickersV3,enum=proto.WebFeatures_WebFeaturesFlag" json:"recentStickersV3,omitempty"`
-	UserNotice                   *WebFeatures_WebFeaturesFlag `protobuf:"varint,37,opt,name=userNotice,enum=proto.WebFeatures_WebFeaturesFlag" json:"userNotice,omitempty"`
-	Support                      *WebFeatures_WebFeaturesFlag `protobuf:"varint,39,opt,name=support,enum=proto.WebFeatures_WebFeaturesFlag" json:"support,omitempty"`
-	GroupUiiCleanup              *WebFeatures_WebFeaturesFlag `protobuf:"varint,40,opt,name=groupUiiCleanup,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupUiiCleanup,omitempty"`
-	GroupDogfoodingInternalOnly  *WebFeatures_WebFeaturesFlag `protobuf:"varint,41,opt,name=groupDogfoodingInternalOnly,enum=proto.WebFeatures_WebFeaturesFlag" json:"groupDogfoodingInternalOnly,omitempty"`
-	SettingsSync                 *WebFeatures_WebFeaturesFlag `protobuf:"varint,42,opt,name=settingsSync,enum=proto.WebFeatures_WebFeaturesFlag" json:"settingsSync,omitempty"`
-	ArchiveV2                    *WebFeatures_WebFeaturesFlag `protobuf:"varint,43,opt,name=archiveV2,enum=proto.WebFeatures_WebFeaturesFlag" json:"archiveV2,omitempty"`
-	EphemeralAllowGroupMembers   *WebFeatures_WebFeaturesFlag `protobuf:"varint,44,opt,name=ephemeralAllowGroupMembers,enum=proto.WebFeatures_WebFeaturesFlag" json:"ephemeralAllowGroupMembers,omitempty"`
-	Ephemeral24HDuration         *WebFeatures_WebFeaturesFlag `protobuf:"varint,45,opt,name=ephemeral24HDuration,enum=proto.WebFeatures_WebFeaturesFlag" json:"ephemeral24HDuration,omitempty"`
-	MdForceUpgrade               *WebFeatures_WebFeaturesFlag `protobuf:"varint,46,opt,name=mdForceUpgrade,enum=proto.WebFeatures_WebFeaturesFlag" json:"mdForceUpgrade,omitempty"`
-	DisappearingMode             *WebFeatures_WebFeaturesFlag `protobuf:"varint,47,opt,name=disappearingMode,enum=proto.WebFeatures_WebFeaturesFlag" json:"disappearingMode,omitempty"`
-	ExternalMdOptInAvailable     *WebFeatures_WebFeaturesFlag `protobuf:"varint,48,opt,name=externalMdOptInAvailable,enum=proto.WebFeatures_WebFeaturesFlag" json:"externalMdOptInAvailable,omitempty"`
-	NoDeleteMessageTimeLimit     *WebFeatures_WebFeaturesFlag `protobuf:"varint,49,opt,name=noDeleteMessageTimeLimit,enum=proto.WebFeatures_WebFeaturesFlag" json:"noDeleteMessageTimeLimit,omitempty"`
+	HydratedContentText *string                   `protobuf:"bytes,6,opt,name=hydratedContentText" json:"hydratedContentText,omitempty"`
+	HydratedFooterText  *string                   `protobuf:"bytes,7,opt,name=hydratedFooterText" json:"hydratedFooterText,omitempty"`
+	HydratedButtons     []*HydratedTemplateButton `protobuf:"bytes,8,rep,name=hydratedButtons" json:"hydratedButtons,omitempty"`
+	TemplateId          *string                   `protobuf:"bytes,9,opt,name=templateId" json:"templateId,omitempty"`
+	// Types that are assignable to Title:
+	//	*TemplateMessage_HydratedFourRowTemplate_DocumentMessage
+	//	*TemplateMessage_HydratedFourRowTemplate_HydratedTitleText
+	//	*TemplateMessage_HydratedFourRowTemplate_ImageMessage
+	//	*TemplateMessage_HydratedFourRowTemplate_VideoMessage
+	//	*TemplateMessage_HydratedFourRowTemplate_LocationMessage
+	Title isTemplateMessage_HydratedFourRowTemplate_Title `protobuf_oneof:"title"`
 }
 
-func (x *WebFeatures) Reset() {
-	*x = WebFeatures{}
+func (x *TemplateMessage_HydratedFourRowTemplate) Reset() {
+	*x = TemplateMessage_HydratedFourRowTemplate{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[186]
+		mi := &file_binary_proto_def_proto_msgTypes[193]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *WebFeatures) String() string {
+func (x *TemplateMessage_HydratedFourRowTemplate) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*WebFeatures) ProtoMessage() {}
+func (*TemplateMessage_HydratedFourRowTemplate) ProtoMessage() {}
 
-func (x *WebFeatures) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[186]
+func (x *TemplateMessage_HydratedFourRowTemplate) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[193]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19067,356 +19738,365 @@ func (x *WebFeatures) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use WebFeatures.ProtoReflect.Descriptor instead.
-func (*WebFeatures) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{186}
+// Deprecated: Use TemplateMessage_HydratedFourRowTemplate.ProtoReflect.Descriptor instead.
+func (*TemplateMessage_HydratedFourRowTemplate) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{60, 0}
 }
 
-func (x *WebFeatures) GetLabelsDisplay() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.LabelsDisplay != nil {
-		return *x.LabelsDisplay
+func (x *TemplateMessage_HydratedFourRowTemplate) GetHydratedContentText() string {
+	if x != nil && x.HydratedContentText != nil {
+		return *x.HydratedContentText
 	}
-	return WebFeatures_NOT_STARTED
+	return ""
 }
 
-func (x *WebFeatures) GetVoipIndividualOutgoing() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.VoipIndividualOutgoing != nil {
-		return *x.VoipIndividualOutgoing
+func (x *TemplateMessage_HydratedFourRowTemplate) GetHydratedFooterText() string {
+	if x != nil && x.HydratedFooterText != nil {
+		return *x.HydratedFooterText
 	}
-	return WebFeatures_NOT_STARTED
+	return ""
+}
+
+func (x *TemplateMessage_HydratedFourRowTemplate) GetHydratedButtons() []*HydratedTemplateButton {
+	if x != nil {
+		return x.HydratedButtons
+	}
+	return nil
+}
+
+func (x *TemplateMessage_HydratedFourRowTemplate) GetTemplateId() string {
+	if x != nil && x.TemplateId != nil {
+		return *x.TemplateId
+	}
+	return ""
+}
+
+func (m *TemplateMessage_HydratedFourRowTemplate) GetTitle() isTemplateMessage_HydratedFourRowTemplate_Title {
+	if m != nil {
+		return m.Title
+	}
+	return nil
+}
+
+func (x *TemplateMessage_HydratedFourRowTemplate) GetDocumentMessage() *DocumentMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_HydratedFourRowTemplate_DocumentMessage); ok {
+		return x.DocumentMessage
+	}
+	return nil
+}
+
+func (x *TemplateMessage_HydratedFourRowTemplate) GetHydratedTitleText() string {
+	if x, ok := x.GetTitle().(*TemplateMessage_HydratedFourRowTemplate_HydratedTitleText); ok {
+		return x.HydratedTitleText
+	}
+	return ""
 }
 
-func (x *WebFeatures) GetGroupsV3() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.GroupsV3 != nil {
-		return *x.GroupsV3
+func (x *TemplateMessage_HydratedFourRowTemplate) GetImageMessage() *ImageMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_HydratedFourRowTemplate_ImageMessage); ok {
+		return x.ImageMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetGroupsV3Create() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.GroupsV3Create != nil {
-		return *x.GroupsV3Create
+func (x *TemplateMessage_HydratedFourRowTemplate) GetVideoMessage() *VideoMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_HydratedFourRowTemplate_VideoMessage); ok {
+		return x.VideoMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetChangeNumberV2() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.ChangeNumberV2 != nil {
-		return *x.ChangeNumberV2
+func (x *TemplateMessage_HydratedFourRowTemplate) GetLocationMessage() *LocationMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_HydratedFourRowTemplate_LocationMessage); ok {
+		return x.LocationMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetQueryStatusV3Thumbnail() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.QueryStatusV3Thumbnail != nil {
-		return *x.QueryStatusV3Thumbnail
-	}
-	return WebFeatures_NOT_STARTED
+type isTemplateMessage_HydratedFourRowTemplate_Title interface {
+	isTemplateMessage_HydratedFourRowTemplate_Title()
 }
 
-func (x *WebFeatures) GetLiveLocations() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.LiveLocations != nil {
-		return *x.LiveLocations
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_HydratedFourRowTemplate_DocumentMessage struct {
+	DocumentMessage *DocumentMessage `protobuf:"bytes,1,opt,name=documentMessage,oneof"`
 }
 
-func (x *WebFeatures) GetQueryVname() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.QueryVname != nil {
-		return *x.QueryVname
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_HydratedFourRowTemplate_HydratedTitleText struct {
+	HydratedTitleText string `protobuf:"bytes,2,opt,name=hydratedTitleText,oneof"`
 }
 
-func (x *WebFeatures) GetVoipIndividualIncoming() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.VoipIndividualIncoming != nil {
-		return *x.VoipIndividualIncoming
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_HydratedFourRowTemplate_ImageMessage struct {
+	ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"`
 }
 
-func (x *WebFeatures) GetQuickRepliesQuery() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.QuickRepliesQuery != nil {
-		return *x.QuickRepliesQuery
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_HydratedFourRowTemplate_VideoMessage struct {
+	VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"`
 }
 
-func (x *WebFeatures) GetPayments() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.Payments != nil {
-		return *x.Payments
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_HydratedFourRowTemplate_LocationMessage struct {
+	LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"`
 }
 
-func (x *WebFeatures) GetStickerPackQuery() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.StickerPackQuery != nil {
-		return *x.StickerPackQuery
-	}
-	return WebFeatures_NOT_STARTED
+func (*TemplateMessage_HydratedFourRowTemplate_DocumentMessage) isTemplateMessage_HydratedFourRowTemplate_Title() {
 }
 
-func (x *WebFeatures) GetLiveLocationsFinal() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.LiveLocationsFinal != nil {
-		return *x.LiveLocationsFinal
-	}
-	return WebFeatures_NOT_STARTED
+func (*TemplateMessage_HydratedFourRowTemplate_HydratedTitleText) isTemplateMessage_HydratedFourRowTemplate_Title() {
 }
 
-func (x *WebFeatures) GetLabelsEdit() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.LabelsEdit != nil {
-		return *x.LabelsEdit
-	}
-	return WebFeatures_NOT_STARTED
+func (*TemplateMessage_HydratedFourRowTemplate_ImageMessage) isTemplateMessage_HydratedFourRowTemplate_Title() {
 }
 
-func (x *WebFeatures) GetMediaUpload() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.MediaUpload != nil {
-		return *x.MediaUpload
-	}
-	return WebFeatures_NOT_STARTED
+func (*TemplateMessage_HydratedFourRowTemplate_VideoMessage) isTemplateMessage_HydratedFourRowTemplate_Title() {
 }
 
-func (x *WebFeatures) GetMediaUploadRichQuickReplies() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.MediaUploadRichQuickReplies != nil {
-		return *x.MediaUploadRichQuickReplies
-	}
-	return WebFeatures_NOT_STARTED
+func (*TemplateMessage_HydratedFourRowTemplate_LocationMessage) isTemplateMessage_HydratedFourRowTemplate_Title() {
 }
 
-func (x *WebFeatures) GetVnameV2() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.VnameV2 != nil {
-		return *x.VnameV2
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_FourRowTemplate struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Content *HighlyStructuredMessage `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"`
+	Footer  *HighlyStructuredMessage `protobuf:"bytes,7,opt,name=footer" json:"footer,omitempty"`
+	Buttons []*TemplateButton        `protobuf:"bytes,8,rep,name=buttons" json:"buttons,omitempty"`
+	// Types that are assignable to Title:
+	//	*TemplateMessage_FourRowTemplate_DocumentMessage
+	//	*TemplateMessage_FourRowTemplate_HighlyStructuredMessage
+	//	*TemplateMessage_FourRowTemplate_ImageMessage
+	//	*TemplateMessage_FourRowTemplate_VideoMessage
+	//	*TemplateMessage_FourRowTemplate_LocationMessage
+	Title isTemplateMessage_FourRowTemplate_Title `protobuf_oneof:"title"`
 }
 
-func (x *WebFeatures) GetVideoPlaybackUrl() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.VideoPlaybackUrl != nil {
-		return *x.VideoPlaybackUrl
+func (x *TemplateMessage_FourRowTemplate) Reset() {
+	*x = TemplateMessage_FourRowTemplate{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[194]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return WebFeatures_NOT_STARTED
 }
 
-func (x *WebFeatures) GetStatusRanking() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.StatusRanking != nil {
-		return *x.StatusRanking
-	}
-	return WebFeatures_NOT_STARTED
+func (x *TemplateMessage_FourRowTemplate) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *WebFeatures) GetVoipIndividualVideo() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.VoipIndividualVideo != nil {
-		return *x.VoipIndividualVideo
+func (*TemplateMessage_FourRowTemplate) ProtoMessage() {}
+
+func (x *TemplateMessage_FourRowTemplate) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[194]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return WebFeatures_NOT_STARTED
+	return mi.MessageOf(x)
 }
 
-func (x *WebFeatures) GetThirdPartyStickers() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.ThirdPartyStickers != nil {
-		return *x.ThirdPartyStickers
-	}
-	return WebFeatures_NOT_STARTED
+// Deprecated: Use TemplateMessage_FourRowTemplate.ProtoReflect.Descriptor instead.
+func (*TemplateMessage_FourRowTemplate) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{60, 1}
 }
 
-func (x *WebFeatures) GetFrequentlyForwardedSetting() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.FrequentlyForwardedSetting != nil {
-		return *x.FrequentlyForwardedSetting
+func (x *TemplateMessage_FourRowTemplate) GetContent() *HighlyStructuredMessage {
+	if x != nil {
+		return x.Content
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetGroupsV4JoinPermission() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.GroupsV4JoinPermission != nil {
-		return *x.GroupsV4JoinPermission
+func (x *TemplateMessage_FourRowTemplate) GetFooter() *HighlyStructuredMessage {
+	if x != nil {
+		return x.Footer
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetRecentStickers() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.RecentStickers != nil {
-		return *x.RecentStickers
+func (x *TemplateMessage_FourRowTemplate) GetButtons() []*TemplateButton {
+	if x != nil {
+		return x.Buttons
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetCatalog() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.Catalog != nil {
-		return *x.Catalog
+func (m *TemplateMessage_FourRowTemplate) GetTitle() isTemplateMessage_FourRowTemplate_Title {
+	if m != nil {
+		return m.Title
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetStarredStickers() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.StarredStickers != nil {
-		return *x.StarredStickers
+func (x *TemplateMessage_FourRowTemplate) GetDocumentMessage() *DocumentMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_FourRowTemplate_DocumentMessage); ok {
+		return x.DocumentMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetVoipGroupCall() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.VoipGroupCall != nil {
-		return *x.VoipGroupCall
+func (x *TemplateMessage_FourRowTemplate) GetHighlyStructuredMessage() *HighlyStructuredMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_FourRowTemplate_HighlyStructuredMessage); ok {
+		return x.HighlyStructuredMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetTemplateMessage() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.TemplateMessage != nil {
-		return *x.TemplateMessage
+func (x *TemplateMessage_FourRowTemplate) GetImageMessage() *ImageMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_FourRowTemplate_ImageMessage); ok {
+		return x.ImageMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetTemplateMessageInteractivity() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.TemplateMessageInteractivity != nil {
-		return *x.TemplateMessageInteractivity
+func (x *TemplateMessage_FourRowTemplate) GetVideoMessage() *VideoMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_FourRowTemplate_VideoMessage); ok {
+		return x.VideoMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetEphemeralMessages() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.EphemeralMessages != nil {
-		return *x.EphemeralMessages
+func (x *TemplateMessage_FourRowTemplate) GetLocationMessage() *LocationMessage {
+	if x, ok := x.GetTitle().(*TemplateMessage_FourRowTemplate_LocationMessage); ok {
+		return x.LocationMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-func (x *WebFeatures) GetE2ENotificationSync() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.E2ENotificationSync != nil {
-		return *x.E2ENotificationSync
-	}
-	return WebFeatures_NOT_STARTED
+type isTemplateMessage_FourRowTemplate_Title interface {
+	isTemplateMessage_FourRowTemplate_Title()
 }
 
-func (x *WebFeatures) GetRecentStickersV2() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.RecentStickersV2 != nil {
-		return *x.RecentStickersV2
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_FourRowTemplate_DocumentMessage struct {
+	DocumentMessage *DocumentMessage `protobuf:"bytes,1,opt,name=documentMessage,oneof"`
 }
 
-func (x *WebFeatures) GetRecentStickersV3() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.RecentStickersV3 != nil {
-		return *x.RecentStickersV3
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_FourRowTemplate_HighlyStructuredMessage struct {
+	HighlyStructuredMessage *HighlyStructuredMessage `protobuf:"bytes,2,opt,name=highlyStructuredMessage,oneof"`
 }
 
-func (x *WebFeatures) GetUserNotice() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.UserNotice != nil {
-		return *x.UserNotice
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_FourRowTemplate_ImageMessage struct {
+	ImageMessage *ImageMessage `protobuf:"bytes,3,opt,name=imageMessage,oneof"`
 }
 
-func (x *WebFeatures) GetSupport() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.Support != nil {
-		return *x.Support
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_FourRowTemplate_VideoMessage struct {
+	VideoMessage *VideoMessage `protobuf:"bytes,4,opt,name=videoMessage,oneof"`
 }
 
-func (x *WebFeatures) GetGroupUiiCleanup() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.GroupUiiCleanup != nil {
-		return *x.GroupUiiCleanup
-	}
-	return WebFeatures_NOT_STARTED
+type TemplateMessage_FourRowTemplate_LocationMessage struct {
+	LocationMessage *LocationMessage `protobuf:"bytes,5,opt,name=locationMessage,oneof"`
 }
 
-func (x *WebFeatures) GetGroupDogfoodingInternalOnly() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.GroupDogfoodingInternalOnly != nil {
-		return *x.GroupDogfoodingInternalOnly
-	}
-	return WebFeatures_NOT_STARTED
+func (*TemplateMessage_FourRowTemplate_DocumentMessage) isTemplateMessage_FourRowTemplate_Title() {}
+
+func (*TemplateMessage_FourRowTemplate_HighlyStructuredMessage) isTemplateMessage_FourRowTemplate_Title() {
 }
 
-func (x *WebFeatures) GetSettingsSync() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.SettingsSync != nil {
-		return *x.SettingsSync
-	}
-	return WebFeatures_NOT_STARTED
+func (*TemplateMessage_FourRowTemplate_ImageMessage) isTemplateMessage_FourRowTemplate_Title() {}
+
+func (*TemplateMessage_FourRowTemplate_VideoMessage) isTemplateMessage_FourRowTemplate_Title() {}
+
+func (*TemplateMessage_FourRowTemplate_LocationMessage) isTemplateMessage_FourRowTemplate_Title() {}
+
+type RequestMediaUploadResponseMessage_RequestMediaUploadResult struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	FileSha256        *string                            `protobuf:"bytes,1,opt,name=fileSha256" json:"fileSha256,omitempty"`
+	MediaUploadResult *MediaRetryNotification_ResultType `protobuf:"varint,2,opt,name=mediaUploadResult,enum=proto.MediaRetryNotification_ResultType" json:"mediaUploadResult,omitempty"`
+	StickerMessage    *StickerMessage                    `protobuf:"bytes,3,opt,name=stickerMessage" json:"stickerMessage,omitempty"`
 }
 
-func (x *WebFeatures) GetArchiveV2() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.ArchiveV2 != nil {
-		return *x.ArchiveV2
+func (x *RequestMediaUploadResponseMessage_RequestMediaUploadResult) Reset() {
+	*x = RequestMediaUploadResponseMessage_RequestMediaUploadResult{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_binary_proto_def_proto_msgTypes[195]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return WebFeatures_NOT_STARTED
 }
 
-func (x *WebFeatures) GetEphemeralAllowGroupMembers() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.EphemeralAllowGroupMembers != nil {
-		return *x.EphemeralAllowGroupMembers
-	}
-	return WebFeatures_NOT_STARTED
+func (x *RequestMediaUploadResponseMessage_RequestMediaUploadResult) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (x *WebFeatures) GetEphemeral24HDuration() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.Ephemeral24HDuration != nil {
-		return *x.Ephemeral24HDuration
+func (*RequestMediaUploadResponseMessage_RequestMediaUploadResult) ProtoMessage() {}
+
+func (x *RequestMediaUploadResponseMessage_RequestMediaUploadResult) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[195]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return WebFeatures_NOT_STARTED
+	return mi.MessageOf(x)
 }
 
-func (x *WebFeatures) GetMdForceUpgrade() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.MdForceUpgrade != nil {
-		return *x.MdForceUpgrade
-	}
-	return WebFeatures_NOT_STARTED
+// Deprecated: Use RequestMediaUploadResponseMessage_RequestMediaUploadResult.ProtoReflect.Descriptor instead.
+func (*RequestMediaUploadResponseMessage_RequestMediaUploadResult) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{68, 0}
 }
 
-func (x *WebFeatures) GetDisappearingMode() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.DisappearingMode != nil {
-		return *x.DisappearingMode
+func (x *RequestMediaUploadResponseMessage_RequestMediaUploadResult) GetFileSha256() string {
+	if x != nil && x.FileSha256 != nil {
+		return *x.FileSha256
 	}
-	return WebFeatures_NOT_STARTED
+	return ""
 }
 
-func (x *WebFeatures) GetExternalMdOptInAvailable() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.ExternalMdOptInAvailable != nil {
-		return *x.ExternalMdOptInAvailable
+func (x *RequestMediaUploadResponseMessage_RequestMediaUploadResult) GetMediaUploadResult() MediaRetryNotification_ResultType {
+	if x != nil && x.MediaUploadResult != nil {
+		return *x.MediaUploadResult
 	}
-	return WebFeatures_NOT_STARTED
+	return MediaRetryNotification_GENERAL_ERROR
 }
 
-func (x *WebFeatures) GetNoDeleteMessageTimeLimit() WebFeatures_WebFeaturesFlag {
-	if x != nil && x.NoDeleteMessageTimeLimit != nil {
-		return *x.NoDeleteMessageTimeLimit
+func (x *RequestMediaUploadResponseMessage_RequestMediaUploadResult) GetStickerMessage() *StickerMessage {
+	if x != nil {
+		return x.StickerMessage
 	}
-	return WebFeatures_NOT_STARTED
+	return nil
 }
 
-type UserReceipt struct {
+type ProductMessage_ProductSnapshot struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	UserJid            *string  `protobuf:"bytes,1,req,name=userJid" json:"userJid,omitempty"`
-	ReceiptTimestamp   *int64   `protobuf:"varint,2,opt,name=receiptTimestamp" json:"receiptTimestamp,omitempty"`
-	ReadTimestamp      *int64   `protobuf:"varint,3,opt,name=readTimestamp" json:"readTimestamp,omitempty"`
-	PlayedTimestamp    *int64   `protobuf:"varint,4,opt,name=playedTimestamp" json:"playedTimestamp,omitempty"`
-	PendingDeviceJid   []string `protobuf:"bytes,5,rep,name=pendingDeviceJid" json:"pendingDeviceJid,omitempty"`
-	DeliveredDeviceJid []string `protobuf:"bytes,6,rep,name=deliveredDeviceJid" json:"deliveredDeviceJid,omitempty"`
+	ProductImage        *ImageMessage `protobuf:"bytes,1,opt,name=productImage" json:"productImage,omitempty"`
+	ProductId           *string       `protobuf:"bytes,2,opt,name=productId" json:"productId,omitempty"`
+	Title               *string       `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
+	Description         *string       `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
+	CurrencyCode        *string       `protobuf:"bytes,5,opt,name=currencyCode" json:"currencyCode,omitempty"`
+	PriceAmount1000     *int64        `protobuf:"varint,6,opt,name=priceAmount1000" json:"priceAmount1000,omitempty"`
+	RetailerId          *string       `protobuf:"bytes,7,opt,name=retailerId" json:"retailerId,omitempty"`
+	Url                 *string       `protobuf:"bytes,8,opt,name=url" json:"url,omitempty"`
+	ProductImageCount   *uint32       `protobuf:"varint,9,opt,name=productImageCount" json:"productImageCount,omitempty"`
+	FirstImageId        *string       `protobuf:"bytes,11,opt,name=firstImageId" json:"firstImageId,omitempty"`
+	SalePriceAmount1000 *int64        `protobuf:"varint,12,opt,name=salePriceAmount1000" json:"salePriceAmount1000,omitempty"`
 }
 
-func (x *UserReceipt) Reset() {
-	*x = UserReceipt{}
+func (x *ProductMessage_ProductSnapshot) Reset() {
+	*x = ProductMessage_ProductSnapshot{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[187]
+		mi := &file_binary_proto_def_proto_msgTypes[196]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *UserReceipt) String() string {
+func (x *ProductMessage_ProductSnapshot) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*UserReceipt) ProtoMessage() {}
+func (*ProductMessage_ProductSnapshot) ProtoMessage() {}
 
-func (x *UserReceipt) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[187]
+func (x *ProductMessage_ProductSnapshot) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[196]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19427,137 +20107,115 @@ func (x *UserReceipt) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use UserReceipt.ProtoReflect.Descriptor instead.
-func (*UserReceipt) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{187}
+// Deprecated: Use ProductMessage_ProductSnapshot.ProtoReflect.Descriptor instead.
+func (*ProductMessage_ProductSnapshot) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{72, 0}
 }
 
-func (x *UserReceipt) GetUserJid() string {
-	if x != nil && x.UserJid != nil {
-		return *x.UserJid
+func (x *ProductMessage_ProductSnapshot) GetProductImage() *ImageMessage {
+	if x != nil {
+		return x.ProductImage
 	}
-	return ""
+	return nil
 }
 
-func (x *UserReceipt) GetReceiptTimestamp() int64 {
-	if x != nil && x.ReceiptTimestamp != nil {
-		return *x.ReceiptTimestamp
+func (x *ProductMessage_ProductSnapshot) GetProductId() string {
+	if x != nil && x.ProductId != nil {
+		return *x.ProductId
 	}
-	return 0
+	return ""
 }
 
-func (x *UserReceipt) GetReadTimestamp() int64 {
-	if x != nil && x.ReadTimestamp != nil {
-		return *x.ReadTimestamp
+func (x *ProductMessage_ProductSnapshot) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
-	return 0
+	return ""
 }
 
-func (x *UserReceipt) GetPlayedTimestamp() int64 {
-	if x != nil && x.PlayedTimestamp != nil {
-		return *x.PlayedTimestamp
+func (x *ProductMessage_ProductSnapshot) GetDescription() string {
+	if x != nil && x.Description != nil {
+		return *x.Description
 	}
-	return 0
+	return ""
 }
 
-func (x *UserReceipt) GetPendingDeviceJid() []string {
-	if x != nil {
-		return x.PendingDeviceJid
+func (x *ProductMessage_ProductSnapshot) GetCurrencyCode() string {
+	if x != nil && x.CurrencyCode != nil {
+		return *x.CurrencyCode
 	}
-	return nil
+	return ""
 }
 
-func (x *UserReceipt) GetDeliveredDeviceJid() []string {
-	if x != nil {
-		return x.DeliveredDeviceJid
+func (x *ProductMessage_ProductSnapshot) GetPriceAmount1000() int64 {
+	if x != nil && x.PriceAmount1000 != nil {
+		return *x.PriceAmount1000
 	}
-	return nil
-}
-
-type StatusPSA struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	CampaignId                  *uint64 `protobuf:"varint,44,req,name=campaignId" json:"campaignId,omitempty"`
-	CampaignExpirationTimestamp *uint64 `protobuf:"varint,45,opt,name=campaignExpirationTimestamp" json:"campaignExpirationTimestamp,omitempty"`
+	return 0
 }
 
-func (x *StatusPSA) Reset() {
-	*x = StatusPSA{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[188]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
+func (x *ProductMessage_ProductSnapshot) GetRetailerId() string {
+	if x != nil && x.RetailerId != nil {
+		return *x.RetailerId
 	}
+	return ""
 }
 
-func (x *StatusPSA) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StatusPSA) ProtoMessage() {}
-
-func (x *StatusPSA) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[188]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ProductMessage_ProductSnapshot) GetUrl() string {
+	if x != nil && x.Url != nil {
+		return *x.Url
 	}
-	return mi.MessageOf(x)
+	return ""
 }
 
-// Deprecated: Use StatusPSA.ProtoReflect.Descriptor instead.
-func (*StatusPSA) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{188}
+func (x *ProductMessage_ProductSnapshot) GetProductImageCount() uint32 {
+	if x != nil && x.ProductImageCount != nil {
+		return *x.ProductImageCount
+	}
+	return 0
 }
 
-func (x *StatusPSA) GetCampaignId() uint64 {
-	if x != nil && x.CampaignId != nil {
-		return *x.CampaignId
+func (x *ProductMessage_ProductSnapshot) GetFirstImageId() string {
+	if x != nil && x.FirstImageId != nil {
+		return *x.FirstImageId
 	}
-	return 0
+	return ""
 }
 
-func (x *StatusPSA) GetCampaignExpirationTimestamp() uint64 {
-	if x != nil && x.CampaignExpirationTimestamp != nil {
-		return *x.CampaignExpirationTimestamp
+func (x *ProductMessage_ProductSnapshot) GetSalePriceAmount1000() int64 {
+	if x != nil && x.SalePriceAmount1000 != nil {
+		return *x.SalePriceAmount1000
 	}
 	return 0
 }
 
-type Reaction struct {
+type ProductMessage_CatalogSnapshot struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key               *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
-	Text              *string     `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"`
-	GroupingKey       *string     `protobuf:"bytes,3,opt,name=groupingKey" json:"groupingKey,omitempty"`
-	SenderTimestampMs *int64      `protobuf:"varint,4,opt,name=senderTimestampMs" json:"senderTimestampMs,omitempty"`
-	Unread            *bool       `protobuf:"varint,5,opt,name=unread" json:"unread,omitempty"`
+	CatalogImage *ImageMessage `protobuf:"bytes,1,opt,name=catalogImage" json:"catalogImage,omitempty"`
+	Title        *string       `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"`
+	Description  *string       `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
 }
 
-func (x *Reaction) Reset() {
-	*x = Reaction{}
+func (x *ProductMessage_CatalogSnapshot) Reset() {
+	*x = ProductMessage_CatalogSnapshot{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[189]
+		mi := &file_binary_proto_def_proto_msgTypes[197]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *Reaction) String() string {
+func (x *ProductMessage_CatalogSnapshot) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*Reaction) ProtoMessage() {}
+func (*ProductMessage_CatalogSnapshot) ProtoMessage() {}
 
-func (x *Reaction) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[189]
+func (x *ProductMessage_CatalogSnapshot) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[197]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19568,72 +20226,57 @@ func (x *Reaction) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use Reaction.ProtoReflect.Descriptor instead.
-func (*Reaction) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{189}
+// Deprecated: Use ProductMessage_CatalogSnapshot.ProtoReflect.Descriptor instead.
+func (*ProductMessage_CatalogSnapshot) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{72, 1}
 }
 
-func (x *Reaction) GetKey() *MessageKey {
+func (x *ProductMessage_CatalogSnapshot) GetCatalogImage() *ImageMessage {
 	if x != nil {
-		return x.Key
+		return x.CatalogImage
 	}
 	return nil
 }
 
-func (x *Reaction) GetText() string {
-	if x != nil && x.Text != nil {
-		return *x.Text
+func (x *ProductMessage_CatalogSnapshot) GetTitle() string {
+	if x != nil && x.Title != nil {
+		return *x.Title
 	}
 	return ""
 }
 
-func (x *Reaction) GetGroupingKey() string {
-	if x != nil && x.GroupingKey != nil {
-		return *x.GroupingKey
+func (x *ProductMessage_CatalogSnapshot) GetDescription() string {
+	if x != nil && x.Description != nil {
+		return *x.Description
 	}
 	return ""
 }
 
-func (x *Reaction) GetSenderTimestampMs() int64 {
-	if x != nil && x.SenderTimestampMs != nil {
-		return *x.SenderTimestampMs
-	}
-	return 0
-}
-
-func (x *Reaction) GetUnread() bool {
-	if x != nil && x.Unread != nil {
-		return *x.Unread
-	}
-	return false
-}
-
-type PollUpdate struct {
+type MsgOpaqueData_PollOption struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	PollUpdateMessageKey *MessageKey      `protobuf:"bytes,1,opt,name=pollUpdateMessageKey" json:"pollUpdateMessageKey,omitempty"`
-	Vote                 *PollVoteMessage `protobuf:"bytes,2,opt,name=vote" json:"vote,omitempty"`
+	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 }
 
-func (x *PollUpdate) Reset() {
-	*x = PollUpdate{}
+func (x *MsgOpaqueData_PollOption) Reset() {
+	*x = MsgOpaqueData_PollOption{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[190]
+		mi := &file_binary_proto_def_proto_msgTypes[198]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *PollUpdate) String() string {
+func (x *MsgOpaqueData_PollOption) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PollUpdate) ProtoMessage() {}
+func (*MsgOpaqueData_PollOption) ProtoMessage() {}
 
-func (x *PollUpdate) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[190]
+func (x *MsgOpaqueData_PollOption) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[198]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19644,50 +20287,47 @@ func (x *PollUpdate) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PollUpdate.ProtoReflect.Descriptor instead.
-func (*PollUpdate) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{190}
-}
-
-func (x *PollUpdate) GetPollUpdateMessageKey() *MessageKey {
-	if x != nil {
-		return x.PollUpdateMessageKey
-	}
-	return nil
+// Deprecated: Use MsgOpaqueData_PollOption.ProtoReflect.Descriptor instead.
+func (*MsgOpaqueData_PollOption) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{86, 0}
 }
 
-func (x *PollUpdate) GetVote() *PollVoteMessage {
-	if x != nil {
-		return x.Vote
+func (x *MsgOpaqueData_PollOption) GetName() string {
+	if x != nil && x.Name != nil {
+		return *x.Name
 	}
-	return nil
+	return ""
 }
 
-type PollAdditionalMetadata struct {
+type VerifiedNameCertificate_Details struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	PollInvalidated *bool `protobuf:"varint,1,opt,name=pollInvalidated" json:"pollInvalidated,omitempty"`
+	Serial         *uint64          `protobuf:"varint,1,opt,name=serial" json:"serial,omitempty"`
+	Issuer         *string          `protobuf:"bytes,2,opt,name=issuer" json:"issuer,omitempty"`
+	VerifiedName   *string          `protobuf:"bytes,4,opt,name=verifiedName" json:"verifiedName,omitempty"`
+	LocalizedNames []*LocalizedName `protobuf:"bytes,8,rep,name=localizedNames" json:"localizedNames,omitempty"`
+	IssueTime      *uint64          `protobuf:"varint,10,opt,name=issueTime" json:"issueTime,omitempty"`
 }
 
-func (x *PollAdditionalMetadata) Reset() {
-	*x = PollAdditionalMetadata{}
+func (x *VerifiedNameCertificate_Details) Reset() {
+	*x = VerifiedNameCertificate_Details{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[191]
+		mi := &file_binary_proto_def_proto_msgTypes[199]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *PollAdditionalMetadata) String() string {
+func (x *VerifiedNameCertificate_Details) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PollAdditionalMetadata) ProtoMessage() {}
+func (*VerifiedNameCertificate_Details) ProtoMessage() {}
 
-func (x *PollAdditionalMetadata) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[191]
+func (x *VerifiedNameCertificate_Details) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[199]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19698,45 +20338,74 @@ func (x *PollAdditionalMetadata) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PollAdditionalMetadata.ProtoReflect.Descriptor instead.
-func (*PollAdditionalMetadata) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{191}
+// Deprecated: Use VerifiedNameCertificate_Details.ProtoReflect.Descriptor instead.
+func (*VerifiedNameCertificate_Details) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{133, 0}
 }
 
-func (x *PollAdditionalMetadata) GetPollInvalidated() bool {
-	if x != nil && x.PollInvalidated != nil {
-		return *x.PollInvalidated
+func (x *VerifiedNameCertificate_Details) GetSerial() uint64 {
+	if x != nil && x.Serial != nil {
+		return *x.Serial
 	}
-	return false
+	return 0
 }
 
-type PhotoChange struct {
+func (x *VerifiedNameCertificate_Details) GetIssuer() string {
+	if x != nil && x.Issuer != nil {
+		return *x.Issuer
+	}
+	return ""
+}
+
+func (x *VerifiedNameCertificate_Details) GetVerifiedName() string {
+	if x != nil && x.VerifiedName != nil {
+		return *x.VerifiedName
+	}
+	return ""
+}
+
+func (x *VerifiedNameCertificate_Details) GetLocalizedNames() []*LocalizedName {
+	if x != nil {
+		return x.LocalizedNames
+	}
+	return nil
+}
+
+func (x *VerifiedNameCertificate_Details) GetIssueTime() uint64 {
+	if x != nil && x.IssueTime != nil {
+		return *x.IssueTime
+	}
+	return 0
+}
+
+type ClientPayload_WebInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	OldPhoto   []byte  `protobuf:"bytes,1,opt,name=oldPhoto" json:"oldPhoto,omitempty"`
-	NewPhoto   []byte  `protobuf:"bytes,2,opt,name=newPhoto" json:"newPhoto,omitempty"`
-	NewPhotoId *uint32 `protobuf:"varint,3,opt,name=newPhotoId" json:"newPhotoId,omitempty"`
+	RefToken       *string                               `protobuf:"bytes,1,opt,name=refToken" json:"refToken,omitempty"`
+	Version        *string                               `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
+	WebdPayload    *ClientPayload_WebInfo_WebdPayload    `protobuf:"bytes,3,opt,name=webdPayload" json:"webdPayload,omitempty"`
+	WebSubPlatform *ClientPayload_WebInfo_WebSubPlatform `protobuf:"varint,4,opt,name=webSubPlatform,enum=proto.ClientPayload_WebInfo_WebSubPlatform" json:"webSubPlatform,omitempty"`
 }
 
-func (x *PhotoChange) Reset() {
-	*x = PhotoChange{}
+func (x *ClientPayload_WebInfo) Reset() {
+	*x = ClientPayload_WebInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[192]
+		mi := &file_binary_proto_def_proto_msgTypes[200]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *PhotoChange) String() string {
+func (x *ClientPayload_WebInfo) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PhotoChange) ProtoMessage() {}
+func (*ClientPayload_WebInfo) ProtoMessage() {}
 
-func (x *PhotoChange) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[192]
+func (x *ClientPayload_WebInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[200]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19747,69 +20416,76 @@ func (x *PhotoChange) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PhotoChange.ProtoReflect.Descriptor instead.
-func (*PhotoChange) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{192}
+// Deprecated: Use ClientPayload_WebInfo.ProtoReflect.Descriptor instead.
+func (*ClientPayload_WebInfo) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 0}
+}
+
+func (x *ClientPayload_WebInfo) GetRefToken() string {
+	if x != nil && x.RefToken != nil {
+		return *x.RefToken
+	}
+	return ""
 }
 
-func (x *PhotoChange) GetOldPhoto() []byte {
-	if x != nil {
-		return x.OldPhoto
+func (x *ClientPayload_WebInfo) GetVersion() string {
+	if x != nil && x.Version != nil {
+		return *x.Version
 	}
-	return nil
+	return ""
 }
 
-func (x *PhotoChange) GetNewPhoto() []byte {
+func (x *ClientPayload_WebInfo) GetWebdPayload() *ClientPayload_WebInfo_WebdPayload {
 	if x != nil {
-		return x.NewPhoto
+		return x.WebdPayload
 	}
 	return nil
 }
 
-func (x *PhotoChange) GetNewPhotoId() uint32 {
-	if x != nil && x.NewPhotoId != nil {
-		return *x.NewPhotoId
+func (x *ClientPayload_WebInfo) GetWebSubPlatform() ClientPayload_WebInfo_WebSubPlatform {
+	if x != nil && x.WebSubPlatform != nil {
+		return *x.WebSubPlatform
 	}
-	return 0
+	return ClientPayload_WebInfo_WEB_BROWSER
 }
 
-type PaymentInfo struct {
+type ClientPayload_UserAgent struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	CurrencyDeprecated   *PaymentInfo_PaymentInfoCurrency  `protobuf:"varint,1,opt,name=currencyDeprecated,enum=proto.PaymentInfo_PaymentInfoCurrency" json:"currencyDeprecated,omitempty"`
-	Amount1000           *uint64                           `protobuf:"varint,2,opt,name=amount1000" json:"amount1000,omitempty"`
-	ReceiverJid          *string                           `protobuf:"bytes,3,opt,name=receiverJid" json:"receiverJid,omitempty"`
-	Status               *PaymentInfo_PaymentInfoStatus    `protobuf:"varint,4,opt,name=status,enum=proto.PaymentInfo_PaymentInfoStatus" json:"status,omitempty"`
-	TransactionTimestamp *uint64                           `protobuf:"varint,5,opt,name=transactionTimestamp" json:"transactionTimestamp,omitempty"`
-	RequestMessageKey    *MessageKey                       `protobuf:"bytes,6,opt,name=requestMessageKey" json:"requestMessageKey,omitempty"`
-	ExpiryTimestamp      *uint64                           `protobuf:"varint,7,opt,name=expiryTimestamp" json:"expiryTimestamp,omitempty"`
-	Futureproofed        *bool                             `protobuf:"varint,8,opt,name=futureproofed" json:"futureproofed,omitempty"`
-	Currency             *string                           `protobuf:"bytes,9,opt,name=currency" json:"currency,omitempty"`
-	TxnStatus            *PaymentInfo_PaymentInfoTxnStatus `protobuf:"varint,10,opt,name=txnStatus,enum=proto.PaymentInfo_PaymentInfoTxnStatus" json:"txnStatus,omitempty"`
-	UseNoviFiatFormat    *bool                             `protobuf:"varint,11,opt,name=useNoviFiatFormat" json:"useNoviFiatFormat,omitempty"`
-	PrimaryAmount        *Money                            `protobuf:"bytes,12,opt,name=primaryAmount" json:"primaryAmount,omitempty"`
-	ExchangeAmount       *Money                            `protobuf:"bytes,13,opt,name=exchangeAmount" json:"exchangeAmount,omitempty"`
-}
-
-func (x *PaymentInfo) Reset() {
-	*x = PaymentInfo{}
+	Platform                    *ClientPayload_UserAgent_Platform       `protobuf:"varint,1,opt,name=platform,enum=proto.ClientPayload_UserAgent_Platform" json:"platform,omitempty"`
+	AppVersion                  *ClientPayload_UserAgent_AppVersion     `protobuf:"bytes,2,opt,name=appVersion" json:"appVersion,omitempty"`
+	Mcc                         *string                                 `protobuf:"bytes,3,opt,name=mcc" json:"mcc,omitempty"`
+	Mnc                         *string                                 `protobuf:"bytes,4,opt,name=mnc" json:"mnc,omitempty"`
+	OsVersion                   *string                                 `protobuf:"bytes,5,opt,name=osVersion" json:"osVersion,omitempty"`
+	Manufacturer                *string                                 `protobuf:"bytes,6,opt,name=manufacturer" json:"manufacturer,omitempty"`
+	Device                      *string                                 `protobuf:"bytes,7,opt,name=device" json:"device,omitempty"`
+	OsBuildNumber               *string                                 `protobuf:"bytes,8,opt,name=osBuildNumber" json:"osBuildNumber,omitempty"`
+	PhoneId                     *string                                 `protobuf:"bytes,9,opt,name=phoneId" json:"phoneId,omitempty"`
+	ReleaseChannel              *ClientPayload_UserAgent_ReleaseChannel `protobuf:"varint,10,opt,name=releaseChannel,enum=proto.ClientPayload_UserAgent_ReleaseChannel" json:"releaseChannel,omitempty"`
+	LocaleLanguageIso6391       *string                                 `protobuf:"bytes,11,opt,name=localeLanguageIso6391" json:"localeLanguageIso6391,omitempty"`
+	LocaleCountryIso31661Alpha2 *string                                 `protobuf:"bytes,12,opt,name=localeCountryIso31661Alpha2" json:"localeCountryIso31661Alpha2,omitempty"`
+	DeviceBoard                 *string                                 `protobuf:"bytes,13,opt,name=deviceBoard" json:"deviceBoard,omitempty"`
+}
+
+func (x *ClientPayload_UserAgent) Reset() {
+	*x = ClientPayload_UserAgent{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[193]
+		mi := &file_binary_proto_def_proto_msgTypes[201]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *PaymentInfo) String() string {
+func (x *ClientPayload_UserAgent) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*PaymentInfo) ProtoMessage() {}
+func (*ClientPayload_UserAgent) ProtoMessage() {}
 
-func (x *PaymentInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[193]
+func (x *ClientPayload_UserAgent) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[201]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19820,130 +20496,134 @@ func (x *PaymentInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use PaymentInfo.ProtoReflect.Descriptor instead.
-func (*PaymentInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{193}
+// Deprecated: Use ClientPayload_UserAgent.ProtoReflect.Descriptor instead.
+func (*ClientPayload_UserAgent) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 1}
 }
 
-func (x *PaymentInfo) GetCurrencyDeprecated() PaymentInfo_PaymentInfoCurrency {
-	if x != nil && x.CurrencyDeprecated != nil {
-		return *x.CurrencyDeprecated
+func (x *ClientPayload_UserAgent) GetPlatform() ClientPayload_UserAgent_Platform {
+	if x != nil && x.Platform != nil {
+		return *x.Platform
 	}
-	return PaymentInfo_UNKNOWN_CURRENCY
+	return ClientPayload_UserAgent_ANDROID
 }
 
-func (x *PaymentInfo) GetAmount1000() uint64 {
-	if x != nil && x.Amount1000 != nil {
-		return *x.Amount1000
+func (x *ClientPayload_UserAgent) GetAppVersion() *ClientPayload_UserAgent_AppVersion {
+	if x != nil {
+		return x.AppVersion
 	}
-	return 0
+	return nil
 }
 
-func (x *PaymentInfo) GetReceiverJid() string {
-	if x != nil && x.ReceiverJid != nil {
-		return *x.ReceiverJid
+func (x *ClientPayload_UserAgent) GetMcc() string {
+	if x != nil && x.Mcc != nil {
+		return *x.Mcc
 	}
 	return ""
 }
 
-func (x *PaymentInfo) GetStatus() PaymentInfo_PaymentInfoStatus {
-	if x != nil && x.Status != nil {
-		return *x.Status
+func (x *ClientPayload_UserAgent) GetMnc() string {
+	if x != nil && x.Mnc != nil {
+		return *x.Mnc
 	}
-	return PaymentInfo_UNKNOWN_STATUS
+	return ""
 }
 
-func (x *PaymentInfo) GetTransactionTimestamp() uint64 {
-	if x != nil && x.TransactionTimestamp != nil {
-		return *x.TransactionTimestamp
+func (x *ClientPayload_UserAgent) GetOsVersion() string {
+	if x != nil && x.OsVersion != nil {
+		return *x.OsVersion
 	}
-	return 0
+	return ""
 }
 
-func (x *PaymentInfo) GetRequestMessageKey() *MessageKey {
-	if x != nil {
-		return x.RequestMessageKey
+func (x *ClientPayload_UserAgent) GetManufacturer() string {
+	if x != nil && x.Manufacturer != nil {
+		return *x.Manufacturer
 	}
-	return nil
+	return ""
 }
 
-func (x *PaymentInfo) GetExpiryTimestamp() uint64 {
-	if x != nil && x.ExpiryTimestamp != nil {
-		return *x.ExpiryTimestamp
+func (x *ClientPayload_UserAgent) GetDevice() string {
+	if x != nil && x.Device != nil {
+		return *x.Device
 	}
-	return 0
+	return ""
 }
 
-func (x *PaymentInfo) GetFutureproofed() bool {
-	if x != nil && x.Futureproofed != nil {
-		return *x.Futureproofed
+func (x *ClientPayload_UserAgent) GetOsBuildNumber() string {
+	if x != nil && x.OsBuildNumber != nil {
+		return *x.OsBuildNumber
 	}
-	return false
+	return ""
 }
 
-func (x *PaymentInfo) GetCurrency() string {
-	if x != nil && x.Currency != nil {
-		return *x.Currency
+func (x *ClientPayload_UserAgent) GetPhoneId() string {
+	if x != nil && x.PhoneId != nil {
+		return *x.PhoneId
 	}
 	return ""
 }
 
-func (x *PaymentInfo) GetTxnStatus() PaymentInfo_PaymentInfoTxnStatus {
-	if x != nil && x.TxnStatus != nil {
-		return *x.TxnStatus
+func (x *ClientPayload_UserAgent) GetReleaseChannel() ClientPayload_UserAgent_ReleaseChannel {
+	if x != nil && x.ReleaseChannel != nil {
+		return *x.ReleaseChannel
 	}
-	return PaymentInfo_UNKNOWN
+	return ClientPayload_UserAgent_RELEASE
 }
 
-func (x *PaymentInfo) GetUseNoviFiatFormat() bool {
-	if x != nil && x.UseNoviFiatFormat != nil {
-		return *x.UseNoviFiatFormat
+func (x *ClientPayload_UserAgent) GetLocaleLanguageIso6391() string {
+	if x != nil && x.LocaleLanguageIso6391 != nil {
+		return *x.LocaleLanguageIso6391
 	}
-	return false
+	return ""
 }
 
-func (x *PaymentInfo) GetPrimaryAmount() *Money {
-	if x != nil {
-		return x.PrimaryAmount
+func (x *ClientPayload_UserAgent) GetLocaleCountryIso31661Alpha2() string {
+	if x != nil && x.LocaleCountryIso31661Alpha2 != nil {
+		return *x.LocaleCountryIso31661Alpha2
 	}
-	return nil
+	return ""
 }
 
-func (x *PaymentInfo) GetExchangeAmount() *Money {
-	if x != nil {
-		return x.ExchangeAmount
+func (x *ClientPayload_UserAgent) GetDeviceBoard() string {
+	if x != nil && x.DeviceBoard != nil {
+		return *x.DeviceBoard
 	}
-	return nil
+	return ""
 }
 
-type NotificationMessageInfo struct {
+type ClientPayload_DevicePairingRegistrationData struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key              *MessageKey `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
-	Message          *Message    `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
-	MessageTimestamp *uint64     `protobuf:"varint,3,opt,name=messageTimestamp" json:"messageTimestamp,omitempty"`
-	Participant      *string     `protobuf:"bytes,4,opt,name=participant" json:"participant,omitempty"`
+	ERegid      []byte `protobuf:"bytes,1,opt,name=eRegid" json:"eRegid,omitempty"`
+	EKeytype    []byte `protobuf:"bytes,2,opt,name=eKeytype" json:"eKeytype,omitempty"`
+	EIdent      []byte `protobuf:"bytes,3,opt,name=eIdent" json:"eIdent,omitempty"`
+	ESkeyId     []byte `protobuf:"bytes,4,opt,name=eSkeyId" json:"eSkeyId,omitempty"`
+	ESkeyVal    []byte `protobuf:"bytes,5,opt,name=eSkeyVal" json:"eSkeyVal,omitempty"`
+	ESkeySig    []byte `protobuf:"bytes,6,opt,name=eSkeySig" json:"eSkeySig,omitempty"`
+	BuildHash   []byte `protobuf:"bytes,7,opt,name=buildHash" json:"buildHash,omitempty"`
+	DeviceProps []byte `protobuf:"bytes,8,opt,name=deviceProps" json:"deviceProps,omitempty"`
 }
 
-func (x *NotificationMessageInfo) Reset() {
-	*x = NotificationMessageInfo{}
+func (x *ClientPayload_DevicePairingRegistrationData) Reset() {
+	*x = ClientPayload_DevicePairingRegistrationData{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[194]
+		mi := &file_binary_proto_def_proto_msgTypes[202]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *NotificationMessageInfo) String() string {
+func (x *ClientPayload_DevicePairingRegistrationData) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*NotificationMessageInfo) ProtoMessage() {}
+func (*ClientPayload_DevicePairingRegistrationData) ProtoMessage() {}
 
-func (x *NotificationMessageInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[194]
+func (x *ClientPayload_DevicePairingRegistrationData) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[202]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -19954,64 +20634,93 @@ func (x *NotificationMessageInfo) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use NotificationMessageInfo.ProtoReflect.Descriptor instead.
-func (*NotificationMessageInfo) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{194}
+// Deprecated: Use ClientPayload_DevicePairingRegistrationData.ProtoReflect.Descriptor instead.
+func (*ClientPayload_DevicePairingRegistrationData) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 2}
 }
 
-func (x *NotificationMessageInfo) GetKey() *MessageKey {
+func (x *ClientPayload_DevicePairingRegistrationData) GetERegid() []byte {
 	if x != nil {
-		return x.Key
+		return x.ERegid
 	}
 	return nil
 }
 
-func (x *NotificationMessageInfo) GetMessage() *Message {
+func (x *ClientPayload_DevicePairingRegistrationData) GetEKeytype() []byte {
 	if x != nil {
-		return x.Message
+		return x.EKeytype
 	}
 	return nil
 }
 
-func (x *NotificationMessageInfo) GetMessageTimestamp() uint64 {
-	if x != nil && x.MessageTimestamp != nil {
-		return *x.MessageTimestamp
+func (x *ClientPayload_DevicePairingRegistrationData) GetEIdent() []byte {
+	if x != nil {
+		return x.EIdent
 	}
-	return 0
+	return nil
 }
 
-func (x *NotificationMessageInfo) GetParticipant() string {
-	if x != nil && x.Participant != nil {
-		return *x.Participant
+func (x *ClientPayload_DevicePairingRegistrationData) GetESkeyId() []byte {
+	if x != nil {
+		return x.ESkeyId
 	}
-	return ""
+	return nil
 }
 
-type MediaData struct {
+func (x *ClientPayload_DevicePairingRegistrationData) GetESkeyVal() []byte {
+	if x != nil {
+		return x.ESkeyVal
+	}
+	return nil
+}
+
+func (x *ClientPayload_DevicePairingRegistrationData) GetESkeySig() []byte {
+	if x != nil {
+		return x.ESkeySig
+	}
+	return nil
+}
+
+func (x *ClientPayload_DevicePairingRegistrationData) GetBuildHash() []byte {
+	if x != nil {
+		return x.BuildHash
+	}
+	return nil
+}
+
+func (x *ClientPayload_DevicePairingRegistrationData) GetDeviceProps() []byte {
+	if x != nil {
+		return x.DeviceProps
+	}
+	return nil
+}
+
+type ClientPayload_DNSSource struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	LocalPath *string `protobuf:"bytes,1,opt,name=localPath" json:"localPath,omitempty"`
+	DnsMethod *ClientPayload_DNSSource_DNSResolutionMethod `protobuf:"varint,15,opt,name=dnsMethod,enum=proto.ClientPayload_DNSSource_DNSResolutionMethod" json:"dnsMethod,omitempty"`
+	AppCached *bool                                        `protobuf:"varint,16,opt,name=appCached" json:"appCached,omitempty"`
 }
 
-func (x *MediaData) Reset() {
-	*x = MediaData{}
+func (x *ClientPayload_DNSSource) Reset() {
+	*x = ClientPayload_DNSSource{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[195]
+		mi := &file_binary_proto_def_proto_msgTypes[203]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *MediaData) String() string {
+func (x *ClientPayload_DNSSource) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MediaData) ProtoMessage() {}
+func (*ClientPayload_DNSSource) ProtoMessage() {}
 
-func (x *MediaData) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[195]
+func (x *ClientPayload_DNSSource) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[203]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -20022,107 +20731,181 @@ func (x *MediaData) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MediaData.ProtoReflect.Descriptor instead.
-func (*MediaData) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{195}
+// Deprecated: Use ClientPayload_DNSSource.ProtoReflect.Descriptor instead.
+func (*ClientPayload_DNSSource) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 3}
 }
 
-func (x *MediaData) GetLocalPath() string {
-	if x != nil && x.LocalPath != nil {
-		return *x.LocalPath
+func (x *ClientPayload_DNSSource) GetDnsMethod() ClientPayload_DNSSource_DNSResolutionMethod {
+	if x != nil && x.DnsMethod != nil {
+		return *x.DnsMethod
 	}
-	return ""
+	return ClientPayload_DNSSource_SYSTEM
 }
 
-type KeepInChat struct {
+func (x *ClientPayload_DNSSource) GetAppCached() bool {
+	if x != nil && x.AppCached != nil {
+		return *x.AppCached
+	}
+	return false
+}
+
+type ClientPayload_WebInfo_WebdPayload struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	KeepType        *KeepType `protobuf:"varint,1,opt,name=keepType,enum=proto.KeepType" json:"keepType,omitempty"`
-	ServerTimestamp *int64    `protobuf:"varint,2,opt,name=serverTimestamp" json:"serverTimestamp,omitempty"`
-	DeviceJid       *string   `protobuf:"bytes,3,opt,name=deviceJid" json:"deviceJid,omitempty"`
+	UsesParticipantInKey     *bool   `protobuf:"varint,1,opt,name=usesParticipantInKey" json:"usesParticipantInKey,omitempty"`
+	SupportsStarredMessages  *bool   `protobuf:"varint,2,opt,name=supportsStarredMessages" json:"supportsStarredMessages,omitempty"`
+	SupportsDocumentMessages *bool   `protobuf:"varint,3,opt,name=supportsDocumentMessages" json:"supportsDocumentMessages,omitempty"`
+	SupportsUrlMessages      *bool   `protobuf:"varint,4,opt,name=supportsUrlMessages" json:"supportsUrlMessages,omitempty"`
+	SupportsMediaRetry       *bool   `protobuf:"varint,5,opt,name=supportsMediaRetry" json:"supportsMediaRetry,omitempty"`
+	SupportsE2EImage         *bool   `protobuf:"varint,6,opt,name=supportsE2EImage" json:"supportsE2EImage,omitempty"`
+	SupportsE2EVideo         *bool   `protobuf:"varint,7,opt,name=supportsE2EVideo" json:"supportsE2EVideo,omitempty"`
+	SupportsE2EAudio         *bool   `protobuf:"varint,8,opt,name=supportsE2EAudio" json:"supportsE2EAudio,omitempty"`
+	SupportsE2EDocument      *bool   `protobuf:"varint,9,opt,name=supportsE2EDocument" json:"supportsE2EDocument,omitempty"`
+	DocumentTypes            *string `protobuf:"bytes,10,opt,name=documentTypes" json:"documentTypes,omitempty"`
+	Features                 []byte  `protobuf:"bytes,11,opt,name=features" json:"features,omitempty"`
 }
 
-func (x *KeepInChat) Reset() {
-	*x = KeepInChat{}
+func (x *ClientPayload_WebInfo_WebdPayload) Reset() {
+	*x = ClientPayload_WebInfo_WebdPayload{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[196]
+		mi := &file_binary_proto_def_proto_msgTypes[204]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *KeepInChat) String() string {
-	return protoimpl.X.MessageStringOf(x)
+func (x *ClientPayload_WebInfo_WebdPayload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientPayload_WebInfo_WebdPayload) ProtoMessage() {}
+
+func (x *ClientPayload_WebInfo_WebdPayload) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[204]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientPayload_WebInfo_WebdPayload.ProtoReflect.Descriptor instead.
+func (*ClientPayload_WebInfo_WebdPayload) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 0, 0}
+}
+
+func (x *ClientPayload_WebInfo_WebdPayload) GetUsesParticipantInKey() bool {
+	if x != nil && x.UsesParticipantInKey != nil {
+		return *x.UsesParticipantInKey
+	}
+	return false
+}
+
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsStarredMessages() bool {
+	if x != nil && x.SupportsStarredMessages != nil {
+		return *x.SupportsStarredMessages
+	}
+	return false
+}
+
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsDocumentMessages() bool {
+	if x != nil && x.SupportsDocumentMessages != nil {
+		return *x.SupportsDocumentMessages
+	}
+	return false
+}
+
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsUrlMessages() bool {
+	if x != nil && x.SupportsUrlMessages != nil {
+		return *x.SupportsUrlMessages
+	}
+	return false
+}
+
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsMediaRetry() bool {
+	if x != nil && x.SupportsMediaRetry != nil {
+		return *x.SupportsMediaRetry
+	}
+	return false
 }
 
-func (*KeepInChat) ProtoMessage() {}
-
-func (x *KeepInChat) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[196]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsE2EImage() bool {
+	if x != nil && x.SupportsE2EImage != nil {
+		return *x.SupportsE2EImage
 	}
-	return mi.MessageOf(x)
+	return false
 }
 
-// Deprecated: Use KeepInChat.ProtoReflect.Descriptor instead.
-func (*KeepInChat) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{196}
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsE2EVideo() bool {
+	if x != nil && x.SupportsE2EVideo != nil {
+		return *x.SupportsE2EVideo
+	}
+	return false
 }
 
-func (x *KeepInChat) GetKeepType() KeepType {
-	if x != nil && x.KeepType != nil {
-		return *x.KeepType
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsE2EAudio() bool {
+	if x != nil && x.SupportsE2EAudio != nil {
+		return *x.SupportsE2EAudio
 	}
-	return KeepType_UNKNOWN
+	return false
 }
 
-func (x *KeepInChat) GetServerTimestamp() int64 {
-	if x != nil && x.ServerTimestamp != nil {
-		return *x.ServerTimestamp
+func (x *ClientPayload_WebInfo_WebdPayload) GetSupportsE2EDocument() bool {
+	if x != nil && x.SupportsE2EDocument != nil {
+		return *x.SupportsE2EDocument
 	}
-	return 0
+	return false
 }
 
-func (x *KeepInChat) GetDeviceJid() string {
-	if x != nil && x.DeviceJid != nil {
-		return *x.DeviceJid
+func (x *ClientPayload_WebInfo_WebdPayload) GetDocumentTypes() string {
+	if x != nil && x.DocumentTypes != nil {
+		return *x.DocumentTypes
 	}
 	return ""
 }
 
-type NoiseCertificate struct {
+func (x *ClientPayload_WebInfo_WebdPayload) GetFeatures() []byte {
+	if x != nil {
+		return x.Features
+	}
+	return nil
+}
+
+type ClientPayload_UserAgent_AppVersion struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Details   []byte `protobuf:"bytes,1,opt,name=details" json:"details,omitempty"`
-	Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
+	Primary    *uint32 `protobuf:"varint,1,opt,name=primary" json:"primary,omitempty"`
+	Secondary  *uint32 `protobuf:"varint,2,opt,name=secondary" json:"secondary,omitempty"`
+	Tertiary   *uint32 `protobuf:"varint,3,opt,name=tertiary" json:"tertiary,omitempty"`
+	Quaternary *uint32 `protobuf:"varint,4,opt,name=quaternary" json:"quaternary,omitempty"`
+	Quinary    *uint32 `protobuf:"varint,5,opt,name=quinary" json:"quinary,omitempty"`
 }
 
-func (x *NoiseCertificate) Reset() {
-	*x = NoiseCertificate{}
+func (x *ClientPayload_UserAgent_AppVersion) Reset() {
+	*x = ClientPayload_UserAgent_AppVersion{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[197]
+		mi := &file_binary_proto_def_proto_msgTypes[205]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *NoiseCertificate) String() string {
+func (x *ClientPayload_UserAgent_AppVersion) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*NoiseCertificate) ProtoMessage() {}
+func (*ClientPayload_UserAgent_AppVersion) ProtoMessage() {}
 
-func (x *NoiseCertificate) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[197]
+func (x *ClientPayload_UserAgent_AppVersion) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[205]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -20133,27 +20916,47 @@ func (x *NoiseCertificate) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use NoiseCertificate.ProtoReflect.Descriptor instead.
-func (*NoiseCertificate) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{197}
+// Deprecated: Use ClientPayload_UserAgent_AppVersion.ProtoReflect.Descriptor instead.
+func (*ClientPayload_UserAgent_AppVersion) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{142, 1, 0}
 }
 
-func (x *NoiseCertificate) GetDetails() []byte {
-	if x != nil {
-		return x.Details
+func (x *ClientPayload_UserAgent_AppVersion) GetPrimary() uint32 {
+	if x != nil && x.Primary != nil {
+		return *x.Primary
 	}
-	return nil
+	return 0
 }
 
-func (x *NoiseCertificate) GetSignature() []byte {
-	if x != nil {
-		return x.Signature
+func (x *ClientPayload_UserAgent_AppVersion) GetSecondary() uint32 {
+	if x != nil && x.Secondary != nil {
+		return *x.Secondary
 	}
-	return nil
+	return 0
+}
+
+func (x *ClientPayload_UserAgent_AppVersion) GetTertiary() uint32 {
+	if x != nil && x.Tertiary != nil {
+		return *x.Tertiary
+	}
+	return 0
+}
+
+func (x *ClientPayload_UserAgent_AppVersion) GetQuaternary() uint32 {
+	if x != nil && x.Quaternary != nil {
+		return *x.Quaternary
+	}
+	return 0
+}
+
+func (x *ClientPayload_UserAgent_AppVersion) GetQuinary() uint32 {
+	if x != nil && x.Quinary != nil {
+		return *x.Quinary
+	}
+	return 0
 }
 
-// Renamed from NoiseCertificate$Details
-type NoiseCertificateDetails struct {
+type NoiseCertificate_Details struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
@@ -20165,23 +20968,23 @@ type NoiseCertificateDetails struct {
 	Key     []byte  `protobuf:"bytes,5,opt,name=key" json:"key,omitempty"`
 }
 
-func (x *NoiseCertificateDetails) Reset() {
-	*x = NoiseCertificateDetails{}
+func (x *NoiseCertificate_Details) Reset() {
+	*x = NoiseCertificate_Details{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[198]
+		mi := &file_binary_proto_def_proto_msgTypes[206]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *NoiseCertificateDetails) String() string {
+func (x *NoiseCertificate_Details) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*NoiseCertificateDetails) ProtoMessage() {}
+func (*NoiseCertificate_Details) ProtoMessage() {}
 
-func (x *NoiseCertificateDetails) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[198]
+func (x *NoiseCertificate_Details) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[206]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -20192,103 +20995,47 @@ func (x *NoiseCertificateDetails) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use NoiseCertificateDetails.ProtoReflect.Descriptor instead.
-func (*NoiseCertificateDetails) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{198}
+// Deprecated: Use NoiseCertificate_Details.ProtoReflect.Descriptor instead.
+func (*NoiseCertificate_Details) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{156, 0}
 }
 
-func (x *NoiseCertificateDetails) GetSerial() uint32 {
+func (x *NoiseCertificate_Details) GetSerial() uint32 {
 	if x != nil && x.Serial != nil {
 		return *x.Serial
 	}
 	return 0
 }
 
-func (x *NoiseCertificateDetails) GetIssuer() string {
+func (x *NoiseCertificate_Details) GetIssuer() string {
 	if x != nil && x.Issuer != nil {
 		return *x.Issuer
 	}
 	return ""
 }
 
-func (x *NoiseCertificateDetails) GetExpires() uint64 {
+func (x *NoiseCertificate_Details) GetExpires() uint64 {
 	if x != nil && x.Expires != nil {
 		return *x.Expires
 	}
 	return 0
 }
 
-func (x *NoiseCertificateDetails) GetSubject() string {
+func (x *NoiseCertificate_Details) GetSubject() string {
 	if x != nil && x.Subject != nil {
 		return *x.Subject
 	}
 	return ""
 }
 
-func (x *NoiseCertificateDetails) GetKey() []byte {
+func (x *NoiseCertificate_Details) GetKey() []byte {
 	if x != nil {
 		return x.Key
 	}
 	return nil
 }
 
-type CertChain struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Leaf         *CertChainNoiseCertificate `protobuf:"bytes,1,opt,name=leaf" json:"leaf,omitempty"`
-	Intermediate *CertChainNoiseCertificate `protobuf:"bytes,2,opt,name=intermediate" json:"intermediate,omitempty"`
-}
-
-func (x *CertChain) Reset() {
-	*x = CertChain{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[199]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CertChain) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CertChain) ProtoMessage() {}
-
-func (x *CertChain) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[199]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CertChain.ProtoReflect.Descriptor instead.
-func (*CertChain) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{199}
-}
-
-func (x *CertChain) GetLeaf() *CertChainNoiseCertificate {
-	if x != nil {
-		return x.Leaf
-	}
-	return nil
-}
-
-func (x *CertChain) GetIntermediate() *CertChainNoiseCertificate {
-	if x != nil {
-		return x.Intermediate
-	}
-	return nil
-}
-
-// Renamed from CertChain$NoiseCertificate
-type CertChainNoiseCertificate struct {
+type CertChain_NoiseCertificate struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
@@ -20297,23 +21044,23 @@ type CertChainNoiseCertificate struct {
 	Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"`
 }
 
-func (x *CertChainNoiseCertificate) Reset() {
-	*x = CertChainNoiseCertificate{}
+func (x *CertChain_NoiseCertificate) Reset() {
+	*x = CertChain_NoiseCertificate{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[200]
+		mi := &file_binary_proto_def_proto_msgTypes[207]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *CertChainNoiseCertificate) String() string {
+func (x *CertChain_NoiseCertificate) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*CertChainNoiseCertificate) ProtoMessage() {}
+func (*CertChain_NoiseCertificate) ProtoMessage() {}
 
-func (x *CertChainNoiseCertificate) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[200]
+func (x *CertChain_NoiseCertificate) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[207]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -20324,27 +21071,26 @@ func (x *CertChainNoiseCertificate) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use CertChainNoiseCertificate.ProtoReflect.Descriptor instead.
-func (*CertChainNoiseCertificate) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{200}
+// Deprecated: Use CertChain_NoiseCertificate.ProtoReflect.Descriptor instead.
+func (*CertChain_NoiseCertificate) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{157, 0}
 }
 
-func (x *CertChainNoiseCertificate) GetDetails() []byte {
+func (x *CertChain_NoiseCertificate) GetDetails() []byte {
 	if x != nil {
 		return x.Details
 	}
 	return nil
 }
 
-func (x *CertChainNoiseCertificate) GetSignature() []byte {
+func (x *CertChain_NoiseCertificate) GetSignature() []byte {
 	if x != nil {
 		return x.Signature
 	}
 	return nil
 }
 
-// Renamed from CertChain$NoiseCertificate$Details
-type CertChainNoiseCertificateDetails struct {
+type CertChain_NoiseCertificate_Details struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
@@ -20356,23 +21102,23 @@ type CertChainNoiseCertificateDetails struct {
 	NotAfter     *uint64 `protobuf:"varint,5,opt,name=notAfter" json:"notAfter,omitempty"`
 }
 
-func (x *CertChainNoiseCertificateDetails) Reset() {
-	*x = CertChainNoiseCertificateDetails{}
+func (x *CertChain_NoiseCertificate_Details) Reset() {
+	*x = CertChain_NoiseCertificate_Details{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_binary_proto_def_proto_msgTypes[201]
+		mi := &file_binary_proto_def_proto_msgTypes[208]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *CertChainNoiseCertificateDetails) String() string {
+func (x *CertChain_NoiseCertificate_Details) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*CertChainNoiseCertificateDetails) ProtoMessage() {}
+func (*CertChain_NoiseCertificate_Details) ProtoMessage() {}
 
-func (x *CertChainNoiseCertificateDetails) ProtoReflect() protoreflect.Message {
-	mi := &file_binary_proto_def_proto_msgTypes[201]
+func (x *CertChain_NoiseCertificate_Details) ProtoReflect() protoreflect.Message {
+	mi := &file_binary_proto_def_proto_msgTypes[208]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -20383,40 +21129,40 @@ func (x *CertChainNoiseCertificateDetails) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use CertChainNoiseCertificateDetails.ProtoReflect.Descriptor instead.
-func (*CertChainNoiseCertificateDetails) Descriptor() ([]byte, []int) {
-	return file_binary_proto_def_proto_rawDescGZIP(), []int{201}
+// Deprecated: Use CertChain_NoiseCertificate_Details.ProtoReflect.Descriptor instead.
+func (*CertChain_NoiseCertificate_Details) Descriptor() ([]byte, []int) {
+	return file_binary_proto_def_proto_rawDescGZIP(), []int{157, 0, 0}
 }
 
-func (x *CertChainNoiseCertificateDetails) GetSerial() uint32 {
+func (x *CertChain_NoiseCertificate_Details) GetSerial() uint32 {
 	if x != nil && x.Serial != nil {
 		return *x.Serial
 	}
 	return 0
 }
 
-func (x *CertChainNoiseCertificateDetails) GetIssuerSerial() uint32 {
+func (x *CertChain_NoiseCertificate_Details) GetIssuerSerial() uint32 {
 	if x != nil && x.IssuerSerial != nil {
 		return *x.IssuerSerial
 	}
 	return 0
 }
 
-func (x *CertChainNoiseCertificateDetails) GetKey() []byte {
+func (x *CertChain_NoiseCertificate_Details) GetKey() []byte {
 	if x != nil {
 		return x.Key
 	}
 	return nil
 }
 
-func (x *CertChainNoiseCertificateDetails) GetNotBefore() uint64 {
+func (x *CertChain_NoiseCertificate_Details) GetNotBefore() uint64 {
 	if x != nil && x.NotBefore != nil {
 		return *x.NotBefore
 	}
 	return 0
 }
 
-func (x *CertChainNoiseCertificateDetails) GetNotAfter() uint64 {
+func (x *CertChain_NoiseCertificate_Details) GetNotAfter() uint64 {
 	if x != nil && x.NotAfter != nil {
 		return *x.NotAfter
 	}
@@ -20440,639 +21186,664 @@ func file_binary_proto_def_proto_rawDescGZIP() []byte {
 	return file_binary_proto_def_proto_rawDescData
 }
 
-var file_binary_proto_def_proto_enumTypes = make([]protoimpl.EnumInfo, 51)
-var file_binary_proto_def_proto_msgTypes = make([]protoimpl.MessageInfo, 202)
+var file_binary_proto_def_proto_enumTypes = make([]protoimpl.EnumInfo, 53)
+var file_binary_proto_def_proto_msgTypes = make([]protoimpl.MessageInfo, 209)
 var file_binary_proto_def_proto_goTypes = []interface{}{
-	(KeepType)(0),                            // 0: proto.KeepType
-	(MediaVisibility)(0),                     // 1: proto.MediaVisibility
-	(DeviceProps_DevicePropsPlatformType)(0), // 2: proto.DeviceProps.DevicePropsPlatformType
-	(PaymentInviteMessage_PaymentInviteMessageServiceType)(0),           // 3: proto.PaymentInviteMessage.PaymentInviteMessageServiceType
-	(OrderMessage_OrderMessageOrderStatus)(0),                           // 4: proto.OrderMessage.OrderMessageOrderStatus
-	(OrderMessage_OrderMessageOrderSurface)(0),                          // 5: proto.OrderMessage.OrderMessageOrderSurface
-	(ListResponseMessage_ListResponseMessageListType)(0),                // 6: proto.ListResponseMessage.ListResponseMessageListType
-	(ListMessage_ListMessageListType)(0),                                // 7: proto.ListMessage.ListMessageListType
-	(InvoiceMessage_InvoiceMessageAttachmentType)(0),                    // 8: proto.InvoiceMessage.InvoiceMessageAttachmentType
-	(ShopMessage_ShopMessageSurface)(0),                                 // 9: proto.ShopMessage.ShopMessageSurface
-	(HistorySyncNotification_HistorySyncNotificationHistorySyncType)(0), // 10: proto.HistorySyncNotification.HistorySyncNotificationHistorySyncType
-	(HSMDateTimeComponent_HSMDateTimeComponentDayOfWeekType)(0),         // 11: proto.HSMDateTimeComponent.HSMDateTimeComponentDayOfWeekType
-	(HSMDateTimeComponent_HSMDateTimeComponentCalendarType)(0),          // 12: proto.HSMDateTimeComponent.HSMDateTimeComponentCalendarType
-	(GroupInviteMessage_GroupInviteMessageGroupType)(0),                 // 13: proto.GroupInviteMessage.GroupInviteMessageGroupType
-	(ExtendedTextMessage_ExtendedTextMessageFontType)(0),                // 14: proto.ExtendedTextMessage.ExtendedTextMessageFontType
-	(ExtendedTextMessage_ExtendedTextMessagePreviewType)(0),             // 15: proto.ExtendedTextMessage.ExtendedTextMessagePreviewType
-	(ExtendedTextMessage_ExtendedTextMessageInviteLinkGroupType)(0),     // 16: proto.ExtendedTextMessage.ExtendedTextMessageInviteLinkGroupType
-	(ButtonsResponseMessage_ButtonsResponseMessageType)(0),              // 17: proto.ButtonsResponseMessage.ButtonsResponseMessageType
-	(ButtonsMessage_ButtonsMessageHeaderType)(0),                        // 18: proto.ButtonsMessage.ButtonsMessageHeaderType
-	(Button_ButtonType)(0),                                              // 19: proto.Button.ButtonType
-	(DisappearingMode_DisappearingModeInitiator)(0),                     // 20: proto.DisappearingMode.DisappearingModeInitiator
-	(ExternalAdReplyInfo_ExternalAdReplyInfoMediaType)(0),               // 21: proto.ExternalAdReplyInfo.ExternalAdReplyInfoMediaType
-	(AdReplyInfo_AdReplyInfoMediaType)(0),                               // 22: proto.AdReplyInfo.AdReplyInfoMediaType
-	(PaymentBackground_PaymentBackgroundType)(0),                        // 23: proto.PaymentBackground.PaymentBackgroundType
-	(VideoMessage_VideoMessageAttribution)(0),                           // 24: proto.VideoMessage.VideoMessageAttribution
-	(ProtocolMessage_ProtocolMessageType)(0),                            // 25: proto.ProtocolMessage.ProtocolMessageType
-	(HistorySync_HistorySyncHistorySyncType)(0),                         // 26: proto.HistorySync.HistorySyncHistorySyncType
-	(GroupParticipant_GroupParticipantRank)(0),                          // 27: proto.GroupParticipant.GroupParticipantRank
-	(Conversation_ConversationEndOfHistoryTransferType)(0),              // 28: proto.Conversation.ConversationEndOfHistoryTransferType
-	(MediaRetryNotification_MediaRetryNotificationResultType)(0),        // 29: proto.MediaRetryNotification.MediaRetryNotificationResultType
-	(SyncdMutation_SyncdMutationSyncdOperation)(0),                      // 30: proto.SyncdMutation.SyncdMutationSyncdOperation
-	(BizIdentityInfo_BizIdentityInfoVerifiedLevelValue)(0),              // 31: proto.BizIdentityInfo.BizIdentityInfoVerifiedLevelValue
-	(BizIdentityInfo_BizIdentityInfoHostStorageType)(0),                 // 32: proto.BizIdentityInfo.BizIdentityInfoHostStorageType
-	(BizIdentityInfo_BizIdentityInfoActualActorsType)(0),                // 33: proto.BizIdentityInfo.BizIdentityInfoActualActorsType
-	(BizAccountLinkInfo_BizAccountLinkInfoHostStorageType)(0),           // 34: proto.BizAccountLinkInfo.BizAccountLinkInfoHostStorageType
-	(BizAccountLinkInfo_BizAccountLinkInfoAccountType)(0),               // 35: proto.BizAccountLinkInfo.BizAccountLinkInfoAccountType
-	(ClientPayload_ClientPayloadConnectType)(0),                         // 36: proto.ClientPayload.ClientPayloadConnectType
-	(ClientPayload_ClientPayloadConnectReason)(0),                       // 37: proto.ClientPayload.ClientPayloadConnectReason
-	(ClientPayload_ClientPayloadProduct)(0),                             // 38: proto.ClientPayload.ClientPayloadProduct
-	(ClientPayload_ClientPayloadIOSAppExtension)(0),                     // 39: proto.ClientPayload.ClientPayloadIOSAppExtension
-	(WebInfo_WebInfoWebSubPlatform)(0),                                  // 40: proto.WebInfo.WebInfoWebSubPlatform
-	(UserAgent_UserAgentPlatform)(0),                                    // 41: proto.UserAgent.UserAgentPlatform
-	(UserAgent_UserAgentReleaseChannel)(0),                              // 42: proto.UserAgent.UserAgentReleaseChannel
-	(DNSSource_DNSSourceDNSResolutionMethod)(0),                         // 43: proto.DNSSource.DNSSourceDNSResolutionMethod
-	(WebMessageInfo_WebMessageInfoStatus)(0),                            // 44: proto.WebMessageInfo.WebMessageInfoStatus
-	(WebMessageInfo_WebMessageInfoStubType)(0),                          // 45: proto.WebMessageInfo.WebMessageInfoStubType
-	(WebMessageInfo_WebMessageInfoBizPrivacyStatus)(0),                  // 46: proto.WebMessageInfo.WebMessageInfoBizPrivacyStatus
-	(WebFeatures_WebFeaturesFlag)(0),                                    // 47: proto.WebFeatures.WebFeaturesFlag
-	(PaymentInfo_PaymentInfoCurrency)(0),                                // 48: proto.PaymentInfo.PaymentInfoCurrency
-	(PaymentInfo_PaymentInfoStatus)(0),                                  // 49: proto.PaymentInfo.PaymentInfoStatus
-	(PaymentInfo_PaymentInfoTxnStatus)(0),                               // 50: proto.PaymentInfo.PaymentInfoTxnStatus
-	(*ADVSignedKeyIndexList)(nil),                                       // 51: proto.ADVSignedKeyIndexList
-	(*ADVSignedDeviceIdentity)(nil),                                     // 52: proto.ADVSignedDeviceIdentity
-	(*ADVSignedDeviceIdentityHMAC)(nil),                                 // 53: proto.ADVSignedDeviceIdentityHMAC
-	(*ADVKeyIndexList)(nil),                                             // 54: proto.ADVKeyIndexList
-	(*ADVDeviceIdentity)(nil),                                           // 55: proto.ADVDeviceIdentity
-	(*DeviceProps)(nil),                                                 // 56: proto.DeviceProps
-	(*AppVersion)(nil),                                                  // 57: proto.AppVersion
-	(*ProductSnapshot)(nil),                                             // 58: proto.ProductSnapshot
-	(*CatalogSnapshot)(nil),                                             // 59: proto.CatalogSnapshot
-	(*PollVoteMessage)(nil),                                             // 60: proto.PollVoteMessage
-	(*PollUpdateMessage)(nil),                                           // 61: proto.PollUpdateMessage
-	(*PollUpdateMessageMetadata)(nil),                                   // 62: proto.PollUpdateMessageMetadata
-	(*PollEncValue)(nil),                                                // 63: proto.PollEncValue
-	(*PollCreationMessage)(nil),                                         // 64: proto.PollCreationMessage
-	(*Option)(nil),                                                      // 65: proto.Option
-	(*PaymentInviteMessage)(nil),                                        // 66: proto.PaymentInviteMessage
-	(*OrderMessage)(nil),                                                // 67: proto.OrderMessage
-	(*LocationMessage)(nil),                                             // 68: proto.LocationMessage
-	(*LiveLocationMessage)(nil),                                         // 69: proto.LiveLocationMessage
-	(*ListResponseMessage)(nil),                                         // 70: proto.ListResponseMessage
-	(*SingleSelectReply)(nil),                                           // 71: proto.SingleSelectReply
-	(*ListMessage)(nil),                                                 // 72: proto.ListMessage
-	(*Section)(nil),                                                     // 73: proto.Section
-	(*Row)(nil),                                                         // 74: proto.Row
-	(*Product)(nil),                                                     // 75: proto.Product
-	(*ProductSection)(nil),                                              // 76: proto.ProductSection
-	(*ProductListInfo)(nil),                                             // 77: proto.ProductListInfo
-	(*ProductListHeaderImage)(nil),                                      // 78: proto.ProductListHeaderImage
-	(*KeepInChatMessage)(nil),                                           // 79: proto.KeepInChatMessage
-	(*InvoiceMessage)(nil),                                              // 80: proto.InvoiceMessage
-	(*InteractiveResponseMessage)(nil),                                  // 81: proto.InteractiveResponseMessage
-	(*NativeFlowResponseMessage)(nil),                                   // 82: proto.NativeFlowResponseMessage
-	(*InteractiveResponseMessageBody)(nil),                              // 83: proto.InteractiveResponseMessageBody
-	(*InteractiveMessage)(nil),                                          // 84: proto.InteractiveMessage
-	(*ShopMessage)(nil),                                                 // 85: proto.ShopMessage
-	(*NativeFlowMessage)(nil),                                           // 86: proto.NativeFlowMessage
-	(*NativeFlowButton)(nil),                                            // 87: proto.NativeFlowButton
-	(*Header)(nil),                                                      // 88: proto.Header
-	(*Footer)(nil),                                                      // 89: proto.Footer
-	(*CollectionMessage)(nil),                                           // 90: proto.CollectionMessage
-	(*InteractiveMessageBody)(nil),                                      // 91: proto.InteractiveMessageBody
-	(*InitialSecurityNotificationSettingSync)(nil),                      // 92: proto.InitialSecurityNotificationSettingSync
-	(*ImageMessage)(nil),                                                // 93: proto.ImageMessage
-	(*HistorySyncNotification)(nil),                                     // 94: proto.HistorySyncNotification
-	(*HighlyStructuredMessage)(nil),                                     // 95: proto.HighlyStructuredMessage
-	(*HSMLocalizableParameter)(nil),                                     // 96: proto.HSMLocalizableParameter
-	(*HSMDateTime)(nil),                                                 // 97: proto.HSMDateTime
-	(*HSMDateTimeUnixEpoch)(nil),                                        // 98: proto.HSMDateTimeUnixEpoch
-	(*HSMDateTimeComponent)(nil),                                        // 99: proto.HSMDateTimeComponent
-	(*HSMCurrency)(nil),                                                 // 100: proto.HSMCurrency
-	(*GroupInviteMessage)(nil),                                          // 101: proto.GroupInviteMessage
-	(*FutureProofMessage)(nil),                                          // 102: proto.FutureProofMessage
-	(*ExtendedTextMessage)(nil),                                         // 103: proto.ExtendedTextMessage
-	(*DocumentMessage)(nil),                                             // 104: proto.DocumentMessage
-	(*DeviceSentMessage)(nil),                                           // 105: proto.DeviceSentMessage
-	(*DeclinePaymentRequestMessage)(nil),                                // 106: proto.DeclinePaymentRequestMessage
-	(*ContactsArrayMessage)(nil),                                        // 107: proto.ContactsArrayMessage
-	(*ContactMessage)(nil),                                              // 108: proto.ContactMessage
-	(*Chat)(nil),                                                        // 109: proto.Chat
-	(*CancelPaymentRequestMessage)(nil),                                 // 110: proto.CancelPaymentRequestMessage
-	(*Call)(nil),                                                        // 111: proto.Call
-	(*ButtonsResponseMessage)(nil),                                      // 112: proto.ButtonsResponseMessage
-	(*ButtonsMessage)(nil),                                              // 113: proto.ButtonsMessage
-	(*Button)(nil),                                                      // 114: proto.Button
-	(*NativeFlowInfo)(nil),                                              // 115: proto.NativeFlowInfo
-	(*ButtonText)(nil),                                                  // 116: proto.ButtonText
-	(*AudioMessage)(nil),                                                // 117: proto.AudioMessage
-	(*AppStateSyncKey)(nil),                                             // 118: proto.AppStateSyncKey
-	(*AppStateSyncKeyShare)(nil),                                        // 119: proto.AppStateSyncKeyShare
-	(*AppStateSyncKeyRequest)(nil),                                      // 120: proto.AppStateSyncKeyRequest
-	(*AppStateSyncKeyId)(nil),                                           // 121: proto.AppStateSyncKeyId
-	(*AppStateSyncKeyFingerprint)(nil),                                  // 122: proto.AppStateSyncKeyFingerprint
-	(*AppStateSyncKeyData)(nil),                                         // 123: proto.AppStateSyncKeyData
-	(*AppStateFatalExceptionNotification)(nil),                          // 124: proto.AppStateFatalExceptionNotification
-	(*Location)(nil),                                                    // 125: proto.Location
-	(*InteractiveAnnotation)(nil),                                       // 126: proto.InteractiveAnnotation
-	(*HydratedTemplateButton)(nil),                                      // 127: proto.HydratedTemplateButton
-	(*HydratedURLButton)(nil),                                           // 128: proto.HydratedURLButton
-	(*HydratedQuickReplyButton)(nil),                                    // 129: proto.HydratedQuickReplyButton
-	(*HydratedCallButton)(nil),                                          // 130: proto.HydratedCallButton
-	(*DisappearingMode)(nil),                                            // 131: proto.DisappearingMode
-	(*DeviceListMetadata)(nil),                                          // 132: proto.DeviceListMetadata
-	(*ContextInfo)(nil),                                                 // 133: proto.ContextInfo
-	(*ExternalAdReplyInfo)(nil),                                         // 134: proto.ExternalAdReplyInfo
-	(*AdReplyInfo)(nil),                                                 // 135: proto.AdReplyInfo
-	(*ActionLink)(nil),                                                  // 136: proto.ActionLink
-	(*TemplateButton)(nil),                                              // 137: proto.TemplateButton
-	(*URLButton)(nil),                                                   // 138: proto.URLButton
-	(*QuickReplyButton)(nil),                                            // 139: proto.QuickReplyButton
-	(*CallButton)(nil),                                                  // 140: proto.CallButton
-	(*Point)(nil),                                                       // 141: proto.Point
-	(*PaymentBackground)(nil),                                           // 142: proto.PaymentBackground
-	(*PBMediaData)(nil),                                                 // 143: proto.PBMediaData
-	(*Money)(nil),                                                       // 144: proto.Money
-	(*Message)(nil),                                                     // 145: proto.Message
-	(*MessageContextInfo)(nil),                                          // 146: proto.MessageContextInfo
-	(*VideoMessage)(nil),                                                // 147: proto.VideoMessage
-	(*TemplateMessage)(nil),                                             // 148: proto.TemplateMessage
-	(*HydratedFourRowTemplate)(nil),                                     // 149: proto.HydratedFourRowTemplate
-	(*FourRowTemplate)(nil),                                             // 150: proto.FourRowTemplate
-	(*TemplateButtonReplyMessage)(nil),                                  // 151: proto.TemplateButtonReplyMessage
-	(*StickerSyncRMRMessage)(nil),                                       // 152: proto.StickerSyncRMRMessage
-	(*StickerMessage)(nil),                                              // 153: proto.StickerMessage
-	(*SenderKeyDistributionMessage)(nil),                                // 154: proto.SenderKeyDistributionMessage
-	(*SendPaymentMessage)(nil),                                          // 155: proto.SendPaymentMessage
-	(*RequestPaymentMessage)(nil),                                       // 156: proto.RequestPaymentMessage
-	(*ReactionMessage)(nil),                                             // 157: proto.ReactionMessage
-	(*ProtocolMessage)(nil),                                             // 158: proto.ProtocolMessage
-	(*ProductMessage)(nil),                                              // 159: proto.ProductMessage
-	(*EphemeralSetting)(nil),                                            // 160: proto.EphemeralSetting
-	(*WallpaperSettings)(nil),                                           // 161: proto.WallpaperSettings
-	(*Pushname)(nil),                                                    // 162: proto.Pushname
-	(*HistorySync)(nil),                                                 // 163: proto.HistorySync
-	(*HistorySyncMsg)(nil),                                              // 164: proto.HistorySyncMsg
-	(*GroupParticipant)(nil),                                            // 165: proto.GroupParticipant
-	(*GlobalSettings)(nil),                                              // 166: proto.GlobalSettings
-	(*Conversation)(nil),                                                // 167: proto.Conversation
-	(*AutoDownloadSettings)(nil),                                        // 168: proto.AutoDownloadSettings
-	(*MsgRowOpaqueData)(nil),                                            // 169: proto.MsgRowOpaqueData
-	(*MsgOpaqueData)(nil),                                               // 170: proto.MsgOpaqueData
-	(*PollOption)(nil),                                                  // 171: proto.PollOption
-	(*ServerErrorReceipt)(nil),                                          // 172: proto.ServerErrorReceipt
-	(*MediaRetryNotification)(nil),                                      // 173: proto.MediaRetryNotification
-	(*MessageKey)(nil),                                                  // 174: proto.MessageKey
-	(*SyncdVersion)(nil),                                                // 175: proto.SyncdVersion
-	(*SyncdValue)(nil),                                                  // 176: proto.SyncdValue
-	(*SyncdSnapshot)(nil),                                               // 177: proto.SyncdSnapshot
-	(*SyncdRecord)(nil),                                                 // 178: proto.SyncdRecord
-	(*SyncdPatch)(nil),                                                  // 179: proto.SyncdPatch
-	(*SyncdMutations)(nil),                                              // 180: proto.SyncdMutations
-	(*SyncdMutation)(nil),                                               // 181: proto.SyncdMutation
-	(*SyncdIndex)(nil),                                                  // 182: proto.SyncdIndex
-	(*KeyId)(nil),                                                       // 183: proto.KeyId
-	(*ExternalBlobReference)(nil),                                       // 184: proto.ExternalBlobReference
-	(*ExitCode)(nil),                                                    // 185: proto.ExitCode
-	(*SyncActionValue)(nil),                                             // 186: proto.SyncActionValue
-	(*UserStatusMuteAction)(nil),                                        // 187: proto.UserStatusMuteAction
-	(*UnarchiveChatsSetting)(nil),                                       // 188: proto.UnarchiveChatsSetting
-	(*TimeFormatAction)(nil),                                            // 189: proto.TimeFormatAction
-	(*SyncActionMessage)(nil),                                           // 190: proto.SyncActionMessage
-	(*SyncActionMessageRange)(nil),                                      // 191: proto.SyncActionMessageRange
-	(*SubscriptionAction)(nil),                                          // 192: proto.SubscriptionAction
-	(*StarAction)(nil),                                                  // 193: proto.StarAction
-	(*SecurityNotificationSetting)(nil),                                 // 194: proto.SecurityNotificationSetting
-	(*RecentStickerWeightsAction)(nil),                                  // 195: proto.RecentStickerWeightsAction
-	(*RecentStickerMetadata)(nil),                                       // 196: proto.RecentStickerMetadata
-	(*RecentEmojiWeightsAction)(nil),                                    // 197: proto.RecentEmojiWeightsAction
-	(*QuickReplyAction)(nil),                                            // 198: proto.QuickReplyAction
-	(*PushNameSetting)(nil),                                             // 199: proto.PushNameSetting
-	(*PrimaryFeature)(nil),                                              // 200: proto.PrimaryFeature
-	(*PinAction)(nil),                                                   // 201: proto.PinAction
-	(*MuteAction)(nil),                                                  // 202: proto.MuteAction
-	(*MarkChatAsReadAction)(nil),                                        // 203: proto.MarkChatAsReadAction
-	(*LocaleSetting)(nil),                                               // 204: proto.LocaleSetting
-	(*LabelEditAction)(nil),                                             // 205: proto.LabelEditAction
-	(*LabelAssociationAction)(nil),                                      // 206: proto.LabelAssociationAction
-	(*KeyExpiration)(nil),                                               // 207: proto.KeyExpiration
-	(*FavoriteStickerAction)(nil),                                       // 208: proto.FavoriteStickerAction
-	(*DeleteMessageForMeAction)(nil),                                    // 209: proto.DeleteMessageForMeAction
-	(*DeleteChatAction)(nil),                                            // 210: proto.DeleteChatAction
-	(*ContactAction)(nil),                                               // 211: proto.ContactAction
-	(*ClearChatAction)(nil),                                             // 212: proto.ClearChatAction
-	(*ArchiveChatAction)(nil),                                           // 213: proto.ArchiveChatAction
-	(*AndroidUnsupportedActions)(nil),                                   // 214: proto.AndroidUnsupportedActions
-	(*AgentAction)(nil),                                                 // 215: proto.AgentAction
-	(*SyncActionData)(nil),                                              // 216: proto.SyncActionData
-	(*RecentStickerWeight)(nil),                                         // 217: proto.RecentStickerWeight
-	(*RecentEmojiWeight)(nil),                                           // 218: proto.RecentEmojiWeight
-	(*VerifiedNameCertificate)(nil),                                     // 219: proto.VerifiedNameCertificate
-	(*VerifiedNameDetails)(nil),                                         // 220: proto.VerifiedNameDetails
-	(*LocalizedName)(nil),                                               // 221: proto.LocalizedName
-	(*BizIdentityInfo)(nil),                                             // 222: proto.BizIdentityInfo
-	(*BizAccountPayload)(nil),                                           // 223: proto.BizAccountPayload
-	(*BizAccountLinkInfo)(nil),                                          // 224: proto.BizAccountLinkInfo
-	(*HandshakeMessage)(nil),                                            // 225: proto.HandshakeMessage
-	(*ServerHello)(nil),                                                 // 226: proto.ServerHello
-	(*ClientHello)(nil),                                                 // 227: proto.ClientHello
-	(*ClientFinish)(nil),                                                // 228: proto.ClientFinish
-	(*ClientPayload)(nil),                                               // 229: proto.ClientPayload
-	(*WebInfo)(nil),                                                     // 230: proto.WebInfo
-	(*WebdPayload)(nil),                                                 // 231: proto.WebdPayload
-	(*UserAgent)(nil),                                                   // 232: proto.UserAgent
-	(*DevicePairingRegistrationData)(nil),                               // 233: proto.DevicePairingRegistrationData
-	(*DNSSource)(nil),                                                   // 234: proto.DNSSource
-	(*WebNotificationsInfo)(nil),                                        // 235: proto.WebNotificationsInfo
-	(*WebMessageInfo)(nil),                                              // 236: proto.WebMessageInfo
-	(*WebFeatures)(nil),                                                 // 237: proto.WebFeatures
-	(*UserReceipt)(nil),                                                 // 238: proto.UserReceipt
-	(*StatusPSA)(nil),                                                   // 239: proto.StatusPSA
-	(*Reaction)(nil),                                                    // 240: proto.Reaction
-	(*PollUpdate)(nil),                                                  // 241: proto.PollUpdate
-	(*PollAdditionalMetadata)(nil),                                      // 242: proto.PollAdditionalMetadata
-	(*PhotoChange)(nil),                                                 // 243: proto.PhotoChange
-	(*PaymentInfo)(nil),                                                 // 244: proto.PaymentInfo
-	(*NotificationMessageInfo)(nil),                                     // 245: proto.NotificationMessageInfo
-	(*MediaData)(nil),                                                   // 246: proto.MediaData
-	(*KeepInChat)(nil),                                                  // 247: proto.KeepInChat
-	(*NoiseCertificate)(nil),                                            // 248: proto.NoiseCertificate
-	(*NoiseCertificateDetails)(nil),                                     // 249: proto.NoiseCertificateDetails
-	(*CertChain)(nil),                                                   // 250: proto.CertChain
-	(*CertChainNoiseCertificate)(nil),                                   // 251: proto.CertChainNoiseCertificate
-	(*CertChainNoiseCertificateDetails)(nil),                            // 252: proto.CertChainNoiseCertificateDetails
+	(KeepType)(0),                                // 0: proto.KeepType
+	(RmrSource)(0),                               // 1: proto.RmrSource
+	(MediaVisibility)(0),                         // 2: proto.MediaVisibility
+	(DeviceProps_PlatformType)(0),                // 3: proto.DeviceProps.PlatformType
+	(PaymentInviteMessage_ServiceType)(0),        // 4: proto.PaymentInviteMessage.ServiceType
+	(OrderMessage_OrderSurface)(0),               // 5: proto.OrderMessage.OrderSurface
+	(OrderMessage_OrderStatus)(0),                // 6: proto.OrderMessage.OrderStatus
+	(ListResponseMessage_ListType)(0),            // 7: proto.ListResponseMessage.ListType
+	(ListMessage_ListType)(0),                    // 8: proto.ListMessage.ListType
+	(InvoiceMessage_AttachmentType)(0),           // 9: proto.InvoiceMessage.AttachmentType
+	(InteractiveMessage_ShopMessage_Surface)(0),  // 10: proto.InteractiveMessage.ShopMessage.Surface
+	(HistorySyncNotification_HistorySyncType)(0), // 11: proto.HistorySyncNotification.HistorySyncType
+	(HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_DayOfWeekType)(0), // 12: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.DayOfWeekType
+	(HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent_CalendarType)(0),  // 13: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.CalendarType
+	(GroupInviteMessage_GroupType)(0),                             // 14: proto.GroupInviteMessage.GroupType
+	(ExtendedTextMessage_PreviewType)(0),                          // 15: proto.ExtendedTextMessage.PreviewType
+	(ExtendedTextMessage_InviteLinkGroupType)(0),                  // 16: proto.ExtendedTextMessage.InviteLinkGroupType
+	(ExtendedTextMessage_FontType)(0),                             // 17: proto.ExtendedTextMessage.FontType
+	(ButtonsResponseMessage_Type)(0),                              // 18: proto.ButtonsResponseMessage.Type
+	(ButtonsMessage_HeaderType)(0),                                // 19: proto.ButtonsMessage.HeaderType
+	(ButtonsMessage_Button_Type)(0),                               // 20: proto.ButtonsMessage.Button.Type
+	(DisappearingMode_Initiator)(0),                               // 21: proto.DisappearingMode.Initiator
+	(ContextInfo_ExternalAdReplyInfo_MediaType)(0),                // 22: proto.ContextInfo.ExternalAdReplyInfo.MediaType
+	(ContextInfo_AdReplyInfo_MediaType)(0),                        // 23: proto.ContextInfo.AdReplyInfo.MediaType
+	(PaymentBackground_Type)(0),                                   // 24: proto.PaymentBackground.Type
+	(VideoMessage_Attribution)(0),                                 // 25: proto.VideoMessage.Attribution
+	(ProtocolMessage_Type)(0),                                     // 26: proto.ProtocolMessage.Type
+	(PastParticipant_LeaveReason)(0),                              // 27: proto.PastParticipant.LeaveReason
+	(HistorySync_HistorySyncType)(0),                              // 28: proto.HistorySync.HistorySyncType
+	(GroupParticipant_Rank)(0),                                    // 29: proto.GroupParticipant.Rank
+	(Conversation_EndOfHistoryTransferType)(0),                    // 30: proto.Conversation.EndOfHistoryTransferType
+	(MediaRetryNotification_ResultType)(0),                        // 31: proto.MediaRetryNotification.ResultType
+	(SyncdMutation_SyncdOperation)(0),                             // 32: proto.SyncdMutation.SyncdOperation
+	(BizIdentityInfo_VerifiedLevelValue)(0),                       // 33: proto.BizIdentityInfo.VerifiedLevelValue
+	(BizIdentityInfo_HostStorageType)(0),                          // 34: proto.BizIdentityInfo.HostStorageType
+	(BizIdentityInfo_ActualActorsType)(0),                         // 35: proto.BizIdentityInfo.ActualActorsType
+	(BizAccountLinkInfo_HostStorageType)(0),                       // 36: proto.BizAccountLinkInfo.HostStorageType
+	(BizAccountLinkInfo_AccountType)(0),                           // 37: proto.BizAccountLinkInfo.AccountType
+	(ClientPayload_Product)(0),                                    // 38: proto.ClientPayload.Product
+	(ClientPayload_IOSAppExtension)(0),                            // 39: proto.ClientPayload.IOSAppExtension
+	(ClientPayload_ConnectType)(0),                                // 40: proto.ClientPayload.ConnectType
+	(ClientPayload_ConnectReason)(0),                              // 41: proto.ClientPayload.ConnectReason
+	(ClientPayload_WebInfo_WebSubPlatform)(0),                     // 42: proto.ClientPayload.WebInfo.WebSubPlatform
+	(ClientPayload_UserAgent_ReleaseChannel)(0),                   // 43: proto.ClientPayload.UserAgent.ReleaseChannel
+	(ClientPayload_UserAgent_Platform)(0),                         // 44: proto.ClientPayload.UserAgent.Platform
+	(ClientPayload_DNSSource_DNSResolutionMethod)(0),              // 45: proto.ClientPayload.DNSSource.DNSResolutionMethod
+	(WebMessageInfo_StubType)(0),                                  // 46: proto.WebMessageInfo.StubType
+	(WebMessageInfo_Status)(0),                                    // 47: proto.WebMessageInfo.Status
+	(WebMessageInfo_BizPrivacyStatus)(0),                          // 48: proto.WebMessageInfo.BizPrivacyStatus
+	(WebFeatures_Flag)(0),                                         // 49: proto.WebFeatures.Flag
+	(PaymentInfo_TxnStatus)(0),                                    // 50: proto.PaymentInfo.TxnStatus
+	(PaymentInfo_Status)(0),                                       // 51: proto.PaymentInfo.Status
+	(PaymentInfo_Currency)(0),                                     // 52: proto.PaymentInfo.Currency
+	(*ADVSignedKeyIndexList)(nil),                                 // 53: proto.ADVSignedKeyIndexList
+	(*ADVSignedDeviceIdentity)(nil),                               // 54: proto.ADVSignedDeviceIdentity
+	(*ADVSignedDeviceIdentityHMAC)(nil),                           // 55: proto.ADVSignedDeviceIdentityHMAC
+	(*ADVKeyIndexList)(nil),                                       // 56: proto.ADVKeyIndexList
+	(*ADVDeviceIdentity)(nil),                                     // 57: proto.ADVDeviceIdentity
+	(*DeviceProps)(nil),                                           // 58: proto.DeviceProps
+	(*PollVoteMessage)(nil),                                       // 59: proto.PollVoteMessage
+	(*PollUpdateMessage)(nil),                                     // 60: proto.PollUpdateMessage
+	(*PollUpdateMessageMetadata)(nil),                             // 61: proto.PollUpdateMessageMetadata
+	(*PollEncValue)(nil),                                          // 62: proto.PollEncValue
+	(*PollCreationMessage)(nil),                                   // 63: proto.PollCreationMessage
+	(*PaymentInviteMessage)(nil),                                  // 64: proto.PaymentInviteMessage
+	(*OrderMessage)(nil),                                          // 65: proto.OrderMessage
+	(*LocationMessage)(nil),                                       // 66: proto.LocationMessage
+	(*LiveLocationMessage)(nil),                                   // 67: proto.LiveLocationMessage
+	(*ListResponseMessage)(nil),                                   // 68: proto.ListResponseMessage
+	(*ListMessage)(nil),                                           // 69: proto.ListMessage
+	(*KeepInChatMessage)(nil),                                     // 70: proto.KeepInChatMessage
+	(*InvoiceMessage)(nil),                                        // 71: proto.InvoiceMessage
+	(*InteractiveResponseMessage)(nil),                            // 72: proto.InteractiveResponseMessage
+	(*InteractiveMessage)(nil),                                    // 73: proto.InteractiveMessage
+	(*InitialSecurityNotificationSettingSync)(nil),                // 74: proto.InitialSecurityNotificationSettingSync
+	(*ImageMessage)(nil),                                          // 75: proto.ImageMessage
+	(*HistorySyncNotification)(nil),                               // 76: proto.HistorySyncNotification
+	(*HighlyStructuredMessage)(nil),                               // 77: proto.HighlyStructuredMessage
+	(*GroupInviteMessage)(nil),                                    // 78: proto.GroupInviteMessage
+	(*FutureProofMessage)(nil),                                    // 79: proto.FutureProofMessage
+	(*ExtendedTextMessage)(nil),                                   // 80: proto.ExtendedTextMessage
+	(*DocumentMessage)(nil),                                       // 81: proto.DocumentMessage
+	(*DeviceSentMessage)(nil),                                     // 82: proto.DeviceSentMessage
+	(*DeclinePaymentRequestMessage)(nil),                          // 83: proto.DeclinePaymentRequestMessage
+	(*ContactsArrayMessage)(nil),                                  // 84: proto.ContactsArrayMessage
+	(*ContactMessage)(nil),                                        // 85: proto.ContactMessage
+	(*Chat)(nil),                                                  // 86: proto.Chat
+	(*CancelPaymentRequestMessage)(nil),                           // 87: proto.CancelPaymentRequestMessage
+	(*Call)(nil),                                                  // 88: proto.Call
+	(*ButtonsResponseMessage)(nil),                                // 89: proto.ButtonsResponseMessage
+	(*ButtonsMessage)(nil),                                        // 90: proto.ButtonsMessage
+	(*AudioMessage)(nil),                                          // 91: proto.AudioMessage
+	(*AppStateSyncKey)(nil),                                       // 92: proto.AppStateSyncKey
+	(*AppStateSyncKeyShare)(nil),                                  // 93: proto.AppStateSyncKeyShare
+	(*AppStateSyncKeyRequest)(nil),                                // 94: proto.AppStateSyncKeyRequest
+	(*AppStateSyncKeyId)(nil),                                     // 95: proto.AppStateSyncKeyId
+	(*AppStateSyncKeyFingerprint)(nil),                            // 96: proto.AppStateSyncKeyFingerprint
+	(*AppStateSyncKeyData)(nil),                                   // 97: proto.AppStateSyncKeyData
+	(*AppStateFatalExceptionNotification)(nil),                    // 98: proto.AppStateFatalExceptionNotification
+	(*Location)(nil),                                              // 99: proto.Location
+	(*InteractiveAnnotation)(nil),                                 // 100: proto.InteractiveAnnotation
+	(*HydratedTemplateButton)(nil),                                // 101: proto.HydratedTemplateButton
+	(*DisappearingMode)(nil),                                      // 102: proto.DisappearingMode
+	(*DeviceListMetadata)(nil),                                    // 103: proto.DeviceListMetadata
+	(*ContextInfo)(nil),                                           // 104: proto.ContextInfo
+	(*ActionLink)(nil),                                            // 105: proto.ActionLink
+	(*TemplateButton)(nil),                                        // 106: proto.TemplateButton
+	(*Point)(nil),                                                 // 107: proto.Point
+	(*PaymentBackground)(nil),                                     // 108: proto.PaymentBackground
+	(*Money)(nil),                                                 // 109: proto.Money
+	(*Message)(nil),                                               // 110: proto.Message
+	(*MessageContextInfo)(nil),                                    // 111: proto.MessageContextInfo
+	(*VideoMessage)(nil),                                          // 112: proto.VideoMessage
+	(*TemplateMessage)(nil),                                       // 113: proto.TemplateMessage
+	(*TemplateButtonReplyMessage)(nil),                            // 114: proto.TemplateButtonReplyMessage
+	(*StickerSyncRMRMessage)(nil),                                 // 115: proto.StickerSyncRMRMessage
+	(*StickerMessage)(nil),                                        // 116: proto.StickerMessage
+	(*SenderKeyDistributionMessage)(nil),                          // 117: proto.SenderKeyDistributionMessage
+	(*SendPaymentMessage)(nil),                                    // 118: proto.SendPaymentMessage
+	(*RequestPhoneNumberMessage)(nil),                             // 119: proto.RequestPhoneNumberMessage
+	(*RequestPaymentMessage)(nil),                                 // 120: proto.RequestPaymentMessage
+	(*RequestMediaUploadResponseMessage)(nil),                     // 121: proto.RequestMediaUploadResponseMessage
+	(*RequestMediaUploadMessage)(nil),                             // 122: proto.RequestMediaUploadMessage
+	(*ReactionMessage)(nil),                                       // 123: proto.ReactionMessage
+	(*ProtocolMessage)(nil),                                       // 124: proto.ProtocolMessage
+	(*ProductMessage)(nil),                                        // 125: proto.ProductMessage
+	(*EphemeralSetting)(nil),                                      // 126: proto.EphemeralSetting
+	(*WallpaperSettings)(nil),                                     // 127: proto.WallpaperSettings
+	(*StickerMetadata)(nil),                                       // 128: proto.StickerMetadata
+	(*Pushname)(nil),                                              // 129: proto.Pushname
+	(*PastParticipants)(nil),                                      // 130: proto.PastParticipants
+	(*PastParticipant)(nil),                                       // 131: proto.PastParticipant
+	(*HistorySync)(nil),                                           // 132: proto.HistorySync
+	(*HistorySyncMsg)(nil),                                        // 133: proto.HistorySyncMsg
+	(*GroupParticipant)(nil),                                      // 134: proto.GroupParticipant
+	(*GlobalSettings)(nil),                                        // 135: proto.GlobalSettings
+	(*Conversation)(nil),                                          // 136: proto.Conversation
+	(*AutoDownloadSettings)(nil),                                  // 137: proto.AutoDownloadSettings
+	(*MsgRowOpaqueData)(nil),                                      // 138: proto.MsgRowOpaqueData
+	(*MsgOpaqueData)(nil),                                         // 139: proto.MsgOpaqueData
+	(*ServerErrorReceipt)(nil),                                    // 140: proto.ServerErrorReceipt
+	(*MediaRetryNotification)(nil),                                // 141: proto.MediaRetryNotification
+	(*MessageKey)(nil),                                            // 142: proto.MessageKey
+	(*SyncdVersion)(nil),                                          // 143: proto.SyncdVersion
+	(*SyncdValue)(nil),                                            // 144: proto.SyncdValue
+	(*SyncdSnapshot)(nil),                                         // 145: proto.SyncdSnapshot
+	(*SyncdRecord)(nil),                                           // 146: proto.SyncdRecord
+	(*SyncdPatch)(nil),                                            // 147: proto.SyncdPatch
+	(*SyncdMutations)(nil),                                        // 148: proto.SyncdMutations
+	(*SyncdMutation)(nil),                                         // 149: proto.SyncdMutation
+	(*SyncdIndex)(nil),                                            // 150: proto.SyncdIndex
+	(*KeyId)(nil),                                                 // 151: proto.KeyId
+	(*ExternalBlobReference)(nil),                                 // 152: proto.ExternalBlobReference
+	(*ExitCode)(nil),                                              // 153: proto.ExitCode
+	(*SyncActionValue)(nil),                                       // 154: proto.SyncActionValue
+	(*UserStatusMuteAction)(nil),                                  // 155: proto.UserStatusMuteAction
+	(*UnarchiveChatsSetting)(nil),                                 // 156: proto.UnarchiveChatsSetting
+	(*TimeFormatAction)(nil),                                      // 157: proto.TimeFormatAction
+	(*SyncActionMessage)(nil),                                     // 158: proto.SyncActionMessage
+	(*SyncActionMessageRange)(nil),                                // 159: proto.SyncActionMessageRange
+	(*SubscriptionAction)(nil),                                    // 160: proto.SubscriptionAction
+	(*StickerAction)(nil),                                         // 161: proto.StickerAction
+	(*StarAction)(nil),                                            // 162: proto.StarAction
+	(*SecurityNotificationSetting)(nil),                           // 163: proto.SecurityNotificationSetting
+	(*RecentEmojiWeightsAction)(nil),                              // 164: proto.RecentEmojiWeightsAction
+	(*QuickReplyAction)(nil),                                      // 165: proto.QuickReplyAction
+	(*PushNameSetting)(nil),                                       // 166: proto.PushNameSetting
+	(*PrimaryVersionAction)(nil),                                  // 167: proto.PrimaryVersionAction
+	(*PrimaryFeature)(nil),                                        // 168: proto.PrimaryFeature
+	(*PinAction)(nil),                                             // 169: proto.PinAction
+	(*NuxAction)(nil),                                             // 170: proto.NuxAction
+	(*MuteAction)(nil),                                            // 171: proto.MuteAction
+	(*MarkChatAsReadAction)(nil),                                  // 172: proto.MarkChatAsReadAction
+	(*LocaleSetting)(nil),                                         // 173: proto.LocaleSetting
+	(*LabelEditAction)(nil),                                       // 174: proto.LabelEditAction
+	(*LabelAssociationAction)(nil),                                // 175: proto.LabelAssociationAction
+	(*KeyExpiration)(nil),                                         // 176: proto.KeyExpiration
+	(*DeleteMessageForMeAction)(nil),                              // 177: proto.DeleteMessageForMeAction
+	(*DeleteChatAction)(nil),                                      // 178: proto.DeleteChatAction
+	(*ContactAction)(nil),                                         // 179: proto.ContactAction
+	(*ClearChatAction)(nil),                                       // 180: proto.ClearChatAction
+	(*ArchiveChatAction)(nil),                                     // 181: proto.ArchiveChatAction
+	(*AndroidUnsupportedActions)(nil),                             // 182: proto.AndroidUnsupportedActions
+	(*AgentAction)(nil),                                           // 183: proto.AgentAction
+	(*SyncActionData)(nil),                                        // 184: proto.SyncActionData
+	(*RecentEmojiWeight)(nil),                                     // 185: proto.RecentEmojiWeight
+	(*VerifiedNameCertificate)(nil),                               // 186: proto.VerifiedNameCertificate
+	(*LocalizedName)(nil),                                         // 187: proto.LocalizedName
+	(*BizIdentityInfo)(nil),                                       // 188: proto.BizIdentityInfo
+	(*BizAccountPayload)(nil),                                     // 189: proto.BizAccountPayload
+	(*BizAccountLinkInfo)(nil),                                    // 190: proto.BizAccountLinkInfo
+	(*HandshakeMessage)(nil),                                      // 191: proto.HandshakeMessage
+	(*HandshakeServerHello)(nil),                                  // 192: proto.HandshakeServerHello
+	(*HandshakeClientHello)(nil),                                  // 193: proto.HandshakeClientHello
+	(*HandshakeClientFinish)(nil),                                 // 194: proto.HandshakeClientFinish
+	(*ClientPayload)(nil),                                         // 195: proto.ClientPayload
+	(*WebNotificationsInfo)(nil),                                  // 196: proto.WebNotificationsInfo
+	(*WebMessageInfo)(nil),                                        // 197: proto.WebMessageInfo
+	(*WebFeatures)(nil),                                           // 198: proto.WebFeatures
+	(*UserReceipt)(nil),                                           // 199: proto.UserReceipt
+	(*StatusPSA)(nil),                                             // 200: proto.StatusPSA
+	(*Reaction)(nil),                                              // 201: proto.Reaction
+	(*PollUpdate)(nil),                                            // 202: proto.PollUpdate
+	(*PollAdditionalMetadata)(nil),                                // 203: proto.PollAdditionalMetadata
+	(*PhotoChange)(nil),                                           // 204: proto.PhotoChange
+	(*PaymentInfo)(nil),                                           // 205: proto.PaymentInfo
+	(*NotificationMessageInfo)(nil),                               // 206: proto.NotificationMessageInfo
+	(*MediaData)(nil),                                             // 207: proto.MediaData
+	(*KeepInChat)(nil),                                            // 208: proto.KeepInChat
+	(*NoiseCertificate)(nil),                                      // 209: proto.NoiseCertificate
+	(*CertChain)(nil),                                             // 210: proto.CertChain
+	(*DeviceProps_AppVersion)(nil),                                // 211: proto.DeviceProps.AppVersion
+	(*PollCreationMessage_Option)(nil),                            // 212: proto.PollCreationMessage.Option
+	(*ListResponseMessage_SingleSelectReply)(nil),                 // 213: proto.ListResponseMessage.SingleSelectReply
+	(*ListMessage_Section)(nil),                                   // 214: proto.ListMessage.Section
+	(*ListMessage_Row)(nil),                                       // 215: proto.ListMessage.Row
+	(*ListMessage_Product)(nil),                                   // 216: proto.ListMessage.Product
+	(*ListMessage_ProductSection)(nil),                            // 217: proto.ListMessage.ProductSection
+	(*ListMessage_ProductListInfo)(nil),                           // 218: proto.ListMessage.ProductListInfo
+	(*ListMessage_ProductListHeaderImage)(nil),                    // 219: proto.ListMessage.ProductListHeaderImage
+	(*InteractiveResponseMessage_NativeFlowResponseMessage)(nil),  // 220: proto.InteractiveResponseMessage.NativeFlowResponseMessage
+	(*InteractiveResponseMessage_Body)(nil),                       // 221: proto.InteractiveResponseMessage.Body
+	(*InteractiveMessage_ShopMessage)(nil),                        // 222: proto.InteractiveMessage.ShopMessage
+	(*InteractiveMessage_NativeFlowMessage)(nil),                  // 223: proto.InteractiveMessage.NativeFlowMessage
+	(*InteractiveMessage_Header)(nil),                             // 224: proto.InteractiveMessage.Header
+	(*InteractiveMessage_Footer)(nil),                             // 225: proto.InteractiveMessage.Footer
+	(*InteractiveMessage_CollectionMessage)(nil),                  // 226: proto.InteractiveMessage.CollectionMessage
+	(*InteractiveMessage_Body)(nil),                               // 227: proto.InteractiveMessage.Body
+	(*InteractiveMessage_NativeFlowMessage_NativeFlowButton)(nil), // 228: proto.InteractiveMessage.NativeFlowMessage.NativeFlowButton
+	(*HighlyStructuredMessage_HSMLocalizableParameter)(nil),       // 229: proto.HighlyStructuredMessage.HSMLocalizableParameter
+	(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime)(nil),                      // 230: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime
+	(*HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency)(nil),                      // 231: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency
+	(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch)(nil), // 232: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch
+	(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent)(nil), // 233: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent
+	(*ButtonsMessage_Button)(nil),                                      // 234: proto.ButtonsMessage.Button
+	(*ButtonsMessage_Button_NativeFlowInfo)(nil),                       // 235: proto.ButtonsMessage.Button.NativeFlowInfo
+	(*ButtonsMessage_Button_ButtonText)(nil),                           // 236: proto.ButtonsMessage.Button.ButtonText
+	(*HydratedTemplateButton_HydratedURLButton)(nil),                   // 237: proto.HydratedTemplateButton.HydratedURLButton
+	(*HydratedTemplateButton_HydratedQuickReplyButton)(nil),            // 238: proto.HydratedTemplateButton.HydratedQuickReplyButton
+	(*HydratedTemplateButton_HydratedCallButton)(nil),                  // 239: proto.HydratedTemplateButton.HydratedCallButton
+	(*ContextInfo_ExternalAdReplyInfo)(nil),                            // 240: proto.ContextInfo.ExternalAdReplyInfo
+	(*ContextInfo_AdReplyInfo)(nil),                                    // 241: proto.ContextInfo.AdReplyInfo
+	(*TemplateButton_URLButton)(nil),                                   // 242: proto.TemplateButton.URLButton
+	(*TemplateButton_QuickReplyButton)(nil),                            // 243: proto.TemplateButton.QuickReplyButton
+	(*TemplateButton_CallButton)(nil),                                  // 244: proto.TemplateButton.CallButton
+	(*PaymentBackground_MediaData)(nil),                                // 245: proto.PaymentBackground.MediaData
+	(*TemplateMessage_HydratedFourRowTemplate)(nil),                    // 246: proto.TemplateMessage.HydratedFourRowTemplate
+	(*TemplateMessage_FourRowTemplate)(nil),                            // 247: proto.TemplateMessage.FourRowTemplate
+	(*RequestMediaUploadResponseMessage_RequestMediaUploadResult)(nil), // 248: proto.RequestMediaUploadResponseMessage.RequestMediaUploadResult
+	(*ProductMessage_ProductSnapshot)(nil),                             // 249: proto.ProductMessage.ProductSnapshot
+	(*ProductMessage_CatalogSnapshot)(nil),                             // 250: proto.ProductMessage.CatalogSnapshot
+	(*MsgOpaqueData_PollOption)(nil),                                   // 251: proto.MsgOpaqueData.PollOption
+	(*VerifiedNameCertificate_Details)(nil),                            // 252: proto.VerifiedNameCertificate.Details
+	(*ClientPayload_WebInfo)(nil),                                      // 253: proto.ClientPayload.WebInfo
+	(*ClientPayload_UserAgent)(nil),                                    // 254: proto.ClientPayload.UserAgent
+	(*ClientPayload_DevicePairingRegistrationData)(nil),                // 255: proto.ClientPayload.DevicePairingRegistrationData
+	(*ClientPayload_DNSSource)(nil),                                    // 256: proto.ClientPayload.DNSSource
+	(*ClientPayload_WebInfo_WebdPayload)(nil),                          // 257: proto.ClientPayload.WebInfo.WebdPayload
+	(*ClientPayload_UserAgent_AppVersion)(nil),                         // 258: proto.ClientPayload.UserAgent.AppVersion
+	(*NoiseCertificate_Details)(nil),                                   // 259: proto.NoiseCertificate.Details
+	(*CertChain_NoiseCertificate)(nil),                                 // 260: proto.CertChain.NoiseCertificate
+	(*CertChain_NoiseCertificate_Details)(nil),                         // 261: proto.CertChain.NoiseCertificate.Details
 }
 var file_binary_proto_def_proto_depIdxs = []int32{
-	57,  // 0: proto.DeviceProps.version:type_name -> proto.AppVersion
-	2,   // 1: proto.DeviceProps.platformType:type_name -> proto.DeviceProps.DevicePropsPlatformType
-	93,  // 2: proto.ProductSnapshot.productImage:type_name -> proto.ImageMessage
-	93,  // 3: proto.CatalogSnapshot.catalogImage:type_name -> proto.ImageMessage
-	174, // 4: proto.PollUpdateMessage.pollCreationMessageKey:type_name -> proto.MessageKey
-	63,  // 5: proto.PollUpdateMessage.vote:type_name -> proto.PollEncValue
-	62,  // 6: proto.PollUpdateMessage.metadata:type_name -> proto.PollUpdateMessageMetadata
-	65,  // 7: proto.PollCreationMessage.options:type_name -> proto.Option
-	133, // 8: proto.PollCreationMessage.contextInfo:type_name -> proto.ContextInfo
-	3,   // 9: proto.PaymentInviteMessage.serviceType:type_name -> proto.PaymentInviteMessage.PaymentInviteMessageServiceType
-	4,   // 10: proto.OrderMessage.status:type_name -> proto.OrderMessage.OrderMessageOrderStatus
-	5,   // 11: proto.OrderMessage.surface:type_name -> proto.OrderMessage.OrderMessageOrderSurface
-	133, // 12: proto.OrderMessage.contextInfo:type_name -> proto.ContextInfo
-	133, // 13: proto.LocationMessage.contextInfo:type_name -> proto.ContextInfo
-	133, // 14: proto.LiveLocationMessage.contextInfo:type_name -> proto.ContextInfo
-	6,   // 15: proto.ListResponseMessage.listType:type_name -> proto.ListResponseMessage.ListResponseMessageListType
-	71,  // 16: proto.ListResponseMessage.singleSelectReply:type_name -> proto.SingleSelectReply
-	133, // 17: proto.ListResponseMessage.contextInfo:type_name -> proto.ContextInfo
-	7,   // 18: proto.ListMessage.listType:type_name -> proto.ListMessage.ListMessageListType
-	73,  // 19: proto.ListMessage.sections:type_name -> proto.Section
-	77,  // 20: proto.ListMessage.productListInfo:type_name -> proto.ProductListInfo
-	133, // 21: proto.ListMessage.contextInfo:type_name -> proto.ContextInfo
-	74,  // 22: proto.Section.rows:type_name -> proto.Row
-	75,  // 23: proto.ProductSection.products:type_name -> proto.Product
-	76,  // 24: proto.ProductListInfo.productSections:type_name -> proto.ProductSection
-	78,  // 25: proto.ProductListInfo.headerImage:type_name -> proto.ProductListHeaderImage
-	174, // 26: proto.KeepInChatMessage.key:type_name -> proto.MessageKey
-	0,   // 27: proto.KeepInChatMessage.keepType:type_name -> proto.KeepType
-	8,   // 28: proto.InvoiceMessage.attachmentType:type_name -> proto.InvoiceMessage.InvoiceMessageAttachmentType
-	83,  // 29: proto.InteractiveResponseMessage.body:type_name -> proto.InteractiveResponseMessageBody
-	133, // 30: proto.InteractiveResponseMessage.contextInfo:type_name -> proto.ContextInfo
-	82,  // 31: proto.InteractiveResponseMessage.nativeFlowResponseMessage:type_name -> proto.NativeFlowResponseMessage
-	88,  // 32: proto.InteractiveMessage.header:type_name -> proto.Header
-	91,  // 33: proto.InteractiveMessage.body:type_name -> proto.InteractiveMessageBody
-	89,  // 34: proto.InteractiveMessage.footer:type_name -> proto.Footer
-	133, // 35: proto.InteractiveMessage.contextInfo:type_name -> proto.ContextInfo
-	85,  // 36: proto.InteractiveMessage.shopStorefrontMessage:type_name -> proto.ShopMessage
-	90,  // 37: proto.InteractiveMessage.collectionMessage:type_name -> proto.CollectionMessage
-	86,  // 38: proto.InteractiveMessage.nativeFlowMessage:type_name -> proto.NativeFlowMessage
-	9,   // 39: proto.ShopMessage.surface:type_name -> proto.ShopMessage.ShopMessageSurface
-	87,  // 40: proto.NativeFlowMessage.buttons:type_name -> proto.NativeFlowButton
-	104, // 41: proto.Header.documentMessage:type_name -> proto.DocumentMessage
-	93,  // 42: proto.Header.imageMessage:type_name -> proto.ImageMessage
-	147, // 43: proto.Header.videoMessage:type_name -> proto.VideoMessage
-	126, // 44: proto.ImageMessage.interactiveAnnotations:type_name -> proto.InteractiveAnnotation
-	133, // 45: proto.ImageMessage.contextInfo:type_name -> proto.ContextInfo
-	10,  // 46: proto.HistorySyncNotification.syncType:type_name -> proto.HistorySyncNotification.HistorySyncNotificationHistorySyncType
-	96,  // 47: proto.HighlyStructuredMessage.localizableParams:type_name -> proto.HSMLocalizableParameter
-	148, // 48: proto.HighlyStructuredMessage.hydratedHsm:type_name -> proto.TemplateMessage
-	100, // 49: proto.HSMLocalizableParameter.currency:type_name -> proto.HSMCurrency
-	97,  // 50: proto.HSMLocalizableParameter.dateTime:type_name -> proto.HSMDateTime
-	99,  // 51: proto.HSMDateTime.component:type_name -> proto.HSMDateTimeComponent
-	98,  // 52: proto.HSMDateTime.unixEpoch:type_name -> proto.HSMDateTimeUnixEpoch
-	11,  // 53: proto.HSMDateTimeComponent.dayOfWeek:type_name -> proto.HSMDateTimeComponent.HSMDateTimeComponentDayOfWeekType
-	12,  // 54: proto.HSMDateTimeComponent.calendar:type_name -> proto.HSMDateTimeComponent.HSMDateTimeComponentCalendarType
-	133, // 55: proto.GroupInviteMessage.contextInfo:type_name -> proto.ContextInfo
-	13,  // 56: proto.GroupInviteMessage.groupType:type_name -> proto.GroupInviteMessage.GroupInviteMessageGroupType
-	145, // 57: proto.FutureProofMessage.message:type_name -> proto.Message
-	14,  // 58: proto.ExtendedTextMessage.font:type_name -> proto.ExtendedTextMessage.ExtendedTextMessageFontType
-	15,  // 59: proto.ExtendedTextMessage.previewType:type_name -> proto.ExtendedTextMessage.ExtendedTextMessagePreviewType
-	133, // 60: proto.ExtendedTextMessage.contextInfo:type_name -> proto.ContextInfo
-	16,  // 61: proto.ExtendedTextMessage.inviteLinkGroupType:type_name -> proto.ExtendedTextMessage.ExtendedTextMessageInviteLinkGroupType
-	16,  // 62: proto.ExtendedTextMessage.inviteLinkGroupTypeV2:type_name -> proto.ExtendedTextMessage.ExtendedTextMessageInviteLinkGroupType
-	133, // 63: proto.DocumentMessage.contextInfo:type_name -> proto.ContextInfo
-	145, // 64: proto.DeviceSentMessage.message:type_name -> proto.Message
-	174, // 65: proto.DeclinePaymentRequestMessage.key:type_name -> proto.MessageKey
-	108, // 66: proto.ContactsArrayMessage.contacts:type_name -> proto.ContactMessage
-	133, // 67: proto.ContactsArrayMessage.contextInfo:type_name -> proto.ContextInfo
-	133, // 68: proto.ContactMessage.contextInfo:type_name -> proto.ContextInfo
-	174, // 69: proto.CancelPaymentRequestMessage.key:type_name -> proto.MessageKey
-	133, // 70: proto.ButtonsResponseMessage.contextInfo:type_name -> proto.ContextInfo
-	17,  // 71: proto.ButtonsResponseMessage.type:type_name -> proto.ButtonsResponseMessage.ButtonsResponseMessageType
-	133, // 72: proto.ButtonsMessage.contextInfo:type_name -> proto.ContextInfo
-	114, // 73: proto.ButtonsMessage.buttons:type_name -> proto.Button
-	18,  // 74: proto.ButtonsMessage.headerType:type_name -> proto.ButtonsMessage.ButtonsMessageHeaderType
-	104, // 75: proto.ButtonsMessage.documentMessage:type_name -> proto.DocumentMessage
-	93,  // 76: proto.ButtonsMessage.imageMessage:type_name -> proto.ImageMessage
-	147, // 77: proto.ButtonsMessage.videoMessage:type_name -> proto.VideoMessage
-	68,  // 78: proto.ButtonsMessage.locationMessage:type_name -> proto.LocationMessage
-	116, // 79: proto.Button.buttonText:type_name -> proto.ButtonText
-	19,  // 80: proto.Button.type:type_name -> proto.Button.ButtonType
-	115, // 81: proto.Button.nativeFlowInfo:type_name -> proto.NativeFlowInfo
-	133, // 82: proto.AudioMessage.contextInfo:type_name -> proto.ContextInfo
-	121, // 83: proto.AppStateSyncKey.keyId:type_name -> proto.AppStateSyncKeyId
-	123, // 84: proto.AppStateSyncKey.keyData:type_name -> proto.AppStateSyncKeyData
-	118, // 85: proto.AppStateSyncKeyShare.keys:type_name -> proto.AppStateSyncKey
-	121, // 86: proto.AppStateSyncKeyRequest.keyIds:type_name -> proto.AppStateSyncKeyId
-	122, // 87: proto.AppStateSyncKeyData.fingerprint:type_name -> proto.AppStateSyncKeyFingerprint
-	141, // 88: proto.InteractiveAnnotation.polygonVertices:type_name -> proto.Point
-	125, // 89: proto.InteractiveAnnotation.location:type_name -> proto.Location
-	129, // 90: proto.HydratedTemplateButton.quickReplyButton:type_name -> proto.HydratedQuickReplyButton
-	128, // 91: proto.HydratedTemplateButton.urlButton:type_name -> proto.HydratedURLButton
-	130, // 92: proto.HydratedTemplateButton.callButton:type_name -> proto.HydratedCallButton
-	20,  // 93: proto.DisappearingMode.initiator:type_name -> proto.DisappearingMode.DisappearingModeInitiator
-	145, // 94: proto.ContextInfo.quotedMessage:type_name -> proto.Message
-	135, // 95: proto.ContextInfo.quotedAd:type_name -> proto.AdReplyInfo
-	174, // 96: proto.ContextInfo.placeholderKey:type_name -> proto.MessageKey
-	134, // 97: proto.ContextInfo.externalAdReply:type_name -> proto.ExternalAdReplyInfo
-	131, // 98: proto.ContextInfo.disappearingMode:type_name -> proto.DisappearingMode
-	136, // 99: proto.ContextInfo.actionLink:type_name -> proto.ActionLink
-	21,  // 100: proto.ExternalAdReplyInfo.mediaType:type_name -> proto.ExternalAdReplyInfo.ExternalAdReplyInfoMediaType
-	22,  // 101: proto.AdReplyInfo.mediaType:type_name -> proto.AdReplyInfo.AdReplyInfoMediaType
-	139, // 102: proto.TemplateButton.quickReplyButton:type_name -> proto.QuickReplyButton
-	138, // 103: proto.TemplateButton.urlButton:type_name -> proto.URLButton
-	140, // 104: proto.TemplateButton.callButton:type_name -> proto.CallButton
-	95,  // 105: proto.URLButton.displayText:type_name -> proto.HighlyStructuredMessage
-	95,  // 106: proto.URLButton.url:type_name -> proto.HighlyStructuredMessage
-	95,  // 107: proto.QuickReplyButton.displayText:type_name -> proto.HighlyStructuredMessage
-	95,  // 108: proto.CallButton.displayText:type_name -> proto.HighlyStructuredMessage
-	95,  // 109: proto.CallButton.phoneNumber:type_name -> proto.HighlyStructuredMessage
-	143, // 110: proto.PaymentBackground.mediaData:type_name -> proto.PBMediaData
-	23,  // 111: proto.PaymentBackground.type:type_name -> proto.PaymentBackground.PaymentBackgroundType
-	154, // 112: proto.Message.senderKeyDistributionMessage:type_name -> proto.SenderKeyDistributionMessage
-	93,  // 113: proto.Message.imageMessage:type_name -> proto.ImageMessage
-	108, // 114: proto.Message.contactMessage:type_name -> proto.ContactMessage
-	68,  // 115: proto.Message.locationMessage:type_name -> proto.LocationMessage
-	103, // 116: proto.Message.extendedTextMessage:type_name -> proto.ExtendedTextMessage
-	104, // 117: proto.Message.documentMessage:type_name -> proto.DocumentMessage
-	117, // 118: proto.Message.audioMessage:type_name -> proto.AudioMessage
-	147, // 119: proto.Message.videoMessage:type_name -> proto.VideoMessage
-	111, // 120: proto.Message.call:type_name -> proto.Call
-	109, // 121: proto.Message.chat:type_name -> proto.Chat
-	158, // 122: proto.Message.protocolMessage:type_name -> proto.ProtocolMessage
-	107, // 123: proto.Message.contactsArrayMessage:type_name -> proto.ContactsArrayMessage
-	95,  // 124: proto.Message.highlyStructuredMessage:type_name -> proto.HighlyStructuredMessage
-	154, // 125: proto.Message.fastRatchetKeySenderKeyDistributionMessage:type_name -> proto.SenderKeyDistributionMessage
-	155, // 126: proto.Message.sendPaymentMessage:type_name -> proto.SendPaymentMessage
-	69,  // 127: proto.Message.liveLocationMessage:type_name -> proto.LiveLocationMessage
-	156, // 128: proto.Message.requestPaymentMessage:type_name -> proto.RequestPaymentMessage
-	106, // 129: proto.Message.declinePaymentRequestMessage:type_name -> proto.DeclinePaymentRequestMessage
-	110, // 130: proto.Message.cancelPaymentRequestMessage:type_name -> proto.CancelPaymentRequestMessage
-	148, // 131: proto.Message.templateMessage:type_name -> proto.TemplateMessage
-	153, // 132: proto.Message.stickerMessage:type_name -> proto.StickerMessage
-	101, // 133: proto.Message.groupInviteMessage:type_name -> proto.GroupInviteMessage
-	151, // 134: proto.Message.templateButtonReplyMessage:type_name -> proto.TemplateButtonReplyMessage
-	159, // 135: proto.Message.productMessage:type_name -> proto.ProductMessage
-	105, // 136: proto.Message.deviceSentMessage:type_name -> proto.DeviceSentMessage
-	146, // 137: proto.Message.messageContextInfo:type_name -> proto.MessageContextInfo
-	72,  // 138: proto.Message.listMessage:type_name -> proto.ListMessage
-	102, // 139: proto.Message.viewOnceMessage:type_name -> proto.FutureProofMessage
-	67,  // 140: proto.Message.orderMessage:type_name -> proto.OrderMessage
-	70,  // 141: proto.Message.listResponseMessage:type_name -> proto.ListResponseMessage
-	102, // 142: proto.Message.ephemeralMessage:type_name -> proto.FutureProofMessage
-	80,  // 143: proto.Message.invoiceMessage:type_name -> proto.InvoiceMessage
-	113, // 144: proto.Message.buttonsMessage:type_name -> proto.ButtonsMessage
-	112, // 145: proto.Message.buttonsResponseMessage:type_name -> proto.ButtonsResponseMessage
-	66,  // 146: proto.Message.paymentInviteMessage:type_name -> proto.PaymentInviteMessage
-	84,  // 147: proto.Message.interactiveMessage:type_name -> proto.InteractiveMessage
-	157, // 148: proto.Message.reactionMessage:type_name -> proto.ReactionMessage
-	152, // 149: proto.Message.stickerSyncRmrMessage:type_name -> proto.StickerSyncRMRMessage
-	81,  // 150: proto.Message.interactiveResponseMessage:type_name -> proto.InteractiveResponseMessage
-	64,  // 151: proto.Message.pollCreationMessage:type_name -> proto.PollCreationMessage
-	61,  // 152: proto.Message.pollUpdateMessage:type_name -> proto.PollUpdateMessage
-	79,  // 153: proto.Message.keepInChatMessage:type_name -> proto.KeepInChatMessage
-	132, // 154: proto.MessageContextInfo.deviceListMetadata:type_name -> proto.DeviceListMetadata
-	126, // 155: proto.VideoMessage.interactiveAnnotations:type_name -> proto.InteractiveAnnotation
-	133, // 156: proto.VideoMessage.contextInfo:type_name -> proto.ContextInfo
-	24,  // 157: proto.VideoMessage.gifAttribution:type_name -> proto.VideoMessage.VideoMessageAttribution
-	133, // 158: proto.TemplateMessage.contextInfo:type_name -> proto.ContextInfo
-	149, // 159: proto.TemplateMessage.hydratedTemplate:type_name -> proto.HydratedFourRowTemplate
-	150, // 160: proto.TemplateMessage.fourRowTemplate:type_name -> proto.FourRowTemplate
-	149, // 161: proto.TemplateMessage.hydratedFourRowTemplate:type_name -> proto.HydratedFourRowTemplate
-	127, // 162: proto.HydratedFourRowTemplate.hydratedButtons:type_name -> proto.HydratedTemplateButton
-	104, // 163: proto.HydratedFourRowTemplate.documentMessage:type_name -> proto.DocumentMessage
-	93,  // 164: proto.HydratedFourRowTemplate.imageMessage:type_name -> proto.ImageMessage
-	147, // 165: proto.HydratedFourRowTemplate.videoMessage:type_name -> proto.VideoMessage
-	68,  // 166: proto.HydratedFourRowTemplate.locationMessage:type_name -> proto.LocationMessage
-	95,  // 167: proto.FourRowTemplate.content:type_name -> proto.HighlyStructuredMessage
-	95,  // 168: proto.FourRowTemplate.footer:type_name -> proto.HighlyStructuredMessage
-	137, // 169: proto.FourRowTemplate.buttons:type_name -> proto.TemplateButton
-	104, // 170: proto.FourRowTemplate.documentMessage:type_name -> proto.DocumentMessage
-	95,  // 171: proto.FourRowTemplate.highlyStructuredMessage:type_name -> proto.HighlyStructuredMessage
-	93,  // 172: proto.FourRowTemplate.imageMessage:type_name -> proto.ImageMessage
-	147, // 173: proto.FourRowTemplate.videoMessage:type_name -> proto.VideoMessage
-	68,  // 174: proto.FourRowTemplate.locationMessage:type_name -> proto.LocationMessage
-	133, // 175: proto.TemplateButtonReplyMessage.contextInfo:type_name -> proto.ContextInfo
-	133, // 176: proto.StickerMessage.contextInfo:type_name -> proto.ContextInfo
-	145, // 177: proto.SendPaymentMessage.noteMessage:type_name -> proto.Message
-	174, // 178: proto.SendPaymentMessage.requestMessageKey:type_name -> proto.MessageKey
-	142, // 179: proto.SendPaymentMessage.background:type_name -> proto.PaymentBackground
-	145, // 180: proto.RequestPaymentMessage.noteMessage:type_name -> proto.Message
-	144, // 181: proto.RequestPaymentMessage.amount:type_name -> proto.Money
-	142, // 182: proto.RequestPaymentMessage.background:type_name -> proto.PaymentBackground
-	174, // 183: proto.ReactionMessage.key:type_name -> proto.MessageKey
-	174, // 184: proto.ProtocolMessage.key:type_name -> proto.MessageKey
-	25,  // 185: proto.ProtocolMessage.type:type_name -> proto.ProtocolMessage.ProtocolMessageType
-	94,  // 186: proto.ProtocolMessage.historySyncNotification:type_name -> proto.HistorySyncNotification
-	119, // 187: proto.ProtocolMessage.appStateSyncKeyShare:type_name -> proto.AppStateSyncKeyShare
-	120, // 188: proto.ProtocolMessage.appStateSyncKeyRequest:type_name -> proto.AppStateSyncKeyRequest
-	92,  // 189: proto.ProtocolMessage.initialSecurityNotificationSettingSync:type_name -> proto.InitialSecurityNotificationSettingSync
-	124, // 190: proto.ProtocolMessage.appStateFatalExceptionNotification:type_name -> proto.AppStateFatalExceptionNotification
-	131, // 191: proto.ProtocolMessage.disappearingMode:type_name -> proto.DisappearingMode
-	58,  // 192: proto.ProductMessage.product:type_name -> proto.ProductSnapshot
-	59,  // 193: proto.ProductMessage.catalog:type_name -> proto.CatalogSnapshot
-	133, // 194: proto.ProductMessage.contextInfo:type_name -> proto.ContextInfo
-	26,  // 195: proto.HistorySync.syncType:type_name -> proto.HistorySync.HistorySyncHistorySyncType
-	167, // 196: proto.HistorySync.conversations:type_name -> proto.Conversation
-	236, // 197: proto.HistorySync.statusV3Messages:type_name -> proto.WebMessageInfo
-	162, // 198: proto.HistorySync.pushnames:type_name -> proto.Pushname
-	166, // 199: proto.HistorySync.globalSettings:type_name -> proto.GlobalSettings
-	236, // 200: proto.HistorySyncMsg.message:type_name -> proto.WebMessageInfo
-	27,  // 201: proto.GroupParticipant.rank:type_name -> proto.GroupParticipant.GroupParticipantRank
-	161, // 202: proto.GlobalSettings.lightThemeWallpaper:type_name -> proto.WallpaperSettings
-	1,   // 203: proto.GlobalSettings.mediaVisibility:type_name -> proto.MediaVisibility
-	161, // 204: proto.GlobalSettings.darkThemeWallpaper:type_name -> proto.WallpaperSettings
-	168, // 205: proto.GlobalSettings.autoDownloadWiFi:type_name -> proto.AutoDownloadSettings
-	168, // 206: proto.GlobalSettings.autoDownloadCellular:type_name -> proto.AutoDownloadSettings
-	168, // 207: proto.GlobalSettings.autoDownloadRoaming:type_name -> proto.AutoDownloadSettings
-	164, // 208: proto.Conversation.messages:type_name -> proto.HistorySyncMsg
-	28,  // 209: proto.Conversation.endOfHistoryTransferType:type_name -> proto.Conversation.ConversationEndOfHistoryTransferType
-	131, // 210: proto.Conversation.disappearingMode:type_name -> proto.DisappearingMode
-	165, // 211: proto.Conversation.participant:type_name -> proto.GroupParticipant
-	161, // 212: proto.Conversation.wallpaper:type_name -> proto.WallpaperSettings
-	1,   // 213: proto.Conversation.mediaVisibility:type_name -> proto.MediaVisibility
-	170, // 214: proto.MsgRowOpaqueData.currentMsg:type_name -> proto.MsgOpaqueData
-	170, // 215: proto.MsgRowOpaqueData.quotedMsg:type_name -> proto.MsgOpaqueData
-	171, // 216: proto.MsgOpaqueData.pollOptions:type_name -> proto.PollOption
-	29,  // 217: proto.MediaRetryNotification.result:type_name -> proto.MediaRetryNotification.MediaRetryNotificationResultType
-	175, // 218: proto.SyncdSnapshot.version:type_name -> proto.SyncdVersion
-	178, // 219: proto.SyncdSnapshot.records:type_name -> proto.SyncdRecord
-	183, // 220: proto.SyncdSnapshot.keyId:type_name -> proto.KeyId
-	182, // 221: proto.SyncdRecord.index:type_name -> proto.SyncdIndex
-	176, // 222: proto.SyncdRecord.value:type_name -> proto.SyncdValue
-	183, // 223: proto.SyncdRecord.keyId:type_name -> proto.KeyId
-	175, // 224: proto.SyncdPatch.version:type_name -> proto.SyncdVersion
-	181, // 225: proto.SyncdPatch.mutations:type_name -> proto.SyncdMutation
-	184, // 226: proto.SyncdPatch.externalMutations:type_name -> proto.ExternalBlobReference
-	183, // 227: proto.SyncdPatch.keyId:type_name -> proto.KeyId
-	185, // 228: proto.SyncdPatch.exitCode:type_name -> proto.ExitCode
-	181, // 229: proto.SyncdMutations.mutations:type_name -> proto.SyncdMutation
-	30,  // 230: proto.SyncdMutation.operation:type_name -> proto.SyncdMutation.SyncdMutationSyncdOperation
-	178, // 231: proto.SyncdMutation.record:type_name -> proto.SyncdRecord
-	193, // 232: proto.SyncActionValue.starAction:type_name -> proto.StarAction
-	211, // 233: proto.SyncActionValue.contactAction:type_name -> proto.ContactAction
-	202, // 234: proto.SyncActionValue.muteAction:type_name -> proto.MuteAction
-	201, // 235: proto.SyncActionValue.pinAction:type_name -> proto.PinAction
-	194, // 236: proto.SyncActionValue.securityNotificationSetting:type_name -> proto.SecurityNotificationSetting
-	199, // 237: proto.SyncActionValue.pushNameSetting:type_name -> proto.PushNameSetting
-	198, // 238: proto.SyncActionValue.quickReplyAction:type_name -> proto.QuickReplyAction
-	195, // 239: proto.SyncActionValue.recentStickerWeightsAction:type_name -> proto.RecentStickerWeightsAction
-	196, // 240: proto.SyncActionValue.recentStickerMetadata:type_name -> proto.RecentStickerMetadata
-	197, // 241: proto.SyncActionValue.recentEmojiWeightsAction:type_name -> proto.RecentEmojiWeightsAction
-	205, // 242: proto.SyncActionValue.labelEditAction:type_name -> proto.LabelEditAction
-	206, // 243: proto.SyncActionValue.labelAssociationAction:type_name -> proto.LabelAssociationAction
-	204, // 244: proto.SyncActionValue.localeSetting:type_name -> proto.LocaleSetting
-	213, // 245: proto.SyncActionValue.archiveChatAction:type_name -> proto.ArchiveChatAction
-	209, // 246: proto.SyncActionValue.deleteMessageForMeAction:type_name -> proto.DeleteMessageForMeAction
-	207, // 247: proto.SyncActionValue.keyExpiration:type_name -> proto.KeyExpiration
-	203, // 248: proto.SyncActionValue.markChatAsReadAction:type_name -> proto.MarkChatAsReadAction
-	212, // 249: proto.SyncActionValue.clearChatAction:type_name -> proto.ClearChatAction
-	210, // 250: proto.SyncActionValue.deleteChatAction:type_name -> proto.DeleteChatAction
-	188, // 251: proto.SyncActionValue.unarchiveChatsSetting:type_name -> proto.UnarchiveChatsSetting
-	200, // 252: proto.SyncActionValue.primaryFeature:type_name -> proto.PrimaryFeature
-	208, // 253: proto.SyncActionValue.favoriteStickerAction:type_name -> proto.FavoriteStickerAction
-	214, // 254: proto.SyncActionValue.androidUnsupportedActions:type_name -> proto.AndroidUnsupportedActions
-	215, // 255: proto.SyncActionValue.agentAction:type_name -> proto.AgentAction
-	192, // 256: proto.SyncActionValue.subscriptionAction:type_name -> proto.SubscriptionAction
-	187, // 257: proto.SyncActionValue.userStatusMuteAction:type_name -> proto.UserStatusMuteAction
-	189, // 258: proto.SyncActionValue.timeFormatAction:type_name -> proto.TimeFormatAction
-	174, // 259: proto.SyncActionMessage.key:type_name -> proto.MessageKey
-	190, // 260: proto.SyncActionMessageRange.messages:type_name -> proto.SyncActionMessage
-	217, // 261: proto.RecentStickerWeightsAction.weights:type_name -> proto.RecentStickerWeight
-	218, // 262: proto.RecentEmojiWeightsAction.weights:type_name -> proto.RecentEmojiWeight
-	191, // 263: proto.MarkChatAsReadAction.messageRange:type_name -> proto.SyncActionMessageRange
-	191, // 264: proto.DeleteChatAction.messageRange:type_name -> proto.SyncActionMessageRange
-	191, // 265: proto.ClearChatAction.messageRange:type_name -> proto.SyncActionMessageRange
-	191, // 266: proto.ArchiveChatAction.messageRange:type_name -> proto.SyncActionMessageRange
-	186, // 267: proto.SyncActionData.value:type_name -> proto.SyncActionValue
-	221, // 268: proto.VerifiedNameDetails.localizedNames:type_name -> proto.LocalizedName
-	31,  // 269: proto.BizIdentityInfo.vlevel:type_name -> proto.BizIdentityInfo.BizIdentityInfoVerifiedLevelValue
-	219, // 270: proto.BizIdentityInfo.vnameCert:type_name -> proto.VerifiedNameCertificate
-	32,  // 271: proto.BizIdentityInfo.hostStorage:type_name -> proto.BizIdentityInfo.BizIdentityInfoHostStorageType
-	33,  // 272: proto.BizIdentityInfo.actualActors:type_name -> proto.BizIdentityInfo.BizIdentityInfoActualActorsType
-	219, // 273: proto.BizAccountPayload.vnameCert:type_name -> proto.VerifiedNameCertificate
-	34,  // 274: proto.BizAccountLinkInfo.hostStorage:type_name -> proto.BizAccountLinkInfo.BizAccountLinkInfoHostStorageType
-	35,  // 275: proto.BizAccountLinkInfo.accountType:type_name -> proto.BizAccountLinkInfo.BizAccountLinkInfoAccountType
-	227, // 276: proto.HandshakeMessage.clientHello:type_name -> proto.ClientHello
-	226, // 277: proto.HandshakeMessage.serverHello:type_name -> proto.ServerHello
-	228, // 278: proto.HandshakeMessage.clientFinish:type_name -> proto.ClientFinish
-	232, // 279: proto.ClientPayload.userAgent:type_name -> proto.UserAgent
-	230, // 280: proto.ClientPayload.webInfo:type_name -> proto.WebInfo
-	36,  // 281: proto.ClientPayload.connectType:type_name -> proto.ClientPayload.ClientPayloadConnectType
-	37,  // 282: proto.ClientPayload.connectReason:type_name -> proto.ClientPayload.ClientPayloadConnectReason
-	234, // 283: proto.ClientPayload.dnsSource:type_name -> proto.DNSSource
-	233, // 284: proto.ClientPayload.devicePairingData:type_name -> proto.DevicePairingRegistrationData
-	38,  // 285: proto.ClientPayload.product:type_name -> proto.ClientPayload.ClientPayloadProduct
-	39,  // 286: proto.ClientPayload.iosAppExtension:type_name -> proto.ClientPayload.ClientPayloadIOSAppExtension
-	231, // 287: proto.WebInfo.webdPayload:type_name -> proto.WebdPayload
-	40,  // 288: proto.WebInfo.webSubPlatform:type_name -> proto.WebInfo.WebInfoWebSubPlatform
-	41,  // 289: proto.UserAgent.platform:type_name -> proto.UserAgent.UserAgentPlatform
-	57,  // 290: proto.UserAgent.appVersion:type_name -> proto.AppVersion
-	42,  // 291: proto.UserAgent.releaseChannel:type_name -> proto.UserAgent.UserAgentReleaseChannel
-	43,  // 292: proto.DNSSource.dnsMethod:type_name -> proto.DNSSource.DNSSourceDNSResolutionMethod
-	236, // 293: proto.WebNotificationsInfo.notifyMessages:type_name -> proto.WebMessageInfo
-	174, // 294: proto.WebMessageInfo.key:type_name -> proto.MessageKey
-	145, // 295: proto.WebMessageInfo.message:type_name -> proto.Message
-	44,  // 296: proto.WebMessageInfo.status:type_name -> proto.WebMessageInfo.WebMessageInfoStatus
-	45,  // 297: proto.WebMessageInfo.messageStubType:type_name -> proto.WebMessageInfo.WebMessageInfoStubType
-	244, // 298: proto.WebMessageInfo.paymentInfo:type_name -> proto.PaymentInfo
-	69,  // 299: proto.WebMessageInfo.finalLiveLocation:type_name -> proto.LiveLocationMessage
-	244, // 300: proto.WebMessageInfo.quotedPaymentInfo:type_name -> proto.PaymentInfo
-	46,  // 301: proto.WebMessageInfo.bizPrivacyStatus:type_name -> proto.WebMessageInfo.WebMessageInfoBizPrivacyStatus
-	246, // 302: proto.WebMessageInfo.mediaData:type_name -> proto.MediaData
-	243, // 303: proto.WebMessageInfo.photoChange:type_name -> proto.PhotoChange
-	238, // 304: proto.WebMessageInfo.userReceipt:type_name -> proto.UserReceipt
-	240, // 305: proto.WebMessageInfo.reactions:type_name -> proto.Reaction
-	246, // 306: proto.WebMessageInfo.quotedStickerData:type_name -> proto.MediaData
-	239, // 307: proto.WebMessageInfo.statusPsa:type_name -> proto.StatusPSA
-	241, // 308: proto.WebMessageInfo.pollUpdates:type_name -> proto.PollUpdate
-	242, // 309: proto.WebMessageInfo.pollAdditionalMetadata:type_name -> proto.PollAdditionalMetadata
-	247, // 310: proto.WebMessageInfo.keepInChat:type_name -> proto.KeepInChat
-	47,  // 311: proto.WebFeatures.labelsDisplay:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 312: proto.WebFeatures.voipIndividualOutgoing:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 313: proto.WebFeatures.groupsV3:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 314: proto.WebFeatures.groupsV3Create:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 315: proto.WebFeatures.changeNumberV2:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 316: proto.WebFeatures.queryStatusV3Thumbnail:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 317: proto.WebFeatures.liveLocations:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 318: proto.WebFeatures.queryVname:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 319: proto.WebFeatures.voipIndividualIncoming:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 320: proto.WebFeatures.quickRepliesQuery:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 321: proto.WebFeatures.payments:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 322: proto.WebFeatures.stickerPackQuery:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 323: proto.WebFeatures.liveLocationsFinal:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 324: proto.WebFeatures.labelsEdit:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 325: proto.WebFeatures.mediaUpload:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 326: proto.WebFeatures.mediaUploadRichQuickReplies:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 327: proto.WebFeatures.vnameV2:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 328: proto.WebFeatures.videoPlaybackUrl:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 329: proto.WebFeatures.statusRanking:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 330: proto.WebFeatures.voipIndividualVideo:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 331: proto.WebFeatures.thirdPartyStickers:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 332: proto.WebFeatures.frequentlyForwardedSetting:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 333: proto.WebFeatures.groupsV4JoinPermission:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 334: proto.WebFeatures.recentStickers:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 335: proto.WebFeatures.catalog:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 336: proto.WebFeatures.starredStickers:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 337: proto.WebFeatures.voipGroupCall:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 338: proto.WebFeatures.templateMessage:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 339: proto.WebFeatures.templateMessageInteractivity:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 340: proto.WebFeatures.ephemeralMessages:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 341: proto.WebFeatures.e2ENotificationSync:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 342: proto.WebFeatures.recentStickersV2:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 343: proto.WebFeatures.recentStickersV3:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 344: proto.WebFeatures.userNotice:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 345: proto.WebFeatures.support:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 346: proto.WebFeatures.groupUiiCleanup:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 347: proto.WebFeatures.groupDogfoodingInternalOnly:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 348: proto.WebFeatures.settingsSync:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 349: proto.WebFeatures.archiveV2:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 350: proto.WebFeatures.ephemeralAllowGroupMembers:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 351: proto.WebFeatures.ephemeral24HDuration:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 352: proto.WebFeatures.mdForceUpgrade:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 353: proto.WebFeatures.disappearingMode:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 354: proto.WebFeatures.externalMdOptInAvailable:type_name -> proto.WebFeatures.WebFeaturesFlag
-	47,  // 355: proto.WebFeatures.noDeleteMessageTimeLimit:type_name -> proto.WebFeatures.WebFeaturesFlag
-	174, // 356: proto.Reaction.key:type_name -> proto.MessageKey
-	174, // 357: proto.PollUpdate.pollUpdateMessageKey:type_name -> proto.MessageKey
-	60,  // 358: proto.PollUpdate.vote:type_name -> proto.PollVoteMessage
-	48,  // 359: proto.PaymentInfo.currencyDeprecated:type_name -> proto.PaymentInfo.PaymentInfoCurrency
-	49,  // 360: proto.PaymentInfo.status:type_name -> proto.PaymentInfo.PaymentInfoStatus
-	174, // 361: proto.PaymentInfo.requestMessageKey:type_name -> proto.MessageKey
-	50,  // 362: proto.PaymentInfo.txnStatus:type_name -> proto.PaymentInfo.PaymentInfoTxnStatus
-	144, // 363: proto.PaymentInfo.primaryAmount:type_name -> proto.Money
-	144, // 364: proto.PaymentInfo.exchangeAmount:type_name -> proto.Money
-	174, // 365: proto.NotificationMessageInfo.key:type_name -> proto.MessageKey
-	145, // 366: proto.NotificationMessageInfo.message:type_name -> proto.Message
-	0,   // 367: proto.KeepInChat.keepType:type_name -> proto.KeepType
-	251, // 368: proto.CertChain.leaf:type_name -> proto.CertChainNoiseCertificate
-	251, // 369: proto.CertChain.intermediate:type_name -> proto.CertChainNoiseCertificate
-	370, // [370:370] is the sub-list for method output_type
-	370, // [370:370] is the sub-list for method input_type
-	370, // [370:370] is the sub-list for extension type_name
-	370, // [370:370] is the sub-list for extension extendee
-	0,   // [0:370] is the sub-list for field type_name
+	211, // 0: proto.DeviceProps.version:type_name -> proto.DeviceProps.AppVersion
+	3,   // 1: proto.DeviceProps.platformType:type_name -> proto.DeviceProps.PlatformType
+	142, // 2: proto.PollUpdateMessage.pollCreationMessageKey:type_name -> proto.MessageKey
+	62,  // 3: proto.PollUpdateMessage.vote:type_name -> proto.PollEncValue
+	61,  // 4: proto.PollUpdateMessage.metadata:type_name -> proto.PollUpdateMessageMetadata
+	212, // 5: proto.PollCreationMessage.options:type_name -> proto.PollCreationMessage.Option
+	104, // 6: proto.PollCreationMessage.contextInfo:type_name -> proto.ContextInfo
+	4,   // 7: proto.PaymentInviteMessage.serviceType:type_name -> proto.PaymentInviteMessage.ServiceType
+	6,   // 8: proto.OrderMessage.status:type_name -> proto.OrderMessage.OrderStatus
+	5,   // 9: proto.OrderMessage.surface:type_name -> proto.OrderMessage.OrderSurface
+	104, // 10: proto.OrderMessage.contextInfo:type_name -> proto.ContextInfo
+	104, // 11: proto.LocationMessage.contextInfo:type_name -> proto.ContextInfo
+	104, // 12: proto.LiveLocationMessage.contextInfo:type_name -> proto.ContextInfo
+	7,   // 13: proto.ListResponseMessage.listType:type_name -> proto.ListResponseMessage.ListType
+	213, // 14: proto.ListResponseMessage.singleSelectReply:type_name -> proto.ListResponseMessage.SingleSelectReply
+	104, // 15: proto.ListResponseMessage.contextInfo:type_name -> proto.ContextInfo
+	8,   // 16: proto.ListMessage.listType:type_name -> proto.ListMessage.ListType
+	214, // 17: proto.ListMessage.sections:type_name -> proto.ListMessage.Section
+	218, // 18: proto.ListMessage.productListInfo:type_name -> proto.ListMessage.ProductListInfo
+	104, // 19: proto.ListMessage.contextInfo:type_name -> proto.ContextInfo
+	142, // 20: proto.KeepInChatMessage.key:type_name -> proto.MessageKey
+	0,   // 21: proto.KeepInChatMessage.keepType:type_name -> proto.KeepType
+	9,   // 22: proto.InvoiceMessage.attachmentType:type_name -> proto.InvoiceMessage.AttachmentType
+	221, // 23: proto.InteractiveResponseMessage.body:type_name -> proto.InteractiveResponseMessage.Body
+	104, // 24: proto.InteractiveResponseMessage.contextInfo:type_name -> proto.ContextInfo
+	220, // 25: proto.InteractiveResponseMessage.nativeFlowResponseMessage:type_name -> proto.InteractiveResponseMessage.NativeFlowResponseMessage
+	224, // 26: proto.InteractiveMessage.header:type_name -> proto.InteractiveMessage.Header
+	227, // 27: proto.InteractiveMessage.body:type_name -> proto.InteractiveMessage.Body
+	225, // 28: proto.InteractiveMessage.footer:type_name -> proto.InteractiveMessage.Footer
+	104, // 29: proto.InteractiveMessage.contextInfo:type_name -> proto.ContextInfo
+	222, // 30: proto.InteractiveMessage.shopStorefrontMessage:type_name -> proto.InteractiveMessage.ShopMessage
+	226, // 31: proto.InteractiveMessage.collectionMessage:type_name -> proto.InteractiveMessage.CollectionMessage
+	223, // 32: proto.InteractiveMessage.nativeFlowMessage:type_name -> proto.InteractiveMessage.NativeFlowMessage
+	100, // 33: proto.ImageMessage.interactiveAnnotations:type_name -> proto.InteractiveAnnotation
+	104, // 34: proto.ImageMessage.contextInfo:type_name -> proto.ContextInfo
+	11,  // 35: proto.HistorySyncNotification.syncType:type_name -> proto.HistorySyncNotification.HistorySyncType
+	229, // 36: proto.HighlyStructuredMessage.localizableParams:type_name -> proto.HighlyStructuredMessage.HSMLocalizableParameter
+	113, // 37: proto.HighlyStructuredMessage.hydratedHsm:type_name -> proto.TemplateMessage
+	104, // 38: proto.GroupInviteMessage.contextInfo:type_name -> proto.ContextInfo
+	14,  // 39: proto.GroupInviteMessage.groupType:type_name -> proto.GroupInviteMessage.GroupType
+	110, // 40: proto.FutureProofMessage.message:type_name -> proto.Message
+	17,  // 41: proto.ExtendedTextMessage.font:type_name -> proto.ExtendedTextMessage.FontType
+	15,  // 42: proto.ExtendedTextMessage.previewType:type_name -> proto.ExtendedTextMessage.PreviewType
+	104, // 43: proto.ExtendedTextMessage.contextInfo:type_name -> proto.ContextInfo
+	16,  // 44: proto.ExtendedTextMessage.inviteLinkGroupType:type_name -> proto.ExtendedTextMessage.InviteLinkGroupType
+	16,  // 45: proto.ExtendedTextMessage.inviteLinkGroupTypeV2:type_name -> proto.ExtendedTextMessage.InviteLinkGroupType
+	104, // 46: proto.DocumentMessage.contextInfo:type_name -> proto.ContextInfo
+	110, // 47: proto.DeviceSentMessage.message:type_name -> proto.Message
+	142, // 48: proto.DeclinePaymentRequestMessage.key:type_name -> proto.MessageKey
+	85,  // 49: proto.ContactsArrayMessage.contacts:type_name -> proto.ContactMessage
+	104, // 50: proto.ContactsArrayMessage.contextInfo:type_name -> proto.ContextInfo
+	104, // 51: proto.ContactMessage.contextInfo:type_name -> proto.ContextInfo
+	142, // 52: proto.CancelPaymentRequestMessage.key:type_name -> proto.MessageKey
+	104, // 53: proto.ButtonsResponseMessage.contextInfo:type_name -> proto.ContextInfo
+	18,  // 54: proto.ButtonsResponseMessage.type:type_name -> proto.ButtonsResponseMessage.Type
+	104, // 55: proto.ButtonsMessage.contextInfo:type_name -> proto.ContextInfo
+	234, // 56: proto.ButtonsMessage.buttons:type_name -> proto.ButtonsMessage.Button
+	19,  // 57: proto.ButtonsMessage.headerType:type_name -> proto.ButtonsMessage.HeaderType
+	81,  // 58: proto.ButtonsMessage.documentMessage:type_name -> proto.DocumentMessage
+	75,  // 59: proto.ButtonsMessage.imageMessage:type_name -> proto.ImageMessage
+	112, // 60: proto.ButtonsMessage.videoMessage:type_name -> proto.VideoMessage
+	66,  // 61: proto.ButtonsMessage.locationMessage:type_name -> proto.LocationMessage
+	104, // 62: proto.AudioMessage.contextInfo:type_name -> proto.ContextInfo
+	95,  // 63: proto.AppStateSyncKey.keyId:type_name -> proto.AppStateSyncKeyId
+	97,  // 64: proto.AppStateSyncKey.keyData:type_name -> proto.AppStateSyncKeyData
+	92,  // 65: proto.AppStateSyncKeyShare.keys:type_name -> proto.AppStateSyncKey
+	95,  // 66: proto.AppStateSyncKeyRequest.keyIds:type_name -> proto.AppStateSyncKeyId
+	96,  // 67: proto.AppStateSyncKeyData.fingerprint:type_name -> proto.AppStateSyncKeyFingerprint
+	107, // 68: proto.InteractiveAnnotation.polygonVertices:type_name -> proto.Point
+	99,  // 69: proto.InteractiveAnnotation.location:type_name -> proto.Location
+	238, // 70: proto.HydratedTemplateButton.quickReplyButton:type_name -> proto.HydratedTemplateButton.HydratedQuickReplyButton
+	237, // 71: proto.HydratedTemplateButton.urlButton:type_name -> proto.HydratedTemplateButton.HydratedURLButton
+	239, // 72: proto.HydratedTemplateButton.callButton:type_name -> proto.HydratedTemplateButton.HydratedCallButton
+	21,  // 73: proto.DisappearingMode.initiator:type_name -> proto.DisappearingMode.Initiator
+	110, // 74: proto.ContextInfo.quotedMessage:type_name -> proto.Message
+	241, // 75: proto.ContextInfo.quotedAd:type_name -> proto.ContextInfo.AdReplyInfo
+	142, // 76: proto.ContextInfo.placeholderKey:type_name -> proto.MessageKey
+	240, // 77: proto.ContextInfo.externalAdReply:type_name -> proto.ContextInfo.ExternalAdReplyInfo
+	102, // 78: proto.ContextInfo.disappearingMode:type_name -> proto.DisappearingMode
+	105, // 79: proto.ContextInfo.actionLink:type_name -> proto.ActionLink
+	243, // 80: proto.TemplateButton.quickReplyButton:type_name -> proto.TemplateButton.QuickReplyButton
+	242, // 81: proto.TemplateButton.urlButton:type_name -> proto.TemplateButton.URLButton
+	244, // 82: proto.TemplateButton.callButton:type_name -> proto.TemplateButton.CallButton
+	245, // 83: proto.PaymentBackground.mediaData:type_name -> proto.PaymentBackground.MediaData
+	24,  // 84: proto.PaymentBackground.type:type_name -> proto.PaymentBackground.Type
+	117, // 85: proto.Message.senderKeyDistributionMessage:type_name -> proto.SenderKeyDistributionMessage
+	75,  // 86: proto.Message.imageMessage:type_name -> proto.ImageMessage
+	85,  // 87: proto.Message.contactMessage:type_name -> proto.ContactMessage
+	66,  // 88: proto.Message.locationMessage:type_name -> proto.LocationMessage
+	80,  // 89: proto.Message.extendedTextMessage:type_name -> proto.ExtendedTextMessage
+	81,  // 90: proto.Message.documentMessage:type_name -> proto.DocumentMessage
+	91,  // 91: proto.Message.audioMessage:type_name -> proto.AudioMessage
+	112, // 92: proto.Message.videoMessage:type_name -> proto.VideoMessage
+	88,  // 93: proto.Message.call:type_name -> proto.Call
+	86,  // 94: proto.Message.chat:type_name -> proto.Chat
+	124, // 95: proto.Message.protocolMessage:type_name -> proto.ProtocolMessage
+	84,  // 96: proto.Message.contactsArrayMessage:type_name -> proto.ContactsArrayMessage
+	77,  // 97: proto.Message.highlyStructuredMessage:type_name -> proto.HighlyStructuredMessage
+	117, // 98: proto.Message.fastRatchetKeySenderKeyDistributionMessage:type_name -> proto.SenderKeyDistributionMessage
+	118, // 99: proto.Message.sendPaymentMessage:type_name -> proto.SendPaymentMessage
+	67,  // 100: proto.Message.liveLocationMessage:type_name -> proto.LiveLocationMessage
+	120, // 101: proto.Message.requestPaymentMessage:type_name -> proto.RequestPaymentMessage
+	83,  // 102: proto.Message.declinePaymentRequestMessage:type_name -> proto.DeclinePaymentRequestMessage
+	87,  // 103: proto.Message.cancelPaymentRequestMessage:type_name -> proto.CancelPaymentRequestMessage
+	113, // 104: proto.Message.templateMessage:type_name -> proto.TemplateMessage
+	116, // 105: proto.Message.stickerMessage:type_name -> proto.StickerMessage
+	78,  // 106: proto.Message.groupInviteMessage:type_name -> proto.GroupInviteMessage
+	114, // 107: proto.Message.templateButtonReplyMessage:type_name -> proto.TemplateButtonReplyMessage
+	125, // 108: proto.Message.productMessage:type_name -> proto.ProductMessage
+	82,  // 109: proto.Message.deviceSentMessage:type_name -> proto.DeviceSentMessage
+	111, // 110: proto.Message.messageContextInfo:type_name -> proto.MessageContextInfo
+	69,  // 111: proto.Message.listMessage:type_name -> proto.ListMessage
+	79,  // 112: proto.Message.viewOnceMessage:type_name -> proto.FutureProofMessage
+	65,  // 113: proto.Message.orderMessage:type_name -> proto.OrderMessage
+	68,  // 114: proto.Message.listResponseMessage:type_name -> proto.ListResponseMessage
+	79,  // 115: proto.Message.ephemeralMessage:type_name -> proto.FutureProofMessage
+	71,  // 116: proto.Message.invoiceMessage:type_name -> proto.InvoiceMessage
+	90,  // 117: proto.Message.buttonsMessage:type_name -> proto.ButtonsMessage
+	89,  // 118: proto.Message.buttonsResponseMessage:type_name -> proto.ButtonsResponseMessage
+	64,  // 119: proto.Message.paymentInviteMessage:type_name -> proto.PaymentInviteMessage
+	73,  // 120: proto.Message.interactiveMessage:type_name -> proto.InteractiveMessage
+	123, // 121: proto.Message.reactionMessage:type_name -> proto.ReactionMessage
+	115, // 122: proto.Message.stickerSyncRmrMessage:type_name -> proto.StickerSyncRMRMessage
+	72,  // 123: proto.Message.interactiveResponseMessage:type_name -> proto.InteractiveResponseMessage
+	63,  // 124: proto.Message.pollCreationMessage:type_name -> proto.PollCreationMessage
+	60,  // 125: proto.Message.pollUpdateMessage:type_name -> proto.PollUpdateMessage
+	70,  // 126: proto.Message.keepInChatMessage:type_name -> proto.KeepInChatMessage
+	79,  // 127: proto.Message.documentWithCaptionMessage:type_name -> proto.FutureProofMessage
+	119, // 128: proto.Message.requestPhoneNumberMessage:type_name -> proto.RequestPhoneNumberMessage
+	79,  // 129: proto.Message.viewOnceMessageV2:type_name -> proto.FutureProofMessage
+	103, // 130: proto.MessageContextInfo.deviceListMetadata:type_name -> proto.DeviceListMetadata
+	100, // 131: proto.VideoMessage.interactiveAnnotations:type_name -> proto.InteractiveAnnotation
+	104, // 132: proto.VideoMessage.contextInfo:type_name -> proto.ContextInfo
+	25,  // 133: proto.VideoMessage.gifAttribution:type_name -> proto.VideoMessage.Attribution
+	104, // 134: proto.TemplateMessage.contextInfo:type_name -> proto.ContextInfo
+	246, // 135: proto.TemplateMessage.hydratedTemplate:type_name -> proto.TemplateMessage.HydratedFourRowTemplate
+	247, // 136: proto.TemplateMessage.fourRowTemplate:type_name -> proto.TemplateMessage.FourRowTemplate
+	246, // 137: proto.TemplateMessage.hydratedFourRowTemplate:type_name -> proto.TemplateMessage.HydratedFourRowTemplate
+	104, // 138: proto.TemplateButtonReplyMessage.contextInfo:type_name -> proto.ContextInfo
+	104, // 139: proto.StickerMessage.contextInfo:type_name -> proto.ContextInfo
+	110, // 140: proto.SendPaymentMessage.noteMessage:type_name -> proto.Message
+	142, // 141: proto.SendPaymentMessage.requestMessageKey:type_name -> proto.MessageKey
+	108, // 142: proto.SendPaymentMessage.background:type_name -> proto.PaymentBackground
+	104, // 143: proto.RequestPhoneNumberMessage.contextInfo:type_name -> proto.ContextInfo
+	110, // 144: proto.RequestPaymentMessage.noteMessage:type_name -> proto.Message
+	109, // 145: proto.RequestPaymentMessage.amount:type_name -> proto.Money
+	108, // 146: proto.RequestPaymentMessage.background:type_name -> proto.PaymentBackground
+	1,   // 147: proto.RequestMediaUploadResponseMessage.rmrSource:type_name -> proto.RmrSource
+	248, // 148: proto.RequestMediaUploadResponseMessage.reuploadResult:type_name -> proto.RequestMediaUploadResponseMessage.RequestMediaUploadResult
+	1,   // 149: proto.RequestMediaUploadMessage.rmrSource:type_name -> proto.RmrSource
+	142, // 150: proto.ReactionMessage.key:type_name -> proto.MessageKey
+	142, // 151: proto.ProtocolMessage.key:type_name -> proto.MessageKey
+	26,  // 152: proto.ProtocolMessage.type:type_name -> proto.ProtocolMessage.Type
+	76,  // 153: proto.ProtocolMessage.historySyncNotification:type_name -> proto.HistorySyncNotification
+	93,  // 154: proto.ProtocolMessage.appStateSyncKeyShare:type_name -> proto.AppStateSyncKeyShare
+	94,  // 155: proto.ProtocolMessage.appStateSyncKeyRequest:type_name -> proto.AppStateSyncKeyRequest
+	74,  // 156: proto.ProtocolMessage.initialSecurityNotificationSettingSync:type_name -> proto.InitialSecurityNotificationSettingSync
+	98,  // 157: proto.ProtocolMessage.appStateFatalExceptionNotification:type_name -> proto.AppStateFatalExceptionNotification
+	102, // 158: proto.ProtocolMessage.disappearingMode:type_name -> proto.DisappearingMode
+	122, // 159: proto.ProtocolMessage.requestMediaUploadMessage:type_name -> proto.RequestMediaUploadMessage
+	121, // 160: proto.ProtocolMessage.requestMediaUploadResponseMessage:type_name -> proto.RequestMediaUploadResponseMessage
+	249, // 161: proto.ProductMessage.product:type_name -> proto.ProductMessage.ProductSnapshot
+	250, // 162: proto.ProductMessage.catalog:type_name -> proto.ProductMessage.CatalogSnapshot
+	104, // 163: proto.ProductMessage.contextInfo:type_name -> proto.ContextInfo
+	131, // 164: proto.PastParticipants.pastParticipants:type_name -> proto.PastParticipant
+	27,  // 165: proto.PastParticipant.leaveReason:type_name -> proto.PastParticipant.LeaveReason
+	28,  // 166: proto.HistorySync.syncType:type_name -> proto.HistorySync.HistorySyncType
+	136, // 167: proto.HistorySync.conversations:type_name -> proto.Conversation
+	197, // 168: proto.HistorySync.statusV3Messages:type_name -> proto.WebMessageInfo
+	129, // 169: proto.HistorySync.pushnames:type_name -> proto.Pushname
+	135, // 170: proto.HistorySync.globalSettings:type_name -> proto.GlobalSettings
+	128, // 171: proto.HistorySync.recentStickers:type_name -> proto.StickerMetadata
+	130, // 172: proto.HistorySync.pastParticipants:type_name -> proto.PastParticipants
+	197, // 173: proto.HistorySyncMsg.message:type_name -> proto.WebMessageInfo
+	29,  // 174: proto.GroupParticipant.rank:type_name -> proto.GroupParticipant.Rank
+	127, // 175: proto.GlobalSettings.lightThemeWallpaper:type_name -> proto.WallpaperSettings
+	2,   // 176: proto.GlobalSettings.mediaVisibility:type_name -> proto.MediaVisibility
+	127, // 177: proto.GlobalSettings.darkThemeWallpaper:type_name -> proto.WallpaperSettings
+	137, // 178: proto.GlobalSettings.autoDownloadWiFi:type_name -> proto.AutoDownloadSettings
+	137, // 179: proto.GlobalSettings.autoDownloadCellular:type_name -> proto.AutoDownloadSettings
+	137, // 180: proto.GlobalSettings.autoDownloadRoaming:type_name -> proto.AutoDownloadSettings
+	133, // 181: proto.Conversation.messages:type_name -> proto.HistorySyncMsg
+	30,  // 182: proto.Conversation.endOfHistoryTransferType:type_name -> proto.Conversation.EndOfHistoryTransferType
+	102, // 183: proto.Conversation.disappearingMode:type_name -> proto.DisappearingMode
+	134, // 184: proto.Conversation.participant:type_name -> proto.GroupParticipant
+	127, // 185: proto.Conversation.wallpaper:type_name -> proto.WallpaperSettings
+	2,   // 186: proto.Conversation.mediaVisibility:type_name -> proto.MediaVisibility
+	139, // 187: proto.MsgRowOpaqueData.currentMsg:type_name -> proto.MsgOpaqueData
+	139, // 188: proto.MsgRowOpaqueData.quotedMsg:type_name -> proto.MsgOpaqueData
+	251, // 189: proto.MsgOpaqueData.pollOptions:type_name -> proto.MsgOpaqueData.PollOption
+	62,  // 190: proto.MsgOpaqueData.encPollVote:type_name -> proto.PollEncValue
+	31,  // 191: proto.MediaRetryNotification.result:type_name -> proto.MediaRetryNotification.ResultType
+	143, // 192: proto.SyncdSnapshot.version:type_name -> proto.SyncdVersion
+	146, // 193: proto.SyncdSnapshot.records:type_name -> proto.SyncdRecord
+	151, // 194: proto.SyncdSnapshot.keyId:type_name -> proto.KeyId
+	150, // 195: proto.SyncdRecord.index:type_name -> proto.SyncdIndex
+	144, // 196: proto.SyncdRecord.value:type_name -> proto.SyncdValue
+	151, // 197: proto.SyncdRecord.keyId:type_name -> proto.KeyId
+	143, // 198: proto.SyncdPatch.version:type_name -> proto.SyncdVersion
+	149, // 199: proto.SyncdPatch.mutations:type_name -> proto.SyncdMutation
+	152, // 200: proto.SyncdPatch.externalMutations:type_name -> proto.ExternalBlobReference
+	151, // 201: proto.SyncdPatch.keyId:type_name -> proto.KeyId
+	153, // 202: proto.SyncdPatch.exitCode:type_name -> proto.ExitCode
+	149, // 203: proto.SyncdMutations.mutations:type_name -> proto.SyncdMutation
+	32,  // 204: proto.SyncdMutation.operation:type_name -> proto.SyncdMutation.SyncdOperation
+	146, // 205: proto.SyncdMutation.record:type_name -> proto.SyncdRecord
+	162, // 206: proto.SyncActionValue.starAction:type_name -> proto.StarAction
+	179, // 207: proto.SyncActionValue.contactAction:type_name -> proto.ContactAction
+	171, // 208: proto.SyncActionValue.muteAction:type_name -> proto.MuteAction
+	169, // 209: proto.SyncActionValue.pinAction:type_name -> proto.PinAction
+	163, // 210: proto.SyncActionValue.securityNotificationSetting:type_name -> proto.SecurityNotificationSetting
+	166, // 211: proto.SyncActionValue.pushNameSetting:type_name -> proto.PushNameSetting
+	165, // 212: proto.SyncActionValue.quickReplyAction:type_name -> proto.QuickReplyAction
+	164, // 213: proto.SyncActionValue.recentEmojiWeightsAction:type_name -> proto.RecentEmojiWeightsAction
+	174, // 214: proto.SyncActionValue.labelEditAction:type_name -> proto.LabelEditAction
+	175, // 215: proto.SyncActionValue.labelAssociationAction:type_name -> proto.LabelAssociationAction
+	173, // 216: proto.SyncActionValue.localeSetting:type_name -> proto.LocaleSetting
+	181, // 217: proto.SyncActionValue.archiveChatAction:type_name -> proto.ArchiveChatAction
+	177, // 218: proto.SyncActionValue.deleteMessageForMeAction:type_name -> proto.DeleteMessageForMeAction
+	176, // 219: proto.SyncActionValue.keyExpiration:type_name -> proto.KeyExpiration
+	172, // 220: proto.SyncActionValue.markChatAsReadAction:type_name -> proto.MarkChatAsReadAction
+	180, // 221: proto.SyncActionValue.clearChatAction:type_name -> proto.ClearChatAction
+	178, // 222: proto.SyncActionValue.deleteChatAction:type_name -> proto.DeleteChatAction
+	156, // 223: proto.SyncActionValue.unarchiveChatsSetting:type_name -> proto.UnarchiveChatsSetting
+	168, // 224: proto.SyncActionValue.primaryFeature:type_name -> proto.PrimaryFeature
+	182, // 225: proto.SyncActionValue.androidUnsupportedActions:type_name -> proto.AndroidUnsupportedActions
+	183, // 226: proto.SyncActionValue.agentAction:type_name -> proto.AgentAction
+	160, // 227: proto.SyncActionValue.subscriptionAction:type_name -> proto.SubscriptionAction
+	155, // 228: proto.SyncActionValue.userStatusMuteAction:type_name -> proto.UserStatusMuteAction
+	157, // 229: proto.SyncActionValue.timeFormatAction:type_name -> proto.TimeFormatAction
+	170, // 230: proto.SyncActionValue.nuxAction:type_name -> proto.NuxAction
+	167, // 231: proto.SyncActionValue.primaryVersionAction:type_name -> proto.PrimaryVersionAction
+	161, // 232: proto.SyncActionValue.stickerAction:type_name -> proto.StickerAction
+	142, // 233: proto.SyncActionMessage.key:type_name -> proto.MessageKey
+	158, // 234: proto.SyncActionMessageRange.messages:type_name -> proto.SyncActionMessage
+	185, // 235: proto.RecentEmojiWeightsAction.weights:type_name -> proto.RecentEmojiWeight
+	159, // 236: proto.MarkChatAsReadAction.messageRange:type_name -> proto.SyncActionMessageRange
+	159, // 237: proto.DeleteChatAction.messageRange:type_name -> proto.SyncActionMessageRange
+	159, // 238: proto.ClearChatAction.messageRange:type_name -> proto.SyncActionMessageRange
+	159, // 239: proto.ArchiveChatAction.messageRange:type_name -> proto.SyncActionMessageRange
+	154, // 240: proto.SyncActionData.value:type_name -> proto.SyncActionValue
+	33,  // 241: proto.BizIdentityInfo.vlevel:type_name -> proto.BizIdentityInfo.VerifiedLevelValue
+	186, // 242: proto.BizIdentityInfo.vnameCert:type_name -> proto.VerifiedNameCertificate
+	34,  // 243: proto.BizIdentityInfo.hostStorage:type_name -> proto.BizIdentityInfo.HostStorageType
+	35,  // 244: proto.BizIdentityInfo.actualActors:type_name -> proto.BizIdentityInfo.ActualActorsType
+	186, // 245: proto.BizAccountPayload.vnameCert:type_name -> proto.VerifiedNameCertificate
+	36,  // 246: proto.BizAccountLinkInfo.hostStorage:type_name -> proto.BizAccountLinkInfo.HostStorageType
+	37,  // 247: proto.BizAccountLinkInfo.accountType:type_name -> proto.BizAccountLinkInfo.AccountType
+	193, // 248: proto.HandshakeMessage.clientHello:type_name -> proto.HandshakeClientHello
+	192, // 249: proto.HandshakeMessage.serverHello:type_name -> proto.HandshakeServerHello
+	194, // 250: proto.HandshakeMessage.clientFinish:type_name -> proto.HandshakeClientFinish
+	254, // 251: proto.ClientPayload.userAgent:type_name -> proto.ClientPayload.UserAgent
+	253, // 252: proto.ClientPayload.webInfo:type_name -> proto.ClientPayload.WebInfo
+	40,  // 253: proto.ClientPayload.connectType:type_name -> proto.ClientPayload.ConnectType
+	41,  // 254: proto.ClientPayload.connectReason:type_name -> proto.ClientPayload.ConnectReason
+	256, // 255: proto.ClientPayload.dnsSource:type_name -> proto.ClientPayload.DNSSource
+	255, // 256: proto.ClientPayload.devicePairingData:type_name -> proto.ClientPayload.DevicePairingRegistrationData
+	38,  // 257: proto.ClientPayload.product:type_name -> proto.ClientPayload.Product
+	39,  // 258: proto.ClientPayload.iosAppExtension:type_name -> proto.ClientPayload.IOSAppExtension
+	197, // 259: proto.WebNotificationsInfo.notifyMessages:type_name -> proto.WebMessageInfo
+	142, // 260: proto.WebMessageInfo.key:type_name -> proto.MessageKey
+	110, // 261: proto.WebMessageInfo.message:type_name -> proto.Message
+	47,  // 262: proto.WebMessageInfo.status:type_name -> proto.WebMessageInfo.Status
+	46,  // 263: proto.WebMessageInfo.messageStubType:type_name -> proto.WebMessageInfo.StubType
+	205, // 264: proto.WebMessageInfo.paymentInfo:type_name -> proto.PaymentInfo
+	67,  // 265: proto.WebMessageInfo.finalLiveLocation:type_name -> proto.LiveLocationMessage
+	205, // 266: proto.WebMessageInfo.quotedPaymentInfo:type_name -> proto.PaymentInfo
+	48,  // 267: proto.WebMessageInfo.bizPrivacyStatus:type_name -> proto.WebMessageInfo.BizPrivacyStatus
+	207, // 268: proto.WebMessageInfo.mediaData:type_name -> proto.MediaData
+	204, // 269: proto.WebMessageInfo.photoChange:type_name -> proto.PhotoChange
+	199, // 270: proto.WebMessageInfo.userReceipt:type_name -> proto.UserReceipt
+	201, // 271: proto.WebMessageInfo.reactions:type_name -> proto.Reaction
+	207, // 272: proto.WebMessageInfo.quotedStickerData:type_name -> proto.MediaData
+	200, // 273: proto.WebMessageInfo.statusPsa:type_name -> proto.StatusPSA
+	202, // 274: proto.WebMessageInfo.pollUpdates:type_name -> proto.PollUpdate
+	203, // 275: proto.WebMessageInfo.pollAdditionalMetadata:type_name -> proto.PollAdditionalMetadata
+	208, // 276: proto.WebMessageInfo.keepInChat:type_name -> proto.KeepInChat
+	49,  // 277: proto.WebFeatures.labelsDisplay:type_name -> proto.WebFeatures.Flag
+	49,  // 278: proto.WebFeatures.voipIndividualOutgoing:type_name -> proto.WebFeatures.Flag
+	49,  // 279: proto.WebFeatures.groupsV3:type_name -> proto.WebFeatures.Flag
+	49,  // 280: proto.WebFeatures.groupsV3Create:type_name -> proto.WebFeatures.Flag
+	49,  // 281: proto.WebFeatures.changeNumberV2:type_name -> proto.WebFeatures.Flag
+	49,  // 282: proto.WebFeatures.queryStatusV3Thumbnail:type_name -> proto.WebFeatures.Flag
+	49,  // 283: proto.WebFeatures.liveLocations:type_name -> proto.WebFeatures.Flag
+	49,  // 284: proto.WebFeatures.queryVname:type_name -> proto.WebFeatures.Flag
+	49,  // 285: proto.WebFeatures.voipIndividualIncoming:type_name -> proto.WebFeatures.Flag
+	49,  // 286: proto.WebFeatures.quickRepliesQuery:type_name -> proto.WebFeatures.Flag
+	49,  // 287: proto.WebFeatures.payments:type_name -> proto.WebFeatures.Flag
+	49,  // 288: proto.WebFeatures.stickerPackQuery:type_name -> proto.WebFeatures.Flag
+	49,  // 289: proto.WebFeatures.liveLocationsFinal:type_name -> proto.WebFeatures.Flag
+	49,  // 290: proto.WebFeatures.labelsEdit:type_name -> proto.WebFeatures.Flag
+	49,  // 291: proto.WebFeatures.mediaUpload:type_name -> proto.WebFeatures.Flag
+	49,  // 292: proto.WebFeatures.mediaUploadRichQuickReplies:type_name -> proto.WebFeatures.Flag
+	49,  // 293: proto.WebFeatures.vnameV2:type_name -> proto.WebFeatures.Flag
+	49,  // 294: proto.WebFeatures.videoPlaybackUrl:type_name -> proto.WebFeatures.Flag
+	49,  // 295: proto.WebFeatures.statusRanking:type_name -> proto.WebFeatures.Flag
+	49,  // 296: proto.WebFeatures.voipIndividualVideo:type_name -> proto.WebFeatures.Flag
+	49,  // 297: proto.WebFeatures.thirdPartyStickers:type_name -> proto.WebFeatures.Flag
+	49,  // 298: proto.WebFeatures.frequentlyForwardedSetting:type_name -> proto.WebFeatures.Flag
+	49,  // 299: proto.WebFeatures.groupsV4JoinPermission:type_name -> proto.WebFeatures.Flag
+	49,  // 300: proto.WebFeatures.recentStickers:type_name -> proto.WebFeatures.Flag
+	49,  // 301: proto.WebFeatures.catalog:type_name -> proto.WebFeatures.Flag
+	49,  // 302: proto.WebFeatures.starredStickers:type_name -> proto.WebFeatures.Flag
+	49,  // 303: proto.WebFeatures.voipGroupCall:type_name -> proto.WebFeatures.Flag
+	49,  // 304: proto.WebFeatures.templateMessage:type_name -> proto.WebFeatures.Flag
+	49,  // 305: proto.WebFeatures.templateMessageInteractivity:type_name -> proto.WebFeatures.Flag
+	49,  // 306: proto.WebFeatures.ephemeralMessages:type_name -> proto.WebFeatures.Flag
+	49,  // 307: proto.WebFeatures.e2ENotificationSync:type_name -> proto.WebFeatures.Flag
+	49,  // 308: proto.WebFeatures.recentStickersV2:type_name -> proto.WebFeatures.Flag
+	49,  // 309: proto.WebFeatures.recentStickersV3:type_name -> proto.WebFeatures.Flag
+	49,  // 310: proto.WebFeatures.userNotice:type_name -> proto.WebFeatures.Flag
+	49,  // 311: proto.WebFeatures.support:type_name -> proto.WebFeatures.Flag
+	49,  // 312: proto.WebFeatures.groupUiiCleanup:type_name -> proto.WebFeatures.Flag
+	49,  // 313: proto.WebFeatures.groupDogfoodingInternalOnly:type_name -> proto.WebFeatures.Flag
+	49,  // 314: proto.WebFeatures.settingsSync:type_name -> proto.WebFeatures.Flag
+	49,  // 315: proto.WebFeatures.archiveV2:type_name -> proto.WebFeatures.Flag
+	49,  // 316: proto.WebFeatures.ephemeralAllowGroupMembers:type_name -> proto.WebFeatures.Flag
+	49,  // 317: proto.WebFeatures.ephemeral24HDuration:type_name -> proto.WebFeatures.Flag
+	49,  // 318: proto.WebFeatures.mdForceUpgrade:type_name -> proto.WebFeatures.Flag
+	49,  // 319: proto.WebFeatures.disappearingMode:type_name -> proto.WebFeatures.Flag
+	49,  // 320: proto.WebFeatures.externalMdOptInAvailable:type_name -> proto.WebFeatures.Flag
+	49,  // 321: proto.WebFeatures.noDeleteMessageTimeLimit:type_name -> proto.WebFeatures.Flag
+	142, // 322: proto.Reaction.key:type_name -> proto.MessageKey
+	142, // 323: proto.PollUpdate.pollUpdateMessageKey:type_name -> proto.MessageKey
+	59,  // 324: proto.PollUpdate.vote:type_name -> proto.PollVoteMessage
+	52,  // 325: proto.PaymentInfo.currencyDeprecated:type_name -> proto.PaymentInfo.Currency
+	51,  // 326: proto.PaymentInfo.status:type_name -> proto.PaymentInfo.Status
+	142, // 327: proto.PaymentInfo.requestMessageKey:type_name -> proto.MessageKey
+	50,  // 328: proto.PaymentInfo.txnStatus:type_name -> proto.PaymentInfo.TxnStatus
+	109, // 329: proto.PaymentInfo.primaryAmount:type_name -> proto.Money
+	109, // 330: proto.PaymentInfo.exchangeAmount:type_name -> proto.Money
+	142, // 331: proto.NotificationMessageInfo.key:type_name -> proto.MessageKey
+	110, // 332: proto.NotificationMessageInfo.message:type_name -> proto.Message
+	0,   // 333: proto.KeepInChat.keepType:type_name -> proto.KeepType
+	142, // 334: proto.KeepInChat.key:type_name -> proto.MessageKey
+	260, // 335: proto.CertChain.leaf:type_name -> proto.CertChain.NoiseCertificate
+	260, // 336: proto.CertChain.intermediate:type_name -> proto.CertChain.NoiseCertificate
+	215, // 337: proto.ListMessage.Section.rows:type_name -> proto.ListMessage.Row
+	216, // 338: proto.ListMessage.ProductSection.products:type_name -> proto.ListMessage.Product
+	217, // 339: proto.ListMessage.ProductListInfo.productSections:type_name -> proto.ListMessage.ProductSection
+	219, // 340: proto.ListMessage.ProductListInfo.headerImage:type_name -> proto.ListMessage.ProductListHeaderImage
+	10,  // 341: proto.InteractiveMessage.ShopMessage.surface:type_name -> proto.InteractiveMessage.ShopMessage.Surface
+	228, // 342: proto.InteractiveMessage.NativeFlowMessage.buttons:type_name -> proto.InteractiveMessage.NativeFlowMessage.NativeFlowButton
+	81,  // 343: proto.InteractiveMessage.Header.documentMessage:type_name -> proto.DocumentMessage
+	75,  // 344: proto.InteractiveMessage.Header.imageMessage:type_name -> proto.ImageMessage
+	112, // 345: proto.InteractiveMessage.Header.videoMessage:type_name -> proto.VideoMessage
+	231, // 346: proto.HighlyStructuredMessage.HSMLocalizableParameter.currency:type_name -> proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency
+	230, // 347: proto.HighlyStructuredMessage.HSMLocalizableParameter.dateTime:type_name -> proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime
+	233, // 348: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.component:type_name -> proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent
+	232, // 349: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.unixEpoch:type_name -> proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch
+	12,  // 350: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.dayOfWeek:type_name -> proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.DayOfWeekType
+	13,  // 351: proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.calendar:type_name -> proto.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent.CalendarType
+	236, // 352: proto.ButtonsMessage.Button.buttonText:type_name -> proto.ButtonsMessage.Button.ButtonText
+	20,  // 353: proto.ButtonsMessage.Button.type:type_name -> proto.ButtonsMessage.Button.Type
+	235, // 354: proto.ButtonsMessage.Button.nativeFlowInfo:type_name -> proto.ButtonsMessage.Button.NativeFlowInfo
+	22,  // 355: proto.ContextInfo.ExternalAdReplyInfo.mediaType:type_name -> proto.ContextInfo.ExternalAdReplyInfo.MediaType
+	23,  // 356: proto.ContextInfo.AdReplyInfo.mediaType:type_name -> proto.ContextInfo.AdReplyInfo.MediaType
+	77,  // 357: proto.TemplateButton.URLButton.displayText:type_name -> proto.HighlyStructuredMessage
+	77,  // 358: proto.TemplateButton.URLButton.url:type_name -> proto.HighlyStructuredMessage
+	77,  // 359: proto.TemplateButton.QuickReplyButton.displayText:type_name -> proto.HighlyStructuredMessage
+	77,  // 360: proto.TemplateButton.CallButton.displayText:type_name -> proto.HighlyStructuredMessage
+	77,  // 361: proto.TemplateButton.CallButton.phoneNumber:type_name -> proto.HighlyStructuredMessage
+	101, // 362: proto.TemplateMessage.HydratedFourRowTemplate.hydratedButtons:type_name -> proto.HydratedTemplateButton
+	81,  // 363: proto.TemplateMessage.HydratedFourRowTemplate.documentMessage:type_name -> proto.DocumentMessage
+	75,  // 364: proto.TemplateMessage.HydratedFourRowTemplate.imageMessage:type_name -> proto.ImageMessage
+	112, // 365: proto.TemplateMessage.HydratedFourRowTemplate.videoMessage:type_name -> proto.VideoMessage
+	66,  // 366: proto.TemplateMessage.HydratedFourRowTemplate.locationMessage:type_name -> proto.LocationMessage
+	77,  // 367: proto.TemplateMessage.FourRowTemplate.content:type_name -> proto.HighlyStructuredMessage
+	77,  // 368: proto.TemplateMessage.FourRowTemplate.footer:type_name -> proto.HighlyStructuredMessage
+	106, // 369: proto.TemplateMessage.FourRowTemplate.buttons:type_name -> proto.TemplateButton
+	81,  // 370: proto.TemplateMessage.FourRowTemplate.documentMessage:type_name -> proto.DocumentMessage
+	77,  // 371: proto.TemplateMessage.FourRowTemplate.highlyStructuredMessage:type_name -> proto.HighlyStructuredMessage
+	75,  // 372: proto.TemplateMessage.FourRowTemplate.imageMessage:type_name -> proto.ImageMessage
+	112, // 373: proto.TemplateMessage.FourRowTemplate.videoMessage:type_name -> proto.VideoMessage
+	66,  // 374: proto.TemplateMessage.FourRowTemplate.locationMessage:type_name -> proto.LocationMessage
+	31,  // 375: proto.RequestMediaUploadResponseMessage.RequestMediaUploadResult.mediaUploadResult:type_name -> proto.MediaRetryNotification.ResultType
+	116, // 376: proto.RequestMediaUploadResponseMessage.RequestMediaUploadResult.stickerMessage:type_name -> proto.StickerMessage
+	75,  // 377: proto.ProductMessage.ProductSnapshot.productImage:type_name -> proto.ImageMessage
+	75,  // 378: proto.ProductMessage.CatalogSnapshot.catalogImage:type_name -> proto.ImageMessage
+	187, // 379: proto.VerifiedNameCertificate.Details.localizedNames:type_name -> proto.LocalizedName
+	257, // 380: proto.ClientPayload.WebInfo.webdPayload:type_name -> proto.ClientPayload.WebInfo.WebdPayload
+	42,  // 381: proto.ClientPayload.WebInfo.webSubPlatform:type_name -> proto.ClientPayload.WebInfo.WebSubPlatform
+	44,  // 382: proto.ClientPayload.UserAgent.platform:type_name -> proto.ClientPayload.UserAgent.Platform
+	258, // 383: proto.ClientPayload.UserAgent.appVersion:type_name -> proto.ClientPayload.UserAgent.AppVersion
+	43,  // 384: proto.ClientPayload.UserAgent.releaseChannel:type_name -> proto.ClientPayload.UserAgent.ReleaseChannel
+	45,  // 385: proto.ClientPayload.DNSSource.dnsMethod:type_name -> proto.ClientPayload.DNSSource.DNSResolutionMethod
+	386, // [386:386] is the sub-list for method output_type
+	386, // [386:386] is the sub-list for method input_type
+	386, // [386:386] is the sub-list for extension type_name
+	386, // [386:386] is the sub-list for extension extendee
+	0,   // [0:386] is the sub-list for field type_name
 }
 
 func init() { file_binary_proto_def_proto_init() }
@@ -21154,7 +21925,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppVersion); i {
+			switch v := v.(*PollVoteMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21166,7 +21937,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ProductSnapshot); i {
+			switch v := v.(*PollUpdateMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21178,7 +21949,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CatalogSnapshot); i {
+			switch v := v.(*PollUpdateMessageMetadata); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21190,7 +21961,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollVoteMessage); i {
+			switch v := v.(*PollEncValue); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21202,7 +21973,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollUpdateMessage); i {
+			switch v := v.(*PollCreationMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21214,7 +21985,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollUpdateMessageMetadata); i {
+			switch v := v.(*PaymentInviteMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21226,7 +21997,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollEncValue); i {
+			switch v := v.(*OrderMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21238,7 +22009,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollCreationMessage); i {
+			switch v := v.(*LocationMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21250,7 +22021,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Option); i {
+			switch v := v.(*LiveLocationMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21262,7 +22033,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PaymentInviteMessage); i {
+			switch v := v.(*ListResponseMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21274,7 +22045,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*OrderMessage); i {
+			switch v := v.(*ListMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21286,7 +22057,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LocationMessage); i {
+			switch v := v.(*KeepInChatMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21298,7 +22069,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LiveLocationMessage); i {
+			switch v := v.(*InvoiceMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21310,7 +22081,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListResponseMessage); i {
+			switch v := v.(*InteractiveResponseMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21322,7 +22093,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SingleSelectReply); i {
+			switch v := v.(*InteractiveMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21334,7 +22105,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListMessage); i {
+			switch v := v.(*InitialSecurityNotificationSettingSync); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21346,7 +22117,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Section); i {
+			switch v := v.(*ImageMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21358,7 +22129,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Row); i {
+			switch v := v.(*HistorySyncNotification); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21370,7 +22141,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Product); i {
+			switch v := v.(*HighlyStructuredMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21382,7 +22153,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ProductSection); i {
+			switch v := v.(*GroupInviteMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21394,7 +22165,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ProductListInfo); i {
+			switch v := v.(*FutureProofMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21406,7 +22177,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ProductListHeaderImage); i {
+			switch v := v.(*ExtendedTextMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21418,7 +22189,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KeepInChatMessage); i {
+			switch v := v.(*DocumentMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21430,7 +22201,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*InvoiceMessage); i {
+			switch v := v.(*DeviceSentMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21442,7 +22213,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*InteractiveResponseMessage); i {
+			switch v := v.(*DeclinePaymentRequestMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21454,7 +22225,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NativeFlowResponseMessage); i {
+			switch v := v.(*ContactsArrayMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21466,7 +22237,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*InteractiveResponseMessageBody); i {
+			switch v := v.(*ContactMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21478,7 +22249,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*InteractiveMessage); i {
+			switch v := v.(*Chat); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21490,7 +22261,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ShopMessage); i {
+			switch v := v.(*CancelPaymentRequestMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21502,7 +22273,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NativeFlowMessage); i {
+			switch v := v.(*Call); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21514,7 +22285,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NativeFlowButton); i {
+			switch v := v.(*ButtonsResponseMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21526,7 +22297,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Header); i {
+			switch v := v.(*ButtonsMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21538,7 +22309,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Footer); i {
+			switch v := v.(*AudioMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21550,7 +22321,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CollectionMessage); i {
+			switch v := v.(*AppStateSyncKey); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21562,7 +22333,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*InteractiveMessageBody); i {
+			switch v := v.(*AppStateSyncKeyShare); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21574,7 +22345,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*InitialSecurityNotificationSettingSync); i {
+			switch v := v.(*AppStateSyncKeyRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21586,7 +22357,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ImageMessage); i {
+			switch v := v.(*AppStateSyncKeyId); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21598,7 +22369,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HistorySyncNotification); i {
+			switch v := v.(*AppStateSyncKeyFingerprint); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21610,7 +22381,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HighlyStructuredMessage); i {
+			switch v := v.(*AppStateSyncKeyData); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21622,7 +22393,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HSMLocalizableParameter); i {
+			switch v := v.(*AppStateFatalExceptionNotification); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21634,7 +22405,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HSMDateTime); i {
+			switch v := v.(*Location); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21646,7 +22417,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HSMDateTimeUnixEpoch); i {
+			switch v := v.(*InteractiveAnnotation); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21658,7 +22429,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HSMDateTimeComponent); i {
+			switch v := v.(*HydratedTemplateButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21670,7 +22441,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HSMCurrency); i {
+			switch v := v.(*DisappearingMode); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21682,7 +22453,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GroupInviteMessage); i {
+			switch v := v.(*DeviceListMetadata); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21694,7 +22465,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FutureProofMessage); i {
+			switch v := v.(*ContextInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21706,7 +22477,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtendedTextMessage); i {
+			switch v := v.(*ActionLink); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21718,7 +22489,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DocumentMessage); i {
+			switch v := v.(*TemplateButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21730,7 +22501,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeviceSentMessage); i {
+			switch v := v.(*Point); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21742,7 +22513,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeclinePaymentRequestMessage); i {
+			switch v := v.(*PaymentBackground); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21754,7 +22525,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContactsArrayMessage); i {
+			switch v := v.(*Money); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21766,7 +22537,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContactMessage); i {
+			switch v := v.(*Message); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21778,7 +22549,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Chat); i {
+			switch v := v.(*MessageContextInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21790,7 +22561,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CancelPaymentRequestMessage); i {
+			switch v := v.(*VideoMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21802,7 +22573,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Call); i {
+			switch v := v.(*TemplateMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21814,7 +22585,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ButtonsResponseMessage); i {
+			switch v := v.(*TemplateButtonReplyMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21826,7 +22597,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ButtonsMessage); i {
+			switch v := v.(*StickerSyncRMRMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21838,7 +22609,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Button); i {
+			switch v := v.(*StickerMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21850,7 +22621,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NativeFlowInfo); i {
+			switch v := v.(*SenderKeyDistributionMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21862,7 +22633,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ButtonText); i {
+			switch v := v.(*SendPaymentMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21874,7 +22645,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AudioMessage); i {
+			switch v := v.(*RequestPhoneNumberMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21886,7 +22657,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppStateSyncKey); i {
+			switch v := v.(*RequestPaymentMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21898,7 +22669,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppStateSyncKeyShare); i {
+			switch v := v.(*RequestMediaUploadResponseMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21910,7 +22681,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppStateSyncKeyRequest); i {
+			switch v := v.(*RequestMediaUploadMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21922,7 +22693,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppStateSyncKeyId); i {
+			switch v := v.(*ReactionMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21934,7 +22705,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppStateSyncKeyFingerprint); i {
+			switch v := v.(*ProtocolMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21946,7 +22717,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppStateSyncKeyData); i {
+			switch v := v.(*ProductMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21958,7 +22729,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AppStateFatalExceptionNotification); i {
+			switch v := v.(*EphemeralSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21970,7 +22741,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Location); i {
+			switch v := v.(*WallpaperSettings); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21982,7 +22753,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*InteractiveAnnotation); i {
+			switch v := v.(*StickerMetadata); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -21994,7 +22765,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HydratedTemplateButton); i {
+			switch v := v.(*Pushname); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22006,7 +22777,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HydratedURLButton); i {
+			switch v := v.(*PastParticipants); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22018,7 +22789,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HydratedQuickReplyButton); i {
+			switch v := v.(*PastParticipant); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22030,7 +22801,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HydratedCallButton); i {
+			switch v := v.(*HistorySync); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22042,7 +22813,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DisappearingMode); i {
+			switch v := v.(*HistorySyncMsg); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22054,7 +22825,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeviceListMetadata); i {
+			switch v := v.(*GroupParticipant); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22066,7 +22837,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContextInfo); i {
+			switch v := v.(*GlobalSettings); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22078,7 +22849,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExternalAdReplyInfo); i {
+			switch v := v.(*Conversation); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22090,7 +22861,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AdReplyInfo); i {
+			switch v := v.(*AutoDownloadSettings); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22102,7 +22873,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ActionLink); i {
+			switch v := v.(*MsgRowOpaqueData); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22114,7 +22885,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TemplateButton); i {
+			switch v := v.(*MsgOpaqueData); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22126,7 +22897,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*URLButton); i {
+			switch v := v.(*ServerErrorReceipt); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22138,7 +22909,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*QuickReplyButton); i {
+			switch v := v.(*MediaRetryNotification); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22150,7 +22921,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CallButton); i {
+			switch v := v.(*MessageKey); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22162,7 +22933,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Point); i {
+			switch v := v.(*SyncdVersion); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22174,7 +22945,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PaymentBackground); i {
+			switch v := v.(*SyncdValue); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22186,7 +22957,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PBMediaData); i {
+			switch v := v.(*SyncdSnapshot); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22198,7 +22969,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Money); i {
+			switch v := v.(*SyncdRecord); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22210,7 +22981,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
+			switch v := v.(*SyncdPatch); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22222,7 +22993,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageContextInfo); i {
+			switch v := v.(*SyncdMutations); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22234,7 +23005,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VideoMessage); i {
+			switch v := v.(*SyncdMutation); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22246,7 +23017,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TemplateMessage); i {
+			switch v := v.(*SyncdIndex); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22258,7 +23029,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HydratedFourRowTemplate); i {
+			switch v := v.(*KeyId); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22270,7 +23041,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FourRowTemplate); i {
+			switch v := v.(*ExternalBlobReference); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22282,7 +23053,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TemplateButtonReplyMessage); i {
+			switch v := v.(*ExitCode); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22294,7 +23065,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*StickerSyncRMRMessage); i {
+			switch v := v.(*SyncActionValue); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22306,7 +23077,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*StickerMessage); i {
+			switch v := v.(*UserStatusMuteAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22318,7 +23089,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SenderKeyDistributionMessage); i {
+			switch v := v.(*UnarchiveChatsSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22330,7 +23101,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SendPaymentMessage); i {
+			switch v := v.(*TimeFormatAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22342,7 +23113,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RequestPaymentMessage); i {
+			switch v := v.(*SyncActionMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22354,7 +23125,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ReactionMessage); i {
+			switch v := v.(*SyncActionMessageRange); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22366,7 +23137,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ProtocolMessage); i {
+			switch v := v.(*SubscriptionAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22378,7 +23149,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ProductMessage); i {
+			switch v := v.(*StickerAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22390,7 +23161,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EphemeralSetting); i {
+			switch v := v.(*StarAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22402,7 +23173,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WallpaperSettings); i {
+			switch v := v.(*SecurityNotificationSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22414,7 +23185,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Pushname); i {
+			switch v := v.(*RecentEmojiWeightsAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22426,7 +23197,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HistorySync); i {
+			switch v := v.(*QuickReplyAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22438,7 +23209,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HistorySyncMsg); i {
+			switch v := v.(*PushNameSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22450,7 +23221,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GroupParticipant); i {
+			switch v := v.(*PrimaryVersionAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22462,7 +23233,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GlobalSettings); i {
+			switch v := v.(*PrimaryFeature); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22474,7 +23245,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Conversation); i {
+			switch v := v.(*PinAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22486,7 +23257,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AutoDownloadSettings); i {
+			switch v := v.(*NuxAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22498,7 +23269,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MsgRowOpaqueData); i {
+			switch v := v.(*MuteAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22510,7 +23281,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MsgOpaqueData); i {
+			switch v := v.(*MarkChatAsReadAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22522,7 +23293,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollOption); i {
+			switch v := v.(*LocaleSetting); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22534,7 +23305,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ServerErrorReceipt); i {
+			switch v := v.(*LabelEditAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22546,7 +23317,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MediaRetryNotification); i {
+			switch v := v.(*LabelAssociationAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22558,7 +23329,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageKey); i {
+			switch v := v.(*KeyExpiration); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22570,7 +23341,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdVersion); i {
+			switch v := v.(*DeleteMessageForMeAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22582,7 +23353,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdValue); i {
+			switch v := v.(*DeleteChatAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22594,7 +23365,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdSnapshot); i {
+			switch v := v.(*ContactAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22606,7 +23377,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdRecord); i {
+			switch v := v.(*ClearChatAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22618,7 +23389,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdPatch); i {
+			switch v := v.(*ArchiveChatAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22630,7 +23401,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdMutations); i {
+			switch v := v.(*AndroidUnsupportedActions); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22642,7 +23413,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdMutation); i {
+			switch v := v.(*AgentAction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22654,7 +23425,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncdIndex); i {
+			switch v := v.(*SyncActionData); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22666,7 +23437,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KeyId); i {
+			switch v := v.(*RecentEmojiWeight); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22678,7 +23449,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExternalBlobReference); i {
+			switch v := v.(*VerifiedNameCertificate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22690,7 +23461,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExitCode); i {
+			switch v := v.(*LocalizedName); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22702,7 +23473,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncActionValue); i {
+			switch v := v.(*BizIdentityInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22714,7 +23485,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UserStatusMuteAction); i {
+			switch v := v.(*BizAccountPayload); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22726,7 +23497,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UnarchiveChatsSetting); i {
+			switch v := v.(*BizAccountLinkInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22738,7 +23509,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TimeFormatAction); i {
+			switch v := v.(*HandshakeMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22750,7 +23521,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncActionMessage); i {
+			switch v := v.(*HandshakeServerHello); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22762,7 +23533,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncActionMessageRange); i {
+			switch v := v.(*HandshakeClientHello); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22774,7 +23545,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SubscriptionAction); i {
+			switch v := v.(*HandshakeClientFinish); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22786,7 +23557,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*StarAction); i {
+			switch v := v.(*ClientPayload); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22798,7 +23569,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SecurityNotificationSetting); i {
+			switch v := v.(*WebNotificationsInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22810,7 +23581,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RecentStickerWeightsAction); i {
+			switch v := v.(*WebMessageInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22822,7 +23593,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RecentStickerMetadata); i {
+			switch v := v.(*WebFeatures); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22834,7 +23605,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RecentEmojiWeightsAction); i {
+			switch v := v.(*UserReceipt); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22846,7 +23617,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*QuickReplyAction); i {
+			switch v := v.(*StatusPSA); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22858,7 +23629,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PushNameSetting); i {
+			switch v := v.(*Reaction); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22870,7 +23641,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PrimaryFeature); i {
+			switch v := v.(*PollUpdate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22882,7 +23653,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PinAction); i {
+			switch v := v.(*PollAdditionalMetadata); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22894,7 +23665,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MuteAction); i {
+			switch v := v.(*PhotoChange); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22906,7 +23677,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MarkChatAsReadAction); i {
+			switch v := v.(*PaymentInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22918,7 +23689,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LocaleSetting); i {
+			switch v := v.(*NotificationMessageInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22930,7 +23701,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LabelEditAction); i {
+			switch v := v.(*MediaData); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22942,7 +23713,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LabelAssociationAction); i {
+			switch v := v.(*KeepInChat); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22954,7 +23725,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KeyExpiration); i {
+			switch v := v.(*NoiseCertificate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22966,7 +23737,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FavoriteStickerAction); i {
+			switch v := v.(*CertChain); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22978,7 +23749,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteMessageForMeAction); i {
+			switch v := v.(*DeviceProps_AppVersion); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -22990,7 +23761,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteChatAction); i {
+			switch v := v.(*PollCreationMessage_Option); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23002,7 +23773,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContactAction); i {
+			switch v := v.(*ListResponseMessage_SingleSelectReply); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23014,7 +23785,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ClearChatAction); i {
+			switch v := v.(*ListMessage_Section); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23026,7 +23797,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ArchiveChatAction); i {
+			switch v := v.(*ListMessage_Row); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23038,7 +23809,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AndroidUnsupportedActions); i {
+			switch v := v.(*ListMessage_Product); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23050,7 +23821,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AgentAction); i {
+			switch v := v.(*ListMessage_ProductSection); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23062,7 +23833,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SyncActionData); i {
+			switch v := v.(*ListMessage_ProductListInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23074,7 +23845,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RecentStickerWeight); i {
+			switch v := v.(*ListMessage_ProductListHeaderImage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23086,7 +23857,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RecentEmojiWeight); i {
+			switch v := v.(*InteractiveResponseMessage_NativeFlowResponseMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23098,7 +23869,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VerifiedNameCertificate); i {
+			switch v := v.(*InteractiveResponseMessage_Body); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23110,7 +23881,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*VerifiedNameDetails); i {
+			switch v := v.(*InteractiveMessage_ShopMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23122,7 +23893,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LocalizedName); i {
+			switch v := v.(*InteractiveMessage_NativeFlowMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23134,7 +23905,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BizIdentityInfo); i {
+			switch v := v.(*InteractiveMessage_Header); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23146,7 +23917,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BizAccountPayload); i {
+			switch v := v.(*InteractiveMessage_Footer); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23158,7 +23929,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BizAccountLinkInfo); i {
+			switch v := v.(*InteractiveMessage_CollectionMessage); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23170,7 +23941,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HandshakeMessage); i {
+			switch v := v.(*InteractiveMessage_Body); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23182,7 +23953,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ServerHello); i {
+			switch v := v.(*InteractiveMessage_NativeFlowMessage_NativeFlowButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23194,7 +23965,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ClientHello); i {
+			switch v := v.(*HighlyStructuredMessage_HSMLocalizableParameter); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23206,7 +23977,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ClientFinish); i {
+			switch v := v.(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23218,7 +23989,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ClientPayload); i {
+			switch v := v.(*HighlyStructuredMessage_HSMLocalizableParameter_HSMCurrency); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23230,7 +24001,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WebInfo); i {
+			switch v := v.(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeUnixEpoch); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23242,7 +24013,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WebdPayload); i {
+			switch v := v.(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_HSMDateTimeComponent); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23254,7 +24025,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UserAgent); i {
+			switch v := v.(*ButtonsMessage_Button); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23266,7 +24037,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DevicePairingRegistrationData); i {
+			switch v := v.(*ButtonsMessage_Button_NativeFlowInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23278,7 +24049,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DNSSource); i {
+			switch v := v.(*ButtonsMessage_Button_ButtonText); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23290,7 +24061,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WebNotificationsInfo); i {
+			switch v := v.(*HydratedTemplateButton_HydratedURLButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23302,7 +24073,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WebMessageInfo); i {
+			switch v := v.(*HydratedTemplateButton_HydratedQuickReplyButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23314,7 +24085,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WebFeatures); i {
+			switch v := v.(*HydratedTemplateButton_HydratedCallButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23326,7 +24097,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UserReceipt); i {
+			switch v := v.(*ContextInfo_ExternalAdReplyInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23338,7 +24109,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*StatusPSA); i {
+			switch v := v.(*ContextInfo_AdReplyInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23350,7 +24121,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Reaction); i {
+			switch v := v.(*TemplateButton_URLButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23362,7 +24133,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollUpdate); i {
+			switch v := v.(*TemplateButton_QuickReplyButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23374,7 +24145,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PollAdditionalMetadata); i {
+			switch v := v.(*TemplateButton_CallButton); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23386,7 +24157,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PhotoChange); i {
+			switch v := v.(*PaymentBackground_MediaData); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23398,7 +24169,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PaymentInfo); i {
+			switch v := v.(*TemplateMessage_HydratedFourRowTemplate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23410,7 +24181,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NotificationMessageInfo); i {
+			switch v := v.(*TemplateMessage_FourRowTemplate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23422,7 +24193,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MediaData); i {
+			switch v := v.(*RequestMediaUploadResponseMessage_RequestMediaUploadResult); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23434,7 +24205,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KeepInChat); i {
+			switch v := v.(*ProductMessage_ProductSnapshot); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23446,7 +24217,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NoiseCertificate); i {
+			switch v := v.(*ProductMessage_CatalogSnapshot); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23458,7 +24229,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NoiseCertificateDetails); i {
+			switch v := v.(*MsgOpaqueData_PollOption); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23470,7 +24241,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CertChain); i {
+			switch v := v.(*VerifiedNameCertificate_Details); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23482,7 +24253,7 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CertChainNoiseCertificate); i {
+			switch v := v.(*ClientPayload_WebInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23494,7 +24265,91 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 		file_binary_proto_def_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CertChainNoiseCertificateDetails); i {
+			switch v := v.(*ClientPayload_UserAgent); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_binary_proto_def_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientPayload_DevicePairingRegistrationData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_binary_proto_def_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientPayload_DNSSource); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_binary_proto_def_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientPayload_WebInfo_WebdPayload); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_binary_proto_def_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientPayload_UserAgent_AppVersion); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_binary_proto_def_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NoiseCertificate_Details); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_binary_proto_def_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CertChain_NoiseCertificate); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_binary_proto_def_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CertChain_NoiseCertificate_Details); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -23506,76 +24361,76 @@ func file_binary_proto_def_proto_init() {
 			}
 		}
 	}
-	file_binary_proto_def_proto_msgTypes[30].OneofWrappers = []interface{}{
-		(*InteractiveResponseMessage_NativeFlowResponseMessage)(nil),
+	file_binary_proto_def_proto_msgTypes[19].OneofWrappers = []interface{}{
+		(*InteractiveResponseMessage_NativeFlowResponseMessage_)(nil),
 	}
-	file_binary_proto_def_proto_msgTypes[33].OneofWrappers = []interface{}{
+	file_binary_proto_def_proto_msgTypes[20].OneofWrappers = []interface{}{
 		(*InteractiveMessage_ShopStorefrontMessage)(nil),
-		(*InteractiveMessage_CollectionMessage)(nil),
-		(*InteractiveMessage_NativeFlowMessage)(nil),
-	}
-	file_binary_proto_def_proto_msgTypes[37].OneofWrappers = []interface{}{
-		(*Header_DocumentMessage)(nil),
-		(*Header_ImageMessage)(nil),
-		(*Header_JpegThumbnail)(nil),
-		(*Header_VideoMessage)(nil),
-	}
-	file_binary_proto_def_proto_msgTypes[45].OneofWrappers = []interface{}{
-		(*HSMLocalizableParameter_Currency)(nil),
-		(*HSMLocalizableParameter_DateTime)(nil),
+		(*InteractiveMessage_CollectionMessage_)(nil),
+		(*InteractiveMessage_NativeFlowMessage_)(nil),
 	}
-	file_binary_proto_def_proto_msgTypes[46].OneofWrappers = []interface{}{
-		(*HSMDateTime_Component)(nil),
-		(*HSMDateTime_UnixEpoch)(nil),
-	}
-	file_binary_proto_def_proto_msgTypes[61].OneofWrappers = []interface{}{
+	file_binary_proto_def_proto_msgTypes[36].OneofWrappers = []interface{}{
 		(*ButtonsResponseMessage_SelectedDisplayText)(nil),
 	}
-	file_binary_proto_def_proto_msgTypes[62].OneofWrappers = []interface{}{
+	file_binary_proto_def_proto_msgTypes[37].OneofWrappers = []interface{}{
 		(*ButtonsMessage_Text)(nil),
 		(*ButtonsMessage_DocumentMessage)(nil),
 		(*ButtonsMessage_ImageMessage)(nil),
 		(*ButtonsMessage_VideoMessage)(nil),
 		(*ButtonsMessage_LocationMessage)(nil),
 	}
-	file_binary_proto_def_proto_msgTypes[75].OneofWrappers = []interface{}{
+	file_binary_proto_def_proto_msgTypes[47].OneofWrappers = []interface{}{
 		(*InteractiveAnnotation_Location)(nil),
 	}
-	file_binary_proto_def_proto_msgTypes[76].OneofWrappers = []interface{}{
+	file_binary_proto_def_proto_msgTypes[48].OneofWrappers = []interface{}{
 		(*HydratedTemplateButton_QuickReplyButton)(nil),
 		(*HydratedTemplateButton_UrlButton)(nil),
 		(*HydratedTemplateButton_CallButton)(nil),
 	}
-	file_binary_proto_def_proto_msgTypes[86].OneofWrappers = []interface{}{
-		(*TemplateButton_QuickReplyButton)(nil),
+	file_binary_proto_def_proto_msgTypes[53].OneofWrappers = []interface{}{
+		(*TemplateButton_QuickReplyButton_)(nil),
 		(*TemplateButton_UrlButton)(nil),
-		(*TemplateButton_CallButton)(nil),
-	}
-	file_binary_proto_def_proto_msgTypes[97].OneofWrappers = []interface{}{
-		(*TemplateMessage_FourRowTemplate)(nil),
-		(*TemplateMessage_HydratedFourRowTemplate)(nil),
-	}
-	file_binary_proto_def_proto_msgTypes[98].OneofWrappers = []interface{}{
-		(*HydratedFourRowTemplate_DocumentMessage)(nil),
-		(*HydratedFourRowTemplate_HydratedTitleText)(nil),
-		(*HydratedFourRowTemplate_ImageMessage)(nil),
-		(*HydratedFourRowTemplate_VideoMessage)(nil),
-		(*HydratedFourRowTemplate_LocationMessage)(nil),
-	}
-	file_binary_proto_def_proto_msgTypes[99].OneofWrappers = []interface{}{
-		(*FourRowTemplate_DocumentMessage)(nil),
-		(*FourRowTemplate_HighlyStructuredMessage)(nil),
-		(*FourRowTemplate_ImageMessage)(nil),
-		(*FourRowTemplate_VideoMessage)(nil),
-		(*FourRowTemplate_LocationMessage)(nil),
+		(*TemplateButton_CallButton_)(nil),
+	}
+	file_binary_proto_def_proto_msgTypes[60].OneofWrappers = []interface{}{
+		(*TemplateMessage_FourRowTemplate_)(nil),
+		(*TemplateMessage_HydratedFourRowTemplate_)(nil),
+	}
+	file_binary_proto_def_proto_msgTypes[171].OneofWrappers = []interface{}{
+		(*InteractiveMessage_Header_DocumentMessage)(nil),
+		(*InteractiveMessage_Header_ImageMessage)(nil),
+		(*InteractiveMessage_Header_JpegThumbnail)(nil),
+		(*InteractiveMessage_Header_VideoMessage)(nil),
+	}
+	file_binary_proto_def_proto_msgTypes[176].OneofWrappers = []interface{}{
+		(*HighlyStructuredMessage_HSMLocalizableParameter_Currency)(nil),
+		(*HighlyStructuredMessage_HSMLocalizableParameter_DateTime)(nil),
+	}
+	file_binary_proto_def_proto_msgTypes[177].OneofWrappers = []interface{}{
+		(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_Component)(nil),
+		(*HighlyStructuredMessage_HSMLocalizableParameter_HSMDateTime_UnixEpoch)(nil),
+	}
+	file_binary_proto_def_proto_msgTypes[193].OneofWrappers = []interface{}{
+		(*TemplateMessage_HydratedFourRowTemplate_DocumentMessage)(nil),
+		(*TemplateMessage_HydratedFourRowTemplate_HydratedTitleText)(nil),
+		(*TemplateMessage_HydratedFourRowTemplate_ImageMessage)(nil),
+		(*TemplateMessage_HydratedFourRowTemplate_VideoMessage)(nil),
+		(*TemplateMessage_HydratedFourRowTemplate_LocationMessage)(nil),
+	}
+	file_binary_proto_def_proto_msgTypes[194].OneofWrappers = []interface{}{
+		(*TemplateMessage_FourRowTemplate_DocumentMessage)(nil),
+		(*TemplateMessage_FourRowTemplate_HighlyStructuredMessage)(nil),
+		(*TemplateMessage_FourRowTemplate_ImageMessage)(nil),
+		(*TemplateMessage_FourRowTemplate_VideoMessage)(nil),
+		(*TemplateMessage_FourRowTemplate_LocationMessage)(nil),
 	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_binary_proto_def_proto_rawDesc,
-			NumEnums:      51,
-			NumMessages:   202,
+			NumEnums:      53,
+			NumMessages:   209,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.raw b/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.raw
index 3b8cdce2..1b92c697 100644
Binary files a/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.raw and b/vendor/go.mau.fi/whatsmeow/binary/proto/def.pb.raw differ
diff --git a/vendor/go.mau.fi/whatsmeow/binary/proto/def.proto b/vendor/go.mau.fi/whatsmeow/binary/proto/def.proto
index 33f27d42..b44a7e4a 100644
--- a/vendor/go.mau.fi/whatsmeow/binary/proto/def.proto
+++ b/vendor/go.mau.fi/whatsmeow/binary/proto/def.proto
@@ -32,9 +32,7 @@ message ADVDeviceIdentity {
 }
 
 message DeviceProps {
-    optional string os = 1;
-    optional AppVersion version = 2;
-    enum DevicePropsPlatformType {
+    enum PlatformType {
         UNKNOWN = 0;
         CHROME = 1;
         FIREFOX = 2;
@@ -50,47 +48,29 @@ message DeviceProps {
         CATALINA = 12;
         TCL_TV = 13;
     }
-    optional DevicePropsPlatformType platformType = 3;
+    message AppVersion {
+        optional uint32 primary = 1;
+        optional uint32 secondary = 2;
+        optional uint32 tertiary = 3;
+        optional uint32 quaternary = 4;
+        optional uint32 quinary = 5;
+    }
+    
+    optional string os = 1;
+    optional AppVersion version = 2;
+    optional PlatformType platformType = 3;
     optional bool requireFullSync = 4;
 }
 
-message AppVersion {
-    optional uint32 primary = 1;
-    optional uint32 secondary = 2;
-    optional uint32 tertiary = 3;
-    optional uint32 quaternary = 4;
-    optional uint32 quinary = 5;
-}
-
-message ProductSnapshot {
-    optional ImageMessage productImage = 1;
-    optional string productId = 2;
-    optional string title = 3;
-    optional string description = 4;
-    optional string currencyCode = 5;
-    optional int64 priceAmount1000 = 6;
-    optional string retailerId = 7;
-    optional string url = 8;
-    optional uint32 productImageCount = 9;
-    optional string firstImageId = 11;
-    optional int64 salePriceAmount1000 = 12;
-}
-
-message CatalogSnapshot {
-    optional ImageMessage catalogImage = 1;
-    optional string title = 2;
-    optional string description = 3;
-}
-
 message PollVoteMessage {
     repeated bytes selectedOptions = 1;
-    optional int64 senderTimestampMs = 2;
 }
 
 message PollUpdateMessage {
     optional MessageKey pollCreationMessageKey = 1;
     optional PollEncValue vote = 2;
     optional PollUpdateMessageMetadata metadata = 3;
+    optional int64 senderTimestampMs = 4;
 }
 
 message PollUpdateMessageMetadata {
@@ -102,6 +82,10 @@ message PollEncValue {
 }
 
 message PollCreationMessage {
+    message Option {
+        optional string optionName = 1;
+    }
+    
     optional bytes encKey = 1;
     optional string name = 2;
     repeated Option options = 3;
@@ -109,33 +93,29 @@ message PollCreationMessage {
     optional ContextInfo contextInfo = 5;
 }
 
-message Option {
-    optional string optionName = 1;
-}
-
 message PaymentInviteMessage {
-    enum PaymentInviteMessageServiceType {
+    enum ServiceType {
         UNKNOWN = 0;
         FBPAY = 1;
         NOVI = 2;
         UPI = 3;
     }
-    optional PaymentInviteMessageServiceType serviceType = 1;
+    optional ServiceType serviceType = 1;
     optional int64 expiryTimestamp = 2;
 }
 
 message OrderMessage {
+    enum OrderSurface {
+        CATALOG = 1;
+    }
+    enum OrderStatus {
+        INQUIRY = 1;
+    }
     optional string orderId = 1;
     optional bytes thumbnail = 2;
     optional int32 itemCount = 3;
-    enum OrderMessageOrderStatus {
-        INQUIRY = 1;
-    }
-    optional OrderMessageOrderStatus status = 4;
-    enum OrderMessageOrderSurface {
-        CATALOG = 1;
-    }
-    optional OrderMessageOrderSurface surface = 5;
+    optional OrderStatus status = 4;
+    optional OrderSurface surface = 5;
     optional string message = 6;
     optional string orderTitle = 7;
     optional string sellerJid = 8;
@@ -174,68 +154,68 @@ message LiveLocationMessage {
 }
 
 message ListResponseMessage {
-    optional string title = 1;
-    enum ListResponseMessageListType {
+    message SingleSelectReply {
+        optional string selectedRowId = 1;
+    }
+    
+    enum ListType {
         UNKNOWN = 0;
         SINGLE_SELECT = 1;
     }
-    optional ListResponseMessageListType listType = 2;
+    optional string title = 1;
+    optional ListType listType = 2;
     optional SingleSelectReply singleSelectReply = 3;
     optional ContextInfo contextInfo = 4;
     optional string description = 5;
 }
 
-message SingleSelectReply {
-    optional string selectedRowId = 1;
-}
-
 message ListMessage {
-    optional string title = 1;
-    optional string description = 2;
-    optional string buttonText = 3;
-    enum ListMessageListType {
+    message Section {
+        optional string title = 1;
+        repeated Row rows = 2;
+    }
+    
+    message Row {
+        optional string title = 1;
+        optional string description = 2;
+        optional string rowId = 3;
+    }
+    
+    message Product {
+        optional string productId = 1;
+    }
+    
+    message ProductSection {
+        optional string title = 1;
+        repeated Product products = 2;
+    }
+    
+    message ProductListInfo {
+        repeated ProductSection productSections = 1;
+        optional ProductListHeaderImage headerImage = 2;
+        optional string businessOwnerJid = 3;
+    }
+    
+    message ProductListHeaderImage {
+        optional string productId = 1;
+        optional bytes jpegThumbnail = 2;
+    }
+    
+    enum ListType {
         UNKNOWN = 0;
         SINGLE_SELECT = 1;
         PRODUCT_LIST = 2;
     }
-    optional ListMessageListType listType = 4;
+    optional string title = 1;
+    optional string description = 2;
+    optional string buttonText = 3;
+    optional ListType listType = 4;
     repeated Section sections = 5;
     optional ProductListInfo productListInfo = 6;
     optional string footerText = 7;
     optional ContextInfo contextInfo = 8;
 }
 
-message Section {
-    optional string title = 1;
-    repeated Row rows = 2;
-}
-
-message Row {
-    optional string title = 1;
-    optional string description = 2;
-    optional string rowId = 3;
-}
-
-message Product {
-    optional string productId = 1;
-}
-
-message ProductSection {
-    optional string title = 1;
-    repeated Product products = 2;
-}
-
-message ProductListInfo {
-    repeated ProductSection productSections = 1;
-    optional ProductListHeaderImage headerImage = 2;
-    optional string businessOwnerJid = 3;
-}
-
-message ProductListHeaderImage {
-    optional string productId = 1;
-    optional bytes jpegThumbnail = 2;
-}
-
 message KeepInChatMessage {
     optional MessageKey key = 1;
     optional KeepType keepType = 2;
@@ -243,13 +223,13 @@ message KeepInChatMessage {
 }
 
 message InvoiceMessage {
-    optional string note = 1;
-    optional string token = 2;
-    enum InvoiceMessageAttachmentType {
+    enum AttachmentType {
         IMAGE = 0;
         PDF = 1;
     }
-    optional InvoiceMessageAttachmentType attachmentType = 3;
+    optional string note = 1;
+    optional string token = 2;
+    optional AttachmentType attachmentType = 3;
     optional string attachmentMimetype = 4;
     optional bytes attachmentMediaKey = 5;
     optional int64 attachmentMediaKeyTimestamp = 6;
@@ -260,27 +240,75 @@ message InvoiceMessage {
 }
 
 message InteractiveResponseMessage {
-    optional InteractiveResponseMessageBody body = 1;
+    message NativeFlowResponseMessage {
+        optional string name = 1;
+        optional string paramsJson = 2;
+        optional int32 version = 3;
+    }
+    
+    message Body {
+        optional string text = 1;
+    }
+    
+    optional Body body = 1;
     optional ContextInfo contextInfo = 15;
     oneof interactiveResponseMessage {
         NativeFlowResponseMessage nativeFlowResponseMessage = 2;
     }
 }
 
-message NativeFlowResponseMessage {
-    optional string name = 1;
-    optional string paramsJson = 2;
-    optional int32 version = 3;
-}
-
-// Renamed from Message$InteractiveResponseMessage$Body
-message InteractiveResponseMessageBody {
-    optional string text = 1;
-}
-
 message InteractiveMessage {
+    message ShopMessage {
+        enum Surface {
+            UNKNOWN_SURFACE = 0;
+            FB = 1;
+            IG = 2;
+            WA = 3;
+        }
+        optional string id = 1;
+        optional Surface surface = 2;
+        optional int32 messageVersion = 3;
+    }
+    
+    message NativeFlowMessage {
+        message NativeFlowButton {
+            optional string name = 1;
+            optional string buttonParamsJson = 2;
+        }
+        
+        repeated NativeFlowButton buttons = 1;
+        optional string messageParamsJson = 2;
+        optional int32 messageVersion = 3;
+    }
+    
+    message Header {
+        optional string title = 1;
+        optional string subtitle = 2;
+        optional bool hasMediaAttachment = 5;
+        oneof media {
+            DocumentMessage documentMessage = 3;
+            ImageMessage imageMessage = 4;
+            bytes jpegThumbnail = 6;
+            VideoMessage videoMessage = 7;
+        }
+    }
+    
+    message Footer {
+        optional string text = 1;
+    }
+    
+    message CollectionMessage {
+        optional string bizJid = 1;
+        optional string id = 2;
+        optional int32 messageVersion = 3;
+    }
+    
+    message Body {
+        optional string text = 1;
+    }
+    
     optional Header header = 1;
-    optional InteractiveMessageBody body = 2;
+    optional Body body = 2;
     optional Footer footer = 3;
     optional ContextInfo contextInfo = 15;
     oneof interactiveMessage {
@@ -290,56 +318,6 @@ message InteractiveMessage {
     }
 }
 
-message ShopMessage {
-    optional string id = 1;
-    enum ShopMessageSurface {
-        UNKNOWN_SURFACE = 0;
-        FB = 1;
-        IG = 2;
-        WA = 3;
-    }
-    optional ShopMessageSurface surface = 2;
-    optional int32 messageVersion = 3;
-}
-
-message NativeFlowMessage {
-    repeated NativeFlowButton buttons = 1;
-    optional string messageParamsJson = 2;
-    optional int32 messageVersion = 3;
-}
-
-message NativeFlowButton {
-    optional string name = 1;
-    optional string buttonParamsJson = 2;
-}
-
-message Header {
-    optional string title = 1;
-    optional string subtitle = 2;
-    optional bool hasMediaAttachment = 5;
-    oneof media {
-        DocumentMessage documentMessage = 3;
-        ImageMessage imageMessage = 4;
-        bytes jpegThumbnail = 6;
-        VideoMessage videoMessage = 7;
-    }
-}
-
-message Footer {
-    optional string text = 1;
-}
-
-message CollectionMessage {
-    optional string bizJid = 1;
-    optional string id = 2;
-    optional int32 messageVersion = 3;
-}
-
-// Renamed from Message$InteractiveMessage$Body
-message InteractiveMessageBody {
-    optional string text = 1;
-}
-
 message InitialSecurityNotificationSettingSync {
     optional bool securityNotificationEnabled = 1;
 }
@@ -374,24 +352,72 @@ message ImageMessage {
 }
 
 message HistorySyncNotification {
-    optional bytes fileSha256 = 1;
-    optional uint64 fileLength = 2;
-    optional bytes mediaKey = 3;
-    optional bytes fileEncSha256 = 4;
-    optional string directPath = 5;
-    enum HistorySyncNotificationHistorySyncType {
+    enum HistorySyncType {
         INITIAL_BOOTSTRAP = 0;
         INITIAL_STATUS_V3 = 1;
         FULL = 2;
         RECENT = 3;
         PUSH_NAME = 4;
     }
-    optional HistorySyncNotificationHistorySyncType syncType = 6;
+    optional bytes fileSha256 = 1;
+    optional uint64 fileLength = 2;
+    optional bytes mediaKey = 3;
+    optional bytes fileEncSha256 = 4;
+    optional string directPath = 5;
+    optional HistorySyncType syncType = 6;
     optional uint32 chunkOrder = 7;
     optional string originalMessageId = 8;
+    optional uint32 progress = 9;
 }
 
 message HighlyStructuredMessage {
+    message HSMLocalizableParameter {
+        message HSMDateTime {
+            message HSMDateTimeUnixEpoch {
+                optional int64 timestamp = 1;
+            }
+            
+            message HSMDateTimeComponent {
+                enum DayOfWeekType {
+                    MONDAY = 1;
+                    TUESDAY = 2;
+                    WEDNESDAY = 3;
+                    THURSDAY = 4;
+                    FRIDAY = 5;
+                    SATURDAY = 6;
+                    SUNDAY = 7;
+                }
+                enum CalendarType {
+                    GREGORIAN = 1;
+                    SOLAR_HIJRI = 2;
+                }
+                optional DayOfWeekType dayOfWeek = 1;
+                optional uint32 year = 2;
+                optional uint32 month = 3;
+                optional uint32 dayOfMonth = 4;
+                optional uint32 hour = 5;
+                optional uint32 minute = 6;
+                optional CalendarType calendar = 7;
+            }
+            
+            oneof datetimeOneof {
+                HSMDateTimeComponent component = 1;
+                HSMDateTimeUnixEpoch unixEpoch = 2;
+            }
+        }
+        
+        message HSMCurrency {
+            optional string currencyCode = 1;
+            optional int64 amount1000 = 2;
+        }
+        
+        optional string default = 1;
+        oneof paramOneof {
+            HSMCurrency currency = 2;
+            HSMDateTime dateTime = 3;
+        }
+    }
+    
     optional string namespace = 1;
     optional string elementName = 2;
     repeated string params = 3;
@@ -403,54 +429,11 @@ message HighlyStructuredMessage {
     optional TemplateMessage hydratedHsm = 9;
 }
 
-message HSMLocalizableParameter {
-    optional string default = 1;
-    oneof paramOneof {
-        HSMCurrency currency = 2;
-        HSMDateTime dateTime = 3;
-    }
-}
-
-message HSMDateTime {
-    oneof datetimeOneof {
-        HSMDateTimeComponent component = 1;
-        HSMDateTimeUnixEpoch unixEpoch = 2;
-    }
-}
-
-message HSMDateTimeUnixEpoch {
-    optional int64 timestamp = 1;
-}
-
-message HSMDateTimeComponent {
-    enum HSMDateTimeComponentDayOfWeekType {
-        MONDAY = 1;
-        TUESDAY = 2;
-        WEDNESDAY = 3;
-        THURSDAY = 4;
-        FRIDAY = 5;
-        SATURDAY = 6;
-        SUNDAY = 7;
-    }
-    optional HSMDateTimeComponentDayOfWeekType dayOfWeek = 1;
-    optional uint32 year = 2;
-    optional uint32 month = 3;
-    optional uint32 dayOfMonth = 4;
-    optional uint32 hour = 5;
-    optional uint32 minute = 6;
-    enum HSMDateTimeComponentCalendarType {
-        GREGORIAN = 1;
-        SOLAR_HIJRI = 2;
-    }
-    optional HSMDateTimeComponentCalendarType calendar = 7;
-}
-
-message HSMCurrency {
-    optional string currencyCode = 1;
-    optional int64 amount1000 = 2;
-}
-
 message GroupInviteMessage {
+    enum GroupType {
+        DEFAULT = 0;
+        PARENT = 1;
+    }
     optional string groupJid = 1;
     optional string inviteCode = 2;
     optional int64 inviteExpiration = 3;
@@ -458,11 +441,7 @@ message GroupInviteMessage {
     optional bytes jpegThumbnail = 5;
     optional string caption = 6;
     optional ContextInfo contextInfo = 7;
-    enum GroupInviteMessageGroupType {
-        DEFAULT = 0;
-        PARENT = 1;
-    }
-    optional GroupInviteMessageGroupType groupType = 8;
+    optional GroupType groupType = 8;
 }
 
 message FutureProofMessage {
@@ -470,14 +449,17 @@ message FutureProofMessage {
 }
 
 message ExtendedTextMessage {
-    optional string text = 1;
-    optional string matchedText = 2;
-    optional string canonicalUrl = 4;
-    optional string description = 5;
-    optional string title = 6;
-    optional fixed32 textArgb = 7;
-    optional fixed32 backgroundArgb = 8;
-    enum ExtendedTextMessageFontType {
+    enum PreviewType {
+        NONE = 0;
+        VIDEO = 1;
+    }
+    enum InviteLinkGroupType {
+        DEFAULT = 0;
+        PARENT = 1;
+        SUB = 2;
+        DEFAULT_SUB = 3;
+    }
+    enum FontType {
         SANS_SERIF = 0;
         SERIF = 1;
         NORICAN_REGULAR = 2;
@@ -485,12 +467,15 @@ message ExtendedTextMessage {
         BEBASNEUE_REGULAR = 4;
         OSWALD_HEAVY = 5;
     }
-    optional ExtendedTextMessageFontType font = 9;
-    enum ExtendedTextMessagePreviewType {
-        NONE = 0;
-        VIDEO = 1;
-    }
-    optional ExtendedTextMessagePreviewType previewType = 10;
+    optional string text = 1;
+    optional string matchedText = 2;
+    optional string canonicalUrl = 4;
+    optional string description = 5;
+    optional string title = 6;
+    optional fixed32 textArgb = 7;
+    optional fixed32 backgroundArgb = 8;
+    optional FontType font = 9;
+    optional PreviewType previewType = 10;
     optional bytes jpegThumbnail = 16;
     optional ContextInfo contextInfo = 17;
     optional bool doNotPlayInline = 18;
@@ -501,14 +486,10 @@ message ExtendedTextMessage {
     optional int64 mediaKeyTimestamp = 23;
     optional uint32 thumbnailHeight = 24;
     optional uint32 thumbnailWidth = 25;
-    enum ExtendedTextMessageInviteLinkGroupType {
-        DEFAULT = 0;
-        PARENT = 1;
-    }
-    optional ExtendedTextMessageInviteLinkGroupType inviteLinkGroupType = 26;
+    optional InviteLinkGroupType inviteLinkGroupType = 26;
     optional string inviteLinkParentGroupSubjectV2 = 27;
     optional bytes inviteLinkParentGroupThumbnailV2 = 28;
-    optional ExtendedTextMessageInviteLinkGroupType inviteLinkGroupTypeV2 = 29;
+    optional InviteLinkGroupType inviteLinkGroupTypeV2 = 29;
 }
 
 message DocumentMessage {
@@ -531,6 +512,7 @@ message DocumentMessage {
     optional ContextInfo contextInfo = 17;
     optional uint32 thumbnailHeight = 18;
     optional uint32 thumbnailWidth = 19;
+    optional string caption = 20;
 }
 
 message DeviceSentMessage {
@@ -572,24 +554,20 @@ message Call {
 }
 
 message ButtonsResponseMessage {
-    optional string selectedButtonId = 1;
-    optional ContextInfo contextInfo = 3;
-    enum ButtonsResponseMessageType {
+    enum Type {
         UNKNOWN = 0;
         DISPLAY_TEXT = 1;
     }
-    optional ButtonsResponseMessageType type = 4;
+    optional string selectedButtonId = 1;
+    optional ContextInfo contextInfo = 3;
+    optional Type type = 4;
     oneof response {
         string selectedDisplayText = 2;
     }
 }
 
 message ButtonsMessage {
-    optional string contentText = 6;
-    optional string footerText = 7;
-    optional ContextInfo contextInfo = 8;
-    repeated Button buttons = 9;
-    enum ButtonsMessageHeaderType {
+    enum HeaderType {
         UNKNOWN = 0;
         EMPTY = 1;
         TEXT = 2;
@@ -598,7 +576,32 @@ message ButtonsMessage {
         VIDEO = 5;
         LOCATION = 6;
     }
-    optional ButtonsMessageHeaderType headerType = 10;
+    message Button {
+        enum Type {
+            UNKNOWN = 0;
+            RESPONSE = 1;
+            NATIVE_FLOW = 2;
+        }
+        message NativeFlowInfo {
+            optional string name = 1;
+            optional string paramsJson = 2;
+        }
+        
+        message ButtonText {
+            optional string displayText = 1;
+        }
+        
+        optional string buttonId = 1;
+        optional ButtonText buttonText = 2;
+        optional Type type = 3;
+        optional NativeFlowInfo nativeFlowInfo = 4;
+    }
+    
+    optional string contentText = 6;
+    optional string footerText = 7;
+    optional ContextInfo contextInfo = 8;
+    repeated Button buttons = 9;
+    optional HeaderType headerType = 10;
     oneof header {
         string text = 1;
         DocumentMessage documentMessage = 2;
@@ -608,27 +611,6 @@ message ButtonsMessage {
     }
 }
 
-message Button {
-    optional string buttonId = 1;
-    optional ButtonText buttonText = 2;
-    enum ButtonType {
-        UNKNOWN = 0;
-        RESPONSE = 1;
-        NATIVE_FLOW = 2;
-    }
-    optional ButtonType type = 3;
-    optional NativeFlowInfo nativeFlowInfo = 4;
-}
-
-message NativeFlowInfo {
-    optional string name = 1;
-    optional string paramsJson = 2;
-}
-
-message ButtonText {
-    optional string displayText = 1;
-}
-
 message AudioMessage {
     optional string url = 1;
     optional string mimetype = 2;
@@ -698,6 +680,21 @@ message InteractiveAnnotation {
 }
 
 message HydratedTemplateButton {
+    message HydratedURLButton {
+        optional string displayText = 1;
+        optional string url = 2;
+    }
+    
+    message HydratedQuickReplyButton {
+        optional string displayText = 1;
+        optional string id = 2;
+    }
+    
+    message HydratedCallButton {
+        optional string displayText = 1;
+        optional string phoneNumber = 2;
+    }
+    
     optional uint32 index = 4;
     oneof hydratedButton {
         HydratedQuickReplyButton quickReplyButton = 1;
@@ -706,28 +703,13 @@ message HydratedTemplateButton {
     }
 }
 
-message HydratedURLButton {
-    optional string displayText = 1;
-    optional string url = 2;
-}
-
-message HydratedQuickReplyButton {
-    optional string displayText = 1;
-    optional string id = 2;
-}
-
-message HydratedCallButton {
-    optional string displayText = 1;
-    optional string phoneNumber = 2;
-}
-
 message DisappearingMode {
-    enum DisappearingModeInitiator {
+    enum Initiator {
         CHANGED_IN_CHAT = 0;
         INITIATED_BY_ME = 1;
         INITIATED_BY_OTHER = 2;
     }
-    optional DisappearingModeInitiator initiator = 1;
+    optional Initiator initiator = 1;
 }
 
 message DeviceListMetadata {
@@ -740,6 +722,38 @@ message DeviceListMetadata {
 }
 
 message ContextInfo {
+    message ExternalAdReplyInfo {
+        enum MediaType {
+            NONE = 0;
+            IMAGE = 1;
+            VIDEO = 2;
+        }
+        optional string title = 1;
+        optional string body = 2;
+        optional MediaType mediaType = 3;
+        optional string thumbnailUrl = 4;
+        optional string mediaUrl = 5;
+        optional bytes thumbnail = 6;
+        optional string sourceType = 7;
+        optional string sourceId = 8;
+        optional string sourceUrl = 9;
+        optional bool containsAutoReply = 10;
+        optional bool renderLargerThumbnail = 11;
+        optional bool showAdAttribution = 12;
+    }
+    
+    message AdReplyInfo {
+        enum MediaType {
+            NONE = 0;
+            IMAGE = 1;
+            VIDEO = 2;
+        }
+        optional string advertiserName = 1;
+        optional MediaType mediaType = 2;
+        optional bytes jpegThumbnail = 16;
+        optional string caption = 17;
+    }
+    
     optional string stanzaId = 1;
     optional string participant = 2;
     optional Message quotedMessage = 3;
@@ -765,44 +779,27 @@ message ContextInfo {
     optional string parentGroupJid = 35;
 }
 
-message ExternalAdReplyInfo {
-    optional string title = 1;
-    optional string body = 2;
-    enum ExternalAdReplyInfoMediaType {
-        NONE = 0;
-        IMAGE = 1;
-        VIDEO = 2;
-    }
-    optional ExternalAdReplyInfoMediaType mediaType = 3;
-    optional string thumbnailUrl = 4;
-    optional string mediaUrl = 5;
-    optional bytes thumbnail = 6;
-    optional string sourceType = 7;
-    optional string sourceId = 8;
-    optional string sourceUrl = 9;
-    optional bool containsAutoReply = 10;
-    optional bool renderLargerThumbnail = 11;
-    optional bool showAdAttribution = 12;
-}
-
-message AdReplyInfo {
-    optional string advertiserName = 1;
-    enum AdReplyInfoMediaType {
-        NONE = 0;
-        IMAGE = 1;
-        VIDEO = 2;
-    }
-    optional AdReplyInfoMediaType mediaType = 2;
-    optional bytes jpegThumbnail = 16;
-    optional string caption = 17;
-}
-
 message ActionLink {
     optional string url = 1;
     optional string buttonTitle = 2;
 }
 
 message TemplateButton {
+    message URLButton {
+        optional HighlyStructuredMessage displayText = 1;
+        optional HighlyStructuredMessage url = 2;
+    }
+    
+    message QuickReplyButton {
+        optional HighlyStructuredMessage displayText = 1;
+        optional string id = 2;
+    }
+    
+    message CallButton {
+        optional HighlyStructuredMessage displayText = 1;
+        optional HighlyStructuredMessage phoneNumber = 2;
+    }
+    
     optional uint32 index = 4;
     oneof button {
         QuickReplyButton quickReplyButton = 1;
@@ -811,21 +808,6 @@ message TemplateButton {
     }
 }
 
-message URLButton {
-    optional HighlyStructuredMessage displayText = 1;
-    optional HighlyStructuredMessage url = 2;
-}
-
-message QuickReplyButton {
-    optional HighlyStructuredMessage displayText = 1;
-    optional string id = 2;
-}
-
-message CallButton {
-    optional HighlyStructuredMessage displayText = 1;
-    optional HighlyStructuredMessage phoneNumber = 2;
-}
-
 message Point {
     optional int32 xDeprecated = 1;
     optional int32 yDeprecated = 2;
@@ -834,6 +816,18 @@ message Point {
 }
 
 message PaymentBackground {
+    enum Type {
+        UNKNOWN = 0;
+        DEFAULT = 1;
+    }
+    message MediaData {
+        optional bytes mediaKey = 1;
+        optional int64 mediaKeyTimestamp = 2;
+        optional bytes fileSha256 = 3;
+        optional bytes fileEncSha256 = 4;
+        optional string directPath = 5;
+    }
+    
     optional string id = 1;
     optional uint64 fileLength = 2;
     optional uint32 width = 3;
@@ -842,21 +836,8 @@ message PaymentBackground {
     optional fixed32 placeholderArgb = 6;
     optional fixed32 textArgb = 7;
     optional fixed32 subtextArgb = 8;
-    optional PBMediaData mediaData = 9;
-    enum PaymentBackgroundType {
-        UNKNOWN = 0;
-        DEFAULT = 1;
-    }
-    optional PaymentBackgroundType type = 10;
-}
-
-// Renamed from PaymentBackground$MediaData
-message PBMediaData {
-    optional bytes mediaKey = 1;
-    optional int64 mediaKeyTimestamp = 2;
-    optional bytes fileSha256 = 3;
-    optional bytes fileEncSha256 = 4;
-    optional string directPath = 5;
+    optional MediaData mediaData = 9;
+    optional Type type = 10;
 }
 
 message Money {
@@ -909,6 +890,9 @@ message Message {
     optional PollCreationMessage pollCreationMessage = 49;
     optional PollUpdateMessage pollUpdateMessage = 50;
     optional KeepInChatMessage keepInChatMessage = 51;
+    optional FutureProofMessage documentWithCaptionMessage = 53;
+    optional RequestPhoneNumberMessage requestPhoneNumberMessage = 54;
+    optional FutureProofMessage viewOnceMessageV2 = 55;
 }
 
 message MessageContextInfo {
@@ -919,6 +903,11 @@ message MessageContextInfo {
 }
 
 message VideoMessage {
+    enum Attribution {
+        NONE = 0;
+        GIPHY = 1;
+        TENOR = 2;
+    }
     optional string url = 1;
     optional string mimetype = 2;
     optional bytes fileSha256 = 3;
@@ -936,12 +925,7 @@ message VideoMessage {
     optional bytes jpegThumbnail = 16;
     optional ContextInfo contextInfo = 17;
     optional bytes streamingSidecar = 18;
-    enum VideoMessageAttribution {
-        NONE = 0;
-        GIPHY = 1;
-        TENOR = 2;
-    }
-    optional VideoMessageAttribution gifAttribution = 19;
+    optional Attribution gifAttribution = 19;
     optional bool viewOnce = 20;
     optional string thumbnailDirectPath = 21;
     optional bytes thumbnailSha256 = 22;
@@ -950,6 +934,33 @@ message VideoMessage {
 }
 
 message TemplateMessage {
+    message HydratedFourRowTemplate {
+        optional string hydratedContentText = 6;
+        optional string hydratedFooterText = 7;
+        repeated HydratedTemplateButton hydratedButtons = 8;
+        optional string templateId = 9;
+        oneof title {
+            DocumentMessage documentMessage = 1;
+            string hydratedTitleText = 2;
+            ImageMessage imageMessage = 3;
+            VideoMessage videoMessage = 4;
+            LocationMessage locationMessage = 5;
+        }
+    }
+    
+    message FourRowTemplate {
+        optional HighlyStructuredMessage content = 6;
+        optional HighlyStructuredMessage footer = 7;
+        repeated TemplateButton buttons = 8;
+        oneof title {
+            DocumentMessage documentMessage = 1;
+            HighlyStructuredMessage highlyStructuredMessage = 2;
+            ImageMessage imageMessage = 3;
+            VideoMessage videoMessage = 4;
+            LocationMessage locationMessage = 5;
+        }
+    }
+    
     optional ContextInfo contextInfo = 3;
     optional HydratedFourRowTemplate hydratedTemplate = 4;
     oneof format {
@@ -958,33 +969,6 @@ message TemplateMessage {
     }
 }
 
-message HydratedFourRowTemplate {
-    optional string hydratedContentText = 6;
-    optional string hydratedFooterText = 7;
-    repeated HydratedTemplateButton hydratedButtons = 8;
-    optional string templateId = 9;
-    oneof title {
-        DocumentMessage documentMessage = 1;
-        string hydratedTitleText = 2;
-        ImageMessage imageMessage = 3;
-        VideoMessage videoMessage = 4;
-        LocationMessage locationMessage = 5;
-    }
-}
-
-message FourRowTemplate {
-    optional HighlyStructuredMessage content = 6;
-    optional HighlyStructuredMessage footer = 7;
-    repeated TemplateButton buttons = 8;
-    oneof title {
-        DocumentMessage documentMessage = 1;
-        HighlyStructuredMessage highlyStructuredMessage = 2;
-        ImageMessage imageMessage = 3;
-        VideoMessage videoMessage = 4;
-        LocationMessage locationMessage = 5;
-    }
-}
-
 message TemplateButtonReplyMessage {
     optional string selectedId = 1;
     optional string selectedDisplayText = 2;
@@ -1027,6 +1011,14 @@ message SendPaymentMessage {
     optional PaymentBackground background = 4;
 }
 
+enum RmrSource {
+    FAVORITE_STICKER = 0;
+    RECENT_STICKER = 1;
+}
+message RequestPhoneNumberMessage {
+    optional ContextInfo contextInfo = 1;
+}
+
 message RequestPaymentMessage {
     optional Message noteMessage = 4;
     optional string currencyCodeIso4217 = 1;
@@ -1037,6 +1029,23 @@ message RequestPaymentMessage {
     optional PaymentBackground background = 7;
 }
 
+message RequestMediaUploadResponseMessage {
+    message RequestMediaUploadResult {
+        optional string fileSha256 = 1;
+        optional MediaRetryNotification.ResultType mediaUploadResult = 2;
+        optional StickerMessage stickerMessage = 3;
+    }
+    
+    optional RmrSource rmrSource = 1;
+    optional string stanzaId = 2;
+    repeated RequestMediaUploadResult reuploadResult = 3;
+}
+
+message RequestMediaUploadMessage {
+    repeated string fileSha256 = 1;
+    optional RmrSource rmrSource = 2;
+}
+
 message ReactionMessage {
     optional MessageKey key = 1;
     optional string text = 2;
@@ -1045,8 +1054,7 @@ message ReactionMessage {
 }
 
 message ProtocolMessage {
-    optional MessageKey key = 1;
-    enum ProtocolMessageType {
+    enum Type {
         REVOKE = 0;
         EPHEMERAL_SETTING = 3;
         EPHEMERAL_SYNC_RESPONSE = 4;
@@ -1056,8 +1064,12 @@ message ProtocolMessage {
         MSG_FANOUT_BACKFILL_REQUEST = 8;
         INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC = 9;
         APP_STATE_FATAL_EXCEPTION_NOTIFICATION = 10;
+        SHARE_PHONE_NUMBER = 11;
+        REQUEST_MEDIA_UPLOAD_MESSAGE = 12;
+        REQUEST_MEDIA_UPLOAD_RESPONSE_MESSAGE = 13;
     }
-    optional ProtocolMessageType type = 2;
+    optional MessageKey key = 1;
+    optional Type type = 2;
     optional uint32 ephemeralExpiration = 4;
     optional int64 ephemeralSettingTimestamp = 5;
     optional HistorySyncNotification historySyncNotification = 6;
@@ -1066,9 +1078,31 @@ message ProtocolMessage {
     optional InitialSecurityNotificationSettingSync initialSecurityNotificationSettingSync = 9;
     optional AppStateFatalExceptionNotification appStateFatalExceptionNotification = 10;
     optional DisappearingMode disappearingMode = 11;
+    optional RequestMediaUploadMessage requestMediaUploadMessage = 12;
+    optional RequestMediaUploadResponseMessage requestMediaUploadResponseMessage = 13;
 }
 
 message ProductMessage {
+    message ProductSnapshot {
+        optional ImageMessage productImage = 1;
+        optional string productId = 2;
+        optional string title = 3;
+        optional string description = 4;
+        optional string currencyCode = 5;
+        optional int64 priceAmount1000 = 6;
+        optional string retailerId = 7;
+        optional string url = 8;
+        optional uint32 productImageCount = 9;
+        optional string firstImageId = 11;
+        optional int64 salePriceAmount1000 = 12;
+    }
+    
+    message CatalogSnapshot {
+        optional ImageMessage catalogImage = 1;
+        optional string title = 2;
+        optional string description = 3;
+    }
+    
     optional ProductSnapshot product = 1;
     optional string businessOwnerJid = 2;
     optional CatalogSnapshot catalog = 4;
@@ -1087,25 +1121,54 @@ message WallpaperSettings {
     optional uint32 opacity = 2;
 }
 
+message StickerMetadata {
+    optional string url = 1;
+    optional bytes fileSha256 = 2;
+    optional bytes fileEncSha256 = 3;
+    optional bytes mediaKey = 4;
+    optional string mimetype = 5;
+    optional uint32 height = 6;
+    optional uint32 width = 7;
+    optional string directPath = 8;
+    optional uint64 fileLength = 9;
+    optional float weight = 10;
+}
+
 message Pushname {
     optional string id = 1;
     optional string pushname = 2;
 }
 
+message PastParticipants {
+    required string groupJid = 1;
+    repeated PastParticipant pastParticipants = 2;
+}
+
+message PastParticipant {
+    enum LeaveReason {
+        LEFT = 0;
+        REMOVED = 1;
+    }
+    required string userJid = 1;
+    required LeaveReason leaveReason = 2;
+    required uint64 leaveTs = 3;
+}
+
 enum MediaVisibility {
     DEFAULT = 0;
     OFF = 1;
     ON = 2;
 }
 message HistorySync {
-    enum HistorySyncHistorySyncType {
+    enum HistorySyncType {
         INITIAL_BOOTSTRAP = 0;
         INITIAL_STATUS_V3 = 1;
         FULL = 2;
         RECENT = 3;
         PUSH_NAME = 4;
+        UNBLOCKING_DATA = 5;
     }
-    required HistorySyncHistorySyncType syncType = 1;
+    required HistorySyncType syncType = 1;
     repeated Conversation conversations = 2;
     repeated WebMessageInfo statusV3Messages = 3;
     optional uint32 chunkOrder = 5;
@@ -1114,6 +1177,8 @@ message HistorySync {
     optional GlobalSettings globalSettings = 8;
     optional bytes threadIdUserSecret = 9;
     optional uint32 threadDsTimeframeOffset = 10;
+    repeated StickerMetadata recentStickers = 11;
+    repeated PastParticipants pastParticipants = 12;
 }
 
 message HistorySyncMsg {
@@ -1122,13 +1187,13 @@ message HistorySyncMsg {
 }
 
 message GroupParticipant {
-    required string userJid = 1;
-    enum GroupParticipantRank {
+    enum Rank {
         REGULAR = 0;
         ADMIN = 1;
         SUPERADMIN = 2;
     }
-    optional GroupParticipantRank rank = 2;
+    required string userJid = 1;
+    optional Rank rank = 2;
 }
 
 message GlobalSettings {
@@ -1145,6 +1210,10 @@ message GlobalSettings {
 }
 
 message Conversation {
+    enum EndOfHistoryTransferType {
+        COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY = 0;
+        COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY = 1;
+    }
     required string id = 1;
     repeated HistorySyncMsg messages = 2;
     optional string newJid = 3;
@@ -1155,11 +1224,7 @@ message Conversation {
     optional bool endOfHistoryTransfer = 8;
     optional uint32 ephemeralExpiration = 9;
     optional int64 ephemeralSettingTimestamp = 10;
-    enum ConversationEndOfHistoryTransferType {
-        COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY = 0;
-        COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY = 1;
-    }
-    optional ConversationEndOfHistoryTransferType endOfHistoryTransferType = 11;
+    optional EndOfHistoryTransferType endOfHistoryTransferType = 11;
     optional uint64 conversationTimestamp = 12;
     optional string name = 13;
     optional string pHash = 14;
@@ -1188,7 +1253,7 @@ message Conversation {
     optional string parentGroupId = 37;
     optional string displayName = 38;
     optional string pnJid = 39;
-    optional bool selfMasked = 40;
+    optional bool selfPnExposed = 40;
 }
 
 message AutoDownloadSettings {
@@ -1198,12 +1263,22 @@ message AutoDownloadSettings {
     optional bool downloadDocuments = 4;
 }
 
+// Duplicate type omitted
+//message PollEncValue {
+//    optional bytes encPayload = 1;
+//    optional bytes encIv = 2;
+//}
+
 message MsgRowOpaqueData {
     optional MsgOpaqueData currentMsg = 1;
     optional MsgOpaqueData quotedMsg = 2;
 }
 
 message MsgOpaqueData {
+    message PollOption {
+        optional string name = 1;
+    }
+    
     optional string body = 1;
     optional string caption = 3;
     optional double lng = 5;
@@ -1222,10 +1297,9 @@ message MsgOpaqueData {
     repeated PollOption pollOptions = 18;
     optional uint32 pollSelectableOptionsCount = 20;
     optional bytes messageSecret = 21;
-}
-
-message PollOption {
-    optional string name = 1;
+    optional int64 senderTimestampMs = 22;
+    optional string pollUpdateParentKey = 23;
+    optional PollEncValue encPollVote = 24;
 }
 
 message ServerErrorReceipt {
@@ -1233,15 +1307,15 @@ message ServerErrorReceipt {
 }
 
 message MediaRetryNotification {
-    optional string stanzaId = 1;
-    optional string directPath = 2;
-    enum MediaRetryNotificationResultType {
+    enum ResultType {
         GENERAL_ERROR = 0;
         SUCCESS = 1;
         NOT_FOUND = 2;
         DECRYPTION_ERROR = 3;
     }
-    optional MediaRetryNotificationResultType result = 3;
+    optional string stanzaId = 1;
+    optional string directPath = 2;
+    optional ResultType result = 3;
 }
 
 message MessageKey {
@@ -1296,11 +1370,11 @@ message SyncdMutations {
 }
 
 message SyncdMutation {
-    enum SyncdMutationSyncdOperation {
+    enum SyncdOperation {
         SET = 0;
         REMOVE = 1;
     }
-    optional SyncdMutationSyncdOperation operation = 1;
+    optional SyncdOperation operation = 1;
     optional SyncdRecord record = 2;
 }
 
@@ -1335,8 +1409,6 @@ message SyncActionValue {
     optional SecurityNotificationSetting securityNotificationSetting = 6;
     optional PushNameSetting pushNameSetting = 7;
     optional QuickReplyAction quickReplyAction = 8;
-    optional RecentStickerWeightsAction recentStickerWeightsAction = 9;
-    optional RecentStickerMetadata recentStickerMetadata = 10;
     optional RecentEmojiWeightsAction recentEmojiWeightsAction = 11;
     optional LabelEditAction labelEditAction = 14;
     optional LabelAssociationAction labelAssociationAction = 15;
@@ -1349,12 +1421,14 @@ message SyncActionValue {
     optional DeleteChatAction deleteChatAction = 22;
     optional UnarchiveChatsSetting unarchiveChatsSetting = 23;
     optional PrimaryFeature primaryFeature = 24;
-    optional FavoriteStickerAction favoriteStickerAction = 25;
     optional AndroidUnsupportedActions androidUnsupportedActions = 26;
     optional AgentAction agentAction = 27;
     optional SubscriptionAction subscriptionAction = 28;
     optional UserStatusMuteAction userStatusMuteAction = 29;
     optional TimeFormatAction timeFormatAction = 30;
+    optional NuxAction nuxAction = 31;
+    optional PrimaryVersionAction primaryVersionAction = 32;
+    optional StickerAction stickerAction = 33;
 }
 
 message UserStatusMuteAction {
@@ -1386,6 +1460,19 @@ message SubscriptionAction {
     optional int64 expirationDate = 3;
 }
 
+message StickerAction {
+    optional string url = 1;
+    optional bytes fileEncSha256 = 2;
+    optional bytes mediaKey = 3;
+    optional string mimetype = 4;
+    optional uint32 height = 5;
+    optional uint32 width = 6;
+    optional string directPath = 7;
+    optional uint64 fileLength = 8;
+    optional bool isFavorite = 9;
+    optional uint32 deviceIdHint = 10;
+}
+
 message StarAction {
     optional bool starred = 1;
 }
@@ -1394,20 +1481,6 @@ message SecurityNotificationSetting {
     optional bool showNotification = 1;
 }
 
-message RecentStickerWeightsAction {
-    repeated RecentStickerWeight weights = 1;
-}
-
-message RecentStickerMetadata {
-    optional string directPath = 1;
-    optional string encFilehash = 2;
-    optional string mediaKey = 3;
-    optional string stanzaId = 4;
-    optional string chatJid = 5;
-    optional string participant = 6;
-    optional bool isSentByMe = 7;
-}
-
 message RecentEmojiWeightsAction {
     repeated RecentEmojiWeight weights = 1;
 }
@@ -1424,6 +1497,10 @@ message PushNameSetting {
     optional string name = 1;
 }
 
+message PrimaryVersionAction {
+    optional string version = 1;
+}
+
 message PrimaryFeature {
     repeated string flags = 1;
 }
@@ -1432,6 +1509,10 @@ message PinAction {
     optional bool pinned = 1;
 }
 
+message NuxAction {
+    optional bool acknowledged = 1;
+}
+
 message MuteAction {
     optional bool muted = 1;
     optional int64 muteEndTimestamp = 2;
@@ -1461,17 +1542,6 @@ message KeyExpiration {
     optional int32 expiredKeyEpoch = 1;
 }
 
-message FavoriteStickerAction {
-    optional string directPath = 1;
-    optional string lastUploadTimestamp = 2;
-    optional string handle = 3;
-    optional string encFilehash = 4;
-    optional string stickerHashWithoutMeta = 5;
-    optional string mediaKey = 6;
-    optional int64 mediaKeyTimestamp = 7;
-    optional bool isFavorite = 8;
-}
-
 message DeleteMessageForMeAction {
     optional bool deleteMedia = 1;
     optional int64 messageTimestamp = 2;
@@ -1512,31 +1582,25 @@ message SyncActionData {
     optional int32 version = 4;
 }
 
-message RecentStickerWeight {
-    optional string filehash = 1;
-    optional float weight = 2;
-}
-
 message RecentEmojiWeight {
     optional string emoji = 1;
     optional float weight = 2;
 }
 
 message VerifiedNameCertificate {
+    message Details {
+        optional uint64 serial = 1;
+        optional string issuer = 2;
+        optional string verifiedName = 4;
+        repeated LocalizedName localizedNames = 8;
+        optional uint64 issueTime = 10;
+    }
+    
     optional bytes details = 1;
     optional bytes signature = 2;
     optional bytes serverSignature = 3;
 }
 
-// Renamed from VerifiedNameCertificate$Details
-message VerifiedNameDetails {
-    optional uint64 serial = 1;
-    optional string issuer = 2;
-    optional string verifiedName = 4;
-    repeated LocalizedName localizedNames = 8;
-    optional uint64 issueTime = 10;
-}
-
 message LocalizedName {
     optional string lg = 1;
     optional string lc = 2;
@@ -1544,25 +1608,25 @@ message LocalizedName {
 }
 
 message BizIdentityInfo {
-    enum BizIdentityInfoVerifiedLevelValue {
+    enum VerifiedLevelValue {
         UNKNOWN = 0;
         LOW = 1;
         HIGH = 2;
     }
-    optional BizIdentityInfoVerifiedLevelValue vlevel = 1;
-    optional VerifiedNameCertificate vnameCert = 2;
-    optional bool signed = 3;
-    optional bool revoked = 4;
-    enum BizIdentityInfoHostStorageType {
+    enum HostStorageType {
         ON_PREMISE = 0;
         FACEBOOK = 1;
     }
-    optional BizIdentityInfoHostStorageType hostStorage = 5;
-    enum BizIdentityInfoActualActorsType {
+    enum ActualActorsType {
         SELF = 0;
         BSP = 1;
     }
-    optional BizIdentityInfoActualActorsType actualActors = 6;
+    optional VerifiedLevelValue vlevel = 1;
+    optional VerifiedNameCertificate vnameCert = 2;
+    optional bool signed = 3;
+    optional bool revoked = 4;
+    optional HostStorageType hostStorage = 5;
+    optional ActualActorsType actualActors = 6;
     optional uint64 privacyModeTs = 7;
     optional uint64 featureControls = 8;
 }
@@ -1573,52 +1637,166 @@ message BizAccountPayload {
 }
 
 message BizAccountLinkInfo {
-    optional uint64 whatsappBizAcctFbid = 1;
-    optional string whatsappAcctNumber = 2;
-    optional uint64 issueTime = 3;
-    enum BizAccountLinkInfoHostStorageType {
+    enum HostStorageType {
         ON_PREMISE = 0;
         FACEBOOK = 1;
     }
-    optional BizAccountLinkInfoHostStorageType hostStorage = 4;
-    enum BizAccountLinkInfoAccountType {
+    enum AccountType {
         ENTERPRISE = 0;
     }
-    optional BizAccountLinkInfoAccountType accountType = 5;
+    optional uint64 whatsappBizAcctFbid = 1;
+    optional string whatsappAcctNumber = 2;
+    optional uint64 issueTime = 3;
+    optional HostStorageType hostStorage = 4;
+    optional AccountType accountType = 5;
 }
 
 message HandshakeMessage {
-    optional ClientHello clientHello = 2;
-    optional ServerHello serverHello = 3;
-    optional ClientFinish clientFinish = 4;
+    optional HandshakeClientHello clientHello = 2;
+    optional HandshakeServerHello serverHello = 3;
+    optional HandshakeClientFinish clientFinish = 4;
 }
 
-message ServerHello {
+message HandshakeServerHello {
     optional bytes ephemeral = 1;
     optional bytes static = 2;
     optional bytes payload = 3;
 }
 
-message ClientHello {
+message HandshakeClientHello {
     optional bytes ephemeral = 1;
     optional bytes static = 2;
     optional bytes payload = 3;
 }
 
-message ClientFinish {
+message HandshakeClientFinish {
     optional bytes static = 1;
     optional bytes payload = 2;
 }
 
 message ClientPayload {
-    optional uint64 username = 1;
-    optional bool passive = 3;
-    optional UserAgent userAgent = 5;
-    optional WebInfo webInfo = 6;
-    optional string pushName = 7;
-    optional sfixed32 sessionId = 9;
-    optional bool shortConnect = 10;
-    enum ClientPayloadConnectType {
+    message WebInfo {
+        message WebdPayload {
+            optional bool usesParticipantInKey = 1;
+            optional bool supportsStarredMessages = 2;
+            optional bool supportsDocumentMessages = 3;
+            optional bool supportsUrlMessages = 4;
+            optional bool supportsMediaRetry = 5;
+            optional bool supportsE2EImage = 6;
+            optional bool supportsE2EVideo = 7;
+            optional bool supportsE2EAudio = 8;
+            optional bool supportsE2EDocument = 9;
+            optional string documentTypes = 10;
+            optional bytes features = 11;
+        }
+        
+        enum WebSubPlatform {
+            WEB_BROWSER = 0;
+            APP_STORE = 1;
+            WIN_STORE = 2;
+            DARWIN = 3;
+            WIN32 = 4;
+        }
+        optional string refToken = 1;
+        optional string version = 2;
+        optional WebdPayload webdPayload = 3;
+        optional WebSubPlatform webSubPlatform = 4;
+    }
+    
+    message UserAgent {
+        enum ReleaseChannel {
+            RELEASE = 0;
+            BETA = 1;
+            ALPHA = 2;
+            DEBUG = 3;
+        }
+        enum Platform {
+            ANDROID = 0;
+            IOS = 1;
+            WINDOWS_PHONE = 2;
+            BLACKBERRY = 3;
+            BLACKBERRYX = 4;
+            S40 = 5;
+            S60 = 6;
+            PYTHON_CLIENT = 7;
+            TIZEN = 8;
+            ENTERPRISE = 9;
+            SMB_ANDROID = 10;
+            KAIOS = 11;
+            SMB_IOS = 12;
+            WINDOWS = 13;
+            WEB = 14;
+            PORTAL = 15;
+            GREEN_ANDROID = 16;
+            GREEN_IPHONE = 17;
+            BLUE_ANDROID = 18;
+            BLUE_IPHONE = 19;
+            FBLITE_ANDROID = 20;
+            MLITE_ANDROID = 21;
+            IGLITE_ANDROID = 22;
+            PAGE = 23;
+            MACOS = 24;
+            OCULUS_MSG = 25;
+            OCULUS_CALL = 26;
+            MILAN = 27;
+            CAPI = 28;
+        }
+        message AppVersion {
+            optional uint32 primary = 1;
+            optional uint32 secondary = 2;
+            optional uint32 tertiary = 3;
+            optional uint32 quaternary = 4;
+            optional uint32 quinary = 5;
+        }
+        
+        optional Platform platform = 1;
+        optional AppVersion appVersion = 2;
+        optional string mcc = 3;
+        optional string mnc = 4;
+        optional string osVersion = 5;
+        optional string manufacturer = 6;
+        optional string device = 7;
+        optional string osBuildNumber = 8;
+        optional string phoneId = 9;
+        optional ReleaseChannel releaseChannel = 10;
+        optional string localeLanguageIso6391 = 11;
+        optional string localeCountryIso31661Alpha2 = 12;
+        optional string deviceBoard = 13;
+    }
+    
+    enum Product {
+        WHATSAPP = 0;
+        MESSENGER = 1;
+    }
+    enum IOSAppExtension {
+        SHARE_EXTENSION = 0;
+        SERVICE_EXTENSION = 1;
+        INTENTS_EXTENSION = 2;
+    }
+    message DevicePairingRegistrationData {
+        optional bytes eRegid = 1;
+        optional bytes eKeytype = 2;
+        optional bytes eIdent = 3;
+        optional bytes eSkeyId = 4;
+        optional bytes eSkeyVal = 5;
+        optional bytes eSkeySig = 6;
+        optional bytes buildHash = 7;
+        optional bytes deviceProps = 8;
+    }
+    
+    message DNSSource {
+        enum DNSResolutionMethod {
+            SYSTEM = 0;
+            GOOGLE = 1;
+            HARDCODED = 2;
+            OVERRIDE = 3;
+            FALLBACK = 4;
+        }
+        optional DNSResolutionMethod dnsMethod = 15;
+        optional bool appCached = 16;
+    }
+    
+    enum ConnectType {
         CELLULAR_UNKNOWN = 0;
         WIFI_UNKNOWN = 1;
         CELLULAR_EDGE = 100;
@@ -1635,8 +1813,7 @@ message ClientPayload {
         CELLULAR_LTE = 111;
         CELLULAR_HSPAP = 112;
     }
-    optional ClientPayloadConnectType connectType = 12;
-    enum ClientPayloadConnectReason {
+    enum ConnectReason {
         PUSH = 0;
         USER_ACTIVATED = 1;
         SCHEDULED = 2;
@@ -1644,143 +1821,30 @@ message ClientPayload {
         NETWORK_SWITCH = 4;
         PING_RECONNECT = 5;
     }
-    optional ClientPayloadConnectReason connectReason = 13;
+    optional uint64 username = 1;
+    optional bool passive = 3;
+    optional UserAgent userAgent = 5;
+    optional WebInfo webInfo = 6;
+    optional string pushName = 7;
+    optional sfixed32 sessionId = 9;
+    optional bool shortConnect = 10;
+    optional ConnectType connectType = 12;
+    optional ConnectReason connectReason = 13;
     repeated int32 shards = 14;
     optional DNSSource dnsSource = 15;
     optional uint32 connectAttemptCount = 16;
     optional uint32 device = 18;
     optional DevicePairingRegistrationData devicePairingData = 19;
-    enum ClientPayloadProduct {
-        WHATSAPP = 0;
-        MESSENGER = 1;
-    }
-    optional ClientPayloadProduct product = 20;
+    optional Product product = 20;
     optional bytes fbCat = 21;
     optional bytes fbUserAgent = 22;
     optional bool oc = 23;
     optional int32 lc = 24;
-    enum ClientPayloadIOSAppExtension {
-        SHARE_EXTENSION = 0;
-        SERVICE_EXTENSION = 1;
-        INTENTS_EXTENSION = 2;
-    }
-    optional ClientPayloadIOSAppExtension iosAppExtension = 30;
+    optional IOSAppExtension iosAppExtension = 30;
     optional uint64 fbAppId = 31;
     optional bytes fbDeviceId = 32;
     optional bool pull = 33;
-}
-
-message WebInfo {
-    optional string refToken = 1;
-    optional string version = 2;
-    optional WebdPayload webdPayload = 3;
-    enum WebInfoWebSubPlatform {
-        WEB_BROWSER = 0;
-        APP_STORE = 1;
-        WIN_STORE = 2;
-        DARWIN = 3;
-        WIN32 = 4;
-    }
-    optional WebInfoWebSubPlatform webSubPlatform = 4;
-}
-
-message WebdPayload {
-    optional bool usesParticipantInKey = 1;
-    optional bool supportsStarredMessages = 2;
-    optional bool supportsDocumentMessages = 3;
-    optional bool supportsUrlMessages = 4;
-    optional bool supportsMediaRetry = 5;
-    optional bool supportsE2EImage = 6;
-    optional bool supportsE2EVideo = 7;
-    optional bool supportsE2EAudio = 8;
-    optional bool supportsE2EDocument = 9;
-    optional string documentTypes = 10;
-    optional bytes features = 11;
-}
-
-message UserAgent {
-    enum UserAgentPlatform {
-        ANDROID = 0;
-        IOS = 1;
-        WINDOWS_PHONE = 2;
-        BLACKBERRY = 3;
-        BLACKBERRYX = 4;
-        S40 = 5;
-        S60 = 6;
-        PYTHON_CLIENT = 7;
-        TIZEN = 8;
-        ENTERPRISE = 9;
-        SMB_ANDROID = 10;
-        KAIOS = 11;
-        SMB_IOS = 12;
-        WINDOWS = 13;
-        WEB = 14;
-        PORTAL = 15;
-        GREEN_ANDROID = 16;
-        GREEN_IPHONE = 17;
-        BLUE_ANDROID = 18;
-        BLUE_IPHONE = 19;
-        FBLITE_ANDROID = 20;
-        MLITE_ANDROID = 21;
-        IGLITE_ANDROID = 22;
-        PAGE = 23;
-        MACOS = 24;
-        OCULUS_MSG = 25;
-        OCULUS_CALL = 26;
-        MILAN = 27;
-        CAPI = 28;
-    }
-    optional UserAgentPlatform platform = 1;
-    optional AppVersion appVersion = 2;
-    optional string mcc = 3;
-    optional string mnc = 4;
-    optional string osVersion = 5;
-    optional string manufacturer = 6;
-    optional string device = 7;
-    optional string osBuildNumber = 8;
-    optional string phoneId = 9;
-    enum UserAgentReleaseChannel {
-        RELEASE = 0;
-        BETA = 1;
-        ALPHA = 2;
-        DEBUG = 3;
-    }
-    optional UserAgentReleaseChannel releaseChannel = 10;
-    optional string localeLanguageIso6391 = 11;
-    optional string localeCountryIso31661Alpha2 = 12;
-    optional string deviceBoard = 13;
-}
-
-// Duplicate type omitted
-//message AppVersion {
-//    optional uint32 primary = 1;
-//    optional uint32 secondary = 2;
-//    optional uint32 tertiary = 3;
-//    optional uint32 quaternary = 4;
-//    optional uint32 quinary = 5;
-//}
-
-message DevicePairingRegistrationData {
-    optional bytes eRegid = 1;
-    optional bytes eKeytype = 2;
-    optional bytes eIdent = 3;
-    optional bytes eSkeyId = 4;
-    optional bytes eSkeyVal = 5;
-    optional bytes eSkeySig = 6;
-    optional bytes buildHash = 7;
-    optional bytes deviceProps = 8;
-}
-
-message DNSSource {
-    enum DNSSourceDNSResolutionMethod {
-        SYSTEM = 0;
-        GOOGLE = 1;
-        HARDCODED = 2;
-        OVERRIDE = 3;
-        FALLBACK = 4;
-    }
-    optional DNSSourceDNSResolutionMethod dnsMethod = 15;
-    optional bool appCached = 16;
+    optional bytes paddingBytes = 34;
 }
 
 message WebNotificationsInfo {
@@ -1791,29 +1855,7 @@ message WebNotificationsInfo {
 }
 
 message WebMessageInfo {
-    required MessageKey key = 1;
-    optional Message message = 2;
-    optional uint64 messageTimestamp = 3;
-    enum WebMessageInfoStatus {
-        ERROR = 0;
-        PENDING = 1;
-        SERVER_ACK = 2;
-        DELIVERY_ACK = 3;
-        READ = 4;
-        PLAYED = 5;
-    }
-    optional WebMessageInfoStatus status = 4;
-    optional string participant = 5;
-    optional uint64 messageC2STimestamp = 6;
-    optional bool ignore = 16;
-    optional bool starred = 17;
-    optional bool broadcast = 18;
-    optional string pushName = 19;
-    optional bytes mediaCiphertextSha256 = 20;
-    optional bool multicast = 21;
-    optional bool urlText = 22;
-    optional bool urlNumber = 23;
-    enum WebMessageInfoStubType {
+    enum StubType {
         UNKNOWN = 0;
         REVOKE = 1;
         CIPHERTEXT = 2;
@@ -1958,8 +2000,42 @@ message WebMessageInfo {
         GROUP_PARTICIPANT_LINKED_GROUP_JOIN = 141;
         COMMUNITY_CREATE = 142;
         EPHEMERAL_KEEP_IN_CHAT = 143;
+        GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST = 144;
+        GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE = 145;
+        INTEGRITY_UNLINK_PARENT_GROUP = 146;
+        COMMUNITY_PARTICIPANT_PROMOTE = 147;
+        COMMUNITY_PARTICIPANT_DEMOTE = 148;
+        COMMUNITY_PARENT_GROUP_DELETED = 149;
+    }
+    enum Status {
+        ERROR = 0;
+        PENDING = 1;
+        SERVER_ACK = 2;
+        DELIVERY_ACK = 3;
+        READ = 4;
+        PLAYED = 5;
     }
-    optional WebMessageInfoStubType messageStubType = 24;
+    enum BizPrivacyStatus {
+        E2EE = 0;
+        FB = 2;
+        BSP = 1;
+        BSP_AND_FB = 3;
+    }
+    required MessageKey key = 1;
+    optional Message message = 2;
+    optional uint64 messageTimestamp = 3;
+    optional Status status = 4;
+    optional string participant = 5;
+    optional uint64 messageC2STimestamp = 6;
+    optional bool ignore = 16;
+    optional bool starred = 17;
+    optional bool broadcast = 18;
+    optional string pushName = 19;
+    optional bytes mediaCiphertextSha256 = 20;
+    optional bool multicast = 21;
+    optional bool urlText = 22;
+    optional bool urlNumber = 23;
+    optional StubType messageStubType = 24;
     optional bool clearMedia = 25;
     repeated string messageStubParameters = 26;
     optional uint32 duration = 27;
@@ -1971,13 +2047,7 @@ message WebMessageInfo {
     optional uint32 ephemeralDuration = 33;
     optional bool ephemeralOffToOn = 34;
     optional bool ephemeralOutOfSync = 35;
-    enum WebMessageInfoBizPrivacyStatus {
-        E2EE = 0;
-        FB = 2;
-        BSP = 1;
-        BSP_AND_FB = 3;
-    }
-    optional WebMessageInfoBizPrivacyStatus bizPrivacyStatus = 36;
+    optional BizPrivacyStatus bizPrivacyStatus = 36;
     optional string verifiedBizName = 37;
     optional MediaData mediaData = 38;
     optional PhotoChange photoChange = 39;
@@ -1992,60 +2062,62 @@ message WebMessageInfo {
     optional bool statusAlreadyViewed = 48;
     optional bytes messageSecret = 49;
     optional KeepInChat keepInChat = 50;
+    optional string originalSelfAuthorUserJidString = 51;
+    optional uint64 revokeMessageTimestamp = 52;
 }
 
 message WebFeatures {
-    enum WebFeaturesFlag {
+    enum Flag {
         NOT_STARTED = 0;
         FORCE_UPGRADE = 1;
         DEVELOPMENT = 2;
         PRODUCTION = 3;
     }
-    optional WebFeaturesFlag labelsDisplay = 1;
-    optional WebFeaturesFlag voipIndividualOutgoing = 2;
-    optional WebFeaturesFlag groupsV3 = 3;
-    optional WebFeaturesFlag groupsV3Create = 4;
-    optional WebFeaturesFlag changeNumberV2 = 5;
-    optional WebFeaturesFlag queryStatusV3Thumbnail = 6;
-    optional WebFeaturesFlag liveLocations = 7;
-    optional WebFeaturesFlag queryVname = 8;
-    optional WebFeaturesFlag voipIndividualIncoming = 9;
-    optional WebFeaturesFlag quickRepliesQuery = 10;
-    optional WebFeaturesFlag payments = 11;
-    optional WebFeaturesFlag stickerPackQuery = 12;
-    optional WebFeaturesFlag liveLocationsFinal = 13;
-    optional WebFeaturesFlag labelsEdit = 14;
-    optional WebFeaturesFlag mediaUpload = 15;
-    optional WebFeaturesFlag mediaUploadRichQuickReplies = 18;
-    optional WebFeaturesFlag vnameV2 = 19;
-    optional WebFeaturesFlag videoPlaybackUrl = 20;
-    optional WebFeaturesFlag statusRanking = 21;
-    optional WebFeaturesFlag voipIndividualVideo = 22;
-    optional WebFeaturesFlag thirdPartyStickers = 23;
-    optional WebFeaturesFlag frequentlyForwardedSetting = 24;
-    optional WebFeaturesFlag groupsV4JoinPermission = 25;
-    optional WebFeaturesFlag recentStickers = 26;
-    optional WebFeaturesFlag catalog = 27;
-    optional WebFeaturesFlag starredStickers = 28;
-    optional WebFeaturesFlag voipGroupCall = 29;
-    optional WebFeaturesFlag templateMessage = 30;
-    optional WebFeaturesFlag templateMessageInteractivity = 31;
-    optional WebFeaturesFlag ephemeralMessages = 32;
-    optional WebFeaturesFlag e2ENotificationSync = 33;
-    optional WebFeaturesFlag recentStickersV2 = 34;
-    optional WebFeaturesFlag recentStickersV3 = 36;
-    optional WebFeaturesFlag userNotice = 37;
-    optional WebFeaturesFlag support = 39;
-    optional WebFeaturesFlag groupUiiCleanup = 40;
-    optional WebFeaturesFlag groupDogfoodingInternalOnly = 41;
-    optional WebFeaturesFlag settingsSync = 42;
-    optional WebFeaturesFlag archiveV2 = 43;
-    optional WebFeaturesFlag ephemeralAllowGroupMembers = 44;
-    optional WebFeaturesFlag ephemeral24HDuration = 45;
-    optional WebFeaturesFlag mdForceUpgrade = 46;
-    optional WebFeaturesFlag disappearingMode = 47;
-    optional WebFeaturesFlag externalMdOptInAvailable = 48;
-    optional WebFeaturesFlag noDeleteMessageTimeLimit = 49;
+    optional Flag labelsDisplay = 1;
+    optional Flag voipIndividualOutgoing = 2;
+    optional Flag groupsV3 = 3;
+    optional Flag groupsV3Create = 4;
+    optional Flag changeNumberV2 = 5;
+    optional Flag queryStatusV3Thumbnail = 6;
+    optional Flag liveLocations = 7;
+    optional Flag queryVname = 8;
+    optional Flag voipIndividualIncoming = 9;
+    optional Flag quickRepliesQuery = 10;
+    optional Flag payments = 11;
+    optional Flag stickerPackQuery = 12;
+    optional Flag liveLocationsFinal = 13;
+    optional Flag labelsEdit = 14;
+    optional Flag mediaUpload = 15;
+    optional Flag mediaUploadRichQuickReplies = 18;
+    optional Flag vnameV2 = 19;
+    optional Flag videoPlaybackUrl = 20;
+    optional Flag statusRanking = 21;
+    optional Flag voipIndividualVideo = 22;
+    optional Flag thirdPartyStickers = 23;
+    optional Flag frequentlyForwardedSetting = 24;
+    optional Flag groupsV4JoinPermission = 25;
+    optional Flag recentStickers = 26;
+    optional Flag catalog = 27;
+    optional Flag starredStickers = 28;
+    optional Flag voipGroupCall = 29;
+    optional Flag templateMessage = 30;
+    optional Flag templateMessageInteractivity = 31;
+    optional Flag ephemeralMessages = 32;
+    optional Flag e2ENotificationSync = 33;
+    optional Flag recentStickersV2 = 34;
+    optional Flag recentStickersV3 = 36;
+    optional Flag userNotice = 37;
+    optional Flag support = 39;
+    optional Flag groupUiiCleanup = 40;
+    optional Flag groupDogfoodingInternalOnly = 41;
+    optional Flag settingsSync = 42;
+    optional Flag archiveV2 = 43;
+    optional Flag ephemeralAllowGroupMembers = 44;
+    optional Flag ephemeral24HDuration = 45;
+    optional Flag mdForceUpgrade = 46;
+    optional Flag disappearingMode = 47;
+    optional Flag externalMdOptInAvailable = 48;
+    optional Flag noDeleteMessageTimeLimit = 49;
 }
 
 message UserReceipt {
@@ -2073,6 +2145,7 @@ message Reaction {
 message PollUpdate {
     optional MessageKey pollUpdateMessageKey = 1;
     optional PollVoteMessage vote = 2;
+    optional int64 senderTimestampMs = 3;
 }
 
 message PollAdditionalMetadata {
@@ -2086,34 +2159,7 @@ message PhotoChange {
 }
 
 message PaymentInfo {
-    enum PaymentInfoCurrency {
-        UNKNOWN_CURRENCY = 0;
-        INR = 1;
-    }
-    optional PaymentInfoCurrency currencyDeprecated = 1;
-    optional uint64 amount1000 = 2;
-    optional string receiverJid = 3;
-    enum PaymentInfoStatus {
-        UNKNOWN_STATUS = 0;
-        PROCESSING = 1;
-        SENT = 2;
-        NEED_TO_ACCEPT = 3;
-        COMPLETE = 4;
-        COULD_NOT_COMPLETE = 5;
-        REFUNDED = 6;
-        EXPIRED = 7;
-        REJECTED = 8;
-        CANCELLED = 9;
-        WAITING_FOR_PAYER = 10;
-        WAITING = 11;
-    }
-    optional PaymentInfoStatus status = 4;
-    optional uint64 transactionTimestamp = 5;
-    optional MessageKey requestMessageKey = 6;
-    optional uint64 expiryTimestamp = 7;
-    optional bool futureproofed = 8;
-    optional string currency = 9;
-    enum PaymentInfoTxnStatus {
+    enum TxnStatus {
         UNKNOWN = 0;
         PENDING_SETUP = 1;
         PENDING_RECEIVER_SETUP = 2;
@@ -2147,7 +2193,34 @@ message PaymentInfo {
         REVERSAL_PENDING = 30;
         REFUND_PENDING = 31;
     }
-    optional PaymentInfoTxnStatus txnStatus = 10;
+    enum Status {
+        UNKNOWN_STATUS = 0;
+        PROCESSING = 1;
+        SENT = 2;
+        NEED_TO_ACCEPT = 3;
+        COMPLETE = 4;
+        COULD_NOT_COMPLETE = 5;
+        REFUNDED = 6;
+        EXPIRED = 7;
+        REJECTED = 8;
+        CANCELLED = 9;
+        WAITING_FOR_PAYER = 10;
+        WAITING = 11;
+    }
+    enum Currency {
+        UNKNOWN_CURRENCY = 0;
+        INR = 1;
+    }
+    optional Currency currencyDeprecated = 1;
+    optional uint64 amount1000 = 2;
+    optional string receiverJid = 3;
+    optional Status status = 4;
+    optional uint64 transactionTimestamp = 5;
+    optional MessageKey requestMessageKey = 6;
+    optional uint64 expiryTimestamp = 7;
+    optional bool futureproofed = 8;
+    optional string currency = 9;
+    optional TxnStatus txnStatus = 10;
     optional bool useNoviFiatFormat = 11;
     optional Money primaryAmount = 12;
     optional Money exchangeAmount = 13;
@@ -2167,40 +2240,38 @@ message MediaData {
 message KeepInChat {
     optional KeepType keepType = 1;
     optional int64 serverTimestamp = 2;
-    optional string deviceJid = 3;
+    optional MessageKey key = 3;
+    optional string deviceJid = 4;
 }
 
 message NoiseCertificate {
+    message Details {
+        optional uint32 serial = 1;
+        optional string issuer = 2;
+        optional uint64 expires = 3;
+        optional string subject = 4;
+        optional bytes key = 5;
+    }
+    
     optional bytes details = 1;
     optional bytes signature = 2;
 }
 
-// Renamed from NoiseCertificate$Details
-message NoiseCertificateDetails {
-    optional uint32 serial = 1;
-    optional string issuer = 2;
-    optional uint64 expires = 3;
-    optional string subject = 4;
-    optional bytes key = 5;
-}
-
 message CertChain {
-    optional CertChainNoiseCertificate leaf = 1;
-    optional CertChainNoiseCertificate intermediate = 2;
-}
-
-// Renamed from CertChain$NoiseCertificate
-message CertChainNoiseCertificate {
-    optional bytes details = 1;
-    optional bytes signature = 2;
-}
-
-// Renamed from CertChain$NoiseCertificate$Details
-message CertChainNoiseCertificateDetails {
-    optional uint32 serial = 1;
-    optional uint32 issuerSerial = 2;
-    optional bytes key = 3;
-    optional uint64 notBefore = 4;
-    optional uint64 notAfter = 5;
+    message NoiseCertificate {
+        message Details {
+            optional uint32 serial = 1;
+            optional uint32 issuerSerial = 2;
+            optional bytes key = 3;
+            optional uint64 notBefore = 4;
+            optional uint64 notAfter = 5;
+        }
+        
+        optional bytes details = 1;
+        optional bytes signature = 2;
+    }
+    
+    optional NoiseCertificate leaf = 1;
+    optional NoiseCertificate intermediate = 2;
 }
 
-- 
cgit v1.2.3