You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2019/11/19 23:53:32 UTC

[pulsar-client-go] branch master updated: Update protobuf file. (#103)

This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git


The following commit(s) were added to refs/heads/master by this push:
     new a73f643  Update protobuf file. (#103)
a73f643 is described below

commit a73f643c72094d058e656a79772228365a2a5f76
Author: cckellogg <cc...@gmail.com>
AuthorDate: Tue Nov 19 15:53:25 2019 -0800

    Update protobuf file. (#103)
---
 pkg/pb/PulsarApi.pb.go | 3034 ++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 2395 insertions(+), 639 deletions(-)

diff --git a/pkg/pb/PulsarApi.pb.go b/pkg/pb/PulsarApi.pb.go
index f47feed..7a1554b 100644
--- a/pkg/pb/PulsarApi.pb.go
+++ b/pkg/pb/PulsarApi.pb.go
@@ -3,9 +3,11 @@
 
 package pb
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@ var _ = math.Inf
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type CompressionType int32
 
@@ -35,6 +37,7 @@ var CompressionType_name = map[int32]string{
 	3: "ZSTD",
 	4: "SNAPPY",
 }
+
 var CompressionType_value = map[string]int32{
 	"NONE":   0,
 	"LZ4":    1,
@@ -48,9 +51,11 @@ func (x CompressionType) Enum() *CompressionType {
 	*p = x
 	return p
 }
+
 func (x CompressionType) String() string {
 	return proto.EnumName(CompressionType_name, int32(x))
 }
+
 func (x *CompressionType) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CompressionType_value, data, "CompressionType")
 	if err != nil {
@@ -59,8 +64,9 @@ func (x *CompressionType) UnmarshalJSON(data []byte) error {
 	*x = CompressionType(value)
 	return nil
 }
+
 func (CompressionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{0}
 }
 
 type ServerError int32
@@ -111,6 +117,7 @@ var ServerError_name = map[int32]string{
 	18: "IncompatibleSchema",
 	19: "ConsumerAssignError",
 }
+
 var ServerError_value = map[string]int32{
 	"UnknownError":                          0,
 	"MetadataError":                         1,
@@ -139,9 +146,11 @@ func (x ServerError) Enum() *ServerError {
 	*p = x
 	return p
 }
+
 func (x ServerError) String() string {
 	return proto.EnumName(ServerError_name, int32(x))
 }
+
 func (x *ServerError) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(ServerError_value, data, "ServerError")
 	if err != nil {
@@ -150,8 +159,9 @@ func (x *ServerError) UnmarshalJSON(data []byte) error {
 	*x = ServerError(value)
 	return nil
 }
+
 func (ServerError) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{1}
+	return fileDescriptor_39529ba7ad9caeb8, []int{1}
 }
 
 type AuthMethod int32
@@ -167,6 +177,7 @@ var AuthMethod_name = map[int32]string{
 	1: "AuthMethodYcaV1",
 	2: "AuthMethodAthens",
 }
+
 var AuthMethod_value = map[string]int32{
 	"AuthMethodNone":   0,
 	"AuthMethodYcaV1":  1,
@@ -178,9 +189,11 @@ func (x AuthMethod) Enum() *AuthMethod {
 	*p = x
 	return p
 }
+
 func (x AuthMethod) String() string {
 	return proto.EnumName(AuthMethod_name, int32(x))
 }
+
 func (x *AuthMethod) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(AuthMethod_value, data, "AuthMethod")
 	if err != nil {
@@ -189,8 +202,9 @@ func (x *AuthMethod) UnmarshalJSON(data []byte) error {
 	*x = AuthMethod(value)
 	return nil
 }
+
 func (AuthMethod) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{2}
+	return fileDescriptor_39529ba7ad9caeb8, []int{2}
 }
 
 // Each protocol version identify new features that are
@@ -215,6 +229,8 @@ const (
 	// Added CommandGetTopicsOfNamespace
 	ProtocolVersion_v13 ProtocolVersion = 13
 	ProtocolVersion_v14 ProtocolVersion = 14
+	// Added Key_Shared subscription
+	ProtocolVersion_v15 ProtocolVersion = 15
 )
 
 var ProtocolVersion_name = map[int32]string{
@@ -233,7 +249,9 @@ var ProtocolVersion_name = map[int32]string{
 	12: "v12",
 	13: "v13",
 	14: "v14",
+	15: "v15",
 }
+
 var ProtocolVersion_value = map[string]int32{
 	"v0":  0,
 	"v1":  1,
@@ -250,6 +268,7 @@ var ProtocolVersion_value = map[string]int32{
 	"v12": 12,
 	"v13": 13,
 	"v14": 14,
+	"v15": 15,
 }
 
 func (x ProtocolVersion) Enum() *ProtocolVersion {
@@ -257,9 +276,11 @@ func (x ProtocolVersion) Enum() *ProtocolVersion {
 	*p = x
 	return p
 }
+
 func (x ProtocolVersion) String() string {
 	return proto.EnumName(ProtocolVersion_name, int32(x))
 }
+
 func (x *ProtocolVersion) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(ProtocolVersion_value, data, "ProtocolVersion")
 	if err != nil {
@@ -268,8 +289,89 @@ func (x *ProtocolVersion) UnmarshalJSON(data []byte) error {
 	*x = ProtocolVersion(value)
 	return nil
 }
+
 func (ProtocolVersion) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{3}
+	return fileDescriptor_39529ba7ad9caeb8, []int{3}
+}
+
+type KeySharedMode int32
+
+const (
+	KeySharedMode_AUTO_SPLIT KeySharedMode = 0
+	KeySharedMode_STICKY     KeySharedMode = 1
+)
+
+var KeySharedMode_name = map[int32]string{
+	0: "AUTO_SPLIT",
+	1: "STICKY",
+}
+
+var KeySharedMode_value = map[string]int32{
+	"AUTO_SPLIT": 0,
+	"STICKY":     1,
+}
+
+func (x KeySharedMode) Enum() *KeySharedMode {
+	p := new(KeySharedMode)
+	*p = x
+	return p
+}
+
+func (x KeySharedMode) String() string {
+	return proto.EnumName(KeySharedMode_name, int32(x))
+}
+
+func (x *KeySharedMode) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(KeySharedMode_value, data, "KeySharedMode")
+	if err != nil {
+		return err
+	}
+	*x = KeySharedMode(value)
+	return nil
+}
+
+func (KeySharedMode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{4}
+}
+
+type TxnAction int32
+
+const (
+	TxnAction_COMMIT TxnAction = 0
+	TxnAction_ABORT  TxnAction = 1
+)
+
+var TxnAction_name = map[int32]string{
+	0: "COMMIT",
+	1: "ABORT",
+}
+
+var TxnAction_value = map[string]int32{
+	"COMMIT": 0,
+	"ABORT":  1,
+}
+
+func (x TxnAction) Enum() *TxnAction {
+	p := new(TxnAction)
+	*p = x
+	return p
+}
+
+func (x TxnAction) String() string {
+	return proto.EnumName(TxnAction_name, int32(x))
+}
+
+func (x *TxnAction) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(TxnAction_value, data, "TxnAction")
+	if err != nil {
+		return err
+	}
+	*x = TxnAction(value)
+	return nil
+}
+
+func (TxnAction) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{5}
 }
 
 type Schema_Type int32
@@ -311,6 +413,7 @@ var Schema_Type_name = map[int32]string{
 	14: "Timestamp",
 	15: "KeyValue",
 }
+
 var Schema_Type_value = map[string]int32{
 	"None":      0,
 	"String":    1,
@@ -335,9 +438,11 @@ func (x Schema_Type) Enum() *Schema_Type {
 	*p = x
 	return p
 }
+
 func (x Schema_Type) String() string {
 	return proto.EnumName(Schema_Type_name, int32(x))
 }
+
 func (x *Schema_Type) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(Schema_Type_value, data, "Schema_Type")
 	if err != nil {
@@ -346,8 +451,9 @@ func (x *Schema_Type) UnmarshalJSON(data []byte) error {
 	*x = Schema_Type(value)
 	return nil
 }
+
 func (Schema_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{0, 0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{0, 0}
 }
 
 type CommandSubscribe_SubType int32
@@ -365,6 +471,7 @@ var CommandSubscribe_SubType_name = map[int32]string{
 	2: "Failover",
 	3: "Key_Shared",
 }
+
 var CommandSubscribe_SubType_value = map[string]int32{
 	"Exclusive":  0,
 	"Shared":     1,
@@ -377,9 +484,11 @@ func (x CommandSubscribe_SubType) Enum() *CommandSubscribe_SubType {
 	*p = x
 	return p
 }
+
 func (x CommandSubscribe_SubType) String() string {
 	return proto.EnumName(CommandSubscribe_SubType_name, int32(x))
 }
+
 func (x *CommandSubscribe_SubType) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CommandSubscribe_SubType_value, data, "CommandSubscribe_SubType")
 	if err != nil {
@@ -388,8 +497,9 @@ func (x *CommandSubscribe_SubType) UnmarshalJSON(data []byte) error {
 	*x = CommandSubscribe_SubType(value)
 	return nil
 }
+
 func (CommandSubscribe_SubType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{12, 0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{14, 0}
 }
 
 type CommandSubscribe_InitialPosition int32
@@ -403,6 +513,7 @@ var CommandSubscribe_InitialPosition_name = map[int32]string{
 	0: "Latest",
 	1: "Earliest",
 }
+
 var CommandSubscribe_InitialPosition_value = map[string]int32{
 	"Latest":   0,
 	"Earliest": 1,
@@ -413,9 +524,11 @@ func (x CommandSubscribe_InitialPosition) Enum() *CommandSubscribe_InitialPositi
 	*p = x
 	return p
 }
+
 func (x CommandSubscribe_InitialPosition) String() string {
 	return proto.EnumName(CommandSubscribe_InitialPosition_name, int32(x))
 }
+
 func (x *CommandSubscribe_InitialPosition) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CommandSubscribe_InitialPosition_value, data, "CommandSubscribe_InitialPosition")
 	if err != nil {
@@ -424,8 +537,9 @@ func (x *CommandSubscribe_InitialPosition) UnmarshalJSON(data []byte) error {
 	*x = CommandSubscribe_InitialPosition(value)
 	return nil
 }
+
 func (CommandSubscribe_InitialPosition) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{12, 1}
+	return fileDescriptor_39529ba7ad9caeb8, []int{14, 1}
 }
 
 type CommandPartitionedTopicMetadataResponse_LookupType int32
@@ -439,6 +553,7 @@ var CommandPartitionedTopicMetadataResponse_LookupType_name = map[int32]string{
 	0: "Success",
 	1: "Failed",
 }
+
 var CommandPartitionedTopicMetadataResponse_LookupType_value = map[string]int32{
 	"Success": 0,
 	"Failed":  1,
@@ -449,9 +564,11 @@ func (x CommandPartitionedTopicMetadataResponse_LookupType) Enum() *CommandParti
 	*p = x
 	return p
 }
+
 func (x CommandPartitionedTopicMetadataResponse_LookupType) String() string {
 	return proto.EnumName(CommandPartitionedTopicMetadataResponse_LookupType_name, int32(x))
 }
+
 func (x *CommandPartitionedTopicMetadataResponse_LookupType) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CommandPartitionedTopicMetadataResponse_LookupType_value, data, "CommandPartitionedTopicMetadataResponse_LookupType")
 	if err != nil {
@@ -460,8 +577,9 @@ func (x *CommandPartitionedTopicMetadataResponse_LookupType) UnmarshalJSON(data
 	*x = CommandPartitionedTopicMetadataResponse_LookupType(value)
 	return nil
 }
+
 func (CommandPartitionedTopicMetadataResponse_LookupType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{14, 0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{16, 0}
 }
 
 type CommandLookupTopicResponse_LookupType int32
@@ -477,6 +595,7 @@ var CommandLookupTopicResponse_LookupType_name = map[int32]string{
 	1: "Connect",
 	2: "Failed",
 }
+
 var CommandLookupTopicResponse_LookupType_value = map[string]int32{
 	"Redirect": 0,
 	"Connect":  1,
@@ -488,9 +607,11 @@ func (x CommandLookupTopicResponse_LookupType) Enum() *CommandLookupTopicRespons
 	*p = x
 	return p
 }
+
 func (x CommandLookupTopicResponse_LookupType) String() string {
 	return proto.EnumName(CommandLookupTopicResponse_LookupType_name, int32(x))
 }
+
 func (x *CommandLookupTopicResponse_LookupType) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CommandLookupTopicResponse_LookupType_value, data, "CommandLookupTopicResponse_LookupType")
 	if err != nil {
@@ -499,8 +620,9 @@ func (x *CommandLookupTopicResponse_LookupType) UnmarshalJSON(data []byte) error
 	*x = CommandLookupTopicResponse_LookupType(value)
 	return nil
 }
+
 func (CommandLookupTopicResponse_LookupType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{16, 0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{18, 0}
 }
 
 type CommandAck_AckType int32
@@ -514,6 +636,7 @@ var CommandAck_AckType_name = map[int32]string{
 	0: "Individual",
 	1: "Cumulative",
 }
+
 var CommandAck_AckType_value = map[string]int32{
 	"Individual": 0,
 	"Cumulative": 1,
@@ -524,9 +647,11 @@ func (x CommandAck_AckType) Enum() *CommandAck_AckType {
 	*p = x
 	return p
 }
+
 func (x CommandAck_AckType) String() string {
 	return proto.EnumName(CommandAck_AckType_name, int32(x))
 }
+
 func (x *CommandAck_AckType) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CommandAck_AckType_value, data, "CommandAck_AckType")
 	if err != nil {
@@ -535,8 +660,9 @@ func (x *CommandAck_AckType) UnmarshalJSON(data []byte) error {
 	*x = CommandAck_AckType(value)
 	return nil
 }
+
 func (CommandAck_AckType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{22, 0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{24, 0}
 }
 
 // Acks can contain a flag to indicate the consumer
@@ -559,6 +685,7 @@ var CommandAck_ValidationError_name = map[int32]string{
 	3: "BatchDeSerializeError",
 	4: "DecryptionError",
 }
+
 var CommandAck_ValidationError_value = map[string]int32{
 	"UncompressedSizeCorruption": 0,
 	"DecompressionError":         1,
@@ -572,9 +699,11 @@ func (x CommandAck_ValidationError) Enum() *CommandAck_ValidationError {
 	*p = x
 	return p
 }
+
 func (x CommandAck_ValidationError) String() string {
 	return proto.EnumName(CommandAck_ValidationError_name, int32(x))
 }
+
 func (x *CommandAck_ValidationError) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CommandAck_ValidationError_value, data, "CommandAck_ValidationError")
 	if err != nil {
@@ -583,8 +712,9 @@ func (x *CommandAck_ValidationError) UnmarshalJSON(data []byte) error {
 	*x = CommandAck_ValidationError(value)
 	return nil
 }
+
 func (CommandAck_ValidationError) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{22, 1}
+	return fileDescriptor_39529ba7ad9caeb8, []int{24, 1}
 }
 
 type CommandGetTopicsOfNamespace_Mode int32
@@ -600,6 +730,7 @@ var CommandGetTopicsOfNamespace_Mode_name = map[int32]string{
 	1: "NON_PERSISTENT",
 	2: "ALL",
 }
+
 var CommandGetTopicsOfNamespace_Mode_value = map[string]int32{
 	"PERSISTENT":     0,
 	"NON_PERSISTENT": 1,
@@ -611,9 +742,11 @@ func (x CommandGetTopicsOfNamespace_Mode) Enum() *CommandGetTopicsOfNamespace_Mo
 	*p = x
 	return p
 }
+
 func (x CommandGetTopicsOfNamespace_Mode) String() string {
 	return proto.EnumName(CommandGetTopicsOfNamespace_Mode_name, int32(x))
 }
+
 func (x *CommandGetTopicsOfNamespace_Mode) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(CommandGetTopicsOfNamespace_Mode_value, data, "CommandGetTopicsOfNamespace_Mode")
 	if err != nil {
@@ -622,8 +755,9 @@ func (x *CommandGetTopicsOfNamespace_Mode) UnmarshalJSON(data []byte) error {
 	*x = CommandGetTopicsOfNamespace_Mode(value)
 	return nil
 }
+
 func (CommandGetTopicsOfNamespace_Mode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{40, 0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{43, 0}
 }
 
 type BaseCommand_Type int32
@@ -665,6 +799,22 @@ const (
 	BaseCommand_GET_SCHEMA_RESPONSE               BaseCommand_Type = 35
 	BaseCommand_AUTH_CHALLENGE                    BaseCommand_Type = 36
 	BaseCommand_AUTH_RESPONSE                     BaseCommand_Type = 37
+	BaseCommand_ACK_RESPONSE                      BaseCommand_Type = 38
+	BaseCommand_GET_OR_CREATE_SCHEMA              BaseCommand_Type = 39
+	BaseCommand_GET_OR_CREATE_SCHEMA_RESPONSE     BaseCommand_Type = 40
+	// transaction related
+	BaseCommand_NEW_TXN                          BaseCommand_Type = 50
+	BaseCommand_NEW_TXN_RESPONSE                 BaseCommand_Type = 51
+	BaseCommand_ADD_PARTITION_TO_TXN             BaseCommand_Type = 52
+	BaseCommand_ADD_PARTITION_TO_TXN_RESPONSE    BaseCommand_Type = 53
+	BaseCommand_ADD_SUBSCRIPTION_TO_TXN          BaseCommand_Type = 54
+	BaseCommand_ADD_SUBSCRIPTION_TO_TXN_RESPONSE BaseCommand_Type = 55
+	BaseCommand_END_TXN                          BaseCommand_Type = 56
+	BaseCommand_END_TXN_RESPONSE                 BaseCommand_Type = 57
+	BaseCommand_END_TXN_ON_PARTITION             BaseCommand_Type = 58
+	BaseCommand_END_TXN_ON_PARTITION_RESPONSE    BaseCommand_Type = 59
+	BaseCommand_END_TXN_ON_SUBSCRIPTION          BaseCommand_Type = 60
+	BaseCommand_END_TXN_ON_SUBSCRIPTION_RESPONSE BaseCommand_Type = 61
 )
 
 var BaseCommand_Type_name = map[int32]string{
@@ -704,7 +854,23 @@ var BaseCommand_Type_name = map[int32]string{
 	35: "GET_SCHEMA_RESPONSE",
 	36: "AUTH_CHALLENGE",
 	37: "AUTH_RESPONSE",
+	38: "ACK_RESPONSE",
+	39: "GET_OR_CREATE_SCHEMA",
+	40: "GET_OR_CREATE_SCHEMA_RESPONSE",
+	50: "NEW_TXN",
+	51: "NEW_TXN_RESPONSE",
+	52: "ADD_PARTITION_TO_TXN",
+	53: "ADD_PARTITION_TO_TXN_RESPONSE",
+	54: "ADD_SUBSCRIPTION_TO_TXN",
+	55: "ADD_SUBSCRIPTION_TO_TXN_RESPONSE",
+	56: "END_TXN",
+	57: "END_TXN_RESPONSE",
+	58: "END_TXN_ON_PARTITION",
+	59: "END_TXN_ON_PARTITION_RESPONSE",
+	60: "END_TXN_ON_SUBSCRIPTION",
+	61: "END_TXN_ON_SUBSCRIPTION_RESPONSE",
 }
+
 var BaseCommand_Type_value = map[string]int32{
 	"CONNECT":                           2,
 	"CONNECTED":                         3,
@@ -742,6 +908,21 @@ var BaseCommand_Type_value = map[string]int32{
 	"GET_SCHEMA_RESPONSE":               35,
 	"AUTH_CHALLENGE":                    36,
 	"AUTH_RESPONSE":                     37,
+	"ACK_RESPONSE":                      38,
+	"GET_OR_CREATE_SCHEMA":              39,
+	"GET_OR_CREATE_SCHEMA_RESPONSE":     40,
+	"NEW_TXN":                           50,
+	"NEW_TXN_RESPONSE":                  51,
+	"ADD_PARTITION_TO_TXN":              52,
+	"ADD_PARTITION_TO_TXN_RESPONSE":     53,
+	"ADD_SUBSCRIPTION_TO_TXN":           54,
+	"ADD_SUBSCRIPTION_TO_TXN_RESPONSE":  55,
+	"END_TXN":                           56,
+	"END_TXN_RESPONSE":                  57,
+	"END_TXN_ON_PARTITION":              58,
+	"END_TXN_ON_PARTITION_RESPONSE":     59,
+	"END_TXN_ON_SUBSCRIPTION":           60,
+	"END_TXN_ON_SUBSCRIPTION_RESPONSE":  61,
 }
 
 func (x BaseCommand_Type) Enum() *BaseCommand_Type {
@@ -749,9 +930,11 @@ func (x BaseCommand_Type) Enum() *BaseCommand_Type {
 	*p = x
 	return p
 }
+
 func (x BaseCommand_Type) String() string {
 	return proto.EnumName(BaseCommand_Type_name, int32(x))
 }
+
 func (x *BaseCommand_Type) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(BaseCommand_Type_value, data, "BaseCommand_Type")
 	if err != nil {
@@ -760,8 +943,9 @@ func (x *BaseCommand_Type) UnmarshalJSON(data []byte) error {
 	*x = BaseCommand_Type(value)
 	return nil
 }
+
 func (BaseCommand_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{44, 0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{62, 0}
 }
 
 type Schema struct {
@@ -778,16 +962,17 @@ func (m *Schema) Reset()         { *m = Schema{} }
 func (m *Schema) String() string { return proto.CompactTextString(m) }
 func (*Schema) ProtoMessage()    {}
 func (*Schema) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{0}
+	return fileDescriptor_39529ba7ad9caeb8, []int{0}
 }
+
 func (m *Schema) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Schema.Unmarshal(m, b)
 }
 func (m *Schema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Schema.Marshal(b, m, deterministic)
 }
-func (dst *Schema) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Schema.Merge(dst, src)
+func (m *Schema) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Schema.Merge(m, src)
 }
 func (m *Schema) XXX_Size() int {
 	return xxx_messageInfo_Schema.Size(m)
@@ -840,16 +1025,17 @@ func (m *MessageIdData) Reset()         { *m = MessageIdData{} }
 func (m *MessageIdData) String() string { return proto.CompactTextString(m) }
 func (*MessageIdData) ProtoMessage()    {}
 func (*MessageIdData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{1}
+	return fileDescriptor_39529ba7ad9caeb8, []int{1}
 }
+
 func (m *MessageIdData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MessageIdData.Unmarshal(m, b)
 }
 func (m *MessageIdData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MessageIdData.Marshal(b, m, deterministic)
 }
-func (dst *MessageIdData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageIdData.Merge(dst, src)
+func (m *MessageIdData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageIdData.Merge(m, src)
 }
 func (m *MessageIdData) XXX_Size() int {
 	return xxx_messageInfo_MessageIdData.Size(m)
@@ -903,16 +1089,17 @@ func (m *KeyValue) Reset()         { *m = KeyValue{} }
 func (m *KeyValue) String() string { return proto.CompactTextString(m) }
 func (*KeyValue) ProtoMessage()    {}
 func (*KeyValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{2}
+	return fileDescriptor_39529ba7ad9caeb8, []int{2}
 }
+
 func (m *KeyValue) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_KeyValue.Unmarshal(m, b)
 }
 func (m *KeyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_KeyValue.Marshal(b, m, deterministic)
 }
-func (dst *KeyValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KeyValue.Merge(dst, src)
+func (m *KeyValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KeyValue.Merge(m, src)
 }
 func (m *KeyValue) XXX_Size() int {
 	return xxx_messageInfo_KeyValue.Size(m)
@@ -949,16 +1136,17 @@ func (m *KeyLongValue) Reset()         { *m = KeyLongValue{} }
 func (m *KeyLongValue) String() string { return proto.CompactTextString(m) }
 func (*KeyLongValue) ProtoMessage()    {}
 func (*KeyLongValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{3}
+	return fileDescriptor_39529ba7ad9caeb8, []int{3}
 }
+
 func (m *KeyLongValue) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_KeyLongValue.Unmarshal(m, b)
 }
 func (m *KeyLongValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_KeyLongValue.Marshal(b, m, deterministic)
 }
-func (dst *KeyLongValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KeyLongValue.Merge(dst, src)
+func (m *KeyLongValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KeyLongValue.Merge(m, src)
 }
 func (m *KeyLongValue) XXX_Size() int {
 	return xxx_messageInfo_KeyLongValue.Size(m)
@@ -983,6 +1171,53 @@ func (m *KeyLongValue) GetValue() uint64 {
 	return 0
 }
 
+type IntRange struct {
+	Start                *int32   `protobuf:"varint,1,req,name=start" json:"start,omitempty"`
+	End                  *int32   `protobuf:"varint,2,req,name=end" json:"end,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *IntRange) Reset()         { *m = IntRange{} }
+func (m *IntRange) String() string { return proto.CompactTextString(m) }
+func (*IntRange) ProtoMessage()    {}
+func (*IntRange) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{4}
+}
+
+func (m *IntRange) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IntRange.Unmarshal(m, b)
+}
+func (m *IntRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IntRange.Marshal(b, m, deterministic)
+}
+func (m *IntRange) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IntRange.Merge(m, src)
+}
+func (m *IntRange) XXX_Size() int {
+	return xxx_messageInfo_IntRange.Size(m)
+}
+func (m *IntRange) XXX_DiscardUnknown() {
+	xxx_messageInfo_IntRange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntRange proto.InternalMessageInfo
+
+func (m *IntRange) GetStart() int32 {
+	if m != nil && m.Start != nil {
+		return *m.Start
+	}
+	return 0
+}
+
+func (m *IntRange) GetEnd() int32 {
+	if m != nil && m.End != nil {
+		return *m.End
+	}
+	return 0
+}
+
 type EncryptionKeys struct {
 	Key                  *string     `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
 	Value                []byte      `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
@@ -996,16 +1231,17 @@ func (m *EncryptionKeys) Reset()         { *m = EncryptionKeys{} }
 func (m *EncryptionKeys) String() string { return proto.CompactTextString(m) }
 func (*EncryptionKeys) ProtoMessage()    {}
 func (*EncryptionKeys) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{4}
+	return fileDescriptor_39529ba7ad9caeb8, []int{5}
 }
+
 func (m *EncryptionKeys) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EncryptionKeys.Unmarshal(m, b)
 }
 func (m *EncryptionKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EncryptionKeys.Marshal(b, m, deterministic)
 }
-func (dst *EncryptionKeys) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EncryptionKeys.Merge(dst, src)
+func (m *EncryptionKeys) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EncryptionKeys.Merge(m, src)
 }
 func (m *EncryptionKeys) XXX_Size() int {
 	return xxx_messageInfo_EncryptionKeys.Size(m)
@@ -1045,7 +1281,7 @@ type MessageMetadata struct {
 	// Property set on replicated message,
 	// includes the source cluster name
 	ReplicatedFrom *string `protobuf:"bytes,5,opt,name=replicated_from,json=replicatedFrom" json:"replicated_from,omitempty"`
-	// key to decide partition for the msg
+	//key to decide partition for the msg
 	PartitionKey *string `protobuf:"bytes,6,opt,name=partition_key,json=partitionKey" json:"partition_key,omitempty"`
 	// Override namespace's replication
 	ReplicateTo      []string         `protobuf:"bytes,7,rep,name=replicate_to,json=replicateTo" json:"replicate_to,omitempty"`
@@ -1053,7 +1289,7 @@ type MessageMetadata struct {
 	UncompressedSize *uint32          `protobuf:"varint,9,opt,name=uncompressed_size,json=uncompressedSize,def=0" json:"uncompressed_size,omitempty"`
 	// Removed below checksum field from Metadata as
 	// it should be part of send-command which keeps checksum of header + payload
-	// optional sfixed64 checksum = 10;
+	//optional sfixed64 checksum = 10;
 	// differentiate single and batch message metadata
 	NumMessagesInBatch *int32 `protobuf:"varint,11,opt,name=num_messages_in_batch,json=numMessagesInBatch,def=1" json:"num_messages_in_batch,omitempty"`
 	// the timestamp that this event occurs. it is typically set by applications.
@@ -1074,7 +1310,12 @@ type MessageMetadata struct {
 	// Identify whether a message is a "marker" message used for
 	// internal metadata instead of application published data.
 	// Markers will generally not be propagated back to clients
-	MarkerType           *int32   `protobuf:"varint,20,opt,name=marker_type,json=markerType" json:"marker_type,omitempty"`
+	MarkerType *int32 `protobuf:"varint,20,opt,name=marker_type,json=markerType" json:"marker_type,omitempty"`
+	// transaction related message info
+	TxnidLeastBits *uint64 `protobuf:"varint,22,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits  *uint64 `protobuf:"varint,23,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	/// Add highest sequence id to support batch message with external sequence id
+	HighestSequenceId    *uint64  `protobuf:"varint,24,opt,name=highest_sequence_id,json=highestSequenceId,def=0" json:"highest_sequence_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1084,16 +1325,17 @@ func (m *MessageMetadata) Reset()         { *m = MessageMetadata{} }
 func (m *MessageMetadata) String() string { return proto.CompactTextString(m) }
 func (*MessageMetadata) ProtoMessage()    {}
 func (*MessageMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{5}
+	return fileDescriptor_39529ba7ad9caeb8, []int{6}
 }
+
 func (m *MessageMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MessageMetadata.Unmarshal(m, b)
 }
 func (m *MessageMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MessageMetadata.Marshal(b, m, deterministic)
 }
-func (dst *MessageMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageMetadata.Merge(dst, src)
+func (m *MessageMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageMetadata.Merge(m, src)
 }
 func (m *MessageMetadata) XXX_Size() int {
 	return xxx_messageInfo_MessageMetadata.Size(m)
@@ -1109,6 +1351,9 @@ const Default_MessageMetadata_UncompressedSize uint32 = 0
 const Default_MessageMetadata_NumMessagesInBatch int32 = 1
 const Default_MessageMetadata_EventTime uint64 = 0
 const Default_MessageMetadata_PartitionKeyB64Encoded bool = false
+const Default_MessageMetadata_TxnidLeastBits uint64 = 0
+const Default_MessageMetadata_TxnidMostBits uint64 = 0
+const Default_MessageMetadata_HighestSequenceId uint64 = 0
 
 func (m *MessageMetadata) GetProducerName() string {
 	if m != nil && m.ProducerName != nil {
@@ -1243,6 +1488,27 @@ func (m *MessageMetadata) GetMarkerType() int32 {
 	return 0
 }
 
+func (m *MessageMetadata) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_MessageMetadata_TxnidLeastBits
+}
+
+func (m *MessageMetadata) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_MessageMetadata_TxnidMostBits
+}
+
+func (m *MessageMetadata) GetHighestSequenceId() uint64 {
+	if m != nil && m.HighestSequenceId != nil {
+		return *m.HighestSequenceId
+	}
+	return Default_MessageMetadata_HighestSequenceId
+}
+
 type SingleMessageMetadata struct {
 	Properties   []*KeyValue `protobuf:"bytes,1,rep,name=properties" json:"properties,omitempty"`
 	PartitionKey *string     `protobuf:"bytes,2,opt,name=partition_key,json=partitionKey" json:"partition_key,omitempty"`
@@ -1253,7 +1519,9 @@ type SingleMessageMetadata struct {
 	EventTime              *uint64 `protobuf:"varint,5,opt,name=event_time,json=eventTime,def=0" json:"event_time,omitempty"`
 	PartitionKeyB64Encoded *bool   `protobuf:"varint,6,opt,name=partition_key_b64_encoded,json=partitionKeyB64Encoded,def=0" json:"partition_key_b64_encoded,omitempty"`
 	// Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode.
-	OrderingKey          []byte   `protobuf:"bytes,7,opt,name=ordering_key,json=orderingKey" json:"ordering_key,omitempty"`
+	OrderingKey []byte `protobuf:"bytes,7,opt,name=ordering_key,json=orderingKey" json:"ordering_key,omitempty"`
+	// Allows consumer retrieve the sequence id that the producer set.
+	SequenceId           *uint64  `protobuf:"varint,8,opt,name=sequence_id,json=sequenceId" json:"sequence_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1263,16 +1531,17 @@ func (m *SingleMessageMetadata) Reset()         { *m = SingleMessageMetadata{} }
 func (m *SingleMessageMetadata) String() string { return proto.CompactTextString(m) }
 func (*SingleMessageMetadata) ProtoMessage()    {}
 func (*SingleMessageMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{6}
+	return fileDescriptor_39529ba7ad9caeb8, []int{7}
 }
+
 func (m *SingleMessageMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SingleMessageMetadata.Unmarshal(m, b)
 }
 func (m *SingleMessageMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_SingleMessageMetadata.Marshal(b, m, deterministic)
 }
-func (dst *SingleMessageMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleMessageMetadata.Merge(dst, src)
+func (m *SingleMessageMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SingleMessageMetadata.Merge(m, src)
 }
 func (m *SingleMessageMetadata) XXX_Size() int {
 	return xxx_messageInfo_SingleMessageMetadata.Size(m)
@@ -1336,6 +1605,13 @@ func (m *SingleMessageMetadata) GetOrderingKey() []byte {
 	return nil
 }
 
+func (m *SingleMessageMetadata) GetSequenceId() uint64 {
+	if m != nil && m.SequenceId != nil {
+		return *m.SequenceId
+	}
+	return 0
+}
+
 type CommandConnect struct {
 	ClientVersion   *string     `protobuf:"bytes,1,req,name=client_version,json=clientVersion" json:"client_version,omitempty"`
 	AuthMethod      *AuthMethod `protobuf:"varint,2,opt,name=auth_method,json=authMethod,enum=pulsar.proto.AuthMethod" json:"auth_method,omitempty"`
@@ -1363,16 +1639,17 @@ func (m *CommandConnect) Reset()         { *m = CommandConnect{} }
 func (m *CommandConnect) String() string { return proto.CompactTextString(m) }
 func (*CommandConnect) ProtoMessage()    {}
 func (*CommandConnect) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{7}
+	return fileDescriptor_39529ba7ad9caeb8, []int{8}
 }
+
 func (m *CommandConnect) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandConnect.Unmarshal(m, b)
 }
 func (m *CommandConnect) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandConnect.Marshal(b, m, deterministic)
 }
-func (dst *CommandConnect) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandConnect.Merge(dst, src)
+func (m *CommandConnect) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandConnect.Merge(m, src)
 }
 func (m *CommandConnect) XXX_Size() int {
 	return xxx_messageInfo_CommandConnect.Size(m)
@@ -1461,16 +1738,17 @@ func (m *CommandConnected) Reset()         { *m = CommandConnected{} }
 func (m *CommandConnected) String() string { return proto.CompactTextString(m) }
 func (*CommandConnected) ProtoMessage()    {}
 func (*CommandConnected) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{8}
+	return fileDescriptor_39529ba7ad9caeb8, []int{9}
 }
+
 func (m *CommandConnected) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandConnected.Unmarshal(m, b)
 }
 func (m *CommandConnected) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandConnected.Marshal(b, m, deterministic)
 }
-func (dst *CommandConnected) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandConnected.Merge(dst, src)
+func (m *CommandConnected) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandConnected.Merge(m, src)
 }
 func (m *CommandConnected) XXX_Size() int {
 	return xxx_messageInfo_CommandConnected.Size(m)
@@ -1517,16 +1795,17 @@ func (m *CommandAuthResponse) Reset()         { *m = CommandAuthResponse{} }
 func (m *CommandAuthResponse) String() string { return proto.CompactTextString(m) }
 func (*CommandAuthResponse) ProtoMessage()    {}
 func (*CommandAuthResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{9}
+	return fileDescriptor_39529ba7ad9caeb8, []int{10}
 }
+
 func (m *CommandAuthResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandAuthResponse.Unmarshal(m, b)
 }
 func (m *CommandAuthResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandAuthResponse.Marshal(b, m, deterministic)
 }
-func (dst *CommandAuthResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandAuthResponse.Merge(dst, src)
+func (m *CommandAuthResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAuthResponse.Merge(m, src)
 }
 func (m *CommandAuthResponse) XXX_Size() int {
 	return xxx_messageInfo_CommandAuthResponse.Size(m)
@@ -1573,16 +1852,17 @@ func (m *CommandAuthChallenge) Reset()         { *m = CommandAuthChallenge{} }
 func (m *CommandAuthChallenge) String() string { return proto.CompactTextString(m) }
 func (*CommandAuthChallenge) ProtoMessage()    {}
 func (*CommandAuthChallenge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{10}
+	return fileDescriptor_39529ba7ad9caeb8, []int{11}
 }
+
 func (m *CommandAuthChallenge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandAuthChallenge.Unmarshal(m, b)
 }
 func (m *CommandAuthChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandAuthChallenge.Marshal(b, m, deterministic)
 }
-func (dst *CommandAuthChallenge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandAuthChallenge.Merge(dst, src)
+func (m *CommandAuthChallenge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAuthChallenge.Merge(m, src)
 }
 func (m *CommandAuthChallenge) XXX_Size() int {
 	return xxx_messageInfo_CommandAuthChallenge.Size(m)
@@ -1629,16 +1909,17 @@ func (m *AuthData) Reset()         { *m = AuthData{} }
 func (m *AuthData) String() string { return proto.CompactTextString(m) }
 func (*AuthData) ProtoMessage()    {}
 func (*AuthData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{11}
+	return fileDescriptor_39529ba7ad9caeb8, []int{12}
 }
+
 func (m *AuthData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AuthData.Unmarshal(m, b)
 }
 func (m *AuthData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AuthData.Marshal(b, m, deterministic)
 }
-func (dst *AuthData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AuthData.Merge(dst, src)
+func (m *AuthData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AuthData.Merge(m, src)
 }
 func (m *AuthData) XXX_Size() int {
 	return xxx_messageInfo_AuthData.Size(m)
@@ -1663,6 +1944,53 @@ func (m *AuthData) GetAuthData() []byte {
 	return nil
 }
 
+type KeySharedMeta struct {
+	KeySharedMode        *KeySharedMode `protobuf:"varint,1,req,name=keySharedMode,enum=pulsar.proto.KeySharedMode" json:"keySharedMode,omitempty"`
+	HashRanges           []*IntRange    `protobuf:"bytes,3,rep,name=hashRanges" json:"hashRanges,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *KeySharedMeta) Reset()         { *m = KeySharedMeta{} }
+func (m *KeySharedMeta) String() string { return proto.CompactTextString(m) }
+func (*KeySharedMeta) ProtoMessage()    {}
+func (*KeySharedMeta) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{13}
+}
+
+func (m *KeySharedMeta) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_KeySharedMeta.Unmarshal(m, b)
+}
+func (m *KeySharedMeta) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_KeySharedMeta.Marshal(b, m, deterministic)
+}
+func (m *KeySharedMeta) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KeySharedMeta.Merge(m, src)
+}
+func (m *KeySharedMeta) XXX_Size() int {
+	return xxx_messageInfo_KeySharedMeta.Size(m)
+}
+func (m *KeySharedMeta) XXX_DiscardUnknown() {
+	xxx_messageInfo_KeySharedMeta.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_KeySharedMeta proto.InternalMessageInfo
+
+func (m *KeySharedMeta) GetKeySharedMode() KeySharedMode {
+	if m != nil && m.KeySharedMode != nil {
+		return *m.KeySharedMode
+	}
+	return KeySharedMode_AUTO_SPLIT
+}
+
+func (m *KeySharedMeta) GetHashRanges() []*IntRange {
+	if m != nil {
+		return m.HashRanges
+	}
+	return nil
+}
+
 type CommandSubscribe struct {
 	Topic         *string                   `protobuf:"bytes,1,req,name=topic" json:"topic,omitempty"`
 	Subscription  *string                   `protobuf:"bytes,2,req,name=subscription" json:"subscription,omitempty"`
@@ -1678,36 +2006,47 @@ type CommandSubscribe struct {
 	// markd-delete position  on the particular message id and
 	// will send messages from that point
 	StartMessageId *MessageIdData `protobuf:"bytes,9,opt,name=start_message_id,json=startMessageId" json:"start_message_id,omitempty"`
-	// / Add optional metadata key=value to this consumer
+	/// Add optional metadata key=value to this consumer
 	Metadata      []*KeyValue `protobuf:"bytes,10,rep,name=metadata" json:"metadata,omitempty"`
 	ReadCompacted *bool       `protobuf:"varint,11,opt,name=read_compacted,json=readCompacted" json:"read_compacted,omitempty"`
 	Schema        *Schema     `protobuf:"bytes,12,opt,name=schema" json:"schema,omitempty"`
-	// Signal wthether the subscription will initialize on latest
+	// Signal whether the subscription will initialize on latest
 	// or not -- earliest
 	InitialPosition *CommandSubscribe_InitialPosition `protobuf:"varint,13,opt,name=initialPosition,enum=pulsar.proto.CommandSubscribe_InitialPosition,def=0" json:"initialPosition,omitempty"`
 	// Mark the subscription as "replicated". Pulsar will make sure
 	// to periodically sync the state of replicated subscriptions
 	// across different clusters (when using geo-replication).
-	ReplicateSubscriptionState *bool    `protobuf:"varint,14,opt,name=replicate_subscription_state,json=replicateSubscriptionState" json:"replicate_subscription_state,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
-	XXX_unrecognized           []byte   `json:"-"`
-	XXX_sizecache              int32    `json:"-"`
+	ReplicateSubscriptionState *bool `protobuf:"varint,14,opt,name=replicate_subscription_state,json=replicateSubscriptionState" json:"replicate_subscription_state,omitempty"`
+	// If true, the subscribe operation will cause a topic to be
+	// created if it does not exist already (and if topic auto-creation
+	// is allowed by broker.
+	// If false, the subscribe operation will fail if the topic
+	// does not exist.
+	ForceTopicCreation *bool `protobuf:"varint,15,opt,name=force_topic_creation,json=forceTopicCreation,def=1" json:"force_topic_creation,omitempty"`
+	// If specified, the subscription will reset cursor's position back
+	// to specified seconds and  will send messages from that point
+	StartMessageRollbackDurationSec *uint64        `protobuf:"varint,16,opt,name=start_message_rollback_duration_sec,json=startMessageRollbackDurationSec,def=0" json:"start_message_rollback_duration_sec,omitempty"`
+	KeySharedMeta                   *KeySharedMeta `protobuf:"bytes,17,opt,name=keySharedMeta" json:"keySharedMeta,omitempty"`
+	XXX_NoUnkeyedLiteral            struct{}       `json:"-"`
+	XXX_unrecognized                []byte         `json:"-"`
+	XXX_sizecache                   int32          `json:"-"`
 }
 
 func (m *CommandSubscribe) Reset()         { *m = CommandSubscribe{} }
 func (m *CommandSubscribe) String() string { return proto.CompactTextString(m) }
 func (*CommandSubscribe) ProtoMessage()    {}
 func (*CommandSubscribe) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{12}
+	return fileDescriptor_39529ba7ad9caeb8, []int{14}
 }
+
 func (m *CommandSubscribe) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandSubscribe.Unmarshal(m, b)
 }
 func (m *CommandSubscribe) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandSubscribe.Marshal(b, m, deterministic)
 }
-func (dst *CommandSubscribe) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandSubscribe.Merge(dst, src)
+func (m *CommandSubscribe) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandSubscribe.Merge(m, src)
 }
 func (m *CommandSubscribe) XXX_Size() int {
 	return xxx_messageInfo_CommandSubscribe.Size(m)
@@ -1720,6 +2059,8 @@ var xxx_messageInfo_CommandSubscribe proto.InternalMessageInfo
 
 const Default_CommandSubscribe_Durable bool = true
 const Default_CommandSubscribe_InitialPosition CommandSubscribe_InitialPosition = CommandSubscribe_Latest
+const Default_CommandSubscribe_ForceTopicCreation bool = true
+const Default_CommandSubscribe_StartMessageRollbackDurationSec uint64 = 0
 
 func (m *CommandSubscribe) GetTopic() string {
 	if m != nil && m.Topic != nil {
@@ -1819,6 +2160,27 @@ func (m *CommandSubscribe) GetReplicateSubscriptionState() bool {
 	return false
 }
 
+func (m *CommandSubscribe) GetForceTopicCreation() bool {
+	if m != nil && m.ForceTopicCreation != nil {
+		return *m.ForceTopicCreation
+	}
+	return Default_CommandSubscribe_ForceTopicCreation
+}
+
+func (m *CommandSubscribe) GetStartMessageRollbackDurationSec() uint64 {
+	if m != nil && m.StartMessageRollbackDurationSec != nil {
+		return *m.StartMessageRollbackDurationSec
+	}
+	return Default_CommandSubscribe_StartMessageRollbackDurationSec
+}
+
+func (m *CommandSubscribe) GetKeySharedMeta() *KeySharedMeta {
+	if m != nil {
+		return m.KeySharedMeta
+	}
+	return nil
+}
+
 type CommandPartitionedTopicMetadata struct {
 	Topic     *string `protobuf:"bytes,1,req,name=topic" json:"topic,omitempty"`
 	RequestId *uint64 `protobuf:"varint,2,req,name=request_id,json=requestId" json:"request_id,omitempty"`
@@ -1839,16 +2201,17 @@ func (m *CommandPartitionedTopicMetadata) Reset()         { *m = CommandPartitio
 func (m *CommandPartitionedTopicMetadata) String() string { return proto.CompactTextString(m) }
 func (*CommandPartitionedTopicMetadata) ProtoMessage()    {}
 func (*CommandPartitionedTopicMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{13}
+	return fileDescriptor_39529ba7ad9caeb8, []int{15}
 }
+
 func (m *CommandPartitionedTopicMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandPartitionedTopicMetadata.Unmarshal(m, b)
 }
 func (m *CommandPartitionedTopicMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandPartitionedTopicMetadata.Marshal(b, m, deterministic)
 }
-func (dst *CommandPartitionedTopicMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandPartitionedTopicMetadata.Merge(dst, src)
+func (m *CommandPartitionedTopicMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandPartitionedTopicMetadata.Merge(m, src)
 }
 func (m *CommandPartitionedTopicMetadata) XXX_Size() int {
 	return xxx_messageInfo_CommandPartitionedTopicMetadata.Size(m)
@@ -1911,16 +2274,17 @@ func (m *CommandPartitionedTopicMetadataResponse) Reset() {
 func (m *CommandPartitionedTopicMetadataResponse) String() string { return proto.CompactTextString(m) }
 func (*CommandPartitionedTopicMetadataResponse) ProtoMessage()    {}
 func (*CommandPartitionedTopicMetadataResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{14}
+	return fileDescriptor_39529ba7ad9caeb8, []int{16}
 }
+
 func (m *CommandPartitionedTopicMetadataResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandPartitionedTopicMetadataResponse.Unmarshal(m, b)
 }
 func (m *CommandPartitionedTopicMetadataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandPartitionedTopicMetadataResponse.Marshal(b, m, deterministic)
 }
-func (dst *CommandPartitionedTopicMetadataResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandPartitionedTopicMetadataResponse.Merge(dst, src)
+func (m *CommandPartitionedTopicMetadataResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandPartitionedTopicMetadataResponse.Merge(m, src)
 }
 func (m *CommandPartitionedTopicMetadataResponse) XXX_Size() int {
 	return xxx_messageInfo_CommandPartitionedTopicMetadataResponse.Size(m)
@@ -1987,16 +2351,17 @@ func (m *CommandLookupTopic) Reset()         { *m = CommandLookupTopic{} }
 func (m *CommandLookupTopic) String() string { return proto.CompactTextString(m) }
 func (*CommandLookupTopic) ProtoMessage()    {}
 func (*CommandLookupTopic) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{15}
+	return fileDescriptor_39529ba7ad9caeb8, []int{17}
 }
+
 func (m *CommandLookupTopic) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandLookupTopic.Unmarshal(m, b)
 }
 func (m *CommandLookupTopic) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandLookupTopic.Marshal(b, m, deterministic)
 }
-func (dst *CommandLookupTopic) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandLookupTopic.Merge(dst, src)
+func (m *CommandLookupTopic) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandLookupTopic.Merge(m, src)
 }
 func (m *CommandLookupTopic) XXX_Size() int {
 	return xxx_messageInfo_CommandLookupTopic.Size(m)
@@ -2072,16 +2437,17 @@ func (m *CommandLookupTopicResponse) Reset()         { *m = CommandLookupTopicRe
 func (m *CommandLookupTopicResponse) String() string { return proto.CompactTextString(m) }
 func (*CommandLookupTopicResponse) ProtoMessage()    {}
 func (*CommandLookupTopicResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{16}
+	return fileDescriptor_39529ba7ad9caeb8, []int{18}
 }
+
 func (m *CommandLookupTopicResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandLookupTopicResponse.Unmarshal(m, b)
 }
 func (m *CommandLookupTopicResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandLookupTopicResponse.Marshal(b, m, deterministic)
 }
-func (dst *CommandLookupTopicResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandLookupTopicResponse.Merge(dst, src)
+func (m *CommandLookupTopicResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandLookupTopicResponse.Merge(m, src)
 }
 func (m *CommandLookupTopicResponse) XXX_Size() int {
 	return xxx_messageInfo_CommandLookupTopicResponse.Size(m)
@@ -2151,38 +2517,44 @@ func (m *CommandLookupTopicResponse) GetProxyThroughServiceUrl() bool {
 	return Default_CommandLookupTopicResponse_ProxyThroughServiceUrl
 }
 
-// / Create a new Producer on a topic, assigning the given producer_id,
-// / all messages sent with this producer_id will be persisted on the topic
+/// Create a new Producer on a topic, assigning the given producer_id,
+/// all messages sent with this producer_id will be persisted on the topic
 type CommandProducer struct {
 	Topic      *string `protobuf:"bytes,1,req,name=topic" json:"topic,omitempty"`
 	ProducerId *uint64 `protobuf:"varint,2,req,name=producer_id,json=producerId" json:"producer_id,omitempty"`
 	RequestId  *uint64 `protobuf:"varint,3,req,name=request_id,json=requestId" json:"request_id,omitempty"`
-	// / If a producer name is specified, the name will be used,
-	// / otherwise the broker will generate a unique name
+	/// If a producer name is specified, the name will be used,
+	/// otherwise the broker will generate a unique name
 	ProducerName *string `protobuf:"bytes,4,opt,name=producer_name,json=producerName" json:"producer_name,omitempty"`
 	Encrypted    *bool   `protobuf:"varint,5,opt,name=encrypted,def=0" json:"encrypted,omitempty"`
-	// / Add optional metadata key=value to this producer
-	Metadata             []*KeyValue `protobuf:"bytes,6,rep,name=metadata" json:"metadata,omitempty"`
-	Schema               *Schema     `protobuf:"bytes,7,opt,name=schema" json:"schema,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	/// Add optional metadata key=value to this producer
+	Metadata []*KeyValue `protobuf:"bytes,6,rep,name=metadata" json:"metadata,omitempty"`
+	Schema   *Schema     `protobuf:"bytes,7,opt,name=schema" json:"schema,omitempty"`
+	// If producer reconnect to broker, the epoch of this producer will +1
+	Epoch *uint64 `protobuf:"varint,8,opt,name=epoch,def=0" json:"epoch,omitempty"`
+	// Indicate the name of the producer is generated or user provided
+	// Use default true here is in order to be forward compatible with the client
+	UserProvidedProducerName *bool    `protobuf:"varint,9,opt,name=user_provided_producer_name,json=userProvidedProducerName,def=1" json:"user_provided_producer_name,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
+	XXX_unrecognized         []byte   `json:"-"`
+	XXX_sizecache            int32    `json:"-"`
 }
 
 func (m *CommandProducer) Reset()         { *m = CommandProducer{} }
 func (m *CommandProducer) String() string { return proto.CompactTextString(m) }
 func (*CommandProducer) ProtoMessage()    {}
 func (*CommandProducer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{17}
+	return fileDescriptor_39529ba7ad9caeb8, []int{19}
 }
+
 func (m *CommandProducer) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandProducer.Unmarshal(m, b)
 }
 func (m *CommandProducer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandProducer.Marshal(b, m, deterministic)
 }
-func (dst *CommandProducer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandProducer.Merge(dst, src)
+func (m *CommandProducer) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandProducer.Merge(m, src)
 }
 func (m *CommandProducer) XXX_Size() int {
 	return xxx_messageInfo_CommandProducer.Size(m)
@@ -2194,6 +2566,8 @@ func (m *CommandProducer) XXX_DiscardUnknown() {
 var xxx_messageInfo_CommandProducer proto.InternalMessageInfo
 
 const Default_CommandProducer_Encrypted bool = false
+const Default_CommandProducer_Epoch uint64 = 0
+const Default_CommandProducer_UserProvidedProducerName bool = true
 
 func (m *CommandProducer) GetTopic() string {
 	if m != nil && m.Topic != nil {
@@ -2244,10 +2618,28 @@ func (m *CommandProducer) GetSchema() *Schema {
 	return nil
 }
 
+func (m *CommandProducer) GetEpoch() uint64 {
+	if m != nil && m.Epoch != nil {
+		return *m.Epoch
+	}
+	return Default_CommandProducer_Epoch
+}
+
+func (m *CommandProducer) GetUserProvidedProducerName() bool {
+	if m != nil && m.UserProvidedProducerName != nil {
+		return *m.UserProvidedProducerName
+	}
+	return Default_CommandProducer_UserProvidedProducerName
+}
+
 type CommandSend struct {
-	ProducerId           *uint64  `protobuf:"varint,1,req,name=producer_id,json=producerId" json:"producer_id,omitempty"`
-	SequenceId           *uint64  `protobuf:"varint,2,req,name=sequence_id,json=sequenceId" json:"sequence_id,omitempty"`
-	NumMessages          *int32   `protobuf:"varint,3,opt,name=num_messages,json=numMessages,def=1" json:"num_messages,omitempty"`
+	ProducerId     *uint64 `protobuf:"varint,1,req,name=producer_id,json=producerId" json:"producer_id,omitempty"`
+	SequenceId     *uint64 `protobuf:"varint,2,req,name=sequence_id,json=sequenceId" json:"sequence_id,omitempty"`
+	NumMessages    *int32  `protobuf:"varint,3,opt,name=num_messages,json=numMessages,def=1" json:"num_messages,omitempty"`
+	TxnidLeastBits *uint64 `protobuf:"varint,4,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits  *uint64 `protobuf:"varint,5,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	/// Add highest sequence id to support batch message with external sequence id
+	HighestSequenceId    *uint64  `protobuf:"varint,6,opt,name=highest_sequence_id,json=highestSequenceId,def=0" json:"highest_sequence_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -2257,16 +2649,17 @@ func (m *CommandSend) Reset()         { *m = CommandSend{} }
 func (m *CommandSend) String() string { return proto.CompactTextString(m) }
 func (*CommandSend) ProtoMessage()    {}
 func (*CommandSend) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{18}
+	return fileDescriptor_39529ba7ad9caeb8, []int{20}
 }
+
 func (m *CommandSend) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandSend.Unmarshal(m, b)
 }
 func (m *CommandSend) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandSend.Marshal(b, m, deterministic)
 }
-func (dst *CommandSend) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandSend.Merge(dst, src)
+func (m *CommandSend) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandSend.Merge(m, src)
 }
 func (m *CommandSend) XXX_Size() int {
 	return xxx_messageInfo_CommandSend.Size(m)
@@ -2278,6 +2671,9 @@ func (m *CommandSend) XXX_DiscardUnknown() {
 var xxx_messageInfo_CommandSend proto.InternalMessageInfo
 
 const Default_CommandSend_NumMessages int32 = 1
+const Default_CommandSend_TxnidLeastBits uint64 = 0
+const Default_CommandSend_TxnidMostBits uint64 = 0
+const Default_CommandSend_HighestSequenceId uint64 = 0
 
 func (m *CommandSend) GetProducerId() uint64 {
 	if m != nil && m.ProducerId != nil {
@@ -2300,10 +2696,32 @@ func (m *CommandSend) GetNumMessages() int32 {
 	return Default_CommandSend_NumMessages
 }
 
+func (m *CommandSend) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandSend_TxnidLeastBits
+}
+
+func (m *CommandSend) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandSend_TxnidMostBits
+}
+
+func (m *CommandSend) GetHighestSequenceId() uint64 {
+	if m != nil && m.HighestSequenceId != nil {
+		return *m.HighestSequenceId
+	}
+	return Default_CommandSend_HighestSequenceId
+}
+
 type CommandSendReceipt struct {
 	ProducerId           *uint64        `protobuf:"varint,1,req,name=producer_id,json=producerId" json:"producer_id,omitempty"`
 	SequenceId           *uint64        `protobuf:"varint,2,req,name=sequence_id,json=sequenceId" json:"sequence_id,omitempty"`
 	MessageId            *MessageIdData `protobuf:"bytes,3,opt,name=message_id,json=messageId" json:"message_id,omitempty"`
+	HighestSequenceId    *uint64        `protobuf:"varint,4,opt,name=highest_sequence_id,json=highestSequenceId,def=0" json:"highest_sequence_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
 	XXX_unrecognized     []byte         `json:"-"`
 	XXX_sizecache        int32          `json:"-"`
@@ -2313,16 +2731,17 @@ func (m *CommandSendReceipt) Reset()         { *m = CommandSendReceipt{} }
 func (m *CommandSendReceipt) String() string { return proto.CompactTextString(m) }
 func (*CommandSendReceipt) ProtoMessage()    {}
 func (*CommandSendReceipt) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{19}
+	return fileDescriptor_39529ba7ad9caeb8, []int{21}
 }
+
 func (m *CommandSendReceipt) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandSendReceipt.Unmarshal(m, b)
 }
 func (m *CommandSendReceipt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandSendReceipt.Marshal(b, m, deterministic)
 }
-func (dst *CommandSendReceipt) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandSendReceipt.Merge(dst, src)
+func (m *CommandSendReceipt) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandSendReceipt.Merge(m, src)
 }
 func (m *CommandSendReceipt) XXX_Size() int {
 	return xxx_messageInfo_CommandSendReceipt.Size(m)
@@ -2333,6 +2752,8 @@ func (m *CommandSendReceipt) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_CommandSendReceipt proto.InternalMessageInfo
 
+const Default_CommandSendReceipt_HighestSequenceId uint64 = 0
+
 func (m *CommandSendReceipt) GetProducerId() uint64 {
 	if m != nil && m.ProducerId != nil {
 		return *m.ProducerId
@@ -2354,6 +2775,13 @@ func (m *CommandSendReceipt) GetMessageId() *MessageIdData {
 	return nil
 }
 
+func (m *CommandSendReceipt) GetHighestSequenceId() uint64 {
+	if m != nil && m.HighestSequenceId != nil {
+		return *m.HighestSequenceId
+	}
+	return Default_CommandSendReceipt_HighestSequenceId
+}
+
 type CommandSendError struct {
 	ProducerId           *uint64      `protobuf:"varint,1,req,name=producer_id,json=producerId" json:"producer_id,omitempty"`
 	SequenceId           *uint64      `protobuf:"varint,2,req,name=sequence_id,json=sequenceId" json:"sequence_id,omitempty"`
@@ -2368,16 +2796,17 @@ func (m *CommandSendError) Reset()         { *m = CommandSendError{} }
 func (m *CommandSendError) String() string { return proto.CompactTextString(m) }
 func (*CommandSendError) ProtoMessage()    {}
 func (*CommandSendError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{20}
+	return fileDescriptor_39529ba7ad9caeb8, []int{22}
 }
+
 func (m *CommandSendError) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandSendError.Unmarshal(m, b)
 }
 func (m *CommandSendError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandSendError.Marshal(b, m, deterministic)
 }
-func (dst *CommandSendError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandSendError.Merge(dst, src)
+func (m *CommandSendError) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandSendError.Merge(m, src)
 }
 func (m *CommandSendError) XXX_Size() int {
 	return xxx_messageInfo_CommandSendError.Size(m)
@@ -2429,16 +2858,17 @@ func (m *CommandMessage) Reset()         { *m = CommandMessage{} }
 func (m *CommandMessage) String() string { return proto.CompactTextString(m) }
 func (*CommandMessage) ProtoMessage()    {}
 func (*CommandMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{21}
+	return fileDescriptor_39529ba7ad9caeb8, []int{23}
 }
+
 func (m *CommandMessage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandMessage.Unmarshal(m, b)
 }
 func (m *CommandMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandMessage.Marshal(b, m, deterministic)
 }
-func (dst *CommandMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandMessage.Merge(dst, src)
+func (m *CommandMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandMessage.Merge(m, src)
 }
 func (m *CommandMessage) XXX_Size() int {
 	return xxx_messageInfo_CommandMessage.Size(m)
@@ -2479,6 +2909,8 @@ type CommandAck struct {
 	MessageId            []*MessageIdData            `protobuf:"bytes,3,rep,name=message_id,json=messageId" json:"message_id,omitempty"`
 	ValidationError      *CommandAck_ValidationError `protobuf:"varint,4,opt,name=validation_error,json=validationError,enum=pulsar.proto.CommandAck_ValidationError" json:"validation_error,omitempty"`
 	Properties           []*KeyLongValue             `protobuf:"bytes,5,rep,name=properties" json:"properties,omitempty"`
+	TxnidLeastBits       *uint64                     `protobuf:"varint,6,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64                     `protobuf:"varint,7,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
 	XXX_unrecognized     []byte                      `json:"-"`
 	XXX_sizecache        int32                       `json:"-"`
@@ -2488,16 +2920,17 @@ func (m *CommandAck) Reset()         { *m = CommandAck{} }
 func (m *CommandAck) String() string { return proto.CompactTextString(m) }
 func (*CommandAck) ProtoMessage()    {}
 func (*CommandAck) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{22}
+	return fileDescriptor_39529ba7ad9caeb8, []int{24}
 }
+
 func (m *CommandAck) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandAck.Unmarshal(m, b)
 }
 func (m *CommandAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandAck.Marshal(b, m, deterministic)
 }
-func (dst *CommandAck) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandAck.Merge(dst, src)
+func (m *CommandAck) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAck.Merge(m, src)
 }
 func (m *CommandAck) XXX_Size() int {
 	return xxx_messageInfo_CommandAck.Size(m)
@@ -2508,6 +2941,9 @@ func (m *CommandAck) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_CommandAck proto.InternalMessageInfo
 
+const Default_CommandAck_TxnidLeastBits uint64 = 0
+const Default_CommandAck_TxnidMostBits uint64 = 0
+
 func (m *CommandAck) GetConsumerId() uint64 {
 	if m != nil && m.ConsumerId != nil {
 		return *m.ConsumerId
@@ -2543,61 +2979,150 @@ func (m *CommandAck) GetProperties() []*KeyLongValue {
 	return nil
 }
 
-// changes on active consumer
-type CommandActiveConsumerChange struct {
-	ConsumerId           *uint64  `protobuf:"varint,1,req,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"`
-	IsActive             *bool    `protobuf:"varint,2,opt,name=is_active,json=isActive,def=0" json:"is_active,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+func (m *CommandAck) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandAck_TxnidLeastBits
 }
 
-func (m *CommandActiveConsumerChange) Reset()         { *m = CommandActiveConsumerChange{} }
-func (m *CommandActiveConsumerChange) String() string { return proto.CompactTextString(m) }
-func (*CommandActiveConsumerChange) ProtoMessage()    {}
-func (*CommandActiveConsumerChange) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{23}
+func (m *CommandAck) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandAck_TxnidMostBits
 }
-func (m *CommandActiveConsumerChange) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CommandActiveConsumerChange.Unmarshal(m, b)
+
+type CommandAckResponse struct {
+	ConsumerId           *uint64      `protobuf:"varint,1,req,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"`
+	TxnidLeastBits       *uint64      `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64      `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Error                *ServerError `protobuf:"varint,4,opt,name=error,enum=pulsar.proto.ServerError" json:"error,omitempty"`
+	Message              *string      `protobuf:"bytes,5,opt,name=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
-func (m *CommandActiveConsumerChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CommandActiveConsumerChange.Marshal(b, m, deterministic)
+
+func (m *CommandAckResponse) Reset()         { *m = CommandAckResponse{} }
+func (m *CommandAckResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandAckResponse) ProtoMessage()    {}
+func (*CommandAckResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{25}
 }
-func (dst *CommandActiveConsumerChange) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandActiveConsumerChange.Merge(dst, src)
+
+func (m *CommandAckResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandAckResponse.Unmarshal(m, b)
 }
-func (m *CommandActiveConsumerChange) XXX_Size() int {
-	return xxx_messageInfo_CommandActiveConsumerChange.Size(m)
+func (m *CommandAckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandAckResponse.Marshal(b, m, deterministic)
 }
-func (m *CommandActiveConsumerChange) XXX_DiscardUnknown() {
-	xxx_messageInfo_CommandActiveConsumerChange.DiscardUnknown(m)
+func (m *CommandAckResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAckResponse.Merge(m, src)
+}
+func (m *CommandAckResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandAckResponse.Size(m)
+}
+func (m *CommandAckResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandAckResponse.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_CommandActiveConsumerChange proto.InternalMessageInfo
+var xxx_messageInfo_CommandAckResponse proto.InternalMessageInfo
 
-const Default_CommandActiveConsumerChange_IsActive bool = false
+const Default_CommandAckResponse_TxnidLeastBits uint64 = 0
+const Default_CommandAckResponse_TxnidMostBits uint64 = 0
 
-func (m *CommandActiveConsumerChange) GetConsumerId() uint64 {
+func (m *CommandAckResponse) GetConsumerId() uint64 {
 	if m != nil && m.ConsumerId != nil {
 		return *m.ConsumerId
 	}
 	return 0
 }
 
-func (m *CommandActiveConsumerChange) GetIsActive() bool {
-	if m != nil && m.IsActive != nil {
-		return *m.IsActive
+func (m *CommandAckResponse) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
 	}
-	return Default_CommandActiveConsumerChange_IsActive
+	return Default_CommandAckResponse_TxnidLeastBits
 }
 
-type CommandFlow struct {
-	ConsumerId *uint64 `protobuf:"varint,1,req,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"`
-	// Max number of messages to prefetch, in addition
-	// of any number previously specified
-	MessagePermits       *uint32  `protobuf:"varint,2,req,name=messagePermits" json:"messagePermits,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+func (m *CommandAckResponse) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandAckResponse_TxnidMostBits
+}
+
+func (m *CommandAckResponse) GetError() ServerError {
+	if m != nil && m.Error != nil {
+		return *m.Error
+	}
+	return ServerError_UnknownError
+}
+
+func (m *CommandAckResponse) GetMessage() string {
+	if m != nil && m.Message != nil {
+		return *m.Message
+	}
+	return ""
+}
+
+// changes on active consumer
+type CommandActiveConsumerChange struct {
+	ConsumerId           *uint64  `protobuf:"varint,1,req,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"`
+	IsActive             *bool    `protobuf:"varint,2,opt,name=is_active,json=isActive,def=0" json:"is_active,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *CommandActiveConsumerChange) Reset()         { *m = CommandActiveConsumerChange{} }
+func (m *CommandActiveConsumerChange) String() string { return proto.CompactTextString(m) }
+func (*CommandActiveConsumerChange) ProtoMessage()    {}
+func (*CommandActiveConsumerChange) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{26}
+}
+
+func (m *CommandActiveConsumerChange) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandActiveConsumerChange.Unmarshal(m, b)
+}
+func (m *CommandActiveConsumerChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandActiveConsumerChange.Marshal(b, m, deterministic)
+}
+func (m *CommandActiveConsumerChange) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandActiveConsumerChange.Merge(m, src)
+}
+func (m *CommandActiveConsumerChange) XXX_Size() int {
+	return xxx_messageInfo_CommandActiveConsumerChange.Size(m)
+}
+func (m *CommandActiveConsumerChange) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandActiveConsumerChange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandActiveConsumerChange proto.InternalMessageInfo
+
+const Default_CommandActiveConsumerChange_IsActive bool = false
+
+func (m *CommandActiveConsumerChange) GetConsumerId() uint64 {
+	if m != nil && m.ConsumerId != nil {
+		return *m.ConsumerId
+	}
+	return 0
+}
+
+func (m *CommandActiveConsumerChange) GetIsActive() bool {
+	if m != nil && m.IsActive != nil {
+		return *m.IsActive
+	}
+	return Default_CommandActiveConsumerChange_IsActive
+}
+
+type CommandFlow struct {
+	ConsumerId *uint64 `protobuf:"varint,1,req,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"`
+	// Max number of messages to prefetch, in addition
+	// of any number previously specified
+	MessagePermits       *uint32  `protobuf:"varint,2,req,name=messagePermits" json:"messagePermits,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
 }
@@ -2606,16 +3131,17 @@ func (m *CommandFlow) Reset()         { *m = CommandFlow{} }
 func (m *CommandFlow) String() string { return proto.CompactTextString(m) }
 func (*CommandFlow) ProtoMessage()    {}
 func (*CommandFlow) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{24}
+	return fileDescriptor_39529ba7ad9caeb8, []int{27}
 }
+
 func (m *CommandFlow) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandFlow.Unmarshal(m, b)
 }
 func (m *CommandFlow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandFlow.Marshal(b, m, deterministic)
 }
-func (dst *CommandFlow) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandFlow.Merge(dst, src)
+func (m *CommandFlow) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandFlow.Merge(m, src)
 }
 func (m *CommandFlow) XXX_Size() int {
 	return xxx_messageInfo_CommandFlow.Size(m)
@@ -2652,16 +3178,17 @@ func (m *CommandUnsubscribe) Reset()         { *m = CommandUnsubscribe{} }
 func (m *CommandUnsubscribe) String() string { return proto.CompactTextString(m) }
 func (*CommandUnsubscribe) ProtoMessage()    {}
 func (*CommandUnsubscribe) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{25}
+	return fileDescriptor_39529ba7ad9caeb8, []int{28}
 }
+
 func (m *CommandUnsubscribe) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandUnsubscribe.Unmarshal(m, b)
 }
 func (m *CommandUnsubscribe) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandUnsubscribe.Marshal(b, m, deterministic)
 }
-func (dst *CommandUnsubscribe) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandUnsubscribe.Merge(dst, src)
+func (m *CommandUnsubscribe) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandUnsubscribe.Merge(m, src)
 }
 func (m *CommandUnsubscribe) XXX_Size() int {
 	return xxx_messageInfo_CommandUnsubscribe.Size(m)
@@ -2701,16 +3228,17 @@ func (m *CommandSeek) Reset()         { *m = CommandSeek{} }
 func (m *CommandSeek) String() string { return proto.CompactTextString(m) }
 func (*CommandSeek) ProtoMessage()    {}
 func (*CommandSeek) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{26}
+	return fileDescriptor_39529ba7ad9caeb8, []int{29}
 }
+
 func (m *CommandSeek) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandSeek.Unmarshal(m, b)
 }
 func (m *CommandSeek) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandSeek.Marshal(b, m, deterministic)
 }
-func (dst *CommandSeek) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandSeek.Merge(dst, src)
+func (m *CommandSeek) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandSeek.Merge(m, src)
 }
 func (m *CommandSeek) XXX_Size() int {
 	return xxx_messageInfo_CommandSeek.Size(m)
@@ -2763,16 +3291,17 @@ func (m *CommandReachedEndOfTopic) Reset()         { *m = CommandReachedEndOfTop
 func (m *CommandReachedEndOfTopic) String() string { return proto.CompactTextString(m) }
 func (*CommandReachedEndOfTopic) ProtoMessage()    {}
 func (*CommandReachedEndOfTopic) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{27}
+	return fileDescriptor_39529ba7ad9caeb8, []int{30}
 }
+
 func (m *CommandReachedEndOfTopic) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandReachedEndOfTopic.Unmarshal(m, b)
 }
 func (m *CommandReachedEndOfTopic) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandReachedEndOfTopic.Marshal(b, m, deterministic)
 }
-func (dst *CommandReachedEndOfTopic) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandReachedEndOfTopic.Merge(dst, src)
+func (m *CommandReachedEndOfTopic) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandReachedEndOfTopic.Merge(m, src)
 }
 func (m *CommandReachedEndOfTopic) XXX_Size() int {
 	return xxx_messageInfo_CommandReachedEndOfTopic.Size(m)
@@ -2802,16 +3331,17 @@ func (m *CommandCloseProducer) Reset()         { *m = CommandCloseProducer{} }
 func (m *CommandCloseProducer) String() string { return proto.CompactTextString(m) }
 func (*CommandCloseProducer) ProtoMessage()    {}
 func (*CommandCloseProducer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{28}
+	return fileDescriptor_39529ba7ad9caeb8, []int{31}
 }
+
 func (m *CommandCloseProducer) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandCloseProducer.Unmarshal(m, b)
 }
 func (m *CommandCloseProducer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandCloseProducer.Marshal(b, m, deterministic)
 }
-func (dst *CommandCloseProducer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandCloseProducer.Merge(dst, src)
+func (m *CommandCloseProducer) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandCloseProducer.Merge(m, src)
 }
 func (m *CommandCloseProducer) XXX_Size() int {
 	return xxx_messageInfo_CommandCloseProducer.Size(m)
@@ -2848,16 +3378,17 @@ func (m *CommandCloseConsumer) Reset()         { *m = CommandCloseConsumer{} }
 func (m *CommandCloseConsumer) String() string { return proto.CompactTextString(m) }
 func (*CommandCloseConsumer) ProtoMessage()    {}
 func (*CommandCloseConsumer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{29}
+	return fileDescriptor_39529ba7ad9caeb8, []int{32}
 }
+
 func (m *CommandCloseConsumer) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandCloseConsumer.Unmarshal(m, b)
 }
 func (m *CommandCloseConsumer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandCloseConsumer.Marshal(b, m, deterministic)
 }
-func (dst *CommandCloseConsumer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandCloseConsumer.Merge(dst, src)
+func (m *CommandCloseConsumer) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandCloseConsumer.Merge(m, src)
 }
 func (m *CommandCloseConsumer) XXX_Size() int {
 	return xxx_messageInfo_CommandCloseConsumer.Size(m)
@@ -2896,16 +3427,17 @@ func (m *CommandRedeliverUnacknowledgedMessages) Reset() {
 func (m *CommandRedeliverUnacknowledgedMessages) String() string { return proto.CompactTextString(m) }
 func (*CommandRedeliverUnacknowledgedMessages) ProtoMessage()    {}
 func (*CommandRedeliverUnacknowledgedMessages) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{30}
+	return fileDescriptor_39529ba7ad9caeb8, []int{33}
 }
+
 func (m *CommandRedeliverUnacknowledgedMessages) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandRedeliverUnacknowledgedMessages.Unmarshal(m, b)
 }
 func (m *CommandRedeliverUnacknowledgedMessages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandRedeliverUnacknowledgedMessages.Marshal(b, m, deterministic)
 }
-func (dst *CommandRedeliverUnacknowledgedMessages) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandRedeliverUnacknowledgedMessages.Merge(dst, src)
+func (m *CommandRedeliverUnacknowledgedMessages) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandRedeliverUnacknowledgedMessages.Merge(m, src)
 }
 func (m *CommandRedeliverUnacknowledgedMessages) XXX_Size() int {
 	return xxx_messageInfo_CommandRedeliverUnacknowledgedMessages.Size(m)
@@ -2942,16 +3474,17 @@ func (m *CommandSuccess) Reset()         { *m = CommandSuccess{} }
 func (m *CommandSuccess) String() string { return proto.CompactTextString(m) }
 func (*CommandSuccess) ProtoMessage()    {}
 func (*CommandSuccess) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{31}
+	return fileDescriptor_39529ba7ad9caeb8, []int{34}
 }
+
 func (m *CommandSuccess) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandSuccess.Unmarshal(m, b)
 }
 func (m *CommandSuccess) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandSuccess.Marshal(b, m, deterministic)
 }
-func (dst *CommandSuccess) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandSuccess.Merge(dst, src)
+func (m *CommandSuccess) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandSuccess.Merge(m, src)
 }
 func (m *CommandSuccess) XXX_Size() int {
 	return xxx_messageInfo_CommandSuccess.Size(m)
@@ -2976,7 +3509,7 @@ func (m *CommandSuccess) GetSchema() *Schema {
 	return nil
 }
 
-// / Response from CommandProducer
+/// Response from CommandProducer
 type CommandProducerSuccess struct {
 	RequestId    *uint64 `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
 	ProducerName *string `protobuf:"bytes,2,req,name=producer_name,json=producerName" json:"producer_name,omitempty"`
@@ -2993,16 +3526,17 @@ func (m *CommandProducerSuccess) Reset()         { *m = CommandProducerSuccess{}
 func (m *CommandProducerSuccess) String() string { return proto.CompactTextString(m) }
 func (*CommandProducerSuccess) ProtoMessage()    {}
 func (*CommandProducerSuccess) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{32}
+	return fileDescriptor_39529ba7ad9caeb8, []int{35}
 }
+
 func (m *CommandProducerSuccess) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandProducerSuccess.Unmarshal(m, b)
 }
 func (m *CommandProducerSuccess) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandProducerSuccess.Marshal(b, m, deterministic)
 }
-func (dst *CommandProducerSuccess) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandProducerSuccess.Merge(dst, src)
+func (m *CommandProducerSuccess) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandProducerSuccess.Merge(m, src)
 }
 func (m *CommandProducerSuccess) XXX_Size() int {
 	return xxx_messageInfo_CommandProducerSuccess.Size(m)
@@ -3056,16 +3590,17 @@ func (m *CommandError) Reset()         { *m = CommandError{} }
 func (m *CommandError) String() string { return proto.CompactTextString(m) }
 func (*CommandError) ProtoMessage()    {}
 func (*CommandError) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{33}
+	return fileDescriptor_39529ba7ad9caeb8, []int{36}
 }
+
 func (m *CommandError) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandError.Unmarshal(m, b)
 }
 func (m *CommandError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandError.Marshal(b, m, deterministic)
 }
-func (dst *CommandError) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandError.Merge(dst, src)
+func (m *CommandError) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandError.Merge(m, src)
 }
 func (m *CommandError) XXX_Size() int {
 	return xxx_messageInfo_CommandError.Size(m)
@@ -3110,16 +3645,17 @@ func (m *CommandPing) Reset()         { *m = CommandPing{} }
 func (m *CommandPing) String() string { return proto.CompactTextString(m) }
 func (*CommandPing) ProtoMessage()    {}
 func (*CommandPing) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{34}
+	return fileDescriptor_39529ba7ad9caeb8, []int{37}
 }
+
 func (m *CommandPing) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandPing.Unmarshal(m, b)
 }
 func (m *CommandPing) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandPing.Marshal(b, m, deterministic)
 }
-func (dst *CommandPing) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandPing.Merge(dst, src)
+func (m *CommandPing) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandPing.Merge(m, src)
 }
 func (m *CommandPing) XXX_Size() int {
 	return xxx_messageInfo_CommandPing.Size(m)
@@ -3140,16 +3676,17 @@ func (m *CommandPong) Reset()         { *m = CommandPong{} }
 func (m *CommandPong) String() string { return proto.CompactTextString(m) }
 func (*CommandPong) ProtoMessage()    {}
 func (*CommandPong) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{35}
+	return fileDescriptor_39529ba7ad9caeb8, []int{38}
 }
+
 func (m *CommandPong) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandPong.Unmarshal(m, b)
 }
 func (m *CommandPong) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandPong.Marshal(b, m, deterministic)
 }
-func (dst *CommandPong) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandPong.Merge(dst, src)
+func (m *CommandPong) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandPong.Merge(m, src)
 }
 func (m *CommandPong) XXX_Size() int {
 	return xxx_messageInfo_CommandPong.Size(m)
@@ -3174,16 +3711,17 @@ func (m *CommandConsumerStats) Reset()         { *m = CommandConsumerStats{} }
 func (m *CommandConsumerStats) String() string { return proto.CompactTextString(m) }
 func (*CommandConsumerStats) ProtoMessage()    {}
 func (*CommandConsumerStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{36}
+	return fileDescriptor_39529ba7ad9caeb8, []int{39}
 }
+
 func (m *CommandConsumerStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandConsumerStats.Unmarshal(m, b)
 }
 func (m *CommandConsumerStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandConsumerStats.Marshal(b, m, deterministic)
 }
-func (dst *CommandConsumerStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandConsumerStats.Merge(dst, src)
+func (m *CommandConsumerStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandConsumerStats.Merge(m, src)
 }
 func (m *CommandConsumerStats) XXX_Size() int {
 	return xxx_messageInfo_CommandConsumerStats.Size(m)
@@ -3212,29 +3750,29 @@ type CommandConsumerStatsResponse struct {
 	RequestId    *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
 	ErrorCode    *ServerError `protobuf:"varint,2,opt,name=error_code,json=errorCode,enum=pulsar.proto.ServerError" json:"error_code,omitempty"`
 	ErrorMessage *string      `protobuf:"bytes,3,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"`
-	// / Total rate of messages delivered to the consumer. msg/s
+	/// Total rate of messages delivered to the consumer. msg/s
 	MsgRateOut *float64 `protobuf:"fixed64,4,opt,name=msgRateOut" json:"msgRateOut,omitempty"`
-	// / Total throughput delivered to the consumer. bytes/s
+	/// Total throughput delivered to the consumer. bytes/s
 	MsgThroughputOut *float64 `protobuf:"fixed64,5,opt,name=msgThroughputOut" json:"msgThroughputOut,omitempty"`
-	// / Total rate of messages redelivered by this consumer. msg/s
+	/// Total rate of messages redelivered by this consumer. msg/s
 	MsgRateRedeliver *float64 `protobuf:"fixed64,6,opt,name=msgRateRedeliver" json:"msgRateRedeliver,omitempty"`
-	// / Name of the consumer
+	/// Name of the consumer
 	ConsumerName *string `protobuf:"bytes,7,opt,name=consumerName" json:"consumerName,omitempty"`
-	// / Number of available message permits for the consumer
+	/// Number of available message permits for the consumer
 	AvailablePermits *uint64 `protobuf:"varint,8,opt,name=availablePermits" json:"availablePermits,omitempty"`
-	// / Number of unacknowledged messages for the consumer
+	/// Number of unacknowledged messages for the consumer
 	UnackedMessages *uint64 `protobuf:"varint,9,opt,name=unackedMessages" json:"unackedMessages,omitempty"`
-	// / Flag to verify if consumer is blocked due to reaching threshold of unacked messages
+	/// Flag to verify if consumer is blocked due to reaching threshold of unacked messages
 	BlockedConsumerOnUnackedMsgs *bool `protobuf:"varint,10,opt,name=blockedConsumerOnUnackedMsgs" json:"blockedConsumerOnUnackedMsgs,omitempty"`
-	// / Address of this consumer
+	/// Address of this consumer
 	Address *string `protobuf:"bytes,11,opt,name=address" json:"address,omitempty"`
-	// / Timestamp of connection
+	/// Timestamp of connection
 	ConnectedSince *string `protobuf:"bytes,12,opt,name=connectedSince" json:"connectedSince,omitempty"`
-	// / Whether this subscription is Exclusive or Shared or Failover
+	/// Whether this subscription is Exclusive or Shared or Failover
 	Type *string `protobuf:"bytes,13,opt,name=type" json:"type,omitempty"`
-	// / Total rate of messages expired on this subscription. msg/s
+	/// Total rate of messages expired on this subscription. msg/s
 	MsgRateExpired *float64 `protobuf:"fixed64,14,opt,name=msgRateExpired" json:"msgRateExpired,omitempty"`
-	// / Number of messages in the subscription backlog
+	/// Number of messages in the subscription backlog
 	MsgBacklog           *uint64  `protobuf:"varint,15,opt,name=msgBacklog" json:"msgBacklog,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -3245,16 +3783,17 @@ func (m *CommandConsumerStatsResponse) Reset()         { *m = CommandConsumerSta
 func (m *CommandConsumerStatsResponse) String() string { return proto.CompactTextString(m) }
 func (*CommandConsumerStatsResponse) ProtoMessage()    {}
 func (*CommandConsumerStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{37}
+	return fileDescriptor_39529ba7ad9caeb8, []int{40}
 }
+
 func (m *CommandConsumerStatsResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandConsumerStatsResponse.Unmarshal(m, b)
 }
 func (m *CommandConsumerStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandConsumerStatsResponse.Marshal(b, m, deterministic)
 }
-func (dst *CommandConsumerStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandConsumerStatsResponse.Merge(dst, src)
+func (m *CommandConsumerStatsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandConsumerStatsResponse.Merge(m, src)
 }
 func (m *CommandConsumerStatsResponse) XXX_Size() int {
 	return xxx_messageInfo_CommandConsumerStatsResponse.Size(m)
@@ -3382,16 +3921,17 @@ func (m *CommandGetLastMessageId) Reset()         { *m = CommandGetLastMessageId
 func (m *CommandGetLastMessageId) String() string { return proto.CompactTextString(m) }
 func (*CommandGetLastMessageId) ProtoMessage()    {}
 func (*CommandGetLastMessageId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{38}
+	return fileDescriptor_39529ba7ad9caeb8, []int{41}
 }
+
 func (m *CommandGetLastMessageId) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandGetLastMessageId.Unmarshal(m, b)
 }
 func (m *CommandGetLastMessageId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandGetLastMessageId.Marshal(b, m, deterministic)
 }
-func (dst *CommandGetLastMessageId) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandGetLastMessageId.Merge(dst, src)
+func (m *CommandGetLastMessageId) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetLastMessageId.Merge(m, src)
 }
 func (m *CommandGetLastMessageId) XXX_Size() int {
 	return xxx_messageInfo_CommandGetLastMessageId.Size(m)
@@ -3428,16 +3968,17 @@ func (m *CommandGetLastMessageIdResponse) Reset()         { *m = CommandGetLastM
 func (m *CommandGetLastMessageIdResponse) String() string { return proto.CompactTextString(m) }
 func (*CommandGetLastMessageIdResponse) ProtoMessage()    {}
 func (*CommandGetLastMessageIdResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{39}
+	return fileDescriptor_39529ba7ad9caeb8, []int{42}
 }
+
 func (m *CommandGetLastMessageIdResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandGetLastMessageIdResponse.Unmarshal(m, b)
 }
 func (m *CommandGetLastMessageIdResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandGetLastMessageIdResponse.Marshal(b, m, deterministic)
 }
-func (dst *CommandGetLastMessageIdResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandGetLastMessageIdResponse.Merge(dst, src)
+func (m *CommandGetLastMessageIdResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetLastMessageIdResponse.Merge(m, src)
 }
 func (m *CommandGetLastMessageIdResponse) XXX_Size() int {
 	return xxx_messageInfo_CommandGetLastMessageIdResponse.Size(m)
@@ -3475,16 +4016,17 @@ func (m *CommandGetTopicsOfNamespace) Reset()         { *m = CommandGetTopicsOfN
 func (m *CommandGetTopicsOfNamespace) String() string { return proto.CompactTextString(m) }
 func (*CommandGetTopicsOfNamespace) ProtoMessage()    {}
 func (*CommandGetTopicsOfNamespace) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{40}
+	return fileDescriptor_39529ba7ad9caeb8, []int{43}
 }
+
 func (m *CommandGetTopicsOfNamespace) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandGetTopicsOfNamespace.Unmarshal(m, b)
 }
 func (m *CommandGetTopicsOfNamespace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandGetTopicsOfNamespace.Marshal(b, m, deterministic)
 }
-func (dst *CommandGetTopicsOfNamespace) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandGetTopicsOfNamespace.Merge(dst, src)
+func (m *CommandGetTopicsOfNamespace) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetTopicsOfNamespace.Merge(m, src)
 }
 func (m *CommandGetTopicsOfNamespace) XXX_Size() int {
 	return xxx_messageInfo_CommandGetTopicsOfNamespace.Size(m)
@@ -3530,16 +4072,17 @@ func (m *CommandGetTopicsOfNamespaceResponse) Reset()         { *m = CommandGetT
 func (m *CommandGetTopicsOfNamespaceResponse) String() string { return proto.CompactTextString(m) }
 func (*CommandGetTopicsOfNamespaceResponse) ProtoMessage()    {}
 func (*CommandGetTopicsOfNamespaceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{41}
+	return fileDescriptor_39529ba7ad9caeb8, []int{44}
 }
+
 func (m *CommandGetTopicsOfNamespaceResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandGetTopicsOfNamespaceResponse.Unmarshal(m, b)
 }
 func (m *CommandGetTopicsOfNamespaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandGetTopicsOfNamespaceResponse.Marshal(b, m, deterministic)
 }
-func (dst *CommandGetTopicsOfNamespaceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandGetTopicsOfNamespaceResponse.Merge(dst, src)
+func (m *CommandGetTopicsOfNamespaceResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetTopicsOfNamespaceResponse.Merge(m, src)
 }
 func (m *CommandGetTopicsOfNamespaceResponse) XXX_Size() int {
 	return xxx_messageInfo_CommandGetTopicsOfNamespaceResponse.Size(m)
@@ -3577,16 +4120,17 @@ func (m *CommandGetSchema) Reset()         { *m = CommandGetSchema{} }
 func (m *CommandGetSchema) String() string { return proto.CompactTextString(m) }
 func (*CommandGetSchema) ProtoMessage()    {}
 func (*CommandGetSchema) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{42}
+	return fileDescriptor_39529ba7ad9caeb8, []int{45}
 }
+
 func (m *CommandGetSchema) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandGetSchema.Unmarshal(m, b)
 }
 func (m *CommandGetSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandGetSchema.Marshal(b, m, deterministic)
 }
-func (dst *CommandGetSchema) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandGetSchema.Merge(dst, src)
+func (m *CommandGetSchema) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetSchema.Merge(m, src)
 }
 func (m *CommandGetSchema) XXX_Size() int {
 	return xxx_messageInfo_CommandGetSchema.Size(m)
@@ -3633,16 +4177,17 @@ func (m *CommandGetSchemaResponse) Reset()         { *m = CommandGetSchemaRespon
 func (m *CommandGetSchemaResponse) String() string { return proto.CompactTextString(m) }
 func (*CommandGetSchemaResponse) ProtoMessage()    {}
 func (*CommandGetSchemaResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{43}
+	return fileDescriptor_39529ba7ad9caeb8, []int{46}
 }
+
 func (m *CommandGetSchemaResponse) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CommandGetSchemaResponse.Unmarshal(m, b)
 }
 func (m *CommandGetSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CommandGetSchemaResponse.Marshal(b, m, deterministic)
 }
-func (dst *CommandGetSchemaResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CommandGetSchemaResponse.Merge(dst, src)
+func (m *CommandGetSchemaResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetSchemaResponse.Merge(m, src)
 }
 func (m *CommandGetSchemaResponse) XXX_Size() int {
 	return xxx_messageInfo_CommandGetSchemaResponse.Size(m)
@@ -3688,188 +4233,1209 @@ func (m *CommandGetSchemaResponse) GetSchemaVersion() []byte {
 	return nil
 }
 
-type BaseCommand struct {
-	Type                            *BaseCommand_Type                        `protobuf:"varint,1,req,name=type,enum=pulsar.proto.BaseCommand_Type" json:"type,omitempty"`
-	Connect                         *CommandConnect                          `protobuf:"bytes,2,opt,name=connect" json:"connect,omitempty"`
-	Connected                       *CommandConnected                        `protobuf:"bytes,3,opt,name=connected" json:"connected,omitempty"`
-	Subscribe                       *CommandSubscribe                        `protobuf:"bytes,4,opt,name=subscribe" json:"subscribe,omitempty"`
-	Producer                        *CommandProducer                         `protobuf:"bytes,5,opt,name=producer" json:"producer,omitempty"`
-	Send                            *CommandSend                             `protobuf:"bytes,6,opt,name=send" json:"send,omitempty"`
-	SendReceipt                     *CommandSendReceipt                      `protobuf:"bytes,7,opt,name=send_receipt,json=sendReceipt" json:"send_receipt,omitempty"`
-	SendError                       *CommandSendError                        `protobuf:"bytes,8,opt,name=send_error,json=sendError" json:"send_error,omitempty"`
-	Message                         *CommandMessage                          `protobuf:"bytes,9,opt,name=message" json:"message,omitempty"`
-	Ack                             *CommandAck                              `protobuf:"bytes,10,opt,name=ack" json:"ack,omitempty"`
-	Flow                            *CommandFlow                             `protobuf:"bytes,11,opt,name=flow" json:"flow,omitempty"`
-	Unsubscribe                     *CommandUnsubscribe                      `protobuf:"bytes,12,opt,name=unsubscribe" json:"unsubscribe,omitempty"`
-	Success                         *CommandSuccess                          `protobuf:"bytes,13,opt,name=success" json:"success,omitempty"`
-	Error                           *CommandError                            `protobuf:"bytes,14,opt,name=error" json:"error,omitempty"`
-	CloseProducer                   *CommandCloseProducer                    `protobuf:"bytes,15,opt,name=close_producer,json=closeProducer" json:"close_producer,omitempty"`
-	CloseConsumer                   *CommandCloseConsumer                    `protobuf:"bytes,16,opt,name=close_consumer,json=closeConsumer" json:"close_consumer,omitempty"`
-	ProducerSuccess                 *CommandProducerSuccess                  `protobuf:"bytes,17,opt,name=producer_success,json=producerSuccess" json:"producer_success,omitempty"`
-	Ping                            *CommandPing                             `protobuf:"bytes,18,opt,name=ping" json:"ping,omitempty"`
-	Pong                            *CommandPong                             `protobuf:"bytes,19,opt,name=pong" json:"pong,omitempty"`
-	RedeliverUnacknowledgedMessages *CommandRedeliverUnacknowledgedMessages  `protobuf:"bytes,20,opt,name=redeliverUnacknowledgedMessages" json:"redeliverUnacknowledgedMessages,omitempty"`
-	PartitionMetadata               *CommandPartitionedTopicMetadata         `protobuf:"bytes,21,opt,name=partitionMetadata" json:"partitionMetadata,omitempty"`
-	PartitionMetadataResponse       *CommandPartitionedTopicMetadataResponse `protobuf:"bytes,22,opt,name=partitionMetadataResponse" json:"partitionMetadataResponse,omitempty"`
-	LookupTopic                     *CommandLookupTopic                      `protobuf:"bytes,23,opt,name=lookupTopic" json:"lookupTopic,omitempty"`
-	LookupTopicResponse             *CommandLookupTopicResponse              `protobuf:"bytes,24,opt,name=lookupTopicResponse" json:"lookupTopicResponse,omitempty"`
-	ConsumerStats                   *CommandConsumerStats                    `protobuf:"bytes,25,opt,name=consumerStats" json:"consumerStats,omitempty"`
-	ConsumerStatsResponse           *CommandConsumerStatsResponse            `protobuf:"bytes,26,opt,name=consumerStatsResponse" json:"consumerStatsResponse,omitempty"`
-	ReachedEndOfTopic               *CommandReachedEndOfTopic                `protobuf:"bytes,27,opt,name=reachedEndOfTopic" json:"reachedEndOfTopic,omitempty"`
-	Seek                            *CommandSeek                             `protobuf:"bytes,28,opt,name=seek" json:"seek,omitempty"`
-	GetLastMessageId                *CommandGetLastMessageId                 `protobuf:"bytes,29,opt,name=getLastMessageId" json:"getLastMessageId,omitempty"`
-	GetLastMessageIdResponse        *CommandGetLastMessageIdResponse         `protobuf:"bytes,30,opt,name=getLastMessageIdResponse" json:"getLastMessageIdResponse,omitempty"`
-	ActiveConsumerChange            *CommandActiveConsumerChange             `protobuf:"bytes,31,opt,name=active_consumer_change,json=activeConsumerChange" json:"active_consumer_change,omitempty"`
-	GetTopicsOfNamespace            *CommandGetTopicsOfNamespace             `protobuf:"bytes,32,opt,name=getTopicsOfNamespace" json:"getTopicsOfNamespace,omitempty"`
-	GetTopicsOfNamespaceResponse    *CommandGetTopicsOfNamespaceResponse     `protobuf:"bytes,33,opt,name=getTopicsOfNamespaceResponse" json:"getTopicsOfNamespaceResponse,omitempty"`
-	GetSchema                       *CommandGetSchema                        `protobuf:"bytes,34,opt,name=getSchema" json:"getSchema,omitempty"`
-	GetSchemaResponse               *CommandGetSchemaResponse                `protobuf:"bytes,35,opt,name=getSchemaResponse" json:"getSchemaResponse,omitempty"`
-	AuthChallenge                   *CommandAuthChallenge                    `protobuf:"bytes,36,opt,name=authChallenge" json:"authChallenge,omitempty"`
-	AuthResponse                    *CommandAuthResponse                     `protobuf:"bytes,37,opt,name=authResponse" json:"authResponse,omitempty"`
-	XXX_NoUnkeyedLiteral            struct{}                                 `json:"-"`
-	XXX_unrecognized                []byte                                   `json:"-"`
-	XXX_sizecache                   int32                                    `json:"-"`
+type CommandGetOrCreateSchema struct {
+	RequestId            *uint64  `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	Topic                *string  `protobuf:"bytes,2,req,name=topic" json:"topic,omitempty"`
+	Schema               *Schema  `protobuf:"bytes,3,req,name=schema" json:"schema,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *BaseCommand) Reset()         { *m = BaseCommand{} }
-func (m *BaseCommand) String() string { return proto.CompactTextString(m) }
-func (*BaseCommand) ProtoMessage()    {}
-func (*BaseCommand) Descriptor() ([]byte, []int) {
-	return fileDescriptor_PulsarApi_976de857822f53b5, []int{44}
+func (m *CommandGetOrCreateSchema) Reset()         { *m = CommandGetOrCreateSchema{} }
+func (m *CommandGetOrCreateSchema) String() string { return proto.CompactTextString(m) }
+func (*CommandGetOrCreateSchema) ProtoMessage()    {}
+func (*CommandGetOrCreateSchema) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{47}
 }
-func (m *BaseCommand) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BaseCommand.Unmarshal(m, b)
+
+func (m *CommandGetOrCreateSchema) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandGetOrCreateSchema.Unmarshal(m, b)
 }
-func (m *BaseCommand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BaseCommand.Marshal(b, m, deterministic)
+func (m *CommandGetOrCreateSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandGetOrCreateSchema.Marshal(b, m, deterministic)
 }
-func (dst *BaseCommand) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BaseCommand.Merge(dst, src)
+func (m *CommandGetOrCreateSchema) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetOrCreateSchema.Merge(m, src)
 }
-func (m *BaseCommand) XXX_Size() int {
-	return xxx_messageInfo_BaseCommand.Size(m)
+func (m *CommandGetOrCreateSchema) XXX_Size() int {
+	return xxx_messageInfo_CommandGetOrCreateSchema.Size(m)
 }
-func (m *BaseCommand) XXX_DiscardUnknown() {
-	xxx_messageInfo_BaseCommand.DiscardUnknown(m)
+func (m *CommandGetOrCreateSchema) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandGetOrCreateSchema.DiscardUnknown(m)
 }
 
-var xxx_messageInfo_BaseCommand proto.InternalMessageInfo
+var xxx_messageInfo_CommandGetOrCreateSchema proto.InternalMessageInfo
 
-func (m *BaseCommand) GetType() BaseCommand_Type {
-	if m != nil && m.Type != nil {
-		return *m.Type
+func (m *CommandGetOrCreateSchema) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
 	}
-	return BaseCommand_CONNECT
+	return 0
 }
 
-func (m *BaseCommand) GetConnect() *CommandConnect {
-	if m != nil {
-		return m.Connect
+func (m *CommandGetOrCreateSchema) GetTopic() string {
+	if m != nil && m.Topic != nil {
+		return *m.Topic
 	}
-	return nil
+	return ""
 }
 
-func (m *BaseCommand) GetConnected() *CommandConnected {
+func (m *CommandGetOrCreateSchema) GetSchema() *Schema {
 	if m != nil {
-		return m.Connected
+		return m.Schema
 	}
 	return nil
 }
 
-func (m *BaseCommand) GetSubscribe() *CommandSubscribe {
-	if m != nil {
-		return m.Subscribe
-	}
-	return nil
+type CommandGetOrCreateSchemaResponse struct {
+	RequestId            *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	ErrorCode            *ServerError `protobuf:"varint,2,opt,name=error_code,json=errorCode,enum=pulsar.proto.ServerError" json:"error_code,omitempty"`
+	ErrorMessage         *string      `protobuf:"bytes,3,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"`
+	SchemaVersion        []byte       `protobuf:"bytes,4,opt,name=schema_version,json=schemaVersion" json:"schema_version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
 
-func (m *BaseCommand) GetProducer() *CommandProducer {
-	if m != nil {
-		return m.Producer
-	}
-	return nil
+func (m *CommandGetOrCreateSchemaResponse) Reset()         { *m = CommandGetOrCreateSchemaResponse{} }
+func (m *CommandGetOrCreateSchemaResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandGetOrCreateSchemaResponse) ProtoMessage()    {}
+func (*CommandGetOrCreateSchemaResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{48}
 }
 
-func (m *BaseCommand) GetSend() *CommandSend {
-	if m != nil {
-		return m.Send
-	}
-	return nil
+func (m *CommandGetOrCreateSchemaResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandGetOrCreateSchemaResponse.Unmarshal(m, b)
 }
-
-func (m *BaseCommand) GetSendReceipt() *CommandSendReceipt {
-	if m != nil {
-		return m.SendReceipt
-	}
-	return nil
+func (m *CommandGetOrCreateSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandGetOrCreateSchemaResponse.Marshal(b, m, deterministic)
+}
+func (m *CommandGetOrCreateSchemaResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandGetOrCreateSchemaResponse.Merge(m, src)
+}
+func (m *CommandGetOrCreateSchemaResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandGetOrCreateSchemaResponse.Size(m)
+}
+func (m *CommandGetOrCreateSchemaResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandGetOrCreateSchemaResponse.DiscardUnknown(m)
 }
 
-func (m *BaseCommand) GetSendError() *CommandSendError {
-	if m != nil {
-		return m.SendError
+var xxx_messageInfo_CommandGetOrCreateSchemaResponse proto.InternalMessageInfo
+
+func (m *CommandGetOrCreateSchemaResponse) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
 	}
-	return nil
+	return 0
 }
 
-func (m *BaseCommand) GetMessage() *CommandMessage {
-	if m != nil {
-		return m.Message
+func (m *CommandGetOrCreateSchemaResponse) GetErrorCode() ServerError {
+	if m != nil && m.ErrorCode != nil {
+		return *m.ErrorCode
 	}
-	return nil
+	return ServerError_UnknownError
 }
 
-func (m *BaseCommand) GetAck() *CommandAck {
-	if m != nil {
-		return m.Ack
+func (m *CommandGetOrCreateSchemaResponse) GetErrorMessage() string {
+	if m != nil && m.ErrorMessage != nil {
+		return *m.ErrorMessage
 	}
-	return nil
+	return ""
 }
 
-func (m *BaseCommand) GetFlow() *CommandFlow {
+func (m *CommandGetOrCreateSchemaResponse) GetSchemaVersion() []byte {
 	if m != nil {
-		return m.Flow
+		return m.SchemaVersion
 	}
 	return nil
 }
 
-func (m *BaseCommand) GetUnsubscribe() *CommandUnsubscribe {
-	if m != nil {
-		return m.Unsubscribe
-	}
-	return nil
+type CommandNewTxn struct {
+	RequestId            *uint64  `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnTtlSeconds        *uint64  `protobuf:"varint,2,opt,name=txn_ttl_seconds,json=txnTtlSeconds,def=0" json:"txn_ttl_seconds,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *BaseCommand) GetSuccess() *CommandSuccess {
-	if m != nil {
-		return m.Success
-	}
-	return nil
+func (m *CommandNewTxn) Reset()         { *m = CommandNewTxn{} }
+func (m *CommandNewTxn) String() string { return proto.CompactTextString(m) }
+func (*CommandNewTxn) ProtoMessage()    {}
+func (*CommandNewTxn) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{49}
 }
 
-func (m *BaseCommand) GetError() *CommandError {
-	if m != nil {
-		return m.Error
-	}
-	return nil
+func (m *CommandNewTxn) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandNewTxn.Unmarshal(m, b)
+}
+func (m *CommandNewTxn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandNewTxn.Marshal(b, m, deterministic)
+}
+func (m *CommandNewTxn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandNewTxn.Merge(m, src)
+}
+func (m *CommandNewTxn) XXX_Size() int {
+	return xxx_messageInfo_CommandNewTxn.Size(m)
+}
+func (m *CommandNewTxn) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandNewTxn.DiscardUnknown(m)
 }
 
-func (m *BaseCommand) GetCloseProducer() *CommandCloseProducer {
-	if m != nil {
-		return m.CloseProducer
+var xxx_messageInfo_CommandNewTxn proto.InternalMessageInfo
+
+const Default_CommandNewTxn_TxnTtlSeconds uint64 = 0
+
+func (m *CommandNewTxn) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
 	}
-	return nil
+	return 0
 }
 
-func (m *BaseCommand) GetCloseConsumer() *CommandCloseConsumer {
-	if m != nil {
-		return m.CloseConsumer
+func (m *CommandNewTxn) GetTxnTtlSeconds() uint64 {
+	if m != nil && m.TxnTtlSeconds != nil {
+		return *m.TxnTtlSeconds
 	}
-	return nil
+	return Default_CommandNewTxn_TxnTtlSeconds
 }
 
-func (m *BaseCommand) GetProducerSuccess() *CommandProducerSuccess {
-	if m != nil {
-		return m.ProducerSuccess
+type CommandNewTxnResponse struct {
+	RequestId            *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64      `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64      `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Error                *ServerError `protobuf:"varint,4,opt,name=error,enum=pulsar.proto.ServerError" json:"error,omitempty"`
+	Message              *string      `protobuf:"bytes,5,opt,name=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *CommandNewTxnResponse) Reset()         { *m = CommandNewTxnResponse{} }
+func (m *CommandNewTxnResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandNewTxnResponse) ProtoMessage()    {}
+func (*CommandNewTxnResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{50}
+}
+
+func (m *CommandNewTxnResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandNewTxnResponse.Unmarshal(m, b)
+}
+func (m *CommandNewTxnResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandNewTxnResponse.Marshal(b, m, deterministic)
+}
+func (m *CommandNewTxnResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandNewTxnResponse.Merge(m, src)
+}
+func (m *CommandNewTxnResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandNewTxnResponse.Size(m)
+}
+func (m *CommandNewTxnResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandNewTxnResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandNewTxnResponse proto.InternalMessageInfo
+
+const Default_CommandNewTxnResponse_TxnidLeastBits uint64 = 0
+const Default_CommandNewTxnResponse_TxnidMostBits uint64 = 0
+
+func (m *CommandNewTxnResponse) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandNewTxnResponse) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandNewTxnResponse_TxnidLeastBits
+}
+
+func (m *CommandNewTxnResponse) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandNewTxnResponse_TxnidMostBits
+}
+
+func (m *CommandNewTxnResponse) GetError() ServerError {
+	if m != nil && m.Error != nil {
+		return *m.Error
+	}
+	return ServerError_UnknownError
+}
+
+func (m *CommandNewTxnResponse) GetMessage() string {
+	if m != nil && m.Message != nil {
+		return *m.Message
+	}
+	return ""
+}
+
+type CommandAddPartitionToTxn struct {
+	RequestId            *uint64  `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64  `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64  `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Partitions           []string `protobuf:"bytes,4,rep,name=partitions" json:"partitions,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *CommandAddPartitionToTxn) Reset()         { *m = CommandAddPartitionToTxn{} }
+func (m *CommandAddPartitionToTxn) String() string { return proto.CompactTextString(m) }
+func (*CommandAddPartitionToTxn) ProtoMessage()    {}
+func (*CommandAddPartitionToTxn) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{51}
+}
+
+func (m *CommandAddPartitionToTxn) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandAddPartitionToTxn.Unmarshal(m, b)
+}
+func (m *CommandAddPartitionToTxn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandAddPartitionToTxn.Marshal(b, m, deterministic)
+}
+func (m *CommandAddPartitionToTxn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAddPartitionToTxn.Merge(m, src)
+}
+func (m *CommandAddPartitionToTxn) XXX_Size() int {
+	return xxx_messageInfo_CommandAddPartitionToTxn.Size(m)
+}
+func (m *CommandAddPartitionToTxn) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandAddPartitionToTxn.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandAddPartitionToTxn proto.InternalMessageInfo
+
+const Default_CommandAddPartitionToTxn_TxnidLeastBits uint64 = 0
+const Default_CommandAddPartitionToTxn_TxnidMostBits uint64 = 0
+
+func (m *CommandAddPartitionToTxn) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandAddPartitionToTxn) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandAddPartitionToTxn_TxnidLeastBits
+}
+
+func (m *CommandAddPartitionToTxn) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandAddPartitionToTxn_TxnidMostBits
+}
+
+func (m *CommandAddPartitionToTxn) GetPartitions() []string {
+	if m != nil {
+		return m.Partitions
+	}
+	return nil
+}
+
+type CommandAddPartitionToTxnResponse struct {
+	RequestId            *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64      `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64      `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Error                *ServerError `protobuf:"varint,4,opt,name=error,enum=pulsar.proto.ServerError" json:"error,omitempty"`
+	Message              *string      `protobuf:"bytes,5,opt,name=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *CommandAddPartitionToTxnResponse) Reset()         { *m = CommandAddPartitionToTxnResponse{} }
+func (m *CommandAddPartitionToTxnResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandAddPartitionToTxnResponse) ProtoMessage()    {}
+func (*CommandAddPartitionToTxnResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{52}
+}
+
+func (m *CommandAddPartitionToTxnResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandAddPartitionToTxnResponse.Unmarshal(m, b)
+}
+func (m *CommandAddPartitionToTxnResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandAddPartitionToTxnResponse.Marshal(b, m, deterministic)
+}
+func (m *CommandAddPartitionToTxnResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAddPartitionToTxnResponse.Merge(m, src)
+}
+func (m *CommandAddPartitionToTxnResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandAddPartitionToTxnResponse.Size(m)
+}
+func (m *CommandAddPartitionToTxnResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandAddPartitionToTxnResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandAddPartitionToTxnResponse proto.InternalMessageInfo
+
+const Default_CommandAddPartitionToTxnResponse_TxnidLeastBits uint64 = 0
+const Default_CommandAddPartitionToTxnResponse_TxnidMostBits uint64 = 0
+
+func (m *CommandAddPartitionToTxnResponse) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandAddPartitionToTxnResponse) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandAddPartitionToTxnResponse_TxnidLeastBits
+}
+
+func (m *CommandAddPartitionToTxnResponse) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandAddPartitionToTxnResponse_TxnidMostBits
+}
+
+func (m *CommandAddPartitionToTxnResponse) GetError() ServerError {
+	if m != nil && m.Error != nil {
+		return *m.Error
+	}
+	return ServerError_UnknownError
+}
+
+func (m *CommandAddPartitionToTxnResponse) GetMessage() string {
+	if m != nil && m.Message != nil {
+		return *m.Message
+	}
+	return ""
+}
+
+type Subscription struct {
+	Topic                *string  `protobuf:"bytes,1,req,name=topic" json:"topic,omitempty"`
+	Subscription         *string  `protobuf:"bytes,2,req,name=subscription" json:"subscription,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Subscription) Reset()         { *m = Subscription{} }
+func (m *Subscription) String() string { return proto.CompactTextString(m) }
+func (*Subscription) ProtoMessage()    {}
+func (*Subscription) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{53}
+}
+
+func (m *Subscription) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Subscription.Unmarshal(m, b)
+}
+func (m *Subscription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Subscription.Marshal(b, m, deterministic)
+}
+func (m *Subscription) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Subscription.Merge(m, src)
+}
+func (m *Subscription) XXX_Size() int {
+	return xxx_messageInfo_Subscription.Size(m)
+}
+func (m *Subscription) XXX_DiscardUnknown() {
+	xxx_messageInfo_Subscription.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Subscription proto.InternalMessageInfo
+
+func (m *Subscription) GetTopic() string {
+	if m != nil && m.Topic != nil {
+		return *m.Topic
+	}
+	return ""
+}
+
+func (m *Subscription) GetSubscription() string {
+	if m != nil && m.Subscription != nil {
+		return *m.Subscription
+	}
+	return ""
+}
+
+type CommandAddSubscriptionToTxn struct {
+	RequestId            *uint64         `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64         `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64         `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Subscription         []*Subscription `protobuf:"bytes,4,rep,name=subscription" json:"subscription,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *CommandAddSubscriptionToTxn) Reset()         { *m = CommandAddSubscriptionToTxn{} }
+func (m *CommandAddSubscriptionToTxn) String() string { return proto.CompactTextString(m) }
+func (*CommandAddSubscriptionToTxn) ProtoMessage()    {}
+func (*CommandAddSubscriptionToTxn) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{54}
+}
+
+func (m *CommandAddSubscriptionToTxn) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandAddSubscriptionToTxn.Unmarshal(m, b)
+}
+func (m *CommandAddSubscriptionToTxn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandAddSubscriptionToTxn.Marshal(b, m, deterministic)
+}
+func (m *CommandAddSubscriptionToTxn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAddSubscriptionToTxn.Merge(m, src)
+}
+func (m *CommandAddSubscriptionToTxn) XXX_Size() int {
+	return xxx_messageInfo_CommandAddSubscriptionToTxn.Size(m)
+}
+func (m *CommandAddSubscriptionToTxn) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandAddSubscriptionToTxn.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandAddSubscriptionToTxn proto.InternalMessageInfo
+
+const Default_CommandAddSubscriptionToTxn_TxnidLeastBits uint64 = 0
+const Default_CommandAddSubscriptionToTxn_TxnidMostBits uint64 = 0
+
+func (m *CommandAddSubscriptionToTxn) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandAddSubscriptionToTxn) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandAddSubscriptionToTxn_TxnidLeastBits
+}
+
+func (m *CommandAddSubscriptionToTxn) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandAddSubscriptionToTxn_TxnidMostBits
+}
+
+func (m *CommandAddSubscriptionToTxn) GetSubscription() []*Subscription {
+	if m != nil {
+		return m.Subscription
+	}
+	return nil
+}
+
+type CommandAddSubscriptionToTxnResponse struct {
+	RequestId            *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64      `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64      `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Error                *ServerError `protobuf:"varint,4,opt,name=error,enum=pulsar.proto.ServerError" json:"error,omitempty"`
+	Message              *string      `protobuf:"bytes,5,opt,name=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *CommandAddSubscriptionToTxnResponse) Reset()         { *m = CommandAddSubscriptionToTxnResponse{} }
+func (m *CommandAddSubscriptionToTxnResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandAddSubscriptionToTxnResponse) ProtoMessage()    {}
+func (*CommandAddSubscriptionToTxnResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{55}
+}
+
+func (m *CommandAddSubscriptionToTxnResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandAddSubscriptionToTxnResponse.Unmarshal(m, b)
+}
+func (m *CommandAddSubscriptionToTxnResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandAddSubscriptionToTxnResponse.Marshal(b, m, deterministic)
+}
+func (m *CommandAddSubscriptionToTxnResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandAddSubscriptionToTxnResponse.Merge(m, src)
+}
+func (m *CommandAddSubscriptionToTxnResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandAddSubscriptionToTxnResponse.Size(m)
+}
+func (m *CommandAddSubscriptionToTxnResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandAddSubscriptionToTxnResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandAddSubscriptionToTxnResponse proto.InternalMessageInfo
+
+const Default_CommandAddSubscriptionToTxnResponse_TxnidLeastBits uint64 = 0
+const Default_CommandAddSubscriptionToTxnResponse_TxnidMostBits uint64 = 0
+
+func (m *CommandAddSubscriptionToTxnResponse) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandAddSubscriptionToTxnResponse) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandAddSubscriptionToTxnResponse_TxnidLeastBits
+}
+
+func (m *CommandAddSubscriptionToTxnResponse) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandAddSubscriptionToTxnResponse_TxnidMostBits
+}
+
+func (m *CommandAddSubscriptionToTxnResponse) GetError() ServerError {
+	if m != nil && m.Error != nil {
+		return *m.Error
+	}
+	return ServerError_UnknownError
+}
+
+func (m *CommandAddSubscriptionToTxnResponse) GetMessage() string {
+	if m != nil && m.Message != nil {
+		return *m.Message
+	}
+	return ""
+}
+
+type CommandEndTxn struct {
+	RequestId            *uint64    `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64    `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64    `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	TxnAction            *TxnAction `protobuf:"varint,4,opt,name=txn_action,json=txnAction,enum=pulsar.proto.TxnAction" json:"txn_action,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *CommandEndTxn) Reset()         { *m = CommandEndTxn{} }
+func (m *CommandEndTxn) String() string { return proto.CompactTextString(m) }
+func (*CommandEndTxn) ProtoMessage()    {}
+func (*CommandEndTxn) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{56}
+}
+
+func (m *CommandEndTxn) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandEndTxn.Unmarshal(m, b)
+}
+func (m *CommandEndTxn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandEndTxn.Marshal(b, m, deterministic)
+}
+func (m *CommandEndTxn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandEndTxn.Merge(m, src)
+}
+func (m *CommandEndTxn) XXX_Size() int {
+	return xxx_messageInfo_CommandEndTxn.Size(m)
+}
+func (m *CommandEndTxn) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandEndTxn.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandEndTxn proto.InternalMessageInfo
+
+const Default_CommandEndTxn_TxnidLeastBits uint64 = 0
+const Default_CommandEndTxn_TxnidMostBits uint64 = 0
+
+func (m *CommandEndTxn) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandEndTxn) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandEndTxn_TxnidLeastBits
+}
+
+func (m *CommandEndTxn) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandEndTxn_TxnidMostBits
+}
+
+func (m *CommandEndTxn) GetTxnAction() TxnAction {
+	if m != nil && m.TxnAction != nil {
+		return *m.TxnAction
+	}
+	return TxnAction_COMMIT
+}
+
+type CommandEndTxnResponse struct {
+	RequestId            *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64      `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64      `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Error                *ServerError `protobuf:"varint,4,opt,name=error,enum=pulsar.proto.ServerError" json:"error,omitempty"`
+	Message              *string      `protobuf:"bytes,5,opt,name=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *CommandEndTxnResponse) Reset()         { *m = CommandEndTxnResponse{} }
+func (m *CommandEndTxnResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandEndTxnResponse) ProtoMessage()    {}
+func (*CommandEndTxnResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{57}
+}
+
+func (m *CommandEndTxnResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandEndTxnResponse.Unmarshal(m, b)
+}
+func (m *CommandEndTxnResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandEndTxnResponse.Marshal(b, m, deterministic)
+}
+func (m *CommandEndTxnResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandEndTxnResponse.Merge(m, src)
+}
+func (m *CommandEndTxnResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandEndTxnResponse.Size(m)
+}
+func (m *CommandEndTxnResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandEndTxnResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandEndTxnResponse proto.InternalMessageInfo
+
+const Default_CommandEndTxnResponse_TxnidLeastBits uint64 = 0
+const Default_CommandEndTxnResponse_TxnidMostBits uint64 = 0
+
+func (m *CommandEndTxnResponse) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandEndTxnResponse) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandEndTxnResponse_TxnidLeastBits
+}
+
+func (m *CommandEndTxnResponse) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandEndTxnResponse_TxnidMostBits
+}
+
+func (m *CommandEndTxnResponse) GetError() ServerError {
+	if m != nil && m.Error != nil {
+		return *m.Error
+	}
+	return ServerError_UnknownError
+}
+
+func (m *CommandEndTxnResponse) GetMessage() string {
+	if m != nil && m.Message != nil {
+		return *m.Message
+	}
+	return ""
+}
+
+type CommandEndTxnOnPartition struct {
+	RequestId            *uint64    `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64    `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64    `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Topic                *string    `protobuf:"bytes,4,opt,name=topic" json:"topic,omitempty"`
+	TxnAction            *TxnAction `protobuf:"varint,5,opt,name=txn_action,json=txnAction,enum=pulsar.proto.TxnAction" json:"txn_action,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *CommandEndTxnOnPartition) Reset()         { *m = CommandEndTxnOnPartition{} }
+func (m *CommandEndTxnOnPartition) String() string { return proto.CompactTextString(m) }
+func (*CommandEndTxnOnPartition) ProtoMessage()    {}
+func (*CommandEndTxnOnPartition) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{58}
+}
+
+func (m *CommandEndTxnOnPartition) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandEndTxnOnPartition.Unmarshal(m, b)
+}
+func (m *CommandEndTxnOnPartition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandEndTxnOnPartition.Marshal(b, m, deterministic)
+}
+func (m *CommandEndTxnOnPartition) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandEndTxnOnPartition.Merge(m, src)
+}
+func (m *CommandEndTxnOnPartition) XXX_Size() int {
+	return xxx_messageInfo_CommandEndTxnOnPartition.Size(m)
+}
+func (m *CommandEndTxnOnPartition) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandEndTxnOnPartition.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandEndTxnOnPartition proto.InternalMessageInfo
+
+const Default_CommandEndTxnOnPartition_TxnidLeastBits uint64 = 0
+const Default_CommandEndTxnOnPartition_TxnidMostBits uint64 = 0
+
+func (m *CommandEndTxnOnPartition) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandEndTxnOnPartition) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandEndTxnOnPartition_TxnidLeastBits
+}
+
+func (m *CommandEndTxnOnPartition) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandEndTxnOnPartition_TxnidMostBits
+}
+
+func (m *CommandEndTxnOnPartition) GetTopic() string {
+	if m != nil && m.Topic != nil {
+		return *m.Topic
+	}
+	return ""
+}
+
+func (m *CommandEndTxnOnPartition) GetTxnAction() TxnAction {
+	if m != nil && m.TxnAction != nil {
+		return *m.TxnAction
+	}
+	return TxnAction_COMMIT
+}
+
+type CommandEndTxnOnPartitionResponse struct {
+	RequestId            *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64      `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64      `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Error                *ServerError `protobuf:"varint,4,opt,name=error,enum=pulsar.proto.ServerError" json:"error,omitempty"`
+	Message              *string      `protobuf:"bytes,5,opt,name=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *CommandEndTxnOnPartitionResponse) Reset()         { *m = CommandEndTxnOnPartitionResponse{} }
+func (m *CommandEndTxnOnPartitionResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandEndTxnOnPartitionResponse) ProtoMessage()    {}
+func (*CommandEndTxnOnPartitionResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{59}
+}
+
+func (m *CommandEndTxnOnPartitionResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandEndTxnOnPartitionResponse.Unmarshal(m, b)
+}
+func (m *CommandEndTxnOnPartitionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandEndTxnOnPartitionResponse.Marshal(b, m, deterministic)
+}
+func (m *CommandEndTxnOnPartitionResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandEndTxnOnPartitionResponse.Merge(m, src)
+}
+func (m *CommandEndTxnOnPartitionResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandEndTxnOnPartitionResponse.Size(m)
+}
+func (m *CommandEndTxnOnPartitionResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandEndTxnOnPartitionResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandEndTxnOnPartitionResponse proto.InternalMessageInfo
+
+const Default_CommandEndTxnOnPartitionResponse_TxnidLeastBits uint64 = 0
+const Default_CommandEndTxnOnPartitionResponse_TxnidMostBits uint64 = 0
+
+func (m *CommandEndTxnOnPartitionResponse) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandEndTxnOnPartitionResponse) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandEndTxnOnPartitionResponse_TxnidLeastBits
+}
+
+func (m *CommandEndTxnOnPartitionResponse) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandEndTxnOnPartitionResponse_TxnidMostBits
+}
+
+func (m *CommandEndTxnOnPartitionResponse) GetError() ServerError {
+	if m != nil && m.Error != nil {
+		return *m.Error
+	}
+	return ServerError_UnknownError
+}
+
+func (m *CommandEndTxnOnPartitionResponse) GetMessage() string {
+	if m != nil && m.Message != nil {
+		return *m.Message
+	}
+	return ""
+}
+
+type CommandEndTxnOnSubscription struct {
+	RequestId            *uint64       `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64       `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64       `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Subscription         *Subscription `protobuf:"bytes,4,opt,name=subscription" json:"subscription,omitempty"`
+	TxnAction            *TxnAction    `protobuf:"varint,5,opt,name=txn_action,json=txnAction,enum=pulsar.proto.TxnAction" json:"txn_action,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *CommandEndTxnOnSubscription) Reset()         { *m = CommandEndTxnOnSubscription{} }
+func (m *CommandEndTxnOnSubscription) String() string { return proto.CompactTextString(m) }
+func (*CommandEndTxnOnSubscription) ProtoMessage()    {}
+func (*CommandEndTxnOnSubscription) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{60}
+}
+
+func (m *CommandEndTxnOnSubscription) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandEndTxnOnSubscription.Unmarshal(m, b)
+}
+func (m *CommandEndTxnOnSubscription) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandEndTxnOnSubscription.Marshal(b, m, deterministic)
+}
+func (m *CommandEndTxnOnSubscription) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandEndTxnOnSubscription.Merge(m, src)
+}
+func (m *CommandEndTxnOnSubscription) XXX_Size() int {
+	return xxx_messageInfo_CommandEndTxnOnSubscription.Size(m)
+}
+func (m *CommandEndTxnOnSubscription) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandEndTxnOnSubscription.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandEndTxnOnSubscription proto.InternalMessageInfo
+
+const Default_CommandEndTxnOnSubscription_TxnidLeastBits uint64 = 0
+const Default_CommandEndTxnOnSubscription_TxnidMostBits uint64 = 0
+
+func (m *CommandEndTxnOnSubscription) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandEndTxnOnSubscription) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandEndTxnOnSubscription_TxnidLeastBits
+}
+
+func (m *CommandEndTxnOnSubscription) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandEndTxnOnSubscription_TxnidMostBits
+}
+
+func (m *CommandEndTxnOnSubscription) GetSubscription() *Subscription {
+	if m != nil {
+		return m.Subscription
+	}
+	return nil
+}
+
+func (m *CommandEndTxnOnSubscription) GetTxnAction() TxnAction {
+	if m != nil && m.TxnAction != nil {
+		return *m.TxnAction
+	}
+	return TxnAction_COMMIT
+}
+
+type CommandEndTxnOnSubscriptionResponse struct {
+	RequestId            *uint64      `protobuf:"varint,1,req,name=request_id,json=requestId" json:"request_id,omitempty"`
+	TxnidLeastBits       *uint64      `protobuf:"varint,2,opt,name=txnid_least_bits,json=txnidLeastBits,def=0" json:"txnid_least_bits,omitempty"`
+	TxnidMostBits        *uint64      `protobuf:"varint,3,opt,name=txnid_most_bits,json=txnidMostBits,def=0" json:"txnid_most_bits,omitempty"`
+	Error                *ServerError `protobuf:"varint,4,opt,name=error,enum=pulsar.proto.ServerError" json:"error,omitempty"`
+	Message              *string      `protobuf:"bytes,5,opt,name=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *CommandEndTxnOnSubscriptionResponse) Reset()         { *m = CommandEndTxnOnSubscriptionResponse{} }
+func (m *CommandEndTxnOnSubscriptionResponse) String() string { return proto.CompactTextString(m) }
+func (*CommandEndTxnOnSubscriptionResponse) ProtoMessage()    {}
+func (*CommandEndTxnOnSubscriptionResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{61}
+}
+
+func (m *CommandEndTxnOnSubscriptionResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_CommandEndTxnOnSubscriptionResponse.Unmarshal(m, b)
+}
+func (m *CommandEndTxnOnSubscriptionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CommandEndTxnOnSubscriptionResponse.Marshal(b, m, deterministic)
+}
+func (m *CommandEndTxnOnSubscriptionResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CommandEndTxnOnSubscriptionResponse.Merge(m, src)
+}
+func (m *CommandEndTxnOnSubscriptionResponse) XXX_Size() int {
+	return xxx_messageInfo_CommandEndTxnOnSubscriptionResponse.Size(m)
+}
+func (m *CommandEndTxnOnSubscriptionResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_CommandEndTxnOnSubscriptionResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CommandEndTxnOnSubscriptionResponse proto.InternalMessageInfo
+
+const Default_CommandEndTxnOnSubscriptionResponse_TxnidLeastBits uint64 = 0
+const Default_CommandEndTxnOnSubscriptionResponse_TxnidMostBits uint64 = 0
+
+func (m *CommandEndTxnOnSubscriptionResponse) GetRequestId() uint64 {
+	if m != nil && m.RequestId != nil {
+		return *m.RequestId
+	}
+	return 0
+}
+
+func (m *CommandEndTxnOnSubscriptionResponse) GetTxnidLeastBits() uint64 {
+	if m != nil && m.TxnidLeastBits != nil {
+		return *m.TxnidLeastBits
+	}
+	return Default_CommandEndTxnOnSubscriptionResponse_TxnidLeastBits
+}
+
+func (m *CommandEndTxnOnSubscriptionResponse) GetTxnidMostBits() uint64 {
+	if m != nil && m.TxnidMostBits != nil {
+		return *m.TxnidMostBits
+	}
+	return Default_CommandEndTxnOnSubscriptionResponse_TxnidMostBits
+}
+
+func (m *CommandEndTxnOnSubscriptionResponse) GetError() ServerError {
+	if m != nil && m.Error != nil {
+		return *m.Error
+	}
+	return ServerError_UnknownError
+}
+
+func (m *CommandEndTxnOnSubscriptionResponse) GetMessage() string {
+	if m != nil && m.Message != nil {
+		return *m.Message
+	}
+	return ""
+}
+
+type BaseCommand struct {
+	Type                            *BaseCommand_Type                        `protobuf:"varint,1,req,name=type,enum=pulsar.proto.BaseCommand_Type" json:"type,omitempty"`
+	Connect                         *CommandConnect                          `protobuf:"bytes,2,opt,name=connect" json:"connect,omitempty"`
+	Connected                       *CommandConnected                        `protobuf:"bytes,3,opt,name=connected" json:"connected,omitempty"`
+	Subscribe                       *CommandSubscribe                        `protobuf:"bytes,4,opt,name=subscribe" json:"subscribe,omitempty"`
+	Producer                        *CommandProducer                         `protobuf:"bytes,5,opt,name=producer" json:"producer,omitempty"`
+	Send                            *CommandSend                             `protobuf:"bytes,6,opt,name=send" json:"send,omitempty"`
+	SendReceipt                     *CommandSendReceipt                      `protobuf:"bytes,7,opt,name=send_receipt,json=sendReceipt" json:"send_receipt,omitempty"`
+	SendError                       *CommandSendError                        `protobuf:"bytes,8,opt,name=send_error,json=sendError" json:"send_error,omitempty"`
+	Message                         *CommandMessage                          `protobuf:"bytes,9,opt,name=message" json:"message,omitempty"`
+	Ack                             *CommandAck                              `protobuf:"bytes,10,opt,name=ack" json:"ack,omitempty"`
+	Flow                            *CommandFlow                             `protobuf:"bytes,11,opt,name=flow" json:"flow,omitempty"`
+	Unsubscribe                     *CommandUnsubscribe                      `protobuf:"bytes,12,opt,name=unsubscribe" json:"unsubscribe,omitempty"`
+	Success                         *CommandSuccess                          `protobuf:"bytes,13,opt,name=success" json:"success,omitempty"`
+	Error                           *CommandError                            `protobuf:"bytes,14,opt,name=error" json:"error,omitempty"`
+	CloseProducer                   *CommandCloseProducer                    `protobuf:"bytes,15,opt,name=close_producer,json=closeProducer" json:"close_producer,omitempty"`
+	CloseConsumer                   *CommandCloseConsumer                    `protobuf:"bytes,16,opt,name=close_consumer,json=closeConsumer" json:"close_consumer,omitempty"`
+	ProducerSuccess                 *CommandProducerSuccess                  `protobuf:"bytes,17,opt,name=producer_success,json=producerSuccess" json:"producer_success,omitempty"`
+	Ping                            *CommandPing                             `protobuf:"bytes,18,opt,name=ping" json:"ping,omitempty"`
+	Pong                            *CommandPong                             `protobuf:"bytes,19,opt,name=pong" json:"pong,omitempty"`
+	RedeliverUnacknowledgedMessages *CommandRedeliverUnacknowledgedMessages  `protobuf:"bytes,20,opt,name=redeliverUnacknowledgedMessages" json:"redeliverUnacknowledgedMessages,omitempty"`
+	PartitionMetadata               *CommandPartitionedTopicMetadata         `protobuf:"bytes,21,opt,name=partitionMetadata" json:"partitionMetadata,omitempty"`
+	PartitionMetadataResponse       *CommandPartitionedTopicMetadataResponse `protobuf:"bytes,22,opt,name=partitionMetadataResponse" json:"partitionMetadataResponse,omitempty"`
+	LookupTopic                     *CommandLookupTopic                      `protobuf:"bytes,23,opt,name=lookupTopic" json:"lookupTopic,omitempty"`
+	LookupTopicResponse             *CommandLookupTopicResponse              `protobuf:"bytes,24,opt,name=lookupTopicResponse" json:"lookupTopicResponse,omitempty"`
+	ConsumerStats                   *CommandConsumerStats                    `protobuf:"bytes,25,opt,name=consumerStats" json:"consumerStats,omitempty"`
+	ConsumerStatsResponse           *CommandConsumerStatsResponse            `protobuf:"bytes,26,opt,name=consumerStatsResponse" json:"consumerStatsResponse,omitempty"`
+	ReachedEndOfTopic               *CommandReachedEndOfTopic                `protobuf:"bytes,27,opt,name=reachedEndOfTopic" json:"reachedEndOfTopic,omitempty"`
+	Seek                            *CommandSeek                             `protobuf:"bytes,28,opt,name=seek" json:"seek,omitempty"`
+	GetLastMessageId                *CommandGetLastMessageId                 `protobuf:"bytes,29,opt,name=getLastMessageId" json:"getLastMessageId,omitempty"`
+	GetLastMessageIdResponse        *CommandGetLastMessageIdResponse         `protobuf:"bytes,30,opt,name=getLastMessageIdResponse" json:"getLastMessageIdResponse,omitempty"`
+	ActiveConsumerChange            *CommandActiveConsumerChange             `protobuf:"bytes,31,opt,name=active_consumer_change,json=activeConsumerChange" json:"active_consumer_change,omitempty"`
+	GetTopicsOfNamespace            *CommandGetTopicsOfNamespace             `protobuf:"bytes,32,opt,name=getTopicsOfNamespace" json:"getTopicsOfNamespace,omitempty"`
+	GetTopicsOfNamespaceResponse    *CommandGetTopicsOfNamespaceResponse     `protobuf:"bytes,33,opt,name=getTopicsOfNamespaceResponse" json:"getTopicsOfNamespaceResponse,omitempty"`
+	GetSchema                       *CommandGetSchema                        `protobuf:"bytes,34,opt,name=getSchema" json:"getSchema,omitempty"`
+	GetSchemaResponse               *CommandGetSchemaResponse                `protobuf:"bytes,35,opt,name=getSchemaResponse" json:"getSchemaResponse,omitempty"`
+	AuthChallenge                   *CommandAuthChallenge                    `protobuf:"bytes,36,opt,name=authChallenge" json:"authChallenge,omitempty"`
+	AuthResponse                    *CommandAuthResponse                     `protobuf:"bytes,37,opt,name=authResponse" json:"authResponse,omitempty"`
+	AckResponse                     *CommandAckResponse                      `protobuf:"bytes,38,opt,name=ackResponse" json:"ackResponse,omitempty"`
+	GetOrCreateSchema               *CommandGetOrCreateSchema                `protobuf:"bytes,39,opt,name=getOrCreateSchema" json:"getOrCreateSchema,omitempty"`
+	GetOrCreateSchemaResponse       *CommandGetOrCreateSchemaResponse        `protobuf:"bytes,40,opt,name=getOrCreateSchemaResponse" json:"getOrCreateSchemaResponse,omitempty"`
+	// transaction related
+	NewTxn                       *CommandNewTxn                       `protobuf:"bytes,50,opt,name=newTxn" json:"newTxn,omitempty"`
+	NewTxnResponse               *CommandNewTxnResponse               `protobuf:"bytes,51,opt,name=newTxnResponse" json:"newTxnResponse,omitempty"`
+	AddPartitionToTxn            *CommandAddPartitionToTxn            `protobuf:"bytes,52,opt,name=addPartitionToTxn" json:"addPartitionToTxn,omitempty"`
+	AddPartitionToTxnResponse    *CommandAddPartitionToTxnResponse    `protobuf:"bytes,53,opt,name=addPartitionToTxnResponse" json:"addPartitionToTxnResponse,omitempty"`
+	AddSubscriptionToTxn         *CommandAddSubscriptionToTxn         `protobuf:"bytes,54,opt,name=addSubscriptionToTxn" json:"addSubscriptionToTxn,omitempty"`
+	AddSubscriptionToTxnResponse *CommandAddSubscriptionToTxnResponse `protobuf:"bytes,55,opt,name=addSubscriptionToTxnResponse" json:"addSubscriptionToTxnResponse,omitempty"`
+	EndTxn                       *CommandEndTxn                       `protobuf:"bytes,56,opt,name=endTxn" json:"endTxn,omitempty"`
+	EndTxnResponse               *CommandEndTxnResponse               `protobuf:"bytes,57,opt,name=endTxnResponse" json:"endTxnResponse,omitempty"`
+	EndTxnOnPartition            *CommandEndTxnOnPartition            `protobuf:"bytes,58,opt,name=endTxnOnPartition" json:"endTxnOnPartition,omitempty"`
+	EndTxnOnPartitionResponse    *CommandEndTxnOnPartitionResponse    `protobuf:"bytes,59,opt,name=endTxnOnPartitionResponse" json:"endTxnOnPartitionResponse,omitempty"`
+	EndTxnOnSubscription         *CommandEndTxnOnSubscription         `protobuf:"bytes,60,opt,name=endTxnOnSubscription" json:"endTxnOnSubscription,omitempty"`
+	EndTxnOnSubscriptionResponse *CommandEndTxnOnSubscriptionResponse `protobuf:"bytes,61,opt,name=endTxnOnSubscriptionResponse" json:"endTxnOnSubscriptionResponse,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{}                             `json:"-"`
+	XXX_unrecognized             []byte                               `json:"-"`
+	XXX_sizecache                int32                                `json:"-"`
+}
+
+func (m *BaseCommand) Reset()         { *m = BaseCommand{} }
+func (m *BaseCommand) String() string { return proto.CompactTextString(m) }
+func (*BaseCommand) ProtoMessage()    {}
+func (*BaseCommand) Descriptor() ([]byte, []int) {
+	return fileDescriptor_39529ba7ad9caeb8, []int{62}
+}
+
+func (m *BaseCommand) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BaseCommand.Unmarshal(m, b)
+}
+func (m *BaseCommand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BaseCommand.Marshal(b, m, deterministic)
+}
+func (m *BaseCommand) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BaseCommand.Merge(m, src)
+}
+func (m *BaseCommand) XXX_Size() int {
+	return xxx_messageInfo_BaseCommand.Size(m)
+}
+func (m *BaseCommand) XXX_DiscardUnknown() {
+	xxx_messageInfo_BaseCommand.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BaseCommand proto.InternalMessageInfo
+
+func (m *BaseCommand) GetType() BaseCommand_Type {
+	if m != nil && m.Type != nil {
+		return *m.Type
+	}
+	return BaseCommand_CONNECT
+}
+
+func (m *BaseCommand) GetConnect() *CommandConnect {
+	if m != nil {
+		return m.Connect
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetConnected() *CommandConnected {
+	if m != nil {
+		return m.Connected
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetSubscribe() *CommandSubscribe {
+	if m != nil {
+		return m.Subscribe
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetProducer() *CommandProducer {
+	if m != nil {
+		return m.Producer
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetSend() *CommandSend {
+	if m != nil {
+		return m.Send
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetSendReceipt() *CommandSendReceipt {
+	if m != nil {
+		return m.SendReceipt
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetSendError() *CommandSendError {
+	if m != nil {
+		return m.SendError
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetMessage() *CommandMessage {
+	if m != nil {
+		return m.Message
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetAck() *CommandAck {
+	if m != nil {
+		return m.Ack
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetFlow() *CommandFlow {
+	if m != nil {
+		return m.Flow
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetUnsubscribe() *CommandUnsubscribe {
+	if m != nil {
+		return m.Unsubscribe
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetSuccess() *CommandSuccess {
+	if m != nil {
+		return m.Success
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetError() *CommandError {
+	if m != nil {
+		return m.Error
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetCloseProducer() *CommandCloseProducer {
+	if m != nil {
+		return m.CloseProducer
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetCloseConsumer() *CommandCloseConsumer {
+	if m != nil {
+		return m.CloseConsumer
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetProducerSuccess() *CommandProducerSuccess {
+	if m != nil {
+		return m.ProducerSuccess
 	}
 	return nil
 }
@@ -4014,11 +5580,132 @@ func (m *BaseCommand) GetAuthResponse() *CommandAuthResponse {
 	return nil
 }
 
+func (m *BaseCommand) GetAckResponse() *CommandAckResponse {
+	if m != nil {
+		return m.AckResponse
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetGetOrCreateSchema() *CommandGetOrCreateSchema {
+	if m != nil {
+		return m.GetOrCreateSchema
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetGetOrCreateSchemaResponse() *CommandGetOrCreateSchemaResponse {
+	if m != nil {
+		return m.GetOrCreateSchemaResponse
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetNewTxn() *CommandNewTxn {
+	if m != nil {
+		return m.NewTxn
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetNewTxnResponse() *CommandNewTxnResponse {
+	if m != nil {
+		return m.NewTxnResponse
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetAddPartitionToTxn() *CommandAddPartitionToTxn {
+	if m != nil {
+		return m.AddPartitionToTxn
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetAddPartitionToTxnResponse() *CommandAddPartitionToTxnResponse {
+	if m != nil {
+		return m.AddPartitionToTxnResponse
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetAddSubscriptionToTxn() *CommandAddSubscriptionToTxn {
+	if m != nil {
+		return m.AddSubscriptionToTxn
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetAddSubscriptionToTxnResponse() *CommandAddSubscriptionToTxnResponse {
+	if m != nil {
+		return m.AddSubscriptionToTxnResponse
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetEndTxn() *CommandEndTxn {
+	if m != nil {
+		return m.EndTxn
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetEndTxnResponse() *CommandEndTxnResponse {
+	if m != nil {
+		return m.EndTxnResponse
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetEndTxnOnPartition() *CommandEndTxnOnPartition {
+	if m != nil {
+		return m.EndTxnOnPartition
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetEndTxnOnPartitionResponse() *CommandEndTxnOnPartitionResponse {
+	if m != nil {
+		return m.EndTxnOnPartitionResponse
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetEndTxnOnSubscription() *CommandEndTxnOnSubscription {
+	if m != nil {
+		return m.EndTxnOnSubscription
+	}
+	return nil
+}
+
+func (m *BaseCommand) GetEndTxnOnSubscriptionResponse() *CommandEndTxnOnSubscriptionResponse {
+	if m != nil {
+		return m.EndTxnOnSubscriptionResponse
+	}
+	return nil
+}
+
 func init() {
+	proto.RegisterEnum("pulsar.proto.CompressionType", CompressionType_name, CompressionType_value)
+	proto.RegisterEnum("pulsar.proto.ServerError", ServerError_name, ServerError_value)
+	proto.RegisterEnum("pulsar.proto.AuthMethod", AuthMethod_name, AuthMethod_value)
+	proto.RegisterEnum("pulsar.proto.ProtocolVersion", ProtocolVersion_name, ProtocolVersion_value)
+	proto.RegisterEnum("pulsar.proto.KeySharedMode", KeySharedMode_name, KeySharedMode_value)
+	proto.RegisterEnum("pulsar.proto.TxnAction", TxnAction_name, TxnAction_value)
+	proto.RegisterEnum("pulsar.proto.Schema_Type", Schema_Type_name, Schema_Type_value)
+	proto.RegisterEnum("pulsar.proto.CommandSubscribe_SubType", CommandSubscribe_SubType_name, CommandSubscribe_SubType_value)
+	proto.RegisterEnum("pulsar.proto.CommandSubscribe_InitialPosition", CommandSubscribe_InitialPosition_name, CommandSubscribe_InitialPosition_value)
+	proto.RegisterEnum("pulsar.proto.CommandPartitionedTopicMetadataResponse_LookupType", CommandPartitionedTopicMetadataResponse_LookupType_name, CommandPartitionedTopicMetadataResponse_LookupType_value)
+	proto.RegisterEnum("pulsar.proto.CommandLookupTopicResponse_LookupType", CommandLookupTopicResponse_LookupType_name, CommandLookupTopicResponse_LookupType_value)
+	proto.RegisterEnum("pulsar.proto.CommandAck_AckType", CommandAck_AckType_name, CommandAck_AckType_value)
+	proto.RegisterEnum("pulsar.proto.CommandAck_ValidationError", CommandAck_ValidationError_name, CommandAck_ValidationError_value)
+	proto.RegisterEnum("pulsar.proto.CommandGetTopicsOfNamespace_Mode", CommandGetTopicsOfNamespace_Mode_name, CommandGetTopicsOfNamespace_Mode_value)
+	proto.RegisterEnum("pulsar.proto.BaseCommand_Type", BaseCommand_Type_name, BaseCommand_Type_value)
 	proto.RegisterType((*Schema)(nil), "pulsar.proto.Schema")
 	proto.RegisterType((*MessageIdData)(nil), "pulsar.proto.MessageIdData")
 	proto.RegisterType((*KeyValue)(nil), "pulsar.proto.KeyValue")
 	proto.RegisterType((*KeyLongValue)(nil), "pulsar.proto.KeyLongValue")
+	proto.RegisterType((*IntRange)(nil), "pulsar.proto.IntRange")
 	proto.RegisterType((*EncryptionKeys)(nil), "pulsar.proto.EncryptionKeys")
 	proto.RegisterType((*MessageMetadata)(nil), "pulsar.proto.MessageMetadata")
 	proto.RegisterType((*SingleMessageMetadata)(nil), "pulsar.proto.SingleMessageMetadata")
@@ -4027,6 +5714,7 @@ func init() {
 	proto.RegisterType((*CommandAuthResponse)(nil), "pulsar.proto.CommandAuthResponse")
 	proto.RegisterType((*CommandAuthChallenge)(nil), "pulsar.proto.CommandAuthChallenge")
 	proto.RegisterType((*AuthData)(nil), "pulsar.proto.AuthData")
+	proto.RegisterType((*KeySharedMeta)(nil), "pulsar.proto.KeySharedMeta")
 	proto.RegisterType((*CommandSubscribe)(nil), "pulsar.proto.CommandSubscribe")
 	proto.RegisterType((*CommandPartitionedTopicMetadata)(nil), "pulsar.proto.CommandPartitionedTopicMetadata")
 	proto.RegisterType((*CommandPartitionedTopicMetadataResponse)(nil), "pulsar.proto.CommandPartitionedTopicMetadataResponse")
@@ -4038,6 +5726,7 @@ func init() {
 	proto.RegisterType((*CommandSendError)(nil), "pulsar.proto.CommandSendError")
 	proto.RegisterType((*CommandMessage)(nil), "pulsar.proto.CommandMessage")
 	proto.RegisterType((*CommandAck)(nil), "pulsar.proto.CommandAck")
+	proto.RegisterType((*CommandAckResponse)(nil), "pulsar.proto.CommandAckResponse")
 	proto.RegisterType((*CommandActiveConsumerChange)(nil), "pulsar.proto.CommandActiveConsumerChange")
 	proto.RegisterType((*CommandFlow)(nil), "pulsar.proto.CommandFlow")
 	proto.RegisterType((*CommandUnsubscribe)(nil), "pulsar.proto.CommandUnsubscribe")
@@ -4059,301 +5748,368 @@ func init() {
 	proto.RegisterType((*CommandGetTopicsOfNamespaceResponse)(nil), "pulsar.proto.CommandGetTopicsOfNamespaceResponse")
 	proto.RegisterType((*CommandGetSchema)(nil), "pulsar.proto.CommandGetSchema")
 	proto.RegisterType((*CommandGetSchemaResponse)(nil), "pulsar.proto.CommandGetSchemaResponse")
+	proto.RegisterType((*CommandGetOrCreateSchema)(nil), "pulsar.proto.CommandGetOrCreateSchema")
+	proto.RegisterType((*CommandGetOrCreateSchemaResponse)(nil), "pulsar.proto.CommandGetOrCreateSchemaResponse")
+	proto.RegisterType((*CommandNewTxn)(nil), "pulsar.proto.CommandNewTxn")
+	proto.RegisterType((*CommandNewTxnResponse)(nil), "pulsar.proto.CommandNewTxnResponse")
+	proto.RegisterType((*CommandAddPartitionToTxn)(nil), "pulsar.proto.CommandAddPartitionToTxn")
+	proto.RegisterType((*CommandAddPartitionToTxnResponse)(nil), "pulsar.proto.CommandAddPartitionToTxnResponse")
+	proto.RegisterType((*Subscription)(nil), "pulsar.proto.Subscription")
+	proto.RegisterType((*CommandAddSubscriptionToTxn)(nil), "pulsar.proto.CommandAddSubscriptionToTxn")
+	proto.RegisterType((*CommandAddSubscriptionToTxnResponse)(nil), "pulsar.proto.CommandAddSubscriptionToTxnResponse")
+	proto.RegisterType((*CommandEndTxn)(nil), "pulsar.proto.CommandEndTxn")
+	proto.RegisterType((*CommandEndTxnResponse)(nil), "pulsar.proto.CommandEndTxnResponse")
+	proto.RegisterType((*CommandEndTxnOnPartition)(nil), "pulsar.proto.CommandEndTxnOnPartition")
+	proto.RegisterType((*CommandEndTxnOnPartitionResponse)(nil), "pulsar.proto.CommandEndTxnOnPartitionResponse")
+	proto.RegisterType((*CommandEndTxnOnSubscription)(nil), "pulsar.proto.CommandEndTxnOnSubscription")
+	proto.RegisterType((*CommandEndTxnOnSubscriptionResponse)(nil), "pulsar.proto.CommandEndTxnOnSubscriptionResponse")
 	proto.RegisterType((*BaseCommand)(nil), "pulsar.proto.BaseCommand")
-	proto.RegisterEnum("pulsar.proto.CompressionType", CompressionType_name, CompressionType_value)
-	proto.RegisterEnum("pulsar.proto.ServerError", ServerError_name, ServerError_value)
-	proto.RegisterEnum("pulsar.proto.AuthMethod", AuthMethod_name, AuthMethod_value)
-	proto.RegisterEnum("pulsar.proto.ProtocolVersion", ProtocolVersion_name, ProtocolVersion_value)
-	proto.RegisterEnum("pulsar.proto.Schema_Type", Schema_Type_name, Schema_Type_value)
-	proto.RegisterEnum("pulsar.proto.CommandSubscribe_SubType", CommandSubscribe_SubType_name, CommandSubscribe_SubType_value)
-	proto.RegisterEnum("pulsar.proto.CommandSubscribe_InitialPosition", CommandSubscribe_InitialPosition_name, CommandSubscribe_InitialPosition_value)
-	proto.RegisterEnum("pulsar.proto.CommandPartitionedTopicMetadataResponse_LookupType", CommandPartitionedTopicMetadataResponse_LookupType_name, CommandPartitionedTopicMetadataResponse_LookupType_value)
-	proto.RegisterEnum("pulsar.proto.CommandLookupTopicResponse_LookupType", CommandLookupTopicResponse_LookupType_name, CommandLookupTopicResponse_LookupType_value)
-	proto.RegisterEnum("pulsar.proto.CommandAck_AckType", CommandAck_AckType_name, CommandAck_AckType_value)
-	proto.RegisterEnum("pulsar.proto.CommandAck_ValidationError", CommandAck_ValidationError_name, CommandAck_ValidationError_value)
-	proto.RegisterEnum("pulsar.proto.CommandGetTopicsOfNamespace_Mode", CommandGetTopicsOfNamespace_Mode_name, CommandGetTopicsOfNamespace_Mode_value)
-	proto.RegisterEnum("pulsar.proto.BaseCommand_Type", BaseCommand_Type_name, BaseCommand_Type_value)
 }
 
-func init() { proto.RegisterFile("PulsarApi.proto", fileDescriptor_PulsarApi_976de857822f53b5) }
-
-var fileDescriptor_PulsarApi_976de857822f53b5 = []byte{
-	// 4429 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5b, 0x4f, 0x8f, 0xdb, 0x48,
-	0x76, 0x37, 0xf5, 0xa7, 0x5b, 0x7a, 0xfa, 0x57, 0xae, 0x6e, 0x7b, 0x34, 0xb6, 0xc7, 0x96, 0xe9,
-	0x3f, 0xdb, 0xe3, 0x1d, 0x77, 0xec, 0xb6, 0xd7, 0x99, 0xf1, 0x6e, 0x80, 0x51, 0xab, 0x69, 0x5b,
-	0x71, 0x5b, 0xd2, 0x94, 0xd4, 0x5e, 0xcc, 0x64, 0x17, 0x5c, 0x36, 0x59, 0x56, 0x13, 0x4d, 0x91,
-	0x0a, 0x49, 0xf5, 0xb8, 0xe7, 0x90, 0xdb, 0x22, 0x97, 0x20, 0x41, 0x92, 0x63, 0x80, 0x2c, 0x72,
-	0xc8, 0x07, 0xc8, 0x2d, 0xc0, 0x7e, 0x83, 0xfd, 0x06, 0x39, 0x05, 0x58, 0x20, 0xc7, 0x05, 0x02,
-	0x24, 0x1f, 0x20, 0xa8, 0x62, 0xf1, 0x9f, 0x44, 0x49, 0xed, 0x99, 0x3d, 0xe4, 0x24, 0xf2, 0xd5,
-	0xab, 0x57, 0xaf, 0x5e, 0xfd, 0xea, 0xbd, 0x57, 0xaf, 0x28, 0x68, 0x0c, 0x66, 0x96, 0xa7, 0xb9,
-	0xed, 0xa9, 0xb9, 0x3b, 0x75, 0x1d, 0xdf, 0xc1, 0xd5, 0x29, 0x27, 0x04, 0x6f, 0xf2, 0xef, 0x73,
-	0xb0, 0x31, 0xd4, 0x4f, 0xe8, 0x44, 0xc3, 0x18, 0x0a, 0xb6, 0x36, 0xa1, 0x4d, 0xa9, 0x95, 0xdb,
-	0x29, 0x13, 0xfe, 0x8c, 0x6f, 0x41, 0xc5, 0xe3, 0xad, 0xaa, 0xa1, 0xf9, 0x5a, 0x33, 0xdf, 0xca,
-	0xed, 0x54, 0x09, 0x04, 0xa4, 0x03, 0xcd, 0xd7, 0xf0, 0x43, 0x28, 0xf8, 0xe7, 0x53, 0xda, 0x2c,
-	0xb4, 0x72, 0x3b, 0xf5, 0xbd, 0x8f, 0x77, 0x93, 0xc2, 0x77, 0x03, 0xc1, 0xbb, 0xa3, 0xf3, 0x29,
-	0x25, 0x9c, 0x0d, 0x3f, 0x03, 0x98, 0xba, 0xce, 0x94, 0xba, 0xbe, 0x49, 0xbd, 0x66, 0xb1, 0x95,
-	0xdf, 0xa9, 0xec, 0x5d, 0x4d, 0x77, 0x7a, 0x4d, 0xcf, 0xdf, 0x6a, 0xd6, 0x8c, 0x92, 0x04, 0xa7,
-	0xfc, 0x5b, 0x09, 0x0a, 0x4c, 0x0c, 0x2e, 0x41, 0xa1, 0xe7, 0xd8, 0x14, 0x5d, 0xc2, 0x00, 0x1b,
-	0x43, 0xdf, 0x35, 0xed, 0x31, 0x92, 0x18, 0xf5, 0xcf, 0x3d, 0xc7, 0x46, 0x39, 0x5c, 0x85, 0xd2,
-	0x80, 0x89, 0x39, 0x9e, 0xbd, 0x43, 0x79, 0x46, 0x6f, 0x9f, 0xb9, 0x0e, 0x2a, 0xb0, 0xa7, 0x7d,
-	0xc7, 0xb1, 0x50, 0x91, 0x3d, 0x75, 0x6d, 0xff, 0x73, 0xb4, 0x81, 0xcb, 0x50, 0xec, 0xda, 0xfe,
-	0xe3, 0x67, 0x68, 0x53, 0x3c, 0x3e, 0xd9, 0x43, 0x25, 0xf1, 0xf8, 0xec, 0x29, 0x2a, 0xb3, 0xc7,
-	0x17, 0x96, 0xa3, 0xf9, 0x08, 0xd8, 0x68, 0x07, 0xce, 0xec, 0xd8, 0xa2, 0xa8, 0xc2, 0x24, 0x1c,
-	0x68, 0x3e, 0x45, 0x55, 0xf6, 0x34, 0x32, 0x27, 0x14, 0xd5, 0x70, 0x0d, 0xca, 0xec, 0xc9, 0xf3,
-	0xb5, 0xc9, 0x14, 0xd5, 0x99, 0x1a, 0xe1, 0x3c, 0x50, 0x43, 0xfe, 0x1b, 0x09, 0x6a, 0x6f, 0xa8,
-	0xe7, 0x69, 0x63, 0xda, 0x35, 0xb8, 0xd9, 0xae, 0x41, 0xc9, 0xa2, 0xc6, 0x98, 0xba, 0x5d, 0x83,
-	0xdb, 0xbb, 0x40, 0xa2, 0x77, 0xdc, 0x84, 0x4d, 0x6a, 0xfb, 0xee, 0x79, 0xd7, 0x68, 0xe6, 0x78,
-	0x53, 0xf8, 0x8a, 0x5b, 0x50, 0x9e, 0x6a, 0xae, 0x6f, 0xfa, 0xa6, 0x63, 0x37, 0xf3, 0x2d, 0x69,
-	0xa7, 0xf8, 0x3c, 0xf7, 0xf0, 0x31, 0x89, 0x89, 0xf8, 0x0e, 0x54, 0x8e, 0x35, 0x5f, 0x3f, 0x51,
-	0x4d, 0xdb, 0xa0, 0xef, 0x9b, 0x85, 0x88, 0x07, 0x38, 0xb9, 0xcb, 0xa8, 0xf2, 0x5e, 0xac, 0x1c,
-	0x46, 0x90, 0x3f, 0xa5, 0xe7, 0x62, 0xcd, 0xd9, 0x23, 0xde, 0x86, 0xe2, 0x19, 0x6b, 0xe2, 0x83,
-	0x97, 0x49, 0xf0, 0x22, 0x3f, 0x83, 0xea, 0x6b, 0x7a, 0x7e, 0xe8, 0xd8, 0xe3, 0x0b, 0xf5, 0x2b,
-	0x84, 0xfd, 0x2c, 0xa8, 0x2b, 0xb6, 0xee, 0x9e, 0x4f, 0x99, 0x7a, 0xaf, 0xe9, 0xb9, 0xb7, 0xae,
-	0x67, 0x55, 0xf4, 0xc4, 0x7b, 0x50, 0x9a, 0x50, 0x5f, 0x13, 0xb8, 0x5b, 0x05, 0x94, 0x88, 0x4f,
-	0xfe, 0xfd, 0x06, 0x34, 0x84, 0xa1, 0xdf, 0x08, 0x1a, 0xbe, 0x03, 0xb5, 0xa9, 0xeb, 0x18, 0x33,
-	0x9d, 0xba, 0x6a, 0x02, 0xdf, 0xd5, 0x90, 0xd8, 0x0b, 0x71, 0x4e, 0xff, 0x72, 0x46, 0x6d, 0x9d,
-	0xaa, 0x66, 0x68, 0x77, 0x08, 0x49, 0x5d, 0x03, 0xdf, 0x86, 0xea, 0x74, 0x76, 0x6c, 0x99, 0xde,
-	0x89, 0xea, 0x9b, 0x13, 0xca, 0x77, 0x42, 0x81, 0x54, 0x04, 0x8d, 0x2d, 0xfd, 0x1c, 0xb6, 0x0b,
-	0x17, 0xc5, 0x36, 0xfe, 0x11, 0x34, 0x5c, 0x3a, 0xb5, 0x4c, 0x5d, 0xf3, 0xa9, 0xa1, 0xbe, 0x73,
-	0x9d, 0x49, 0xb3, 0xd8, 0x92, 0x76, 0xca, 0xa4, 0x1e, 0x93, 0x5f, 0xb8, 0xce, 0x84, 0xcf, 0x24,
-	0x5c, 0x69, 0x95, 0xd9, 0x70, 0x83, 0xb3, 0x55, 0x23, 0xe2, 0x6b, 0x7a, 0xce, 0x14, 0x8d, 0xba,
-	0xa9, 0xbe, 0xd3, 0xdc, 0x6c, 0xe5, 0x77, 0xca, 0xa4, 0x12, 0xd1, 0x46, 0x0e, 0x56, 0xa0, 0xa2,
-	0x3b, 0x93, 0xa9, 0x4b, 0x3d, 0x8f, 0x01, 0xa9, 0xd4, 0x92, 0x76, 0xea, 0x7b, 0x9f, 0xa4, 0x35,
-	0xed, 0xc4, 0x0c, 0x6c, 0xdf, 0x3d, 0x2f, 0xf4, 0xfa, 0x3d, 0x85, 0x24, 0xfb, 0xe1, 0x5d, 0xb8,
-	0x3c, 0xb3, 0x43, 0x02, 0x35, 0x54, 0xcf, 0xfc, 0x8e, 0x36, 0xcb, 0x2d, 0x69, 0xa7, 0xf6, 0x5c,
-	0x7a, 0x44, 0x50, 0xb2, 0x6d, 0x68, 0x7e, 0x47, 0xf1, 0x53, 0xb8, 0x62, 0xcf, 0x26, 0xea, 0x24,
-	0x58, 0x1f, 0x4f, 0x35, 0x6d, 0x95, 0x83, 0xb2, 0x59, 0xe1, 0x28, 0x95, 0x1e, 0x13, 0x6c, 0xcf,
-	0x26, 0x62, 0xf9, 0xbc, 0xae, 0xbd, 0xcf, 0x1a, 0x71, 0x0b, 0x80, 0x9e, 0x51, 0xdb, 0x0f, 0xcc,
-	0x5e, 0x6d, 0x49, 0x3b, 0x05, 0x26, 0xbe, 0xcc, 0x89, 0xdc, 0xee, 0x0a, 0x34, 0x68, 0x04, 0x31,
-	0x66, 0x17, 0xaf, 0x59, 0xe3, 0xc6, 0xbf, 0x91, 0x9e, 0x52, 0x1a, 0x87, 0xa4, 0x4e, 0xd3, 0xb8,
-	0xfc, 0x51, 0x4a, 0x8c, 0x66, 0x8d, 0x9d, 0x66, 0x3d, 0x58, 0x86, 0x98, 0xdc, 0xb6, 0xc6, 0x0e,
-	0xfe, 0x14, 0x50, 0x82, 0x71, 0xaa, 0xb9, 0xda, 0xa4, 0xd9, 0x68, 0x49, 0x3b, 0x55, 0x92, 0x10,
-	0x30, 0x60, 0x64, 0x7c, 0x0f, 0xea, 0xc2, 0x7d, 0x9e, 0x51, 0x97, 0x1b, 0x1b, 0x71, 0xc6, 0x5a,
-	0x40, 0x7d, 0x1b, 0x10, 0xf1, 0x97, 0xf0, 0x71, 0x6a, 0x61, 0xd5, 0xe3, 0x67, 0x4f, 0x55, 0x6a,
-	0xeb, 0x8e, 0x41, 0x8d, 0xe6, 0xe5, 0x96, 0xb4, 0x53, 0x7a, 0x5e, 0x7c, 0xa7, 0x59, 0x1e, 0x25,
-	0x57, 0x93, 0x6b, 0xbd, 0xff, 0xec, 0xa9, 0x12, 0x30, 0xb1, 0x55, 0x77, 0x5c, 0x83, 0x32, 0x77,
-	0xc8, 0x91, 0x81, 0xf9, 0x30, 0x95, 0x90, 0xc6, 0x80, 0x71, 0x1f, 0x1a, 0x06, 0xb5, 0xcc, 0x33,
-	0xea, 0xaa, 0x9a, 0xb0, 0xe6, 0x56, 0x4b, 0xda, 0xc9, 0x93, 0x9a, 0x20, 0xb7, 0x03, 0x73, 0xde,
-	0x82, 0xca, 0x44, 0x73, 0x4f, 0xa9, 0xab, 0x72, 0xc7, 0xbe, 0xcd, 0x16, 0x87, 0x40, 0x40, 0x62,
-	0x50, 0x90, 0x7f, 0x97, 0x83, 0x2b, 0x43, 0xd3, 0x1e, 0x5b, 0x74, 0x7e, 0xab, 0xa5, 0x77, 0x80,
-	0x74, 0xe1, 0x1d, 0xb0, 0x00, 0xec, 0x5c, 0x36, 0xb0, 0xa7, 0xda, 0xb9, 0xe5, 0x68, 0x02, 0x69,
-	0x6c, 0x07, 0x16, 0x49, 0x45, 0xd0, 0x38, 0xc2, 0x1e, 0x40, 0x8d, 0x61, 0x4e, 0xd3, 0xd9, 0x46,
-	0x72, 0x66, 0x3e, 0xf7, 0x7f, 0x91, 0xed, 0xaa, 0x51, 0x5b, 0x7f, 0xe6, 0xcf, 0xe1, 0xaa, 0x98,
-	0x81, 0xab, 0x95, 0xab, 0xb2, 0xf1, 0x7d, 0x56, 0x65, 0x73, 0x61, 0x55, 0xe4, 0x7f, 0xcd, 0x43,
-	0xbd, 0xe3, 0x4c, 0x26, 0x9a, 0x6d, 0x74, 0x1c, 0xdb, 0xa6, 0xba, 0xcf, 0x40, 0xa3, 0x5b, 0x26,
-	0x53, 0x2d, 0x04, 0x4d, 0xe0, 0xb1, 0x6a, 0x01, 0x35, 0x04, 0xcd, 0x17, 0x50, 0xd1, 0x66, 0xfe,
-	0x89, 0x3a, 0xa1, 0xfe, 0x89, 0x63, 0x70, 0x93, 0xd5, 0xf7, 0x9a, 0x69, 0x6b, 0xb7, 0x67, 0xfe,
-	0xc9, 0x1b, 0xde, 0x4e, 0x40, 0x8b, 0x9e, 0xf1, 0x0e, 0xa0, 0x44, 0xd7, 0xc0, 0x2b, 0x0a, 0x97,
-	0x13, 0x73, 0x71, 0xbf, 0x78, 0x1d, 0xca, 0x9c, 0x53, 0x78, 0x61, 0xa6, 0x7e, 0x89, 0x11, 0x78,
-	0x10, 0xfb, 0x0c, 0x10, 0x1f, 0x46, 0x77, 0xac, 0x48, 0xd5, 0x20, 0xe2, 0x48, 0x8f, 0x48, 0x23,
-	0x6c, 0x0a, 0xf5, 0x7d, 0x08, 0x5b, 0x53, 0xd7, 0x79, 0x7f, 0xae, 0xfa, 0x8e, 0x7a, 0xec, 0x3a,
-	0x0c, 0x60, 0x33, 0xd7, 0x12, 0x3e, 0x0c, 0xf1, 0xa6, 0x91, 0xb3, 0xcf, 0x1b, 0x8e, 0x5c, 0x0b,
-	0x3f, 0x04, 0xec, 0xb8, 0xe6, 0xd8, 0xb4, 0x35, 0x4b, 0x9d, 0xba, 0xa6, 0xad, 0x9b, 0x53, 0xcd,
-	0xe2, 0x16, 0x2c, 0x93, 0xcb, 0x61, 0xcb, 0x20, 0x6c, 0xc0, 0x9f, 0x25, 0xd8, 0x63, 0x8d, 0x4b,
-	0x81, 0xf0, 0xb0, 0xa5, 0x1d, 0x6a, 0xfe, 0x08, 0xb6, 0xd3, 0xdc, 0xc2, 0x88, 0x65, 0xce, 0x8f,
-	0x93, 0xfc, 0x81, 0x31, 0xe4, 0xbf, 0x97, 0x00, 0xa5, 0xd7, 0x89, 0x1a, 0x7c, 0x7b, 0x53, 0x97,
-	0xed, 0xa8, 0xb9, 0x95, 0x0a, 0xa8, 0xe1, 0xcc, 0xb3, 0xec, 0x94, 0x5b, 0x6a, 0xa7, 0x1d, 0x40,
-	0x13, 0xed, 0x7d, 0xe8, 0x26, 0x43, 0xac, 0xb3, 0x4d, 0x58, 0x9f, 0x68, 0xef, 0xc5, 0x96, 0x63,
-	0x70, 0x97, 0xff, 0x59, 0x82, 0x2d, 0xa1, 0x13, 0xd3, 0x94, 0x50, 0x6f, 0xea, 0xd8, 0x1e, 0xcd,
-	0x04, 0x90, 0xb4, 0x08, 0xa0, 0x3d, 0x28, 0xb9, 0xa2, 0x0b, 0x57, 0x67, 0x61, 0xaf, 0x86, 0xe6,
-	0x22, 0x11, 0x5f, 0xe6, 0x54, 0xf2, 0xcb, 0xa6, 0x22, 0xff, 0x8b, 0x04, 0xdb, 0x09, 0x05, 0x3b,
-	0x27, 0x9a, 0x65, 0x51, 0x7b, 0x4c, 0x33, 0x0d, 0x27, 0x2d, 0x1a, 0xee, 0x29, 0x94, 0xf5, 0xb0,
-	0xcf, 0x1a, 0x15, 0x63, 0xc6, 0x0f, 0xd4, 0xf1, 0x2b, 0x28, 0x45, 0xb0, 0xc8, 0xda, 0x17, 0xd2,
-	0xfa, 0x7d, 0x91, 0x4b, 0xef, 0x0b, 0xf9, 0x37, 0x1b, 0x11, 0x56, 0x86, 0xb3, 0x63, 0x4f, 0x77,
-	0xcd, 0x63, 0xca, 0x92, 0x1c, 0xdf, 0x99, 0x9a, 0xba, 0x80, 0x48, 0xf0, 0x82, 0x65, 0xa8, 0x7a,
-	0x01, 0x0b, 0x8f, 0x1a, 0x22, 0xe7, 0x4a, 0xd1, 0xf0, 0x97, 0xb0, 0xe9, 0xcd, 0x8e, 0x99, 0xeb,
-	0xe5, 0x3e, 0xaf, 0xbe, 0x77, 0x7f, 0x21, 0x54, 0xa7, 0x86, 0xda, 0x1d, 0x06, 0xdc, 0x24, 0xec,
-	0xc6, 0x5c, 0xba, 0xee, 0xd8, 0xde, 0x6c, 0x42, 0x5d, 0x96, 0xdd, 0x14, 0x82, 0xec, 0x26, 0x24,
-	0x75, 0x0d, 0xfc, 0x09, 0x80, 0xcb, 0x72, 0x1d, 0xcf, 0x67, 0xed, 0x45, 0xde, 0x5e, 0x16, 0x94,
-	0xae, 0xc1, 0xfc, 0x73, 0xd4, 0x9f, 0x1b, 0x45, 0x24, 0x1e, 0x21, 0x91, 0x9b, 0xe4, 0x1e, 0xd4,
-	0xa7, 0xae, 0xe9, 0xb8, 0xa6, 0x7f, 0xae, 0x5a, 0xf4, 0x8c, 0x06, 0x9b, 0xb5, 0x48, 0x6a, 0x21,
-	0xf5, 0x90, 0x11, 0xf1, 0x4d, 0xd8, 0x34, 0x66, 0xae, 0x76, 0x6c, 0x51, 0xbe, 0x3b, 0x4b, 0xcf,
-	0x0b, 0xbe, 0x3b, 0xa3, 0x24, 0x24, 0x62, 0x05, 0x90, 0xe7, 0x6b, 0xae, 0x1f, 0x6d, 0x00, 0x33,
-	0xd8, 0x96, 0x95, 0xbd, 0xeb, 0xe9, 0x69, 0xa7, 0x12, 0x6a, 0x52, 0xe7, 0x9d, 0x22, 0x5a, 0x2a,
-	0x7b, 0x84, 0x8b, 0x65, 0x8f, 0x6c, 0x06, 0x2e, 0xd5, 0x0c, 0x35, 0x8a, 0x13, 0x3c, 0x33, 0x29,
-	0x91, 0x1a, 0xa3, 0x76, 0x42, 0x22, 0xfe, 0x0c, 0x36, 0x82, 0xf0, 0xcd, 0xb3, 0x91, 0xca, 0xde,
-	0x76, 0xd6, 0xa1, 0x87, 0x08, 0x1e, 0xfc, 0x2b, 0x68, 0x98, 0xb6, 0xe9, 0x9b, 0x9a, 0x35, 0x70,
-	0xbc, 0x20, 0x73, 0xaf, 0x71, 0x57, 0xbd, 0xbb, 0x66, 0x15, 0xbb, 0xe9, 0x5e, 0xcf, 0x37, 0x0e,
-	0x35, 0x9f, 0x7a, 0x3e, 0x99, 0x17, 0x87, 0xbf, 0x84, 0x1b, 0x71, 0xc6, 0x97, 0x44, 0x8e, 0xea,
-	0xf9, 0x9a, 0x4f, 0x79, 0x16, 0x53, 0x22, 0xd7, 0x22, 0x9e, 0x61, 0x82, 0x65, 0xc8, 0x38, 0xe4,
-	0x7d, 0xd8, 0x14, 0x98, 0x61, 0xe7, 0x18, 0xe5, 0xbd, 0x6e, 0xcd, 0x3c, 0xf3, 0x2c, 0x3c, 0x64,
-	0x9d, 0x68, 0x2e, 0x35, 0x90, 0xc4, 0xce, 0x34, 0x2f, 0x34, 0xd3, 0x72, 0xce, 0xa8, 0x8b, 0x72,
-	0xb8, 0x0e, 0xf0, 0x9a, 0x9e, 0xab, 0xa2, 0x35, 0x2f, 0xff, 0x18, 0x1a, 0x73, 0x1a, 0xb3, 0xce,
-	0x81, 0xce, 0xe8, 0x12, 0xeb, 0xac, 0x68, 0xae, 0x65, 0xb2, 0x37, 0x49, 0xfe, 0x2f, 0x09, 0x6e,
-	0x89, 0x09, 0x0f, 0xc2, 0xd0, 0x49, 0x8d, 0x11, 0xdb, 0x12, 0x51, 0x32, 0x91, 0xbd, 0x61, 0xd2,
-	0x48, 0xcd, 0xcd, 0x23, 0x35, 0x3b, 0x6a, 0xe4, 0x3f, 0x2c, 0x6a, 0x14, 0x3e, 0x30, 0x6a, 0x14,
-	0x97, 0x46, 0x8d, 0x7f, 0xcf, 0xc1, 0x8f, 0xd6, 0xcc, 0x33, 0xf2, 0xda, 0x37, 0x01, 0xa2, 0x34,
-	0xc2, 0xe3, 0x6e, 0xa7, 0x46, 0x12, 0x94, 0x75, 0x33, 0xff, 0x45, 0xc2, 0x9b, 0xe7, 0x39, 0xc0,
-	0xbe, 0xcc, 0x04, 0xd8, 0x3a, 0x3d, 0x76, 0x0f, 0x1d, 0xe7, 0x74, 0x36, 0xe5, 0x0e, 0x24, 0xf6,
-	0xfb, 0x7f, 0x02, 0x45, 0xea, 0xba, 0x8e, 0xcb, 0x6d, 0xb3, 0x78, 0xce, 0xe7, 0x5e, 0x5b, 0x61,
-	0x0c, 0x24, 0xe0, 0x63, 0x87, 0x58, 0xb1, 0x81, 0x85, 0x79, 0xc2, 0x57, 0xf9, 0x1e, 0x40, 0x3c,
-	0x04, 0xae, 0x30, 0xe8, 0xe9, 0x3a, 0xf5, 0xbc, 0x00, 0x6d, 0x0c, 0x61, 0x0c, 0x6d, 0xf2, 0xaf,
-	0x73, 0x80, 0x85, 0xca, 0x82, 0x9d, 0xaf, 0xff, 0xf7, 0x42, 0xc5, 0x8f, 0xa1, 0xc6, 0xd6, 0x8b,
-	0x79, 0x21, 0xcd, 0x37, 0xcf, 0x02, 0x03, 0x45, 0xd9, 0x5b, 0xba, 0x6d, 0x09, 0x84, 0x0a, 0x1f,
-	0x06, 0xa1, 0xe2, 0x07, 0x42, 0x68, 0x63, 0x29, 0x84, 0xfe, 0x23, 0x0f, 0xd7, 0x16, 0xed, 0x10,
-	0xa1, 0xe6, 0x01, 0xa0, 0x20, 0x99, 0x62, 0x6b, 0x60, 0xea, 0xf4, 0xc8, 0xb5, 0x44, 0xc8, 0x5a,
-	0xa0, 0xe3, 0x47, 0xb0, 0x35, 0x4f, 0x1b, 0x59, 0x9e, 0x48, 0xb6, 0xb3, 0x9a, 0x70, 0x7f, 0x01,
-	0x54, 0x4f, 0x32, 0x41, 0x95, 0xa1, 0x59, 0x36, 0x8e, 0xd2, 0x0b, 0x55, 0x58, 0xbb, 0x50, 0xc5,
-	0x15, 0x0b, 0x15, 0x61, 0x72, 0xe3, 0xc3, 0x31, 0xb9, 0x99, 0xc2, 0x24, 0x4f, 0xf5, 0x83, 0xdc,
-	0xf4, 0xc4, 0x75, 0x66, 0xe3, 0x13, 0xd5, 0x0b, 0xcc, 0xc0, 0x33, 0xd4, 0x52, 0x3a, 0xd5, 0xe7,
-	0x89, 0x6a, 0xc0, 0x16, 0x1b, 0x4b, 0x7e, 0x92, 0x42, 0x75, 0x15, 0x4a, 0x84, 0x1a, 0xa6, 0x4b,
-	0x75, 0xe6, 0xfb, 0x2a, 0xb0, 0x29, 0x72, 0x46, 0x24, 0x25, 0x30, 0x9e, 0x93, 0xff, 0x31, 0x07,
-	0x8d, 0x70, 0x5b, 0x8a, 0x6a, 0xc4, 0x12, 0x80, 0xdf, 0x82, 0x4a, 0x54, 0xc4, 0x88, 0xeb, 0x13,
-	0x21, 0x69, 0x21, 0x82, 0xe7, 0x33, 0x22, 0x78, 0xba, 0x08, 0x52, 0x10, 0x27, 0xac, 0x64, 0x11,
-	0xe4, 0x0e, 0x94, 0xc5, 0x01, 0x96, 0x1a, 0x69, 0xcb, 0xc7, 0xf4, 0x54, 0x60, 0xdd, 0xb8, 0x60,
-	0x60, 0x8d, 0x23, 0xe6, 0xe6, 0xfa, 0x88, 0x29, 0xcf, 0xa0, 0x12, 0x06, 0x43, 0x6a, 0x1b, 0xf3,
-	0x53, 0x97, 0x16, 0xa6, 0xbe, 0xb6, 0x76, 0x73, 0x17, 0xaa, 0xc9, 0xc2, 0x43, 0x98, 0x0c, 0x3e,
-	0x26, 0x95, 0x44, 0xbd, 0x41, 0xfe, 0x07, 0x29, 0x72, 0x38, 0x6c, 0x5c, 0x42, 0x75, 0x6a, 0x4e,
-	0xfd, 0x3f, 0xc2, 0xf0, 0xcf, 0x01, 0x12, 0xb9, 0x4c, 0x7e, 0x7d, 0x2e, 0x53, 0x9e, 0x84, 0xaf,
-	0xf2, 0x6f, 0xe2, 0x63, 0x07, 0x53, 0x8a, 0xc3, 0xf9, 0x8f, 0xa0, 0x52, 0xb4, 0x75, 0xf2, 0x99,
-	0x65, 0xdb, 0x95, 0x5b, 0xa7, 0xc0, 0x71, 0x19, 0xb9, 0xf3, 0x7f, 0x92, 0xa2, 0x03, 0xac, 0x98,
-	0xc5, 0x7c, 0xba, 0x29, 0x2d, 0xa4, 0x9b, 0x69, 0x8b, 0x30, 0xf5, 0x2e, 0x6c, 0x11, 0x96, 0xdd,
-	0xbb, 0x54, 0x54, 0x2c, 0xce, 0x55, 0xdd, 0x99, 0xd9, 0x3e, 0xb7, 0x29, 0x2f, 0x3a, 0x35, 0xe2,
-	0xa6, 0x0e, 0x6b, 0x91, 0xff, 0x37, 0x0f, 0x10, 0x9e, 0x40, 0xf4, 0xd3, 0xf5, 0x9a, 0xfd, 0x14,
-	0x4a, 0x9a, 0x7e, 0x1a, 0x54, 0x3e, 0x72, 0xdc, 0x36, 0xad, 0x4c, 0x87, 0xd7, 0xd6, 0x4f, 0x77,
-	0xdb, 0xfa, 0x69, 0x90, 0x66, 0x6b, 0xc1, 0xc3, 0xc2, 0x42, 0xe7, 0x3f, 0x60, 0x5a, 0x43, 0x40,
-	0x67, 0x9a, 0x65, 0x1a, 0x1a, 0x4f, 0xdc, 0x92, 0xb1, 0x76, 0x67, 0xa9, 0x02, 0x6f, 0xa3, 0x0e,
-	0xc1, 0x5a, 0x35, 0xce, 0xd2, 0x04, 0xa6, 0xd0, 0x42, 0xb5, 0xfd, 0xda, 0xc2, 0x6e, 0x8d, 0x8a,
-	0xba, 0xa9, 0x8a, 0xfb, 0xa7, 0xb0, 0x29, 0x26, 0xc8, 0x52, 0xbd, 0xae, 0x6d, 0x98, 0x67, 0xa6,
-	0x31, 0xd3, 0x2c, 0x74, 0x89, 0xbd, 0x77, 0x66, 0x93, 0x99, 0xc5, 0xdd, 0x30, 0x92, 0xe4, 0xbf,
-	0x93, 0xa0, 0x31, 0xa7, 0x0b, 0xbe, 0x09, 0xd7, 0x8e, 0xe6, 0x0a, 0x80, 0x1d, 0xc7, 0x75, 0x67,
-	0x3c, 0xeb, 0x44, 0x97, 0xf0, 0x55, 0xc0, 0x07, 0x34, 0x51, 0x4d, 0xe4, 0xbd, 0x90, 0x84, 0xb7,
-	0x01, 0x75, 0x4e, 0xa8, 0x7e, 0xea, 0xcd, 0x26, 0x6f, 0x4c, 0x6f, 0xa2, 0xf9, 0xfa, 0x09, 0xca,
-	0xe1, 0x8f, 0xe1, 0x0a, 0xaf, 0x06, 0x1e, 0xd0, 0x21, 0x75, 0x4d, 0xcd, 0x32, 0xbf, 0xa3, 0x41,
-	0x87, 0x3c, 0xde, 0x82, 0xc6, 0x01, 0x0d, 0xab, 0x6e, 0x01, 0xb1, 0x20, 0x1f, 0xc3, 0xf5, 0xc8,
-	0x4e, 0x4c, 0xc9, 0x8e, 0x58, 0xe1, 0xce, 0x89, 0x66, 0x5f, 0x04, 0xa0, 0x32, 0x94, 0x4d, 0x4f,
-	0xd5, 0x78, 0x5f, 0x1e, 0x1f, 0x23, 0x4f, 0x58, 0x32, 0xbd, 0x40, 0xa4, 0xfc, 0x36, 0x72, 0x53,
-	0x2f, 0x2c, 0xe7, 0xdb, 0xf5, 0x32, 0xef, 0x43, 0x5d, 0x2c, 0xf7, 0x80, 0xba, 0x13, 0xd3, 0xf7,
-	0x38, 0xc0, 0x6a, 0x64, 0x8e, 0x2a, 0x8f, 0x22, 0x37, 0x74, 0x64, 0x7b, 0xd1, 0xf1, 0x71, 0xad,
-	0xf8, 0xd5, 0x29, 0x90, 0xfc, 0x5b, 0x29, 0xe1, 0x55, 0xe9, 0xe9, 0x0f, 0x95, 0xf7, 0x43, 0x9c,
-	0x1a, 0x4b, 0x82, 0xc2, 0xbe, 0xa9, 0x9a, 0x3a, 0xc3, 0x7b, 0x81, 0xe0, 0xd0, 0x1e, 0x71, 0x69,
-	0x5d, 0xfe, 0x29, 0x34, 0x85, 0xf2, 0x84, 0x6a, 0xfa, 0x09, 0x35, 0x14, 0xdb, 0xe8, 0xbf, 0x1b,
-	0x85, 0xa1, 0x71, 0xe5, 0x4c, 0xe4, 0xb7, 0x51, 0x11, 0xa2, 0x63, 0x39, 0x1e, 0x8d, 0x22, 0xed,
-	0x5a, 0x37, 0xba, 0xc6, 0xa4, 0x73, 0x72, 0x43, 0x8c, 0xfd, 0xe0, 0xa5, 0xfa, 0x6b, 0x09, 0xee,
-	0x47, 0xb3, 0x15, 0xee, 0xec, 0xc8, 0xd6, 0xf4, 0x53, 0xdb, 0xf9, 0x96, 0x5f, 0x12, 0x85, 0x8e,
-	0xd6, 0x5b, 0x3f, 0xd4, 0xcf, 0xa0, 0x12, 0x2f, 0x13, 0x43, 0xdc, 0x5a, 0x9f, 0x04, 0xd1, 0x3a,
-	0x79, 0xf2, 0x2f, 0x23, 0xd7, 0x2e, 0x72, 0xf4, 0x39, 0xd5, 0xa5, 0x79, 0x54, 0xc4, 0x81, 0x3e,
-	0x77, 0x81, 0x40, 0xff, 0x6f, 0x12, 0x5c, 0x9d, 0x4b, 0x7f, 0x2e, 0x38, 0xce, 0x42, 0x3a, 0x93,
-	0xcb, 0xb8, 0xd3, 0xf9, 0x0c, 0x90, 0xa5, 0x79, 0xbe, 0x9a, 0x0c, 0x85, 0x0c, 0xa8, 0x79, 0x7e,
-	0x21, 0x56, 0x67, 0x6d, 0xc3, 0x38, 0x24, 0x2e, 0x96, 0xea, 0x0b, 0x19, 0xa5, 0x7a, 0xf9, 0x3d,
-	0x54, 0x85, 0xca, 0x81, 0x9f, 0x5b, 0xa3, 0x68, 0x14, 0x68, 0x73, 0x1f, 0x1e, 0x68, 0xf3, 0xe9,
-	0x40, 0x5b, 0x8b, 0x36, 0xf0, 0xc0, 0xb4, 0xc7, 0xc9, 0x57, 0xc7, 0x1e, 0x27, 0xc1, 0x28, 0x56,
-	0x9f, 0x1d, 0xed, 0xd7, 0x1a, 0x72, 0x5d, 0x65, 0x48, 0xfe, 0xef, 0x02, 0xdc, 0xc8, 0x12, 0x4c,
-	0xb2, 0x33, 0xfa, 0x85, 0x01, 0x3e, 0x07, 0xe0, 0x13, 0x53, 0x75, 0xc7, 0xa0, 0xa2, 0x48, 0xbd,
-	0xc2, 0x0a, 0x65, 0xce, 0xdc, 0x71, 0x0c, 0x96, 0x8d, 0xd6, 0x82, 0x9e, 0xb1, 0x3d, 0x78, 0xca,
-	0xca, 0x89, 0x61, 0xaa, 0x71, 0x13, 0x60, 0xe2, 0x8d, 0x89, 0xe6, 0xd3, 0xbe, 0x28, 0xf7, 0x4b,
-	0x24, 0x41, 0x61, 0xc7, 0xa3, 0x89, 0x37, 0x16, 0xe9, 0xfa, 0x74, 0xe6, 0x33, 0xae, 0x22, 0xe7,
-	0x5a, 0xa0, 0x0b, 0x5e, 0xd6, 0x33, 0xda, 0x76, 0xfc, 0x68, 0x11, 0xf0, 0xa6, 0xe8, 0x58, 0x86,
-	0x54, 0xf1, 0x4b, 0x9c, 0x27, 0xd2, 0x05, 0xb1, 0x07, 0x80, 0xb4, 0x33, 0xcd, 0xb4, 0xb4, 0x63,
-	0x2b, 0x72, 0xf9, 0x25, 0xee, 0xe2, 0x16, 0xe8, 0x78, 0x07, 0x1a, 0x33, 0xb6, 0xc5, 0xe3, 0xbd,
-	0xcd, 0x8b, 0x5e, 0x05, 0x32, 0x4f, 0xc6, 0xfb, 0x70, 0xe3, 0xd8, 0x72, 0x18, 0x29, 0x5c, 0x8f,
-	0xbe, 0x7d, 0x24, 0x78, 0xbc, 0xb1, 0xd7, 0x04, 0x5e, 0xed, 0x59, 0xc9, 0xc3, 0x40, 0xa6, 0x19,
-	0x06, 0x8b, 0xbc, 0xbc, 0xc2, 0x55, 0x26, 0xe1, 0x2b, 0x0b, 0x52, 0x7a, 0x58, 0xde, 0x1e, 0x9a,
-	0xb6, 0x1e, 0xdc, 0xb8, 0x95, 0xc9, 0x1c, 0x15, 0x63, 0x71, 0xed, 0x5f, 0xe3, 0xad, 0xc1, 0xdd,
-	0x3e, 0x0b, 0x70, 0x81, 0x9d, 0x94, 0xf7, 0x53, 0xd3, 0xa5, 0x06, 0xaf, 0x3c, 0x49, 0x64, 0x8e,
-	0x2a, 0xd6, 0x6c, 0x5f, 0xd3, 0x4f, 0x2d, 0x67, 0xcc, 0x6f, 0xce, 0x0a, 0x24, 0x41, 0x91, 0xbf,
-	0x86, 0x8f, 0x04, 0xe2, 0x5e, 0x52, 0xff, 0x50, 0xf3, 0x12, 0x55, 0xbd, 0x1f, 0xea, 0x5a, 0x7f,
-	0x1d, 0xd7, 0x9d, 0xe6, 0x65, 0x47, 0x80, 0xee, 0x40, 0x83, 0xbb, 0x8d, 0x44, 0x78, 0x93, 0xd6,
-	0x67, 0xa8, 0x35, 0x2b, 0xa5, 0xe8, 0x1a, 0x3d, 0xfe, 0x53, 0x8a, 0x12, 0x94, 0x97, 0xd4, 0xe7,
-	0x71, 0xcc, 0xeb, 0xbf, 0x63, 0xa8, 0xf1, 0xa6, 0x9a, 0xbe, 0x76, 0x53, 0xdd, 0x80, 0xb2, 0x1d,
-	0xf2, 0x0a, 0xd7, 0x17, 0x13, 0x70, 0x0f, 0x0a, 0x13, 0xb6, 0xd9, 0xf2, 0x2b, 0xca, 0x8c, 0x59,
-	0xa3, 0xee, 0xbe, 0x71, 0x0c, 0xfa, 0x1c, 0x06, 0x0a, 0x19, 0x76, 0x87, 0x23, 0xa5, 0x37, 0x22,
-	0x5c, 0x8e, 0xfc, 0x04, 0x0a, 0xac, 0x85, 0xa5, 0x7d, 0x71, 0x1b, 0xba, 0x84, 0x31, 0xd4, 0x7b,
-	0xfd, 0x9e, 0x9a, 0xa0, 0x49, 0x78, 0x13, 0xf2, 0xed, 0xc3, 0x43, 0x94, 0x93, 0x7f, 0x01, 0x77,
-	0x56, 0x0c, 0x75, 0x51, 0xef, 0x71, 0x15, 0x36, 0xf8, 0xf9, 0x37, 0x88, 0x5c, 0x65, 0x22, 0xde,
-	0x64, 0x3b, 0x3a, 0x15, 0xbd, 0xa4, 0xbe, 0xf8, 0x7c, 0x65, 0x8d, 0xa8, 0xe8, 0x5c, 0x9d, 0x4b,
-	0x9e, 0xab, 0x17, 0xbd, 0x7e, 0x3e, 0xcb, 0xeb, 0xff, 0x41, 0x8a, 0x12, 0x90, 0x68, 0xc0, 0xff,
-	0x27, 0x1e, 0x30, 0x0e, 0xb9, 0x85, 0x0b, 0x54, 0xa3, 0x17, 0xe7, 0x5b, 0xcc, 0x9a, 0xef, 0xff,
-	0x5c, 0x83, 0xca, 0xbe, 0xc6, 0x72, 0x1a, 0x3e, 0x67, 0xbc, 0x27, 0xb6, 0xbb, 0xc4, 0xa3, 0xd8,
-	0xcd, 0xf4, 0x10, 0x09, 0xc6, 0xf4, 0xa7, 0x3e, 0x9b, 0xc2, 0x69, 0x88, 0x64, 0xe0, 0x46, 0x26,
-	0x12, 0x45, 0x65, 0x84, 0x84, 0xcc, 0xf8, 0x67, 0x50, 0x8e, 0x9c, 0x8d, 0x48, 0x2c, 0x6f, 0xae,
-	0xea, 0x49, 0x0d, 0x12, 0x77, 0x60, 0xbd, 0xa3, 0xa4, 0x59, 0x58, 0xe4, 0xe6, 0xea, 0x42, 0x3b,
-	0x89, 0x3b, 0xe0, 0x2f, 0xa0, 0x14, 0xa6, 0x10, 0xdc, 0x30, 0x95, 0x8c, 0xcf, 0x22, 0x92, 0xe9,
-	0x0a, 0x89, 0xd8, 0xf1, 0x43, 0x28, 0x78, 0xd4, 0x0e, 0x2a, 0x79, 0x95, 0xf9, 0x05, 0x4e, 0xd6,
-	0x15, 0x38, 0x1b, 0xee, 0x40, 0x95, 0xfd, 0xaa, 0x6e, 0x50, 0x66, 0x10, 0x85, 0x91, 0xd6, 0xf2,
-	0x6e, 0x01, 0x1f, 0xa9, 0x78, 0x89, 0xda, 0xc4, 0x9f, 0x01, 0x70, 0x21, 0x41, 0x8a, 0x51, 0x5a,
-	0x35, 0xdb, 0xb0, 0x78, 0x40, 0xca, 0x5e, 0x54, 0x47, 0x78, 0x16, 0xe7, 0x1a, 0xe5, 0x15, 0x2b,
-	0x24, 0x90, 0x16, 0x57, 0xcb, 0x1e, 0x40, 0x5e, 0xd3, 0x4f, 0x79, 0xa4, 0xa9, 0xcc, 0xdf, 0x38,
-	0xc7, 0xc7, 0x53, 0xc2, 0x98, 0x98, 0x59, 0xde, 0x59, 0xce, 0xb7, 0x3c, 0xce, 0x2c, 0x33, 0x0b,
-	0x3b, 0x3f, 0x11, 0xce, 0x86, 0xf7, 0xa1, 0x32, 0x8b, 0x4f, 0x3d, 0xe2, 0x82, 0x25, 0xdb, 0x2a,
-	0x89, 0xd3, 0x11, 0x49, 0x76, 0x62, 0xd3, 0xf2, 0x82, 0x34, 0x92, 0x87, 0xa7, 0x65, 0xd3, 0x12,
-	0xa9, 0x26, 0x09, 0x99, 0xf1, 0xa3, 0x30, 0x57, 0xab, 0xf3, 0x5e, 0xd7, 0x32, 0x7b, 0xa5, 0x92,
-	0xb5, 0x2e, 0xd4, 0x75, 0x96, 0xfa, 0xab, 0x11, 0x68, 0x1a, 0xbc, 0xab, 0x9c, 0x8d, 0xd7, 0xe4,
-	0xe9, 0x83, 0xd4, 0xf4, 0xd4, 0x61, 0x24, 0x12, 0x15, 0x06, 0x33, 0xfe, 0xa5, 0xc8, 0x4a, 0x51,
-	0x61, 0x6c, 0x17, 0xa2, 0xa2, 0xf3, 0x47, 0x9f, 0xdf, 0x7f, 0x06, 0xc9, 0x71, 0x68, 0x88, 0xcb,
-	0x5c, 0xd8, 0xdd, 0x95, 0x60, 0x0e, 0x0d, 0xd2, 0x98, 0xce, 0x25, 0xe3, 0x0f, 0xa1, 0x30, 0x35,
-	0xed, 0x31, 0xff, 0xa8, 0x64, 0xd9, 0x1a, 0xb2, 0x9c, 0x94, 0x70, 0x36, 0xce, 0xee, 0xd8, 0x63,
-	0xfe, 0x75, 0xc9, 0x52, 0x76, 0x87, 0xb3, 0x3b, 0xf6, 0x18, 0xff, 0x15, 0xdc, 0x72, 0x57, 0x1f,
-	0x73, 0xf8, 0x37, 0x28, 0x95, 0xbd, 0xa7, 0x99, 0x92, 0xd6, 0x1c, 0x91, 0xc8, 0x3a, 0xe1, 0xf8,
-	0x2f, 0xe0, 0x72, 0x74, 0xcb, 0x12, 0x5e, 0x86, 0x34, 0xaf, 0xf0, 0x11, 0x1f, 0x7e, 0xd8, 0x0d,
-	0xca, 0xa2, 0x1c, 0xec, 0x25, 0xbe, 0x21, 0x99, 0xbf, 0x69, 0x69, 0x5e, 0xe5, 0x83, 0xfc, 0xe4,
-	0x7b, 0x5d, 0xd3, 0x90, 0xe5, 0x72, 0xd9, 0x26, 0xb2, 0xe2, 0x82, 0x7c, 0xf3, 0xa3, 0x15, 0x9b,
-	0x28, 0x59, 0xb8, 0x4f, 0x76, 0xc2, 0xdf, 0xc0, 0x96, 0xb5, 0x58, 0xd4, 0x6f, 0x36, 0xb9, 0xac,
-	0x9d, 0x8b, 0x5e, 0x02, 0x90, 0x2c, 0x21, 0xf8, 0x55, 0x7c, 0x9d, 0xcc, 0xcf, 0x12, 0xcd, 0x8f,
-	0x57, 0x41, 0x3d, 0x75, 0xea, 0x48, 0x77, 0xc4, 0xbf, 0x82, 0x2b, 0x7a, 0xd6, 0xa9, 0xa4, 0x79,
-	0x8d, 0x4b, 0x7c, 0x70, 0x01, 0x89, 0xa1, 0xa6, 0xd9, 0x82, 0xf0, 0x08, 0x2e, 0xbb, 0xf3, 0x25,
-	0x87, 0xe6, 0x75, 0x2e, 0xfd, 0xfe, 0x12, 0x3c, 0xce, 0x71, 0x93, 0x45, 0x01, 0x41, 0xb0, 0xa0,
-	0xa7, 0xcd, 0x1b, 0x2b, 0x83, 0x05, 0x3d, 0x25, 0x9c, 0x0d, 0x7f, 0x05, 0x68, 0x3c, 0x97, 0xae,
-	0x36, 0x3f, 0xe1, 0x5d, 0xef, 0x2d, 0xcb, 0xee, 0xd2, 0xb9, 0xed, 0x42, 0x77, 0x6c, 0x42, 0x73,
-	0xbc, 0x24, 0x03, 0x6e, 0xde, 0x5c, 0x01, 0xfe, 0x65, 0x69, 0x33, 0x59, 0x2a, 0x0e, 0xab, 0x70,
-	0x35, 0xa8, 0xa4, 0x45, 0xbe, 0x4d, 0xd5, 0x79, 0x1d, 0xae, 0x79, 0x8b, 0x0f, 0xf4, 0xe9, 0x92,
-	0x08, 0xb2, 0x58, 0xb8, 0x23, 0xdb, 0x5a, 0x56, 0x39, 0xef, 0x97, 0xb0, 0x3d, 0xce, 0x48, 0x32,
-	0x9b, 0xad, 0x15, 0xe2, 0x33, 0xb3, 0xd2, 0x4c, 0x31, 0x78, 0x06, 0x37, 0xc6, 0x2b, 0x72, 0xd8,
-	0xe6, 0x6d, 0x3e, 0xcc, 0xe3, 0x8b, 0x0f, 0x13, 0x9a, 0x6c, 0xa5, 0x58, 0x96, 0xc9, 0x8c, 0xc3,
-	0x5c, 0xb3, 0x29, 0xaf, 0x88, 0xed, 0x71, 0x46, 0x1a, 0x77, 0x60, 0xb8, 0x1d, 0xcf, 0x67, 0xaa,
-	0xcd, 0x3b, 0x2b, 0x70, 0xbb, 0x90, 0xd7, 0x92, 0x45, 0x01, 0x6c, 0xe7, 0x6a, 0xc9, 0x0f, 0x79,
-	0x9a, 0x77, 0x57, 0xec, 0xdc, 0xd4, 0x27, 0x3f, 0x24, 0xdd, 0x11, 0x2b, 0x50, 0xd5, 0x12, 0xdf,
-	0x2c, 0x35, 0xef, 0x71, 0x41, 0xb7, 0x97, 0x0a, 0x8a, 0xb4, 0x4a, 0x75, 0x93, 0x7f, 0x57, 0x14,
-	0xdf, 0x85, 0x57, 0x60, 0xb3, 0xd3, 0xef, 0xf5, 0x94, 0xce, 0x08, 0xe5, 0x70, 0x0d, 0xca, 0xe2,
-	0x45, 0x39, 0x40, 0x79, 0xf6, 0x3a, 0x3c, 0xda, 0x1f, 0x76, 0x48, 0x77, 0x5f, 0x41, 0x05, 0xfe,
-	0x89, 0x38, 0xe9, 0x1f, 0x1c, 0x75, 0x14, 0x12, 0x7c, 0x0e, 0x3e, 0x54, 0x7a, 0x07, 0x68, 0x03,
-	0x23, 0xa8, 0xb2, 0x27, 0x95, 0x28, 0x1d, 0xa5, 0x3b, 0x18, 0xa1, 0x4d, 0x76, 0xe2, 0xe1, 0x14,
-	0x85, 0x90, 0x3e, 0x41, 0x25, 0x36, 0xc8, 0x1b, 0x65, 0x38, 0x6c, 0xbf, 0x54, 0x50, 0x99, 0x1f,
-	0x75, 0x3a, 0xaf, 0x11, 0x30, 0x09, 0x2f, 0x0e, 0xfb, 0x3f, 0x47, 0x15, 0xdc, 0x80, 0xca, 0x51,
-	0x2f, 0x1e, 0xaa, 0xca, 0x6f, 0xb7, 0x8f, 0x3a, 0x1d, 0x65, 0x38, 0x44, 0x35, 0x5c, 0x86, 0x62,
-	0x20, 0xa8, 0xce, 0x8e, 0x4e, 0x9d, 0xc3, 0xfe, 0x50, 0x51, 0x23, 0x45, 0x1a, 0x31, 0xad, 0xd3,
-	0xef, 0x0d, 0x8f, 0xde, 0x28, 0x04, 0x21, 0xbc, 0x0d, 0x28, 0xe4, 0x50, 0x43, 0x41, 0x97, 0xd9,
-	0x80, 0x83, 0x6e, 0xef, 0x25, 0xc2, 0xfc, 0xa9, 0xdf, 0x7b, 0x89, 0xb6, 0xf0, 0x3d, 0xb8, 0x4d,
-	0x94, 0x03, 0xe5, 0xb0, 0xfb, 0x56, 0x21, 0xea, 0x51, 0xaf, 0xdd, 0x79, 0xdd, 0xeb, 0xff, 0xfc,
-	0x50, 0x39, 0x78, 0xa9, 0x1c, 0xa8, 0x42, 0xe7, 0x21, 0xda, 0xc6, 0x4d, 0xd8, 0x1e, 0xb4, 0xc9,
-	0xa8, 0x3b, 0xea, 0xf6, 0x7b, 0xbc, 0x65, 0xd4, 0x3e, 0x68, 0x8f, 0xda, 0xe8, 0x0a, 0xbe, 0x0d,
-	0x9f, 0x64, 0xb5, 0xa8, 0x44, 0x19, 0x0e, 0xfa, 0xbd, 0xa1, 0x82, 0xae, 0xf2, 0xef, 0x39, 0xfa,
-	0xfd, 0xd7, 0x47, 0x03, 0xf4, 0x11, 0xde, 0x82, 0x46, 0xf0, 0x1c, 0x33, 0x34, 0xf9, 0x14, 0x84,
-	0xf2, 0xea, 0x70, 0xd4, 0x1e, 0x0d, 0xd1, 0xc7, 0xf8, 0x3a, 0x7c, 0x94, 0xa6, 0xc5, 0x1d, 0xae,
-	0x31, 0x75, 0x88, 0xd2, 0xee, 0xbc, 0x52, 0x0e, 0x54, 0x66, 0xe7, 0xfe, 0x0b, 0x75, 0xd4, 0x1f,
-	0x74, 0x3b, 0xe8, 0x7a, 0xb0, 0x2c, 0xca, 0x6b, 0x74, 0x03, 0x7f, 0x04, 0x5b, 0x2f, 0x95, 0x91,
-	0x7a, 0xd8, 0x1e, 0x8e, 0xc2, 0x99, 0xa8, 0xdd, 0x03, 0xf4, 0x09, 0x6e, 0xc1, 0x8d, 0x8c, 0x86,
-	0x58, 0xfc, 0x4d, 0x7c, 0x0d, 0xae, 0xb6, 0x3b, 0xa3, 0xee, 0xdb, 0xd8, 0xa6, 0x6a, 0xe7, 0x55,
-	0xbb, 0xf7, 0x52, 0x41, 0xb7, 0x98, 0x5e, 0xac, 0x37, 0x1f, 0x6f, 0xc8, 0x46, 0xee, 0xb5, 0xdf,
-	0x28, 0xc3, 0x41, 0xbb, 0xa3, 0xa0, 0x16, 0xbe, 0x0b, 0xad, 0x25, 0x8d, 0xb1, 0xf8, 0xdb, 0x0c,
-	0x1e, 0x8c, 0x6b, 0xd8, 0x79, 0xa5, 0xbc, 0x69, 0x23, 0x39, 0xd4, 0x34, 0x78, 0x8f, 0x19, 0xef,
-	0x30, 0xbb, 0xb4, 0x8f, 0x46, 0xaf, 0xd8, 0xe0, 0x87, 0x87, 0x0a, 0x1b, 0xff, 0x2e, 0xbe, 0x0c,
-	0x35, 0x4e, 0x8b, 0xd8, 0xee, 0x3d, 0x38, 0xe0, 0xb7, 0xc1, 0xc9, 0xcf, 0xae, 0xf9, 0xdf, 0x1d,
-	0xfa, 0x3d, 0x05, 0x5d, 0x62, 0x70, 0x3b, 0xfc, 0xe6, 0x69, 0xf0, 0x5f, 0x87, 0x6f, 0x0e, 0xbb,
-	0xfb, 0x28, 0xc7, 0x9f, 0x86, 0x23, 0x86, 0x70, 0x80, 0x8d, 0x61, 0xaf, 0x3d, 0x18, 0x7c, 0x8d,
-	0x0a, 0x0f, 0xfe, 0x90, 0x87, 0x4a, 0xe2, 0x40, 0xc9, 0x60, 0x7d, 0x64, 0xb3, 0xbc, 0x47, 0xdc,
-	0x8e, 0x5c, 0x62, 0x43, 0x87, 0x39, 0x43, 0xe2, 0xda, 0x65, 0xc0, 0xce, 0x7e, 0x9e, 0x4f, 0x6d,
-	0x5d, 0xdc, 0xad, 0xe4, 0xd8, 0x84, 0xd8, 0xde, 0xa3, 0xb6, 0x6f, 0xea, 0xf1, 0xdd, 0x0e, 0xca,
-	0xe3, 0xab, 0x80, 0xdb, 0xc1, 0x5d, 0xfc, 0x77, 0x09, 0x7a, 0x81, 0x8d, 0x15, 0xfa, 0xe6, 0xfd,
-	0x99, 0x77, 0x8e, 0x8a, 0x0c, 0x27, 0xe2, 0x96, 0xbc, 0xe7, 0xf8, 0x84, 0x6a, 0xc6, 0x39, 0xda,
-	0x60, 0x60, 0x0d, 0x93, 0xce, 0xfd, 0xa0, 0x4e, 0xf5, 0xd5, 0xcc, 0xf1, 0x35, 0xe5, 0xbd, 0x4e,
-	0xa9, 0x41, 0x83, 0x1c, 0x1b, 0x6d, 0xe2, 0x4f, 0xe1, 0xde, 0x4a, 0xb6, 0xf7, 0x3a, 0x0d, 0xae,
-	0x93, 0x4a, 0x6c, 0x4a, 0xe1, 0xb5, 0x51, 0xd0, 0xbb, 0xcc, 0x16, 0x98, 0x1d, 0x11, 0xa6, 0x53,
-	0xc7, 0xf5, 0xa9, 0x21, 0x4e, 0xb6, 0x41, 0x23, 0x30, 0x7e, 0xee, 0x79, 0x7b, 0x8e, 0xff, 0xc2,
-	0x99, 0xd9, 0x06, 0xaa, 0x30, 0x2c, 0x26, 0xbf, 0x8c, 0x8a, 0x5a, 0xaa, 0xfc, 0x4e, 0x2a, 0x2c,
-	0xec, 0x85, 0xd4, 0x1a, 0x9b, 0xd9, 0xc8, 0x71, 0xde, 0x68, 0xf6, 0x39, 0x09, 0xce, 0xfa, 0x1e,
-	0xaa, 0x33, 0x21, 0x5c, 0xee, 0x88, 0xba, 0x13, 0xd3, 0xd6, 0xfc, 0x70, 0x32, 0x0d, 0x66, 0x9a,
-	0x68, 0x32, 0xcc, 0x34, 0x7c, 0x73, 0x77, 0x6d, 0x7e, 0x65, 0x17, 0xa8, 0xa2, 0x4d, 0x28, 0xba,
-	0xcc, 0x4c, 0xdb, 0xe5, 0x17, 0x67, 0x9a, 0x6f, 0x1e, 0x5b, 0x34, 0x70, 0xc0, 0x08, 0xb3, 0xb5,
-	0x08, 0x95, 0x68, 0x7b, 0x9e, 0x39, 0x16, 0x53, 0xd9, 0x7a, 0xf0, 0x1a, 0x20, 0xfe, 0x5c, 0x84,
-	0x43, 0x2d, 0xfe, 0x54, 0x31, 0xf8, 0xa7, 0xcc, 0x16, 0x34, 0x62, 0xda, 0xd7, 0xba, 0xf6, 0xf6,
-	0x71, 0xb0, 0xe2, 0x31, 0xb1, 0xcd, 0x16, 0xd9, 0x43, 0xb9, 0x07, 0x7f, 0x2b, 0x41, 0x63, 0x30,
-	0xf7, 0x41, 0xea, 0x06, 0xe4, 0xce, 0x1e, 0xa1, 0x4b, 0xfc, 0x97, 0xf5, 0x64, 0xbf, 0x7b, 0x28,
-	0xc7, 0x7f, 0x9f, 0xa0, 0x3c, 0xff, 0x7d, 0x8a, 0x0a, 0xfc, 0xf7, 0x27, 0xa8, 0xc8, 0x7f, 0x9f,
-	0xa1, 0x0d, 0xfe, 0xfb, 0xa7, 0x68, 0x93, 0xff, 0x7e, 0x8e, 0x4a, 0xfc, 0xf7, 0x8b, 0xc0, 0x71,
-	0x9e, 0x3d, 0x7e, 0x84, 0x20, 0x78, 0x78, 0x8c, 0x2a, 0xc1, 0xc3, 0x1e, 0xaa, 0x06, 0x0f, 0x4f,
-	0x50, 0x2d, 0x78, 0x78, 0x8a, 0xea, 0xfb, 0xf7, 0x41, 0x76, 0xdc, 0xf1, 0xae, 0x36, 0x65, 0x29,
-	0x54, 0x18, 0x1d, 0x74, 0x67, 0x32, 0x71, 0xec, 0x5d, 0x2d, 0xfc, 0x4f, 0xd3, 0xab, 0xfc, 0xff,
-	0x05, 0x00, 0x00, 0xff, 0xff, 0x47, 0xe6, 0x3b, 0xba, 0xe7, 0x34, 0x00, 0x00,
+func init() { proto.RegisterFile("PulsarApi.proto", fileDescriptor_39529ba7ad9caeb8) }
+
+var fileDescriptor_39529ba7ad9caeb8 = []byte{
+	// 5471 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3c, 0x4d, 0x6f, 0x1b, 0x49,
+	0x76, 0x6e, 0x92, 0x92, 0xc8, 0x47, 0x91, 0x2c, 0x97, 0x65, 0xbb, 0xc7, 0xf6, 0xd8, 0x72, 0x7b,
+	0xec, 0xd1, 0x78, 0xc6, 0x8a, 0x2d, 0x7b, 0xbc, 0x33, 0x9e, 0xd9, 0x60, 0x28, 0x8a, 0xb6, 0x19,
+	0x49, 0x24, 0xb7, 0x48, 0x79, 0x33, 0x9b, 0x5d, 0xf4, 0xb6, 0xba, 0xcb, 0x54, 0x43, 0xcd, 0x6e,
+	0xa6, 0xbb, 0xa9, 0xb1, 0x06, 0x48, 0x90, 0xcb, 0x22, 0x40, 0xb0, 0x40, 0x90, 0x53, 0x0e, 0x01,
+	0x12, 0xe4, 0x90, 0x1f, 0xb0, 0xb7, 0x00, 0x0b, 0xe4, 0x16, 0x24, 0x87, 0x1c, 0x73, 0xc8, 0x9e,
+	0x16, 0x08, 0x12, 0xe4, 0xb0, 0x58, 0x20, 0xf9, 0x07, 0x41, 0x55, 0x57, 0x7f, 0x91, 0x4d, 0x52,
+	0x9a, 0xd9, 0x60, 0x27, 0x73, 0x62, 0xf7, 0xab, 0x57, 0xaf, 0x5e, 0xbd, 0xaf, 0x7a, 0xf5, 0xaa,
+	0x9a, 0x50, 0xeb, 0x8e, 0x2d, 0x4f, 0x73, 0xeb, 0x23, 0x73, 0x73, 0xe4, 0x3a, 0xbe, 0x83, 0x57,
+	0x47, 0x1c, 0x10, 0xbc, 0x29, 0xff, 0x9e, 0x83, 0xe5, 0x9e, 0x7e, 0x44, 0x87, 0x1a, 0xc6, 0x50,
+	0xb0, 0xb5, 0x21, 0x95, 0xa5, 0xf5, 0xdc, 0x46, 0x89, 0xf0, 0x67, 0x7c, 0x0b, 0xca, 0x1e, 0x6f,
+	0x55, 0x0d, 0xcd, 0xd7, 0xe4, 0xfc, 0x7a, 0x6e, 0x63, 0x95, 0x40, 0x00, 0xda, 0xd1, 0x7c, 0x0d,
+	0x3f, 0x80, 0x82, 0x7f, 0x3a, 0xa2, 0x72, 0x61, 0x3d, 0xb7, 0x51, 0xdd, 0x7a, 0x6b, 0x33, 0x49,
+	0x7c, 0x33, 0x20, 0xbc, 0xd9, 0x3f, 0x1d, 0x51, 0xc2, 0xd1, 0xf0, 0x53, 0x80, 0x91, 0xeb, 0x8c,
+	0xa8, 0xeb, 0x9b, 0xd4, 0x93, 0x97, 0xd6, 0xf3, 0x1b, 0xe5, 0xad, 0x2b, 0xe9, 0x4e, 0xbb, 0xf4,
+	0xf4, 0x95, 0x66, 0x8d, 0x29, 0x49, 0x60, 0x2a, 0x3f, 0x97, 0xa0, 0xc0, 0xc8, 0xe0, 0x22, 0x14,
+	0xda, 0x8e, 0x4d, 0xd1, 0x05, 0x0c, 0xb0, 0xdc, 0xf3, 0x5d, 0xd3, 0x1e, 0x20, 0x89, 0x41, 0x7f,
+	0xcf, 0x73, 0x6c, 0x94, 0xc3, 0xab, 0x50, 0xec, 0x32, 0x32, 0x87, 0xe3, 0xd7, 0x28, 0xcf, 0xe0,
+	0xf5, 0x13, 0xd7, 0x41, 0x05, 0xf6, 0xb4, 0xed, 0x38, 0x16, 0x5a, 0x62, 0x4f, 0x2d, 0xdb, 0xff,
+	0x08, 0x2d, 0xe3, 0x12, 0x2c, 0xb5, 0x6c, 0xff, 0xd1, 0x53, 0xb4, 0x22, 0x1e, 0x1f, 0x6f, 0xa1,
+	0xa2, 0x78, 0x7c, 0xfa, 0x04, 0x95, 0xd8, 0xe3, 0x73, 0xcb, 0xd1, 0x7c, 0x04, 0x6c, 0xb4, 0x1d,
+	0x67, 0x7c, 0x68, 0x51, 0x54, 0x66, 0x14, 0x76, 0x34, 0x9f, 0xa2, 0x55, 0xf6, 0xd4, 0x37, 0x87,
+	0x14, 0x55, 0x70, 0x05, 0x4a, 0xec, 0xc9, 0xf3, 0xb5, 0xe1, 0x08, 0x55, 0x19, 0x1b, 0xe1, 0x3c,
+	0x50, 0x4d, 0xf9, 0xa9, 0x04, 0x95, 0x7d, 0xea, 0x79, 0xda, 0x80, 0xb6, 0x0c, 0x2e, 0xb6, 0x6b,
+	0x50, 0xb4, 0xa8, 0x31, 0xa0, 0x6e, 0xcb, 0xe0, 0xf2, 0x2e, 0x90, 0xe8, 0x1d, 0xcb, 0xb0, 0x42,
+	0x6d, 0xdf, 0x3d, 0x6d, 0x19, 0x72, 0x8e, 0x37, 0x85, 0xaf, 0x78, 0x1d, 0x4a, 0x23, 0xcd, 0xf5,
+	0x4d, 0xdf, 0x74, 0x6c, 0x39, 0xbf, 0x2e, 0x6d, 0x2c, 0x3d, 0xcb, 0x3d, 0x78, 0x44, 0x62, 0x20,
+	0xbe, 0x03, 0xe5, 0x43, 0xcd, 0xd7, 0x8f, 0x54, 0xd3, 0x36, 0xe8, 0x1b, 0xb9, 0x10, 0xe1, 0x00,
+	0x07, 0xb7, 0x18, 0x54, 0xd9, 0x8a, 0x99, 0xc3, 0x08, 0xf2, 0xc7, 0xf4, 0x54, 0xe8, 0x9c, 0x3d,
+	0xe2, 0x35, 0x58, 0x3a, 0x61, 0x4d, 0x7c, 0xf0, 0x12, 0x09, 0x5e, 0x94, 0xa7, 0xb0, 0xba, 0x4b,
+	0x4f, 0xf7, 0x1c, 0x7b, 0x70, 0xa6, 0x7e, 0x85, 0xb0, 0xdf, 0x16, 0x14, 0x5b, 0xb6, 0x4f, 0x34,
+	0x7b, 0x40, 0x19, 0x86, 0xe7, 0x6b, 0xae, 0xcf, 0x7b, 0x2d, 0x91, 0xe0, 0x85, 0x51, 0xa2, 0x76,
+	0x30, 0xd5, 0x25, 0xc2, 0x1e, 0x15, 0x0b, 0xaa, 0x4d, 0x5b, 0x77, 0x4f, 0x47, 0x6c, 0x4a, 0xbb,
+	0xf4, 0xd4, 0x5b, 0x34, 0xda, 0xaa, 0x18, 0x0d, 0x6f, 0x41, 0x71, 0x48, 0x7d, 0x4d, 0xd8, 0xea,
+	0x3c, 0xe3, 0x8a, 0xf0, 0x94, 0x5f, 0xaf, 0x40, 0x4d, 0x28, 0x67, 0x5f, 0xc0, 0xf0, 0x1d, 0xa8,
+	0x8c, 0x5c, 0xc7, 0x18, 0xeb, 0xd4, 0x55, 0x13, 0x3e, 0xb1, 0x1a, 0x02, 0xdb, 0xa1, 0x6f, 0xd0,
+	0x3f, 0x1c, 0x53, 0x5b, 0xa7, 0xaa, 0x19, 0xea, 0x0a, 0x42, 0x50, 0xcb, 0xc0, 0xb7, 0x61, 0x75,
+	0x34, 0x3e, 0xb4, 0x4c, 0xef, 0x48, 0xf5, 0xcd, 0x21, 0xe5, 0xde, 0x53, 0x20, 0x65, 0x01, 0x63,
+	0xe6, 0x32, 0xe1, 0x0f, 0x85, 0xb3, 0xfa, 0x03, 0x7e, 0x17, 0x6a, 0x2e, 0x1d, 0x59, 0xa6, 0xae,
+	0xf9, 0xd4, 0x50, 0x5f, 0xbb, 0xce, 0x50, 0x5e, 0x5a, 0x97, 0x36, 0x4a, 0xa4, 0x1a, 0x83, 0x9f,
+	0xbb, 0xce, 0x90, 0xcf, 0x24, 0xb4, 0x0e, 0x95, 0xc9, 0x70, 0x99, 0xa3, 0xad, 0x46, 0xc0, 0x5d,
+	0x7a, 0xca, 0x18, 0x8d, 0xba, 0xa9, 0xbe, 0x23, 0xaf, 0xac, 0xe7, 0x37, 0x4a, 0xa4, 0x1c, 0xc1,
+	0xfa, 0x0e, 0x6e, 0x42, 0x59, 0x77, 0x86, 0x23, 0x97, 0x7a, 0x1e, 0x33, 0xbe, 0xe2, 0xba, 0xb4,
+	0x51, 0xdd, 0x7a, 0x3b, 0xcd, 0x69, 0x23, 0x46, 0x60, 0xbe, 0xfa, 0xac, 0xd0, 0xee, 0xb4, 0x9b,
+	0x24, 0xd9, 0x0f, 0x6f, 0xc2, 0xc5, 0xb1, 0x1d, 0x02, 0xa8, 0xa1, 0x7a, 0xe6, 0x97, 0x54, 0x2e,
+	0xad, 0x4b, 0x1b, 0x95, 0x67, 0xd2, 0x43, 0x82, 0x92, 0x6d, 0x3d, 0xf3, 0x4b, 0x8a, 0x9f, 0xc0,
+	0x65, 0x7b, 0x3c, 0x54, 0x87, 0x81, 0x7e, 0x3c, 0xd5, 0xb4, 0x55, 0x6e, 0xc8, 0x72, 0x99, 0x5b,
+	0xb6, 0xf4, 0x88, 0x60, 0x7b, 0x3c, 0x14, 0xea, 0xf3, 0x5a, 0xf6, 0x36, 0x6b, 0xc4, 0xeb, 0x00,
+	0xf4, 0x84, 0xda, 0x7e, 0x20, 0xf6, 0xd5, 0x75, 0x69, 0xa3, 0xc0, 0xc8, 0x97, 0x38, 0x90, 0xcb,
+	0xbd, 0x09, 0x35, 0x1a, 0x99, 0x18, 0x93, 0x8b, 0x27, 0x57, 0xb8, 0xf0, 0x6f, 0xa4, 0xa7, 0x94,
+	0xb6, 0x43, 0x52, 0xa5, 0x69, 0xbb, 0x7c, 0x37, 0x45, 0x46, 0xb3, 0x06, 0x8e, 0x5c, 0x0d, 0xd4,
+	0x10, 0x83, 0xeb, 0xd6, 0xc0, 0xc1, 0xef, 0x01, 0x4a, 0x20, 0x8e, 0x34, 0x57, 0x1b, 0xca, 0xb5,
+	0x75, 0x69, 0x63, 0x95, 0x24, 0x08, 0x74, 0x19, 0x18, 0xdf, 0x85, 0xaa, 0x08, 0xb9, 0x27, 0xd4,
+	0xe5, 0xc2, 0x46, 0x1c, 0xb1, 0x12, 0x40, 0x5f, 0x05, 0x40, 0xfc, 0x19, 0xbc, 0x95, 0x52, 0xac,
+	0x7a, 0xf8, 0xf4, 0x89, 0x4a, 0x6d, 0xdd, 0x31, 0xa8, 0x21, 0x5f, 0x5c, 0x97, 0x36, 0x8a, 0xcf,
+	0x96, 0x5e, 0x6b, 0x96, 0x47, 0xc9, 0x95, 0xa4, 0xae, 0xb7, 0x9f, 0x3e, 0x69, 0x06, 0x48, 0x4c,
+	0xeb, 0x8e, 0x6b, 0x50, 0x16, 0x42, 0xb9, 0x65, 0x60, 0x3e, 0x4c, 0x39, 0x84, 0x31, 0xc3, 0xb8,
+	0x07, 0x35, 0x83, 0x5a, 0xe6, 0x09, 0x75, 0x55, 0x4d, 0x48, 0xf3, 0xd2, 0xba, 0xb4, 0x91, 0x27,
+	0x15, 0x01, 0xae, 0x07, 0xe2, 0xbc, 0x05, 0xe5, 0xa1, 0xe6, 0x1e, 0x53, 0x57, 0xe5, 0x8b, 0xc1,
+	0x1a, 0x53, 0x0e, 0x81, 0x00, 0xc4, 0xc3, 0xf6, 0xfb, 0x80, 0xfc, 0x37, 0xb6, 0x69, 0xa8, 0x16,
+	0xd5, 0x3c, 0x5f, 0x3d, 0x34, 0x7d, 0x4f, 0xbe, 0x12, 0xea, 0xa5, 0xca, 0x9b, 0xf6, 0x58, 0xcb,
+	0xb6, 0xe9, 0x7b, 0xf8, 0x3d, 0xa8, 0x05, 0xc8, 0x43, 0x27, 0xc4, 0xbd, 0x1a, 0xe2, 0x56, 0x78,
+	0xcb, 0xbe, 0x23, 0x50, 0x1f, 0xc1, 0xa5, 0x23, 0x73, 0x70, 0x44, 0x3d, 0x5f, 0x4d, 0xfa, 0xa2,
+	0x1c, 0xa2, 0x5f, 0x14, 0xad, 0xbd, 0xc8, 0x2b, 0x95, 0x5f, 0xe5, 0xe0, 0x72, 0xcf, 0xb4, 0x07,
+	0x16, 0x9d, 0xf4, 0xfa, 0xb4, 0x33, 0x4a, 0x67, 0x76, 0xc6, 0x29, 0x1f, 0xcb, 0x65, 0xfb, 0xd8,
+	0x48, 0x3b, 0xb5, 0x1c, 0x4d, 0x18, 0x7d, 0x9e, 0xc7, 0xbb, 0xb2, 0x80, 0x71, 0x63, 0xbf, 0x0f,
+	0x15, 0x66, 0xfe, 0x9a, 0xce, 0x7c, 0xda, 0x19, 0xfb, 0x3c, 0x7c, 0x47, 0x6a, 0x5c, 0x8d, 0xda,
+	0x3a, 0x63, 0x7f, 0xc2, 0xc4, 0x97, 0x32, 0x4c, 0x7c, 0xae, 0x81, 0x2c, 0x7f, 0x15, 0x03, 0x59,
+	0x99, 0x36, 0x90, 0x89, 0x18, 0xc8, 0xc2, 0x42, 0x2a, 0x06, 0x2a, 0x7f, 0x97, 0x87, 0x6a, 0xc3,
+	0x19, 0x0e, 0x35, 0xdb, 0x68, 0x38, 0xb6, 0x4d, 0x75, 0x9f, 0x19, 0xb8, 0x6e, 0x99, 0x8c, 0xf7,
+	0xd0, 0xc0, 0x83, 0xe8, 0x5a, 0x09, 0xa0, 0xa1, 0x81, 0x7f, 0x0c, 0x65, 0x6d, 0xec, 0x1f, 0xa9,
+	0x43, 0xea, 0x1f, 0x39, 0x06, 0x97, 0x69, 0x75, 0x4b, 0x4e, 0xab, 0xa3, 0x3e, 0xf6, 0x8f, 0xf6,
+	0x79, 0x3b, 0x01, 0x2d, 0x7a, 0xc6, 0x1b, 0x80, 0x12, 0x5d, 0x83, 0x08, 0x2e, 0xc2, 0x63, 0x8c,
+	0xc5, 0x63, 0xf8, 0x75, 0x28, 0x71, 0x4c, 0xb1, 0x62, 0xb0, 0xf9, 0x15, 0x19, 0x80, 0x2f, 0xd2,
+	0x1f, 0x00, 0xe2, 0xc3, 0xe8, 0x8e, 0x15, 0xb1, 0x1a, 0xac, 0xa8, 0xd2, 0x43, 0x52, 0x0b, 0x9b,
+	0x42, 0x7e, 0x1f, 0xc0, 0xa5, 0x91, 0xeb, 0xbc, 0x39, 0x55, 0x7d, 0x47, 0x3d, 0x74, 0x1d, 0xe6,
+	0x0c, 0x63, 0xd7, 0x12, 0xf1, 0x16, 0xf1, 0xa6, 0xbe, 0xb3, 0xcd, 0x1b, 0x0e, 0x5c, 0x0b, 0x3f,
+	0x00, 0xec, 0xb8, 0xe6, 0xc0, 0xb4, 0x35, 0x4b, 0x1d, 0xb9, 0xa6, 0xad, 0x9b, 0x23, 0xcd, 0xe2,
+	0x22, 0x2e, 0x91, 0x8b, 0x61, 0x4b, 0x37, 0x6c, 0xc0, 0x1f, 0x24, 0xd0, 0x63, 0x8e, 0x8b, 0x01,
+	0xf1, 0xb0, 0xa5, 0x1e, 0x72, 0xfe, 0x10, 0xd6, 0xd2, 0xd8, 0x42, 0x88, 0x25, 0x8e, 0x8f, 0x93,
+	0xf8, 0x81, 0x30, 0x94, 0xbf, 0x90, 0x00, 0xa5, 0xf5, 0x44, 0x0d, 0x1e, 0x8a, 0xa8, 0xcb, 0xbc,
+	0x7f, 0x42, 0x53, 0x01, 0x34, 0x9c, 0x79, 0x96, 0x9c, 0x72, 0x33, 0xe5, 0xb4, 0x01, 0x68, 0xa8,
+	0xbd, 0x09, 0x43, 0x7a, 0xe8, 0x0c, 0x2c, 0x60, 0x54, 0x87, 0xda, 0x1b, 0xe1, 0x93, 0xcc, 0x1f,
+	0x94, 0xbf, 0x96, 0xe0, 0x92, 0xe0, 0x89, 0x71, 0x4a, 0xa8, 0x37, 0x72, 0x6c, 0x8f, 0x66, 0x1a,
+	0x90, 0x34, 0x6d, 0x40, 0x5b, 0x50, 0x74, 0x45, 0x17, 0xce, 0xce, 0x94, 0x33, 0x87, 0xe2, 0x22,
+	0x11, 0x5e, 0xe6, 0x54, 0xf2, 0xb3, 0xa6, 0xa2, 0xfc, 0xad, 0x04, 0x6b, 0x09, 0x06, 0x1b, 0x47,
+	0x9a, 0x65, 0x51, 0x96, 0xe9, 0x64, 0x09, 0x4e, 0x9a, 0x16, 0xdc, 0x13, 0x28, 0xe9, 0x61, 0x9f,
+	0x05, 0x2c, 0xc6, 0x88, 0xe7, 0xe4, 0xf1, 0x7b, 0x50, 0x8c, 0xcc, 0x22, 0xcb, 0x2f, 0xa4, 0xc5,
+	0x7e, 0x91, 0x4b, 0xfb, 0x85, 0xf2, 0x67, 0x12, 0x54, 0x76, 0xe9, 0x69, 0xef, 0x48, 0x73, 0xa9,
+	0xc1, 0xa2, 0x27, 0xae, 0x43, 0xe5, 0x38, 0x02, 0x38, 0x46, 0x90, 0x2f, 0x55, 0xb7, 0xae, 0x4f,
+	0x05, 0xcf, 0x18, 0x85, 0xa4, 0x7b, 0xb0, 0xe0, 0x7b, 0xa4, 0x79, 0x47, 0x3c, 0x53, 0xf4, 0xb2,
+	0x93, 0xb7, 0x30, 0x91, 0x24, 0x09, 0x4c, 0xe5, 0x57, 0x2b, 0x91, 0xe1, 0xf6, 0xc6, 0x87, 0x9e,
+	0xee, 0x9a, 0x87, 0x3c, 0xd3, 0xf4, 0x9d, 0x91, 0xa9, 0x0b, 0x7b, 0x0d, 0x5e, 0xb0, 0x02, 0xab,
+	0x5e, 0x80, 0xc2, 0x97, 0x5b, 0x91, 0xe0, 0xa6, 0x60, 0xf8, 0x33, 0x58, 0xf1, 0xc6, 0x87, 0x6c,
+	0xcd, 0xe2, 0x11, 0xba, 0xba, 0x75, 0x6f, 0x2a, 0xc7, 0x49, 0x0d, 0xb5, 0xd9, 0x0b, 0xb0, 0x49,
+	0xd8, 0x8d, 0x85, 0x44, 0xdd, 0xb1, 0xbd, 0xf1, 0x90, 0xba, 0x2c, 0x24, 0x16, 0x82, 0xb4, 0x30,
+	0x04, 0xb5, 0x0c, 0xfc, 0x36, 0x80, 0xcb, 0x02, 0xa4, 0xe7, 0xb3, 0xf6, 0x25, 0xde, 0x5e, 0x12,
+	0x90, 0x96, 0xc1, 0x56, 0x93, 0xa8, 0x3f, 0xd7, 0x90, 0xc8, 0xd8, 0x42, 0x20, 0xd7, 0xcf, 0x5d,
+	0xa8, 0x8e, 0x5c, 0xd3, 0x71, 0x4d, 0xff, 0x54, 0xb5, 0xe8, 0x09, 0x0d, 0x22, 0xc7, 0x12, 0xa9,
+	0x84, 0xd0, 0x3d, 0x06, 0xc4, 0x37, 0x61, 0xc5, 0x18, 0xbb, 0xda, 0xa1, 0x45, 0x79, 0xa8, 0x28,
+	0x3e, 0x2b, 0xf8, 0xee, 0x98, 0x92, 0x10, 0x88, 0x9b, 0x80, 0x78, 0x12, 0x1e, 0x79, 0xa3, 0x19,
+	0xc4, 0x88, 0xf2, 0xa4, 0xea, 0x52, 0xbb, 0x17, 0x52, 0xe5, 0x9d, 0x22, 0x58, 0x2a, 0xed, 0x86,
+	0xb3, 0xa5, 0xdd, 0x6c, 0x06, 0x2e, 0xd5, 0x0c, 0x35, 0x5a, 0xd5, 0x78, 0x4a, 0x57, 0x24, 0x15,
+	0x06, 0x6d, 0x84, 0x40, 0xfc, 0x01, 0x2c, 0x07, 0x79, 0x0f, 0x4f, 0xe3, 0xca, 0x5b, 0x6b, 0x59,
+	0x3b, 0x4c, 0x22, 0x70, 0xf0, 0x8f, 0xa1, 0x66, 0xda, 0xa6, 0x6f, 0x6a, 0x56, 0xd7, 0xf1, 0x82,
+	0x6d, 0x52, 0x85, 0xaf, 0x1b, 0x9b, 0x0b, 0xb4, 0xd8, 0x4a, 0xf7, 0x7a, 0xb6, 0xbc, 0xa7, 0xf9,
+	0xd4, 0xf3, 0xc9, 0x24, 0x39, 0xfc, 0x19, 0xdc, 0x88, 0x53, 0xe5, 0xa4, 0xe5, 0xa8, 0x9e, 0xaf,
+	0xf9, 0x94, 0xa7, 0x7f, 0x45, 0x72, 0x2d, 0xc2, 0xe9, 0x25, 0x50, 0x7a, 0x0c, 0x03, 0x3f, 0x85,
+	0xb5, 0xd7, 0x8e, 0xab, 0xb3, 0x44, 0x7b, 0x64, 0xea, 0xaa, 0xee, 0x52, 0x8d, 0x33, 0x5a, 0x4b,
+	0x28, 0x08, 0x73, 0x8c, 0x3e, 0x43, 0x68, 0x88, 0x76, 0xdc, 0x81, 0x3b, 0x69, 0x5d, 0xb9, 0x8e,
+	0x65, 0x1d, 0x6a, 0xfa, 0xb1, 0xca, 0xb4, 0x19, 0xb0, 0x40, 0x75, 0x9e, 0x2c, 0xf2, 0x54, 0xe0,
+	0x56, 0x52, 0x49, 0x44, 0xe0, 0xee, 0x08, 0xd4, 0x1e, 0xd5, 0xd3, 0x4e, 0x4b, 0x7d, 0x8d, 0x67,
+	0x8d, 0xe5, 0xd9, 0x4e, 0x4b, 0x7d, 0x8d, 0xa4, 0x7b, 0x28, 0xdb, 0xb0, 0x22, 0xec, 0x9f, 0x6d,
+	0x80, 0x9b, 0x6f, 0x74, 0x6b, 0xec, 0x99, 0x27, 0xe1, 0xee, 0x9c, 0xe3, 0x21, 0x89, 0x6d, 0x86,
+	0x9f, 0x6b, 0xa6, 0xe5, 0x9c, 0x50, 0x17, 0xe5, 0x70, 0x15, 0x60, 0x97, 0x9e, 0xaa, 0xa2, 0x35,
+	0xaf, 0xbc, 0x0f, 0xb5, 0x09, 0xe9, 0xb3, 0xce, 0x81, 0xfc, 0xd1, 0x05, 0xd6, 0xb9, 0xa9, 0xb9,
+	0x96, 0xc9, 0xde, 0x24, 0xe5, 0x3f, 0x25, 0xb8, 0x25, 0x94, 0xd7, 0x0d, 0x93, 0x16, 0x6a, 0x70,
+	0x41, 0x45, 0x69, 0x5c, 0xb6, 0xf3, 0xa7, 0xbd, 0x2e, 0x37, 0xe9, 0x75, 0xd9, 0xcb, 0x71, 0xfe,
+	0x7c, 0xcb, 0x71, 0xe1, 0x9c, 0xcb, 0xf1, 0xd2, 0xcc, 0xe5, 0xf8, 0xef, 0x73, 0xf0, 0xee, 0x82,
+	0x79, 0x46, 0xcb, 0xe1, 0x4d, 0x80, 0x28, 0x81, 0xf3, 0x78, 0x3c, 0xaf, 0x90, 0x04, 0x64, 0xd1,
+	0xcc, 0x7f, 0x98, 0x58, 0x26, 0xf3, 0xdc, 0x59, 0x3e, 0xcb, 0x74, 0x96, 0x45, 0x7c, 0x6c, 0xee,
+	0x39, 0xce, 0xf1, 0x78, 0xc4, 0x83, 0x61, 0xbc, 0xa0, 0xfe, 0x0e, 0x2c, 0x51, 0xd7, 0x75, 0x5c,
+	0x2e, 0x9b, 0xe9, 0x02, 0x11, 0x5f, 0x0e, 0x9b, 0x0c, 0x81, 0x04, 0x78, 0x58, 0x86, 0x15, 0x61,
+	0xe0, 0x42, 0x3c, 0xe1, 0xab, 0x72, 0x17, 0x20, 0x1e, 0x02, 0x97, 0x99, 0xe9, 0xe9, 0x3a, 0xf5,
+	0xbc, 0xc0, 0xda, 0x98, 0x85, 0x31, 0x6b, 0x53, 0x7e, 0x92, 0x03, 0x2c, 0x58, 0x16, 0xe8, 0x5c,
+	0xff, 0x5f, 0xc9, 0x2a, 0xde, 0x87, 0x0a, 0xd3, 0x17, 0x8b, 0xa8, 0x9a, 0x6f, 0x9e, 0x04, 0x02,
+	0x8a, 0xf2, 0xe6, 0x74, 0xdb, 0x0c, 0x13, 0x2a, 0x9c, 0xcf, 0x84, 0x96, 0xce, 0x69, 0x42, 0xcb,
+	0x33, 0x4d, 0xe8, 0x17, 0x79, 0xb8, 0x36, 0x2d, 0x87, 0xc8, 0x6a, 0xee, 0x03, 0x0a, 0xb2, 0x54,
+	0xa6, 0x03, 0x53, 0xa7, 0x07, 0xae, 0x25, 0x72, 0x81, 0x29, 0x38, 0x7e, 0x08, 0x97, 0x26, 0x61,
+	0x7d, 0xcb, 0x13, 0xdb, 0x9c, 0xac, 0x26, 0xdc, 0x99, 0x32, 0xaa, 0xc7, 0x99, 0x46, 0x95, 0xc1,
+	0x59, 0xb6, 0x1d, 0xa5, 0x15, 0x55, 0x58, 0xa8, 0xa8, 0xa5, 0x39, 0x8a, 0x8a, 0x6c, 0x72, 0xf9,
+	0xfc, 0x36, 0xb9, 0x92, 0xb2, 0x49, 0xbe, 0xc9, 0x0a, 0x92, 0xfe, 0x23, 0xd7, 0x19, 0x0f, 0x8e,
+	0x54, 0x2f, 0x10, 0x03, 0x4f, 0xfd, 0x8b, 0xe9, 0x4d, 0x16, 0xdf, 0x01, 0x04, 0x68, 0xb1, 0xb0,
+	0x94, 0xc7, 0x29, 0xab, 0x5e, 0x85, 0x22, 0xa1, 0x86, 0xe9, 0x52, 0x9d, 0xc5, 0xbe, 0x32, 0xac,
+	0x88, 0x64, 0x1c, 0x49, 0x09, 0x1b, 0xcf, 0x29, 0xff, 0x93, 0x83, 0x5a, 0xe8, 0x96, 0xa2, 0x24,
+	0x35, 0xc3, 0xc0, 0x6f, 0x41, 0x39, 0xaa, 0x64, 0xc5, 0x45, 0xaa, 0x10, 0x34, 0x95, 0x8d, 0xe4,
+	0x33, 0xb2, 0x91, 0x74, 0x25, 0xac, 0x20, 0xf6, 0xb6, 0xc9, 0x4a, 0xd8, 0x1d, 0x28, 0x89, 0x2a,
+	0x06, 0x35, 0xd2, 0x92, 0x8f, 0xe1, 0xa9, 0x24, 0x61, 0xf9, 0x8c, 0x49, 0x42, 0xbc, 0xfa, 0xaf,
+	0x9c, 0x61, 0xf5, 0xbf, 0x0a, 0x4b, 0x74, 0xe4, 0xe8, 0x47, 0xc1, 0x36, 0x94, 0xad, 0x81, 0xc1,
+	0x3b, 0x6e, 0xc0, 0xf5, 0xb1, 0x47, 0x5d, 0x75, 0xe4, 0x3a, 0x27, 0xa6, 0x41, 0x0d, 0x35, 0x3d,
+	0xa5, 0x52, 0x62, 0xe5, 0x95, 0x19, 0x62, 0x57, 0xe0, 0x75, 0x13, 0x93, 0x54, 0xfe, 0x24, 0x07,
+	0xe5, 0x30, 0x6f, 0xa0, 0xb6, 0x31, 0x29, 0x59, 0x69, 0x4a, 0xb2, 0x0b, 0xeb, 0x83, 0xef, 0xc0,
+	0x6a, 0xb2, 0xb8, 0x15, 0x26, 0xf1, 0x8f, 0x48, 0x39, 0x51, 0xd3, 0xca, 0x2c, 0x9d, 0x14, 0xce,
+	0x51, 0x3a, 0x59, 0x3a, 0x5f, 0xe9, 0x64, 0x79, 0x4e, 0xe9, 0xe4, 0x1f, 0xa5, 0x28, 0xb4, 0x32,
+	0x11, 0x10, 0xaa, 0x53, 0x73, 0xe4, 0xff, 0x06, 0x24, 0xf1, 0x0c, 0x20, 0x91, 0x81, 0xe6, 0x17,
+	0x67, 0xa0, 0xa5, 0x61, 0x94, 0x7c, 0xce, 0x98, 0x47, 0x61, 0xce, 0x3c, 0xfe, 0x26, 0xde, 0xec,
+	0xb2, 0x79, 0x70, 0x5f, 0xff, 0x0d, 0xcc, 0x22, 0x8a, 0x2b, 0xf9, 0xcc, 0xc3, 0x90, 0xb9, 0x71,
+	0xa5, 0xc0, 0x9d, 0x36, 0x5a, 0xeb, 0xfe, 0x4a, 0x8a, 0xca, 0x26, 0x62, 0xe2, 0x93, 0xfb, 0x0a,
+	0x69, 0x6a, 0x5f, 0x91, 0x16, 0x22, 0x63, 0xef, 0xec, 0x42, 0xfc, 0x00, 0x90, 0x4b, 0x45, 0x4d,
+	0xef, 0x54, 0xd5, 0x9d, 0xb1, 0xed, 0x73, 0x35, 0xf0, 0xb2, 0x6c, 0x2d, 0x6e, 0x6a, 0xb0, 0x16,
+	0xe5, 0x5f, 0x0a, 0x00, 0xe1, 0xbe, 0x57, 0x3f, 0x5e, 0xcc, 0xd9, 0x27, 0x50, 0x64, 0x79, 0x2a,
+	0xaf, 0x0d, 0xe6, 0xb8, 0x6c, 0xd6, 0x33, 0x57, 0x83, 0xba, 0x7e, 0xbc, 0x59, 0xd7, 0x8f, 0x83,
+	0xfd, 0x94, 0x16, 0x3c, 0x4c, 0xd9, 0x46, 0xfe, 0x1c, 0xd3, 0xea, 0x01, 0x3a, 0xd1, 0x2c, 0xd3,
+	0x08, 0xd2, 0xe3, 0x64, 0x22, 0xb2, 0x31, 0x93, 0x81, 0x57, 0x51, 0x87, 0x40, 0x57, 0xb5, 0x93,
+	0x34, 0x80, 0x31, 0x34, 0x75, 0x86, 0x75, 0x6d, 0x2a, 0x94, 0x45, 0x47, 0x25, 0xa9, 0x52, 0x61,
+	0x96, 0x33, 0x2f, 0x9f, 0xc3, 0x99, 0x57, 0xb2, 0x9d, 0x59, 0x79, 0x0f, 0x56, 0x84, 0xe0, 0x58,
+	0x7e, 0xdd, 0xb2, 0x0d, 0xf3, 0xc4, 0x34, 0xc6, 0x9a, 0x85, 0x2e, 0xb0, 0xf7, 0xc6, 0x78, 0x38,
+	0xb6, 0xf8, 0xda, 0x87, 0x24, 0xe5, 0xcf, 0x25, 0xa8, 0x4d, 0xcc, 0x11, 0xdf, 0x84, 0x6b, 0x07,
+	0x13, 0xa5, 0xf7, 0x86, 0xe3, 0xba, 0x63, 0xbe, 0x6d, 0x41, 0x17, 0xf0, 0x15, 0xc0, 0x3b, 0x34,
+	0x51, 0xc7, 0xe7, 0xbd, 0x90, 0x84, 0xd7, 0x00, 0x35, 0x8e, 0xa8, 0x7e, 0xec, 0x8d, 0x87, 0xfb,
+	0xa6, 0x37, 0xd4, 0x7c, 0xfd, 0x08, 0xe5, 0xf0, 0x5b, 0x70, 0x99, 0xd7, 0xe1, 0x77, 0x68, 0x8f,
+	0xba, 0xa6, 0x66, 0x99, 0x5f, 0xd2, 0xa0, 0x43, 0x1e, 0x5f, 0x82, 0xda, 0x0e, 0x0d, 0xeb, 0xdd,
+	0x01, 0xb0, 0xa0, 0xfc, 0x5b, 0x1c, 0x56, 0xea, 0xfa, 0x71, 0x94, 0xa1, 0x2c, 0x34, 0xab, 0x2c,
+	0x61, 0xe6, 0xce, 0x21, 0xcc, 0xfc, 0x8c, 0xc8, 0xf8, 0x1b, 0xcc, 0x59, 0x0f, 0xe1, 0x7a, 0x34,
+	0x33, 0x26, 0xff, 0x86, 0xe0, 0xbe, 0x71, 0xc4, 0x4f, 0xc4, 0x16, 0x4e, 0x51, 0x81, 0x92, 0xe9,
+	0xa9, 0x1a, 0xef, 0xcb, 0xe7, 0x16, 0xad, 0xac, 0x45, 0xd3, 0x0b, 0x48, 0x2a, 0xaf, 0xa2, 0x75,
+	0xe9, 0xb9, 0xe5, 0x7c, 0xb1, 0x98, 0xe6, 0x3d, 0xa8, 0x0a, 0xf6, 0xba, 0xd4, 0x1d, 0x06, 0x42,
+	0xcb, 0x6d, 0x54, 0xc8, 0x04, 0x54, 0xe9, 0x47, 0x5a, 0x39, 0xb0, 0xbd, 0xa8, 0xb4, 0xb2, 0x90,
+	0xfc, 0xfc, 0x94, 0x5a, 0xf9, 0xb9, 0x94, 0x58, 0x46, 0xe9, 0xf1, 0xd7, 0xa5, 0xf7, 0xb5, 0x96,
+	0x8e, 0x87, 0xb0, 0x16, 0xf6, 0x4d, 0x1d, 0xd4, 0xf1, 0xb5, 0x83, 0xe0, 0x50, 0x1e, 0xf1, 0x79,
+	0x9d, 0xf2, 0x09, 0xc8, 0x82, 0x79, 0x42, 0x35, 0xfd, 0x88, 0x1a, 0x4d, 0xdb, 0xe8, 0xbc, 0xee,
+	0x87, 0xa9, 0xd6, 0xdc, 0x99, 0x28, 0xaf, 0xa2, 0x6a, 0x61, 0xc3, 0x72, 0x3c, 0x1a, 0x65, 0x6e,
+	0x0b, 0x57, 0x9e, 0x05, 0x22, 0x9d, 0xa0, 0x1b, 0xda, 0xd8, 0xd7, 0x56, 0xd5, 0x9f, 0x4a, 0x70,
+	0x2f, 0x9a, 0xad, 0x58, 0x01, 0x0e, 0x6c, 0x4d, 0x3f, 0xb6, 0x9d, 0x2f, 0xf8, 0x69, 0xb5, 0x11,
+	0x25, 0x29, 0x0b, 0x87, 0xfa, 0x14, 0xca, 0xb1, 0x9a, 0x98, 0xc5, 0x2d, 0x0c, 0xe3, 0x10, 0xe9,
+	0xc9, 0x53, 0x7e, 0x14, 0xad, 0x86, 0x62, 0xcf, 0x37, 0xc1, 0xba, 0x34, 0x69, 0x15, 0x71, 0xe2,
+	0x98, 0x5b, 0x9c, 0x38, 0x2a, 0x3f, 0x93, 0xe0, 0xca, 0x44, 0x3a, 0x7d, 0xc6, 0x71, 0xa6, 0xd2,
+	0xe3, 0x5c, 0xc6, 0x41, 0xf1, 0x07, 0x80, 0x2c, 0x6d, 0x22, 0x3d, 0x61, 0x86, 0x9a, 0xe7, 0x27,
+	0xf3, 0x55, 0xd6, 0x16, 0x27, 0x27, 0x19, 0xe7, 0x7f, 0x85, 0x8c, 0xf3, 0x3f, 0xe5, 0x0d, 0xac,
+	0x0a, 0x96, 0x83, 0x10, 0xbe, 0x80, 0xd1, 0x28, 0xa6, 0xe5, 0xce, 0x9f, 0x9b, 0xe4, 0xd3, 0xb9,
+	0x49, 0x25, 0x72, 0xe0, 0xae, 0x69, 0x0f, 0x92, 0xaf, 0x8e, 0x3d, 0x48, 0x1a, 0xa3, 0xd0, 0x7e,
+	0xcf, 0xd7, 0xfc, 0x85, 0x82, 0x5c, 0x54, 0x35, 0x55, 0xfe, 0xbb, 0x00, 0x37, 0xb2, 0x08, 0x93,
+	0xec, 0x1d, 0xe2, 0xd4, 0x00, 0x1f, 0x01, 0xf0, 0x89, 0xa9, 0xba, 0x63, 0x50, 0x71, 0x9a, 0x34,
+	0x47, 0x0a, 0x25, 0x8e, 0xdc, 0x70, 0x0c, 0xb6, 0xbb, 0xa9, 0x04, 0x3d, 0x63, 0x79, 0xf0, 0x2d,
+	0x10, 0x07, 0x86, 0xd9, 0xd9, 0x4d, 0x80, 0xa1, 0x37, 0x20, 0x9a, 0x4f, 0x3b, 0xe2, 0xe0, 0x4e,
+	0x22, 0x09, 0x08, 0xdb, 0x6e, 0x0f, 0xbd, 0x81, 0xd8, 0xfe, 0x8d, 0xc6, 0x3e, 0xc3, 0x5a, 0xe2,
+	0x58, 0x53, 0x70, 0x81, 0xcb, 0x7a, 0x46, 0x6e, 0xc7, 0x93, 0x84, 0x00, 0x37, 0x05, 0xc7, 0x0a,
+	0xa4, 0x0a, 0xc3, 0x62, 0x7f, 0x9a, 0x2e, 0x16, 0xdf, 0x07, 0xa4, 0x9d, 0x68, 0xa6, 0xa5, 0x1d,
+	0x5a, 0x51, 0xc8, 0x0f, 0x4e, 0xea, 0xa6, 0xe0, 0x78, 0x03, 0x6a, 0x63, 0xe6, 0xe2, 0xb1, 0x6f,
+	0xf3, 0xed, 0x51, 0x81, 0x4c, 0x82, 0xf1, 0x36, 0xdc, 0x38, 0xb4, 0x1c, 0x06, 0x0a, 0xf5, 0xd1,
+	0xb1, 0x0f, 0x04, 0x8e, 0x37, 0xf0, 0x64, 0xe0, 0x95, 0xd0, 0xb9, 0x38, 0xcc, 0xc8, 0x34, 0xc3,
+	0x60, 0x49, 0x05, 0xaf, 0xfe, 0x96, 0x48, 0xf8, 0xca, 0x16, 0x29, 0x3d, 0x3c, 0x87, 0xea, 0x99,
+	0xb6, 0x1e, 0x1c, 0xe3, 0x97, 0xc8, 0x04, 0x14, 0x63, 0x71, 0xff, 0xa8, 0xc2, 0x5b, 0x83, 0x4b,
+	0x46, 0x6c, 0x81, 0x0b, 0xe4, 0xd4, 0x7c, 0x33, 0x32, 0x5d, 0x6a, 0xf0, 0xaa, 0xac, 0x44, 0x26,
+	0xa0, 0x42, 0x67, 0xdb, 0x9a, 0x7e, 0x6c, 0x39, 0x03, 0x5e, 0x7f, 0x2d, 0x90, 0x04, 0x44, 0xf9,
+	0x1c, 0xae, 0x0a, 0x8b, 0x7b, 0x41, 0xfd, 0x3d, 0xcd, 0x4b, 0x54, 0xbc, 0xbf, 0x6e, 0x68, 0xfd,
+	0x49, 0x5c, 0xc7, 0x9c, 0xa4, 0x1d, 0x19, 0x74, 0x03, 0x6a, 0x3c, 0x6c, 0x24, 0x96, 0x37, 0x69,
+	0x71, 0x52, 0x5f, 0xb1, 0x52, 0x8c, 0x2e, 0xe0, 0xe3, 0x97, 0x52, 0x94, 0xa0, 0xbc, 0xa0, 0x3e,
+	0x5f, 0xc7, 0xbc, 0xce, 0x6b, 0x66, 0x35, 0xde, 0x48, 0xd3, 0x17, 0x3a, 0xd5, 0x0d, 0x28, 0xd9,
+	0x21, 0xae, 0x08, 0x7d, 0x31, 0x00, 0xb7, 0xa1, 0x30, 0x64, 0xce, 0x96, 0x9f, 0x53, 0x82, 0xcf,
+	0x1a, 0x75, 0x73, 0xdf, 0x31, 0xe8, 0x33, 0xe8, 0x36, 0x49, 0xaf, 0xd5, 0xeb, 0x37, 0xdb, 0x7d,
+	0xc2, 0xe9, 0x28, 0x8f, 0xa1, 0xc0, 0x8f, 0x8a, 0xaa, 0x90, 0x68, 0x43, 0x17, 0x30, 0x86, 0x6a,
+	0xbb, 0xd3, 0x56, 0x13, 0x30, 0x09, 0xaf, 0x40, 0xbe, 0xbe, 0xb7, 0x87, 0x72, 0xca, 0x0f, 0xe1,
+	0xce, 0x9c, 0xa1, 0xce, 0x1a, 0x3d, 0xae, 0xc0, 0x32, 0xaf, 0xa7, 0x04, 0x2b, 0x57, 0x89, 0x88,
+	0x37, 0xc5, 0x8e, 0x36, 0x92, 0x2f, 0xa8, 0x2f, 0xee, 0xd1, 0x2d, 0x20, 0x15, 0xd5, 0x69, 0x72,
+	0xc9, 0x3a, 0xcd, 0x74, 0xd4, 0xcf, 0x67, 0x45, 0xfd, 0x5f, 0x4b, 0x51, 0x02, 0x12, 0x0d, 0xf8,
+	0x0d, 0x89, 0x80, 0xf1, 0x92, 0x5b, 0x38, 0x43, 0xad, 0x66, 0x7a, 0xbe, 0x4b, 0x59, 0xf3, 0xfd,
+	0xa3, 0xe4, 0x74, 0x3b, 0x2e, 0x3f, 0x0c, 0xa1, 0x5f, 0x47, 0xce, 0x31, 0x97, 0x79, 0xee, 0x4b,
+	0xf3, 0x13, 0x83, 0x7f, 0x92, 0x60, 0x7d, 0xd6, 0xf8, 0xdf, 0x10, 0xb1, 0x9f, 0x31, 0x5d, 0xf8,
+	0x1c, 0x2a, 0x62, 0x22, 0x6d, 0xfa, 0x45, 0xff, 0x8d, 0xbd, 0x88, 0xeb, 0x60, 0xbb, 0xa4, 0xfa,
+	0xbe, 0xa5, 0x7a, 0x54, 0x77, 0x6c, 0x23, 0xb1, 0xb5, 0x62, 0xdb, 0xa5, 0xbe, 0x6f, 0xf5, 0x02,
+	0xb8, 0xf2, 0x0b, 0x09, 0x2e, 0xa7, 0x68, 0x9f, 0x55, 0x32, 0xff, 0x0f, 0xf6, 0x6f, 0x3f, 0x8b,
+	0xfd, 0xad, 0x6e, 0xc4, 0x47, 0x20, 0x7d, 0xe7, 0x0c, 0x22, 0xfc, 0xbf, 0x9a, 0x5e, 0xfa, 0xbc,
+	0xa7, 0xc0, 0xe3, 0x51, 0x02, 0xa2, 0xfc, 0x47, 0x6c, 0xb4, 0x53, 0x3c, 0x7f, 0x8b, 0x54, 0xf3,
+	0x12, 0x56, 0x93, 0x87, 0xab, 0x5f, 0xfd, 0xcc, 0x5f, 0xf9, 0xd7, 0x78, 0x11, 0xac, 0x1b, 0x46,
+	0x92, 0xe8, 0x6f, 0x55, 0xcf, 0xbf, 0x3b, 0xc1, 0x7a, 0x21, 0xab, 0xd2, 0x94, 0xe4, 0x76, 0x62,
+	0x5a, 0xff, 0x25, 0x45, 0x4b, 0x5f, 0xd6, 0xb4, 0xbe, 0x45, 0xa6, 0xf0, 0x0f, 0x52, 0x14, 0xdd,
+	0x9a, 0xb6, 0xf1, 0x5b, 0x54, 0xd9, 0x53, 0x00, 0x16, 0x35, 0x35, 0xdd, 0x0f, 0x03, 0x71, 0x75,
+	0xeb, 0x6a, 0x7a, 0x62, 0xfd, 0x37, 0x76, 0x9d, 0x37, 0x93, 0x92, 0x1f, 0x3e, 0x26, 0x43, 0x68,
+	0x30, 0x81, 0x6f, 0x91, 0x72, 0x7e, 0x19, 0x87, 0xd0, 0x60, 0x6e, 0x1d, 0x3b, 0x8a, 0x49, 0xbf,
+	0xad, 0xe9, 0x45, 0xb1, 0x22, 0x38, 0xcd, 0x12, 0xb1, 0x22, 0xad, 0xbd, 0xa5, 0x33, 0x6b, 0x2f,
+	0x11, 0x70, 0xa7, 0x66, 0xf8, 0x2d, 0x52, 0xe4, 0x4f, 0x73, 0x51, 0x98, 0x0c, 0xa7, 0x99, 0x0a,
+	0xc0, 0xdf, 0x98, 0x30, 0x29, 0x9d, 0x27, 0x4c, 0x7e, 0x65, 0xad, 0x27, 0xc2, 0x6b, 0x96, 0x38,
+	0xbe, 0x45, 0x8a, 0xff, 0xe7, 0x0d, 0x28, 0x6f, 0x6b, 0x1e, 0x15, 0xb3, 0xc5, 0x5b, 0x62, 0xcf,
+	0x1d, 0x5c, 0xf2, 0xbb, 0x99, 0xa6, 0x9c, 0x40, 0x4c, 0x7f, 0xf8, 0xb3, 0x22, 0x76, 0xee, 0xa2,
+	0x22, 0x77, 0x23, 0x73, 0x3b, 0x28, 0x8e, 0xbb, 0x49, 0x88, 0x8c, 0x3f, 0x85, 0x52, 0xb4, 0xe3,
+	0x17, 0xd5, 0xdd, 0x9b, 0xf3, 0x7a, 0x52, 0x83, 0xc4, 0x1d, 0x58, 0xef, 0xa8, 0x72, 0x2d, 0x0c,
+	0xe3, 0xe6, 0xfc, 0x9b, 0x60, 0x24, 0xee, 0x80, 0x3f, 0x86, 0x62, 0x58, 0xc7, 0xe3, 0x22, 0x29,
+	0x67, 0x7c, 0xf0, 0x90, 0xac, 0x19, 0x92, 0x08, 0x1d, 0x3f, 0x80, 0x82, 0x47, 0xed, 0xe0, 0x34,
+	0xb5, 0x3c, 0x29, 0xfc, 0xe4, 0x11, 0x2a, 0x47, 0xc3, 0x0d, 0x58, 0x65, 0xbf, 0xaa, 0x1b, 0x9c,
+	0xa8, 0x8a, 0xd3, 0xee, 0xf5, 0xd9, 0xdd, 0x02, 0x3c, 0x52, 0xf6, 0x12, 0xc7, 0xb0, 0xdf, 0x05,
+	0xe0, 0x44, 0x02, 0xb5, 0x17, 0xe7, 0xcd, 0x36, 0x3c, 0xf4, 0x24, 0x25, 0x2f, 0x3a, 0xff, 0x7c,
+	0x1a, 0xeb, 0xbf, 0x34, 0x47, 0x43, 0xe1, 0x85, 0xb2, 0xe8, 0x0a, 0xc4, 0x7d, 0xc8, 0x6b, 0xfa,
+	0x31, 0x2f, 0xf7, 0x94, 0x27, 0xef, 0x67, 0x27, 0x4e, 0x75, 0x18, 0x12, 0x13, 0xcb, 0x6b, 0xcb,
+	0xf9, 0x82, 0x17, 0x7b, 0x66, 0x89, 0xe5, 0xb9, 0xe5, 0x7c, 0x41, 0x38, 0x1a, 0xde, 0x86, 0xf2,
+	0x38, 0x3e, 0x7a, 0x10, 0x37, 0x00, 0xb3, 0xa5, 0x92, 0x38, 0xa2, 0x20, 0xc9, 0x4e, 0x6c, 0x5a,
+	0x5e, 0x50, 0xcb, 0xe5, 0x35, 0xa2, 0x59, 0xd3, 0x12, 0xf5, 0x5e, 0x12, 0x22, 0xe3, 0x87, 0xa1,
+	0xff, 0x54, 0xb3, 0xe2, 0x49, 0xb2, 0xf4, 0x1a, 0x3a, 0x50, 0x0b, 0xaa, 0xba, 0xe5, 0x78, 0x34,
+	0xba, 0x5d, 0xc0, 0x4b, 0x4a, 0xe5, 0x2d, 0x25, 0xdb, 0x5e, 0x93, 0x47, 0x00, 0xa4, 0xa2, 0xa7,
+	0x4e, 0x04, 0x22, 0x52, 0x61, 0x45, 0x89, 0x5f, 0xeb, 0x9b, 0x4b, 0x2a, 0x2c, 0xb0, 0x09, 0x52,
+	0xd1, 0x21, 0x40, 0x87, 0xdf, 0x16, 0x0e, 0x2a, 0xd4, 0xa1, 0x20, 0x82, 0x8b, 0x7e, 0xef, 0xcc,
+	0x35, 0xe6, 0x50, 0x20, 0xb5, 0xd1, 0x44, 0x45, 0xfc, 0x01, 0x14, 0x46, 0xa6, 0x3d, 0xe0, 0x9f,
+	0x8b, 0xcc, 0xd2, 0x61, 0xd7, 0xb4, 0x07, 0x84, 0xa3, 0x71, 0x74, 0xc7, 0x1e, 0xf0, 0xef, 0x46,
+	0x66, 0xa2, 0x3b, 0x1c, 0xdd, 0xb1, 0x07, 0xf8, 0x8f, 0xe1, 0x96, 0x3b, 0xff, 0xac, 0x81, 0x7f,
+	0x5d, 0x52, 0xde, 0x7a, 0x92, 0x49, 0x69, 0xc1, 0x39, 0x05, 0x59, 0x44, 0x1c, 0xff, 0x01, 0x5c,
+	0x8c, 0xb6, 0x52, 0xe1, 0x0d, 0x37, 0xf9, 0x32, 0x1f, 0xf1, 0xc1, 0xf9, 0xae, 0xc5, 0x4d, 0xd3,
+	0xc1, 0x5e, 0xe2, 0x93, 0x8c, 0xc9, 0xeb, 0x73, 0xfc, 0x73, 0x98, 0xf2, 0xd6, 0x87, 0x5f, 0xe9,
+	0xee, 0x1d, 0x99, 0x4d, 0x97, 0x39, 0x91, 0x15, 0xdf, 0xb2, 0xe2, 0x5f, 0xd2, 0xcc, 0x72, 0xa2,
+	0xe4, 0x6d, 0xac, 0x64, 0x27, 0xfc, 0x03, 0xb8, 0x64, 0x4d, 0xdf, 0xd4, 0xe2, 0x9f, 0xd9, 0x94,
+	0x67, 0x1c, 0xa5, 0x67, 0xdc, 0xec, 0x22, 0x59, 0x44, 0xf0, 0xcb, 0xf8, 0xbe, 0x33, 0x2f, 0xe8,
+	0xcb, 0x6f, 0xcd, 0x33, 0xf5, 0x54, 0xe9, 0x3f, 0xdd, 0x11, 0xff, 0x18, 0x2e, 0xeb, 0x59, 0x47,
+	0x03, 0xf2, 0x35, 0x4e, 0xf1, 0xfe, 0x19, 0x28, 0x86, 0x9c, 0x66, 0x13, 0xc2, 0x7d, 0xb8, 0xe8,
+	0x4e, 0x9e, 0xfb, 0xc9, 0xd7, 0x39, 0xf5, 0x7b, 0x33, 0xec, 0x71, 0x02, 0x9b, 0x4c, 0x13, 0x08,
+	0x16, 0x0b, 0x7a, 0x2c, 0xdf, 0x98, 0xbb, 0x58, 0xd0, 0x63, 0xc2, 0xd1, 0xf0, 0xf7, 0x00, 0x0d,
+	0x26, 0x6a, 0xc6, 0xf2, 0xdb, 0xbc, 0xeb, 0xdd, 0x59, 0x25, 0xd6, 0x74, 0x81, 0x79, 0xaa, 0x3b,
+	0x36, 0x41, 0x1e, 0xcc, 0x28, 0x43, 0xcb, 0x37, 0xe7, 0x18, 0xff, 0xac, 0xda, 0x35, 0x99, 0x49,
+	0x0e, 0xab, 0x70, 0x25, 0x38, 0xce, 0x8e, 0x62, 0x9b, 0xaa, 0xf3, 0xc3, 0x70, 0xf9, 0x16, 0x1f,
+	0xe8, 0xbd, 0x19, 0x2b, 0xc8, 0xf4, 0xe9, 0x39, 0x59, 0xd3, 0xb2, 0xce, 0xd4, 0x7f, 0x04, 0x6b,
+	0x83, 0x8c, 0x4a, 0xaf, 0xbc, 0x3e, 0x87, 0x7c, 0x66, 0x69, 0x38, 0x93, 0x0c, 0x1e, 0xc3, 0x8d,
+	0xc1, 0x9c, 0x42, 0xb2, 0x7c, 0x9b, 0x0f, 0xf3, 0xe8, 0xec, 0xc3, 0x84, 0x22, 0x9b, 0x4b, 0x96,
+	0x65, 0x32, 0x83, 0xb0, 0xe0, 0x2b, 0x2b, 0x73, 0xd6, 0xf6, 0xb8, 0x2c, 0x1c, 0x77, 0x60, 0x76,
+	0x3b, 0x98, 0x2c, 0x17, 0xcb, 0x77, 0xe6, 0xd8, 0xed, 0x54, 0x71, 0x99, 0x4c, 0x13, 0x60, 0x9e,
+	0xab, 0x25, 0x3f, 0x7b, 0x91, 0xdf, 0x99, 0xe3, 0xb9, 0xa9, 0x0f, 0x64, 0x48, 0xba, 0x23, 0x6e,
+	0xc2, 0xaa, 0x96, 0xf8, 0xc2, 0x47, 0xbe, 0xcb, 0x09, 0xdd, 0x9e, 0x49, 0x28, 0xe2, 0x2a, 0xd5,
+	0x8d, 0x85, 0x3a, 0x2d, 0xbe, 0x40, 0x22, 0xdf, 0x9b, 0x13, 0xea, 0x12, 0x17, 0x4d, 0x48, 0xb2,
+	0x93, 0x10, 0x55, 0xba, 0xd4, 0x2b, 0xbf, 0x3b, 0x5f, 0x54, 0x13, 0x85, 0xe1, 0x69, 0x02, 0xd8,
+	0x82, 0xb7, 0x06, 0xb3, 0x0a, 0xc8, 0xf2, 0x06, 0xa7, 0xbe, 0x79, 0x46, 0xea, 0x51, 0xc8, 0x9f,
+	0x49, 0x10, 0x3f, 0x86, 0x65, 0x9b, 0x57, 0x62, 0xe5, 0xad, 0xac, 0xfb, 0x10, 0xe9, 0x62, 0xad,
+	0x40, 0xc5, 0xbb, 0x50, 0xb5, 0x53, 0xe5, 0x5b, 0xf9, 0x31, 0xef, 0x7c, 0x67, 0x5e, 0xe7, 0x90,
+	0x99, 0x89, 0xae, 0x4c, 0x8a, 0xda, 0x64, 0xed, 0x51, 0x7e, 0x32, 0x47, 0x8a, 0xd3, 0x95, 0xca,
+	0x69, 0x02, 0x4c, 0x8a, 0xda, 0xac, 0x8a, 0xa6, 0xfc, 0xe1, 0x1c, 0x29, 0xce, 0xac, 0x83, 0x92,
+	0xd9, 0x04, 0x59, 0x20, 0xd1, 0x32, 0xea, 0x66, 0xf2, 0xd3, 0x79, 0x71, 0x2a, 0xab, 0xd0, 0x96,
+	0x49, 0x86, 0x05, 0x12, 0x6d, 0x4e, 0x59, 0x4e, 0xfe, 0xce, 0x9c, 0x40, 0x32, 0xaf, 0x9e, 0x47,
+	0xe6, 0x92, 0x65, 0xb6, 0x41, 0xf9, 0x76, 0x55, 0xfe, 0x68, 0x8e, 0x6d, 0x88, 0x2a, 0x94, 0x40,
+	0x65, 0xb6, 0x41, 0x53, 0x75, 0x29, 0xf9, 0xe3, 0x39, 0xb6, 0x91, 0x2e, 0x61, 0x91, 0x89, 0xae,
+	0xcc, 0x36, 0xe8, 0x64, 0x99, 0x44, 0x7e, 0x36, 0xc7, 0x36, 0xa6, 0x8b, 0x2a, 0xd3, 0x04, 0x98,
+	0x6d, 0xd0, 0x59, 0xc5, 0x17, 0xf9, 0x93, 0x39, 0xb6, 0x31, 0xb3, 0x64, 0x43, 0x66, 0x13, 0x64,
+	0xb6, 0x41, 0x33, 0x36, 0xfd, 0xf2, 0xa7, 0x73, 0x6c, 0x23, 0xb3, 0x4a, 0x90, 0x49, 0x86, 0xd9,
+	0x06, 0x9d, 0x53, 0x53, 0x90, 0xbf, 0x3b, 0xc7, 0x36, 0xe6, 0x15, 0x23, 0xc8, 0x5c, 0xb2, 0xca,
+	0x2f, 0x8b, 0xe2, 0x5f, 0x36, 0xca, 0xb0, 0xd2, 0xe8, 0xb4, 0xdb, 0xcd, 0x46, 0x1f, 0xe5, 0x70,
+	0x05, 0x4a, 0xe2, 0xa5, 0xb9, 0x83, 0xf2, 0xec, 0xb5, 0x77, 0xb0, 0xdd, 0x6b, 0x90, 0xd6, 0x76,
+	0x13, 0x15, 0xf8, 0x1f, 0x6e, 0x90, 0xce, 0xce, 0x41, 0xa3, 0x49, 0x82, 0x3f, 0xd7, 0xe8, 0x35,
+	0xdb, 0x3b, 0x68, 0x19, 0x23, 0x58, 0x65, 0x4f, 0x2a, 0x69, 0x36, 0x9a, 0xad, 0x6e, 0x1f, 0xad,
+	0xe0, 0x2a, 0x00, 0x87, 0x34, 0x09, 0xe9, 0x10, 0x54, 0x64, 0x83, 0xec, 0x37, 0x7b, 0xbd, 0xfa,
+	0x8b, 0x26, 0x2a, 0xf1, 0xf3, 0xda, 0xc6, 0x2e, 0x02, 0x46, 0xe1, 0xf9, 0x5e, 0xe7, 0xfb, 0xa8,
+	0x8c, 0x6b, 0x50, 0x3e, 0x68, 0xc7, 0x43, 0xad, 0xf2, 0x4f, 0x3e, 0x0e, 0x1a, 0x8d, 0x66, 0xaf,
+	0x87, 0x2a, 0xb8, 0x04, 0x4b, 0x01, 0xa1, 0x2a, 0xc6, 0x50, 0x6d, 0xec, 0x75, 0x7a, 0x4d, 0x35,
+	0x62, 0xa4, 0x16, 0xc3, 0x1a, 0x9d, 0x76, 0xef, 0x60, 0xbf, 0x49, 0x10, 0xc2, 0x6b, 0x80, 0x42,
+	0x0c, 0x35, 0x24, 0x74, 0x91, 0x0d, 0xd8, 0x6d, 0xb5, 0x5f, 0x20, 0xcc, 0x9f, 0x3a, 0xed, 0x17,
+	0xe8, 0x12, 0xbe, 0x0b, 0xb7, 0x49, 0x73, 0xa7, 0xb9, 0xd7, 0x7a, 0xd5, 0x24, 0xea, 0x41, 0xbb,
+	0xde, 0xd8, 0x6d, 0x77, 0xbe, 0xbf, 0xd7, 0xdc, 0x79, 0xd1, 0xdc, 0x51, 0x05, 0xcf, 0x3d, 0xb4,
+	0x86, 0x65, 0x58, 0xeb, 0xd6, 0x49, 0xbf, 0xd5, 0x6f, 0x75, 0xda, 0xbc, 0xa5, 0x5f, 0xdf, 0xa9,
+	0xf7, 0xeb, 0xe8, 0x32, 0xbe, 0x0d, 0x6f, 0x67, 0xb5, 0xa8, 0xa4, 0xd9, 0xeb, 0x76, 0xda, 0xbd,
+	0x26, 0xba, 0xc2, 0x3f, 0x72, 0xea, 0x74, 0x76, 0x0f, 0xba, 0xe8, 0x2a, 0xbe, 0x04, 0xb5, 0xe0,
+	0x39, 0x46, 0x90, 0xf9, 0x14, 0x04, 0xf3, 0x6a, 0xaf, 0x5f, 0xef, 0xf7, 0xd0, 0x5b, 0xf8, 0x3a,
+	0x5c, 0x4d, 0xc3, 0xe2, 0x0e, 0xd7, 0x18, 0x3b, 0xa4, 0x59, 0x6f, 0xbc, 0x6c, 0xee, 0xa8, 0x4c,
+	0xce, 0x9d, 0xe7, 0x6a, 0xbf, 0xd3, 0x6d, 0x35, 0xd0, 0xf5, 0x40, 0x2d, 0xcd, 0x5d, 0x74, 0x03,
+	0x5f, 0x85, 0x4b, 0x2f, 0x9a, 0x7d, 0x75, 0xaf, 0xde, 0xeb, 0x87, 0x33, 0x51, 0x5b, 0x3b, 0xe8,
+	0x6d, 0xbc, 0x0e, 0x37, 0x32, 0x1a, 0x62, 0xf2, 0x37, 0xf1, 0x35, 0xb8, 0x52, 0x6f, 0xf4, 0x5b,
+	0xaf, 0x62, 0x99, 0xaa, 0x8d, 0x97, 0xf5, 0xf6, 0x8b, 0x26, 0xba, 0xc5, 0xf8, 0x62, 0xbd, 0xf9,
+	0x78, 0x3d, 0x36, 0x72, 0xbb, 0xbe, 0xdf, 0xec, 0x75, 0xeb, 0x8d, 0x26, 0x5a, 0xc7, 0xef, 0xc0,
+	0xfa, 0x8c, 0xc6, 0x98, 0xfc, 0x6d, 0x66, 0x1e, 0x0c, 0xab, 0xd7, 0x78, 0xd9, 0xdc, 0xaf, 0x23,
+	0x25, 0xe4, 0x34, 0x78, 0x8f, 0x11, 0xef, 0x30, 0xb9, 0xd4, 0x0f, 0xfa, 0x2f, 0xd9, 0xe0, 0x7b,
+	0x7b, 0x4d, 0x36, 0xfe, 0x3b, 0xf8, 0x22, 0x54, 0x38, 0x2c, 0x42, 0xbb, 0xcb, 0x0c, 0xb0, 0xde,
+	0xd8, 0x8d, 0x21, 0xf7, 0x98, 0x7c, 0x18, 0xc5, 0x0e, 0x51, 0x1b, 0xa4, 0x59, 0xef, 0x37, 0xc3,
+	0xb1, 0xde, 0x65, 0xea, 0xca, 0x6a, 0x89, 0x3b, 0x6f, 0x30, 0xe3, 0x6b, 0x37, 0xbf, 0xaf, 0xf6,
+	0x7f, 0xbf, 0x8d, 0xb6, 0x98, 0x25, 0x89, 0x97, 0x18, 0xe5, 0x31, 0xa3, 0x5f, 0xdf, 0xd9, 0x51,
+	0x23, 0xc5, 0xab, 0xfd, 0x0e, 0xc7, 0x7f, 0xc2, 0xe8, 0x67, 0xb5, 0xc4, 0x9d, 0x3f, 0x64, 0x12,
+	0x64, 0x28, 0xc2, 0xde, 0xbb, 0xc9, 0xfe, 0x4f, 0x99, 0x04, 0x67, 0x34, 0xc6, 0x24, 0xbe, 0xc3,
+	0x58, 0x64, 0x7a, 0x67, 0x5d, 0x3e, 0x62, 0x2c, 0x8a, 0x97, 0x18, 0xe5, 0x63, 0xc6, 0x62, 0x08,
+	0xed, 0xb4, 0x63, 0x7e, 0xd0, 0x33, 0xc6, 0x62, 0x56, 0x4b, 0xdc, 0xf9, 0x13, 0xc6, 0x62, 0x02,
+	0x25, 0xc9, 0x0c, 0xfa, 0x94, 0xb1, 0x38, 0xa3, 0x31, 0x26, 0xf1, 0xdd, 0xfb, 0x3b, 0xfc, 0xbb,
+	0x95, 0xe4, 0xbf, 0x84, 0xf0, 0x7f, 0xf4, 0xe9, 0xb4, 0x9b, 0xe8, 0x02, 0x8b, 0x01, 0x7b, 0x3f,
+	0x78, 0x12, 0xfc, 0x9d, 0xcf, 0x0f, 0xf6, 0x5a, 0xdb, 0x28, 0xc7, 0x9f, 0x7a, 0x7d, 0x16, 0x76,
+	0x00, 0x96, 0x7b, 0xed, 0x7a, 0xb7, 0xfb, 0x39, 0x2a, 0xdc, 0xff, 0x75, 0x1e, 0xca, 0x89, 0x0a,
+	0x26, 0x53, 0xf5, 0x81, 0xcd, 0x36, 0xf3, 0xe2, 0x4a, 0xf1, 0x05, 0x66, 0x0f, 0xe1, 0x46, 0x38,
+	0x71, 0x57, 0xb9, 0x4b, 0x5d, 0xcf, 0xf4, 0x7c, 0x6a, 0xeb, 0xe2, 0x42, 0x72, 0x8e, 0x59, 0x19,
+	0x4b, 0x28, 0xa9, 0xed, 0x9b, 0x7a, 0x7c, 0x21, 0x1a, 0xe5, 0xf1, 0x15, 0xc0, 0xf5, 0xe0, 0xab,
+	0xa1, 0x2f, 0x13, 0xf0, 0x02, 0x1b, 0x2b, 0xdc, 0x70, 0x6c, 0x8f, 0xbd, 0x53, 0xb4, 0xc4, 0x9c,
+	0x57, 0x7c, 0xcf, 0xd3, 0x76, 0x7c, 0x42, 0x35, 0xe3, 0x14, 0x2d, 0xb3, 0x08, 0x12, 0x56, 0x52,
+	0xb6, 0x83, 0x1b, 0x50, 0xdf, 0x1b, 0x3b, 0xbe, 0xd6, 0x7c, 0xa3, 0x53, 0x6a, 0xd0, 0xa0, 0x70,
+	0x84, 0x56, 0xf0, 0x7b, 0x70, 0x77, 0x2e, 0xda, 0x1b, 0x9d, 0x06, 0x77, 0xb0, 0x8b, 0x6c, 0x4a,
+	0xe1, 0x5d, 0xeb, 0xa0, 0x77, 0x89, 0x29, 0xe4, 0xc0, 0xf6, 0xc6, 0xa3, 0x91, 0xe3, 0xfa, 0xd4,
+	0x10, 0x47, 0xfd, 0x41, 0x23, 0x30, 0x7c, 0xbe, 0x9d, 0x68, 0x3b, 0xfe, 0x73, 0x67, 0x6c, 0x1b,
+	0xa8, 0xcc, 0xb4, 0x9f, 0x8c, 0xfb, 0x51, 0xcb, 0x2a, 0xbf, 0xc8, 0x1d, 0x5e, 0x19, 0x0b, 0xa1,
+	0x15, 0x36, 0xb3, 0xbe, 0xe3, 0xec, 0x6b, 0xf6, 0x29, 0x09, 0xea, 0xd5, 0x1e, 0xaa, 0x32, 0x22,
+	0x9c, 0x6e, 0x9f, 0xba, 0x43, 0xd3, 0xd6, 0xfc, 0x70, 0x32, 0x35, 0x26, 0x9a, 0x68, 0x32, 0x4c,
+	0x34, 0x3c, 0xe2, 0xb6, 0x6c, 0x7e, 0x7f, 0x3e, 0x60, 0x45, 0x1b, 0x52, 0x74, 0x91, 0x89, 0xb6,
+	0xc5, 0x6f, 0x9b, 0x6b, 0xbe, 0x79, 0x68, 0x89, 0xe4, 0x15, 0x61, 0xa6, 0x8b, 0x90, 0x89, 0xba,
+	0xe7, 0x99, 0x03, 0x31, 0x95, 0x4b, 0xf7, 0x77, 0x01, 0xe2, 0x0f, 0xdb, 0xb8, 0xff, 0xc7, 0x5f,
+	0xab, 0x07, 0x7f, 0x06, 0x75, 0x09, 0x6a, 0x31, 0xec, 0x73, 0x5d, 0x7b, 0xf5, 0x28, 0xd0, 0x78,
+	0x0c, 0xac, 0x33, 0x25, 0x7b, 0x28, 0x77, 0xff, 0x2f, 0x25, 0xa8, 0x75, 0x27, 0xfe, 0x93, 0x60,
+	0x19, 0x72, 0x27, 0x0f, 0xd1, 0x05, 0xfe, 0xcb, 0x7a, 0xb2, 0xdf, 0x2d, 0x94, 0xe3, 0xbf, 0x8f,
+	0x51, 0x9e, 0xff, 0x3e, 0x41, 0x05, 0xfe, 0xfb, 0x21, 0x5a, 0xe2, 0xbf, 0x4f, 0xd1, 0x32, 0xff,
+	0xfd, 0x0e, 0x5a, 0xe1, 0xbf, 0x1f, 0xa1, 0x22, 0xff, 0xfd, 0x38, 0x58, 0xcd, 0x4e, 0x1e, 0x3d,
+	0x44, 0x10, 0x3c, 0x3c, 0x42, 0xe5, 0xe0, 0x61, 0x0b, 0xad, 0x06, 0x0f, 0x8f, 0x51, 0x25, 0x78,
+	0x78, 0x82, 0xaa, 0xc1, 0xc3, 0x87, 0xa8, 0x76, 0xff, 0xfd, 0xe4, 0x67, 0xf5, 0xe2, 0xa2, 0x53,
+	0xfd, 0xa0, 0xdf, 0x51, 0x7b, 0xdd, 0xbd, 0x56, 0x5f, 0x7c, 0x54, 0xdb, 0x6f, 0x35, 0x76, 0x3f,
+	0x47, 0xd2, 0x7d, 0x05, 0x4a, 0xd1, 0xb1, 0x04, 0x6b, 0x68, 0x74, 0xf6, 0xf7, 0x39, 0x52, 0x09,
+	0x96, 0xea, 0xdb, 0x1d, 0xd2, 0x47, 0xd2, 0xf6, 0x3d, 0x50, 0x1c, 0x77, 0xb0, 0xa9, 0x8d, 0x34,
+	0xfd, 0x88, 0x86, 0xc9, 0x82, 0xee, 0x0c, 0x87, 0x8e, 0xbd, 0xa9, 0x85, 0x7f, 0x08, 0xf6, 0x32,
+	0xff, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xee, 0x70, 0x7c, 0x78, 0x24, 0x4c, 0x00, 0x00,
 }