From c96f81680e0237e677251e15d4791616db9d8736 Mon Sep 17 00:00:00 2001
From: Mohamed Mahmoud <mmahmoud@redhat.com>
Date: Mon, 21 Oct 2024 17:39:40 -0400
Subject: [PATCH] update bpfman dependency to pick TCX support

Signed-off-by: Mohamed Mahmoud <mmahmoud@redhat.com>
---
 go.mod                                        |   2 +-
 go.sum                                        |   4 +-
 .../bpfman/clients/gobpfman/v1/bpfman.pb.go   | 738 ++++++++++--------
 vendor/modules.txt                            |   2 +-
 4 files changed, 429 insertions(+), 317 deletions(-)

diff --git a/go.mod b/go.mod
index 1f65c367d..47afed458 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.22.0
 toolchain go1.22.2
 
 require (
-	github.com/bpfman/bpfman v0.5.4
+	github.com/bpfman/bpfman v0.5.5-0.20241022174147-497c1ed71c81
 	github.com/containers/image/v5 v5.32.2
 	github.com/go-logr/logr v1.4.2
 	github.com/google/go-cmp v0.6.0
diff --git a/go.sum b/go.sum
index a0de1b56d..deb7b408e 100644
--- a/go.sum
+++ b/go.sum
@@ -2,8 +2,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bpfman/bpfman v0.5.4 h1:pfdCNmEY8uGsfOiBAtwm4pWj+OU8Nqi896U49aONlcE=
-github.com/bpfman/bpfman v0.5.4/go.mod h1:ZBZc5wo+lEQA+w/89Sbjaw5VhuvuLTDS3a3yDjOl81o=
+github.com/bpfman/bpfman v0.5.5-0.20241022174147-497c1ed71c81 h1:cDjf1+aZhWsLc9FsJ7Li/R4NHvm4pUPIfXU+6AL90aQ=
+github.com/bpfman/bpfman v0.5.5-0.20241022174147-497c1ed71c81/go.mod h1:ZBZc5wo+lEQA+w/89Sbjaw5VhuvuLTDS3a3yDjOl81o=
 github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
 github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
 github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
diff --git a/vendor/github.com/bpfman/bpfman/clients/gobpfman/v1/bpfman.pb.go b/vendor/github.com/bpfman/bpfman/clients/gobpfman/v1/bpfman.pb.go
index 520ae2081..d61732ae4 100644
--- a/vendor/github.com/bpfman/bpfman/clients/gobpfman/v1/bpfman.pb.go
+++ b/vendor/github.com/bpfman/bpfman/clients/gobpfman/v1/bpfman.pb.go
@@ -573,6 +573,77 @@ func (x *TCAttachInfo) GetProceedOn() []int32 {
 	return nil
 }
 
+type TCXAttachInfo struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Priority  int32  `protobuf:"varint,1,opt,name=priority,proto3" json:"priority,omitempty"`
+	Iface     string `protobuf:"bytes,2,opt,name=iface,proto3" json:"iface,omitempty"`
+	Position  int32  `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"`
+	Direction string `protobuf:"bytes,4,opt,name=direction,proto3" json:"direction,omitempty"`
+}
+
+func (x *TCXAttachInfo) Reset() {
+	*x = TCXAttachInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_bpfman_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *TCXAttachInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TCXAttachInfo) ProtoMessage() {}
+
+func (x *TCXAttachInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_bpfman_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TCXAttachInfo.ProtoReflect.Descriptor instead.
+func (*TCXAttachInfo) Descriptor() ([]byte, []int) {
+	return file_bpfman_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *TCXAttachInfo) GetPriority() int32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *TCXAttachInfo) GetIface() string {
+	if x != nil {
+		return x.Iface
+	}
+	return ""
+}
+
+func (x *TCXAttachInfo) GetPosition() int32 {
+	if x != nil {
+		return x.Position
+	}
+	return 0
+}
+
+func (x *TCXAttachInfo) GetDirection() string {
+	if x != nil {
+		return x.Direction
+	}
+	return ""
+}
+
 type TracepointAttachInfo struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -584,7 +655,7 @@ type TracepointAttachInfo struct {
 func (x *TracepointAttachInfo) Reset() {
 	*x = TracepointAttachInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[6]
+		mi := &file_bpfman_proto_msgTypes[7]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -597,7 +668,7 @@ func (x *TracepointAttachInfo) String() string {
 func (*TracepointAttachInfo) ProtoMessage() {}
 
 func (x *TracepointAttachInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[6]
+	mi := &file_bpfman_proto_msgTypes[7]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -610,7 +681,7 @@ func (x *TracepointAttachInfo) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use TracepointAttachInfo.ProtoReflect.Descriptor instead.
 func (*TracepointAttachInfo) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{6}
+	return file_bpfman_proto_rawDescGZIP(), []int{7}
 }
 
 func (x *TracepointAttachInfo) GetTracepoint() string {
@@ -634,7 +705,7 @@ type KprobeAttachInfo struct {
 func (x *KprobeAttachInfo) Reset() {
 	*x = KprobeAttachInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[7]
+		mi := &file_bpfman_proto_msgTypes[8]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -647,7 +718,7 @@ func (x *KprobeAttachInfo) String() string {
 func (*KprobeAttachInfo) ProtoMessage() {}
 
 func (x *KprobeAttachInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[7]
+	mi := &file_bpfman_proto_msgTypes[8]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -660,7 +731,7 @@ func (x *KprobeAttachInfo) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use KprobeAttachInfo.ProtoReflect.Descriptor instead.
 func (*KprobeAttachInfo) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{7}
+	return file_bpfman_proto_rawDescGZIP(), []int{8}
 }
 
 func (x *KprobeAttachInfo) GetFnName() string {
@@ -707,7 +778,7 @@ type UprobeAttachInfo struct {
 func (x *UprobeAttachInfo) Reset() {
 	*x = UprobeAttachInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[8]
+		mi := &file_bpfman_proto_msgTypes[9]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -720,7 +791,7 @@ func (x *UprobeAttachInfo) String() string {
 func (*UprobeAttachInfo) ProtoMessage() {}
 
 func (x *UprobeAttachInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[8]
+	mi := &file_bpfman_proto_msgTypes[9]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -733,7 +804,7 @@ func (x *UprobeAttachInfo) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UprobeAttachInfo.ProtoReflect.Descriptor instead.
 func (*UprobeAttachInfo) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{8}
+	return file_bpfman_proto_rawDescGZIP(), []int{9}
 }
 
 func (x *UprobeAttachInfo) GetFnName() string {
@@ -789,7 +860,7 @@ type FentryAttachInfo struct {
 func (x *FentryAttachInfo) Reset() {
 	*x = FentryAttachInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[9]
+		mi := &file_bpfman_proto_msgTypes[10]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -802,7 +873,7 @@ func (x *FentryAttachInfo) String() string {
 func (*FentryAttachInfo) ProtoMessage() {}
 
 func (x *FentryAttachInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[9]
+	mi := &file_bpfman_proto_msgTypes[10]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -815,7 +886,7 @@ func (x *FentryAttachInfo) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use FentryAttachInfo.ProtoReflect.Descriptor instead.
 func (*FentryAttachInfo) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{9}
+	return file_bpfman_proto_rawDescGZIP(), []int{10}
 }
 
 func (x *FentryAttachInfo) GetFnName() string {
@@ -836,7 +907,7 @@ type FexitAttachInfo struct {
 func (x *FexitAttachInfo) Reset() {
 	*x = FexitAttachInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[10]
+		mi := &file_bpfman_proto_msgTypes[11]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -849,7 +920,7 @@ func (x *FexitAttachInfo) String() string {
 func (*FexitAttachInfo) ProtoMessage() {}
 
 func (x *FexitAttachInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[10]
+	mi := &file_bpfman_proto_msgTypes[11]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -862,7 +933,7 @@ func (x *FexitAttachInfo) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use FexitAttachInfo.ProtoReflect.Descriptor instead.
 func (*FexitAttachInfo) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{10}
+	return file_bpfman_proto_rawDescGZIP(), []int{11}
 }
 
 func (x *FexitAttachInfo) GetFnName() string {
@@ -886,13 +957,14 @@ type AttachInfo struct {
 	//	*AttachInfo_UprobeAttachInfo
 	//	*AttachInfo_FentryAttachInfo
 	//	*AttachInfo_FexitAttachInfo
+	//	*AttachInfo_TcxAttachInfo
 	Info isAttachInfo_Info `protobuf_oneof:"info"`
 }
 
 func (x *AttachInfo) Reset() {
 	*x = AttachInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[11]
+		mi := &file_bpfman_proto_msgTypes[12]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -905,7 +977,7 @@ func (x *AttachInfo) String() string {
 func (*AttachInfo) ProtoMessage() {}
 
 func (x *AttachInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[11]
+	mi := &file_bpfman_proto_msgTypes[12]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -918,7 +990,7 @@ func (x *AttachInfo) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AttachInfo.ProtoReflect.Descriptor instead.
 func (*AttachInfo) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{11}
+	return file_bpfman_proto_rawDescGZIP(), []int{12}
 }
 
 func (m *AttachInfo) GetInfo() isAttachInfo_Info {
@@ -977,6 +1049,13 @@ func (x *AttachInfo) GetFexitAttachInfo() *FexitAttachInfo {
 	return nil
 }
 
+func (x *AttachInfo) GetTcxAttachInfo() *TCXAttachInfo {
+	if x, ok := x.GetInfo().(*AttachInfo_TcxAttachInfo); ok {
+		return x.TcxAttachInfo
+	}
+	return nil
+}
+
 type isAttachInfo_Info interface {
 	isAttachInfo_Info()
 }
@@ -1009,6 +1088,10 @@ type AttachInfo_FexitAttachInfo struct {
 	FexitAttachInfo *FexitAttachInfo `protobuf:"bytes,8,opt,name=fexit_attach_info,json=fexitAttachInfo,proto3,oneof"`
 }
 
+type AttachInfo_TcxAttachInfo struct {
+	TcxAttachInfo *TCXAttachInfo `protobuf:"bytes,9,opt,name=tcx_attach_info,json=tcxAttachInfo,proto3,oneof"`
+}
+
 func (*AttachInfo_XdpAttachInfo) isAttachInfo_Info() {}
 
 func (*AttachInfo_TcAttachInfo) isAttachInfo_Info() {}
@@ -1023,6 +1106,8 @@ func (*AttachInfo_FentryAttachInfo) isAttachInfo_Info() {}
 
 func (*AttachInfo_FexitAttachInfo) isAttachInfo_Info() {}
 
+func (*AttachInfo_TcxAttachInfo) isAttachInfo_Info() {}
+
 type LoadRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -1041,7 +1126,7 @@ type LoadRequest struct {
 func (x *LoadRequest) Reset() {
 	*x = LoadRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[12]
+		mi := &file_bpfman_proto_msgTypes[13]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1054,7 +1139,7 @@ func (x *LoadRequest) String() string {
 func (*LoadRequest) ProtoMessage() {}
 
 func (x *LoadRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[12]
+	mi := &file_bpfman_proto_msgTypes[13]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1067,7 +1152,7 @@ func (x *LoadRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use LoadRequest.ProtoReflect.Descriptor instead.
 func (*LoadRequest) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{12}
+	return file_bpfman_proto_rawDescGZIP(), []int{13}
 }
 
 func (x *LoadRequest) GetBytecode() *BytecodeLocation {
@@ -1138,7 +1223,7 @@ type LoadResponse struct {
 func (x *LoadResponse) Reset() {
 	*x = LoadResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[13]
+		mi := &file_bpfman_proto_msgTypes[14]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1151,7 +1236,7 @@ func (x *LoadResponse) String() string {
 func (*LoadResponse) ProtoMessage() {}
 
 func (x *LoadResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[13]
+	mi := &file_bpfman_proto_msgTypes[14]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1164,7 +1249,7 @@ func (x *LoadResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use LoadResponse.ProtoReflect.Descriptor instead.
 func (*LoadResponse) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{13}
+	return file_bpfman_proto_rawDescGZIP(), []int{14}
 }
 
 func (x *LoadResponse) GetInfo() *ProgramInfo {
@@ -1192,7 +1277,7 @@ type UnloadRequest struct {
 func (x *UnloadRequest) Reset() {
 	*x = UnloadRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[14]
+		mi := &file_bpfman_proto_msgTypes[15]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1205,7 +1290,7 @@ func (x *UnloadRequest) String() string {
 func (*UnloadRequest) ProtoMessage() {}
 
 func (x *UnloadRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[14]
+	mi := &file_bpfman_proto_msgTypes[15]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1218,7 +1303,7 @@ func (x *UnloadRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UnloadRequest.ProtoReflect.Descriptor instead.
 func (*UnloadRequest) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{14}
+	return file_bpfman_proto_rawDescGZIP(), []int{15}
 }
 
 func (x *UnloadRequest) GetId() uint32 {
@@ -1237,7 +1322,7 @@ type UnloadResponse struct {
 func (x *UnloadResponse) Reset() {
 	*x = UnloadResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[15]
+		mi := &file_bpfman_proto_msgTypes[16]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1250,7 +1335,7 @@ func (x *UnloadResponse) String() string {
 func (*UnloadResponse) ProtoMessage() {}
 
 func (x *UnloadResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[15]
+	mi := &file_bpfman_proto_msgTypes[16]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1263,7 +1348,7 @@ func (x *UnloadResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UnloadResponse.ProtoReflect.Descriptor instead.
 func (*UnloadResponse) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{15}
+	return file_bpfman_proto_rawDescGZIP(), []int{16}
 }
 
 type ListRequest struct {
@@ -1279,7 +1364,7 @@ type ListRequest struct {
 func (x *ListRequest) Reset() {
 	*x = ListRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[16]
+		mi := &file_bpfman_proto_msgTypes[17]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1292,7 +1377,7 @@ func (x *ListRequest) String() string {
 func (*ListRequest) ProtoMessage() {}
 
 func (x *ListRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[16]
+	mi := &file_bpfman_proto_msgTypes[17]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1305,7 +1390,7 @@ func (x *ListRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListRequest.ProtoReflect.Descriptor instead.
 func (*ListRequest) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{16}
+	return file_bpfman_proto_rawDescGZIP(), []int{17}
 }
 
 func (x *ListRequest) GetProgramType() uint32 {
@@ -1340,7 +1425,7 @@ type ListResponse struct {
 func (x *ListResponse) Reset() {
 	*x = ListResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[17]
+		mi := &file_bpfman_proto_msgTypes[18]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1353,7 +1438,7 @@ func (x *ListResponse) String() string {
 func (*ListResponse) ProtoMessage() {}
 
 func (x *ListResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[17]
+	mi := &file_bpfman_proto_msgTypes[18]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1366,7 +1451,7 @@ func (x *ListResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListResponse.ProtoReflect.Descriptor instead.
 func (*ListResponse) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{17}
+	return file_bpfman_proto_rawDescGZIP(), []int{18}
 }
 
 func (x *ListResponse) GetResults() []*ListResponse_ListResult {
@@ -1387,7 +1472,7 @@ type PullBytecodeRequest struct {
 func (x *PullBytecodeRequest) Reset() {
 	*x = PullBytecodeRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[18]
+		mi := &file_bpfman_proto_msgTypes[19]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1400,7 +1485,7 @@ func (x *PullBytecodeRequest) String() string {
 func (*PullBytecodeRequest) ProtoMessage() {}
 
 func (x *PullBytecodeRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[18]
+	mi := &file_bpfman_proto_msgTypes[19]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1413,7 +1498,7 @@ func (x *PullBytecodeRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PullBytecodeRequest.ProtoReflect.Descriptor instead.
 func (*PullBytecodeRequest) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{18}
+	return file_bpfman_proto_rawDescGZIP(), []int{19}
 }
 
 func (x *PullBytecodeRequest) GetImage() *BytecodeImage {
@@ -1432,7 +1517,7 @@ type PullBytecodeResponse struct {
 func (x *PullBytecodeResponse) Reset() {
 	*x = PullBytecodeResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[19]
+		mi := &file_bpfman_proto_msgTypes[20]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1445,7 +1530,7 @@ func (x *PullBytecodeResponse) String() string {
 func (*PullBytecodeResponse) ProtoMessage() {}
 
 func (x *PullBytecodeResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[19]
+	mi := &file_bpfman_proto_msgTypes[20]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1458,7 +1543,7 @@ func (x *PullBytecodeResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PullBytecodeResponse.ProtoReflect.Descriptor instead.
 func (*PullBytecodeResponse) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{19}
+	return file_bpfman_proto_rawDescGZIP(), []int{20}
 }
 
 type GetRequest struct {
@@ -1472,7 +1557,7 @@ type GetRequest struct {
 func (x *GetRequest) Reset() {
 	*x = GetRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[20]
+		mi := &file_bpfman_proto_msgTypes[21]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1485,7 +1570,7 @@ func (x *GetRequest) String() string {
 func (*GetRequest) ProtoMessage() {}
 
 func (x *GetRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[20]
+	mi := &file_bpfman_proto_msgTypes[21]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1498,7 +1583,7 @@ func (x *GetRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetRequest.ProtoReflect.Descriptor instead.
 func (*GetRequest) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{20}
+	return file_bpfman_proto_rawDescGZIP(), []int{21}
 }
 
 func (x *GetRequest) GetId() uint32 {
@@ -1520,7 +1605,7 @@ type GetResponse struct {
 func (x *GetResponse) Reset() {
 	*x = GetResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[21]
+		mi := &file_bpfman_proto_msgTypes[22]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1533,7 +1618,7 @@ func (x *GetResponse) String() string {
 func (*GetResponse) ProtoMessage() {}
 
 func (x *GetResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[21]
+	mi := &file_bpfman_proto_msgTypes[22]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1546,7 +1631,7 @@ func (x *GetResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetResponse.ProtoReflect.Descriptor instead.
 func (*GetResponse) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{21}
+	return file_bpfman_proto_rawDescGZIP(), []int{22}
 }
 
 func (x *GetResponse) GetInfo() *ProgramInfo {
@@ -1575,7 +1660,7 @@ type ListResponse_ListResult struct {
 func (x *ListResponse_ListResult) Reset() {
 	*x = ListResponse_ListResult{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_bpfman_proto_msgTypes[27]
+		mi := &file_bpfman_proto_msgTypes[28]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1588,7 +1673,7 @@ func (x *ListResponse_ListResult) String() string {
 func (*ListResponse_ListResult) ProtoMessage() {}
 
 func (x *ListResponse_ListResult) ProtoReflect() protoreflect.Message {
-	mi := &file_bpfman_proto_msgTypes[27]
+	mi := &file_bpfman_proto_msgTypes[28]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1601,7 +1686,7 @@ func (x *ListResponse_ListResult) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListResponse_ListResult.ProtoReflect.Descriptor instead.
 func (*ListResponse_ListResult) Descriptor() ([]byte, []int) {
-	return file_bpfman_proto_rawDescGZIP(), []int{17, 0}
+	return file_bpfman_proto_rawDescGZIP(), []int{18, 0}
 }
 
 func (x *ListResponse_ListResult) GetInfo() *ProgramInfo {
@@ -1714,191 +1799,203 @@ var file_bpfman_proto_rawDesc = []byte{
 	0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d,
 	0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x36, 0x0a,
-	0x14, 0x54, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63,
-	0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f,
-	0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x65,
-	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x10, 0x4b, 0x70, 0x72, 0x6f, 0x62, 0x65,
+	0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x7b, 0x0a,
+	0x0d, 0x54, 0x43, 0x58, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a,
+	0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x66,
+	0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x66, 0x61, 0x63, 0x65,
+	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
+	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x0a, 0x14, 0x54, 0x72,
+	0x61, 0x63, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e,
+	0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x69,
+	0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x10, 0x4b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74, 0x74,
+	0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6e, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x70,
+	0x72, 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x74, 0x70,
+	0x72, 0x6f, 0x62, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
+	0x72, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x63,
+	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10,
+	0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x69, 0x64,
+	0x22, 0xe3, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63,
+	0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x07, 0x66, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
+	0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74,
+	0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72,
+	0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x74, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x12,
+	0x15, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x03,
+	0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+	0x6e, 0x65, 0x72, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52,
+	0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x69, 0x64, 0x88, 0x01, 0x01,
+	0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04,
+	0x5f, 0x70, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+	0x65, 0x72, 0x5f, 0x70, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x10, 0x46, 0x65, 0x6e, 0x74, 0x72, 0x79,
 	0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6e,
 	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6e, 0x4e,
-	0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72,
-	0x65, 0x74, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72,
-	0x65, 0x74, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61,
-	0x69, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00,
-	0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x69, 0x64, 0x88, 0x01,
-	0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f,
-	0x70, 0x69, 0x64, 0x22, 0xe3, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74,
-	0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x07, 0x66, 0x6e, 0x5f, 0x6e,
-	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x6e, 0x4e,
-	0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16,
-	0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
-	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x70, 0x72, 0x6f,
-	0x62, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x74, 0x70, 0x72, 0x6f,
-	0x62, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48,
-	0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
-	0x48, 0x02, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x69, 0x64,
-	0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42,
-	0x06, 0x0a, 0x04, 0x5f, 0x70, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x10, 0x46, 0x65, 0x6e,
-	0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a,
-	0x07, 0x66, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
-	0x66, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x0f, 0x46, 0x65, 0x78, 0x69, 0x74, 0x41,
-	0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6e, 0x5f,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6e, 0x4e, 0x61,
-	0x6d, 0x65, 0x22, 0xa3, 0x04, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66,
-	0x6f, 0x12, 0x42, 0x0a, 0x0f, 0x78, 0x64, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f,
-	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x70, 0x66,
-	0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x44, 0x50, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
-	0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0d, 0x78, 0x64, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63,
-	0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61,
-	0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
-	0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x43, 0x41, 0x74, 0x74, 0x61,
-	0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x63, 0x41, 0x74, 0x74, 0x61,
-	0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x57, 0x0a, 0x16, 0x74, 0x72, 0x61, 0x63, 0x65, 0x70,
-	0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e,
-	0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x74, 0x74,
-	0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x14, 0x74, 0x72, 0x61, 0x63, 0x65,
-	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12,
-	0x4b, 0x0a, 0x12, 0x6b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68,
-	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70,
-	0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74,
-	0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x10, 0x6b, 0x70, 0x72, 0x6f,
-	0x62, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x12,
-	0x75, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e,
-	0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61,
-	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63,
-	0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41,
-	0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x12, 0x66, 0x65, 0x6e,
-	0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76,
-	0x31, 0x2e, 0x46, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e,
-	0x66, 0x6f, 0x48, 0x00, 0x52, 0x10, 0x66, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x61,
-	0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x11, 0x66, 0x65, 0x78, 0x69, 0x74, 0x5f,
-	0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65,
-	0x78, 0x69, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52,
-	0x0f, 0x66, 0x65, 0x78, 0x69, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f,
-	0x42, 0x06, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x8d, 0x04, 0x0a, 0x0b, 0x4c, 0x6f, 0x61,
-	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65,
-	0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70, 0x66,
-	0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x4c,
-	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64,
-	0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d,
-	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x72, 0x6f,
-	0x67, 0x72, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x61,
-	0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61,
-	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52,
-	0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
-	0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x70, 0x66, 0x6d,
-	0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x0b, 0x67, 0x6c, 0x6f,
-	0x62, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
-	0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x61, 0x74,
-	0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x61,
-	0x74, 0x61, 0x12, 0x17, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
-	0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x6d,
-	0x61, 0x70, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x0d, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x88,
-	0x01, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e,
+	0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x0f, 0x46, 0x65, 0x78, 0x69, 0x74, 0x41, 0x74, 0x74, 0x61,
+	0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6e, 0x5f, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22,
+	0xe7, 0x04, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42,
+	0x0a, 0x0f, 0x78, 0x64, 0x70, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66,
+	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e,
+	0x2e, 0x76, 0x31, 0x2e, 0x58, 0x44, 0x50, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66,
+	0x6f, 0x48, 0x00, 0x52, 0x0d, 0x78, 0x64, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e,
+	0x66, 0x6f, 0x12, 0x3f, 0x0a, 0x0e, 0x74, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f,
+	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x62, 0x70, 0x66,
+	0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x43, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49,
+	0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49,
+	0x6e, 0x66, 0x6f, 0x12, 0x57, 0x0a, 0x16, 0x74, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x69, 0x6e,
+	0x74, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
+	0x54, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
+	0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x14, 0x74, 0x72, 0x61, 0x63, 0x65, 0x70, 0x6f, 0x69,
+	0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x12,
+	0x6b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e,
+	0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61,
+	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63,
+	0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x10, 0x6b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41,
+	0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x12, 0x75, 0x70, 0x72,
+	0x6f, 0x62, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76,
+	0x31, 0x2e, 0x55, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e,
+	0x66, 0x6f, 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x74, 0x74, 0x61,
+	0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x12, 0x66, 0x65, 0x6e, 0x74, 0x72, 0x79,
+	0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x46,
+	0x65, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48,
+	0x00, 0x52, 0x10, 0x66, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49,
+	0x6e, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x11, 0x66, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x61, 0x74, 0x74,
+	0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+	0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x78, 0x69, 0x74,
+	0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x65,
+	0x78, 0x69, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x42, 0x0a,
+	0x0f, 0x74, 0x63, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
+	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e,
+	0x76, 0x31, 0x2e, 0x54, 0x43, 0x58, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f,
+	0x48, 0x00, 0x52, 0x0d, 0x74, 0x63, 0x78, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66,
+	0x6f, 0x42, 0x06, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x8d, 0x04, 0x0a, 0x0b, 0x4c, 0x6f,
+	0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x08, 0x62, 0x79, 0x74,
+	0x65, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x62, 0x70,
+	0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64, 0x65,
+	0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6f,
+	0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,
+	0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x72,
+	0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x61, 0x74, 0x74,
+	0x61, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x70, 0x66, 0x6d,
+	0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f,
+	0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61,
+	0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x70, 0x66,
+	0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,
+	0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x0b, 0x67, 0x6c,
+	0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x26, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x61,
+	0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44,
+	0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c,
+	0x6d, 0x61, 0x70, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x0d, 0x48, 0x01, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64,
+	0x88, 0x01, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+	0x1a, 0x3d, 0x0a, 0x0f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e,
 	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
 	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x3d, 0x0a, 0x0f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07,
-	0x0a, 0x05, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x70, 0x5f,
-	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0c, 0x4c, 0x6f, 0x61, 0x64,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
+	0x07, 0x0a, 0x05, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x61, 0x70,
+	0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0c, 0x4c, 0x6f, 0x61,
+	0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66,
+	0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e,
+	0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52,
+	0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f,
+	0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x70, 0x66,
+	0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x6f,
+	0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
+	0x49, 0x6e, 0x66, 0x6f, 0x22, 0x1f, 0x0a, 0x0d, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x02, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x67, 0x72,
+	0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52,
+	0x0b, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12,
+	0x35, 0x0a, 0x14, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,
+	0x6d, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52,
+	0x12, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x4f,
+	0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f,
+	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29,
+	0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61,
+	0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68,
+	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x74, 0x63,
+	0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70,
+	0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f,
+	0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x5f,
+	0x6f, 0x6e, 0x6c, 0x79, 0x22, 0xd4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
+	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e,
+	0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75,
+	0x6c, 0x74, 0x73, 0x1a, 0x85, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
+	0x6c, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x16, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f,
+	0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f,
+	0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e,
+	0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61,
+	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72,
+	0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x49, 0x6e,
+	0x66, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x45, 0x0a, 0x13, 0x50,
+	0x75, 0x6c, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x18, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x79,
+	0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61,
+	0x67, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f,
+	0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x0a, 0x47, 0x65,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f,
 	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e,
-	0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04,
-	0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x69,
-	0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x70, 0x66, 0x6d,
-	0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x67,
-	0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x49,
-	0x6e, 0x66, 0x6f, 0x22, 0x1f, 0x0a, 0x0d, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x02, 0x69, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x02, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,
-	0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b,
-	0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35,
-	0x0a, 0x14, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d,
-	0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x12,
-	0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x4f, 0x6e,
-	0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d,
-	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e,
-	0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64,
-	0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x4d,
-	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x74, 0x63, 0x68,
-	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72,
-	0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x62,
-	0x70, 0x66, 0x6d, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x5f, 0x6f,
-	0x6e, 0x6c, 0x79, 0x22, 0xd4, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18,
-	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76,
-	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c,
-	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c,
-	0x74, 0x73, 0x1a, 0x85, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c,
-	0x74, 0x12, 0x2f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x16, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x67,
-	0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x88,
-	0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x66,
-	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e,
-	0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61,
-	0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66,
-	0x6f, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x45, 0x0a, 0x13, 0x50, 0x75,
-	0x6c, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x12, 0x2e, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x18, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x79, 0x74,
-	0x65, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67,
-	0x65, 0x22, 0x16, 0x0a, 0x14, 0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64,
-	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x0a, 0x0a, 0x47, 0x65, 0x74,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76,
-	0x31, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52,
-	0x04, 0x69, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0b, 0x6b, 0x65, 0x72, 0x6e,
-	0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
-	0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
-	0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6b, 0x65, 0x72,
-	0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
-	0x32, 0xc0, 0x02, 0x0a, 0x06, 0x42, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x12, 0x37, 0x0a, 0x04, 0x4c,
-	0x6f, 0x61, 0x64, 0x12, 0x16, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
-	0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x62, 0x70,
-	0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x18,
-	0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x61,
-	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61,
-	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x62, 0x70,
-	0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
-	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0c,
-	0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x2e, 0x62,
-	0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79, 0x74,
-	0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x62,
-	0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79, 0x74,
-	0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a,
-	0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31,
-	0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62, 0x70,
-	0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
-	0x6d, 0x2f, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0x62,
-	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00,
+	0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x0b, 0x6b, 0x65, 0x72,
+	0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+	0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65,
+	0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6b, 0x65,
+	0x72, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x69, 0x6e, 0x66,
+	0x6f, 0x32, 0xc0, 0x02, 0x0a, 0x06, 0x42, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x12, 0x37, 0x0a, 0x04,
+	0x4c, 0x6f, 0x61, 0x64, 0x12, 0x16, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31,
+	0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x62,
+	0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12,
+	0x18, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f,
+	0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x70, 0x66, 0x6d,
+	0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x62,
+	0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31,
+	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a,
+	0x0c, 0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x2e,
+	0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79,
+	0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
+	0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x42, 0x79,
+	0x74, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34,
+	0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x15, 0x2e, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76,
+	0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x62,
+	0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2f, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x73, 0x2f, 0x67, 0x6f, 0x62, 0x70, 0x66, 0x6d, 0x61, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -1913,7 +2010,7 @@ func file_bpfman_proto_rawDescGZIP() []byte {
 	return file_bpfman_proto_rawDescData
 }
 
-var file_bpfman_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
+var file_bpfman_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
 var file_bpfman_proto_goTypes = []interface{}{
 	(*BytecodeImage)(nil),           // 0: bpfman.v1.BytecodeImage
 	(*BytecodeLocation)(nil),        // 1: bpfman.v1.BytecodeLocation
@@ -1921,70 +2018,72 @@ var file_bpfman_proto_goTypes = []interface{}{
 	(*ProgramInfo)(nil),             // 3: bpfman.v1.ProgramInfo
 	(*XDPAttachInfo)(nil),           // 4: bpfman.v1.XDPAttachInfo
 	(*TCAttachInfo)(nil),            // 5: bpfman.v1.TCAttachInfo
-	(*TracepointAttachInfo)(nil),    // 6: bpfman.v1.TracepointAttachInfo
-	(*KprobeAttachInfo)(nil),        // 7: bpfman.v1.KprobeAttachInfo
-	(*UprobeAttachInfo)(nil),        // 8: bpfman.v1.UprobeAttachInfo
-	(*FentryAttachInfo)(nil),        // 9: bpfman.v1.FentryAttachInfo
-	(*FexitAttachInfo)(nil),         // 10: bpfman.v1.FexitAttachInfo
-	(*AttachInfo)(nil),              // 11: bpfman.v1.AttachInfo
-	(*LoadRequest)(nil),             // 12: bpfman.v1.LoadRequest
-	(*LoadResponse)(nil),            // 13: bpfman.v1.LoadResponse
-	(*UnloadRequest)(nil),           // 14: bpfman.v1.UnloadRequest
-	(*UnloadResponse)(nil),          // 15: bpfman.v1.UnloadResponse
-	(*ListRequest)(nil),             // 16: bpfman.v1.ListRequest
-	(*ListResponse)(nil),            // 17: bpfman.v1.ListResponse
-	(*PullBytecodeRequest)(nil),     // 18: bpfman.v1.PullBytecodeRequest
-	(*PullBytecodeResponse)(nil),    // 19: bpfman.v1.PullBytecodeResponse
-	(*GetRequest)(nil),              // 20: bpfman.v1.GetRequest
-	(*GetResponse)(nil),             // 21: bpfman.v1.GetResponse
-	nil,                             // 22: bpfman.v1.ProgramInfo.GlobalDataEntry
-	nil,                             // 23: bpfman.v1.ProgramInfo.MetadataEntry
-	nil,                             // 24: bpfman.v1.LoadRequest.MetadataEntry
-	nil,                             // 25: bpfman.v1.LoadRequest.GlobalDataEntry
-	nil,                             // 26: bpfman.v1.ListRequest.MatchMetadataEntry
-	(*ListResponse_ListResult)(nil), // 27: bpfman.v1.ListResponse.ListResult
+	(*TCXAttachInfo)(nil),           // 6: bpfman.v1.TCXAttachInfo
+	(*TracepointAttachInfo)(nil),    // 7: bpfman.v1.TracepointAttachInfo
+	(*KprobeAttachInfo)(nil),        // 8: bpfman.v1.KprobeAttachInfo
+	(*UprobeAttachInfo)(nil),        // 9: bpfman.v1.UprobeAttachInfo
+	(*FentryAttachInfo)(nil),        // 10: bpfman.v1.FentryAttachInfo
+	(*FexitAttachInfo)(nil),         // 11: bpfman.v1.FexitAttachInfo
+	(*AttachInfo)(nil),              // 12: bpfman.v1.AttachInfo
+	(*LoadRequest)(nil),             // 13: bpfman.v1.LoadRequest
+	(*LoadResponse)(nil),            // 14: bpfman.v1.LoadResponse
+	(*UnloadRequest)(nil),           // 15: bpfman.v1.UnloadRequest
+	(*UnloadResponse)(nil),          // 16: bpfman.v1.UnloadResponse
+	(*ListRequest)(nil),             // 17: bpfman.v1.ListRequest
+	(*ListResponse)(nil),            // 18: bpfman.v1.ListResponse
+	(*PullBytecodeRequest)(nil),     // 19: bpfman.v1.PullBytecodeRequest
+	(*PullBytecodeResponse)(nil),    // 20: bpfman.v1.PullBytecodeResponse
+	(*GetRequest)(nil),              // 21: bpfman.v1.GetRequest
+	(*GetResponse)(nil),             // 22: bpfman.v1.GetResponse
+	nil,                             // 23: bpfman.v1.ProgramInfo.GlobalDataEntry
+	nil,                             // 24: bpfman.v1.ProgramInfo.MetadataEntry
+	nil,                             // 25: bpfman.v1.LoadRequest.MetadataEntry
+	nil,                             // 26: bpfman.v1.LoadRequest.GlobalDataEntry
+	nil,                             // 27: bpfman.v1.ListRequest.MatchMetadataEntry
+	(*ListResponse_ListResult)(nil), // 28: bpfman.v1.ListResponse.ListResult
 }
 var file_bpfman_proto_depIdxs = []int32{
 	0,  // 0: bpfman.v1.BytecodeLocation.image:type_name -> bpfman.v1.BytecodeImage
 	1,  // 1: bpfman.v1.ProgramInfo.bytecode:type_name -> bpfman.v1.BytecodeLocation
-	11, // 2: bpfman.v1.ProgramInfo.attach:type_name -> bpfman.v1.AttachInfo
-	22, // 3: bpfman.v1.ProgramInfo.global_data:type_name -> bpfman.v1.ProgramInfo.GlobalDataEntry
-	23, // 4: bpfman.v1.ProgramInfo.metadata:type_name -> bpfman.v1.ProgramInfo.MetadataEntry
+	12, // 2: bpfman.v1.ProgramInfo.attach:type_name -> bpfman.v1.AttachInfo
+	23, // 3: bpfman.v1.ProgramInfo.global_data:type_name -> bpfman.v1.ProgramInfo.GlobalDataEntry
+	24, // 4: bpfman.v1.ProgramInfo.metadata:type_name -> bpfman.v1.ProgramInfo.MetadataEntry
 	4,  // 5: bpfman.v1.AttachInfo.xdp_attach_info:type_name -> bpfman.v1.XDPAttachInfo
 	5,  // 6: bpfman.v1.AttachInfo.tc_attach_info:type_name -> bpfman.v1.TCAttachInfo
-	6,  // 7: bpfman.v1.AttachInfo.tracepoint_attach_info:type_name -> bpfman.v1.TracepointAttachInfo
-	7,  // 8: bpfman.v1.AttachInfo.kprobe_attach_info:type_name -> bpfman.v1.KprobeAttachInfo
-	8,  // 9: bpfman.v1.AttachInfo.uprobe_attach_info:type_name -> bpfman.v1.UprobeAttachInfo
-	9,  // 10: bpfman.v1.AttachInfo.fentry_attach_info:type_name -> bpfman.v1.FentryAttachInfo
-	10, // 11: bpfman.v1.AttachInfo.fexit_attach_info:type_name -> bpfman.v1.FexitAttachInfo
-	1,  // 12: bpfman.v1.LoadRequest.bytecode:type_name -> bpfman.v1.BytecodeLocation
-	11, // 13: bpfman.v1.LoadRequest.attach:type_name -> bpfman.v1.AttachInfo
-	24, // 14: bpfman.v1.LoadRequest.metadata:type_name -> bpfman.v1.LoadRequest.MetadataEntry
-	25, // 15: bpfman.v1.LoadRequest.global_data:type_name -> bpfman.v1.LoadRequest.GlobalDataEntry
-	3,  // 16: bpfman.v1.LoadResponse.info:type_name -> bpfman.v1.ProgramInfo
-	2,  // 17: bpfman.v1.LoadResponse.kernel_info:type_name -> bpfman.v1.KernelProgramInfo
-	26, // 18: bpfman.v1.ListRequest.match_metadata:type_name -> bpfman.v1.ListRequest.MatchMetadataEntry
-	27, // 19: bpfman.v1.ListResponse.results:type_name -> bpfman.v1.ListResponse.ListResult
-	0,  // 20: bpfman.v1.PullBytecodeRequest.image:type_name -> bpfman.v1.BytecodeImage
-	3,  // 21: bpfman.v1.GetResponse.info:type_name -> bpfman.v1.ProgramInfo
-	2,  // 22: bpfman.v1.GetResponse.kernel_info:type_name -> bpfman.v1.KernelProgramInfo
-	3,  // 23: bpfman.v1.ListResponse.ListResult.info:type_name -> bpfman.v1.ProgramInfo
-	2,  // 24: bpfman.v1.ListResponse.ListResult.kernel_info:type_name -> bpfman.v1.KernelProgramInfo
-	12, // 25: bpfman.v1.Bpfman.Load:input_type -> bpfman.v1.LoadRequest
-	14, // 26: bpfman.v1.Bpfman.Unload:input_type -> bpfman.v1.UnloadRequest
-	16, // 27: bpfman.v1.Bpfman.List:input_type -> bpfman.v1.ListRequest
-	18, // 28: bpfman.v1.Bpfman.PullBytecode:input_type -> bpfman.v1.PullBytecodeRequest
-	20, // 29: bpfman.v1.Bpfman.Get:input_type -> bpfman.v1.GetRequest
-	13, // 30: bpfman.v1.Bpfman.Load:output_type -> bpfman.v1.LoadResponse
-	15, // 31: bpfman.v1.Bpfman.Unload:output_type -> bpfman.v1.UnloadResponse
-	17, // 32: bpfman.v1.Bpfman.List:output_type -> bpfman.v1.ListResponse
-	19, // 33: bpfman.v1.Bpfman.PullBytecode:output_type -> bpfman.v1.PullBytecodeResponse
-	21, // 34: bpfman.v1.Bpfman.Get:output_type -> bpfman.v1.GetResponse
-	30, // [30:35] is the sub-list for method output_type
-	25, // [25:30] is the sub-list for method input_type
-	25, // [25:25] is the sub-list for extension type_name
-	25, // [25:25] is the sub-list for extension extendee
-	0,  // [0:25] is the sub-list for field type_name
+	7,  // 7: bpfman.v1.AttachInfo.tracepoint_attach_info:type_name -> bpfman.v1.TracepointAttachInfo
+	8,  // 8: bpfman.v1.AttachInfo.kprobe_attach_info:type_name -> bpfman.v1.KprobeAttachInfo
+	9,  // 9: bpfman.v1.AttachInfo.uprobe_attach_info:type_name -> bpfman.v1.UprobeAttachInfo
+	10, // 10: bpfman.v1.AttachInfo.fentry_attach_info:type_name -> bpfman.v1.FentryAttachInfo
+	11, // 11: bpfman.v1.AttachInfo.fexit_attach_info:type_name -> bpfman.v1.FexitAttachInfo
+	6,  // 12: bpfman.v1.AttachInfo.tcx_attach_info:type_name -> bpfman.v1.TCXAttachInfo
+	1,  // 13: bpfman.v1.LoadRequest.bytecode:type_name -> bpfman.v1.BytecodeLocation
+	12, // 14: bpfman.v1.LoadRequest.attach:type_name -> bpfman.v1.AttachInfo
+	25, // 15: bpfman.v1.LoadRequest.metadata:type_name -> bpfman.v1.LoadRequest.MetadataEntry
+	26, // 16: bpfman.v1.LoadRequest.global_data:type_name -> bpfman.v1.LoadRequest.GlobalDataEntry
+	3,  // 17: bpfman.v1.LoadResponse.info:type_name -> bpfman.v1.ProgramInfo
+	2,  // 18: bpfman.v1.LoadResponse.kernel_info:type_name -> bpfman.v1.KernelProgramInfo
+	27, // 19: bpfman.v1.ListRequest.match_metadata:type_name -> bpfman.v1.ListRequest.MatchMetadataEntry
+	28, // 20: bpfman.v1.ListResponse.results:type_name -> bpfman.v1.ListResponse.ListResult
+	0,  // 21: bpfman.v1.PullBytecodeRequest.image:type_name -> bpfman.v1.BytecodeImage
+	3,  // 22: bpfman.v1.GetResponse.info:type_name -> bpfman.v1.ProgramInfo
+	2,  // 23: bpfman.v1.GetResponse.kernel_info:type_name -> bpfman.v1.KernelProgramInfo
+	3,  // 24: bpfman.v1.ListResponse.ListResult.info:type_name -> bpfman.v1.ProgramInfo
+	2,  // 25: bpfman.v1.ListResponse.ListResult.kernel_info:type_name -> bpfman.v1.KernelProgramInfo
+	13, // 26: bpfman.v1.Bpfman.Load:input_type -> bpfman.v1.LoadRequest
+	15, // 27: bpfman.v1.Bpfman.Unload:input_type -> bpfman.v1.UnloadRequest
+	17, // 28: bpfman.v1.Bpfman.List:input_type -> bpfman.v1.ListRequest
+	19, // 29: bpfman.v1.Bpfman.PullBytecode:input_type -> bpfman.v1.PullBytecodeRequest
+	21, // 30: bpfman.v1.Bpfman.Get:input_type -> bpfman.v1.GetRequest
+	14, // 31: bpfman.v1.Bpfman.Load:output_type -> bpfman.v1.LoadResponse
+	16, // 32: bpfman.v1.Bpfman.Unload:output_type -> bpfman.v1.UnloadResponse
+	18, // 33: bpfman.v1.Bpfman.List:output_type -> bpfman.v1.ListResponse
+	20, // 34: bpfman.v1.Bpfman.PullBytecode:output_type -> bpfman.v1.PullBytecodeResponse
+	22, // 35: bpfman.v1.Bpfman.Get:output_type -> bpfman.v1.GetResponse
+	31, // [31:36] is the sub-list for method output_type
+	26, // [26:31] is the sub-list for method input_type
+	26, // [26:26] is the sub-list for extension type_name
+	26, // [26:26] is the sub-list for extension extendee
+	0,  // [0:26] is the sub-list for field type_name
 }
 
 func init() { file_bpfman_proto_init() }
@@ -2066,7 +2165,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TracepointAttachInfo); i {
+			switch v := v.(*TCXAttachInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2078,7 +2177,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KprobeAttachInfo); i {
+			switch v := v.(*TracepointAttachInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2090,7 +2189,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UprobeAttachInfo); i {
+			switch v := v.(*KprobeAttachInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2102,7 +2201,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FentryAttachInfo); i {
+			switch v := v.(*UprobeAttachInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2114,7 +2213,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FexitAttachInfo); i {
+			switch v := v.(*FentryAttachInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2126,7 +2225,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AttachInfo); i {
+			switch v := v.(*FexitAttachInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2138,7 +2237,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LoadRequest); i {
+			switch v := v.(*AttachInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2150,7 +2249,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*LoadResponse); i {
+			switch v := v.(*LoadRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2162,7 +2261,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UnloadRequest); i {
+			switch v := v.(*LoadResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2174,7 +2273,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UnloadResponse); i {
+			switch v := v.(*UnloadRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2186,7 +2285,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListRequest); i {
+			switch v := v.(*UnloadResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2198,7 +2297,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListResponse); i {
+			switch v := v.(*ListRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2210,7 +2309,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PullBytecodeRequest); i {
+			switch v := v.(*ListResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2222,7 +2321,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PullBytecodeResponse); i {
+			switch v := v.(*PullBytecodeRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2234,7 +2333,7 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetRequest); i {
+			switch v := v.(*PullBytecodeResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2246,6 +2345,18 @@ func file_bpfman_proto_init() {
 			}
 		}
 		file_bpfman_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_bpfman_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GetResponse); i {
 			case 0:
 				return &v.state
@@ -2257,7 +2368,7 @@ func file_bpfman_proto_init() {
 				return nil
 			}
 		}
-		file_bpfman_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+		file_bpfman_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*ListResponse_ListResult); i {
 			case 0:
 				return &v.state
@@ -2276,9 +2387,9 @@ func file_bpfman_proto_init() {
 		(*BytecodeLocation_File)(nil),
 	}
 	file_bpfman_proto_msgTypes[3].OneofWrappers = []interface{}{}
-	file_bpfman_proto_msgTypes[7].OneofWrappers = []interface{}{}
 	file_bpfman_proto_msgTypes[8].OneofWrappers = []interface{}{}
-	file_bpfman_proto_msgTypes[11].OneofWrappers = []interface{}{
+	file_bpfman_proto_msgTypes[9].OneofWrappers = []interface{}{}
+	file_bpfman_proto_msgTypes[12].OneofWrappers = []interface{}{
 		(*AttachInfo_XdpAttachInfo)(nil),
 		(*AttachInfo_TcAttachInfo)(nil),
 		(*AttachInfo_TracepointAttachInfo)(nil),
@@ -2286,18 +2397,19 @@ func file_bpfman_proto_init() {
 		(*AttachInfo_UprobeAttachInfo)(nil),
 		(*AttachInfo_FentryAttachInfo)(nil),
 		(*AttachInfo_FexitAttachInfo)(nil),
+		(*AttachInfo_TcxAttachInfo)(nil),
 	}
-	file_bpfman_proto_msgTypes[12].OneofWrappers = []interface{}{}
-	file_bpfman_proto_msgTypes[16].OneofWrappers = []interface{}{}
-	file_bpfman_proto_msgTypes[21].OneofWrappers = []interface{}{}
-	file_bpfman_proto_msgTypes[27].OneofWrappers = []interface{}{}
+	file_bpfman_proto_msgTypes[13].OneofWrappers = []interface{}{}
+	file_bpfman_proto_msgTypes[17].OneofWrappers = []interface{}{}
+	file_bpfman_proto_msgTypes[22].OneofWrappers = []interface{}{}
+	file_bpfman_proto_msgTypes[28].OneofWrappers = []interface{}{}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_bpfman_proto_rawDesc,
 			NumEnums:      0,
-			NumMessages:   28,
+			NumMessages:   29,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 0f4458a7a..2b8842826 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -4,7 +4,7 @@ github.com/beorn7/perks/quantile
 # github.com/blang/semver/v4 v4.0.0
 ## explicit; go 1.14
 github.com/blang/semver/v4
-# github.com/bpfman/bpfman v0.5.4
+# github.com/bpfman/bpfman v0.5.5-0.20241022174147-497c1ed71c81
 ## explicit; go 1.22.0
 github.com/bpfman/bpfman/clients/gobpfman/v1
 # github.com/buger/jsonparser v1.1.1