diff --git a/go/github.com/openconfig/gnmi/proto/collector/collector.pb.go b/go/github.com/openconfig/gnmi/proto/collector/collector.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..ea7fff29da0d910e107bc55fb6af38ed829788d5
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/proto/collector/collector.pb.go
@@ -0,0 +1,220 @@
+//
+// Copyright 2020 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.27.1
+// 	protoc        (unknown)
+// source: github.com/openconfig/gnmi/proto/collector/collector.proto
+
+package gnmi
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type ReconnectRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Target []string `protobuf:"bytes,1,rep,name=target,proto3" json:"target,omitempty"` // List of targets to reconnect.
+}
+
+func (x *ReconnectRequest) Reset() {
+	*x = ReconnectRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ReconnectRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReconnectRequest) ProtoMessage() {}
+
+func (x *ReconnectRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReconnectRequest.ProtoReflect.Descriptor instead.
+func (*ReconnectRequest) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ReconnectRequest) GetTarget() []string {
+	if x != nil {
+		return x.Target
+	}
+	return nil
+}
+
+type Nil struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *Nil) Reset() {
+	*x = Nil{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Nil) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Nil) ProtoMessage() {}
+
+func (x *Nil) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Nil.ProtoReflect.Descriptor instead.
+func (*Nil) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescGZIP(), []int{1}
+}
+
+var File_github_com_openconfig_gnmi_proto_collector_collector_proto protoreflect.FileDescriptor
+
+var file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDesc = []byte{
+	0x0a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x6f, 0x6c,
+	0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x67, 0x6e,
+	0x6d, 0x69, 0x22, 0x2a, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x05,
+	0x0a, 0x03, 0x4e, 0x69, 0x6c, 0x32, 0x3d, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74,
+	0x6f, 0x72, 0x12, 0x30, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12,
+	0x16, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x09, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e,
+	0x69, 0x6c, 0x22, 0x00, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e,
+	0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74,
+	0x6f, 0x72, 0x3b, 0x67, 0x6e, 0x6d, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescOnce sync.Once
+	file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescData = file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDesc
+)
+
+func file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescGZIP() []byte {
+	file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescOnce.Do(func() {
+		file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescData)
+	})
+	return file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDescData
+}
+
+var file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_github_com_openconfig_gnmi_proto_collector_collector_proto_goTypes = []interface{}{
+	(*ReconnectRequest)(nil), // 0: gnmi.ReconnectRequest
+	(*Nil)(nil),              // 1: gnmi.Nil
+}
+var file_github_com_openconfig_gnmi_proto_collector_collector_proto_depIdxs = []int32{
+	0, // 0: gnmi.Collector.Reconnect:input_type -> gnmi.ReconnectRequest
+	1, // 1: gnmi.Collector.Reconnect:output_type -> gnmi.Nil
+	1, // [1:2] is the sub-list for method output_type
+	0, // [0:1] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_github_com_openconfig_gnmi_proto_collector_collector_proto_init() }
+func file_github_com_openconfig_gnmi_proto_collector_collector_proto_init() {
+	if File_github_com_openconfig_gnmi_proto_collector_collector_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ReconnectRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Nil); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_github_com_openconfig_gnmi_proto_collector_collector_proto_goTypes,
+		DependencyIndexes: file_github_com_openconfig_gnmi_proto_collector_collector_proto_depIdxs,
+		MessageInfos:      file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes,
+	}.Build()
+	File_github_com_openconfig_gnmi_proto_collector_collector_proto = out.File
+	file_github_com_openconfig_gnmi_proto_collector_collector_proto_rawDesc = nil
+	file_github_com_openconfig_gnmi_proto_collector_collector_proto_goTypes = nil
+	file_github_com_openconfig_gnmi_proto_collector_collector_proto_depIdxs = nil
+}
diff --git a/go/github.com/openconfig/gnmi/proto/collector/collector_grpc.pb.go b/go/github.com/openconfig/gnmi/proto/collector/collector_grpc.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..e5f684d3c68a8707f011ed52c3f6b5b3382cda8a
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/proto/collector/collector_grpc.pb.go
@@ -0,0 +1,105 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+
+package gnmi
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// CollectorClient is the client API for Collector service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type CollectorClient interface {
+	// Reconnect requests that the existing connections for one or more specified
+	// targets will be stopped and new connections established.
+	Reconnect(ctx context.Context, in *ReconnectRequest, opts ...grpc.CallOption) (*Nil, error)
+}
+
+type collectorClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewCollectorClient(cc grpc.ClientConnInterface) CollectorClient {
+	return &collectorClient{cc}
+}
+
+func (c *collectorClient) Reconnect(ctx context.Context, in *ReconnectRequest, opts ...grpc.CallOption) (*Nil, error) {
+	out := new(Nil)
+	err := c.cc.Invoke(ctx, "/gnmi.Collector/Reconnect", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// CollectorServer is the server API for Collector service.
+// All implementations must embed UnimplementedCollectorServer
+// for forward compatibility
+type CollectorServer interface {
+	// Reconnect requests that the existing connections for one or more specified
+	// targets will be stopped and new connections established.
+	Reconnect(context.Context, *ReconnectRequest) (*Nil, error)
+	mustEmbedUnimplementedCollectorServer()
+}
+
+// UnimplementedCollectorServer must be embedded to have forward compatible implementations.
+type UnimplementedCollectorServer struct {
+}
+
+func (UnimplementedCollectorServer) Reconnect(context.Context, *ReconnectRequest) (*Nil, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Reconnect not implemented")
+}
+func (UnimplementedCollectorServer) mustEmbedUnimplementedCollectorServer() {}
+
+// UnsafeCollectorServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to CollectorServer will
+// result in compilation errors.
+type UnsafeCollectorServer interface {
+	mustEmbedUnimplementedCollectorServer()
+}
+
+func RegisterCollectorServer(s grpc.ServiceRegistrar, srv CollectorServer) {
+	s.RegisterService(&Collector_ServiceDesc, srv)
+}
+
+func _Collector_Reconnect_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ReconnectRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CollectorServer).Reconnect(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gnmi.Collector/Reconnect",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CollectorServer).Reconnect(ctx, req.(*ReconnectRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// Collector_ServiceDesc is the grpc.ServiceDesc for Collector service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Collector_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "gnmi.Collector",
+	HandlerType: (*CollectorServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "Reconnect",
+			Handler:    _Collector_Reconnect_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "github.com/openconfig/gnmi/proto/collector/collector.proto",
+}
diff --git a/go/github.com/openconfig/gnmi/proto/gnmi/gnmi.pb.go b/go/github.com/openconfig/gnmi/proto/gnmi/gnmi.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..62c9e5ea28e383165854be411dc3115d100fd241
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/proto/gnmi/gnmi.pb.go
@@ -0,0 +1,3197 @@
+//
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.27.1
+// 	protoc        (unknown)
+// source: github.com/openconfig/gnmi/proto/gnmi/gnmi.proto
+
+// Package gNMI defines a service specification for the gRPC Network Management
+// Interface. This interface is defined to be a standard interface via which
+// a network management system ("client") can subscribe to state values,
+// retrieve snapshots of state information, and manipulate the state of a data
+// tree supported by a device ("target").
+//
+// This document references the gNMI Specification which can be found at
+// http://github.com/openconfig/reference/blob/master/rpc/gnmi
+
+package gnmi
+
+import (
+	gnmi_ext "github.com/openconfig/gnmi/proto/gnmi_ext"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// Encoding defines the value encoding formats that are supported by the gNMI
+// protocol. These encodings are used by both the client (when sending Set
+// messages to modify the state of the target) and the target when serializing
+// data to be returned to the client (in both Subscribe and Get RPCs).
+// Reference: gNMI Specification Section 2.3
+type Encoding int32
+
+const (
+	Encoding_JSON      Encoding = 0 // JSON encoded text.
+	Encoding_BYTES     Encoding = 1 // Arbitrarily encoded bytes.
+	Encoding_PROTO     Encoding = 2 // Encoded according to out-of-band agreed Protobuf.
+	Encoding_ASCII     Encoding = 3 // ASCII text of an out-of-band agreed format.
+	Encoding_JSON_IETF Encoding = 4 // JSON encoded text as per RFC7951.
+)
+
+// Enum value maps for Encoding.
+var (
+	Encoding_name = map[int32]string{
+		0: "JSON",
+		1: "BYTES",
+		2: "PROTO",
+		3: "ASCII",
+		4: "JSON_IETF",
+	}
+	Encoding_value = map[string]int32{
+		"JSON":      0,
+		"BYTES":     1,
+		"PROTO":     2,
+		"ASCII":     3,
+		"JSON_IETF": 4,
+	}
+)
+
+func (x Encoding) Enum() *Encoding {
+	p := new(Encoding)
+	*p = x
+	return p
+}
+
+func (x Encoding) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Encoding) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[0].Descriptor()
+}
+
+func (Encoding) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[0]
+}
+
+func (x Encoding) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Encoding.Descriptor instead.
+func (Encoding) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{0}
+}
+
+// SubscriptionMode is the mode of the subscription, specifying how the
+// target must return values in a subscription.
+// Reference: gNMI Specification Section 3.5.1.3
+type SubscriptionMode int32
+
+const (
+	SubscriptionMode_TARGET_DEFINED SubscriptionMode = 0 // The target selects the relevant mode for each element.
+	SubscriptionMode_ON_CHANGE      SubscriptionMode = 1 // The target sends an update on element value change.
+	SubscriptionMode_SAMPLE         SubscriptionMode = 2 // The target samples values according to the interval.
+)
+
+// Enum value maps for SubscriptionMode.
+var (
+	SubscriptionMode_name = map[int32]string{
+		0: "TARGET_DEFINED",
+		1: "ON_CHANGE",
+		2: "SAMPLE",
+	}
+	SubscriptionMode_value = map[string]int32{
+		"TARGET_DEFINED": 0,
+		"ON_CHANGE":      1,
+		"SAMPLE":         2,
+	}
+)
+
+func (x SubscriptionMode) Enum() *SubscriptionMode {
+	p := new(SubscriptionMode)
+	*p = x
+	return p
+}
+
+func (x SubscriptionMode) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SubscriptionMode) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[1].Descriptor()
+}
+
+func (SubscriptionMode) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[1]
+}
+
+func (x SubscriptionMode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SubscriptionMode.Descriptor instead.
+func (SubscriptionMode) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{1}
+}
+
+// Mode of the subscription.
+type SubscriptionList_Mode int32
+
+const (
+	SubscriptionList_STREAM SubscriptionList_Mode = 0 // Values streamed by the target (Sec. 3.5.1.5.2).
+	SubscriptionList_ONCE   SubscriptionList_Mode = 1 // Values sent once-off by the target (Sec. 3.5.1.5.1).
+	SubscriptionList_POLL   SubscriptionList_Mode = 2 // Values sent in response to a poll request (Sec. 3.5.1.5.3).
+)
+
+// Enum value maps for SubscriptionList_Mode.
+var (
+	SubscriptionList_Mode_name = map[int32]string{
+		0: "STREAM",
+		1: "ONCE",
+		2: "POLL",
+	}
+	SubscriptionList_Mode_value = map[string]int32{
+		"STREAM": 0,
+		"ONCE":   1,
+		"POLL":   2,
+	}
+)
+
+func (x SubscriptionList_Mode) Enum() *SubscriptionList_Mode {
+	p := new(SubscriptionList_Mode)
+	*p = x
+	return p
+}
+
+func (x SubscriptionList_Mode) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SubscriptionList_Mode) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[2].Descriptor()
+}
+
+func (SubscriptionList_Mode) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[2]
+}
+
+func (x SubscriptionList_Mode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SubscriptionList_Mode.Descriptor instead.
+func (SubscriptionList_Mode) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{12, 0}
+}
+
+// The operation that was associated with the Path specified.
+type UpdateResult_Operation int32
+
+const (
+	UpdateResult_INVALID UpdateResult_Operation = 0
+	UpdateResult_DELETE  UpdateResult_Operation = 1 // The result relates to a delete of Path.
+	UpdateResult_REPLACE UpdateResult_Operation = 2 // The result relates to a replace of Path.
+	UpdateResult_UPDATE  UpdateResult_Operation = 3 // The result relates to an update of Path.
+)
+
+// Enum value maps for UpdateResult_Operation.
+var (
+	UpdateResult_Operation_name = map[int32]string{
+		0: "INVALID",
+		1: "DELETE",
+		2: "REPLACE",
+		3: "UPDATE",
+	}
+	UpdateResult_Operation_value = map[string]int32{
+		"INVALID": 0,
+		"DELETE":  1,
+		"REPLACE": 2,
+		"UPDATE":  3,
+	}
+)
+
+func (x UpdateResult_Operation) Enum() *UpdateResult_Operation {
+	p := new(UpdateResult_Operation)
+	*p = x
+	return p
+}
+
+func (x UpdateResult_Operation) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (UpdateResult_Operation) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[3].Descriptor()
+}
+
+func (UpdateResult_Operation) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[3]
+}
+
+func (x UpdateResult_Operation) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use UpdateResult_Operation.Descriptor instead.
+func (UpdateResult_Operation) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{19, 0}
+}
+
+// Type of elements within the data tree.
+type GetRequest_DataType int32
+
+const (
+	GetRequest_ALL    GetRequest_DataType = 0 // All data elements.
+	GetRequest_CONFIG GetRequest_DataType = 1 // Config (rw) only elements.
+	GetRequest_STATE  GetRequest_DataType = 2 // State (ro) only elements.
+	// Data elements marked in the schema as operational. This refers to data
+	// elements whose value relates to the state of processes or interactions
+	// running on the device.
+	GetRequest_OPERATIONAL GetRequest_DataType = 3
+)
+
+// Enum value maps for GetRequest_DataType.
+var (
+	GetRequest_DataType_name = map[int32]string{
+		0: "ALL",
+		1: "CONFIG",
+		2: "STATE",
+		3: "OPERATIONAL",
+	}
+	GetRequest_DataType_value = map[string]int32{
+		"ALL":         0,
+		"CONFIG":      1,
+		"STATE":       2,
+		"OPERATIONAL": 3,
+	}
+)
+
+func (x GetRequest_DataType) Enum() *GetRequest_DataType {
+	p := new(GetRequest_DataType)
+	*p = x
+	return p
+}
+
+func (x GetRequest_DataType) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (GetRequest_DataType) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[4].Descriptor()
+}
+
+func (GetRequest_DataType) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes[4]
+}
+
+func (x GetRequest_DataType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetRequest_DataType.Descriptor instead.
+func (GetRequest_DataType) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{20, 0}
+}
+
+// Notification is a re-usable message that is used to encode data from the
+// target to the client. A Notification carries two types of changes to the data
+// tree:
+//  - Deleted values (delete) - a set of paths that have been removed from the
+//    data tree.
+//  - Updated values (update) - a set of path-value pairs indicating the path
+//    whose value has changed in the data tree.
+// Reference: gNMI Specification Section 2.1
+type Notification struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
+	Prefix    *Path `protobuf:"bytes,2,opt,name=prefix,proto3" json:"prefix,omitempty"`        // Prefix used for paths in the message.
+	// An alias for the path specified in the prefix field.
+	// Reference: gNMI Specification Section 2.4.2
+	Alias  string    `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
+	Update []*Update `protobuf:"bytes,4,rep,name=update,proto3" json:"update,omitempty"` // Data elements that have changed values.
+	Delete []*Path   `protobuf:"bytes,5,rep,name=delete,proto3" json:"delete,omitempty"` // Data elements that have been deleted.
+	// This notification contains a set of paths that are always updated together
+	// referenced by a globally unique prefix.
+	Atomic bool `protobuf:"varint,6,opt,name=atomic,proto3" json:"atomic,omitempty"`
+}
+
+func (x *Notification) Reset() {
+	*x = Notification{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Notification) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Notification) ProtoMessage() {}
+
+func (x *Notification) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Notification.ProtoReflect.Descriptor instead.
+func (*Notification) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Notification) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *Notification) GetPrefix() *Path {
+	if x != nil {
+		return x.Prefix
+	}
+	return nil
+}
+
+func (x *Notification) GetAlias() string {
+	if x != nil {
+		return x.Alias
+	}
+	return ""
+}
+
+func (x *Notification) GetUpdate() []*Update {
+	if x != nil {
+		return x.Update
+	}
+	return nil
+}
+
+func (x *Notification) GetDelete() []*Path {
+	if x != nil {
+		return x.Delete
+	}
+	return nil
+}
+
+func (x *Notification) GetAtomic() bool {
+	if x != nil {
+		return x.Atomic
+	}
+	return false
+}
+
+// Update is a re-usable message that is used to store a particular Path,
+// Value pair.
+// Reference: gNMI Specification Section 2.1
+type Update struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Path *Path `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // The path (key) for the update.
+	// Deprecated: Do not use.
+	Value      *Value      `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`            // The value (value) for the update.
+	Val        *TypedValue `protobuf:"bytes,3,opt,name=val,proto3" json:"val,omitempty"`                // The explicitly typed update value.
+	Duplicates uint32      `protobuf:"varint,4,opt,name=duplicates,proto3" json:"duplicates,omitempty"` // Number of coalesced duplicates.
+}
+
+func (x *Update) Reset() {
+	*x = Update{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Update) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Update) ProtoMessage() {}
+
+func (x *Update) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Update.ProtoReflect.Descriptor instead.
+func (*Update) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Update) GetPath() *Path {
+	if x != nil {
+		return x.Path
+	}
+	return nil
+}
+
+// Deprecated: Do not use.
+func (x *Update) GetValue() *Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *Update) GetVal() *TypedValue {
+	if x != nil {
+		return x.Val
+	}
+	return nil
+}
+
+func (x *Update) GetDuplicates() uint32 {
+	if x != nil {
+		return x.Duplicates
+	}
+	return 0
+}
+
+// TypedValue is used to encode a value being sent between the client and
+// target (originated by either entity).
+type TypedValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// One of the fields within the val oneof is populated with the value
+	// of the update. The type of the value being included in the Update
+	// determines which field should be populated. In the case that the
+	// encoding is a particular form of the base protobuf type, a specific
+	// field is used to store the value (e.g., json_val).
+	//
+	// Types that are assignable to Value:
+	//	*TypedValue_StringVal
+	//	*TypedValue_IntVal
+	//	*TypedValue_UintVal
+	//	*TypedValue_BoolVal
+	//	*TypedValue_BytesVal
+	//	*TypedValue_FloatVal
+	//	*TypedValue_DecimalVal
+	//	*TypedValue_LeaflistVal
+	//	*TypedValue_AnyVal
+	//	*TypedValue_JsonVal
+	//	*TypedValue_JsonIetfVal
+	//	*TypedValue_AsciiVal
+	//	*TypedValue_ProtoBytes
+	Value isTypedValue_Value `protobuf_oneof:"value"`
+}
+
+func (x *TypedValue) Reset() {
+	*x = TypedValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *TypedValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TypedValue) ProtoMessage() {}
+
+func (x *TypedValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TypedValue.ProtoReflect.Descriptor instead.
+func (*TypedValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{2}
+}
+
+func (m *TypedValue) GetValue() isTypedValue_Value {
+	if m != nil {
+		return m.Value
+	}
+	return nil
+}
+
+func (x *TypedValue) GetStringVal() string {
+	if x, ok := x.GetValue().(*TypedValue_StringVal); ok {
+		return x.StringVal
+	}
+	return ""
+}
+
+func (x *TypedValue) GetIntVal() int64 {
+	if x, ok := x.GetValue().(*TypedValue_IntVal); ok {
+		return x.IntVal
+	}
+	return 0
+}
+
+func (x *TypedValue) GetUintVal() uint64 {
+	if x, ok := x.GetValue().(*TypedValue_UintVal); ok {
+		return x.UintVal
+	}
+	return 0
+}
+
+func (x *TypedValue) GetBoolVal() bool {
+	if x, ok := x.GetValue().(*TypedValue_BoolVal); ok {
+		return x.BoolVal
+	}
+	return false
+}
+
+func (x *TypedValue) GetBytesVal() []byte {
+	if x, ok := x.GetValue().(*TypedValue_BytesVal); ok {
+		return x.BytesVal
+	}
+	return nil
+}
+
+func (x *TypedValue) GetFloatVal() float32 {
+	if x, ok := x.GetValue().(*TypedValue_FloatVal); ok {
+		return x.FloatVal
+	}
+	return 0
+}
+
+func (x *TypedValue) GetDecimalVal() *Decimal64 {
+	if x, ok := x.GetValue().(*TypedValue_DecimalVal); ok {
+		return x.DecimalVal
+	}
+	return nil
+}
+
+func (x *TypedValue) GetLeaflistVal() *ScalarArray {
+	if x, ok := x.GetValue().(*TypedValue_LeaflistVal); ok {
+		return x.LeaflistVal
+	}
+	return nil
+}
+
+func (x *TypedValue) GetAnyVal() *anypb.Any {
+	if x, ok := x.GetValue().(*TypedValue_AnyVal); ok {
+		return x.AnyVal
+	}
+	return nil
+}
+
+func (x *TypedValue) GetJsonVal() []byte {
+	if x, ok := x.GetValue().(*TypedValue_JsonVal); ok {
+		return x.JsonVal
+	}
+	return nil
+}
+
+func (x *TypedValue) GetJsonIetfVal() []byte {
+	if x, ok := x.GetValue().(*TypedValue_JsonIetfVal); ok {
+		return x.JsonIetfVal
+	}
+	return nil
+}
+
+func (x *TypedValue) GetAsciiVal() string {
+	if x, ok := x.GetValue().(*TypedValue_AsciiVal); ok {
+		return x.AsciiVal
+	}
+	return ""
+}
+
+func (x *TypedValue) GetProtoBytes() []byte {
+	if x, ok := x.GetValue().(*TypedValue_ProtoBytes); ok {
+		return x.ProtoBytes
+	}
+	return nil
+}
+
+type isTypedValue_Value interface {
+	isTypedValue_Value()
+}
+
+type TypedValue_StringVal struct {
+	StringVal string `protobuf:"bytes,1,opt,name=string_val,json=stringVal,proto3,oneof"` // String value.
+}
+
+type TypedValue_IntVal struct {
+	IntVal int64 `protobuf:"varint,2,opt,name=int_val,json=intVal,proto3,oneof"` // Integer value.
+}
+
+type TypedValue_UintVal struct {
+	UintVal uint64 `protobuf:"varint,3,opt,name=uint_val,json=uintVal,proto3,oneof"` // Unsigned integer value.
+}
+
+type TypedValue_BoolVal struct {
+	BoolVal bool `protobuf:"varint,4,opt,name=bool_val,json=boolVal,proto3,oneof"` // Bool value.
+}
+
+type TypedValue_BytesVal struct {
+	BytesVal []byte `protobuf:"bytes,5,opt,name=bytes_val,json=bytesVal,proto3,oneof"` // Arbitrary byte sequence value.
+}
+
+type TypedValue_FloatVal struct {
+	FloatVal float32 `protobuf:"fixed32,6,opt,name=float_val,json=floatVal,proto3,oneof"` // Floating point value.
+}
+
+type TypedValue_DecimalVal struct {
+	DecimalVal *Decimal64 `protobuf:"bytes,7,opt,name=decimal_val,json=decimalVal,proto3,oneof"` // Decimal64 encoded value.
+}
+
+type TypedValue_LeaflistVal struct {
+	LeaflistVal *ScalarArray `protobuf:"bytes,8,opt,name=leaflist_val,json=leaflistVal,proto3,oneof"` // Mixed type scalar array value.
+}
+
+type TypedValue_AnyVal struct {
+	AnyVal *anypb.Any `protobuf:"bytes,9,opt,name=any_val,json=anyVal,proto3,oneof"` // protobuf.Any encoded bytes.
+}
+
+type TypedValue_JsonVal struct {
+	JsonVal []byte `protobuf:"bytes,10,opt,name=json_val,json=jsonVal,proto3,oneof"` // JSON-encoded text.
+}
+
+type TypedValue_JsonIetfVal struct {
+	JsonIetfVal []byte `protobuf:"bytes,11,opt,name=json_ietf_val,json=jsonIetfVal,proto3,oneof"` // JSON-encoded text per RFC7951.
+}
+
+type TypedValue_AsciiVal struct {
+	AsciiVal string `protobuf:"bytes,12,opt,name=ascii_val,json=asciiVal,proto3,oneof"` // Arbitrary ASCII text.
+}
+
+type TypedValue_ProtoBytes struct {
+	// Protobuf binary encoded bytes. The message type is not included.
+	// See the specification at
+	// github.com/openconfig/reference/blob/master/rpc/gnmi/protobuf-vals.md
+	// for a complete specification.
+	ProtoBytes []byte `protobuf:"bytes,13,opt,name=proto_bytes,json=protoBytes,proto3,oneof"`
+}
+
+func (*TypedValue_StringVal) isTypedValue_Value() {}
+
+func (*TypedValue_IntVal) isTypedValue_Value() {}
+
+func (*TypedValue_UintVal) isTypedValue_Value() {}
+
+func (*TypedValue_BoolVal) isTypedValue_Value() {}
+
+func (*TypedValue_BytesVal) isTypedValue_Value() {}
+
+func (*TypedValue_FloatVal) isTypedValue_Value() {}
+
+func (*TypedValue_DecimalVal) isTypedValue_Value() {}
+
+func (*TypedValue_LeaflistVal) isTypedValue_Value() {}
+
+func (*TypedValue_AnyVal) isTypedValue_Value() {}
+
+func (*TypedValue_JsonVal) isTypedValue_Value() {}
+
+func (*TypedValue_JsonIetfVal) isTypedValue_Value() {}
+
+func (*TypedValue_AsciiVal) isTypedValue_Value() {}
+
+func (*TypedValue_ProtoBytes) isTypedValue_Value() {}
+
+// Path encodes a data tree path as a series of repeated strings, with
+// each element of the path representing a data tree node name and the
+// associated attributes.
+// Reference: gNMI Specification Section 2.2.2.
+type Path struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Elements of the path are no longer encoded as a string, but rather within
+	// the elem field as a PathElem message.
+	//
+	// Deprecated: Do not use.
+	Element []string    `protobuf:"bytes,1,rep,name=element,proto3" json:"element,omitempty"`
+	Origin  string      `protobuf:"bytes,2,opt,name=origin,proto3" json:"origin,omitempty"` // Label to disambiguate path.
+	Elem    []*PathElem `protobuf:"bytes,3,rep,name=elem,proto3" json:"elem,omitempty"`     // Elements of the path.
+	Target  string      `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"` // The name of the target
+}
+
+func (x *Path) Reset() {
+	*x = Path{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Path) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Path) ProtoMessage() {}
+
+func (x *Path) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Path.ProtoReflect.Descriptor instead.
+func (*Path) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{3}
+}
+
+// Deprecated: Do not use.
+func (x *Path) GetElement() []string {
+	if x != nil {
+		return x.Element
+	}
+	return nil
+}
+
+func (x *Path) GetOrigin() string {
+	if x != nil {
+		return x.Origin
+	}
+	return ""
+}
+
+func (x *Path) GetElem() []*PathElem {
+	if x != nil {
+		return x.Elem
+	}
+	return nil
+}
+
+func (x *Path) GetTarget() string {
+	if x != nil {
+		return x.Target
+	}
+	return ""
+}
+
+// PathElem encodes an element of a gNMI path, along with any attributes (keys)
+// that may be associated with it.
+// Reference: gNMI Specification Section 2.2.2.
+type PathElem struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`                                                                                       // The name of the element in the path.
+	Key  map[string]string `protobuf:"bytes,2,rep,name=key,proto3" json:"key,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Map of key (attribute) name to value.
+}
+
+func (x *PathElem) Reset() {
+	*x = PathElem{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PathElem) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PathElem) ProtoMessage() {}
+
+func (x *PathElem) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PathElem.ProtoReflect.Descriptor instead.
+func (*PathElem) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *PathElem) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *PathElem) GetKey() map[string]string {
+	if x != nil {
+		return x.Key
+	}
+	return nil
+}
+
+// Value encodes a data tree node's value - along with the way in which
+// the value is encoded. This message is deprecated by gNMI 0.3.0.
+// Reference: gNMI Specification Section 2.2.3.
+//
+// Deprecated: Do not use.
+type Value struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Value []byte   `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`                   // Value of the variable being transmitted.
+	Type  Encoding `protobuf:"varint,2,opt,name=type,proto3,enum=gnmi.Encoding" json:"type,omitempty"` // Encoding used for the value field.
+}
+
+func (x *Value) Reset() {
+	*x = Value{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Value) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Value) ProtoMessage() {}
+
+func (x *Value) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Value.ProtoReflect.Descriptor instead.
+func (*Value) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Value) GetValue() []byte {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *Value) GetType() Encoding {
+	if x != nil {
+		return x.Type
+	}
+	return Encoding_JSON
+}
+
+// Error message previously utilised to return errors to the client. Deprecated
+// in favour of using the google.golang.org/genproto/googleapis/rpc/status
+// message in the RPC response.
+// Reference: gNMI Specification Section 2.5
+//
+// Deprecated: Do not use.
+type Error struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    uint32     `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      // Canonical gRPC error code.
+	Message string     `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` // Human readable error.
+	Data    *anypb.Any `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`       // Optional additional information.
+}
+
+func (x *Error) Reset() {
+	*x = Error{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Error) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Error) ProtoMessage() {}
+
+func (x *Error) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_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 Error.ProtoReflect.Descriptor instead.
+func (*Error) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *Error) GetCode() uint32 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *Error) GetMessage() string {
+	if x != nil {
+		return x.Message
+	}
+	return ""
+}
+
+func (x *Error) GetData() *anypb.Any {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Decimal64 is used to encode a fixed precision decimal number. The value
+// is expressed as a set of digits with the precision specifying the
+// number of digits following the decimal point in the digit set.
+type Decimal64 struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Digits    int64  `protobuf:"varint,1,opt,name=digits,proto3" json:"digits,omitempty"`       // Set of digits.
+	Precision uint32 `protobuf:"varint,2,opt,name=precision,proto3" json:"precision,omitempty"` // Number of digits following the decimal point.
+}
+
+func (x *Decimal64) Reset() {
+	*x = Decimal64{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Decimal64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Decimal64) ProtoMessage() {}
+
+func (x *Decimal64) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Decimal64.ProtoReflect.Descriptor instead.
+func (*Decimal64) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *Decimal64) GetDigits() int64 {
+	if x != nil {
+		return x.Digits
+	}
+	return 0
+}
+
+func (x *Decimal64) GetPrecision() uint32 {
+	if x != nil {
+		return x.Precision
+	}
+	return 0
+}
+
+// ScalarArray is used to encode a mixed-type array of values.
+type ScalarArray struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The set of elements within the array. Each TypedValue message should
+	// specify only elements that have a field identifier of 1-7 (i.e., the
+	// values are scalar values).
+	Element []*TypedValue `protobuf:"bytes,1,rep,name=element,proto3" json:"element,omitempty"`
+}
+
+func (x *ScalarArray) Reset() {
+	*x = ScalarArray{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ScalarArray) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ScalarArray) ProtoMessage() {}
+
+func (x *ScalarArray) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ScalarArray.ProtoReflect.Descriptor instead.
+func (*ScalarArray) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *ScalarArray) GetElement() []*TypedValue {
+	if x != nil {
+		return x.Element
+	}
+	return nil
+}
+
+// SubscribeRequest is the message sent by the client to the target when
+// initiating a subscription to a set of paths within the data tree. The
+// request field must be populated and the initial message must specify a
+// SubscriptionList to initiate a subscription. The message is subsequently
+// used to define aliases or trigger polled data to be sent by the target.
+// Reference: gNMI Specification Section 3.5.1.1
+type SubscribeRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Request:
+	//	*SubscribeRequest_Subscribe
+	//	*SubscribeRequest_Poll
+	//	*SubscribeRequest_Aliases
+	Request isSubscribeRequest_Request `protobuf_oneof:"request"`
+	// Extension messages associated with the SubscribeRequest. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,5,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *SubscribeRequest) Reset() {
+	*x = SubscribeRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubscribeRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscribeRequest) ProtoMessage() {}
+
+func (x *SubscribeRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead.
+func (*SubscribeRequest) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{9}
+}
+
+func (m *SubscribeRequest) GetRequest() isSubscribeRequest_Request {
+	if m != nil {
+		return m.Request
+	}
+	return nil
+}
+
+func (x *SubscribeRequest) GetSubscribe() *SubscriptionList {
+	if x, ok := x.GetRequest().(*SubscribeRequest_Subscribe); ok {
+		return x.Subscribe
+	}
+	return nil
+}
+
+func (x *SubscribeRequest) GetPoll() *Poll {
+	if x, ok := x.GetRequest().(*SubscribeRequest_Poll); ok {
+		return x.Poll
+	}
+	return nil
+}
+
+func (x *SubscribeRequest) GetAliases() *AliasList {
+	if x, ok := x.GetRequest().(*SubscribeRequest_Aliases); ok {
+		return x.Aliases
+	}
+	return nil
+}
+
+func (x *SubscribeRequest) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+type isSubscribeRequest_Request interface {
+	isSubscribeRequest_Request()
+}
+
+type SubscribeRequest_Subscribe struct {
+	Subscribe *SubscriptionList `protobuf:"bytes,1,opt,name=subscribe,proto3,oneof"` // Specify the paths within a subscription.
+}
+
+type SubscribeRequest_Poll struct {
+	Poll *Poll `protobuf:"bytes,3,opt,name=poll,proto3,oneof"` // Trigger a polled update.
+}
+
+type SubscribeRequest_Aliases struct {
+	Aliases *AliasList `protobuf:"bytes,4,opt,name=aliases,proto3,oneof"` // Aliases to be created.
+}
+
+func (*SubscribeRequest_Subscribe) isSubscribeRequest_Request() {}
+
+func (*SubscribeRequest_Poll) isSubscribeRequest_Request() {}
+
+func (*SubscribeRequest_Aliases) isSubscribeRequest_Request() {}
+
+// Poll is sent within a SubscribeRequest to trigger the device to
+// send telemetry updates for the paths that are associated with the
+// subscription.
+// Reference: gNMI Specification Section Section 3.5.1.4
+type Poll struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *Poll) Reset() {
+	*x = Poll{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Poll) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Poll) ProtoMessage() {}
+
+func (x *Poll) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Poll.ProtoReflect.Descriptor instead.
+func (*Poll) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{10}
+}
+
+// SubscribeResponse is the message used by the target within a Subscribe RPC.
+// The target includes a Notification message which is used to transmit values
+// of the path(s) that are associated with the subscription. The same message
+// is to indicate that the target has sent all data values once (is
+// synchronized).
+// Reference: gNMI Specification Section 3.5.1.4
+type SubscribeResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Response:
+	//	*SubscribeResponse_Update
+	//	*SubscribeResponse_SyncResponse
+	//	*SubscribeResponse_Error
+	Response isSubscribeResponse_Response `protobuf_oneof:"response"`
+	// Extension messages associated with the SubscribeResponse. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,5,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *SubscribeResponse) Reset() {
+	*x = SubscribeResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubscribeResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscribeResponse) ProtoMessage() {}
+
+func (x *SubscribeResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SubscribeResponse.ProtoReflect.Descriptor instead.
+func (*SubscribeResponse) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{11}
+}
+
+func (m *SubscribeResponse) GetResponse() isSubscribeResponse_Response {
+	if m != nil {
+		return m.Response
+	}
+	return nil
+}
+
+func (x *SubscribeResponse) GetUpdate() *Notification {
+	if x, ok := x.GetResponse().(*SubscribeResponse_Update); ok {
+		return x.Update
+	}
+	return nil
+}
+
+func (x *SubscribeResponse) GetSyncResponse() bool {
+	if x, ok := x.GetResponse().(*SubscribeResponse_SyncResponse); ok {
+		return x.SyncResponse
+	}
+	return false
+}
+
+// Deprecated: Do not use.
+func (x *SubscribeResponse) GetError() *Error {
+	if x, ok := x.GetResponse().(*SubscribeResponse_Error); ok {
+		return x.Error
+	}
+	return nil
+}
+
+func (x *SubscribeResponse) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+type isSubscribeResponse_Response interface {
+	isSubscribeResponse_Response()
+}
+
+type SubscribeResponse_Update struct {
+	Update *Notification `protobuf:"bytes,1,opt,name=update,proto3,oneof"` // Changed or sampled value for a path.
+}
+
+type SubscribeResponse_SyncResponse struct {
+	// Indicate target has sent all values associated with the subscription
+	// at least once.
+	SyncResponse bool `protobuf:"varint,3,opt,name=sync_response,json=syncResponse,proto3,oneof"`
+}
+
+type SubscribeResponse_Error struct {
+	// Deprecated in favour of google.golang.org/genproto/googleapis/rpc/status
+	//
+	// Deprecated: Do not use.
+	Error *Error `protobuf:"bytes,4,opt,name=error,proto3,oneof"`
+}
+
+func (*SubscribeResponse_Update) isSubscribeResponse_Response() {}
+
+func (*SubscribeResponse_SyncResponse) isSubscribeResponse_Response() {}
+
+func (*SubscribeResponse_Error) isSubscribeResponse_Response() {}
+
+// SubscriptionList is used within a Subscribe message to specify the list of
+// paths that the client wishes to subscribe to. The message consists of a
+// list of (possibly prefixed) paths, and options that relate to the
+// subscription.
+// Reference: gNMI Specification Section 3.5.1.2
+type SubscriptionList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Prefix       *Path           `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"`             // Prefix used for paths.
+	Subscription []*Subscription `protobuf:"bytes,2,rep,name=subscription,proto3" json:"subscription,omitempty"` // Set of subscriptions to create.
+	// Whether target defined aliases are allowed within the subscription.
+	UseAliases bool                  `protobuf:"varint,3,opt,name=use_aliases,json=useAliases,proto3" json:"use_aliases,omitempty"`
+	Qos        *QOSMarking           `protobuf:"bytes,4,opt,name=qos,proto3" json:"qos,omitempty"` // DSCP marking to be used.
+	Mode       SubscriptionList_Mode `protobuf:"varint,5,opt,name=mode,proto3,enum=gnmi.SubscriptionList_Mode" json:"mode,omitempty"`
+	// Whether elements of the schema that are marked as eligible for aggregation
+	// should be aggregated or not.
+	AllowAggregation bool `protobuf:"varint,6,opt,name=allow_aggregation,json=allowAggregation,proto3" json:"allow_aggregation,omitempty"`
+	// The set of schemas that define the elements of the data tree that should
+	// be sent by the target.
+	UseModels []*ModelData `protobuf:"bytes,7,rep,name=use_models,json=useModels,proto3" json:"use_models,omitempty"`
+	// The encoding that the target should use within the Notifications generated
+	// corresponding to the SubscriptionList.
+	Encoding Encoding `protobuf:"varint,8,opt,name=encoding,proto3,enum=gnmi.Encoding" json:"encoding,omitempty"`
+	// An optional field to specify that only updates to current state should be
+	// sent to a client. If set, the initial state is not sent to the client but
+	// rather only the sync message followed by any subsequent updates to the
+	// current state. For ONCE and POLL modes, this causes the server to send only
+	// the sync message (Sec. 3.5.2.3).
+	UpdatesOnly bool `protobuf:"varint,9,opt,name=updates_only,json=updatesOnly,proto3" json:"updates_only,omitempty"`
+}
+
+func (x *SubscriptionList) Reset() {
+	*x = SubscriptionList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubscriptionList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubscriptionList) ProtoMessage() {}
+
+func (x *SubscriptionList) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SubscriptionList.ProtoReflect.Descriptor instead.
+func (*SubscriptionList) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *SubscriptionList) GetPrefix() *Path {
+	if x != nil {
+		return x.Prefix
+	}
+	return nil
+}
+
+func (x *SubscriptionList) GetSubscription() []*Subscription {
+	if x != nil {
+		return x.Subscription
+	}
+	return nil
+}
+
+func (x *SubscriptionList) GetUseAliases() bool {
+	if x != nil {
+		return x.UseAliases
+	}
+	return false
+}
+
+func (x *SubscriptionList) GetQos() *QOSMarking {
+	if x != nil {
+		return x.Qos
+	}
+	return nil
+}
+
+func (x *SubscriptionList) GetMode() SubscriptionList_Mode {
+	if x != nil {
+		return x.Mode
+	}
+	return SubscriptionList_STREAM
+}
+
+func (x *SubscriptionList) GetAllowAggregation() bool {
+	if x != nil {
+		return x.AllowAggregation
+	}
+	return false
+}
+
+func (x *SubscriptionList) GetUseModels() []*ModelData {
+	if x != nil {
+		return x.UseModels
+	}
+	return nil
+}
+
+func (x *SubscriptionList) GetEncoding() Encoding {
+	if x != nil {
+		return x.Encoding
+	}
+	return Encoding_JSON
+}
+
+func (x *SubscriptionList) GetUpdatesOnly() bool {
+	if x != nil {
+		return x.UpdatesOnly
+	}
+	return false
+}
+
+// Subscription is a single request within a SubscriptionList. The path
+// specified is interpreted (along with the prefix) as the elements of the data
+// tree that the client is subscribing to. The mode determines how the target
+// should trigger updates to be sent.
+// Reference: gNMI Specification Section 3.5.1.3
+type Subscription struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Path           *Path            `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`                                            // The data tree path.
+	Mode           SubscriptionMode `protobuf:"varint,2,opt,name=mode,proto3,enum=gnmi.SubscriptionMode" json:"mode,omitempty"`                // Subscription mode to be used.
+	SampleInterval uint64           `protobuf:"varint,3,opt,name=sample_interval,json=sampleInterval,proto3" json:"sample_interval,omitempty"` // ns between samples in SAMPLE mode.
+	// Indicates whether values that have not changed should be sent in a SAMPLE
+	// subscription.
+	SuppressRedundant bool `protobuf:"varint,4,opt,name=suppress_redundant,json=suppressRedundant,proto3" json:"suppress_redundant,omitempty"`
+	// Specifies the maximum allowable silent period in nanoseconds when
+	// suppress_redundant is in use. The target should send a value at least once
+	// in the period specified.
+	HeartbeatInterval uint64 `protobuf:"varint,5,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"`
+}
+
+func (x *Subscription) Reset() {
+	*x = Subscription{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Subscription) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Subscription) ProtoMessage() {}
+
+func (x *Subscription) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Subscription.ProtoReflect.Descriptor instead.
+func (*Subscription) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *Subscription) GetPath() *Path {
+	if x != nil {
+		return x.Path
+	}
+	return nil
+}
+
+func (x *Subscription) GetMode() SubscriptionMode {
+	if x != nil {
+		return x.Mode
+	}
+	return SubscriptionMode_TARGET_DEFINED
+}
+
+func (x *Subscription) GetSampleInterval() uint64 {
+	if x != nil {
+		return x.SampleInterval
+	}
+	return 0
+}
+
+func (x *Subscription) GetSuppressRedundant() bool {
+	if x != nil {
+		return x.SuppressRedundant
+	}
+	return false
+}
+
+func (x *Subscription) GetHeartbeatInterval() uint64 {
+	if x != nil {
+		return x.HeartbeatInterval
+	}
+	return 0
+}
+
+// QOSMarking specifies the DSCP value to be set on transmitted telemetry
+// updates from the target.
+// Reference: gNMI Specification Section 3.5.1.2
+type QOSMarking struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Marking uint32 `protobuf:"varint,1,opt,name=marking,proto3" json:"marking,omitempty"`
+}
+
+func (x *QOSMarking) Reset() {
+	*x = QOSMarking{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *QOSMarking) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*QOSMarking) ProtoMessage() {}
+
+func (x *QOSMarking) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use QOSMarking.ProtoReflect.Descriptor instead.
+func (*QOSMarking) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *QOSMarking) GetMarking() uint32 {
+	if x != nil {
+		return x.Marking
+	}
+	return 0
+}
+
+// Alias specifies a data tree path, and an associated string which defines an
+// alias which is to be used for this path in the context of the RPC. The alias
+// is specified as a string which is prefixed with "#" to disambiguate it from
+// data tree element paths.
+// Reference: gNMI Specification Section 2.4.2
+type Alias struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Path  *Path  `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`   // The path to be aliased.
+	Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` // The alias value, a string prefixed by "#".
+}
+
+func (x *Alias) Reset() {
+	*x = Alias{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Alias) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Alias) ProtoMessage() {}
+
+func (x *Alias) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Alias.ProtoReflect.Descriptor instead.
+func (*Alias) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *Alias) GetPath() *Path {
+	if x != nil {
+		return x.Path
+	}
+	return nil
+}
+
+func (x *Alias) GetAlias() string {
+	if x != nil {
+		return x.Alias
+	}
+	return ""
+}
+
+// AliasList specifies a list of aliases. It is used in a SubscribeRequest for
+// a client to create a set of aliases that the target is to utilize.
+// Reference: gNMI Specification Section 3.5.1.6
+type AliasList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Alias []*Alias `protobuf:"bytes,1,rep,name=alias,proto3" json:"alias,omitempty"` // The set of aliases to be created.
+}
+
+func (x *AliasList) Reset() {
+	*x = AliasList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AliasList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AliasList) ProtoMessage() {}
+
+func (x *AliasList) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[16]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AliasList.ProtoReflect.Descriptor instead.
+func (*AliasList) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *AliasList) GetAlias() []*Alias {
+	if x != nil {
+		return x.Alias
+	}
+	return nil
+}
+
+// SetRequest is sent from a client to the target to update values in the data
+// tree. Paths are either deleted by the client, or modified by means of being
+// updated, or replaced. Where a replace is used, unspecified values are
+// considered to be replaced, whereas when update is used the changes are
+// considered to be incremental. The set of changes that are specified within
+// a single SetRequest are considered to be a transaction.
+// Reference: gNMI Specification Section 3.4.1
+type SetRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Prefix  *Path     `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"`   // Prefix used for paths in the message.
+	Delete  []*Path   `protobuf:"bytes,2,rep,name=delete,proto3" json:"delete,omitempty"`   // Paths to be deleted from the data tree.
+	Replace []*Update `protobuf:"bytes,3,rep,name=replace,proto3" json:"replace,omitempty"` // Updates specifying elements to be replaced.
+	Update  []*Update `protobuf:"bytes,4,rep,name=update,proto3" json:"update,omitempty"`   // Updates specifying elements to updated.
+	// Extension messages associated with the SetRequest. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,5,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *SetRequest) Reset() {
+	*x = SetRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetRequest) ProtoMessage() {}
+
+func (x *SetRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[17]
+	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 SetRequest.ProtoReflect.Descriptor instead.
+func (*SetRequest) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *SetRequest) GetPrefix() *Path {
+	if x != nil {
+		return x.Prefix
+	}
+	return nil
+}
+
+func (x *SetRequest) GetDelete() []*Path {
+	if x != nil {
+		return x.Delete
+	}
+	return nil
+}
+
+func (x *SetRequest) GetReplace() []*Update {
+	if x != nil {
+		return x.Replace
+	}
+	return nil
+}
+
+func (x *SetRequest) GetUpdate() []*Update {
+	if x != nil {
+		return x.Update
+	}
+	return nil
+}
+
+func (x *SetRequest) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+// SetResponse is the response to a SetRequest, sent from the target to the
+// client. It reports the result of the modifications to the data tree that were
+// specified by the client. Errors for this RPC should be reported using the
+// https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto
+// message in the RPC return. The gnmi.Error message can be used to add additional
+// details where required.
+// Reference: gNMI Specification Section 3.4.2
+type SetResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Prefix *Path `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` // Prefix used for paths.
+	// A set of responses specifying the result of the operations specified in
+	// the SetRequest.
+	Response []*UpdateResult `protobuf:"bytes,2,rep,name=response,proto3" json:"response,omitempty"`
+	// Deprecated: Do not use.
+	Message   *Error `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`      // The overall status of the transaction.
+	Timestamp int64  `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp of transaction (ns since epoch).
+	// Extension messages associated with the SetResponse. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,5,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *SetResponse) Reset() {
+	*x = SetResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SetResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetResponse) ProtoMessage() {}
+
+func (x *SetResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[18]
+	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 SetResponse.ProtoReflect.Descriptor instead.
+func (*SetResponse) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *SetResponse) GetPrefix() *Path {
+	if x != nil {
+		return x.Prefix
+	}
+	return nil
+}
+
+func (x *SetResponse) GetResponse() []*UpdateResult {
+	if x != nil {
+		return x.Response
+	}
+	return nil
+}
+
+// Deprecated: Do not use.
+func (x *SetResponse) GetMessage() *Error {
+	if x != nil {
+		return x.Message
+	}
+	return nil
+}
+
+func (x *SetResponse) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *SetResponse) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+// UpdateResult is used within the SetResponse message to communicate the
+// result of an operation specified within a SetRequest message.
+// Reference: gNMI Specification Section 3.4.2
+type UpdateResult struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Deprecated timestamp for the UpdateResult, this field has been
+	// replaced by the timestamp within the SetResponse message, since
+	// all mutations effected by a set should be applied as a single
+	// transaction.
+	//
+	// Deprecated: Do not use.
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	Path      *Path `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` // Path associated with the update.
+	// Deprecated: Do not use.
+	Message *Error                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`                         // Status of the update operation.
+	Op      UpdateResult_Operation `protobuf:"varint,4,opt,name=op,proto3,enum=gnmi.UpdateResult_Operation" json:"op,omitempty"` // Update operation type.
+}
+
+func (x *UpdateResult) Reset() {
+	*x = UpdateResult{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UpdateResult) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateResult) ProtoMessage() {}
+
+func (x *UpdateResult) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[19]
+	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 UpdateResult.ProtoReflect.Descriptor instead.
+func (*UpdateResult) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{19}
+}
+
+// Deprecated: Do not use.
+func (x *UpdateResult) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *UpdateResult) GetPath() *Path {
+	if x != nil {
+		return x.Path
+	}
+	return nil
+}
+
+// Deprecated: Do not use.
+func (x *UpdateResult) GetMessage() *Error {
+	if x != nil {
+		return x.Message
+	}
+	return nil
+}
+
+func (x *UpdateResult) GetOp() UpdateResult_Operation {
+	if x != nil {
+		return x.Op
+	}
+	return UpdateResult_INVALID
+}
+
+// GetRequest is sent when a client initiates a Get RPC. It is used to specify
+// the set of data elements for which the target should return a snapshot of
+// data. The use_models field specifies the set of schema modules that are to
+// be used by the target - where use_models is not specified then the target
+// must use all schema models that it has.
+// Reference: gNMI Specification Section 3.3.1
+type GetRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Prefix    *Path               `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"`                            // Prefix used for paths.
+	Path      []*Path             `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"`                                // Paths requested by the client.
+	Type      GetRequest_DataType `protobuf:"varint,3,opt,name=type,proto3,enum=gnmi.GetRequest_DataType" json:"type,omitempty"` // The type of data being requested.
+	Encoding  Encoding            `protobuf:"varint,5,opt,name=encoding,proto3,enum=gnmi.Encoding" json:"encoding,omitempty"`    // Encoding to be used.
+	UseModels []*ModelData        `protobuf:"bytes,6,rep,name=use_models,json=useModels,proto3" json:"use_models,omitempty"`     // The schema models to be used.
+	// Extension messages associated with the GetRequest. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,7,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *GetRequest) Reset() {
+	*x = GetRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRequest) ProtoMessage() {}
+
+func (x *GetRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[20]
+	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 GetRequest.ProtoReflect.Descriptor instead.
+func (*GetRequest) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *GetRequest) GetPrefix() *Path {
+	if x != nil {
+		return x.Prefix
+	}
+	return nil
+}
+
+func (x *GetRequest) GetPath() []*Path {
+	if x != nil {
+		return x.Path
+	}
+	return nil
+}
+
+func (x *GetRequest) GetType() GetRequest_DataType {
+	if x != nil {
+		return x.Type
+	}
+	return GetRequest_ALL
+}
+
+func (x *GetRequest) GetEncoding() Encoding {
+	if x != nil {
+		return x.Encoding
+	}
+	return Encoding_JSON
+}
+
+func (x *GetRequest) GetUseModels() []*ModelData {
+	if x != nil {
+		return x.UseModels
+	}
+	return nil
+}
+
+func (x *GetRequest) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+// GetResponse is used by the target to respond to a GetRequest from a client.
+// The set of Notifications corresponds to the data values that are requested
+// by the client in the GetRequest.
+// Reference: gNMI Specification Section 3.3.2
+type GetResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Notification []*Notification `protobuf:"bytes,1,rep,name=notification,proto3" json:"notification,omitempty"` // Data values.
+	// Deprecated: Do not use.
+	Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // Errors that occurred in the Get.
+	// Extension messages associated with the GetResponse. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,3,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *GetResponse) Reset() {
+	*x = GetResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetResponse) ProtoMessage() {}
+
+func (x *GetResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[21]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetResponse.ProtoReflect.Descriptor instead.
+func (*GetResponse) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *GetResponse) GetNotification() []*Notification {
+	if x != nil {
+		return x.Notification
+	}
+	return nil
+}
+
+// Deprecated: Do not use.
+func (x *GetResponse) GetError() *Error {
+	if x != nil {
+		return x.Error
+	}
+	return nil
+}
+
+func (x *GetResponse) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+// CapabilityRequest is sent by the client in the Capabilities RPC to request
+// that the target reports its capabilities.
+// Reference: gNMI Specification Section 3.2.1
+type CapabilityRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Extension messages associated with the CapabilityRequest. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,1,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *CapabilityRequest) Reset() {
+	*x = CapabilityRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *CapabilityRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CapabilityRequest) ProtoMessage() {}
+
+func (x *CapabilityRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[22]
+	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 CapabilityRequest.ProtoReflect.Descriptor instead.
+func (*CapabilityRequest) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *CapabilityRequest) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+// CapabilityResponse is used by the target to report its capabilities to the
+// client within the Capabilities RPC.
+// Reference: gNMI Specification Section 3.2.2
+type CapabilityResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	SupportedModels    []*ModelData `protobuf:"bytes,1,rep,name=supported_models,json=supportedModels,proto3" json:"supported_models,omitempty"`                                     // Supported schema models.
+	SupportedEncodings []Encoding   `protobuf:"varint,2,rep,packed,name=supported_encodings,json=supportedEncodings,proto3,enum=gnmi.Encoding" json:"supported_encodings,omitempty"` // Supported encodings.
+	GNMIVersion        string       `protobuf:"bytes,3,opt,name=gNMI_version,json=gNMIVersion,proto3" json:"gNMI_version,omitempty"`                                                 // Supported gNMI version.
+	// Extension messages associated with the CapabilityResponse. See the
+	// gNMI extension specification for further definition.
+	Extension []*gnmi_ext.Extension `protobuf:"bytes,4,rep,name=extension,proto3" json:"extension,omitempty"`
+}
+
+func (x *CapabilityResponse) Reset() {
+	*x = CapabilityResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *CapabilityResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CapabilityResponse) ProtoMessage() {}
+
+func (x *CapabilityResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[23]
+	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 CapabilityResponse.ProtoReflect.Descriptor instead.
+func (*CapabilityResponse) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *CapabilityResponse) GetSupportedModels() []*ModelData {
+	if x != nil {
+		return x.SupportedModels
+	}
+	return nil
+}
+
+func (x *CapabilityResponse) GetSupportedEncodings() []Encoding {
+	if x != nil {
+		return x.SupportedEncodings
+	}
+	return nil
+}
+
+func (x *CapabilityResponse) GetGNMIVersion() string {
+	if x != nil {
+		return x.GNMIVersion
+	}
+	return ""
+}
+
+func (x *CapabilityResponse) GetExtension() []*gnmi_ext.Extension {
+	if x != nil {
+		return x.Extension
+	}
+	return nil
+}
+
+// ModelData is used to describe a set of schema modules. It can be used in a
+// CapabilityResponse where a target reports the set of modules that it
+// supports, and within the SubscribeRequest and GetRequest messages to specify
+// the set of models from which data tree elements should be reported.
+// Reference: gNMI Specification Section 3.2.3
+type ModelData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name         string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`                 // Name of the model.
+	Organization string `protobuf:"bytes,2,opt,name=organization,proto3" json:"organization,omitempty"` // Organization publishing the model.
+	Version      string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`           // Semantic version of the model.
+}
+
+func (x *ModelData) Reset() {
+	*x = ModelData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ModelData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ModelData) ProtoMessage() {}
+
+func (x *ModelData) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[24]
+	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 ModelData.ProtoReflect.Descriptor instead.
+func (*ModelData) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *ModelData) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *ModelData) GetOrganization() string {
+	if x != nil {
+		return x.Organization
+	}
+	return ""
+}
+
+func (x *ModelData) GetVersion() string {
+	if x != nil {
+		return x.Version
+	}
+	return ""
+}
+
+var file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*descriptorpb.FileOptions)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         1001,
+		Name:          "gnmi.gnmi_service",
+		Tag:           "bytes,1001,opt,name=gnmi_service",
+		Filename:      "github.com/openconfig/gnmi/proto/gnmi/gnmi.proto",
+	},
+}
+
+// Extension fields to descriptorpb.FileOptions.
+var (
+	// The gNMI service semantic version.
+	//
+	// optional string gnmi_service = 1001;
+	E_GnmiService = &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_extTypes[0]
+)
+
+var File_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto protoreflect.FileDescriptor
+
+var file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDesc = []byte{
+	0x0a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x04, 0x67, 0x6e, 0x6d, 0x69, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+	0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d,
+	0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74,
+	0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+	0xc8, 0x01, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x22,
+	0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66,
+	0x69, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e,
+	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x22,
+	0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x08, 0x52, 0x06, 0x61, 0x74, 0x6f, 0x6d, 0x69, 0x63, 0x22, 0x93, 0x01, 0x0a, 0x06, 0x55,
+	0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52,
+	0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x03,
+	0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x76, 0x61, 0x6c,
+	0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x04,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73,
+	0x22, 0xeb, 0x03, 0x0a, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
+	0x1f, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
+	0x12, 0x19, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x03, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x75,
+	0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52,
+	0x07, 0x75, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6c,
+	0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f,
+	0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x76,
+	0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61,
+	0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x08, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+	0x56, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x76,
+	0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e,
+	0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x36, 0x34, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x65, 0x63,
+	0x69, 0x6d, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x0c, 0x6c, 0x65, 0x61, 0x66, 0x6c,
+	0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79,
+	0x48, 0x00, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x12,
+	0x2f, 0x0a, 0x07, 0x61, 0x6e, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x06, 0x61, 0x6e, 0x79, 0x56, 0x61, 0x6c,
+	0x12, 0x1b, 0x0a, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01,
+	0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x6a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x12, 0x24, 0x0a,
+	0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x69, 0x65, 0x74, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x0b,
+	0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x49, 0x65, 0x74, 0x66,
+	0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x09, 0x61, 0x73, 0x63, 0x69, 0x69, 0x5f, 0x76, 0x61, 0x6c,
+	0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x61, 0x73, 0x63, 0x69, 0x69, 0x56,
+	0x61, 0x6c, 0x12, 0x21, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x42, 0x79, 0x74, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x78,
+	0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
+	0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x65, 0x6c, 0x65,
+	0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x04,
+	0x65, 0x6c, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x04, 0x65, 0x6c, 0x65, 0x6d,
+	0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x08, 0x50, 0x61, 0x74,
+	0x68, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61,
+	0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x2e, 0x4b, 0x65, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x1a, 0x36, 0x0a, 0x08, 0x4b, 0x65, 0x79, 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, 0x22, 0x45, 0x0a, 0x05,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x74,
+	0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x3a,
+	0x02, 0x18, 0x01, 0x22, 0x63, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04,
+	0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
+	0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x41, 0x0a, 0x09, 0x44, 0x65, 0x63, 0x69,
+	0x6d, 0x61, 0x6c, 0x36, 0x34, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, 0x12, 0x1c, 0x0a,
+	0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
+	0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x0b, 0x53,
+	0x63, 0x61, 0x6c, 0x61, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x07, 0x65, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6e,
+	0x6d, 0x69, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65,
+	0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x73,
+	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x70, 0x6f, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x48, 0x00, 0x52,
+	0x04, 0x70, 0x6f, 0x6c, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x41, 0x6c,
+	0x69, 0x61, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73,
+	0x65, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74,
+	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x22, 0x06, 0x0a, 0x04, 0x50, 0x6f, 0x6c, 0x6c, 0x22, 0xd0, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62,
+	0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c,
+	0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x0d,
+	0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42,
+	0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x09,
+	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42,
+	0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x03, 0x0a, 0x10,
+	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74,
+	0x12, 0x22, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x70, 0x72,
+	0x65, 0x66, 0x69, 0x78, 0x12, 0x36, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c,
+	0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b,
+	0x75, 0x73, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x22, 0x0a,
+	0x03, 0x71, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x2e, 0x51, 0x4f, 0x53, 0x4d, 0x61, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x71, 0x6f,
+	0x73, 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x1b, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f,
+	0x64, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x67, 0x67, 0x72,
+	0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61,
+	0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x2e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
+	0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12,
+	0x2a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x0e, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
+	0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x75,
+	0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x26,
+	0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d,
+	0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
+	0x50, 0x4f, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0xe1, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74,
+	0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x2a, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x75, 0x62,
+	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d,
+	0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x61,
+	0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2d, 0x0a, 0x12,
+	0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x75, 0x6e, 0x64, 0x61,
+	0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65,
+	0x73, 0x73, 0x52, 0x65, 0x64, 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x68,
+	0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
+	0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65,
+	0x61, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x26, 0x0a, 0x0a, 0x51, 0x4f,
+	0x53, 0x4d, 0x61, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b,
+	0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x69,
+	0x6e, 0x67, 0x22, 0x3d, 0x0a, 0x05, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x70,
+	0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x61,
+	0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61,
+	0x73, 0x22, 0x2e, 0x0a, 0x09, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21,
+	0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61,
+	0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x22, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x70, 0x72,
+	0x65, 0x66, 0x69, 0x78, 0x12, 0x22, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68,
+	0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c,
+	0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
+	0x12, 0x24, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x0c, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06,
+	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x5f, 0x65, 0x78, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09,
+	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xdd, 0x01, 0x0a, 0x0b, 0x53, 0x65,
+	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x70, 0x72, 0x65,
+	0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x2e, 0x0a,
+	0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73,
+	0x75, 0x6c, 0x74, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a,
+	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52,
+	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x5f, 0x65, 0x78, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09,
+	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe8, 0x01, 0x0a, 0x0c, 0x55, 0x70,
+	0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18,
+	0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x04,
+	0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x07,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+	0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x3d, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12,
+	0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52,
+	0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41,
+	0x54, 0x45, 0x10, 0x03, 0x22, 0xcb, 0x02, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52,
+	0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74,
+	0x68, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x47, 0x65, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65,
+	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69,
+	0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e,
+	0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69,
+	0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73,
+	0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4d, 0x6f,
+	0x64, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65,
+	0x6c, 0x73, 0x12, 0x31, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74,
+	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f,
+	0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10,
+	0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c,
+	0x10, 0x03, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x36, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e,
+	0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6e, 0x6f,
+	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x05, 0x65, 0x72,
+	0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
+	0x72, 0x12, 0x31, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x11, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69,
+	0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x65, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67,
+	0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe7, 0x01, 0x0a,
+	0x12, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64,
+	0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f,
+	0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12,
+	0x3f, 0x0a, 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x63,
+	0x6f, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x67,
+	0x6e, 0x6d, 0x69, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x73, 0x75,
+	0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x73,
+	0x12, 0x21, 0x0a, 0x0c, 0x67, 0x4e, 0x4d, 0x49, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x4e, 0x4d, 0x49, 0x56, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78,
+	0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x65, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x44,
+	0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e,
+	0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f,
+	0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x44, 0x0a, 0x08, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
+	0x67, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42,
+	0x59, 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x10,
+	0x02, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x53, 0x43, 0x49, 0x49, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09,
+	0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x45, 0x54, 0x46, 0x10, 0x04, 0x2a, 0x41, 0x0a, 0x10, 0x53,
+	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12,
+	0x12, 0x0a, 0x0e, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45,
+	0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45,
+	0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x02, 0x32, 0xe3,
+	0x01, 0x0a, 0x04, 0x67, 0x4e, 0x4d, 0x49, 0x12, 0x41, 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x61, 0x62,
+	0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x17, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x43,
+	0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x18, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69,
+	0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x47, 0x65,
+	0x74, 0x12, 0x10, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x10, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12,
+	0x16, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53,
+	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x28, 0x01, 0x30, 0x01, 0x3a, 0x40, 0x0a, 0x0c, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x6e, 0x6d, 0x69, 0x53,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x53, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x69,
+	0x74, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42,
+	0x09, 0x47, 0x6e, 0x6d, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x67, 0x69,
+	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
+	0x6e, 0x6d, 0x69, 0xca, 0x3e, 0x05, 0x30, 0x2e, 0x37, 0x2e, 0x30, 0x62, 0x06, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x33,
+}
+
+var (
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescOnce sync.Once
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescData = file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDesc
+)
+
+func file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescGZIP() []byte {
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescOnce.Do(func() {
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescData)
+	})
+	return file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDescData
+}
+
+var file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_goTypes = []interface{}{
+	(Encoding)(0),                    // 0: gnmi.Encoding
+	(SubscriptionMode)(0),            // 1: gnmi.SubscriptionMode
+	(SubscriptionList_Mode)(0),       // 2: gnmi.SubscriptionList.Mode
+	(UpdateResult_Operation)(0),      // 3: gnmi.UpdateResult.Operation
+	(GetRequest_DataType)(0),         // 4: gnmi.GetRequest.DataType
+	(*Notification)(nil),             // 5: gnmi.Notification
+	(*Update)(nil),                   // 6: gnmi.Update
+	(*TypedValue)(nil),               // 7: gnmi.TypedValue
+	(*Path)(nil),                     // 8: gnmi.Path
+	(*PathElem)(nil),                 // 9: gnmi.PathElem
+	(*Value)(nil),                    // 10: gnmi.Value
+	(*Error)(nil),                    // 11: gnmi.Error
+	(*Decimal64)(nil),                // 12: gnmi.Decimal64
+	(*ScalarArray)(nil),              // 13: gnmi.ScalarArray
+	(*SubscribeRequest)(nil),         // 14: gnmi.SubscribeRequest
+	(*Poll)(nil),                     // 15: gnmi.Poll
+	(*SubscribeResponse)(nil),        // 16: gnmi.SubscribeResponse
+	(*SubscriptionList)(nil),         // 17: gnmi.SubscriptionList
+	(*Subscription)(nil),             // 18: gnmi.Subscription
+	(*QOSMarking)(nil),               // 19: gnmi.QOSMarking
+	(*Alias)(nil),                    // 20: gnmi.Alias
+	(*AliasList)(nil),                // 21: gnmi.AliasList
+	(*SetRequest)(nil),               // 22: gnmi.SetRequest
+	(*SetResponse)(nil),              // 23: gnmi.SetResponse
+	(*UpdateResult)(nil),             // 24: gnmi.UpdateResult
+	(*GetRequest)(nil),               // 25: gnmi.GetRequest
+	(*GetResponse)(nil),              // 26: gnmi.GetResponse
+	(*CapabilityRequest)(nil),        // 27: gnmi.CapabilityRequest
+	(*CapabilityResponse)(nil),       // 28: gnmi.CapabilityResponse
+	(*ModelData)(nil),                // 29: gnmi.ModelData
+	nil,                              // 30: gnmi.PathElem.KeyEntry
+	(*anypb.Any)(nil),                // 31: google.protobuf.Any
+	(*gnmi_ext.Extension)(nil),       // 32: gnmi_ext.Extension
+	(*descriptorpb.FileOptions)(nil), // 33: google.protobuf.FileOptions
+}
+var file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_depIdxs = []int32{
+	8,  // 0: gnmi.Notification.prefix:type_name -> gnmi.Path
+	6,  // 1: gnmi.Notification.update:type_name -> gnmi.Update
+	8,  // 2: gnmi.Notification.delete:type_name -> gnmi.Path
+	8,  // 3: gnmi.Update.path:type_name -> gnmi.Path
+	10, // 4: gnmi.Update.value:type_name -> gnmi.Value
+	7,  // 5: gnmi.Update.val:type_name -> gnmi.TypedValue
+	12, // 6: gnmi.TypedValue.decimal_val:type_name -> gnmi.Decimal64
+	13, // 7: gnmi.TypedValue.leaflist_val:type_name -> gnmi.ScalarArray
+	31, // 8: gnmi.TypedValue.any_val:type_name -> google.protobuf.Any
+	9,  // 9: gnmi.Path.elem:type_name -> gnmi.PathElem
+	30, // 10: gnmi.PathElem.key:type_name -> gnmi.PathElem.KeyEntry
+	0,  // 11: gnmi.Value.type:type_name -> gnmi.Encoding
+	31, // 12: gnmi.Error.data:type_name -> google.protobuf.Any
+	7,  // 13: gnmi.ScalarArray.element:type_name -> gnmi.TypedValue
+	17, // 14: gnmi.SubscribeRequest.subscribe:type_name -> gnmi.SubscriptionList
+	15, // 15: gnmi.SubscribeRequest.poll:type_name -> gnmi.Poll
+	21, // 16: gnmi.SubscribeRequest.aliases:type_name -> gnmi.AliasList
+	32, // 17: gnmi.SubscribeRequest.extension:type_name -> gnmi_ext.Extension
+	5,  // 18: gnmi.SubscribeResponse.update:type_name -> gnmi.Notification
+	11, // 19: gnmi.SubscribeResponse.error:type_name -> gnmi.Error
+	32, // 20: gnmi.SubscribeResponse.extension:type_name -> gnmi_ext.Extension
+	8,  // 21: gnmi.SubscriptionList.prefix:type_name -> gnmi.Path
+	18, // 22: gnmi.SubscriptionList.subscription:type_name -> gnmi.Subscription
+	19, // 23: gnmi.SubscriptionList.qos:type_name -> gnmi.QOSMarking
+	2,  // 24: gnmi.SubscriptionList.mode:type_name -> gnmi.SubscriptionList.Mode
+	29, // 25: gnmi.SubscriptionList.use_models:type_name -> gnmi.ModelData
+	0,  // 26: gnmi.SubscriptionList.encoding:type_name -> gnmi.Encoding
+	8,  // 27: gnmi.Subscription.path:type_name -> gnmi.Path
+	1,  // 28: gnmi.Subscription.mode:type_name -> gnmi.SubscriptionMode
+	8,  // 29: gnmi.Alias.path:type_name -> gnmi.Path
+	20, // 30: gnmi.AliasList.alias:type_name -> gnmi.Alias
+	8,  // 31: gnmi.SetRequest.prefix:type_name -> gnmi.Path
+	8,  // 32: gnmi.SetRequest.delete:type_name -> gnmi.Path
+	6,  // 33: gnmi.SetRequest.replace:type_name -> gnmi.Update
+	6,  // 34: gnmi.SetRequest.update:type_name -> gnmi.Update
+	32, // 35: gnmi.SetRequest.extension:type_name -> gnmi_ext.Extension
+	8,  // 36: gnmi.SetResponse.prefix:type_name -> gnmi.Path
+	24, // 37: gnmi.SetResponse.response:type_name -> gnmi.UpdateResult
+	11, // 38: gnmi.SetResponse.message:type_name -> gnmi.Error
+	32, // 39: gnmi.SetResponse.extension:type_name -> gnmi_ext.Extension
+	8,  // 40: gnmi.UpdateResult.path:type_name -> gnmi.Path
+	11, // 41: gnmi.UpdateResult.message:type_name -> gnmi.Error
+	3,  // 42: gnmi.UpdateResult.op:type_name -> gnmi.UpdateResult.Operation
+	8,  // 43: gnmi.GetRequest.prefix:type_name -> gnmi.Path
+	8,  // 44: gnmi.GetRequest.path:type_name -> gnmi.Path
+	4,  // 45: gnmi.GetRequest.type:type_name -> gnmi.GetRequest.DataType
+	0,  // 46: gnmi.GetRequest.encoding:type_name -> gnmi.Encoding
+	29, // 47: gnmi.GetRequest.use_models:type_name -> gnmi.ModelData
+	32, // 48: gnmi.GetRequest.extension:type_name -> gnmi_ext.Extension
+	5,  // 49: gnmi.GetResponse.notification:type_name -> gnmi.Notification
+	11, // 50: gnmi.GetResponse.error:type_name -> gnmi.Error
+	32, // 51: gnmi.GetResponse.extension:type_name -> gnmi_ext.Extension
+	32, // 52: gnmi.CapabilityRequest.extension:type_name -> gnmi_ext.Extension
+	29, // 53: gnmi.CapabilityResponse.supported_models:type_name -> gnmi.ModelData
+	0,  // 54: gnmi.CapabilityResponse.supported_encodings:type_name -> gnmi.Encoding
+	32, // 55: gnmi.CapabilityResponse.extension:type_name -> gnmi_ext.Extension
+	33, // 56: gnmi.gnmi_service:extendee -> google.protobuf.FileOptions
+	27, // 57: gnmi.gNMI.Capabilities:input_type -> gnmi.CapabilityRequest
+	25, // 58: gnmi.gNMI.Get:input_type -> gnmi.GetRequest
+	22, // 59: gnmi.gNMI.Set:input_type -> gnmi.SetRequest
+	14, // 60: gnmi.gNMI.Subscribe:input_type -> gnmi.SubscribeRequest
+	28, // 61: gnmi.gNMI.Capabilities:output_type -> gnmi.CapabilityResponse
+	26, // 62: gnmi.gNMI.Get:output_type -> gnmi.GetResponse
+	23, // 63: gnmi.gNMI.Set:output_type -> gnmi.SetResponse
+	16, // 64: gnmi.gNMI.Subscribe:output_type -> gnmi.SubscribeResponse
+	61, // [61:65] is the sub-list for method output_type
+	57, // [57:61] is the sub-list for method input_type
+	57, // [57:57] is the sub-list for extension type_name
+	56, // [56:57] is the sub-list for extension extendee
+	0,  // [0:56] is the sub-list for field type_name
+}
+
+func init() { file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_init() }
+func file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_init() {
+	if File_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Notification); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Update); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TypedValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Path); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PathElem); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Value); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Error); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Decimal64); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ScalarArray); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SubscribeRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Poll); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SubscribeResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SubscriptionList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Subscription); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*QOSMarking); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Alias); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AliasList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SetResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UpdateResult); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[20].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_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CapabilityRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CapabilityResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ModelData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2].OneofWrappers = []interface{}{
+		(*TypedValue_StringVal)(nil),
+		(*TypedValue_IntVal)(nil),
+		(*TypedValue_UintVal)(nil),
+		(*TypedValue_BoolVal)(nil),
+		(*TypedValue_BytesVal)(nil),
+		(*TypedValue_FloatVal)(nil),
+		(*TypedValue_DecimalVal)(nil),
+		(*TypedValue_LeaflistVal)(nil),
+		(*TypedValue_AnyVal)(nil),
+		(*TypedValue_JsonVal)(nil),
+		(*TypedValue_JsonIetfVal)(nil),
+		(*TypedValue_AsciiVal)(nil),
+		(*TypedValue_ProtoBytes)(nil),
+	}
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9].OneofWrappers = []interface{}{
+		(*SubscribeRequest_Subscribe)(nil),
+		(*SubscribeRequest_Poll)(nil),
+		(*SubscribeRequest_Aliases)(nil),
+	}
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11].OneofWrappers = []interface{}{
+		(*SubscribeResponse_Update)(nil),
+		(*SubscribeResponse_SyncResponse)(nil),
+		(*SubscribeResponse_Error)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDesc,
+			NumEnums:      5,
+			NumMessages:   26,
+			NumExtensions: 1,
+			NumServices:   1,
+		},
+		GoTypes:           file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_goTypes,
+		DependencyIndexes: file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_depIdxs,
+		EnumInfos:         file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_enumTypes,
+		MessageInfos:      file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes,
+		ExtensionInfos:    file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_extTypes,
+	}.Build()
+	File_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto = out.File
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_rawDesc = nil
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_goTypes = nil
+	file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_depIdxs = nil
+}
diff --git a/go/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc.pb.go b/go/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..6a4291045068b6afb642fee0720554cbba22f37a
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/proto/gnmi/gnmi_grpc.pb.go
@@ -0,0 +1,282 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+
+package gnmi
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// GNMIClient is the client API for GNMI service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type GNMIClient interface {
+	// Capabilities allows the client to retrieve the set of capabilities that
+	// is supported by the target. This allows the target to validate the
+	// service version that is implemented and retrieve the set of models that
+	// the target supports. The models can then be specified in subsequent RPCs
+	// to restrict the set of data that is utilized.
+	// Reference: gNMI Specification Section 3.2
+	Capabilities(ctx context.Context, in *CapabilityRequest, opts ...grpc.CallOption) (*CapabilityResponse, error)
+	// Retrieve a snapshot of data from the target. A Get RPC requests that the
+	// target snapshots a subset of the data tree as specified by the paths
+	// included in the message and serializes this to be returned to the
+	// client using the specified encoding.
+	// Reference: gNMI Specification Section 3.3
+	Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error)
+	// Set allows the client to modify the state of data on the target. The
+	// paths to modified along with the new values that the client wishes
+	// to set the value to.
+	// Reference: gNMI Specification Section 3.4
+	Set(ctx context.Context, in *SetRequest, opts ...grpc.CallOption) (*SetResponse, error)
+	// Subscribe allows a client to request the target to send it values
+	// of particular paths within the data tree. These values may be streamed
+	// at a particular cadence (STREAM), sent one off on a long-lived channel
+	// (POLL), or sent as a one-off retrieval (ONCE).
+	// Reference: gNMI Specification Section 3.5
+	Subscribe(ctx context.Context, opts ...grpc.CallOption) (GNMI_SubscribeClient, error)
+}
+
+type gNMIClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewGNMIClient(cc grpc.ClientConnInterface) GNMIClient {
+	return &gNMIClient{cc}
+}
+
+func (c *gNMIClient) Capabilities(ctx context.Context, in *CapabilityRequest, opts ...grpc.CallOption) (*CapabilityResponse, error) {
+	out := new(CapabilityResponse)
+	err := c.cc.Invoke(ctx, "/gnmi.gNMI/Capabilities", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *gNMIClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error) {
+	out := new(GetResponse)
+	err := c.cc.Invoke(ctx, "/gnmi.gNMI/Get", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *gNMIClient) Set(ctx context.Context, in *SetRequest, opts ...grpc.CallOption) (*SetResponse, error) {
+	out := new(SetResponse)
+	err := c.cc.Invoke(ctx, "/gnmi.gNMI/Set", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *gNMIClient) Subscribe(ctx context.Context, opts ...grpc.CallOption) (GNMI_SubscribeClient, error) {
+	stream, err := c.cc.NewStream(ctx, &GNMI_ServiceDesc.Streams[0], "/gnmi.gNMI/Subscribe", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &gNMISubscribeClient{stream}
+	return x, nil
+}
+
+type GNMI_SubscribeClient interface {
+	Send(*SubscribeRequest) error
+	Recv() (*SubscribeResponse, error)
+	grpc.ClientStream
+}
+
+type gNMISubscribeClient struct {
+	grpc.ClientStream
+}
+
+func (x *gNMISubscribeClient) Send(m *SubscribeRequest) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *gNMISubscribeClient) Recv() (*SubscribeResponse, error) {
+	m := new(SubscribeResponse)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// GNMIServer is the server API for GNMI service.
+// All implementations must embed UnimplementedGNMIServer
+// for forward compatibility
+type GNMIServer interface {
+	// Capabilities allows the client to retrieve the set of capabilities that
+	// is supported by the target. This allows the target to validate the
+	// service version that is implemented and retrieve the set of models that
+	// the target supports. The models can then be specified in subsequent RPCs
+	// to restrict the set of data that is utilized.
+	// Reference: gNMI Specification Section 3.2
+	Capabilities(context.Context, *CapabilityRequest) (*CapabilityResponse, error)
+	// Retrieve a snapshot of data from the target. A Get RPC requests that the
+	// target snapshots a subset of the data tree as specified by the paths
+	// included in the message and serializes this to be returned to the
+	// client using the specified encoding.
+	// Reference: gNMI Specification Section 3.3
+	Get(context.Context, *GetRequest) (*GetResponse, error)
+	// Set allows the client to modify the state of data on the target. The
+	// paths to modified along with the new values that the client wishes
+	// to set the value to.
+	// Reference: gNMI Specification Section 3.4
+	Set(context.Context, *SetRequest) (*SetResponse, error)
+	// Subscribe allows a client to request the target to send it values
+	// of particular paths within the data tree. These values may be streamed
+	// at a particular cadence (STREAM), sent one off on a long-lived channel
+	// (POLL), or sent as a one-off retrieval (ONCE).
+	// Reference: gNMI Specification Section 3.5
+	Subscribe(GNMI_SubscribeServer) error
+	mustEmbedUnimplementedGNMIServer()
+}
+
+// UnimplementedGNMIServer must be embedded to have forward compatible implementations.
+type UnimplementedGNMIServer struct {
+}
+
+func (UnimplementedGNMIServer) Capabilities(context.Context, *CapabilityRequest) (*CapabilityResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Capabilities not implemented")
+}
+func (UnimplementedGNMIServer) Get(context.Context, *GetRequest) (*GetResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Get not implemented")
+}
+func (UnimplementedGNMIServer) Set(context.Context, *SetRequest) (*SetResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Set not implemented")
+}
+func (UnimplementedGNMIServer) Subscribe(GNMI_SubscribeServer) error {
+	return status.Errorf(codes.Unimplemented, "method Subscribe not implemented")
+}
+func (UnimplementedGNMIServer) mustEmbedUnimplementedGNMIServer() {}
+
+// UnsafeGNMIServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to GNMIServer will
+// result in compilation errors.
+type UnsafeGNMIServer interface {
+	mustEmbedUnimplementedGNMIServer()
+}
+
+func RegisterGNMIServer(s grpc.ServiceRegistrar, srv GNMIServer) {
+	s.RegisterService(&GNMI_ServiceDesc, srv)
+}
+
+func _GNMI_Capabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CapabilityRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(GNMIServer).Capabilities(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gnmi.gNMI/Capabilities",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(GNMIServer).Capabilities(ctx, req.(*CapabilityRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _GNMI_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(GNMIServer).Get(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gnmi.gNMI/Get",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(GNMIServer).Get(ctx, req.(*GetRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _GNMI_Set_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SetRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(GNMIServer).Set(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gnmi.gNMI/Set",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(GNMIServer).Set(ctx, req.(*SetRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _GNMI_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(GNMIServer).Subscribe(&gNMISubscribeServer{stream})
+}
+
+type GNMI_SubscribeServer interface {
+	Send(*SubscribeResponse) error
+	Recv() (*SubscribeRequest, error)
+	grpc.ServerStream
+}
+
+type gNMISubscribeServer struct {
+	grpc.ServerStream
+}
+
+func (x *gNMISubscribeServer) Send(m *SubscribeResponse) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *gNMISubscribeServer) Recv() (*SubscribeRequest, error) {
+	m := new(SubscribeRequest)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// GNMI_ServiceDesc is the grpc.ServiceDesc for GNMI service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var GNMI_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "gnmi.gNMI",
+	HandlerType: (*GNMIServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "Capabilities",
+			Handler:    _GNMI_Capabilities_Handler,
+		},
+		{
+			MethodName: "Get",
+			Handler:    _GNMI_Get_Handler,
+		},
+		{
+			MethodName: "Set",
+			Handler:    _GNMI_Set_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "Subscribe",
+			Handler:       _GNMI_Subscribe_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "github.com/openconfig/gnmi/proto/gnmi/gnmi.proto",
+}
diff --git a/go/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.pb.go b/go/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..e519c214752954f5af831b35208f6ae3fffcd209
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.pb.go
@@ -0,0 +1,763 @@
+//
+// Copyright 2018 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.27.1
+// 	protoc        (unknown)
+// source: github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.proto
+
+// Package gnmi_ext defines a set of extensions messages which can be optionally
+// included with the request and response messages of gNMI RPCs. A set of
+// well-known extensions are defined within this file, along with a registry for
+// extensions defined outside of this package.
+
+package gnmi_ext
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// RegisteredExtension is an enumeration acting as a registry for extensions
+// defined by external sources.
+type ExtensionID int32
+
+const (
+	ExtensionID_EID_UNSET ExtensionID = 0
+	// An experimental extension that may be used during prototyping of a new
+	// extension.
+	ExtensionID_EID_EXPERIMENTAL ExtensionID = 999
+)
+
+// Enum value maps for ExtensionID.
+var (
+	ExtensionID_name = map[int32]string{
+		0:   "EID_UNSET",
+		999: "EID_EXPERIMENTAL",
+	}
+	ExtensionID_value = map[string]int32{
+		"EID_UNSET":        0,
+		"EID_EXPERIMENTAL": 999,
+	}
+)
+
+func (x ExtensionID) Enum() *ExtensionID {
+	p := new(ExtensionID)
+	*p = x
+	return p
+}
+
+func (x ExtensionID) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ExtensionID) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_enumTypes[0].Descriptor()
+}
+
+func (ExtensionID) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_enumTypes[0]
+}
+
+func (x ExtensionID) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ExtensionID.Descriptor instead.
+func (ExtensionID) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{0}
+}
+
+// The Extension message contains a single gNMI extension.
+type Extension struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Ext:
+	//	*Extension_RegisteredExt
+	//	*Extension_MasterArbitration
+	//	*Extension_History
+	Ext isExtension_Ext `protobuf_oneof:"ext"`
+}
+
+func (x *Extension) Reset() {
+	*x = Extension{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Extension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Extension) ProtoMessage() {}
+
+func (x *Extension) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Extension.ProtoReflect.Descriptor instead.
+func (*Extension) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{0}
+}
+
+func (m *Extension) GetExt() isExtension_Ext {
+	if m != nil {
+		return m.Ext
+	}
+	return nil
+}
+
+func (x *Extension) GetRegisteredExt() *RegisteredExtension {
+	if x, ok := x.GetExt().(*Extension_RegisteredExt); ok {
+		return x.RegisteredExt
+	}
+	return nil
+}
+
+func (x *Extension) GetMasterArbitration() *MasterArbitration {
+	if x, ok := x.GetExt().(*Extension_MasterArbitration); ok {
+		return x.MasterArbitration
+	}
+	return nil
+}
+
+func (x *Extension) GetHistory() *History {
+	if x, ok := x.GetExt().(*Extension_History); ok {
+		return x.History
+	}
+	return nil
+}
+
+type isExtension_Ext interface {
+	isExtension_Ext()
+}
+
+type Extension_RegisteredExt struct {
+	RegisteredExt *RegisteredExtension `protobuf:"bytes,1,opt,name=registered_ext,json=registeredExt,proto3,oneof"` // A registered extension.
+}
+
+type Extension_MasterArbitration struct {
+	// Well known extensions.
+	MasterArbitration *MasterArbitration `protobuf:"bytes,2,opt,name=master_arbitration,json=masterArbitration,proto3,oneof"` // Master arbitration extension.
+}
+
+type Extension_History struct {
+	History *History `protobuf:"bytes,3,opt,name=history,proto3,oneof"` // History extension.
+}
+
+func (*Extension_RegisteredExt) isExtension_Ext() {}
+
+func (*Extension_MasterArbitration) isExtension_Ext() {}
+
+func (*Extension_History) isExtension_Ext() {}
+
+// The RegisteredExtension message defines an extension which is defined outside
+// of this file.
+type RegisteredExtension struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id  ExtensionID `protobuf:"varint,1,opt,name=id,proto3,enum=gnmi_ext.ExtensionID" json:"id,omitempty"` // The unique ID assigned to this extension.
+	Msg []byte      `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`                          // The binary-marshalled protobuf extension payload.
+}
+
+func (x *RegisteredExtension) Reset() {
+	*x = RegisteredExtension{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RegisteredExtension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RegisteredExtension) ProtoMessage() {}
+
+func (x *RegisteredExtension) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RegisteredExtension.ProtoReflect.Descriptor instead.
+func (*RegisteredExtension) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *RegisteredExtension) GetId() ExtensionID {
+	if x != nil {
+		return x.Id
+	}
+	return ExtensionID_EID_UNSET
+}
+
+func (x *RegisteredExtension) GetMsg() []byte {
+	if x != nil {
+		return x.Msg
+	}
+	return nil
+}
+
+// MasterArbitration is used to select the master among multiple gNMI clients
+// with the same Roles. The client with the largest election_id is honored as
+// the master.
+// The document about gNMI master arbitration can be found at
+// https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-master-arbitration.md
+type MasterArbitration struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Role       *Role    `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"`
+	ElectionId *Uint128 `protobuf:"bytes,2,opt,name=election_id,json=electionId,proto3" json:"election_id,omitempty"`
+}
+
+func (x *MasterArbitration) Reset() {
+	*x = MasterArbitration{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MasterArbitration) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MasterArbitration) ProtoMessage() {}
+
+func (x *MasterArbitration) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MasterArbitration.ProtoReflect.Descriptor instead.
+func (*MasterArbitration) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *MasterArbitration) GetRole() *Role {
+	if x != nil {
+		return x.Role
+	}
+	return nil
+}
+
+func (x *MasterArbitration) GetElectionId() *Uint128 {
+	if x != nil {
+		return x.ElectionId
+	}
+	return nil
+}
+
+// Representation of unsigned 128-bit integer.
+type Uint128 struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	High uint64 `protobuf:"varint,1,opt,name=high,proto3" json:"high,omitempty"`
+	Low  uint64 `protobuf:"varint,2,opt,name=low,proto3" json:"low,omitempty"`
+}
+
+func (x *Uint128) Reset() {
+	*x = Uint128{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Uint128) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Uint128) ProtoMessage() {}
+
+func (x *Uint128) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Uint128.ProtoReflect.Descriptor instead.
+func (*Uint128) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *Uint128) GetHigh() uint64 {
+	if x != nil {
+		return x.High
+	}
+	return 0
+}
+
+func (x *Uint128) GetLow() uint64 {
+	if x != nil {
+		return x.Low
+	}
+	return 0
+}
+
+// There can be one master for each role. The role is identified by its id.
+type Role struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *Role) Reset() {
+	*x = Role{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Role) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Role) ProtoMessage() {}
+
+func (x *Role) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Role.ProtoReflect.Descriptor instead.
+func (*Role) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Role) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+// The History extension allows clients to request historical data. Its
+// spec can be found at
+// https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-history.md
+type History struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Request:
+	//	*History_SnapshotTime
+	//	*History_Range
+	Request isHistory_Request `protobuf_oneof:"request"`
+}
+
+func (x *History) Reset() {
+	*x = History{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *History) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*History) ProtoMessage() {}
+
+func (x *History) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use History.ProtoReflect.Descriptor instead.
+func (*History) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{5}
+}
+
+func (m *History) GetRequest() isHistory_Request {
+	if m != nil {
+		return m.Request
+	}
+	return nil
+}
+
+func (x *History) GetSnapshotTime() int64 {
+	if x, ok := x.GetRequest().(*History_SnapshotTime); ok {
+		return x.SnapshotTime
+	}
+	return 0
+}
+
+func (x *History) GetRange() *TimeRange {
+	if x, ok := x.GetRequest().(*History_Range); ok {
+		return x.Range
+	}
+	return nil
+}
+
+type isHistory_Request interface {
+	isHistory_Request()
+}
+
+type History_SnapshotTime struct {
+	SnapshotTime int64 `protobuf:"varint,1,opt,name=snapshot_time,json=snapshotTime,proto3,oneof"` // Nanoseconds since the epoch
+}
+
+type History_Range struct {
+	Range *TimeRange `protobuf:"bytes,2,opt,name=range,proto3,oneof"`
+}
+
+func (*History_SnapshotTime) isHistory_Request() {}
+
+func (*History_Range) isHistory_Request() {}
+
+type TimeRange struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` // Nanoseconds since the epoch
+	End   int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`     // Nanoseconds since the epoch
+}
+
+func (x *TimeRange) Reset() {
+	*x = TimeRange{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *TimeRange) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TimeRange) ProtoMessage() {}
+
+func (x *TimeRange) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_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 TimeRange.ProtoReflect.Descriptor instead.
+func (*TimeRange) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *TimeRange) GetStart() int64 {
+	if x != nil {
+		return x.Start
+	}
+	return 0
+}
+
+func (x *TimeRange) GetEnd() int64 {
+	if x != nil {
+		return x.End
+	}
+	return 0
+}
+
+var File_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto protoreflect.FileDescriptor
+
+var file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDesc = []byte{
+	0x0a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2f, 0x67, 0x6e, 0x6d, 0x69,
+	0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x6e, 0x6d, 0x69,
+	0x5f, 0x65, 0x78, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
+	0x5f, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x67,
+	0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x12, 0x4c, 0x0a, 0x12, 0x6d, 0x61,
+	0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78,
+	0x74, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, 0x62,
+	0x69, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x07, 0x68, 0x69, 0x73, 0x74,
+	0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x5f, 0x65, 0x78, 0x74, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x07,
+	0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x05, 0x0a, 0x03, 0x65, 0x78, 0x74, 0x22, 0x4e,
+	0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x15, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
+	0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x6b,
+	0x0a, 0x11, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x41, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x52, 0x6f, 0x6c,
+	0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x65, 0x6c, 0x65, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67,
+	0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x52,
+	0x0a, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x07, 0x55,
+	0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f,
+	0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x22, 0x16, 0x0a, 0x04,
+	0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x02, 0x69, 0x64, 0x22, 0x68, 0x0a, 0x07, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
+	0x25, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68,
+	0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x65, 0x78, 0x74,
+	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61,
+	0x6e, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x33,
+	0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73,
+	0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
+	0x65, 0x6e, 0x64, 0x2a, 0x33, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x49, 0x44, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x49, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10,
+	0x00, 0x12, 0x15, 0x0a, 0x10, 0x45, 0x49, 0x44, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d,
+	0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0xe7, 0x07, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d,
+	0x69, 0x5f, 0x65, 0x78, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescOnce sync.Once
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescData = file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDesc
+)
+
+func file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescGZIP() []byte {
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescOnce.Do(func() {
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescData)
+	})
+	return file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDescData
+}
+
+var file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_goTypes = []interface{}{
+	(ExtensionID)(0),            // 0: gnmi_ext.ExtensionID
+	(*Extension)(nil),           // 1: gnmi_ext.Extension
+	(*RegisteredExtension)(nil), // 2: gnmi_ext.RegisteredExtension
+	(*MasterArbitration)(nil),   // 3: gnmi_ext.MasterArbitration
+	(*Uint128)(nil),             // 4: gnmi_ext.Uint128
+	(*Role)(nil),                // 5: gnmi_ext.Role
+	(*History)(nil),             // 6: gnmi_ext.History
+	(*TimeRange)(nil),           // 7: gnmi_ext.TimeRange
+}
+var file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_depIdxs = []int32{
+	2, // 0: gnmi_ext.Extension.registered_ext:type_name -> gnmi_ext.RegisteredExtension
+	3, // 1: gnmi_ext.Extension.master_arbitration:type_name -> gnmi_ext.MasterArbitration
+	6, // 2: gnmi_ext.Extension.history:type_name -> gnmi_ext.History
+	0, // 3: gnmi_ext.RegisteredExtension.id:type_name -> gnmi_ext.ExtensionID
+	5, // 4: gnmi_ext.MasterArbitration.role:type_name -> gnmi_ext.Role
+	4, // 5: gnmi_ext.MasterArbitration.election_id:type_name -> gnmi_ext.Uint128
+	7, // 6: gnmi_ext.History.range:type_name -> gnmi_ext.TimeRange
+	7, // [7:7] is the sub-list for method output_type
+	7, // [7:7] is the sub-list for method input_type
+	7, // [7:7] is the sub-list for extension type_name
+	7, // [7:7] is the sub-list for extension extendee
+	0, // [0:7] is the sub-list for field type_name
+}
+
+func init() { file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_init() }
+func file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_init() {
+	if File_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Extension); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RegisteredExtension); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MasterArbitration); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Uint128); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Role); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*History); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*TimeRange); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*Extension_RegisteredExt)(nil),
+		(*Extension_MasterArbitration)(nil),
+		(*Extension_History)(nil),
+	}
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5].OneofWrappers = []interface{}{
+		(*History_SnapshotTime)(nil),
+		(*History_Range)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   7,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_goTypes,
+		DependencyIndexes: file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_depIdxs,
+		EnumInfos:         file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_enumTypes,
+		MessageInfos:      file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes,
+	}.Build()
+	File_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto = out.File
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_rawDesc = nil
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_goTypes = nil
+	file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_depIdxs = nil
+}
diff --git a/go/github.com/openconfig/gnmi/proto/target/target.pb.go b/go/github.com/openconfig/gnmi/proto/target/target.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..b9684394ea2766e3959c4b4fbf0f1fb460b466c1
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/proto/target/target.pb.go
@@ -0,0 +1,431 @@
+//
+// Copyright 2018 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.27.1
+// 	protoc        (unknown)
+// source: github.com/openconfig/gnmi/proto/target/target.proto
+
+// Package target contains messages for defining a configuration of a caching
+// collector to connect to multiple gNMI targets.
+
+package target
+
+import (
+	gnmi "github.com/openconfig/gnmi/proto/gnmi"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// Configuration holds all information necessary for a caching gNMI collector
+// to establish subscriptions to a list of gNMI targets.
+type Configuration struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Request is a keyed list of all SubscriptionRequests that can be sent to
+	// to targets in the Configuration.
+	// The request must have at minimum a SubscriptionList with a prefix
+	// containing origin and one or more Subscriptions.  Only the STREAM mode is
+	// supported.
+	Request map[string]*gnmi.SubscribeRequest `protobuf:"bytes,1,rep,name=request,proto3" json:"request,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Target is the full list of targets connected to by a caching gNMI
+	// collector.  The key of the map is a unique name to identify a target and
+	// is set in the prefix.target of a SubscriptionRequest message when connecting
+	// to each respective target.
+	Target map[string]*Target `protobuf:"bytes,2,rep,name=target,proto3" json:"target,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// Identifier for the caching collector.
+	InstanceId string `protobuf:"bytes,3,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	// Revision for this Configuration. Systems that non-atomically write
+	// configuration should populate and require revision, leveraging canonical
+	// protobuf serialization of fields in order. Presence of this field makes no
+	// guarantee. Consumers should account for atomicity constraints of their
+	// environment and any custom encoding.
+	Revision int64 `protobuf:"varint,536870911,opt,name=revision,proto3" json:"revision,omitempty"`
+}
+
+func (x *Configuration) Reset() {
+	*x = Configuration{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Configuration) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Configuration) ProtoMessage() {}
+
+func (x *Configuration) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Configuration.ProtoReflect.Descriptor instead.
+func (*Configuration) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Configuration) GetRequest() map[string]*gnmi.SubscribeRequest {
+	if x != nil {
+		return x.Request
+	}
+	return nil
+}
+
+func (x *Configuration) GetTarget() map[string]*Target {
+	if x != nil {
+		return x.Target
+	}
+	return nil
+}
+
+func (x *Configuration) GetInstanceId() string {
+	if x != nil {
+		return x.InstanceId
+	}
+	return ""
+}
+
+func (x *Configuration) GetRevision() int64 {
+	if x != nil {
+		return x.Revision
+	}
+	return 0
+}
+
+// Target is the information necessary to establish a single gNMI Subscribe RPC
+// to be collected and cached.
+type Target struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// A list of address and port or name that resolves to an address and port.
+	Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"`
+	// Credentials to use in metadata for authorization of the RPC
+	Credentials *Credentials `protobuf:"bytes,2,opt,name=credentials,proto3" json:"credentials,omitempty"`
+	// The request to be sent to the target. The string supplied is looked up in
+	// the request map of the Configuration message.
+	Request string `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"`
+	// Additional target metadata.
+	Meta map[string]string `protobuf:"bytes,4,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *Target) Reset() {
+	*x = Target{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Target) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Target) ProtoMessage() {}
+
+func (x *Target) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Target.ProtoReflect.Descriptor instead.
+func (*Target) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Target) GetAddresses() []string {
+	if x != nil {
+		return x.Addresses
+	}
+	return nil
+}
+
+func (x *Target) GetCredentials() *Credentials {
+	if x != nil {
+		return x.Credentials
+	}
+	return nil
+}
+
+func (x *Target) GetRequest() string {
+	if x != nil {
+		return x.Request
+	}
+	return ""
+}
+
+func (x *Target) GetMeta() map[string]string {
+	if x != nil {
+		return x.Meta
+	}
+	return nil
+}
+
+// Credentials contains the fields necessary for authentication of the client to
+// the target.
+type Credentials struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+	Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
+	// Password lookup ID.
+	PasswordId string `protobuf:"bytes,3,opt,name=password_id,json=passwordId,proto3" json:"password_id,omitempty"`
+}
+
+func (x *Credentials) Reset() {
+	*x = Credentials{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Credentials) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Credentials) ProtoMessage() {}
+
+func (x *Credentials) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Credentials.ProtoReflect.Descriptor instead.
+func (*Credentials) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *Credentials) GetUsername() string {
+	if x != nil {
+		return x.Username
+	}
+	return ""
+}
+
+func (x *Credentials) GetPassword() string {
+	if x != nil {
+		return x.Password
+	}
+	return ""
+}
+
+func (x *Credentials) GetPasswordId() string {
+	if x != nil {
+		return x.PasswordId
+	}
+	return ""
+}
+
+var File_github_com_openconfig_gnmi_proto_target_target_proto protoreflect.FileDescriptor
+
+var file_github_com_openconfig_gnmi_proto_target_target_proto_rawDesc = []byte{
+	0x0a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x1a, 0x30,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0xe8, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x39, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x21, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69,
+	0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08,
+	0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xff, 0xff, 0xff, 0xff, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0c,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+	0x1a, 0x49, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
+	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+	0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x0e, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xde, 0x01, 0x0a, 0x06,
+	0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
+	0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65,
+	0x73, 0x73, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x0b,
+	0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x2e, 0x54, 0x61, 0x72,
+	0x67, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6d,
+	0x65, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x4d, 0x65, 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, 0x22, 0x66, 0x0a, 0x0b,
+	0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75,
+	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75,
+	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
+	0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
+	0x6f, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f,
+	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
+	0x72, 0x64, 0x49, 0x64, 0x42, 0x29, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e,
+	0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x62,
+	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescOnce sync.Once
+	file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescData = file_github_com_openconfig_gnmi_proto_target_target_proto_rawDesc
+)
+
+func file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescGZIP() []byte {
+	file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescOnce.Do(func() {
+		file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescData)
+	})
+	return file_github_com_openconfig_gnmi_proto_target_target_proto_rawDescData
+}
+
+var file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_github_com_openconfig_gnmi_proto_target_target_proto_goTypes = []interface{}{
+	(*Configuration)(nil),         // 0: target.Configuration
+	(*Target)(nil),                // 1: target.Target
+	(*Credentials)(nil),           // 2: target.Credentials
+	nil,                           // 3: target.Configuration.RequestEntry
+	nil,                           // 4: target.Configuration.TargetEntry
+	nil,                           // 5: target.Target.MetaEntry
+	(*gnmi.SubscribeRequest)(nil), // 6: gnmi.SubscribeRequest
+}
+var file_github_com_openconfig_gnmi_proto_target_target_proto_depIdxs = []int32{
+	3, // 0: target.Configuration.request:type_name -> target.Configuration.RequestEntry
+	4, // 1: target.Configuration.target:type_name -> target.Configuration.TargetEntry
+	2, // 2: target.Target.credentials:type_name -> target.Credentials
+	5, // 3: target.Target.meta:type_name -> target.Target.MetaEntry
+	6, // 4: target.Configuration.RequestEntry.value:type_name -> gnmi.SubscribeRequest
+	1, // 5: target.Configuration.TargetEntry.value:type_name -> target.Target
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
+}
+
+func init() { file_github_com_openconfig_gnmi_proto_target_target_proto_init() }
+func file_github_com_openconfig_gnmi_proto_target_target_proto_init() {
+	if File_github_com_openconfig_gnmi_proto_target_target_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Configuration); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Target); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Credentials); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_github_com_openconfig_gnmi_proto_target_target_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   6,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_github_com_openconfig_gnmi_proto_target_target_proto_goTypes,
+		DependencyIndexes: file_github_com_openconfig_gnmi_proto_target_target_proto_depIdxs,
+		MessageInfos:      file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes,
+	}.Build()
+	File_github_com_openconfig_gnmi_proto_target_target_proto = out.File
+	file_github_com_openconfig_gnmi_proto_target_target_proto_rawDesc = nil
+	file_github_com_openconfig_gnmi_proto_target_target_proto_goTypes = nil
+	file_github_com_openconfig_gnmi_proto_target_target_proto_depIdxs = nil
+}
diff --git a/go/github.com/openconfig/gnmi/testing/fake/proto/fake.pb.go b/go/github.com/openconfig/gnmi/testing/fake/proto/fake.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..d43bc987129465e6e2863f93a1ad90556812ac0b
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/testing/fake/proto/fake.pb.go
@@ -0,0 +1,2541 @@
+// fake.proto describes the message format for creating integration tests for
+// streaming telemetry components by generating a reproducible stream of
+// updates from fake targets.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.27.1
+// 	protoc        (unknown)
+// source: github.com/openconfig/gnmi/testing/fake/proto/fake.proto
+
+package gnmi_fake
+
+import (
+	gnmi "github.com/openconfig/gnmi/proto/gnmi"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type State int32
+
+const (
+	State_STOPPED State = 0
+	State_INIT    State = 1
+	State_RUNNING State = 2
+)
+
+// Enum value maps for State.
+var (
+	State_name = map[int32]string{
+		0: "STOPPED",
+		1: "INIT",
+		2: "RUNNING",
+	}
+	State_value = map[string]int32{
+		"STOPPED": 0,
+		"INIT":    1,
+		"RUNNING": 2,
+	}
+)
+
+func (x State) Enum() *State {
+	p := new(State)
+	*p = x
+	return p
+}
+
+func (x State) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (State) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_enumTypes[0].Descriptor()
+}
+
+func (State) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_enumTypes[0]
+}
+
+func (x State) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use State.Descriptor instead.
+func (State) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{0}
+}
+
+type Config_ClientType int32
+
+const (
+	Config_GRPC           Config_ClientType = 0
+	Config_STUBBY         Config_ClientType = 1
+	Config_GRPC_GNMI      Config_ClientType = 2
+	Config_GRPC_GNMI_PROD Config_ClientType = 3
+)
+
+// Enum value maps for Config_ClientType.
+var (
+	Config_ClientType_name = map[int32]string{
+		0: "GRPC",
+		1: "STUBBY",
+		2: "GRPC_GNMI",
+		3: "GRPC_GNMI_PROD",
+	}
+	Config_ClientType_value = map[string]int32{
+		"GRPC":           0,
+		"STUBBY":         1,
+		"GRPC_GNMI":      2,
+		"GRPC_GNMI_PROD": 3,
+	}
+)
+
+func (x Config_ClientType) Enum() *Config_ClientType {
+	p := new(Config_ClientType)
+	*p = x
+	return p
+}
+
+func (x Config_ClientType) String() string {
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Config_ClientType) Descriptor() protoreflect.EnumDescriptor {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_enumTypes[1].Descriptor()
+}
+
+func (Config_ClientType) Type() protoreflect.EnumType {
+	return &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_enumTypes[1]
+}
+
+func (x Config_ClientType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Config_ClientType.Descriptor instead.
+func (Config_ClientType) EnumDescriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{2, 0}
+}
+
+// Configuration is used to store all agent configuration for the fake agent
+// server.  Each config describes a single agent hosted on the server.
+type Configuration struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Repeated list of targets to emulate.
+	Config []*Config `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty"`
+}
+
+func (x *Configuration) Reset() {
+	*x = Configuration{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Configuration) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Configuration) ProtoMessage() {}
+
+func (x *Configuration) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Configuration.ProtoReflect.Descriptor instead.
+func (*Configuration) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Configuration) GetConfig() []*Config {
+	if x != nil {
+		return x.Config
+	}
+	return nil
+}
+
+type Credentials struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+	Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
+}
+
+func (x *Credentials) Reset() {
+	*x = Credentials{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Credentials) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Credentials) ProtoMessage() {}
+
+func (x *Credentials) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Credentials.ProtoReflect.Descriptor instead.
+func (*Credentials) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Credentials) GetUsername() string {
+	if x != nil {
+		return x.Username
+	}
+	return ""
+}
+
+func (x *Credentials) GetPassword() string {
+	if x != nil {
+		return x.Password
+	}
+	return ""
+}
+
+// Config is a collection of values that together represent the update streams
+// for one or more fake devices.
+type Config struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The target for which the fake will publish values for.
+	Target string `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
+	// Port for the agent to listen on. If 0 or unset the agent will pick a port
+	// for this agent.
+	Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
+	// A global random seed used in generating subsequent values. Set to have
+	// reproducible results.
+	//
+	// Deprecated: Do not use.
+	Seed int64 `protobuf:"varint,6,opt,name=seed,proto3" json:"seed,omitempty"`
+	// The list of values generated.  Each value will contain its corresponding
+	// target as the first string in the event.GetValue().path meaning that it is
+	// possible to generate streams that will be rejected by the cache for testing
+	// purposes.
+	//
+	// Deprecated: Do not use.
+	Values []*Value `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
+	// Setting disable sync will keep the configured client from autogenerating a
+	// sync message. This allows negative testing on sync handling.
+	DisableSync bool `protobuf:"varint,4,opt,name=disable_sync,json=disableSync,proto3" json:"disable_sync,omitempty"`
+	// Type of client to fake either Stubby or GRPC based fake.
+	ClientType Config_ClientType `protobuf:"varint,5,opt,name=client_type,json=clientType,proto3,enum=gnmi.fake.Config_ClientType" json:"client_type,omitempty"`
+	// Disable EOF will hold open the subscription and not automagically close
+	// the stream once the value queue is empty.
+	DisableEof bool `protobuf:"varint,7,opt,name=disable_eof,json=disableEof,proto3" json:"disable_eof,omitempty"`
+	// Per RPC credentials for the agent. If not set no per RPC auth will be used.
+	Credentials *Credentials `protobuf:"bytes,8,opt,name=credentials,proto3" json:"credentials,omitempty"`
+	// TLS cert for use on the agent. If not set the transport will not be TLS.
+	Cert []byte `protobuf:"bytes,9,opt,name=cert,proto3" json:"cert,omitempty"`
+	// Honor the delay between events in the generated value streams. Default will
+	// play events as fast as the can be streamed.
+	EnableDelay bool `protobuf:"varint,10,opt,name=enable_delay,json=enableDelay,proto3" json:"enable_delay,omitempty"`
+	// Generator for value series for the target.
+	//
+	// Types that are assignable to Generator:
+	//	*Config_Custom
+	//	*Config_Random
+	//	*Config_Fixed
+	Generator isConfig_Generator `protobuf_oneof:"generator"`
+	// tunnel_addr is the address of the tunnel server.
+	TunnelAddr string `protobuf:"bytes,11,opt,name=tunnel_addr,json=tunnelAddr,proto3" json:"tunnel_addr,omitempty"`
+	// tunnel_crt is the certificate file for the tunnel conection.
+	TunnelCrt string `protobuf:"bytes,12,opt,name=tunnel_crt,json=tunnelCrt,proto3" json:"tunnel_crt,omitempty"`
+}
+
+func (x *Config) Reset() {
+	*x = Config{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Config) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Config) ProtoMessage() {}
+
+func (x *Config) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Config.ProtoReflect.Descriptor instead.
+func (*Config) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *Config) GetTarget() string {
+	if x != nil {
+		return x.Target
+	}
+	return ""
+}
+
+func (x *Config) GetPort() int32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+// Deprecated: Do not use.
+func (x *Config) GetSeed() int64 {
+	if x != nil {
+		return x.Seed
+	}
+	return 0
+}
+
+// Deprecated: Do not use.
+func (x *Config) GetValues() []*Value {
+	if x != nil {
+		return x.Values
+	}
+	return nil
+}
+
+func (x *Config) GetDisableSync() bool {
+	if x != nil {
+		return x.DisableSync
+	}
+	return false
+}
+
+func (x *Config) GetClientType() Config_ClientType {
+	if x != nil {
+		return x.ClientType
+	}
+	return Config_GRPC
+}
+
+func (x *Config) GetDisableEof() bool {
+	if x != nil {
+		return x.DisableEof
+	}
+	return false
+}
+
+func (x *Config) GetCredentials() *Credentials {
+	if x != nil {
+		return x.Credentials
+	}
+	return nil
+}
+
+func (x *Config) GetCert() []byte {
+	if x != nil {
+		return x.Cert
+	}
+	return nil
+}
+
+func (x *Config) GetEnableDelay() bool {
+	if x != nil {
+		return x.EnableDelay
+	}
+	return false
+}
+
+func (m *Config) GetGenerator() isConfig_Generator {
+	if m != nil {
+		return m.Generator
+	}
+	return nil
+}
+
+func (x *Config) GetCustom() *anypb.Any {
+	if x, ok := x.GetGenerator().(*Config_Custom); ok {
+		return x.Custom
+	}
+	return nil
+}
+
+func (x *Config) GetRandom() *RandomGenerator {
+	if x, ok := x.GetGenerator().(*Config_Random); ok {
+		return x.Random
+	}
+	return nil
+}
+
+func (x *Config) GetFixed() *FixedGenerator {
+	if x, ok := x.GetGenerator().(*Config_Fixed); ok {
+		return x.Fixed
+	}
+	return nil
+}
+
+func (x *Config) GetTunnelAddr() string {
+	if x != nil {
+		return x.TunnelAddr
+	}
+	return ""
+}
+
+func (x *Config) GetTunnelCrt() string {
+	if x != nil {
+		return x.TunnelCrt
+	}
+	return ""
+}
+
+type isConfig_Generator interface {
+	isConfig_Generator()
+}
+
+type Config_Custom struct {
+	Custom *anypb.Any `protobuf:"bytes,100,opt,name=custom,proto3,oneof"`
+}
+
+type Config_Random struct {
+	Random *RandomGenerator `protobuf:"bytes,101,opt,name=random,proto3,oneof"`
+}
+
+type Config_Fixed struct {
+	Fixed *FixedGenerator `protobuf:"bytes,102,opt,name=fixed,proto3,oneof"`
+}
+
+func (*Config_Custom) isConfig_Generator() {}
+
+func (*Config_Random) isConfig_Generator() {}
+
+func (*Config_Fixed) isConfig_Generator() {}
+
+type FixedGenerator struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Responses []*gnmi.SubscribeResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"`
+}
+
+func (x *FixedGenerator) Reset() {
+	*x = FixedGenerator{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FixedGenerator) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FixedGenerator) ProtoMessage() {}
+
+func (x *FixedGenerator) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FixedGenerator.ProtoReflect.Descriptor instead.
+func (*FixedGenerator) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *FixedGenerator) GetResponses() []*gnmi.SubscribeResponse {
+	if x != nil {
+		return x.Responses
+	}
+	return nil
+}
+
+type RandomGenerator struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Seed   int64    `protobuf:"varint,1,opt,name=seed,proto3" json:"seed,omitempty"`
+	Values []*Value `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
+}
+
+func (x *RandomGenerator) Reset() {
+	*x = RandomGenerator{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RandomGenerator) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RandomGenerator) ProtoMessage() {}
+
+func (x *RandomGenerator) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RandomGenerator.ProtoReflect.Descriptor instead.
+func (*RandomGenerator) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *RandomGenerator) GetSeed() int64 {
+	if x != nil {
+		return x.Seed
+	}
+	return 0
+}
+
+func (x *RandomGenerator) GetValues() []*Value {
+	if x != nil {
+		return x.Values
+	}
+	return nil
+}
+
+// Delete will cause the value to be deleted at the Value's path.
+type DeleteValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *DeleteValue) Reset() {
+	*x = DeleteValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeleteValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteValue) ProtoMessage() {}
+
+func (x *DeleteValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteValue.ProtoReflect.Descriptor instead.
+func (*DeleteValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{5}
+}
+
+// Value is the main message that will trigger a stream of updates for a given
+// path.  A file containing a list of values can be used to simulate a network
+// device for integration tests.
+type Value struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The device specific, or OpenConfig path corresponding to a value.
+	Path []string `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"`
+	// The initial timestamp and configuration on how the timestamp will change
+	// for subsequent values. If timestamp is not set the default will assume to
+	// be the current system time.
+	Timestamp *Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	// If set, repeat indicates that the value should be repeated this many times,
+	// otherwise it is repeated indefinitely.
+	Repeat int32 `protobuf:"varint,6,opt,name=repeat,proto3" json:"repeat,omitempty"`
+	// A local random seed used in generating subsequent values for this path. If
+	// not set, will share the global random source with seed defined in Config.
+	Seed int64 `protobuf:"varint,7,opt,name=seed,proto3" json:"seed,omitempty"`
+	// The initial value of the chosen type including configuration on how the
+	// value will mutate for subsequent updates.
+	//
+	// Types that are assignable to Value:
+	//	*Value_IntValue
+	//	*Value_DoubleValue
+	//	*Value_StringValue
+	//	*Value_Sync
+	//	*Value_Delete
+	//	*Value_BoolValue
+	//	*Value_UintValue
+	//	*Value_StringListValue
+	Value isValue_Value `protobuf_oneof:"value"`
+}
+
+func (x *Value) Reset() {
+	*x = Value{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Value) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Value) ProtoMessage() {}
+
+func (x *Value) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_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 Value.ProtoReflect.Descriptor instead.
+func (*Value) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *Value) GetPath() []string {
+	if x != nil {
+		return x.Path
+	}
+	return nil
+}
+
+func (x *Value) GetTimestamp() *Timestamp {
+	if x != nil {
+		return x.Timestamp
+	}
+	return nil
+}
+
+func (x *Value) GetRepeat() int32 {
+	if x != nil {
+		return x.Repeat
+	}
+	return 0
+}
+
+func (x *Value) GetSeed() int64 {
+	if x != nil {
+		return x.Seed
+	}
+	return 0
+}
+
+func (m *Value) GetValue() isValue_Value {
+	if m != nil {
+		return m.Value
+	}
+	return nil
+}
+
+func (x *Value) GetIntValue() *IntValue {
+	if x, ok := x.GetValue().(*Value_IntValue); ok {
+		return x.IntValue
+	}
+	return nil
+}
+
+func (x *Value) GetDoubleValue() *DoubleValue {
+	if x, ok := x.GetValue().(*Value_DoubleValue); ok {
+		return x.DoubleValue
+	}
+	return nil
+}
+
+func (x *Value) GetStringValue() *StringValue {
+	if x, ok := x.GetValue().(*Value_StringValue); ok {
+		return x.StringValue
+	}
+	return nil
+}
+
+func (x *Value) GetSync() uint64 {
+	if x, ok := x.GetValue().(*Value_Sync); ok {
+		return x.Sync
+	}
+	return 0
+}
+
+func (x *Value) GetDelete() *DeleteValue {
+	if x, ok := x.GetValue().(*Value_Delete); ok {
+		return x.Delete
+	}
+	return nil
+}
+
+func (x *Value) GetBoolValue() *BoolValue {
+	if x, ok := x.GetValue().(*Value_BoolValue); ok {
+		return x.BoolValue
+	}
+	return nil
+}
+
+func (x *Value) GetUintValue() *UintValue {
+	if x, ok := x.GetValue().(*Value_UintValue); ok {
+		return x.UintValue
+	}
+	return nil
+}
+
+func (x *Value) GetStringListValue() *StringListValue {
+	if x, ok := x.GetValue().(*Value_StringListValue); ok {
+		return x.StringListValue
+	}
+	return nil
+}
+
+type isValue_Value interface {
+	isValue_Value()
+}
+
+type Value_IntValue struct {
+	IntValue *IntValue `protobuf:"bytes,100,opt,name=int_value,json=intValue,proto3,oneof"`
+}
+
+type Value_DoubleValue struct {
+	DoubleValue *DoubleValue `protobuf:"bytes,101,opt,name=double_value,json=doubleValue,proto3,oneof"`
+}
+
+type Value_StringValue struct {
+	StringValue *StringValue `protobuf:"bytes,102,opt,name=string_value,json=stringValue,proto3,oneof"`
+}
+
+type Value_Sync struct {
+	Sync uint64 `protobuf:"varint,103,opt,name=sync,proto3,oneof"`
+}
+
+type Value_Delete struct {
+	Delete *DeleteValue `protobuf:"bytes,104,opt,name=delete,proto3,oneof"`
+}
+
+type Value_BoolValue struct {
+	BoolValue *BoolValue `protobuf:"bytes,105,opt,name=bool_value,json=boolValue,proto3,oneof"`
+}
+
+type Value_UintValue struct {
+	UintValue *UintValue `protobuf:"bytes,106,opt,name=uint_value,json=uintValue,proto3,oneof"`
+}
+
+type Value_StringListValue struct {
+	StringListValue *StringListValue `protobuf:"bytes,107,opt,name=string_list_value,json=stringListValue,proto3,oneof"`
+}
+
+func (*Value_IntValue) isValue_Value() {}
+
+func (*Value_DoubleValue) isValue_Value() {}
+
+func (*Value_StringValue) isValue_Value() {}
+
+func (*Value_Sync) isValue_Value() {}
+
+func (*Value_Delete) isValue_Value() {}
+
+func (*Value_BoolValue) isValue_Value() {}
+
+func (*Value_UintValue) isValue_Value() {}
+
+func (*Value_StringListValue) isValue_Value() {}
+
+type Timestamp struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Initial timestamp for the corresponding value, nanoseconds since epoch.
+	// This value need have no relation to absolute real-time as the stream of
+	// of updates is generated without regard to the real clock and can be run
+	// repeatably at any time if the seed is set in the corresponding Value.
+	Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	// These values will vary the change in the timestamp for subsequent outputs
+	// by a value between delta_min and delta_max.  Set to the same value to force
+	// a set periodic interval.
+	DeltaMin int64 `protobuf:"varint,2,opt,name=delta_min,json=deltaMin,proto3" json:"delta_min,omitempty"`
+	DeltaMax int64 `protobuf:"varint,3,opt,name=delta_max,json=deltaMax,proto3" json:"delta_max,omitempty"`
+}
+
+func (x *Timestamp) Reset() {
+	*x = Timestamp{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Timestamp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Timestamp) ProtoMessage() {}
+
+func (x *Timestamp) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead.
+func (*Timestamp) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *Timestamp) GetTimestamp() int64 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+func (x *Timestamp) GetDeltaMin() int64 {
+	if x != nil {
+		return x.DeltaMin
+	}
+	return 0
+}
+
+func (x *Timestamp) GetDeltaMax() int64 {
+	if x != nil {
+		return x.DeltaMax
+	}
+	return 0
+}
+
+type IntValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// If distribution is IntRange, value is used as the initial value
+	// inside [minimum, maximum] and hold the value as it mutates.
+	// If distribution is IntList, value is only used to hold the value as it
+	// mutates.
+	// If no distribution is set, value is used as it mutates, i.e. constant
+	// update.
+	Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	// Types that are assignable to Distribution:
+	//	*IntValue_Range
+	//	*IntValue_List
+	Distribution isIntValue_Distribution `protobuf_oneof:"distribution"`
+}
+
+func (x *IntValue) Reset() {
+	*x = IntValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *IntValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IntValue) ProtoMessage() {}
+
+func (x *IntValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IntValue.ProtoReflect.Descriptor instead.
+func (*IntValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *IntValue) GetValue() int64 {
+	if x != nil {
+		return x.Value
+	}
+	return 0
+}
+
+func (m *IntValue) GetDistribution() isIntValue_Distribution {
+	if m != nil {
+		return m.Distribution
+	}
+	return nil
+}
+
+func (x *IntValue) GetRange() *IntRange {
+	if x, ok := x.GetDistribution().(*IntValue_Range); ok {
+		return x.Range
+	}
+	return nil
+}
+
+func (x *IntValue) GetList() *IntList {
+	if x, ok := x.GetDistribution().(*IntValue_List); ok {
+		return x.List
+	}
+	return nil
+}
+
+type isIntValue_Distribution interface {
+	isIntValue_Distribution()
+}
+
+type IntValue_Range struct {
+	Range *IntRange `protobuf:"bytes,2,opt,name=range,proto3,oneof"`
+}
+
+type IntValue_List struct {
+	List *IntList `protobuf:"bytes,3,opt,name=list,proto3,oneof"`
+}
+
+func (*IntValue_Range) isIntValue_Distribution() {}
+
+func (*IntValue_List) isIntValue_Distribution() {}
+
+type IntRange struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The range of the value allowed.
+	Minimum int64 `protobuf:"varint,1,opt,name=minimum,proto3" json:"minimum,omitempty"`
+	Maximum int64 `protobuf:"varint,2,opt,name=maximum,proto3" json:"maximum,omitempty"`
+	// If set, the value is cumulative and the subsequent value is value + delta
+	// where delta is randomly chosen between delta_min and delta_max.  The range
+	// minimum and maximum are still respected and values will saturate at the
+	// boundaries if they are exceeded. If not set subsequent value is a value
+	// randomly chosen between minimum and maximum.
+	DeltaMin int64 `protobuf:"varint,3,opt,name=delta_min,json=deltaMin,proto3" json:"delta_min,omitempty"`
+	DeltaMax int64 `protobuf:"varint,4,opt,name=delta_max,json=deltaMax,proto3" json:"delta_max,omitempty"`
+}
+
+func (x *IntRange) Reset() {
+	*x = IntRange{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *IntRange) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IntRange) ProtoMessage() {}
+
+func (x *IntRange) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IntRange.ProtoReflect.Descriptor instead.
+func (*IntRange) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *IntRange) GetMinimum() int64 {
+	if x != nil {
+		return x.Minimum
+	}
+	return 0
+}
+
+func (x *IntRange) GetMaximum() int64 {
+	if x != nil {
+		return x.Maximum
+	}
+	return 0
+}
+
+func (x *IntRange) GetDeltaMin() int64 {
+	if x != nil {
+		return x.DeltaMin
+	}
+	return 0
+}
+
+func (x *IntRange) GetDeltaMax() int64 {
+	if x != nil {
+		return x.DeltaMax
+	}
+	return 0
+}
+
+type IntList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The set of values which can be used.
+	Options []int64 `protobuf:"varint,1,rep,packed,name=options,proto3" json:"options,omitempty"`
+	// Set to true to randomize selection of value from options. If false, the
+	// values are cycled in order, starting at index 0.
+	Random bool `protobuf:"varint,2,opt,name=random,proto3" json:"random,omitempty"`
+}
+
+func (x *IntList) Reset() {
+	*x = IntList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *IntList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IntList) ProtoMessage() {}
+
+func (x *IntList) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IntList.ProtoReflect.Descriptor instead.
+func (*IntList) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *IntList) GetOptions() []int64 {
+	if x != nil {
+		return x.Options
+	}
+	return nil
+}
+
+func (x *IntList) GetRandom() bool {
+	if x != nil {
+		return x.Random
+	}
+	return false
+}
+
+type DoubleValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// If distribution is DoubleRange, value is used as the initial value
+	// inside [minimum, maximum] and hold the value as it mutates.
+	// If distribution is DoubleList, value is only used to hold the value as it
+	// mutates.
+	// If no distribution is set, value is used as it mutates, i.e. constant
+	// update.
+	Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
+	// Types that are assignable to Distribution:
+	//	*DoubleValue_Range
+	//	*DoubleValue_List
+	Distribution isDoubleValue_Distribution `protobuf_oneof:"distribution"`
+}
+
+func (x *DoubleValue) Reset() {
+	*x = DoubleValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DoubleValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DoubleValue) ProtoMessage() {}
+
+func (x *DoubleValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DoubleValue.ProtoReflect.Descriptor instead.
+func (*DoubleValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *DoubleValue) GetValue() float64 {
+	if x != nil {
+		return x.Value
+	}
+	return 0
+}
+
+func (m *DoubleValue) GetDistribution() isDoubleValue_Distribution {
+	if m != nil {
+		return m.Distribution
+	}
+	return nil
+}
+
+func (x *DoubleValue) GetRange() *DoubleRange {
+	if x, ok := x.GetDistribution().(*DoubleValue_Range); ok {
+		return x.Range
+	}
+	return nil
+}
+
+func (x *DoubleValue) GetList() *DoubleList {
+	if x, ok := x.GetDistribution().(*DoubleValue_List); ok {
+		return x.List
+	}
+	return nil
+}
+
+type isDoubleValue_Distribution interface {
+	isDoubleValue_Distribution()
+}
+
+type DoubleValue_Range struct {
+	Range *DoubleRange `protobuf:"bytes,2,opt,name=range,proto3,oneof"`
+}
+
+type DoubleValue_List struct {
+	List *DoubleList `protobuf:"bytes,3,opt,name=list,proto3,oneof"`
+}
+
+func (*DoubleValue_Range) isDoubleValue_Distribution() {}
+
+func (*DoubleValue_List) isDoubleValue_Distribution() {}
+
+type DoubleRange struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The range of the value allowed.
+	Minimum float64 `protobuf:"fixed64,1,opt,name=minimum,proto3" json:"minimum,omitempty"`
+	Maximum float64 `protobuf:"fixed64,2,opt,name=maximum,proto3" json:"maximum,omitempty"`
+	// If set, the value is cumulative and the subsequent value is value + delta
+	// where delta is randomly chosen between delta_min and delta_max. The range
+	// minimum and maximum are still respected. If not set subsequent value is a
+	// value randomly chosen between minimum and maximum.
+	DeltaMin float64 `protobuf:"fixed64,3,opt,name=delta_min,json=deltaMin,proto3" json:"delta_min,omitempty"`
+	DeltaMax float64 `protobuf:"fixed64,4,opt,name=delta_max,json=deltaMax,proto3" json:"delta_max,omitempty"`
+}
+
+func (x *DoubleRange) Reset() {
+	*x = DoubleRange{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DoubleRange) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DoubleRange) ProtoMessage() {}
+
+func (x *DoubleRange) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DoubleRange.ProtoReflect.Descriptor instead.
+func (*DoubleRange) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *DoubleRange) GetMinimum() float64 {
+	if x != nil {
+		return x.Minimum
+	}
+	return 0
+}
+
+func (x *DoubleRange) GetMaximum() float64 {
+	if x != nil {
+		return x.Maximum
+	}
+	return 0
+}
+
+func (x *DoubleRange) GetDeltaMin() float64 {
+	if x != nil {
+		return x.DeltaMin
+	}
+	return 0
+}
+
+func (x *DoubleRange) GetDeltaMax() float64 {
+	if x != nil {
+		return x.DeltaMax
+	}
+	return 0
+}
+
+type DoubleList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The set of values which can be used.
+	Options []float64 `protobuf:"fixed64,1,rep,packed,name=options,proto3" json:"options,omitempty"`
+	// Set to true to randomize selection of value from options. If false, the
+	// values are cycled in order.
+	Random bool `protobuf:"varint,2,opt,name=random,proto3" json:"random,omitempty"`
+}
+
+func (x *DoubleList) Reset() {
+	*x = DoubleList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DoubleList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DoubleList) ProtoMessage() {}
+
+func (x *DoubleList) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DoubleList.ProtoReflect.Descriptor instead.
+func (*DoubleList) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *DoubleList) GetOptions() []float64 {
+	if x != nil {
+		return x.Options
+	}
+	return nil
+}
+
+func (x *DoubleList) GetRandom() bool {
+	if x != nil {
+		return x.Random
+	}
+	return false
+}
+
+type StringValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// If distribution is StringList, value is used to hold the value as it
+	// mutates.
+	// If no distribution is set, value is used as it mutates, i.e. constant
+	// update.
+	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	// Types that are assignable to Distribution:
+	//	*StringValue_List
+	Distribution isStringValue_Distribution `protobuf_oneof:"distribution"`
+}
+
+func (x *StringValue) Reset() {
+	*x = StringValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StringValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StringValue) ProtoMessage() {}
+
+func (x *StringValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StringValue.ProtoReflect.Descriptor instead.
+func (*StringValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *StringValue) GetValue() string {
+	if x != nil {
+		return x.Value
+	}
+	return ""
+}
+
+func (m *StringValue) GetDistribution() isStringValue_Distribution {
+	if m != nil {
+		return m.Distribution
+	}
+	return nil
+}
+
+func (x *StringValue) GetList() *StringList {
+	if x, ok := x.GetDistribution().(*StringValue_List); ok {
+		return x.List
+	}
+	return nil
+}
+
+type isStringValue_Distribution interface {
+	isStringValue_Distribution()
+}
+
+type StringValue_List struct {
+	List *StringList `protobuf:"bytes,2,opt,name=list,proto3,oneof"`
+}
+
+func (*StringValue_List) isStringValue_Distribution() {}
+
+type StringList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The set of strings which can be used.
+	Options []string `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"`
+	// Set to true to randomize selection of value from options. If false, the
+	// values are cycled in order, starting at index 0.
+	Random bool `protobuf:"varint,2,opt,name=random,proto3" json:"random,omitempty"`
+}
+
+func (x *StringList) Reset() {
+	*x = StringList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StringList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StringList) ProtoMessage() {}
+
+func (x *StringList) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StringList.ProtoReflect.Descriptor instead.
+func (*StringList) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *StringList) GetOptions() []string {
+	if x != nil {
+		return x.Options
+	}
+	return nil
+}
+
+func (x *StringList) GetRandom() bool {
+	if x != nil {
+		return x.Random
+	}
+	return false
+}
+
+type StringListValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// If distribution is StringList, value is used to hold the value as it
+	// mutates.
+	// If no distribution is set, value is used as it mutates, i.e. constant
+	// update.
+	Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"`
+	// Types that are assignable to Distribution:
+	//	*StringListValue_List
+	Distribution isStringListValue_Distribution `protobuf_oneof:"distribution"`
+}
+
+func (x *StringListValue) Reset() {
+	*x = StringListValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StringListValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StringListValue) ProtoMessage() {}
+
+func (x *StringListValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StringListValue.ProtoReflect.Descriptor instead.
+func (*StringListValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *StringListValue) GetValue() []string {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (m *StringListValue) GetDistribution() isStringListValue_Distribution {
+	if m != nil {
+		return m.Distribution
+	}
+	return nil
+}
+
+func (x *StringListValue) GetList() *StringList {
+	if x, ok := x.GetDistribution().(*StringListValue_List); ok {
+		return x.List
+	}
+	return nil
+}
+
+type isStringListValue_Distribution interface {
+	isStringListValue_Distribution()
+}
+
+type StringListValue_List struct {
+	List *StringList `protobuf:"bytes,2,opt,name=list,proto3,oneof"`
+}
+
+func (*StringListValue_List) isStringListValue_Distribution() {}
+
+type BoolValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// If distribution is BoolList, value is only used to hold the value as it
+	// mutates.
+	// If no distribution is set, value is used as it mutates, i.e. constant
+	// update.
+	Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	// Types that are assignable to Distribution:
+	//	*BoolValue_List
+	Distribution isBoolValue_Distribution `protobuf_oneof:"distribution"`
+}
+
+func (x *BoolValue) Reset() {
+	*x = BoolValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *BoolValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BoolValue) ProtoMessage() {}
+
+func (x *BoolValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17]
+	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 BoolValue.ProtoReflect.Descriptor instead.
+func (*BoolValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *BoolValue) GetValue() bool {
+	if x != nil {
+		return x.Value
+	}
+	return false
+}
+
+func (m *BoolValue) GetDistribution() isBoolValue_Distribution {
+	if m != nil {
+		return m.Distribution
+	}
+	return nil
+}
+
+func (x *BoolValue) GetList() *BoolList {
+	if x, ok := x.GetDistribution().(*BoolValue_List); ok {
+		return x.List
+	}
+	return nil
+}
+
+type isBoolValue_Distribution interface {
+	isBoolValue_Distribution()
+}
+
+type BoolValue_List struct {
+	List *BoolList `protobuf:"bytes,2,opt,name=list,proto3,oneof"`
+}
+
+func (*BoolValue_List) isBoolValue_Distribution() {}
+
+type BoolList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The set of values which can be used.
+	Options []bool `protobuf:"varint,1,rep,packed,name=options,proto3" json:"options,omitempty"`
+	// Set to true to randomize selection of value from options. If false, the
+	// values are cycled in order, starting at index 0.
+	Random bool `protobuf:"varint,2,opt,name=random,proto3" json:"random,omitempty"`
+}
+
+func (x *BoolList) Reset() {
+	*x = BoolList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *BoolList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BoolList) ProtoMessage() {}
+
+func (x *BoolList) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[18]
+	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 BoolList.ProtoReflect.Descriptor instead.
+func (*BoolList) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *BoolList) GetOptions() []bool {
+	if x != nil {
+		return x.Options
+	}
+	return nil
+}
+
+func (x *BoolList) GetRandom() bool {
+	if x != nil {
+		return x.Random
+	}
+	return false
+}
+
+type UintValue struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// If distribution is UintRange, value is used as the initial value
+	// inside [minimum, maximum] and hold the value as it mutates.
+	// If distribution is UintList, value is only used to hold the value as it
+	// mutates.
+	// If no distribution is set, value is used as it mutates, i.e. constant
+	// update.
+	Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	// Types that are assignable to Distribution:
+	//	*UintValue_Range
+	//	*UintValue_List
+	Distribution isUintValue_Distribution `protobuf_oneof:"distribution"`
+}
+
+func (x *UintValue) Reset() {
+	*x = UintValue{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UintValue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UintValue) ProtoMessage() {}
+
+func (x *UintValue) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19]
+	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 UintValue.ProtoReflect.Descriptor instead.
+func (*UintValue) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *UintValue) GetValue() uint64 {
+	if x != nil {
+		return x.Value
+	}
+	return 0
+}
+
+func (m *UintValue) GetDistribution() isUintValue_Distribution {
+	if m != nil {
+		return m.Distribution
+	}
+	return nil
+}
+
+func (x *UintValue) GetRange() *UintRange {
+	if x, ok := x.GetDistribution().(*UintValue_Range); ok {
+		return x.Range
+	}
+	return nil
+}
+
+func (x *UintValue) GetList() *UintList {
+	if x, ok := x.GetDistribution().(*UintValue_List); ok {
+		return x.List
+	}
+	return nil
+}
+
+type isUintValue_Distribution interface {
+	isUintValue_Distribution()
+}
+
+type UintValue_Range struct {
+	Range *UintRange `protobuf:"bytes,2,opt,name=range,proto3,oneof"`
+}
+
+type UintValue_List struct {
+	List *UintList `protobuf:"bytes,3,opt,name=list,proto3,oneof"`
+}
+
+func (*UintValue_Range) isUintValue_Distribution() {}
+
+func (*UintValue_List) isUintValue_Distribution() {}
+
+type UintRange struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The range of the value allowed.
+	Minimum uint64 `protobuf:"varint,1,opt,name=minimum,proto3" json:"minimum,omitempty"`
+	Maximum uint64 `protobuf:"varint,2,opt,name=maximum,proto3" json:"maximum,omitempty"`
+	// If set, the value is cumulative and the subsequent value is value + delta
+	// where delta is randomly chosen between delta_min and delta_max.  The range
+	// minimum and maximum are still respected and values will saturate at the
+	// boundaries if they are exceeded. If not set subsequent value is a value
+	// randomly chosen between minimum and maximum.
+	DeltaMin int64 `protobuf:"varint,3,opt,name=delta_min,json=deltaMin,proto3" json:"delta_min,omitempty"`
+	DeltaMax int64 `protobuf:"varint,4,opt,name=delta_max,json=deltaMax,proto3" json:"delta_max,omitempty"`
+}
+
+func (x *UintRange) Reset() {
+	*x = UintRange{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UintRange) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UintRange) ProtoMessage() {}
+
+func (x *UintRange) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[20]
+	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 UintRange.ProtoReflect.Descriptor instead.
+func (*UintRange) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *UintRange) GetMinimum() uint64 {
+	if x != nil {
+		return x.Minimum
+	}
+	return 0
+}
+
+func (x *UintRange) GetMaximum() uint64 {
+	if x != nil {
+		return x.Maximum
+	}
+	return 0
+}
+
+func (x *UintRange) GetDeltaMin() int64 {
+	if x != nil {
+		return x.DeltaMin
+	}
+	return 0
+}
+
+func (x *UintRange) GetDeltaMax() int64 {
+	if x != nil {
+		return x.DeltaMax
+	}
+	return 0
+}
+
+type UintList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The set of values which can be used.
+	Options []uint64 `protobuf:"varint,1,rep,packed,name=options,proto3" json:"options,omitempty"`
+	// Set to true to randomize selection of value from options. If false, the
+	// values are cycled in order, starting at index 0.
+	Random bool `protobuf:"varint,2,opt,name=random,proto3" json:"random,omitempty"`
+}
+
+func (x *UintList) Reset() {
+	*x = UintList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UintList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UintList) ProtoMessage() {}
+
+func (x *UintList) ProtoReflect() protoreflect.Message {
+	mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[21]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UintList.ProtoReflect.Descriptor instead.
+func (*UintList) Descriptor() ([]byte, []int) {
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *UintList) GetOptions() []uint64 {
+	if x != nil {
+		return x.Options
+	}
+	return nil
+}
+
+func (x *UintList) GetRandom() bool {
+	if x != nil {
+		return x.Random
+	}
+	return false
+}
+
+var File_github_com_openconfig_gnmi_testing_fake_proto_fake_proto protoreflect.FileDescriptor
+
+var file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDesc = []byte{
+	0x0a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2f, 0x66, 0x61, 0x6b, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
+	0x66, 0x61, 0x6b, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x66, 0x61, 0x6b, 0x65, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x22, 0x3a, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x45,
+	0x0a, 0x0b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a,
+	0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73,
+	0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73,
+	0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x9b, 0x05, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x04,
+	0x73, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04,
+	0x73, 0x65, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65,
+	0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79,
+	0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
+	0x65, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
+	0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6c,
+	0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f,
+	0x65, 0x6f, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62,
+	0x6c, 0x65, 0x45, 0x6f, 0x66, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61,
+	0x6c, 0x73, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12,
+	0x12, 0x0a, 0x04, 0x63, 0x65, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x63,
+	0x65, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65,
+	0x6c, 0x61, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c,
+	0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
+	0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x06,
+	0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d,
+	0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61,
+	0x6b, 0x65, 0x2e, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
+	0x6f, 0x72, 0x48, 0x00, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x05,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6e,
+	0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x47, 0x65, 0x6e,
+	0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x12,
+	0x1f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x0b,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x64, 0x64, 0x72,
+	0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x72, 0x74, 0x18, 0x0c,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x74, 0x22,
+	0x45, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a,
+	0x04, 0x47, 0x52, 0x50, 0x43, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x55, 0x42, 0x42,
+	0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x52, 0x50, 0x43, 0x5f, 0x47, 0x4e, 0x4d, 0x49,
+	0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x47, 0x52, 0x50, 0x43, 0x5f, 0x47, 0x4e, 0x4d, 0x49, 0x5f,
+	0x50, 0x52, 0x4f, 0x44, 0x10, 0x03, 0x42, 0x0b, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
+	0x74, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x0e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65,
+	0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e,
+	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x0f,
+	0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12,
+	0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73,
+	0x65, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x0d, 0x0a,
+	0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb2, 0x04, 0x0a,
+	0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x32, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16,
+	0x0a, 0x06, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
+	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x09, 0x69, 0x6e,
+	0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b,
+	0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x65,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65,
+	0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0b,
+	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x73,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x66, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63,
+	0x18, 0x67, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x30,
+	0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+	0x12, 0x35, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x69,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65,
+	0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f,
+	0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x5f,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6e,
+	0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x48, 0x00, 0x52, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x48,
+	0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c,
+	0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x22, 0x63, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c,
+	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1b, 0x0a, 0x09,
+	0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x08, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x6c,
+	0x74, 0x61, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65,
+	0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x22, 0x87, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x72, 0x61, 0x6e,
+	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e,
+	0x66, 0x61, 0x6b, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52,
+	0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65,
+	0x2e, 0x49, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74,
+	0x42, 0x0e, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
+	0x22, 0x78, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d,
+	0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75,
+	0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d,
+	0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x12, 0x1b, 0x0a,
+	0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
+	0x52, 0x08, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x22, 0x3b, 0x0a, 0x07, 0x49, 0x6e,
+	0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+	0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x90, 0x01, 0x0a, 0x0b, 0x44, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a,
+	0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67,
+	0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x52,
+	0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2b, 0x0a,
+	0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6e,
+	0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69,
+	0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x64, 0x69,
+	0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7b, 0x0a, 0x0b, 0x44, 0x6f,
+	0x75, 0x62, 0x6c, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e,
+	0x69, 0x6d, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69,
+	0x6d, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x1b, 0x0a,
+	0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01,
+	0x52, 0x08, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65,
+	0x6c, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x64,
+	0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x22, 0x3e, 0x0a, 0x0a, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x01, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
+	0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x60, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, 0x04,
+	0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6e, 0x6d,
+	0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73,
+	0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x64, 0x69, 0x73,
+	0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x0a, 0x0a, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x64, 0x0a, 0x0f, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x15, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x42,
+	0x0e, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22,
+	0x5c, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x13, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x42, 0x6f, 0x6f,
+	0x6c, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a,
+	0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x0a,
+	0x08, 0x42, 0x6f, 0x6f, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x8a, 0x01, 0x0a, 0x09,
+	0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
+	0x2c, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x52,
+	0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x0a,
+	0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6e,
+	0x6d, 0x69, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74,
+	0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74,
+	0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x09, 0x55, 0x69, 0x6e, 0x74,
+	0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x12,
+	0x18, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x6c,
+	0x74, 0x61, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65,
+	0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f,
+	0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x6c, 0x74, 0x61,
+	0x4d, 0x61, 0x78, 0x22, 0x3c, 0x0a, 0x08, 0x55, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12,
+	0x18, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04,
+	0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x6e,
+	0x64, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f,
+	0x6d, 0x2a, 0x2b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54,
+	0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x49, 0x54, 0x10,
+	0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x32, 0x9b,
+	0x01, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12,
+	0x2b, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x12, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61,
+	0x6b, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x06,
+	0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61,
+	0x6b, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x06,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x66, 0x61,
+	0x6b, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x11, 0x2e, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x66, 0x61, 0x6b, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x39, 0x5a, 0x37,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2f, 0x66, 0x61, 0x6b, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x67, 0x6e,
+	0x6d, 0x69, 0x5f, 0x66, 0x61, 0x6b, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescOnce sync.Once
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescData = file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDesc
+)
+
+func file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescGZIP() []byte {
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescOnce.Do(func() {
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescData)
+	})
+	return file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDescData
+}
+
+var file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
+var file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_goTypes = []interface{}{
+	(State)(0),                     // 0: gnmi.fake.State
+	(Config_ClientType)(0),         // 1: gnmi.fake.Config.ClientType
+	(*Configuration)(nil),          // 2: gnmi.fake.Configuration
+	(*Credentials)(nil),            // 3: gnmi.fake.Credentials
+	(*Config)(nil),                 // 4: gnmi.fake.Config
+	(*FixedGenerator)(nil),         // 5: gnmi.fake.FixedGenerator
+	(*RandomGenerator)(nil),        // 6: gnmi.fake.RandomGenerator
+	(*DeleteValue)(nil),            // 7: gnmi.fake.DeleteValue
+	(*Value)(nil),                  // 8: gnmi.fake.Value
+	(*Timestamp)(nil),              // 9: gnmi.fake.Timestamp
+	(*IntValue)(nil),               // 10: gnmi.fake.IntValue
+	(*IntRange)(nil),               // 11: gnmi.fake.IntRange
+	(*IntList)(nil),                // 12: gnmi.fake.IntList
+	(*DoubleValue)(nil),            // 13: gnmi.fake.DoubleValue
+	(*DoubleRange)(nil),            // 14: gnmi.fake.DoubleRange
+	(*DoubleList)(nil),             // 15: gnmi.fake.DoubleList
+	(*StringValue)(nil),            // 16: gnmi.fake.StringValue
+	(*StringList)(nil),             // 17: gnmi.fake.StringList
+	(*StringListValue)(nil),        // 18: gnmi.fake.StringListValue
+	(*BoolValue)(nil),              // 19: gnmi.fake.BoolValue
+	(*BoolList)(nil),               // 20: gnmi.fake.BoolList
+	(*UintValue)(nil),              // 21: gnmi.fake.UintValue
+	(*UintRange)(nil),              // 22: gnmi.fake.UintRange
+	(*UintList)(nil),               // 23: gnmi.fake.UintList
+	(*anypb.Any)(nil),              // 24: google.protobuf.Any
+	(*gnmi.SubscribeResponse)(nil), // 25: gnmi.SubscribeResponse
+}
+var file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_depIdxs = []int32{
+	4,  // 0: gnmi.fake.Configuration.config:type_name -> gnmi.fake.Config
+	8,  // 1: gnmi.fake.Config.values:type_name -> gnmi.fake.Value
+	1,  // 2: gnmi.fake.Config.client_type:type_name -> gnmi.fake.Config.ClientType
+	3,  // 3: gnmi.fake.Config.credentials:type_name -> gnmi.fake.Credentials
+	24, // 4: gnmi.fake.Config.custom:type_name -> google.protobuf.Any
+	6,  // 5: gnmi.fake.Config.random:type_name -> gnmi.fake.RandomGenerator
+	5,  // 6: gnmi.fake.Config.fixed:type_name -> gnmi.fake.FixedGenerator
+	25, // 7: gnmi.fake.FixedGenerator.responses:type_name -> gnmi.SubscribeResponse
+	8,  // 8: gnmi.fake.RandomGenerator.values:type_name -> gnmi.fake.Value
+	9,  // 9: gnmi.fake.Value.timestamp:type_name -> gnmi.fake.Timestamp
+	10, // 10: gnmi.fake.Value.int_value:type_name -> gnmi.fake.IntValue
+	13, // 11: gnmi.fake.Value.double_value:type_name -> gnmi.fake.DoubleValue
+	16, // 12: gnmi.fake.Value.string_value:type_name -> gnmi.fake.StringValue
+	7,  // 13: gnmi.fake.Value.delete:type_name -> gnmi.fake.DeleteValue
+	19, // 14: gnmi.fake.Value.bool_value:type_name -> gnmi.fake.BoolValue
+	21, // 15: gnmi.fake.Value.uint_value:type_name -> gnmi.fake.UintValue
+	18, // 16: gnmi.fake.Value.string_list_value:type_name -> gnmi.fake.StringListValue
+	11, // 17: gnmi.fake.IntValue.range:type_name -> gnmi.fake.IntRange
+	12, // 18: gnmi.fake.IntValue.list:type_name -> gnmi.fake.IntList
+	14, // 19: gnmi.fake.DoubleValue.range:type_name -> gnmi.fake.DoubleRange
+	15, // 20: gnmi.fake.DoubleValue.list:type_name -> gnmi.fake.DoubleList
+	17, // 21: gnmi.fake.StringValue.list:type_name -> gnmi.fake.StringList
+	17, // 22: gnmi.fake.StringListValue.list:type_name -> gnmi.fake.StringList
+	20, // 23: gnmi.fake.BoolValue.list:type_name -> gnmi.fake.BoolList
+	22, // 24: gnmi.fake.UintValue.range:type_name -> gnmi.fake.UintRange
+	23, // 25: gnmi.fake.UintValue.list:type_name -> gnmi.fake.UintList
+	4,  // 26: gnmi.fake.AgentManager.Add:input_type -> gnmi.fake.Config
+	4,  // 27: gnmi.fake.AgentManager.Remove:input_type -> gnmi.fake.Config
+	4,  // 28: gnmi.fake.AgentManager.Status:input_type -> gnmi.fake.Config
+	4,  // 29: gnmi.fake.AgentManager.Add:output_type -> gnmi.fake.Config
+	4,  // 30: gnmi.fake.AgentManager.Remove:output_type -> gnmi.fake.Config
+	4,  // 31: gnmi.fake.AgentManager.Status:output_type -> gnmi.fake.Config
+	29, // [29:32] is the sub-list for method output_type
+	26, // [26:29] 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_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_init() }
+func file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_init() {
+	if File_github_com_openconfig_gnmi_testing_fake_proto_fake_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Configuration); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Credentials); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Config); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FixedGenerator); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RandomGenerator); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeleteValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Value); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Timestamp); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IntValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IntRange); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*IntList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DoubleValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DoubleRange); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DoubleList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StringValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StringList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StringListValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BoolValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*BoolList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UintValue); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UintRange); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UintList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2].OneofWrappers = []interface{}{
+		(*Config_Custom)(nil),
+		(*Config_Random)(nil),
+		(*Config_Fixed)(nil),
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[6].OneofWrappers = []interface{}{
+		(*Value_IntValue)(nil),
+		(*Value_DoubleValue)(nil),
+		(*Value_StringValue)(nil),
+		(*Value_Sync)(nil),
+		(*Value_Delete)(nil),
+		(*Value_BoolValue)(nil),
+		(*Value_UintValue)(nil),
+		(*Value_StringListValue)(nil),
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8].OneofWrappers = []interface{}{
+		(*IntValue_Range)(nil),
+		(*IntValue_List)(nil),
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11].OneofWrappers = []interface{}{
+		(*DoubleValue_Range)(nil),
+		(*DoubleValue_List)(nil),
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14].OneofWrappers = []interface{}{
+		(*StringValue_List)(nil),
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16].OneofWrappers = []interface{}{
+		(*StringListValue_List)(nil),
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17].OneofWrappers = []interface{}{
+		(*BoolValue_List)(nil),
+	}
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19].OneofWrappers = []interface{}{
+		(*UintValue_Range)(nil),
+		(*UintValue_List)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   22,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_goTypes,
+		DependencyIndexes: file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_depIdxs,
+		EnumInfos:         file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_enumTypes,
+		MessageInfos:      file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes,
+	}.Build()
+	File_github_com_openconfig_gnmi_testing_fake_proto_fake_proto = out.File
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_rawDesc = nil
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_goTypes = nil
+	file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_depIdxs = nil
+}
diff --git a/go/github.com/openconfig/gnmi/testing/fake/proto/fake_grpc.pb.go b/go/github.com/openconfig/gnmi/testing/fake/proto/fake_grpc.pb.go
new file mode 100644
index 0000000000000000000000000000000000000000..8b42d6e7ae1716a54acd32910c147d0d1347d764
--- /dev/null
+++ b/go/github.com/openconfig/gnmi/testing/fake/proto/fake_grpc.pb.go
@@ -0,0 +1,179 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+
+package gnmi_fake
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// AgentManagerClient is the client API for AgentManager service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type AgentManagerClient interface {
+	// Add adds an agent to the server.
+	Add(ctx context.Context, in *Config, opts ...grpc.CallOption) (*Config, error)
+	// Remove removes an agent from the server.
+	Remove(ctx context.Context, in *Config, opts ...grpc.CallOption) (*Config, error)
+	// Status returns the current status of an agent on the server.
+	Status(ctx context.Context, in *Config, opts ...grpc.CallOption) (*Config, error)
+}
+
+type agentManagerClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewAgentManagerClient(cc grpc.ClientConnInterface) AgentManagerClient {
+	return &agentManagerClient{cc}
+}
+
+func (c *agentManagerClient) Add(ctx context.Context, in *Config, opts ...grpc.CallOption) (*Config, error) {
+	out := new(Config)
+	err := c.cc.Invoke(ctx, "/gnmi.fake.AgentManager/Add", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *agentManagerClient) Remove(ctx context.Context, in *Config, opts ...grpc.CallOption) (*Config, error) {
+	out := new(Config)
+	err := c.cc.Invoke(ctx, "/gnmi.fake.AgentManager/Remove", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *agentManagerClient) Status(ctx context.Context, in *Config, opts ...grpc.CallOption) (*Config, error) {
+	out := new(Config)
+	err := c.cc.Invoke(ctx, "/gnmi.fake.AgentManager/Status", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// AgentManagerServer is the server API for AgentManager service.
+// All implementations must embed UnimplementedAgentManagerServer
+// for forward compatibility
+type AgentManagerServer interface {
+	// Add adds an agent to the server.
+	Add(context.Context, *Config) (*Config, error)
+	// Remove removes an agent from the server.
+	Remove(context.Context, *Config) (*Config, error)
+	// Status returns the current status of an agent on the server.
+	Status(context.Context, *Config) (*Config, error)
+	mustEmbedUnimplementedAgentManagerServer()
+}
+
+// UnimplementedAgentManagerServer must be embedded to have forward compatible implementations.
+type UnimplementedAgentManagerServer struct {
+}
+
+func (UnimplementedAgentManagerServer) Add(context.Context, *Config) (*Config, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Add not implemented")
+}
+func (UnimplementedAgentManagerServer) Remove(context.Context, *Config) (*Config, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Remove not implemented")
+}
+func (UnimplementedAgentManagerServer) Status(context.Context, *Config) (*Config, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method Status not implemented")
+}
+func (UnimplementedAgentManagerServer) mustEmbedUnimplementedAgentManagerServer() {}
+
+// UnsafeAgentManagerServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to AgentManagerServer will
+// result in compilation errors.
+type UnsafeAgentManagerServer interface {
+	mustEmbedUnimplementedAgentManagerServer()
+}
+
+func RegisterAgentManagerServer(s grpc.ServiceRegistrar, srv AgentManagerServer) {
+	s.RegisterService(&AgentManager_ServiceDesc, srv)
+}
+
+func _AgentManager_Add_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Config)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AgentManagerServer).Add(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gnmi.fake.AgentManager/Add",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AgentManagerServer).Add(ctx, req.(*Config))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AgentManager_Remove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Config)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AgentManagerServer).Remove(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gnmi.fake.AgentManager/Remove",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AgentManagerServer).Remove(ctx, req.(*Config))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AgentManager_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Config)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AgentManagerServer).Status(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/gnmi.fake.AgentManager/Status",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AgentManagerServer).Status(ctx, req.(*Config))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// AgentManager_ServiceDesc is the grpc.ServiceDesc for AgentManager service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var AgentManager_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "gnmi.fake.AgentManager",
+	HandlerType: (*AgentManagerServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "Add",
+			Handler:    _AgentManager_Add_Handler,
+		},
+		{
+			MethodName: "Remove",
+			Handler:    _AgentManager_Remove_Handler,
+		},
+		{
+			MethodName: "Status",
+			Handler:    _AgentManager_Status_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "github.com/openconfig/gnmi/testing/fake/proto/fake.proto",
+}
diff --git a/go/gosdn/core/core.pb.go b/go/gosdn/core/core.pb.go
index 7d0994ac2a9d0a1c46e4f21e0f700c2ebcf9319c..3a12f827098ff156b3836b3feb1cf4765029a17b 100644
--- a/go/gosdn/core/core.pb.go
+++ b/go/gosdn/core/core.pb.go
@@ -407,7 +407,7 @@ type CreatePndResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64                    `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    CreatePndResponse_Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.core.v1alpha.CreatePndResponse_Status" json:"status,omitempty"`
+	Status    CreatePndResponse_Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.core.CreatePndResponse_Status" json:"status,omitempty"`
 }
 
 func (x *CreatePndResponse) Reset() {
@@ -460,82 +460,76 @@ var File_gosdn_core_core_proto protoreflect.FileDescriptor
 
 var file_gosdn_core_core_proto_rawDesc = []byte{
 	0x0a, 0x15, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x72,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
-	0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2f, 0x70, 0x6e, 0x64, 0x2f, 0x70, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x31,
-	0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x22, 0x3f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70,
-	0x69, 0x64, 0x22, 0x6f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
+	0x6f, 0x72, 0x65, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+	0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x1a, 0x13, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x2f, 0x70, 0x6e, 0x64,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x31, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3f, 0x0a, 0x0d, 0x47, 0x65, 0x74,
+	0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x67, 0x0a, 0x12, 0x47, 0x65,
+	0x74, 0x50, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33,
+	0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61,
 	0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03,
-	0x70, 0x6e, 0x64, 0x22, 0x6b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73,
+	0x70, 0x6e, 0x64, 0x22, 0x63, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73,
 	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
 	0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x29, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65,
-	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64,
-	0x22, 0x6b, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x39, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72,
+	0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69,
+	0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d,
+	0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x22, 0x63, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61,
+	0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x03, 0x70, 0x6e,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
+	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x50, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72,
 	0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x22, 0x5d, 0x0a,
 	0x13, 0x50, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
 	0x74, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
 	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
 	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
 	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x62,
-	0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0xba, 0x01, 0x0a,
+	0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0xb2, 0x01, 0x0a,
 	0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
 	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x44, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x41, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
-	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54,
-	0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55,
-	0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x32, 0xd3, 0x02, 0x0a, 0x0b, 0x43, 0x6f,
-	0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x06, 0x47, 0x65, 0x74,
-	0x50, 0x6e, 0x64, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
-	0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x50,
-	0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93,
-	0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x2f, 0x7b, 0x70, 0x69, 0x64,
-	0x7d, 0x12, 0x6d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
-	0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x50,
-	0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10,
-	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73,
-	0x12, 0x6d, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x12, 0x24, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50,
-	0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93,
-	0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x42,
-	0x2a, 0x5a, 0x28, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61,
-	0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
-	0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
+	0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72,
+	0x65, 0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x41,
+	0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54,
+	0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
+	0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12,
+	0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
+	0x02, 0x32, 0x9a, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x12, 0x53, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x12, 0x19, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
+	0x6f, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x70, 0x6e, 0x64,
+	0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x12, 0x5a, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64,
+	0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72,
+	0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65,
+	0x2e, 0x47, 0x65, 0x74, 0x50, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x22, 0x0d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x07, 0x12, 0x05, 0x2f, 0x70, 0x6e,
+	0x64, 0x73, 0x12, 0x5a, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x12,
+	0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65,
+	0x61, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+	0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x0a, 0x3a, 0x01, 0x2a, 0x22, 0x05, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x42, 0x2a,
+	0x5a, 0x28, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e,
+	0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
 var (
@@ -553,27 +547,27 @@ func file_gosdn_core_core_proto_rawDescGZIP() []byte {
 var file_gosdn_core_core_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_gosdn_core_core_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
 var file_gosdn_core_core_proto_goTypes = []interface{}{
-	(CreatePndResponse_Status)(0),      // 0: gosdn.core.v1alpha.CreatePndResponse.Status
-	(*GetPndListRequest)(nil),          // 1: gosdn.core.v1alpha.GetPndListRequest
-	(*GetPndRequest)(nil),              // 2: gosdn.core.v1alpha.GetPndRequest
-	(*GetPndListResponse)(nil),         // 3: gosdn.core.v1alpha.GetPndListResponse
-	(*GetPndResponse)(nil),             // 4: gosdn.core.v1alpha.GetPndResponse
-	(*CreatePndRequest)(nil),           // 5: gosdn.core.v1alpha.CreatePndRequest
-	(*PndCreateProperties)(nil),        // 6: gosdn.core.v1alpha.PndCreateProperties
-	(*CreatePndResponse)(nil),          // 7: gosdn.core.v1alpha.CreatePndResponse
-	(*pnd.PrincipalNetworkDomain)(nil), // 8: gosdn.pnd.v1alpha.PrincipalNetworkDomain
+	(CreatePndResponse_Status)(0),      // 0: gosdn.core.CreatePndResponse.Status
+	(*GetPndListRequest)(nil),          // 1: gosdn.core.GetPndListRequest
+	(*GetPndRequest)(nil),              // 2: gosdn.core.GetPndRequest
+	(*GetPndListResponse)(nil),         // 3: gosdn.core.GetPndListResponse
+	(*GetPndResponse)(nil),             // 4: gosdn.core.GetPndResponse
+	(*CreatePndRequest)(nil),           // 5: gosdn.core.CreatePndRequest
+	(*PndCreateProperties)(nil),        // 6: gosdn.core.PndCreateProperties
+	(*CreatePndResponse)(nil),          // 7: gosdn.core.CreatePndResponse
+	(*pnd.PrincipalNetworkDomain)(nil), // 8: gosdn.pnd.PrincipalNetworkDomain
 }
 var file_gosdn_core_core_proto_depIdxs = []int32{
-	8, // 0: gosdn.core.v1alpha.GetPndListResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	8, // 1: gosdn.core.v1alpha.GetPndResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	6, // 2: gosdn.core.v1alpha.CreatePndRequest.pnd:type_name -> gosdn.core.v1alpha.PndCreateProperties
-	0, // 3: gosdn.core.v1alpha.CreatePndResponse.status:type_name -> gosdn.core.v1alpha.CreatePndResponse.Status
-	2, // 4: gosdn.core.v1alpha.CoreService.GetPnd:input_type -> gosdn.core.v1alpha.GetPndRequest
-	1, // 5: gosdn.core.v1alpha.CoreService.GetPndList:input_type -> gosdn.core.v1alpha.GetPndListRequest
-	5, // 6: gosdn.core.v1alpha.CoreService.CreatePnd:input_type -> gosdn.core.v1alpha.CreatePndRequest
-	4, // 7: gosdn.core.v1alpha.CoreService.GetPnd:output_type -> gosdn.core.v1alpha.GetPndResponse
-	3, // 8: gosdn.core.v1alpha.CoreService.GetPndList:output_type -> gosdn.core.v1alpha.GetPndListResponse
-	7, // 9: gosdn.core.v1alpha.CoreService.CreatePnd:output_type -> gosdn.core.v1alpha.CreatePndResponse
+	8, // 0: gosdn.core.GetPndListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	8, // 1: gosdn.core.GetPndResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	6, // 2: gosdn.core.CreatePndRequest.pnd:type_name -> gosdn.core.PndCreateProperties
+	0, // 3: gosdn.core.CreatePndResponse.status:type_name -> gosdn.core.CreatePndResponse.Status
+	2, // 4: gosdn.core.CoreService.GetPnd:input_type -> gosdn.core.GetPndRequest
+	1, // 5: gosdn.core.CoreService.GetPndList:input_type -> gosdn.core.GetPndListRequest
+	5, // 6: gosdn.core.CoreService.CreatePnd:input_type -> gosdn.core.CreatePndRequest
+	4, // 7: gosdn.core.CoreService.GetPnd:output_type -> gosdn.core.GetPndResponse
+	3, // 8: gosdn.core.CoreService.GetPndList:output_type -> gosdn.core.GetPndListResponse
+	7, // 9: gosdn.core.CoreService.CreatePnd:output_type -> gosdn.core.CreatePndResponse
 	7, // [7:10] is the sub-list for method output_type
 	4, // [4:7] is the sub-list for method input_type
 	4, // [4:4] is the sub-list for extension type_name
diff --git a/go/gosdn/core/core.pb.gw.go b/go/gosdn/core/core.pb.gw.go
index e27245640a0cbcf06df6e1928f1514ae4af3562b..b047a27080a41c6e5e604a2a1a409b3bcb7d3432 100644
--- a/go/gosdn/core/core.pb.gw.go
+++ b/go/gosdn/core/core.pb.gw.go
@@ -183,7 +183,7 @@ func RegisterCoreServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.core.v1alpha.CoreService/GetPnd", runtime.WithHTTPPathPattern("/v1/pnd/{pid}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.core.CoreService/GetPnd", runtime.WithHTTPPathPattern("/pnd/{pid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -206,7 +206,7 @@ func RegisterCoreServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.core.v1alpha.CoreService/GetPndList", runtime.WithHTTPPathPattern("/v1/pnds"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.core.CoreService/GetPndList", runtime.WithHTTPPathPattern("/pnds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -229,7 +229,7 @@ func RegisterCoreServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.core.v1alpha.CoreService/CreatePnd", runtime.WithHTTPPathPattern("/v1/pnds"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.core.CoreService/CreatePnd", runtime.WithHTTPPathPattern("/pnds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -291,7 +291,7 @@ func RegisterCoreServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.core.v1alpha.CoreService/GetPnd", runtime.WithHTTPPathPattern("/v1/pnd/{pid}"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.core.CoreService/GetPnd", runtime.WithHTTPPathPattern("/pnd/{pid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -311,7 +311,7 @@ func RegisterCoreServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.core.v1alpha.CoreService/GetPndList", runtime.WithHTTPPathPattern("/v1/pnds"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.core.CoreService/GetPndList", runtime.WithHTTPPathPattern("/pnds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -331,7 +331,7 @@ func RegisterCoreServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.core.v1alpha.CoreService/CreatePnd", runtime.WithHTTPPathPattern("/v1/pnds"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.core.CoreService/CreatePnd", runtime.WithHTTPPathPattern("/pnds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -351,11 +351,11 @@ func RegisterCoreServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux
 }
 
 var (
-	pattern_CoreService_GetPnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "pnd", "pid"}, ""))
+	pattern_CoreService_GetPnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"pnd", "pid"}, ""))
 
-	pattern_CoreService_GetPndList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "pnds"}, ""))
+	pattern_CoreService_GetPndList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"pnds"}, ""))
 
-	pattern_CoreService_CreatePnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "pnds"}, ""))
+	pattern_CoreService_CreatePnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"pnds"}, ""))
 )
 
 var (
diff --git a/go/gosdn/core/core_grpc.pb.go b/go/gosdn/core/core_grpc.pb.go
index e20029a7076cb7e1bb35cfec600426109365539c..76dec4c0dd88f8c6b1eac9959626fb718184db7b 100644
--- a/go/gosdn/core/core_grpc.pb.go
+++ b/go/gosdn/core/core_grpc.pb.go
@@ -33,7 +33,7 @@ func NewCoreServiceClient(cc grpc.ClientConnInterface) CoreServiceClient {
 
 func (c *coreServiceClient) GetPnd(ctx context.Context, in *GetPndRequest, opts ...grpc.CallOption) (*GetPndResponse, error) {
 	out := new(GetPndResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.core.v1alpha.CoreService/GetPnd", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.core.CoreService/GetPnd", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -42,7 +42,7 @@ func (c *coreServiceClient) GetPnd(ctx context.Context, in *GetPndRequest, opts
 
 func (c *coreServiceClient) GetPndList(ctx context.Context, in *GetPndListRequest, opts ...grpc.CallOption) (*GetPndListResponse, error) {
 	out := new(GetPndListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.core.v1alpha.CoreService/GetPndList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.core.CoreService/GetPndList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -51,7 +51,7 @@ func (c *coreServiceClient) GetPndList(ctx context.Context, in *GetPndListReques
 
 func (c *coreServiceClient) CreatePnd(ctx context.Context, in *CreatePndRequest, opts ...grpc.CallOption) (*CreatePndResponse, error) {
 	out := new(CreatePndResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.core.v1alpha.CoreService/CreatePnd", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.core.CoreService/CreatePnd", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -104,7 +104,7 @@ func _CoreService_GetPnd_Handler(srv interface{}, ctx context.Context, dec func(
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.core.v1alpha.CoreService/GetPnd",
+		FullMethod: "/gosdn.core.CoreService/GetPnd",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(CoreServiceServer).GetPnd(ctx, req.(*GetPndRequest))
@@ -122,7 +122,7 @@ func _CoreService_GetPndList_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.core.v1alpha.CoreService/GetPndList",
+		FullMethod: "/gosdn.core.CoreService/GetPndList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(CoreServiceServer).GetPndList(ctx, req.(*GetPndListRequest))
@@ -140,7 +140,7 @@ func _CoreService_CreatePnd_Handler(srv interface{}, ctx context.Context, dec fu
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.core.v1alpha.CoreService/CreatePnd",
+		FullMethod: "/gosdn.core.CoreService/CreatePnd",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(CoreServiceServer).CreatePnd(ctx, req.(*CreatePndRequest))
@@ -152,7 +152,7 @@ func _CoreService_CreatePnd_Handler(srv interface{}, ctx context.Context, dec fu
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
 var CoreService_ServiceDesc = grpc.ServiceDesc{
-	ServiceName: "gosdn.core.v1alpha.CoreService",
+	ServiceName: "gosdn.core.CoreService",
 	HandlerType: (*CoreServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
diff --git a/go/gosdn/csbi/csbi.pb.go b/go/gosdn/csbi/csbi.pb.go
index 8e91086a4e8696c2ab9b13499f6cb7babf084d41..b8982894ca32d26937aab12ce02dae6f914d61e8 100644
--- a/go/gosdn/csbi/csbi.pb.go
+++ b/go/gosdn/csbi/csbi.pb.go
@@ -371,7 +371,7 @@ type Deployment struct {
 
 	Id    string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	Name  string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	State State  `protobuf:"varint,3,opt,name=state,proto3,enum=gosdn.csbi.v1alpha.State" json:"state,omitempty"`
+	State State  `protobuf:"varint,3,opt,name=state,proto3,enum=gosdn.csbi.State" json:"state,omitempty"`
 }
 
 func (x *Deployment) Reset() {
@@ -700,7 +700,7 @@ type DeleteResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64                 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    DeleteResponse_Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.csbi.v1alpha.DeleteResponse_Status" json:"status,omitempty"`
+	Status    DeleteResponse_Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.csbi.DeleteResponse_Status" json:"status,omitempty"`
 }
 
 func (x *DeleteResponse) Reset() {
@@ -753,119 +753,110 @@ var File_gosdn_csbi_csbi_proto protoreflect.FileDescriptor
 
 var file_gosdn_csbi_csbi_proto_rawDesc = []byte{
 	0x0a, 0x15, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63, 0x73, 0x62, 0x69, 0x2f, 0x63, 0x73, 0x62,
-	0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
-	0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x1f, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61,
-	0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4d, 0x0a, 0x03,
-	0x53, 0x79, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
-	0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x78, 0x0a, 0x03, 0x41,
-	0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x53, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70,
+	0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
+	0x73, 0x62, 0x69, 0x1a, 0x1f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73,
+	0x70, 0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4d, 0x0a, 0x03, 0x53, 0x79, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64,
+	0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72,
+	0x65, 0x73, 0x73, 0x22, 0x70, 0x0a, 0x03, 0x41, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73,
+	0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70,
 	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f,
 	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
 	0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
 	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
 	0x70, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03,
 	0x61, 0x6c, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x03, 0x64, 0x69, 0x64, 0x22, 0x6d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x52, 0x03, 0x64, 0x69, 0x64, 0x22, 0x65, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
 	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
 	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74,
-	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x70,
-	0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d,
-	0x65, 0x6e, 0x74, 0x73, 0x22, 0x61, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
-	0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
-	0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73,
-	0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
-	0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x53, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73,
-	0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
-	0x6f, 0x72, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e,
-	0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61,
-	0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x88, 0x01, 0x0a,
-	0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x53, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72,
-	0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74,
-	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f,
-	0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65,
-	0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x1f, 0x0a, 0x07, 0x50, 0x61, 0x79,
-	0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x3f, 0x0a, 0x0d, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x6d, 0x70, 0x12, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
+	0x63, 0x73, 0x62, 0x69, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52,
+	0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x59, 0x0a, 0x0a,
+	0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27,
+	0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
+	0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x7a, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74,
+	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
+	0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
+	0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x22, 0x80, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c,
+	0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
 	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64,
-	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x0e,
-	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c,
-	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x41, 0x0a, 0x06,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
-	0x41, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41,
-	0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
-	0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01,
-	0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
-	0x10, 0x02, 0x2a, 0x85, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11,
-	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
-	0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x4e,
-	0x4f, 0x55, 0x4e, 0x43, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54,
-	0x45, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x54, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41,
-	0x54, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a,
-	0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04,
-	0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d,
-	0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x05, 0x32, 0x8a, 0x03, 0x0a, 0x0b, 0x43,
-	0x73, 0x62, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x03, 0x47, 0x65,
-	0x74, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x22, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x21, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x17, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x2e, 0x53, 0x79, 0x6e, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
-	0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x63, 0x6b, 0x12,
-	0x56, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12,
-	0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69,
-	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x61,
-	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x30, 0x01, 0x42, 0x2a, 0x5a, 0x28, 0x63, 0x6f, 0x64, 0x65, 0x2e,
-	0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65,
-	0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63,
-	0x73, 0x62, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61,
+	0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
+	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x68, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79,
+	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d,
+	0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73,
+	0x22, 0x1f, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63,
+	0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e,
+	0x6b, 0x22, 0x3f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x64,
+	0x69, 0x64, 0x22, 0xac, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69,
+	0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
+	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x41,
+	0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54,
+	0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
+	0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12,
+	0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
+	0x02, 0x2a, 0x85, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53,
+	0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+	0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x4e, 0x4f,
+	0x55, 0x4e, 0x43, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45,
+	0x5f, 0x42, 0x55, 0x49, 0x4c, 0x54, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54,
+	0x45, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d,
+	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12,
+	0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x49,
+	0x53, 0x53, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x05, 0x32, 0xba, 0x02, 0x0a, 0x0b, 0x43, 0x73,
+	0x62, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x03, 0x47, 0x65, 0x74,
+	0x12, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x47, 0x65,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
+	0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x3f, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63,
+	0x73, 0x62, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
+	0x63, 0x73, 0x62, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x0f, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x53, 0x79, 0x6e, 0x1a, 0x0f, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x41, 0x63, 0x6b, 0x12, 0x46,
+	0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x1f,
+	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61,
+	0x74, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x13, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x63, 0x73, 0x62, 0x69, 0x2e, 0x50, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x30, 0x01, 0x42, 0x2a, 0x5a, 0x28, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66,
+	0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74,
+	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x63, 0x73,
+	0x62, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -883,39 +874,39 @@ func file_gosdn_csbi_csbi_proto_rawDescGZIP() []byte {
 var file_gosdn_csbi_csbi_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
 var file_gosdn_csbi_csbi_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
 var file_gosdn_csbi_csbi_proto_goTypes = []interface{}{
-	(State)(0),                        // 0: gosdn.csbi.v1alpha.State
-	(DeleteResponse_Status)(0),        // 1: gosdn.csbi.v1alpha.DeleteResponse.Status
-	(*Syn)(nil),                       // 2: gosdn.csbi.v1alpha.Syn
-	(*Ack)(nil),                       // 3: gosdn.csbi.v1alpha.Ack
-	(*GetRequest)(nil),                // 4: gosdn.csbi.v1alpha.GetRequest
-	(*GetResponse)(nil),               // 5: gosdn.csbi.v1alpha.GetResponse
-	(*Deployment)(nil),                // 6: gosdn.csbi.v1alpha.Deployment
-	(*CreateRequest)(nil),             // 7: gosdn.csbi.v1alpha.CreateRequest
-	(*CreatePluginRequest)(nil),       // 8: gosdn.csbi.v1alpha.CreatePluginRequest
-	(*CreateResponse)(nil),            // 9: gosdn.csbi.v1alpha.CreateResponse
-	(*Payload)(nil),                   // 10: gosdn.csbi.v1alpha.Payload
-	(*DeleteRequest)(nil),             // 11: gosdn.csbi.v1alpha.DeleteRequest
-	(*DeleteResponse)(nil),            // 12: gosdn.csbi.v1alpha.DeleteResponse
-	(*transport.TransportOption)(nil), // 13: gosdn.transport.v1alpha.TransportOption
+	(State)(0),                        // 0: gosdn.csbi.State
+	(DeleteResponse_Status)(0),        // 1: gosdn.csbi.DeleteResponse.Status
+	(*Syn)(nil),                       // 2: gosdn.csbi.Syn
+	(*Ack)(nil),                       // 3: gosdn.csbi.Ack
+	(*GetRequest)(nil),                // 4: gosdn.csbi.GetRequest
+	(*GetResponse)(nil),               // 5: gosdn.csbi.GetResponse
+	(*Deployment)(nil),                // 6: gosdn.csbi.Deployment
+	(*CreateRequest)(nil),             // 7: gosdn.csbi.CreateRequest
+	(*CreatePluginRequest)(nil),       // 8: gosdn.csbi.CreatePluginRequest
+	(*CreateResponse)(nil),            // 9: gosdn.csbi.CreateResponse
+	(*Payload)(nil),                   // 10: gosdn.csbi.Payload
+	(*DeleteRequest)(nil),             // 11: gosdn.csbi.DeleteRequest
+	(*DeleteResponse)(nil),            // 12: gosdn.csbi.DeleteResponse
+	(*transport.TransportOption)(nil), // 13: gosdn.transport.TransportOption
 }
 var file_gosdn_csbi_csbi_proto_depIdxs = []int32{
-	13, // 0: gosdn.csbi.v1alpha.Ack.transport_option:type_name -> gosdn.transport.v1alpha.TransportOption
-	6,  // 1: gosdn.csbi.v1alpha.GetResponse.deployments:type_name -> gosdn.csbi.v1alpha.Deployment
-	0,  // 2: gosdn.csbi.v1alpha.Deployment.state:type_name -> gosdn.csbi.v1alpha.State
-	13, // 3: gosdn.csbi.v1alpha.CreateRequest.transport_option:type_name -> gosdn.transport.v1alpha.TransportOption
-	13, // 4: gosdn.csbi.v1alpha.CreatePluginRequest.transport_option:type_name -> gosdn.transport.v1alpha.TransportOption
-	6,  // 5: gosdn.csbi.v1alpha.CreateResponse.deployments:type_name -> gosdn.csbi.v1alpha.Deployment
-	1,  // 6: gosdn.csbi.v1alpha.DeleteResponse.status:type_name -> gosdn.csbi.v1alpha.DeleteResponse.Status
-	4,  // 7: gosdn.csbi.v1alpha.CsbiService.Get:input_type -> gosdn.csbi.v1alpha.GetRequest
-	7,  // 8: gosdn.csbi.v1alpha.CsbiService.Create:input_type -> gosdn.csbi.v1alpha.CreateRequest
-	11, // 9: gosdn.csbi.v1alpha.CsbiService.Delete:input_type -> gosdn.csbi.v1alpha.DeleteRequest
-	2,  // 10: gosdn.csbi.v1alpha.CsbiService.Hello:input_type -> gosdn.csbi.v1alpha.Syn
-	8,  // 11: gosdn.csbi.v1alpha.CsbiService.CreatePlugin:input_type -> gosdn.csbi.v1alpha.CreatePluginRequest
-	5,  // 12: gosdn.csbi.v1alpha.CsbiService.Get:output_type -> gosdn.csbi.v1alpha.GetResponse
-	9,  // 13: gosdn.csbi.v1alpha.CsbiService.Create:output_type -> gosdn.csbi.v1alpha.CreateResponse
-	12, // 14: gosdn.csbi.v1alpha.CsbiService.Delete:output_type -> gosdn.csbi.v1alpha.DeleteResponse
-	3,  // 15: gosdn.csbi.v1alpha.CsbiService.Hello:output_type -> gosdn.csbi.v1alpha.Ack
-	10, // 16: gosdn.csbi.v1alpha.CsbiService.CreatePlugin:output_type -> gosdn.csbi.v1alpha.Payload
+	13, // 0: gosdn.csbi.Ack.transport_option:type_name -> gosdn.transport.TransportOption
+	6,  // 1: gosdn.csbi.GetResponse.deployments:type_name -> gosdn.csbi.Deployment
+	0,  // 2: gosdn.csbi.Deployment.state:type_name -> gosdn.csbi.State
+	13, // 3: gosdn.csbi.CreateRequest.transport_option:type_name -> gosdn.transport.TransportOption
+	13, // 4: gosdn.csbi.CreatePluginRequest.transport_option:type_name -> gosdn.transport.TransportOption
+	6,  // 5: gosdn.csbi.CreateResponse.deployments:type_name -> gosdn.csbi.Deployment
+	1,  // 6: gosdn.csbi.DeleteResponse.status:type_name -> gosdn.csbi.DeleteResponse.Status
+	4,  // 7: gosdn.csbi.CsbiService.Get:input_type -> gosdn.csbi.GetRequest
+	7,  // 8: gosdn.csbi.CsbiService.Create:input_type -> gosdn.csbi.CreateRequest
+	11, // 9: gosdn.csbi.CsbiService.Delete:input_type -> gosdn.csbi.DeleteRequest
+	2,  // 10: gosdn.csbi.CsbiService.Hello:input_type -> gosdn.csbi.Syn
+	8,  // 11: gosdn.csbi.CsbiService.CreatePlugin:input_type -> gosdn.csbi.CreatePluginRequest
+	5,  // 12: gosdn.csbi.CsbiService.Get:output_type -> gosdn.csbi.GetResponse
+	9,  // 13: gosdn.csbi.CsbiService.Create:output_type -> gosdn.csbi.CreateResponse
+	12, // 14: gosdn.csbi.CsbiService.Delete:output_type -> gosdn.csbi.DeleteResponse
+	3,  // 15: gosdn.csbi.CsbiService.Hello:output_type -> gosdn.csbi.Ack
+	10, // 16: gosdn.csbi.CsbiService.CreatePlugin:output_type -> gosdn.csbi.Payload
 	12, // [12:17] is the sub-list for method output_type
 	7,  // [7:12] is the sub-list for method input_type
 	7,  // [7:7] is the sub-list for extension type_name
diff --git a/go/gosdn/csbi/csbi_grpc.pb.go b/go/gosdn/csbi/csbi_grpc.pb.go
index 104bb3b4322e480ec954400946e86237a6d128a8..f932112a5ccf4a5e0bc6e414e2455e4af40cbf61 100644
--- a/go/gosdn/csbi/csbi_grpc.pb.go
+++ b/go/gosdn/csbi/csbi_grpc.pb.go
@@ -35,7 +35,7 @@ func NewCsbiServiceClient(cc grpc.ClientConnInterface) CsbiServiceClient {
 
 func (c *csbiServiceClient) Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error) {
 	out := new(GetResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.csbi.v1alpha.CsbiService/Get", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.csbi.CsbiService/Get", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -44,7 +44,7 @@ func (c *csbiServiceClient) Get(ctx context.Context, in *GetRequest, opts ...grp
 
 func (c *csbiServiceClient) Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) {
 	out := new(CreateResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.csbi.v1alpha.CsbiService/Create", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.csbi.CsbiService/Create", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -53,7 +53,7 @@ func (c *csbiServiceClient) Create(ctx context.Context, in *CreateRequest, opts
 
 func (c *csbiServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) {
 	out := new(DeleteResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.csbi.v1alpha.CsbiService/Delete", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.csbi.CsbiService/Delete", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -62,7 +62,7 @@ func (c *csbiServiceClient) Delete(ctx context.Context, in *DeleteRequest, opts
 
 func (c *csbiServiceClient) Hello(ctx context.Context, in *Syn, opts ...grpc.CallOption) (*Ack, error) {
 	out := new(Ack)
-	err := c.cc.Invoke(ctx, "/gosdn.csbi.v1alpha.CsbiService/Hello", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.csbi.CsbiService/Hello", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -70,7 +70,7 @@ func (c *csbiServiceClient) Hello(ctx context.Context, in *Syn, opts ...grpc.Cal
 }
 
 func (c *csbiServiceClient) CreatePlugin(ctx context.Context, in *CreatePluginRequest, opts ...grpc.CallOption) (CsbiService_CreatePluginClient, error) {
-	stream, err := c.cc.NewStream(ctx, &CsbiService_ServiceDesc.Streams[0], "/gosdn.csbi.v1alpha.CsbiService/CreatePlugin", opts...)
+	stream, err := c.cc.NewStream(ctx, &CsbiService_ServiceDesc.Streams[0], "/gosdn.csbi.CsbiService/CreatePlugin", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -155,7 +155,7 @@ func _CsbiService_Get_Handler(srv interface{}, ctx context.Context, dec func(int
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.csbi.v1alpha.CsbiService/Get",
+		FullMethod: "/gosdn.csbi.CsbiService/Get",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(CsbiServiceServer).Get(ctx, req.(*GetRequest))
@@ -173,7 +173,7 @@ func _CsbiService_Create_Handler(srv interface{}, ctx context.Context, dec func(
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.csbi.v1alpha.CsbiService/Create",
+		FullMethod: "/gosdn.csbi.CsbiService/Create",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(CsbiServiceServer).Create(ctx, req.(*CreateRequest))
@@ -191,7 +191,7 @@ func _CsbiService_Delete_Handler(srv interface{}, ctx context.Context, dec func(
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.csbi.v1alpha.CsbiService/Delete",
+		FullMethod: "/gosdn.csbi.CsbiService/Delete",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(CsbiServiceServer).Delete(ctx, req.(*DeleteRequest))
@@ -209,7 +209,7 @@ func _CsbiService_Hello_Handler(srv interface{}, ctx context.Context, dec func(i
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.csbi.v1alpha.CsbiService/Hello",
+		FullMethod: "/gosdn.csbi.CsbiService/Hello",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(CsbiServiceServer).Hello(ctx, req.(*Syn))
@@ -242,7 +242,7 @@ func (x *csbiServiceCreatePluginServer) Send(m *Payload) error {
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
 var CsbiService_ServiceDesc = grpc.ServiceDesc{
-	ServiceName: "gosdn.csbi.v1alpha.CsbiService",
+	ServiceName: "gosdn.csbi.CsbiService",
 	HandlerType: (*CsbiServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
diff --git a/go/gosdn/pnd/pnd.pb.go b/go/gosdn/pnd/pnd.pb.go
index acfbca1edc7241f0beebad8cd9defbfb5334e9b1..a6c70439288e5aa48ef77c7d4be07a2140c822a1 100644
--- a/go/gosdn/pnd/pnd.pb.go
+++ b/go/gosdn/pnd/pnd.pb.go
@@ -26,58 +26,58 @@ const (
 	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
 )
 
-type Change_State int32
+type ChangeState int32
 
 const (
-	Change_State_STATE_UNSPECIFIED  Change_State = 0
-	Change_State_STATE_PENDING      Change_State = 1
-	Change_State_STATE_COMMITTED    Change_State = 2
-	Change_State_STATE_CONFIRMED    Change_State = 3
-	Change_State_STATE_INCONSISTENT Change_State = 4
+	ChangeState_CHANGE_STATE_UNSPECIFIED  ChangeState = 0
+	ChangeState_CHANGE_STATE_PENDING      ChangeState = 1
+	ChangeState_CHANGE_STATE_COMMITTED    ChangeState = 2
+	ChangeState_CHANGE_STATE_CONFIRMED    ChangeState = 3
+	ChangeState_CHANGE_STATE_INCONSISTENT ChangeState = 4
 )
 
-// Enum value maps for Change_State.
+// Enum value maps for ChangeState.
 var (
-	Change_State_name = map[int32]string{
-		0: "STATE_UNSPECIFIED",
-		1: "STATE_PENDING",
-		2: "STATE_COMMITTED",
-		3: "STATE_CONFIRMED",
-		4: "STATE_INCONSISTENT",
-	}
-	Change_State_value = map[string]int32{
-		"STATE_UNSPECIFIED":  0,
-		"STATE_PENDING":      1,
-		"STATE_COMMITTED":    2,
-		"STATE_CONFIRMED":    3,
-		"STATE_INCONSISTENT": 4,
+	ChangeState_name = map[int32]string{
+		0: "CHANGE_STATE_UNSPECIFIED",
+		1: "CHANGE_STATE_PENDING",
+		2: "CHANGE_STATE_COMMITTED",
+		3: "CHANGE_STATE_CONFIRMED",
+		4: "CHANGE_STATE_INCONSISTENT",
+	}
+	ChangeState_value = map[string]int32{
+		"CHANGE_STATE_UNSPECIFIED":  0,
+		"CHANGE_STATE_PENDING":      1,
+		"CHANGE_STATE_COMMITTED":    2,
+		"CHANGE_STATE_CONFIRMED":    3,
+		"CHANGE_STATE_INCONSISTENT": 4,
 	}
 )
 
-func (x Change_State) Enum() *Change_State {
-	p := new(Change_State)
+func (x ChangeState) Enum() *ChangeState {
+	p := new(ChangeState)
 	*p = x
 	return p
 }
 
-func (x Change_State) String() string {
+func (x ChangeState) String() string {
 	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
-func (Change_State) Descriptor() protoreflect.EnumDescriptor {
+func (ChangeState) Descriptor() protoreflect.EnumDescriptor {
 	return file_gosdn_pnd_pnd_proto_enumTypes[0].Descriptor()
 }
 
-func (Change_State) Type() protoreflect.EnumType {
+func (ChangeState) Type() protoreflect.EnumType {
 	return &file_gosdn_pnd_pnd_proto_enumTypes[0]
 }
 
-func (x Change_State) Number() protoreflect.EnumNumber {
+func (x ChangeState) Number() protoreflect.EnumNumber {
 	return protoreflect.EnumNumber(x)
 }
 
-// Deprecated: Use Change_State.Descriptor instead.
-func (Change_State) EnumDescriptor() ([]byte, []int) {
+// Deprecated: Use ChangeState.Descriptor instead.
+func (ChangeState) EnumDescriptor() ([]byte, []int) {
 	return file_gosdn_pnd_pnd_proto_rawDescGZIP(), []int{0}
 }
 
@@ -1253,9 +1253,9 @@ type Change struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Id    string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Age   int64        `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty"`
-	State Change_State `protobuf:"varint,3,opt,name=state,proto3,enum=gosdn.pnd.v1alpha.Change_State" json:"state,omitempty"`
+	Id    string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Age   int64       `protobuf:"varint,2,opt,name=age,proto3" json:"age,omitempty"`
+	State ChangeState `protobuf:"varint,3,opt,name=state,proto3,enum=gosdn.pnd.ChangeState" json:"state,omitempty"`
 }
 
 func (x *Change) Reset() {
@@ -1304,11 +1304,11 @@ func (x *Change) GetAge() int64 {
 	return 0
 }
 
-func (x *Change) GetState() Change_State {
+func (x *Change) GetState() ChangeState {
 	if x != nil {
 		return x.State
 	}
-	return Change_State_STATE_UNSPECIFIED
+	return ChangeState_CHANGE_STATE_UNSPECIFIED
 }
 
 type SetOndListRequest struct {
@@ -1686,7 +1686,7 @@ type SetChange struct {
 	unknownFields protoimpl.UnknownFields
 
 	Cuid string    `protobuf:"bytes,1,opt,name=cuid,proto3" json:"cuid,omitempty"`
-	Op   Operation `protobuf:"varint,2,opt,name=op,proto3,enum=gosdn.pnd.v1alpha.Operation" json:"op,omitempty"`
+	Op   Operation `protobuf:"varint,2,opt,name=op,proto3,enum=gosdn.pnd.Operation" json:"op,omitempty"`
 }
 
 func (x *SetChange) Reset() {
@@ -1743,7 +1743,7 @@ type ChangeRequest struct {
 
 	Path  string       `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
 	Value string       `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	ApiOp ApiOperation `protobuf:"varint,3,opt,name=api_op,json=apiOp,proto3,enum=gosdn.pnd.v1alpha.ApiOperation" json:"api_op,omitempty"`
+	ApiOp ApiOperation `protobuf:"varint,3,opt,name=api_op,json=apiOp,proto3,enum=gosdn.pnd.ApiOperation" json:"api_op,omitempty"`
 }
 
 func (x *ChangeRequest) Reset() {
@@ -1805,7 +1805,7 @@ type SetResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 }
 
 func (x *SetResponse) Reset() {
@@ -1860,7 +1860,7 @@ type SetOndListResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
 }
 
@@ -1923,7 +1923,7 @@ type SetChangeListResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
 }
 
@@ -1986,7 +1986,7 @@ type SetChangeResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 }
 
 func (x *SetChangeResponse) Reset() {
@@ -2041,7 +2041,7 @@ type SetSbiListResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
 }
 
@@ -2104,7 +2104,7 @@ type SetPathListResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64          `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status         `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 	Responses []*SetResponse `protobuf:"bytes,3,rep,name=responses,proto3" json:"responses,omitempty"`
 }
 
@@ -2285,7 +2285,7 @@ type DeletePndResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 }
 
 func (x *DeletePndResponse) Reset() {
@@ -2340,7 +2340,7 @@ type DeleteOndResponse struct {
 	unknownFields protoimpl.UnknownFields
 
 	Timestamp int64  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch.
-	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.v1alpha.Status" json:"status,omitempty"`
+	Status    Status `protobuf:"varint,2,opt,name=status,proto3,enum=gosdn.pnd.Status" json:"status,omitempty"`
 }
 
 func (x *DeleteOndResponse) Reset() {
@@ -2393,439 +2393,407 @@ var File_gosdn_pnd_pnd_proto protoreflect.FileDescriptor
 
 var file_gosdn_pnd_pnd_proto_rawDesc = []byte{
 	0x0a, 0x13, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x2f, 0x70, 0x6e, 0x64, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
-	0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
-	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f,
-	0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f,
-	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e,
-	0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x73, 0x6f,
-	0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61,
-	0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e,
-	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x43,
-	0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x70, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x64, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
+	0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
+	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65,
+	0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
+	0x6f, 0x72, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68,
+	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67,
+	0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x43, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64,
 	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
 	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
 	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64,
 	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x0d, 0x47,
-	0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
+	0x65, 0x74, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
 	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69,
-	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
-	0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x46,
-	0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
-	0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
-	0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x66,
-	0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10,
-	0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64,
-	0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xae, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4f, 0x6e,
-	0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
-	0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52,
-	0x03, 0x70, 0x6e, 0x64, 0x12, 0x41, 0x0a, 0x03, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74,
-	0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x69,
-	0x63, 0x65, 0x52, 0x03, 0x6f, 0x6e, 0x64, 0x22, 0xb2, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f,
-	0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c,
+	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
+	0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x43,
+	0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x70, 0x69, 0x64, 0x22, 0x51, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x03, 0x73, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x46, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
 	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x03,
-	0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72,
+	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03,
+	0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x56,
+	0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x63, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x66, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74,
+	0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03,
+	0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x9e,
+	0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
+	0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
+	0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52,
+	0x03, 0x70, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x03, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x4f, 0x72,
+	0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+	0x6b, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x03, 0x6f, 0x6e, 0x64, 0x22,
+	0xa2, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72,
 	0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f,
-	0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x41, 0x0a, 0x03, 0x6f, 0x6e, 0x64,
-	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65,
-	0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e,
-	0x67, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x03, 0x6f, 0x6e, 0x64, 0x22, 0xac, 0x01, 0x0a,
-	0x0e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a,
-	0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50,
+	0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x03, 0x6f, 0x6e, 0x64,
+	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
+	0x6e, 0x64, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4e,
+	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52,
+	0x03, 0x6f, 0x6e, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50,
 	0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44,
-	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3f, 0x0a, 0x03, 0x73, 0x62,
-	0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74,
-	0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0xb0, 0x01, 0x0a, 0x12,
-	0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x3b, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f,
-	0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3f, 0x0a,
-	0x03, 0x73, 0x62, 0x69, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
-	0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0x98,
-	0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x3b, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f,
+	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62,
+	0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
+	0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68,
+	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03,
+	0x73, 0x62, 0x69, 0x22, 0xa0, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69,
+	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
+	0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f,
+	0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x37, 0x0a,
+	0x03, 0x73, 0x62, 0x69, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f,
+	0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63,
+	0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0x90, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61,
+	0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
+	0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f,
 	0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x2a, 0x0a,
 	0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
 	0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x11, 0x47, 0x65,
+	0x6e, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x47, 0x65,
 	0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
 	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a,
-	0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50,
-	0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44,
-	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x68,
-	0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43,
-	0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xa5, 0x01,
+	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a,
+	0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c,
+	0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70,
+	0x6e, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x95, 0x01,
 	0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
 	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
 	0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c,
-	0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70,
-	0x6e, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50,
+	0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44,
+	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63,
 	0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x16, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
 	0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12,
 	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
 	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
 	0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
 	0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x1c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x01, 0x0a, 0x1c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73,
 	0x74, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67,
 	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
 	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
 	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x64, 0x65,
 	0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d,
 	0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06,
-	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3f, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74,
-	0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53,
-	0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61,
-	0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22, 0x61, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x67,
-	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
-	0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
-	0x61, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x53, 0x74,
-	0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x70, 0x0a, 0x11, 0x53, 0x65,
-	0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2b, 0x0a,
-	0x03, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53,
-	0x65, 0x74, 0x4f, 0x6e, 0x64, 0x52, 0x03, 0x6f, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69,
-	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x70, 0x0a, 0x11,
-	0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
-	0x2b, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x03, 0x73, 0x62, 0x69, 0x12, 0x10, 0x0a, 0x03,
-	0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x7c,
-	0x0a, 0x14, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69,
-	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a,
-	0x12, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x68,
-	0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x63, 0x68, 0x61,
-	0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69,
-	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
-	0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xd9,
-	0x01, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64,
-	0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72,
-	0x65, 0x73, 0x73, 0x12, 0x3f, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f,
-	0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x74,
-	0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52,
-	0x03, 0x73, 0x62, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e,
-	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63,
-	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
-	0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72,
-	0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70,
-	0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73,
-	0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x08, 0x0a, 0x06, 0x53, 0x65,
-	0x74, 0x53, 0x62, 0x69, 0x22, 0x4d, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67,
-	0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x02, 0x6f, 0x70, 0x22, 0x71, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36,
-	0x0a, 0x06, 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f,
-	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x2e, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x05, 0x61, 0x70, 0x69, 0x4f, 0x70, 0x22, 0x5e, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74,
+	0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e,
+	0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x22,
+	0x58, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x73,
+	0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61,
+	0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x11, 0x53, 0x65, 0x74,
+	0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
+	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x03,
+	0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x52, 0x03, 0x6f, 0x6e,
+	0x64, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x70, 0x69, 0x64, 0x22, 0x68, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
+	0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x03, 0x73, 0x62, 0x69, 0x12, 0x10, 0x0a, 0x03, 0x70,
+	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x74, 0x0a,
+	0x14, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
 	0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
-	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x4f, 0x6e,
-	0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a,
+	0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
+	0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x70, 0x69, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c,
+	0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x18, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70,
+	0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xc9, 0x01,
+	0x0a, 0x06, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72,
+	0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65,
+	0x73, 0x73, 0x12, 0x37, 0x0a, 0x03, 0x73, 0x62, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75,
+	0x6e, 0x64, 0x2e, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74,
+	0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x03, 0x73, 0x62, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x64,
+	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x10,
+	0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74,
+	0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
+	0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
+	0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x08, 0x0a, 0x06, 0x53, 0x65, 0x74,
+	0x53, 0x62, 0x69, 0x22, 0x45, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+	0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x63, 0x75, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x14, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x4f, 0x70, 0x65,
+	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x69, 0x0a, 0x0d, 0x43, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70,
+	0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
+	0x64, 0x2e, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05,
+	0x61, 0x70, 0x69, 0x4f, 0x70, 0x22, 0x56, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x93, 0x01,
+	0x0a, 0x12, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a,
+	0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a,
 	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x73,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f,
-	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c,
-	0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0xa6, 0x01, 0x0a,
-	0x15, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
+	0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x11,
+	0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
+	0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x53,
+	0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
+	0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73,
+	0x22, 0x94, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
+	0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x34, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
+	0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x10, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a,
+	0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12,
+	0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69,
+	0x64, 0x22, 0x5c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65,
 	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
 	0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
-	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53,
-	0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x12,
-	0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73,
-	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x73, 0x22, 0xa4, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
-	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69,
-	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x10,
-	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10,
-	0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64,
-	0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64,
-	0x69, 0x64, 0x22, 0x64, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
-	0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
-	0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x64, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a,
-	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x73,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f,
-	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x7a,
-	0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15,
-	0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
-	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50,
-	0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54,
-	0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13, 0x0a,
-	0x0f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44,
-	0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f,
-	0x4e, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x2a, 0x69, 0x0a, 0x09, 0x4f, 0x70,
-	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41,
-	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
-	0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
-	0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52,
-	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x15,
-	0x0a, 0x11, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46,
-	0x49, 0x52, 0x4d, 0x10, 0x03, 0x2a, 0x7c, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45,
+	0x74, 0x61, 0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
+	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
+	0x5c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x9c, 0x01,
+	0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a,
+	0x18, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e,
+	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43,
+	0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44,
+	0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f,
+	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10,
+	0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54,
+	0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a,
+	0x19, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e,
+	0x43, 0x4f, 0x4e, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x2a, 0x69, 0x0a, 0x09,
+	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45,
 	0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
-	0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52,
-	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19,
-	0x0a, 0x15, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
-	0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49,
-	0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54,
-	0x45, 0x10, 0x03, 0x2a, 0x41, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a,
-	0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
-	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
-	0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45,
-	0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x32, 0xda, 0x0c, 0x0a, 0x0a, 0x50, 0x6e, 0x64, 0x53, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c,
-	0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69,
-	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65,
-	0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e,
-	0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x6f, 0x0a,
-	0x06, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x12, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x4f,
-	0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65,
-	0x74, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3,
-	0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b,
-	0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x12, 0x79,
-	0x0a, 0x0a, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x67,
-	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x2e, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02,
-	0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b,
-	0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x76, 0x0a, 0x0a, 0x47, 0x65, 0x74,
-	0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53,
-	0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76,
-	0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69,
-	0x73, 0x12, 0x70, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x12, 0x20, 0x2e, 0x67, 0x6f,
-	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
-	0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e,
-	0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73, 0x2f, 0x7b, 0x73,
-	0x69, 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73,
-	0x74, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e,
-	0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x53,
-	0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e,
-	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x70,
-	0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73, 0x12, 0x82,
-	0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74,
-	0x12, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69,
-	0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65,
-	0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31,
-	0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
-	0x12, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
-	0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61,
-	0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4,
-	0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70,
-	0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x75, 0x69,
-	0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
-	0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a,
-	0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69,
-	0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x07, 0x47,
-	0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
-	0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61,
-	0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x73, 0x64,
-	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65,
-	0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82,
-	0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f,
-	0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d,
-	0x2f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x12, 0x88, 0x01,
-	0x0a, 0x0b, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68,
-	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3,
-	0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e, 0x64,
-	0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x64, 0x69,
-	0x64, 0x7d, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x6e, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x50, 0x6e, 0x64, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
-	0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x2a, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e,
-	0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x4f, 0x6e, 0x64, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
-	0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x4f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6e,
-	0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x64,
-	0x69, 0x64, 0x7d, 0x42, 0xa8, 0x02, 0x5a, 0x27, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69,
-	0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61,
-	0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x92,
-	0x41, 0xfb, 0x01, 0x12, 0xf8, 0x01, 0x0a, 0x10, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x4e, 0x6f,
-	0x72, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x6f, 0x6c, 0x20, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66,
-	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x47, 0x6f, 0x20,
-	0x63, 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x53,
-	0x44, 0x4e, 0x20, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x49, 0x6e,
-	0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x22, 0x3e, 0x0a, 0x18, 0x67, 0x6f, 0x53, 0x44, 0x4e,
-	0x20, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x12, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64,
-	0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61,
-	0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2a, 0x50, 0x0a, 0x14, 0x42, 0x53, 0x44, 0x20, 0x33,
-	0x2d, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12,
-	0x38, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62,
-	0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f,
-	0x61, 0x70, 0x69, 0x2f, 0x2d, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65,
-	0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f,
+	0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50,
+	0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x02,
+	0x12, 0x15, 0x0a, 0x11, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f,
+	0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x03, 0x2a, 0x7c, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4f, 0x70,
+	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x4f,
+	0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50,
+	0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01,
+	0x12, 0x19, 0x0a, 0x15, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f,
+	0x4e, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x41,
+	0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c,
+	0x45, 0x54, 0x45, 0x10, 0x03, 0x2a, 0x41, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
+	0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
+	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x41, 0x54, 0x55,
+	0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
+	0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x32, 0xdf, 0x0a, 0x0a, 0x0a, 0x50, 0x6e, 0x64,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4f, 0x6e,
+	0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
+	0x64, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e,
+	0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x70, 0x6e, 0x64,
+	0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x5c, 0x0a, 0x06,
+	0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x12, 0x18, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
+	0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x19, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74,
+	0x4f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4,
+	0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d,
+	0x2f, 0x6f, 0x6e, 0x64, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x12, 0x66, 0x0a, 0x0a, 0x53, 0x65,
+	0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
+	0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70,
+	0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a,
+	0x22, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e,
+	0x64, 0x73, 0x12, 0x63, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74,
+	0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74,
+	0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
+	0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62,
+	0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82,
+	0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69,
+	0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73, 0x12, 0x5d, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x62,
+	0x69, 0x12, 0x18, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65,
+	0x74, 0x53, 0x62, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x6f,
+	0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x62, 0x69, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16,
+	0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73,
+	0x2f, 0x7b, 0x73, 0x69, 0x64, 0x7d, 0x12, 0x66, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69,
+	0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64,
+	0x2e, 0x53, 0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53,
+	0x65, 0x74, 0x53, 0x62, 0x69, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x70,
+	0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x62, 0x69, 0x73, 0x12, 0x6f,
+	0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12,
+	0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43,
+	0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74,
+	0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x70, 0x6e, 0x64,
+	0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12,
+	0x6a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1b, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64,
+	0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12,
+	0x1a, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x75, 0x69, 0x64, 0x7d, 0x12, 0x72, 0x0a, 0x0d, 0x53,
+	0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
+	0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+	0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x70, 0x6e, 0x64,
+	0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12,
+	0x6d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e,
+	0x64, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x70, 0x6e, 0x64, 0x73,
+	0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x64,
+	0x7d, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x12, 0x75,
+	0x0a, 0x0b, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x2e,
+	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74,
+	0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3,
+	0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b,
+	0x70, 0x69, 0x64, 0x7d, 0x2f, 0x6f, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x2f,
+	0x70, 0x61, 0x74, 0x68, 0x73, 0x12, 0x5b, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50,
+	0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x50, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82,
+	0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x2a, 0x0b, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69,
+	0x64, 0x7d, 0x12, 0x66, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x64, 0x12,
+	0x1b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x4f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f,
+	0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93,
+	0x02, 0x18, 0x2a, 0x16, 0x2f, 0x70, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x69, 0x64, 0x7d, 0x2f,
+	0x6f, 0x6e, 0x64, 0x73, 0x2f, 0x7b, 0x64, 0x69, 0x64, 0x7d, 0x42, 0xa8, 0x02, 0x5a, 0x27, 0x63,
+	0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f,
+	0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2f, 0x70, 0x6e, 0x64, 0x92, 0x41, 0xfb, 0x01, 0x12, 0xf8, 0x01, 0x0a, 0x10, 0x67,
+	0x6f, 0x53, 0x44, 0x4e, 0x20, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12,
+	0x4d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72,
+	0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20,
+	0x61, 0x6e, 0x64, 0x20, 0x47, 0x6f, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20,
+	0x74, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x6e, 0x6f, 0x72, 0x74, 0x68, 0x62,
+	0x6f, 0x75, 0x6e, 0x64, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x22, 0x3e,
+	0x0a, 0x18, 0x67, 0x6f, 0x53, 0x44, 0x4e, 0x20, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x62, 0x6f, 0x75,
+	0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x22, 0x68, 0x74, 0x74, 0x70,
+	0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64,
+	0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2a, 0x50,
+	0x0a, 0x14, 0x42, 0x53, 0x44, 0x20, 0x33, 0x2d, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x20, 0x4c,
+	0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
+	0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65,
+	0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x2d, 0x2f, 0x62, 0x6c, 0x6f,
+	0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45,
+	0x32, 0x03, 0x30, 0x2e, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -2843,113 +2811,113 @@ func file_gosdn_pnd_pnd_proto_rawDescGZIP() []byte {
 var file_gosdn_pnd_pnd_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
 var file_gosdn_pnd_pnd_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
 var file_gosdn_pnd_pnd_proto_goTypes = []interface{}{
-	(Change_State)(0),                      // 0: gosdn.pnd.v1alpha.Change_State
-	(Operation)(0),                         // 1: gosdn.pnd.v1alpha.Operation
-	(ApiOperation)(0),                      // 2: gosdn.pnd.v1alpha.ApiOperation
-	(Status)(0),                            // 3: gosdn.pnd.v1alpha.Status
-	(*GetOndListRequest)(nil),              // 4: gosdn.pnd.v1alpha.GetOndListRequest
-	(*GetOndRequest)(nil),                  // 5: gosdn.pnd.v1alpha.GetOndRequest
-	(*GetSbiListRequest)(nil),              // 6: gosdn.pnd.v1alpha.GetSbiListRequest
-	(*GetSbiRequest)(nil),                  // 7: gosdn.pnd.v1alpha.GetSbiRequest
-	(*GetChangeListRequest)(nil),           // 8: gosdn.pnd.v1alpha.GetChangeListRequest
-	(*GetChangeRequest)(nil),               // 9: gosdn.pnd.v1alpha.GetChangeRequest
-	(*GetPathRequest)(nil),                 // 10: gosdn.pnd.v1alpha.GetPathRequest
-	(*GetOndResponse)(nil),                 // 11: gosdn.pnd.v1alpha.GetOndResponse
-	(*GetOndListResponse)(nil),             // 12: gosdn.pnd.v1alpha.GetOndListResponse
-	(*GetSbiResponse)(nil),                 // 13: gosdn.pnd.v1alpha.GetSbiResponse
-	(*GetSbiListResponse)(nil),             // 14: gosdn.pnd.v1alpha.GetSbiListResponse
-	(*GetPathResponse)(nil),                // 15: gosdn.pnd.v1alpha.GetPathResponse
-	(*GetChangeResponse)(nil),              // 16: gosdn.pnd.v1alpha.GetChangeResponse
-	(*GetChangeListResponse)(nil),          // 17: gosdn.pnd.v1alpha.GetChangeListResponse
-	(*PrincipalNetworkDomain)(nil),         // 18: gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	(*OrchestratedNetworkingDevice)(nil),   // 19: gosdn.pnd.v1alpha.OrchestratedNetworkingDevice
-	(*Change)(nil),                         // 20: gosdn.pnd.v1alpha.Change
-	(*SetOndListRequest)(nil),              // 21: gosdn.pnd.v1alpha.SetOndListRequest
-	(*SetSbiListRequest)(nil),              // 22: gosdn.pnd.v1alpha.SetSbiListRequest
-	(*SetChangeListRequest)(nil),           // 23: gosdn.pnd.v1alpha.SetChangeListRequest
-	(*SetPathListRequest)(nil),             // 24: gosdn.pnd.v1alpha.SetPathListRequest
-	(*SetOnd)(nil),                         // 25: gosdn.pnd.v1alpha.SetOnd
-	(*SetSbi)(nil),                         // 26: gosdn.pnd.v1alpha.SetSbi
-	(*SetChange)(nil),                      // 27: gosdn.pnd.v1alpha.SetChange
-	(*ChangeRequest)(nil),                  // 28: gosdn.pnd.v1alpha.ChangeRequest
-	(*SetResponse)(nil),                    // 29: gosdn.pnd.v1alpha.SetResponse
-	(*SetOndListResponse)(nil),             // 30: gosdn.pnd.v1alpha.SetOndListResponse
-	(*SetChangeListResponse)(nil),          // 31: gosdn.pnd.v1alpha.SetChangeListResponse
-	(*SetChangeResponse)(nil),              // 32: gosdn.pnd.v1alpha.SetChangeResponse
-	(*SetSbiListResponse)(nil),             // 33: gosdn.pnd.v1alpha.SetSbiListResponse
-	(*SetPathListResponse)(nil),            // 34: gosdn.pnd.v1alpha.SetPathListResponse
-	(*DeletePndRequest)(nil),               // 35: gosdn.pnd.v1alpha.DeletePndRequest
-	(*DeleteOndRequest)(nil),               // 36: gosdn.pnd.v1alpha.DeleteOndRequest
-	(*DeletePndResponse)(nil),              // 37: gosdn.pnd.v1alpha.DeletePndResponse
-	(*DeleteOndResponse)(nil),              // 38: gosdn.pnd.v1alpha.DeleteOndResponse
-	(*southbound.SouthboundInterface)(nil), // 39: gosdn.southbound.v1alpha.SouthboundInterface
+	(ChangeState)(0),                       // 0: gosdn.pnd.ChangeState
+	(Operation)(0),                         // 1: gosdn.pnd.Operation
+	(ApiOperation)(0),                      // 2: gosdn.pnd.ApiOperation
+	(Status)(0),                            // 3: gosdn.pnd.Status
+	(*GetOndListRequest)(nil),              // 4: gosdn.pnd.GetOndListRequest
+	(*GetOndRequest)(nil),                  // 5: gosdn.pnd.GetOndRequest
+	(*GetSbiListRequest)(nil),              // 6: gosdn.pnd.GetSbiListRequest
+	(*GetSbiRequest)(nil),                  // 7: gosdn.pnd.GetSbiRequest
+	(*GetChangeListRequest)(nil),           // 8: gosdn.pnd.GetChangeListRequest
+	(*GetChangeRequest)(nil),               // 9: gosdn.pnd.GetChangeRequest
+	(*GetPathRequest)(nil),                 // 10: gosdn.pnd.GetPathRequest
+	(*GetOndResponse)(nil),                 // 11: gosdn.pnd.GetOndResponse
+	(*GetOndListResponse)(nil),             // 12: gosdn.pnd.GetOndListResponse
+	(*GetSbiResponse)(nil),                 // 13: gosdn.pnd.GetSbiResponse
+	(*GetSbiListResponse)(nil),             // 14: gosdn.pnd.GetSbiListResponse
+	(*GetPathResponse)(nil),                // 15: gosdn.pnd.GetPathResponse
+	(*GetChangeResponse)(nil),              // 16: gosdn.pnd.GetChangeResponse
+	(*GetChangeListResponse)(nil),          // 17: gosdn.pnd.GetChangeListResponse
+	(*PrincipalNetworkDomain)(nil),         // 18: gosdn.pnd.PrincipalNetworkDomain
+	(*OrchestratedNetworkingDevice)(nil),   // 19: gosdn.pnd.OrchestratedNetworkingDevice
+	(*Change)(nil),                         // 20: gosdn.pnd.Change
+	(*SetOndListRequest)(nil),              // 21: gosdn.pnd.SetOndListRequest
+	(*SetSbiListRequest)(nil),              // 22: gosdn.pnd.SetSbiListRequest
+	(*SetChangeListRequest)(nil),           // 23: gosdn.pnd.SetChangeListRequest
+	(*SetPathListRequest)(nil),             // 24: gosdn.pnd.SetPathListRequest
+	(*SetOnd)(nil),                         // 25: gosdn.pnd.SetOnd
+	(*SetSbi)(nil),                         // 26: gosdn.pnd.SetSbi
+	(*SetChange)(nil),                      // 27: gosdn.pnd.SetChange
+	(*ChangeRequest)(nil),                  // 28: gosdn.pnd.ChangeRequest
+	(*SetResponse)(nil),                    // 29: gosdn.pnd.SetResponse
+	(*SetOndListResponse)(nil),             // 30: gosdn.pnd.SetOndListResponse
+	(*SetChangeListResponse)(nil),          // 31: gosdn.pnd.SetChangeListResponse
+	(*SetChangeResponse)(nil),              // 32: gosdn.pnd.SetChangeResponse
+	(*SetSbiListResponse)(nil),             // 33: gosdn.pnd.SetSbiListResponse
+	(*SetPathListResponse)(nil),            // 34: gosdn.pnd.SetPathListResponse
+	(*DeletePndRequest)(nil),               // 35: gosdn.pnd.DeletePndRequest
+	(*DeleteOndRequest)(nil),               // 36: gosdn.pnd.DeleteOndRequest
+	(*DeletePndResponse)(nil),              // 37: gosdn.pnd.DeletePndResponse
+	(*DeleteOndResponse)(nil),              // 38: gosdn.pnd.DeleteOndResponse
+	(*southbound.SouthboundInterface)(nil), // 39: gosdn.southbound.SouthboundInterface
 	(*gnmi.Notification)(nil),              // 40: gnmi.Notification
-	(*transport.TransportOption)(nil),      // 41: gosdn.transport.v1alpha.TransportOption
+	(*transport.TransportOption)(nil),      // 41: gosdn.transport.TransportOption
 }
 var file_gosdn_pnd_pnd_proto_depIdxs = []int32{
-	18, // 0: gosdn.pnd.v1alpha.GetOndResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	19, // 1: gosdn.pnd.v1alpha.GetOndResponse.ond:type_name -> gosdn.pnd.v1alpha.OrchestratedNetworkingDevice
-	18, // 2: gosdn.pnd.v1alpha.GetOndListResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	19, // 3: gosdn.pnd.v1alpha.GetOndListResponse.ond:type_name -> gosdn.pnd.v1alpha.OrchestratedNetworkingDevice
-	18, // 4: gosdn.pnd.v1alpha.GetSbiResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	39, // 5: gosdn.pnd.v1alpha.GetSbiResponse.sbi:type_name -> gosdn.southbound.v1alpha.SouthboundInterface
-	18, // 6: gosdn.pnd.v1alpha.GetSbiListResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	39, // 7: gosdn.pnd.v1alpha.GetSbiListResponse.sbi:type_name -> gosdn.southbound.v1alpha.SouthboundInterface
-	18, // 8: gosdn.pnd.v1alpha.GetPathResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	40, // 9: gosdn.pnd.v1alpha.GetPathResponse.device:type_name -> gnmi.Notification
-	18, // 10: gosdn.pnd.v1alpha.GetChangeResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	20, // 11: gosdn.pnd.v1alpha.GetChangeResponse.change:type_name -> gosdn.pnd.v1alpha.Change
-	18, // 12: gosdn.pnd.v1alpha.GetChangeListResponse.pnd:type_name -> gosdn.pnd.v1alpha.PrincipalNetworkDomain
-	20, // 13: gosdn.pnd.v1alpha.GetChangeListResponse.change:type_name -> gosdn.pnd.v1alpha.Change
-	40, // 14: gosdn.pnd.v1alpha.OrchestratedNetworkingDevice.device:type_name -> gnmi.Notification
-	39, // 15: gosdn.pnd.v1alpha.OrchestratedNetworkingDevice.sbi:type_name -> gosdn.southbound.v1alpha.SouthboundInterface
-	0,  // 16: gosdn.pnd.v1alpha.Change.state:type_name -> gosdn.pnd.v1alpha.Change_State
-	25, // 17: gosdn.pnd.v1alpha.SetOndListRequest.ond:type_name -> gosdn.pnd.v1alpha.SetOnd
-	26, // 18: gosdn.pnd.v1alpha.SetSbiListRequest.sbi:type_name -> gosdn.pnd.v1alpha.SetSbi
-	27, // 19: gosdn.pnd.v1alpha.SetChangeListRequest.change:type_name -> gosdn.pnd.v1alpha.SetChange
-	28, // 20: gosdn.pnd.v1alpha.SetPathListRequest.change_request:type_name -> gosdn.pnd.v1alpha.ChangeRequest
-	39, // 21: gosdn.pnd.v1alpha.SetOnd.sbi:type_name -> gosdn.southbound.v1alpha.SouthboundInterface
-	41, // 22: gosdn.pnd.v1alpha.SetOnd.transport_option:type_name -> gosdn.transport.v1alpha.TransportOption
-	1,  // 23: gosdn.pnd.v1alpha.SetChange.op:type_name -> gosdn.pnd.v1alpha.Operation
-	2,  // 24: gosdn.pnd.v1alpha.ChangeRequest.api_op:type_name -> gosdn.pnd.v1alpha.ApiOperation
-	3,  // 25: gosdn.pnd.v1alpha.SetResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	3,  // 26: gosdn.pnd.v1alpha.SetOndListResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	29, // 27: gosdn.pnd.v1alpha.SetOndListResponse.responses:type_name -> gosdn.pnd.v1alpha.SetResponse
-	3,  // 28: gosdn.pnd.v1alpha.SetChangeListResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	29, // 29: gosdn.pnd.v1alpha.SetChangeListResponse.responses:type_name -> gosdn.pnd.v1alpha.SetResponse
-	3,  // 30: gosdn.pnd.v1alpha.SetChangeResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	3,  // 31: gosdn.pnd.v1alpha.SetSbiListResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	29, // 32: gosdn.pnd.v1alpha.SetSbiListResponse.responses:type_name -> gosdn.pnd.v1alpha.SetResponse
-	3,  // 33: gosdn.pnd.v1alpha.SetPathListResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	29, // 34: gosdn.pnd.v1alpha.SetPathListResponse.responses:type_name -> gosdn.pnd.v1alpha.SetResponse
-	3,  // 35: gosdn.pnd.v1alpha.DeletePndResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	3,  // 36: gosdn.pnd.v1alpha.DeleteOndResponse.status:type_name -> gosdn.pnd.v1alpha.Status
-	4,  // 37: gosdn.pnd.v1alpha.PndService.GetOndList:input_type -> gosdn.pnd.v1alpha.GetOndListRequest
-	5,  // 38: gosdn.pnd.v1alpha.PndService.GetOnd:input_type -> gosdn.pnd.v1alpha.GetOndRequest
-	21, // 39: gosdn.pnd.v1alpha.PndService.SetOndList:input_type -> gosdn.pnd.v1alpha.SetOndListRequest
-	6,  // 40: gosdn.pnd.v1alpha.PndService.GetSbiList:input_type -> gosdn.pnd.v1alpha.GetSbiListRequest
-	7,  // 41: gosdn.pnd.v1alpha.PndService.GetSbi:input_type -> gosdn.pnd.v1alpha.GetSbiRequest
-	22, // 42: gosdn.pnd.v1alpha.PndService.SetSbiList:input_type -> gosdn.pnd.v1alpha.SetSbiListRequest
-	8,  // 43: gosdn.pnd.v1alpha.PndService.GetChangeList:input_type -> gosdn.pnd.v1alpha.GetChangeListRequest
-	9,  // 44: gosdn.pnd.v1alpha.PndService.GetChange:input_type -> gosdn.pnd.v1alpha.GetChangeRequest
-	23, // 45: gosdn.pnd.v1alpha.PndService.SetChangeList:input_type -> gosdn.pnd.v1alpha.SetChangeListRequest
-	10, // 46: gosdn.pnd.v1alpha.PndService.GetPath:input_type -> gosdn.pnd.v1alpha.GetPathRequest
-	24, // 47: gosdn.pnd.v1alpha.PndService.SetPathList:input_type -> gosdn.pnd.v1alpha.SetPathListRequest
-	35, // 48: gosdn.pnd.v1alpha.PndService.DeletePnd:input_type -> gosdn.pnd.v1alpha.DeletePndRequest
-	36, // 49: gosdn.pnd.v1alpha.PndService.DeleteOnd:input_type -> gosdn.pnd.v1alpha.DeleteOndRequest
-	12, // 50: gosdn.pnd.v1alpha.PndService.GetOndList:output_type -> gosdn.pnd.v1alpha.GetOndListResponse
-	11, // 51: gosdn.pnd.v1alpha.PndService.GetOnd:output_type -> gosdn.pnd.v1alpha.GetOndResponse
-	30, // 52: gosdn.pnd.v1alpha.PndService.SetOndList:output_type -> gosdn.pnd.v1alpha.SetOndListResponse
-	14, // 53: gosdn.pnd.v1alpha.PndService.GetSbiList:output_type -> gosdn.pnd.v1alpha.GetSbiListResponse
-	13, // 54: gosdn.pnd.v1alpha.PndService.GetSbi:output_type -> gosdn.pnd.v1alpha.GetSbiResponse
-	33, // 55: gosdn.pnd.v1alpha.PndService.SetSbiList:output_type -> gosdn.pnd.v1alpha.SetSbiListResponse
-	17, // 56: gosdn.pnd.v1alpha.PndService.GetChangeList:output_type -> gosdn.pnd.v1alpha.GetChangeListResponse
-	16, // 57: gosdn.pnd.v1alpha.PndService.GetChange:output_type -> gosdn.pnd.v1alpha.GetChangeResponse
-	31, // 58: gosdn.pnd.v1alpha.PndService.SetChangeList:output_type -> gosdn.pnd.v1alpha.SetChangeListResponse
-	15, // 59: gosdn.pnd.v1alpha.PndService.GetPath:output_type -> gosdn.pnd.v1alpha.GetPathResponse
-	34, // 60: gosdn.pnd.v1alpha.PndService.SetPathList:output_type -> gosdn.pnd.v1alpha.SetPathListResponse
-	37, // 61: gosdn.pnd.v1alpha.PndService.DeletePnd:output_type -> gosdn.pnd.v1alpha.DeletePndResponse
-	38, // 62: gosdn.pnd.v1alpha.PndService.DeleteOnd:output_type -> gosdn.pnd.v1alpha.DeleteOndResponse
+	18, // 0: gosdn.pnd.GetOndResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	19, // 1: gosdn.pnd.GetOndResponse.ond:type_name -> gosdn.pnd.OrchestratedNetworkingDevice
+	18, // 2: gosdn.pnd.GetOndListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	19, // 3: gosdn.pnd.GetOndListResponse.ond:type_name -> gosdn.pnd.OrchestratedNetworkingDevice
+	18, // 4: gosdn.pnd.GetSbiResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	39, // 5: gosdn.pnd.GetSbiResponse.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	18, // 6: gosdn.pnd.GetSbiListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	39, // 7: gosdn.pnd.GetSbiListResponse.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	18, // 8: gosdn.pnd.GetPathResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	40, // 9: gosdn.pnd.GetPathResponse.device:type_name -> gnmi.Notification
+	18, // 10: gosdn.pnd.GetChangeResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	20, // 11: gosdn.pnd.GetChangeResponse.change:type_name -> gosdn.pnd.Change
+	18, // 12: gosdn.pnd.GetChangeListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain
+	20, // 13: gosdn.pnd.GetChangeListResponse.change:type_name -> gosdn.pnd.Change
+	40, // 14: gosdn.pnd.OrchestratedNetworkingDevice.device:type_name -> gnmi.Notification
+	39, // 15: gosdn.pnd.OrchestratedNetworkingDevice.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	0,  // 16: gosdn.pnd.Change.state:type_name -> gosdn.pnd.ChangeState
+	25, // 17: gosdn.pnd.SetOndListRequest.ond:type_name -> gosdn.pnd.SetOnd
+	26, // 18: gosdn.pnd.SetSbiListRequest.sbi:type_name -> gosdn.pnd.SetSbi
+	27, // 19: gosdn.pnd.SetChangeListRequest.change:type_name -> gosdn.pnd.SetChange
+	28, // 20: gosdn.pnd.SetPathListRequest.change_request:type_name -> gosdn.pnd.ChangeRequest
+	39, // 21: gosdn.pnd.SetOnd.sbi:type_name -> gosdn.southbound.SouthboundInterface
+	41, // 22: gosdn.pnd.SetOnd.transport_option:type_name -> gosdn.transport.TransportOption
+	1,  // 23: gosdn.pnd.SetChange.op:type_name -> gosdn.pnd.Operation
+	2,  // 24: gosdn.pnd.ChangeRequest.api_op:type_name -> gosdn.pnd.ApiOperation
+	3,  // 25: gosdn.pnd.SetResponse.status:type_name -> gosdn.pnd.Status
+	3,  // 26: gosdn.pnd.SetOndListResponse.status:type_name -> gosdn.pnd.Status
+	29, // 27: gosdn.pnd.SetOndListResponse.responses:type_name -> gosdn.pnd.SetResponse
+	3,  // 28: gosdn.pnd.SetChangeListResponse.status:type_name -> gosdn.pnd.Status
+	29, // 29: gosdn.pnd.SetChangeListResponse.responses:type_name -> gosdn.pnd.SetResponse
+	3,  // 30: gosdn.pnd.SetChangeResponse.status:type_name -> gosdn.pnd.Status
+	3,  // 31: gosdn.pnd.SetSbiListResponse.status:type_name -> gosdn.pnd.Status
+	29, // 32: gosdn.pnd.SetSbiListResponse.responses:type_name -> gosdn.pnd.SetResponse
+	3,  // 33: gosdn.pnd.SetPathListResponse.status:type_name -> gosdn.pnd.Status
+	29, // 34: gosdn.pnd.SetPathListResponse.responses:type_name -> gosdn.pnd.SetResponse
+	3,  // 35: gosdn.pnd.DeletePndResponse.status:type_name -> gosdn.pnd.Status
+	3,  // 36: gosdn.pnd.DeleteOndResponse.status:type_name -> gosdn.pnd.Status
+	4,  // 37: gosdn.pnd.PndService.GetOndList:input_type -> gosdn.pnd.GetOndListRequest
+	5,  // 38: gosdn.pnd.PndService.GetOnd:input_type -> gosdn.pnd.GetOndRequest
+	21, // 39: gosdn.pnd.PndService.SetOndList:input_type -> gosdn.pnd.SetOndListRequest
+	6,  // 40: gosdn.pnd.PndService.GetSbiList:input_type -> gosdn.pnd.GetSbiListRequest
+	7,  // 41: gosdn.pnd.PndService.GetSbi:input_type -> gosdn.pnd.GetSbiRequest
+	22, // 42: gosdn.pnd.PndService.SetSbiList:input_type -> gosdn.pnd.SetSbiListRequest
+	8,  // 43: gosdn.pnd.PndService.GetChangeList:input_type -> gosdn.pnd.GetChangeListRequest
+	9,  // 44: gosdn.pnd.PndService.GetChange:input_type -> gosdn.pnd.GetChangeRequest
+	23, // 45: gosdn.pnd.PndService.SetChangeList:input_type -> gosdn.pnd.SetChangeListRequest
+	10, // 46: gosdn.pnd.PndService.GetPath:input_type -> gosdn.pnd.GetPathRequest
+	24, // 47: gosdn.pnd.PndService.SetPathList:input_type -> gosdn.pnd.SetPathListRequest
+	35, // 48: gosdn.pnd.PndService.DeletePnd:input_type -> gosdn.pnd.DeletePndRequest
+	36, // 49: gosdn.pnd.PndService.DeleteOnd:input_type -> gosdn.pnd.DeleteOndRequest
+	12, // 50: gosdn.pnd.PndService.GetOndList:output_type -> gosdn.pnd.GetOndListResponse
+	11, // 51: gosdn.pnd.PndService.GetOnd:output_type -> gosdn.pnd.GetOndResponse
+	30, // 52: gosdn.pnd.PndService.SetOndList:output_type -> gosdn.pnd.SetOndListResponse
+	14, // 53: gosdn.pnd.PndService.GetSbiList:output_type -> gosdn.pnd.GetSbiListResponse
+	13, // 54: gosdn.pnd.PndService.GetSbi:output_type -> gosdn.pnd.GetSbiResponse
+	33, // 55: gosdn.pnd.PndService.SetSbiList:output_type -> gosdn.pnd.SetSbiListResponse
+	17, // 56: gosdn.pnd.PndService.GetChangeList:output_type -> gosdn.pnd.GetChangeListResponse
+	16, // 57: gosdn.pnd.PndService.GetChange:output_type -> gosdn.pnd.GetChangeResponse
+	31, // 58: gosdn.pnd.PndService.SetChangeList:output_type -> gosdn.pnd.SetChangeListResponse
+	15, // 59: gosdn.pnd.PndService.GetPath:output_type -> gosdn.pnd.GetPathResponse
+	34, // 60: gosdn.pnd.PndService.SetPathList:output_type -> gosdn.pnd.SetPathListResponse
+	37, // 61: gosdn.pnd.PndService.DeletePnd:output_type -> gosdn.pnd.DeletePndResponse
+	38, // 62: gosdn.pnd.PndService.DeleteOnd:output_type -> gosdn.pnd.DeleteOndResponse
 	50, // [50:63] is the sub-list for method output_type
 	37, // [37:50] is the sub-list for method input_type
 	37, // [37:37] is the sub-list for extension type_name
diff --git a/go/gosdn/pnd/pnd.pb.gw.go b/go/gosdn/pnd/pnd.pb.gw.go
index 18f29565f63452c5be927cb7ae944ec90f23b4e9..6b50bdbc77e2ca932246293e967ca48060e84b3e 100644
--- a/go/gosdn/pnd/pnd.pb.gw.go
+++ b/go/gosdn/pnd/pnd.pb.gw.go
@@ -1085,7 +1085,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetOndList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetOndList", runtime.WithHTTPPathPattern("/pnds/{pid}/onds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1108,7 +1108,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetOnd", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/ond/{did}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetOnd", runtime.WithHTTPPathPattern("/pnds/{pid}/ond/{did}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1131,7 +1131,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetOndList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetOndList", runtime.WithHTTPPathPattern("/pnds/{pid}/onds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1154,7 +1154,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetSbiList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/sbis"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1177,7 +1177,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetSbi", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/sbis/{sid}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbi", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis/{sid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1200,7 +1200,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetSbiList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/sbis"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1223,7 +1223,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetChangeList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/changes"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1246,7 +1246,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetChange", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/changes/{cuid}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChange", runtime.WithHTTPPathPattern("/pnds/{pid}/changes/{cuid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1269,7 +1269,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetChangeList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/changes"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1292,7 +1292,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetPath", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds/{did}/paths/{path}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/GetPath", runtime.WithHTTPPathPattern("/pnds/{pid}/onds/{did}/paths/{path}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1315,7 +1315,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetPathList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds/{did}/paths"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/SetPathList", runtime.WithHTTPPathPattern("/pnds/{pid}/onds/{did}/paths"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1338,7 +1338,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/DeletePnd", runtime.WithHTTPPathPattern("/v1/pnds/{pid}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/DeletePnd", runtime.WithHTTPPathPattern("/pnds/{pid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1361,7 +1361,7 @@ func RegisterPndServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux,
 		var stream runtime.ServerTransportStream
 		ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/DeleteOnd", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds/{did}"))
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.pnd.PndService/DeleteOnd", runtime.WithHTTPPathPattern("/pnds/{pid}/onds/{did}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1423,7 +1423,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetOndList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetOndList", runtime.WithHTTPPathPattern("/pnds/{pid}/onds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1443,7 +1443,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetOnd", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/ond/{did}"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetOnd", runtime.WithHTTPPathPattern("/pnds/{pid}/ond/{did}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1463,7 +1463,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetOndList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/SetOndList", runtime.WithHTTPPathPattern("/pnds/{pid}/onds"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1483,7 +1483,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetSbiList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/sbis"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1503,7 +1503,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetSbi", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/sbis/{sid}"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetSbi", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis/{sid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1523,7 +1523,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetSbiList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/sbis"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/SetSbiList", runtime.WithHTTPPathPattern("/pnds/{pid}/sbis"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1543,7 +1543,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetChangeList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/changes"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1563,7 +1563,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetChange", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/changes/{cuid}"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetChange", runtime.WithHTTPPathPattern("/pnds/{pid}/changes/{cuid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1583,7 +1583,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetChangeList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/changes"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/SetChangeList", runtime.WithHTTPPathPattern("/pnds/{pid}/changes"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1603,7 +1603,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/GetPath", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds/{did}/paths/{path}"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/GetPath", runtime.WithHTTPPathPattern("/pnds/{pid}/onds/{did}/paths/{path}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1623,7 +1623,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/SetPathList", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds/{did}/paths"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/SetPathList", runtime.WithHTTPPathPattern("/pnds/{pid}/onds/{did}/paths"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1643,7 +1643,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/DeletePnd", runtime.WithHTTPPathPattern("/v1/pnds/{pid}"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/DeletePnd", runtime.WithHTTPPathPattern("/pnds/{pid}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1663,7 +1663,7 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
 		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
-		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.v1alpha.PndService/DeleteOnd", runtime.WithHTTPPathPattern("/v1/pnds/{pid}/onds/{did}"))
+		rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gosdn.pnd.PndService/DeleteOnd", runtime.WithHTTPPathPattern("/pnds/{pid}/onds/{did}"))
 		if err != nil {
 			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
 			return
@@ -1683,31 +1683,31 @@ func RegisterPndServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux,
 }
 
 var (
-	pattern_PndService_GetOndList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "pnds", "pid", "onds"}, ""))
+	pattern_PndService_GetOndList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "onds"}, ""))
 
-	pattern_PndService_GetOnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "pnds", "pid", "ond", "did"}, ""))
+	pattern_PndService_GetOnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "ond", "did"}, ""))
 
-	pattern_PndService_SetOndList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "pnds", "pid", "onds"}, ""))
+	pattern_PndService_SetOndList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "onds"}, ""))
 
-	pattern_PndService_GetSbiList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "pnds", "pid", "sbis"}, ""))
+	pattern_PndService_GetSbiList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "sbis"}, ""))
 
-	pattern_PndService_GetSbi_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "pnds", "pid", "sbis", "sid"}, ""))
+	pattern_PndService_GetSbi_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "sbis", "sid"}, ""))
 
-	pattern_PndService_SetSbiList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "pnds", "pid", "sbis"}, ""))
+	pattern_PndService_SetSbiList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "sbis"}, ""))
 
-	pattern_PndService_GetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "pnds", "pid", "changes"}, ""))
+	pattern_PndService_GetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "changes"}, ""))
 
-	pattern_PndService_GetChange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "pnds", "pid", "changes", "cuid"}, ""))
+	pattern_PndService_GetChange_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "changes", "cuid"}, ""))
 
-	pattern_PndService_SetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"v1", "pnds", "pid", "changes"}, ""))
+	pattern_PndService_SetChangeList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"pnds", "pid", "changes"}, ""))
 
-	pattern_PndService_GetPath_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"v1", "pnds", "pid", "onds", "did", "paths", "path"}, ""))
+	pattern_PndService_GetPath_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"pnds", "pid", "onds", "did", "paths", "path"}, ""))
 
-	pattern_PndService_SetPathList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"v1", "pnds", "pid", "onds", "did", "paths"}, ""))
+	pattern_PndService_SetPathList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"pnds", "pid", "onds", "did", "paths"}, ""))
 
-	pattern_PndService_DeletePnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "pnds", "pid"}, ""))
+	pattern_PndService_DeletePnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"pnds", "pid"}, ""))
 
-	pattern_PndService_DeleteOnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "pnds", "pid", "onds", "did"}, ""))
+	pattern_PndService_DeleteOnd_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"pnds", "pid", "onds", "did"}, ""))
 )
 
 var (
diff --git a/go/gosdn/pnd/pnd_grpc.pb.go b/go/gosdn/pnd/pnd_grpc.pb.go
index be56a3027734bd3f6e64ef0738f0f5e86f2e2f50..cfad9274eec29fe08123f58072bce05c5f017b46 100644
--- a/go/gosdn/pnd/pnd_grpc.pb.go
+++ b/go/gosdn/pnd/pnd_grpc.pb.go
@@ -50,7 +50,7 @@ func NewPndServiceClient(cc grpc.ClientConnInterface) PndServiceClient {
 
 func (c *pndServiceClient) GetOndList(ctx context.Context, in *GetOndListRequest, opts ...grpc.CallOption) (*GetOndListResponse, error) {
 	out := new(GetOndListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/GetOndList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetOndList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -59,7 +59,7 @@ func (c *pndServiceClient) GetOndList(ctx context.Context, in *GetOndListRequest
 
 func (c *pndServiceClient) GetOnd(ctx context.Context, in *GetOndRequest, opts ...grpc.CallOption) (*GetOndResponse, error) {
 	out := new(GetOndResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/GetOnd", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetOnd", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -68,7 +68,7 @@ func (c *pndServiceClient) GetOnd(ctx context.Context, in *GetOndRequest, opts .
 
 func (c *pndServiceClient) SetOndList(ctx context.Context, in *SetOndListRequest, opts ...grpc.CallOption) (*SetOndListResponse, error) {
 	out := new(SetOndListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/SetOndList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/SetOndList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -77,7 +77,7 @@ func (c *pndServiceClient) SetOndList(ctx context.Context, in *SetOndListRequest
 
 func (c *pndServiceClient) GetSbiList(ctx context.Context, in *GetSbiListRequest, opts ...grpc.CallOption) (*GetSbiListResponse, error) {
 	out := new(GetSbiListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/GetSbiList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetSbiList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -86,7 +86,7 @@ func (c *pndServiceClient) GetSbiList(ctx context.Context, in *GetSbiListRequest
 
 func (c *pndServiceClient) GetSbi(ctx context.Context, in *GetSbiRequest, opts ...grpc.CallOption) (*GetSbiResponse, error) {
 	out := new(GetSbiResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/GetSbi", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetSbi", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -95,7 +95,7 @@ func (c *pndServiceClient) GetSbi(ctx context.Context, in *GetSbiRequest, opts .
 
 func (c *pndServiceClient) SetSbiList(ctx context.Context, in *SetSbiListRequest, opts ...grpc.CallOption) (*SetSbiListResponse, error) {
 	out := new(SetSbiListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/SetSbiList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/SetSbiList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -104,7 +104,7 @@ func (c *pndServiceClient) SetSbiList(ctx context.Context, in *SetSbiListRequest
 
 func (c *pndServiceClient) GetChangeList(ctx context.Context, in *GetChangeListRequest, opts ...grpc.CallOption) (*GetChangeListResponse, error) {
 	out := new(GetChangeListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/GetChangeList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetChangeList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -113,7 +113,7 @@ func (c *pndServiceClient) GetChangeList(ctx context.Context, in *GetChangeListR
 
 func (c *pndServiceClient) GetChange(ctx context.Context, in *GetChangeRequest, opts ...grpc.CallOption) (*GetChangeResponse, error) {
 	out := new(GetChangeResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/GetChange", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetChange", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -122,7 +122,7 @@ func (c *pndServiceClient) GetChange(ctx context.Context, in *GetChangeRequest,
 
 func (c *pndServiceClient) SetChangeList(ctx context.Context, in *SetChangeListRequest, opts ...grpc.CallOption) (*SetChangeListResponse, error) {
 	out := new(SetChangeListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/SetChangeList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/SetChangeList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -131,7 +131,7 @@ func (c *pndServiceClient) SetChangeList(ctx context.Context, in *SetChangeListR
 
 func (c *pndServiceClient) GetPath(ctx context.Context, in *GetPathRequest, opts ...grpc.CallOption) (*GetPathResponse, error) {
 	out := new(GetPathResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/GetPath", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/GetPath", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -140,7 +140,7 @@ func (c *pndServiceClient) GetPath(ctx context.Context, in *GetPathRequest, opts
 
 func (c *pndServiceClient) SetPathList(ctx context.Context, in *SetPathListRequest, opts ...grpc.CallOption) (*SetPathListResponse, error) {
 	out := new(SetPathListResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/SetPathList", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/SetPathList", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -149,7 +149,7 @@ func (c *pndServiceClient) SetPathList(ctx context.Context, in *SetPathListReque
 
 func (c *pndServiceClient) DeletePnd(ctx context.Context, in *DeletePndRequest, opts ...grpc.CallOption) (*DeletePndResponse, error) {
 	out := new(DeletePndResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/DeletePnd", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/DeletePnd", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -158,7 +158,7 @@ func (c *pndServiceClient) DeletePnd(ctx context.Context, in *DeletePndRequest,
 
 func (c *pndServiceClient) DeleteOnd(ctx context.Context, in *DeleteOndRequest, opts ...grpc.CallOption) (*DeleteOndResponse, error) {
 	out := new(DeleteOndResponse)
-	err := c.cc.Invoke(ctx, "/gosdn.pnd.v1alpha.PndService/DeleteOnd", in, out, opts...)
+	err := c.cc.Invoke(ctx, "/gosdn.pnd.PndService/DeleteOnd", in, out, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -258,7 +258,7 @@ func _PndService_GetOndList_Handler(srv interface{}, ctx context.Context, dec fu
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/GetOndList",
+		FullMethod: "/gosdn.pnd.PndService/GetOndList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).GetOndList(ctx, req.(*GetOndListRequest))
@@ -276,7 +276,7 @@ func _PndService_GetOnd_Handler(srv interface{}, ctx context.Context, dec func(i
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/GetOnd",
+		FullMethod: "/gosdn.pnd.PndService/GetOnd",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).GetOnd(ctx, req.(*GetOndRequest))
@@ -294,7 +294,7 @@ func _PndService_SetOndList_Handler(srv interface{}, ctx context.Context, dec fu
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/SetOndList",
+		FullMethod: "/gosdn.pnd.PndService/SetOndList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).SetOndList(ctx, req.(*SetOndListRequest))
@@ -312,7 +312,7 @@ func _PndService_GetSbiList_Handler(srv interface{}, ctx context.Context, dec fu
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/GetSbiList",
+		FullMethod: "/gosdn.pnd.PndService/GetSbiList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).GetSbiList(ctx, req.(*GetSbiListRequest))
@@ -330,7 +330,7 @@ func _PndService_GetSbi_Handler(srv interface{}, ctx context.Context, dec func(i
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/GetSbi",
+		FullMethod: "/gosdn.pnd.PndService/GetSbi",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).GetSbi(ctx, req.(*GetSbiRequest))
@@ -348,7 +348,7 @@ func _PndService_SetSbiList_Handler(srv interface{}, ctx context.Context, dec fu
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/SetSbiList",
+		FullMethod: "/gosdn.pnd.PndService/SetSbiList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).SetSbiList(ctx, req.(*SetSbiListRequest))
@@ -366,7 +366,7 @@ func _PndService_GetChangeList_Handler(srv interface{}, ctx context.Context, dec
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/GetChangeList",
+		FullMethod: "/gosdn.pnd.PndService/GetChangeList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).GetChangeList(ctx, req.(*GetChangeListRequest))
@@ -384,7 +384,7 @@ func _PndService_GetChange_Handler(srv interface{}, ctx context.Context, dec fun
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/GetChange",
+		FullMethod: "/gosdn.pnd.PndService/GetChange",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).GetChange(ctx, req.(*GetChangeRequest))
@@ -402,7 +402,7 @@ func _PndService_SetChangeList_Handler(srv interface{}, ctx context.Context, dec
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/SetChangeList",
+		FullMethod: "/gosdn.pnd.PndService/SetChangeList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).SetChangeList(ctx, req.(*SetChangeListRequest))
@@ -420,7 +420,7 @@ func _PndService_GetPath_Handler(srv interface{}, ctx context.Context, dec func(
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/GetPath",
+		FullMethod: "/gosdn.pnd.PndService/GetPath",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).GetPath(ctx, req.(*GetPathRequest))
@@ -438,7 +438,7 @@ func _PndService_SetPathList_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/SetPathList",
+		FullMethod: "/gosdn.pnd.PndService/SetPathList",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).SetPathList(ctx, req.(*SetPathListRequest))
@@ -456,7 +456,7 @@ func _PndService_DeletePnd_Handler(srv interface{}, ctx context.Context, dec fun
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/DeletePnd",
+		FullMethod: "/gosdn.pnd.PndService/DeletePnd",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).DeletePnd(ctx, req.(*DeletePndRequest))
@@ -474,7 +474,7 @@ func _PndService_DeleteOnd_Handler(srv interface{}, ctx context.Context, dec fun
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/gosdn.pnd.v1alpha.PndService/DeleteOnd",
+		FullMethod: "/gosdn.pnd.PndService/DeleteOnd",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		return srv.(PndServiceServer).DeleteOnd(ctx, req.(*DeleteOndRequest))
@@ -486,7 +486,7 @@ func _PndService_DeleteOnd_Handler(srv interface{}, ctx context.Context, dec fun
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
 var PndService_ServiceDesc = grpc.ServiceDesc{
-	ServiceName: "gosdn.pnd.v1alpha.PndService",
+	ServiceName: "gosdn.pnd.PndService",
 	HandlerType: (*PndServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
diff --git a/go/gosdn/southbound/southbound.pb.go b/go/gosdn/southbound/southbound.pb.go
index 7fd6d3a2272ec7646cea0e1f7c6e28eb9333c48d..d4b7a0a08e740b12c97b0b4ebf84fe1b6c23c1c3 100644
--- a/go/gosdn/southbound/southbound.pb.go
+++ b/go/gosdn/southbound/southbound.pb.go
@@ -79,7 +79,7 @@ type SouthboundInterface struct {
 	unknownFields protoimpl.UnknownFields
 
 	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Type Type   `protobuf:"varint,2,opt,name=type,proto3,enum=gosdn.southbound.v1alpha.Type" json:"type,omitempty"`
+	Type Type   `protobuf:"varint,2,opt,name=type,proto3,enum=gosdn.southbound.Type" json:"type,omitempty"`
 }
 
 func (x *SouthboundInterface) Reset() {
@@ -133,15 +133,14 @@ var File_gosdn_southbound_southbound_proto protoreflect.FileDescriptor
 var file_gosdn_southbound_southbound_proto_rawDesc = []byte{
 	0x0a, 0x21, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75,
 	0x6e, 0x64, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68,
-	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x20, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64,
-	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
-	0x59, 0x0a, 0x13, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74,
-	0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75,
-	0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
+	0x6f, 0x74, 0x6f, 0x12, 0x10, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68,
+	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
+	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x51, 0x0a, 0x13, 0x53, 0x6f, 0x75, 0x74, 0x68,
+	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x0e,
+	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a,
+	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67,
+	0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e,
 	0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x5a, 0x0a, 0x04, 0x54, 0x79,
 	0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
 	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x59, 0x50, 0x45,
@@ -169,11 +168,11 @@ func file_gosdn_southbound_southbound_proto_rawDescGZIP() []byte {
 var file_gosdn_southbound_southbound_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
 var file_gosdn_southbound_southbound_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_gosdn_southbound_southbound_proto_goTypes = []interface{}{
-	(Type)(0),                   // 0: gosdn.southbound.v1alpha.Type
-	(*SouthboundInterface)(nil), // 1: gosdn.southbound.v1alpha.SouthboundInterface
+	(Type)(0),                   // 0: gosdn.southbound.Type
+	(*SouthboundInterface)(nil), // 1: gosdn.southbound.SouthboundInterface
 }
 var file_gosdn_southbound_southbound_proto_depIdxs = []int32{
-	0, // 0: gosdn.southbound.v1alpha.SouthboundInterface.type:type_name -> gosdn.southbound.v1alpha.Type
+	0, // 0: gosdn.southbound.SouthboundInterface.type:type_name -> gosdn.southbound.Type
 	1, // [1:1] is the sub-list for method output_type
 	1, // [1:1] is the sub-list for method input_type
 	1, // [1:1] is the sub-list for extension type_name
diff --git a/go/gosdn/transport/transport.pb.go b/go/gosdn/transport/transport.pb.go
index 5218920526a7dae426936208a27b0993ff08c73d..15ebfa0d1ade7b19a011ef2e10f6fb976486f284 100644
--- a/go/gosdn/transport/transport.pb.go
+++ b/go/gosdn/transport/transport.pb.go
@@ -36,7 +36,7 @@ type TransportOption struct {
 	//	*TransportOption_GnmiTransportOption
 	//	*TransportOption_RestconfTransportOption
 	TransportOption isTransportOption_TransportOption `protobuf_oneof:"transport_option"`
-	Type            southbound.Type                   `protobuf:"varint,7,opt,name=type,proto3,enum=gosdn.southbound.v1alpha.Type" json:"type,omitempty"`
+	Type            southbound.Type                   `protobuf:"varint,7,opt,name=type,proto3,enum=gosdn.southbound.Type" json:"type,omitempty"`
 }
 
 func (x *TransportOption) Reset() {
@@ -257,65 +257,62 @@ var File_gosdn_transport_transport_proto protoreflect.FileDescriptor
 var file_gosdn_transport_transport_proto_rawDesc = []byte{
 	0x0a, 0x1f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72,
 	0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x17, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
-	0x72, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63,
-	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69,
-	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e,
-	0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
-	0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21,
-	0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64,
-	0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x22, 0x91, 0x03, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
-	0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70,
-	0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70,
-	0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x62, 0x0a, 0x15, 0x67, 0x6e, 0x6d,
-	0x69, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e,
-	0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x2e, 0x47, 0x6e, 0x6d, 0x69, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
+	0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
+	0x72, 0x74, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x6e, 0x6d, 0x69,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6e, 0x6d, 0x69, 0x2f, 0x67, 0x6e, 0x6d, 0x69,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x73, 0x6f,
+	0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f,
+	0x75, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf9, 0x02, 0x0a, 0x0f, 0x54, 0x72,
+	0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
+	0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
+	0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e,
+	0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12,
+	0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c,
+	0x73, 0x12, 0x5a, 0x0a, 0x15, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
+	0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
+	0x72, 0x74, 0x2e, 0x47, 0x6e, 0x6d, 0x69, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
 	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x13, 0x67, 0x6e, 0x6d, 0x69, 0x54, 0x72,
-	0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6e, 0x0a,
+	0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a,
 	0x19, 0x72, 0x65, 0x73, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70,
 	0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x30, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
-	0x72, 0x74, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x63,
-	0x6f, 0x6e, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x72, 0x65, 0x73, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x54, 0x72,
-	0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a,
-	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f,
-	0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74, 0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
+	0x32, 0x28, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
+	0x72, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73,
+	0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x72, 0x65,
+	0x73, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x73, 0x6f, 0x75, 0x74,
+	0x68, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
 	0x65, 0x42, 0x12, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xac, 0x02, 0x0a, 0x13, 0x47, 0x6e, 0x6d, 0x69, 0x54, 0x72,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x02, 0x0a, 0x13, 0x47, 0x6e, 0x6d, 0x69, 0x54, 0x72,
 	0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a,
 	0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
 	0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12,
-	0x6d, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x73,
-	0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x6e, 0x6d, 0x69, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f,
-	0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x44, 0x69, 0x61,
-	0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x67,
-	0x72, 0x70, 0x63, 0x44, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14,
-	0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
-	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2a, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x45, 0x6e,
-	0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67,
-	0x1a, 0x42, 0x0a, 0x14, 0x47, 0x72, 0x70, 0x63, 0x44, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 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, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x74, 0x63, 0x6f, 0x6e, 0x66,
-	0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42,
-	0x2f, 0x5a, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61,
-	0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f,
-	0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74,
-	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x65, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x73,
+	0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x47, 0x6e, 0x6d,
+	0x69, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x2e, 0x47, 0x72, 0x70, 0x63, 0x44, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x44, 0x69, 0x61, 0x6c, 0x4f,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2a, 0x0a, 0x08,
+	0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e,
+	0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08,
+	0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x42, 0x0a, 0x14, 0x47, 0x72, 0x70, 0x63,
+	0x44, 0x69, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 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, 0x22, 0x19, 0x0a, 0x17,
+	0x52, 0x65, 0x73, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72,
+	0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x2f, 0x5a, 0x2d, 0x63, 0x6f, 0x64, 0x65, 0x2e,
+	0x66, 0x62, 0x69, 0x2e, 0x68, 0x2d, 0x64, 0x61, 0x2e, 0x64, 0x65, 0x2f, 0x64, 0x61, 0x6e, 0x65,
+	0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2f, 0x74,
+	0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -332,19 +329,19 @@ func file_gosdn_transport_transport_proto_rawDescGZIP() []byte {
 
 var file_gosdn_transport_transport_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
 var file_gosdn_transport_transport_proto_goTypes = []interface{}{
-	(*TransportOption)(nil),         // 0: gosdn.transport.v1alpha.TransportOption
-	(*GnmiTransportOption)(nil),     // 1: gosdn.transport.v1alpha.GnmiTransportOption
-	(*RestconfTransportOption)(nil), // 2: gosdn.transport.v1alpha.RestconfTransportOption
-	nil,                             // 3: gosdn.transport.v1alpha.GnmiTransportOption.GrpcDialOptionsEntry
-	(southbound.Type)(0),            // 4: gosdn.southbound.v1alpha.Type
+	(*TransportOption)(nil),         // 0: gosdn.transport.TransportOption
+	(*GnmiTransportOption)(nil),     // 1: gosdn.transport.GnmiTransportOption
+	(*RestconfTransportOption)(nil), // 2: gosdn.transport.RestconfTransportOption
+	nil,                             // 3: gosdn.transport.GnmiTransportOption.GrpcDialOptionsEntry
+	(southbound.Type)(0),            // 4: gosdn.southbound.Type
 	(gnmi.Encoding)(0),              // 5: gnmi.Encoding
 }
 var file_gosdn_transport_transport_proto_depIdxs = []int32{
-	1, // 0: gosdn.transport.v1alpha.TransportOption.gnmi_transport_option:type_name -> gosdn.transport.v1alpha.GnmiTransportOption
-	2, // 1: gosdn.transport.v1alpha.TransportOption.restconf_transport_option:type_name -> gosdn.transport.v1alpha.RestconfTransportOption
-	4, // 2: gosdn.transport.v1alpha.TransportOption.type:type_name -> gosdn.southbound.v1alpha.Type
-	3, // 3: gosdn.transport.v1alpha.GnmiTransportOption.grpc_dial_options:type_name -> gosdn.transport.v1alpha.GnmiTransportOption.GrpcDialOptionsEntry
-	5, // 4: gosdn.transport.v1alpha.GnmiTransportOption.encoding:type_name -> gnmi.Encoding
+	1, // 0: gosdn.transport.TransportOption.gnmi_transport_option:type_name -> gosdn.transport.GnmiTransportOption
+	2, // 1: gosdn.transport.TransportOption.restconf_transport_option:type_name -> gosdn.transport.RestconfTransportOption
+	4, // 2: gosdn.transport.TransportOption.type:type_name -> gosdn.southbound.Type
+	3, // 3: gosdn.transport.GnmiTransportOption.grpc_dial_options:type_name -> gosdn.transport.GnmiTransportOption.GrpcDialOptionsEntry
+	5, // 4: gosdn.transport.GnmiTransportOption.encoding:type_name -> gnmi.Encoding
 	5, // [5:5] is the sub-list for method output_type
 	5, // [5:5] is the sub-list for method input_type
 	5, // [5:5] is the sub-list for extension type_name
diff --git a/openapiv2/gosdn_northbound.swagger.json b/openapiv2/gosdn_northbound.swagger.json
index 9db061bc5ffac26adfa6b7112769ca0175d0cd06..56ae32ce3e5b8fb877fe525e0b45846c7758cc44 100644
--- a/openapiv2/gosdn_northbound.swagger.json
+++ b/openapiv2/gosdn_northbound.swagger.json
@@ -17,20 +17,20 @@
     {
       "name": "PndService"
     },
-    {
-      "name": "Collector"
-    },
     {
       "name": "gNMI"
     },
     {
-      "name": "AgentManager"
+      "name": "CoreService"
     },
     {
-      "name": "CoreService"
+      "name": "Collector"
     },
     {
       "name": "CsbiService"
+    },
+    {
+      "name": "AgentManager"
     }
   ],
   "consumes": [
@@ -42,7 +42,7 @@
   "paths": {
     "/gnmi.Collector/Reconnect": {
       "post": {
-        "summary": "Reconnect requests that the existing connections for one or more specified\r\ntargets will be stopped and new connections established.",
+        "summary": "Reconnect requests that the existing connections for one or more specified\ntargets will be stopped and new connections established.",
         "operationId": "Collector_Reconnect",
         "responses": {
           "200": {
@@ -174,7 +174,7 @@
     },
     "/gnmi.gNMI/Capabilities": {
       "post": {
-        "summary": "Capabilities allows the client to retrieve the set of capabilities that\r\nis supported by the target. This allows the target to validate the\r\nservice version that is implemented and retrieve the set of models that\r\nthe target supports. The models can then be specified in subsequent RPCs\r\nto restrict the set of data that is utilized.\r\nReference: gNMI Specification Section 3.2",
+        "summary": "Capabilities allows the client to retrieve the set of capabilities that\nis supported by the target. This allows the target to validate the\nservice version that is implemented and retrieve the set of models that\nthe target supports. The models can then be specified in subsequent RPCs\nto restrict the set of data that is utilized.\nReference: gNMI Specification Section 3.2",
         "operationId": "gNMI_Capabilities",
         "responses": {
           "200": {
@@ -207,7 +207,7 @@
     },
     "/gnmi.gNMI/Get": {
       "post": {
-        "summary": "Retrieve a snapshot of data from the target. A Get RPC requests that the\r\ntarget snapshots a subset of the data tree as specified by the paths\r\nincluded in the message and serializes this to be returned to the\r\nclient using the specified encoding.\r\nReference: gNMI Specification Section 3.3",
+        "summary": "Retrieve a snapshot of data from the target. A Get RPC requests that the\ntarget snapshots a subset of the data tree as specified by the paths\nincluded in the message and serializes this to be returned to the\nclient using the specified encoding.\nReference: gNMI Specification Section 3.3",
         "operationId": "gNMI_Get",
         "responses": {
           "200": {
@@ -240,7 +240,7 @@
     },
     "/gnmi.gNMI/Set": {
       "post": {
-        "summary": "Set allows the client to modify the state of data on the target. The\r\npaths to modified along with the new values that the client wishes\r\nto set the value to.\r\nReference: gNMI Specification Section 3.4",
+        "summary": "Set allows the client to modify the state of data on the target. The\npaths to modified along with the new values that the client wishes\nto set the value to.\nReference: gNMI Specification Section 3.4",
         "operationId": "gNMI_Set",
         "responses": {
           "200": {
@@ -273,7 +273,7 @@
     },
     "/gnmi.gNMI/Subscribe": {
       "post": {
-        "summary": "Subscribe allows a client to request the target to send it values\r\nof particular paths within the data tree. These values may be streamed\r\nat a particular cadence (STREAM), sent one off on a long-lived channel\r\n(POLL), or sent as a one-off retrieval (ONCE).\r\nReference: gNMI Specification Section 3.5",
+        "summary": "Subscribe allows a client to request the target to send it values\nof particular paths within the data tree. These values may be streamed\nat a particular cadence (STREAM), sent one off on a long-lived channel\n(POLL), or sent as a one-off retrieval (ONCE).\nReference: gNMI Specification Section 3.5",
         "operationId": "gNMI_Subscribe",
         "responses": {
           "200": {
@@ -314,14 +314,14 @@
         ]
       }
     },
-    "/gosdn.csbi.v1alpha.CsbiService/Create": {
+    "/gosdn.csbi.CsbiService/Create": {
       "post": {
         "operationId": "CsbiService_Create",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaCreateResponse"
+              "$ref": "#/definitions/csbiCreateResponse"
             }
           },
           "default": {
@@ -337,7 +337,7 @@
             "in": "body",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/v1alphaCreateRequest"
+              "$ref": "#/definitions/csbiCreateRequest"
             }
           }
         ],
@@ -346,7 +346,7 @@
         ]
       }
     },
-    "/gosdn.csbi.v1alpha.CsbiService/CreatePlugin": {
+    "/gosdn.csbi.CsbiService/CreatePlugin": {
       "post": {
         "operationId": "CsbiService_CreatePlugin",
         "responses": {
@@ -356,13 +356,13 @@
               "type": "object",
               "properties": {
                 "result": {
-                  "$ref": "#/definitions/v1alphaPayload"
+                  "$ref": "#/definitions/csbiPayload"
                 },
                 "error": {
                   "$ref": "#/definitions/googlerpcStatus"
                 }
               },
-              "title": "Stream result of v1alphaPayload"
+              "title": "Stream result of csbiPayload"
             }
           },
           "default": {
@@ -378,7 +378,7 @@
             "in": "body",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/v1alphaCreatePluginRequest"
+              "$ref": "#/definitions/csbiCreatePluginRequest"
             }
           }
         ],
@@ -387,14 +387,14 @@
         ]
       }
     },
-    "/gosdn.csbi.v1alpha.CsbiService/Delete": {
+    "/gosdn.csbi.CsbiService/Delete": {
       "post": {
         "operationId": "CsbiService_Delete",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaDeleteResponse"
+              "$ref": "#/definitions/csbiDeleteResponse"
             }
           },
           "default": {
@@ -410,7 +410,7 @@
             "in": "body",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/v1alphaDeleteRequest"
+              "$ref": "#/definitions/csbiDeleteRequest"
             }
           }
         ],
@@ -419,14 +419,14 @@
         ]
       }
     },
-    "/gosdn.csbi.v1alpha.CsbiService/Get": {
+    "/gosdn.csbi.CsbiService/Get": {
       "post": {
         "operationId": "CsbiService_Get",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/csbiv1alphaGetResponse"
+              "$ref": "#/definitions/gosdncsbiGetResponse"
             }
           },
           "default": {
@@ -442,7 +442,7 @@
             "in": "body",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/csbiv1alphaGetRequest"
+              "$ref": "#/definitions/gosdncsbiGetRequest"
             }
           }
         ],
@@ -451,14 +451,14 @@
         ]
       }
     },
-    "/gosdn.csbi.v1alpha.CsbiService/Hello": {
+    "/gosdn.csbi.CsbiService/Hello": {
       "post": {
         "operationId": "CsbiService_Hello",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaAck"
+              "$ref": "#/definitions/csbiAck"
             }
           },
           "default": {
@@ -474,7 +474,7 @@
             "in": "body",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/v1alphaSyn"
+              "$ref": "#/definitions/csbiSyn"
             }
           }
         ],
@@ -483,14 +483,14 @@
         ]
       }
     },
-    "/v1/pnd/{pid}": {
+    "/pnd/{pid}": {
       "get": {
         "operationId": "CoreService_GetPnd",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetPndResponse"
+              "$ref": "#/definitions/coreGetPndResponse"
             }
           },
           "default": {
@@ -520,14 +520,14 @@
         ]
       }
     },
-    "/v1/pnds": {
+    "/pnds": {
       "get": {
         "operationId": "CoreService_GetPndList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetPndListResponse"
+              "$ref": "#/definitions/coreGetPndListResponse"
             }
           },
           "default": {
@@ -556,7 +556,7 @@
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaCreatePndResponse"
+              "$ref": "#/definitions/coreCreatePndResponse"
             }
           },
           "default": {
@@ -572,7 +572,7 @@
             "in": "body",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/v1alphaCreatePndRequest"
+              "$ref": "#/definitions/coreCreatePndRequest"
             }
           }
         ],
@@ -581,14 +581,14 @@
         ]
       }
     },
-    "/v1/pnds/{pid}": {
+    "/pnds/{pid}": {
       "delete": {
         "operationId": "PndService_DeletePnd",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaDeletePndResponse"
+              "$ref": "#/definitions/pndDeletePndResponse"
             }
           },
           "default": {
@@ -618,7 +618,7 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/changes": {
+    "/pnds/{pid}/changes": {
       "get": {
         "summary": "Allows to request Changes registered for a specific Principal Network Domain.",
         "operationId": "PndService_GetChangeList",
@@ -626,7 +626,7 @@
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetChangeListResponse"
+              "$ref": "#/definitions/pndGetChangeListResponse"
             }
           },
           "default": {
@@ -661,7 +661,7 @@
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaSetChangeListResponse"
+              "$ref": "#/definitions/pndSetChangeListResponse"
             }
           },
           "default": {
@@ -692,7 +692,7 @@
                 "change": {
                   "type": "array",
                   "items": {
-                    "$ref": "#/definitions/v1alphaSetChange"
+                    "$ref": "#/definitions/pndSetChange"
                   }
                 }
               }
@@ -704,14 +704,14 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/changes/{cuid}": {
+    "/pnds/{pid}/changes/{cuid}": {
       "get": {
         "operationId": "PndService_GetChange",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetChangeResponse"
+              "$ref": "#/definitions/pndGetChangeResponse"
             }
           },
           "default": {
@@ -747,14 +747,14 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/ond/{did}": {
+    "/pnds/{pid}/ond/{did}": {
       "get": {
         "operationId": "PndService_GetOnd",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetOndResponse"
+              "$ref": "#/definitions/pndGetOndResponse"
             }
           },
           "default": {
@@ -790,15 +790,15 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/onds": {
+    "/pnds/{pid}/onds": {
       "get": {
-        "summary": "Allows to request Orchestrated Networking Devices which are managed by a\r\nspecific Principal Network Domain.",
+        "summary": "Allows to request Orchestrated Networking Devices which are managed by a\nspecific Principal Network Domain.",
         "operationId": "PndService_GetOndList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetOndListResponse"
+              "$ref": "#/definitions/pndGetOndListResponse"
             }
           },
           "default": {
@@ -833,7 +833,7 @@
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaSetOndListResponse"
+              "$ref": "#/definitions/pndSetOndListResponse"
             }
           },
           "default": {
@@ -864,7 +864,7 @@
                 "ond": {
                   "type": "array",
                   "items": {
-                    "$ref": "#/definitions/v1alphaSetOnd"
+                    "$ref": "#/definitions/pndSetOnd"
                   }
                 }
               }
@@ -876,14 +876,14 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/onds/{did}": {
+    "/pnds/{pid}/onds/{did}": {
       "delete": {
         "operationId": "PndService_DeleteOnd",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaDeleteOndResponse"
+              "$ref": "#/definitions/pndDeleteOndResponse"
             }
           },
           "default": {
@@ -919,14 +919,14 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/onds/{did}/paths": {
+    "/pnds/{pid}/onds/{did}/paths": {
       "post": {
         "operationId": "PndService_SetPathList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaSetPathListResponse"
+              "$ref": "#/definitions/pndSetPathListResponse"
             }
           },
           "default": {
@@ -963,7 +963,7 @@
                 "changeRequest": {
                   "type": "array",
                   "items": {
-                    "$ref": "#/definitions/v1alphaChangeRequest"
+                    "$ref": "#/definitions/pndChangeRequest"
                   }
                 }
               }
@@ -975,15 +975,15 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/onds/{did}/paths/{path}": {
+    "/pnds/{pid}/onds/{did}/paths/{path}": {
       "get": {
-        "summary": "Allows to request a specific Path of a Orchestrated Networking Device,\r\nmanaged by a specific Principal Network Domain.",
+        "summary": "Allows to request a specific Path of a Orchestrated Networking Device,\nmanaged by a specific Principal Network Domain.",
         "operationId": "PndService_GetPath",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetPathResponse"
+              "$ref": "#/definitions/pndGetPathResponse"
             }
           },
           "default": {
@@ -1025,15 +1025,15 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/sbis": {
+    "/pnds/{pid}/sbis": {
       "get": {
-        "summary": "Allows to request the Southbound Interfaces a specific Principal Network\r\nDomain supports.",
+        "summary": "Allows to request the Southbound Interfaces a specific Principal Network\nDomain supports.",
         "operationId": "PndService_GetSbiList",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetSbiListResponse"
+              "$ref": "#/definitions/pndGetSbiListResponse"
             }
           },
           "default": {
@@ -1068,7 +1068,7 @@
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaSetSbiListResponse"
+              "$ref": "#/definitions/pndSetSbiListResponse"
             }
           },
           "default": {
@@ -1099,7 +1099,7 @@
                 "sbi": {
                   "type": "array",
                   "items": {
-                    "$ref": "#/definitions/v1alphaSetSbi"
+                    "$ref": "#/definitions/pndSetSbi"
                   }
                 }
               }
@@ -1111,14 +1111,14 @@
         ]
       }
     },
-    "/v1/pnds/{pid}/sbis/{sid}": {
+    "/pnds/{pid}/sbis/{sid}": {
       "get": {
         "operationId": "PndService_GetSbi",
         "responses": {
           "200": {
             "description": "A successful response.",
             "schema": {
-              "$ref": "#/definitions/v1alphaGetSbiResponse"
+              "$ref": "#/definitions/pndGetSbiResponse"
             }
           },
           "default": {
@@ -1175,7 +1175,7 @@
         "OPERATIONAL"
       ],
       "default": "ALL",
-      "description": "Type of elements within the data tree.\n\n - OPERATIONAL: Data elements marked in the schema as operational. This refers to data\r\nelements whose value relates to the state of processes or interactions\r\nrunning on the device."
+      "description": "Type of elements within the data tree.\n\n - OPERATIONAL: Data elements marked in the schema as operational. This refers to data\nelements whose value relates to the state of processes or interactions\nrunning on the device."
     },
     "SubscriptionListMode": {
       "type": "string",
@@ -1187,25 +1187,123 @@
       "default": "STREAM",
       "description": "Mode of the subscription."
     },
-    "csbiv1alphaGetRequest": {
+    "coreCreatePndRequest": {
       "type": "object",
       "properties": {
         "timestamp": {
           "type": "string",
           "format": "int64"
         },
-        "all": {
-          "type": "boolean"
+        "pnd": {
+          "$ref": "#/definitions/corePndCreateProperties"
+        }
+      }
+    },
+    "coreCreatePndResponse": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
         },
-        "did": {
+        "status": {
+          "$ref": "#/definitions/coreCreatePndResponseStatus"
+        }
+      }
+    },
+    "coreCreatePndResponseStatus": {
+      "type": "string",
+      "enum": [
+        "STATUS_UNSPECIFIED",
+        "STATUS_OK",
+        "STATUS_ERROR"
+      ],
+      "default": "STATUS_UNSPECIFIED"
+    },
+    "coreGetPndListResponse": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "pnd": {
           "type": "array",
           "items": {
-            "type": "string"
+            "$ref": "#/definitions/pndPrincipalNetworkDomain"
+          }
+        }
+      }
+    },
+    "coreGetPndResponse": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "pnd": {
+          "$ref": "#/definitions/pndPrincipalNetworkDomain"
+        }
+      }
+    },
+    "corePndCreateProperties": {
+      "type": "object",
+      "properties": {
+        "name": {
+          "type": "string"
+        },
+        "description": {
+          "type": "string"
+        },
+        "sbi": {
+          "type": "string"
+        }
+      }
+    },
+    "csbiAck": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "transportOption": {
+          "$ref": "#/definitions/transportTransportOption"
+        }
+      }
+    },
+    "csbiCreatePluginRequest": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "transportOption": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/transportTransportOption"
           }
         }
       }
     },
-    "csbiv1alphaGetResponse": {
+    "csbiCreateRequest": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "transportOption": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/transportTransportOption"
+          }
+        }
+      }
+    },
+    "csbiCreateResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -1215,22 +1313,84 @@
         "deployments": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/v1alphaDeployment"
+            "$ref": "#/definitions/csbiDeployment"
+          }
+        }
+      }
+    },
+    "csbiDeleteRequest": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "did": {
+          "type": "array",
+          "items": {
+            "type": "string"
           }
         }
       }
     },
-    "csbiv1alphaState": {
+    "csbiDeleteResponse": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "status": {
+          "$ref": "#/definitions/csbiDeleteResponseStatus"
+        }
+      }
+    },
+    "csbiDeleteResponseStatus": {
       "type": "string",
       "enum": [
-        "STATE_UNSPECIFIED",
-        "STATE_ANNOUNCED",
-        "STATE_BUILT",
-        "STATE_DEPLOYED",
-        "STATE_RUNNING",
-        "STATE_DECOMMISSIONED"
+        "STATUS_UNSPECIFIED",
+        "STATUS_OK",
+        "STATUS_ERROR"
       ],
-      "default": "STATE_UNSPECIFIED"
+      "default": "STATUS_UNSPECIFIED"
+    },
+    "csbiDeployment": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "string"
+        },
+        "name": {
+          "type": "string"
+        },
+        "state": {
+          "$ref": "#/definitions/gosdncsbiState"
+        }
+      }
+    },
+    "csbiPayload": {
+      "type": "object",
+      "properties": {
+        "chunk": {
+          "type": "string",
+          "format": "byte"
+        }
+      }
+    },
+    "csbiSyn": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "id": {
+          "type": "string"
+        },
+        "address": {
+          "type": "string"
+        }
+      }
     },
     "fakeBoolList": {
       "type": "object",
@@ -1244,7 +1404,7 @@
         },
         "random": {
           "type": "boolean",
-          "description": "Set to true to randomize selection of value from options. If false, the\r\nvalues are cycled in order, starting at index 0."
+          "description": "Set to true to randomize selection of value from options. If false, the\nvalues are cycled in order, starting at index 0."
         }
       }
     },
@@ -1253,7 +1413,7 @@
       "properties": {
         "value": {
           "type": "boolean",
-          "description": "If distribution is BoolList, value is only used to hold the value as it\r\nmutates.\r\nIf no distribution is set, value is used as it mutates, i.e. constant\r\nupdate."
+          "description": "If distribution is BoolList, value is only used to hold the value as it\nmutates.\nIf no distribution is set, value is used as it mutates, i.e. constant\nupdate."
         },
         "list": {
           "$ref": "#/definitions/fakeBoolList"
@@ -1270,23 +1430,23 @@
         "port": {
           "type": "integer",
           "format": "int32",
-          "description": "Port for the agent to listen on. If 0 or unset the agent will pick a port\r\nfor this agent."
+          "description": "Port for the agent to listen on. If 0 or unset the agent will pick a port\nfor this agent."
         },
         "seed": {
           "type": "string",
           "format": "int64",
-          "description": "A global random seed used in generating subsequent values. Set to have\r\nreproducible results."
+          "description": "A global random seed used in generating subsequent values. Set to have\nreproducible results."
         },
         "values": {
           "type": "array",
           "items": {
             "$ref": "#/definitions/gnmifakeValue"
           },
-          "description": "The list of values generated.  Each value will contain its corresponding\r\ntarget as the first string in the event.GetValue().path meaning that it is\r\npossible to generate streams that will be rejected by the cache for testing\r\npurposes."
+          "description": "The list of values generated.  Each value will contain its corresponding\ntarget as the first string in the event.GetValue().path meaning that it is\npossible to generate streams that will be rejected by the cache for testing\npurposes."
         },
         "disableSync": {
           "type": "boolean",
-          "description": "Setting disable sync will keep the configured client from autogenerating a\r\nsync message. This allows negative testing on sync handling."
+          "description": "Setting disable sync will keep the configured client from autogenerating a\nsync message. This allows negative testing on sync handling."
         },
         "clientType": {
           "$ref": "#/definitions/ConfigClientType",
@@ -1294,7 +1454,7 @@
         },
         "disableEof": {
           "type": "boolean",
-          "description": "Disable EOF will hold open the subscription and not automagically close\r\nthe stream once the value queue is empty."
+          "description": "Disable EOF will hold open the subscription and not automagically close\nthe stream once the value queue is empty."
         },
         "credentials": {
           "$ref": "#/definitions/gnmifakeCredentials",
@@ -1307,7 +1467,7 @@
         },
         "enableDelay": {
           "type": "boolean",
-          "description": "Honor the delay between events in the generated value streams. Default will\r\nplay events as fast as the can be streamed."
+          "description": "Honor the delay between events in the generated value streams. Default will\nplay events as fast as the can be streamed."
         },
         "custom": {
           "$ref": "#/definitions/protobufAny"
@@ -1327,7 +1487,7 @@
           "description": "tunnel_crt is the certificate file for the tunnel conection."
         }
       },
-      "description": "Config is a collection of values that together represent the update streams\r\nfor one or more fake devices."
+      "description": "Config is a collection of values that together represent the update streams\nfor one or more fake devices."
     },
     "fakeDeleteValue": {
       "type": "object",
@@ -1346,7 +1506,7 @@
         },
         "random": {
           "type": "boolean",
-          "description": "Set to true to randomize selection of value from options. If false, the\r\nvalues are cycled in order."
+          "description": "Set to true to randomize selection of value from options. If false, the\nvalues are cycled in order."
         }
       }
     },
@@ -1365,7 +1525,7 @@
         "deltaMin": {
           "type": "number",
           "format": "double",
-          "description": "If set, the value is cumulative and the subsequent value is value + delta\r\nwhere delta is randomly chosen between delta_min and delta_max. The range\r\nminimum and maximum are still respected. If not set subsequent value is a\r\nvalue randomly chosen between minimum and maximum."
+          "description": "If set, the value is cumulative and the subsequent value is value + delta\nwhere delta is randomly chosen between delta_min and delta_max. The range\nminimum and maximum are still respected. If not set subsequent value is a\nvalue randomly chosen between minimum and maximum."
         },
         "deltaMax": {
           "type": "number",
@@ -1379,7 +1539,7 @@
         "value": {
           "type": "number",
           "format": "double",
-          "description": "If distribution is DoubleRange, value is used as the initial value\r\ninside [minimum, maximum] and hold the value as it mutates.\r\nIf distribution is DoubleList, value is only used to hold the value as it\r\nmutates.\r\nIf no distribution is set, value is used as it mutates, i.e. constant\r\nupdate."
+          "description": "If distribution is DoubleRange, value is used as the initial value\ninside [minimum, maximum] and hold the value as it mutates.\nIf distribution is DoubleList, value is only used to hold the value as it\nmutates.\nIf no distribution is set, value is used as it mutates, i.e. constant\nupdate."
         },
         "range": {
           "$ref": "#/definitions/fakeDoubleRange"
@@ -1413,7 +1573,7 @@
         },
         "random": {
           "type": "boolean",
-          "description": "Set to true to randomize selection of value from options. If false, the\r\nvalues are cycled in order, starting at index 0."
+          "description": "Set to true to randomize selection of value from options. If false, the\nvalues are cycled in order, starting at index 0."
         }
       }
     },
@@ -1432,7 +1592,7 @@
         "deltaMin": {
           "type": "string",
           "format": "int64",
-          "description": "If set, the value is cumulative and the subsequent value is value + delta\r\nwhere delta is randomly chosen between delta_min and delta_max.  The range\r\nminimum and maximum are still respected and values will saturate at the\r\nboundaries if they are exceeded. If not set subsequent value is a value\r\nrandomly chosen between minimum and maximum."
+          "description": "If set, the value is cumulative and the subsequent value is value + delta\nwhere delta is randomly chosen between delta_min and delta_max.  The range\nminimum and maximum are still respected and values will saturate at the\nboundaries if they are exceeded. If not set subsequent value is a value\nrandomly chosen between minimum and maximum."
         },
         "deltaMax": {
           "type": "string",
@@ -1446,7 +1606,7 @@
         "value": {
           "type": "string",
           "format": "int64",
-          "description": "If distribution is IntRange, value is used as the initial value\r\ninside [minimum, maximum] and hold the value as it mutates.\r\nIf distribution is IntList, value is only used to hold the value as it\r\nmutates.\r\nIf no distribution is set, value is used as it mutates, i.e. constant\r\nupdate."
+          "description": "If distribution is IntRange, value is used as the initial value\ninside [minimum, maximum] and hold the value as it mutates.\nIf distribution is IntList, value is only used to hold the value as it\nmutates.\nIf no distribution is set, value is used as it mutates, i.e. constant\nupdate."
         },
         "range": {
           "$ref": "#/definitions/fakeIntRange"
@@ -1483,7 +1643,7 @@
         },
         "random": {
           "type": "boolean",
-          "description": "Set to true to randomize selection of value from options. If false, the\r\nvalues are cycled in order, starting at index 0."
+          "description": "Set to true to randomize selection of value from options. If false, the\nvalues are cycled in order, starting at index 0."
         }
       }
     },
@@ -1495,7 +1655,7 @@
           "items": {
             "type": "string"
           },
-          "description": "If distribution is StringList, value is used to hold the value as it\r\nmutates.\r\nIf no distribution is set, value is used as it mutates, i.e. constant\r\nupdate."
+          "description": "If distribution is StringList, value is used to hold the value as it\nmutates.\nIf no distribution is set, value is used as it mutates, i.e. constant\nupdate."
         },
         "list": {
           "$ref": "#/definitions/fakeStringList"
@@ -1507,7 +1667,7 @@
       "properties": {
         "value": {
           "type": "string",
-          "description": "If distribution is StringList, value is used to hold the value as it\r\nmutates.\r\nIf no distribution is set, value is used as it mutates, i.e. constant\r\nupdate."
+          "description": "If distribution is StringList, value is used to hold the value as it\nmutates.\nIf no distribution is set, value is used as it mutates, i.e. constant\nupdate."
         },
         "list": {
           "$ref": "#/definitions/fakeStringList"
@@ -1520,12 +1680,12 @@
         "timestamp": {
           "type": "string",
           "format": "int64",
-          "description": "Initial timestamp for the corresponding value, nanoseconds since epoch.\r\nThis value need have no relation to absolute real-time as the stream of\r\nof updates is generated without regard to the real clock and can be run\r\nrepeatably at any time if the seed is set in the corresponding Value."
+          "description": "Initial timestamp for the corresponding value, nanoseconds since epoch.\nThis value need have no relation to absolute real-time as the stream of\nof updates is generated without regard to the real clock and can be run\nrepeatably at any time if the seed is set in the corresponding Value."
         },
         "deltaMin": {
           "type": "string",
           "format": "int64",
-          "description": "These values will vary the change in the timestamp for subsequent outputs\r\nby a value between delta_min and delta_max.  Set to the same value to force\r\na set periodic interval."
+          "description": "These values will vary the change in the timestamp for subsequent outputs\nby a value between delta_min and delta_max.  Set to the same value to force\na set periodic interval."
         },
         "deltaMax": {
           "type": "string",
@@ -1546,7 +1706,7 @@
         },
         "random": {
           "type": "boolean",
-          "description": "Set to true to randomize selection of value from options. If false, the\r\nvalues are cycled in order, starting at index 0."
+          "description": "Set to true to randomize selection of value from options. If false, the\nvalues are cycled in order, starting at index 0."
         }
       }
     },
@@ -1565,7 +1725,7 @@
         "deltaMin": {
           "type": "string",
           "format": "int64",
-          "description": "If set, the value is cumulative and the subsequent value is value + delta\r\nwhere delta is randomly chosen between delta_min and delta_max.  The range\r\nminimum and maximum are still respected and values will saturate at the\r\nboundaries if they are exceeded. If not set subsequent value is a value\r\nrandomly chosen between minimum and maximum."
+          "description": "If set, the value is cumulative and the subsequent value is value + delta\nwhere delta is randomly chosen between delta_min and delta_max.  The range\nminimum and maximum are still respected and values will saturate at the\nboundaries if they are exceeded. If not set subsequent value is a value\nrandomly chosen between minimum and maximum."
         },
         "deltaMax": {
           "type": "string",
@@ -1579,7 +1739,7 @@
         "value": {
           "type": "string",
           "format": "uint64",
-          "description": "If distribution is UintRange, value is used as the initial value\r\ninside [minimum, maximum] and hold the value as it mutates.\r\nIf distribution is UintList, value is only used to hold the value as it\r\nmutates.\r\nIf no distribution is set, value is used as it mutates, i.e. constant\r\nupdate."
+          "description": "If distribution is UintRange, value is used as the initial value\ninside [minimum, maximum] and hold the value as it mutates.\nIf distribution is UintList, value is only used to hold the value as it\nmutates.\nIf no distribution is set, value is used as it mutates, i.e. constant\nupdate."
         },
         "range": {
           "$ref": "#/definitions/fakeUintRange"
@@ -1599,7 +1759,7 @@
           "type": "string"
         }
       },
-      "title": "Alias specifies a data tree path, and an associated string which defines an\r\nalias which is to be used for this path in the context of the RPC. The alias\r\nis specified as a string which is prefixed with \"#\" to disambiguate it from\r\ndata tree element paths.\r\nReference: gNMI Specification Section 2.4.2"
+      "title": "Alias specifies a data tree path, and an associated string which defines an\nalias which is to be used for this path in the context of the RPC. The alias\nis specified as a string which is prefixed with \"#\" to disambiguate it from\ndata tree element paths.\nReference: gNMI Specification Section 2.4.2"
     },
     "gnmiAliasList": {
       "type": "object",
@@ -1611,7 +1771,7 @@
           }
         }
       },
-      "title": "AliasList specifies a list of aliases. It is used in a SubscribeRequest for\r\na client to create a set of aliases that the target is to utilize.\r\nReference: gNMI Specification Section 3.5.1.6"
+      "title": "AliasList specifies a list of aliases. It is used in a SubscribeRequest for\na client to create a set of aliases that the target is to utilize.\nReference: gNMI Specification Section 3.5.1.6"
     },
     "gnmiCapabilityRequest": {
       "type": "object",
@@ -1621,10 +1781,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the CapabilityRequest. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the CapabilityRequest. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "CapabilityRequest is sent by the client in the Capabilities RPC to request\r\nthat the target reports its capabilities.\r\nReference: gNMI Specification Section 3.2.1"
+      "title": "CapabilityRequest is sent by the client in the Capabilities RPC to request\nthat the target reports its capabilities.\nReference: gNMI Specification Section 3.2.1"
     },
     "gnmiCapabilityResponse": {
       "type": "object",
@@ -1649,10 +1809,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the CapabilityResponse. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the CapabilityResponse. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "CapabilityResponse is used by the target to report its capabilities to the\r\nclient within the Capabilities RPC.\r\nReference: gNMI Specification Section 3.2.2"
+      "title": "CapabilityResponse is used by the target to report its capabilities to the\nclient within the Capabilities RPC.\nReference: gNMI Specification Section 3.2.2"
     },
     "gnmiDecimal64": {
       "type": "object",
@@ -1666,7 +1826,7 @@
           "format": "int64"
         }
       },
-      "description": "Decimal64 is used to encode a fixed precision decimal number. The value\r\nis expressed as a set of digits with the precision specifying the\r\nnumber of digits following the decimal point in the digit set."
+      "description": "Decimal64 is used to encode a fixed precision decimal number. The value\nis expressed as a set of digits with the precision specifying the\nnumber of digits following the decimal point in the digit set."
     },
     "gnmiEncoding": {
       "type": "string",
@@ -1678,7 +1838,7 @@
         "JSON_IETF"
       ],
       "default": "JSON",
-      "title": "Encoding defines the value encoding formats that are supported by the gNMI\r\nprotocol. These encodings are used by both the client (when sending Set\r\nmessages to modify the state of the target) and the target when serializing\r\ndata to be returned to the client (in both Subscribe and Get RPCs).\r\nReference: gNMI Specification Section 2.3"
+      "title": "Encoding defines the value encoding formats that are supported by the gNMI\nprotocol. These encodings are used by both the client (when sending Set\nmessages to modify the state of the target) and the target when serializing\ndata to be returned to the client (in both Subscribe and Get RPCs).\nReference: gNMI Specification Section 2.3"
     },
     "gnmiError": {
       "type": "object",
@@ -1694,7 +1854,7 @@
           "$ref": "#/definitions/protobufAny"
         }
       },
-      "title": "Error message previously utilised to return errors to the client. Deprecated\r\nin favour of using the google.golang.org/genproto/googleapis/rpc/status\r\nmessage in the RPC response.\r\nReference: gNMI Specification Section 2.5"
+      "title": "Error message previously utilised to return errors to the client. Deprecated\nin favour of using the google.golang.org/genproto/googleapis/rpc/status\nmessage in the RPC response.\nReference: gNMI Specification Section 2.5"
     },
     "gnmiGetRequest": {
       "type": "object",
@@ -1725,10 +1885,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the GetRequest. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the GetRequest. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "GetRequest is sent when a client initiates a Get RPC. It is used to specify\r\nthe set of data elements for which the target should return a snapshot of\r\ndata. The use_models field specifies the set of schema modules that are to\r\nbe used by the target - where use_models is not specified then the target\r\nmust use all schema models that it has.\r\nReference: gNMI Specification Section 3.3.1"
+      "title": "GetRequest is sent when a client initiates a Get RPC. It is used to specify\nthe set of data elements for which the target should return a snapshot of\ndata. The use_models field specifies the set of schema modules that are to\nbe used by the target - where use_models is not specified then the target\nmust use all schema models that it has.\nReference: gNMI Specification Section 3.3.1"
     },
     "gnmiGetResponse": {
       "type": "object",
@@ -1747,10 +1907,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the GetResponse. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the GetResponse. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "GetResponse is used by the target to respond to a GetRequest from a client.\r\nThe set of Notifications corresponds to the data values that are requested\r\nby the client in the GetRequest.\r\nReference: gNMI Specification Section 3.3.2"
+      "title": "GetResponse is used by the target to respond to a GetRequest from a client.\nThe set of Notifications corresponds to the data values that are requested\nby the client in the GetRequest.\nReference: gNMI Specification Section 3.3.2"
     },
     "gnmiModelData": {
       "type": "object",
@@ -1765,7 +1925,7 @@
           "type": "string"
         }
       },
-      "title": "ModelData is used to describe a set of schema modules. It can be used in a\r\nCapabilityResponse where a target reports the set of modules that it\r\nsupports, and within the SubscribeRequest and GetRequest messages to specify\r\nthe set of models from which data tree elements should be reported.\r\nReference: gNMI Specification Section 3.2.3"
+      "title": "ModelData is used to describe a set of schema modules. It can be used in a\nCapabilityResponse where a target reports the set of modules that it\nsupports, and within the SubscribeRequest and GetRequest messages to specify\nthe set of models from which data tree elements should be reported.\nReference: gNMI Specification Section 3.2.3"
     },
     "gnmiNil": {
       "type": "object"
@@ -1782,7 +1942,7 @@
         },
         "alias": {
           "type": "string",
-          "title": "An alias for the path specified in the prefix field.\r\nReference: gNMI Specification Section 2.4.2"
+          "title": "An alias for the path specified in the prefix field.\nReference: gNMI Specification Section 2.4.2"
         },
         "update": {
           "type": "array",
@@ -1798,10 +1958,10 @@
         },
         "atomic": {
           "type": "boolean",
-          "description": "This notification contains a set of paths that are always updated together\r\nreferenced by a globally unique prefix."
+          "description": "This notification contains a set of paths that are always updated together\nreferenced by a globally unique prefix."
         }
       },
-      "title": "Notification is a re-usable message that is used to encode data from the\r\ntarget to the client. A Notification carries two types of changes to the data\r\ntree:\r\n - Deleted values (delete) - a set of paths that have been removed from the\r\n   data tree.\r\n - Updated values (update) - a set of path-value pairs indicating the path\r\n   whose value has changed in the data tree.\r\nReference: gNMI Specification Section 2.1"
+      "title": "Notification is a re-usable message that is used to encode data from the\ntarget to the client. A Notification carries two types of changes to the data\ntree:\n - Deleted values (delete) - a set of paths that have been removed from the\n   data tree.\n - Updated values (update) - a set of path-value pairs indicating the path\n   whose value has changed in the data tree.\nReference: gNMI Specification Section 2.1"
     },
     "gnmiPath": {
       "type": "object",
@@ -1811,7 +1971,7 @@
           "items": {
             "type": "string"
           },
-          "description": "Elements of the path are no longer encoded as a string, but rather within\r\nthe elem field as a PathElem message."
+          "description": "Elements of the path are no longer encoded as a string, but rather within\nthe elem field as a PathElem message."
         },
         "origin": {
           "type": "string"
@@ -1826,7 +1986,7 @@
           "type": "string"
         }
       },
-      "description": "Path encodes a data tree path as a series of repeated strings, with\r\neach element of the path representing a data tree node name and the\r\nassociated attributes.\r\nReference: gNMI Specification Section 2.2.2."
+      "description": "Path encodes a data tree path as a series of repeated strings, with\neach element of the path representing a data tree node name and the\nassociated attributes.\nReference: gNMI Specification Section 2.2.2."
     },
     "gnmiPathElem": {
       "type": "object",
@@ -1841,11 +2001,11 @@
           }
         }
       },
-      "description": "PathElem encodes an element of a gNMI path, along with any attributes (keys)\r\nthat may be associated with it.\r\nReference: gNMI Specification Section 2.2.2."
+      "description": "PathElem encodes an element of a gNMI path, along with any attributes (keys)\nthat may be associated with it.\nReference: gNMI Specification Section 2.2.2."
     },
     "gnmiPoll": {
       "type": "object",
-      "title": "Poll is sent within a SubscribeRequest to trigger the device to\r\nsend telemetry updates for the paths that are associated with the\r\nsubscription.\r\nReference: gNMI Specification Section Section 3.5.1.4"
+      "title": "Poll is sent within a SubscribeRequest to trigger the device to\nsend telemetry updates for the paths that are associated with the\nsubscription.\nReference: gNMI Specification Section Section 3.5.1.4"
     },
     "gnmiQOSMarking": {
       "type": "object",
@@ -1855,7 +2015,7 @@
           "format": "int64"
         }
       },
-      "title": "QOSMarking specifies the DSCP value to be set on transmitted telemetry\r\nupdates from the target.\r\nReference: gNMI Specification Section 3.5.1.2"
+      "title": "QOSMarking specifies the DSCP value to be set on transmitted telemetry\nupdates from the target.\nReference: gNMI Specification Section 3.5.1.2"
     },
     "gnmiReconnectRequest": {
       "type": "object",
@@ -1876,7 +2036,7 @@
           "items": {
             "$ref": "#/definitions/gnmiTypedValue"
           },
-          "description": "The set of elements within the array. Each TypedValue message should\r\nspecify only elements that have a field identifier of 1-7 (i.e., the\r\nvalues are scalar values)."
+          "description": "The set of elements within the array. Each TypedValue message should\nspecify only elements that have a field identifier of 1-7 (i.e., the\nvalues are scalar values)."
         }
       },
       "description": "ScalarArray is used to encode a mixed-type array of values."
@@ -1910,10 +2070,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the SetRequest. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the SetRequest. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "SetRequest is sent from a client to the target to update values in the data\r\ntree. Paths are either deleted by the client, or modified by means of being\r\nupdated, or replaced. Where a replace is used, unspecified values are\r\nconsidered to be replaced, whereas when update is used the changes are\r\nconsidered to be incremental. The set of changes that are specified within\r\na single SetRequest are considered to be a transaction.\r\nReference: gNMI Specification Section 3.4.1"
+      "title": "SetRequest is sent from a client to the target to update values in the data\ntree. Paths are either deleted by the client, or modified by means of being\nupdated, or replaced. Where a replace is used, unspecified values are\nconsidered to be replaced, whereas when update is used the changes are\nconsidered to be incremental. The set of changes that are specified within\na single SetRequest are considered to be a transaction.\nReference: gNMI Specification Section 3.4.1"
     },
     "gnmiSetResponse": {
       "type": "object",
@@ -1926,7 +2086,7 @@
           "items": {
             "$ref": "#/definitions/gnmiUpdateResult"
           },
-          "description": "A set of responses specifying the result of the operations specified in\r\nthe SetRequest."
+          "description": "A set of responses specifying the result of the operations specified in\nthe SetRequest."
         },
         "message": {
           "$ref": "#/definitions/gnmiError"
@@ -1940,10 +2100,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the SetResponse. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the SetResponse. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "SetResponse is the response to a SetRequest, sent from the target to the\r\nclient. It reports the result of the modifications to the data tree that were\r\nspecified by the client. Errors for this RPC should be reported using the\r\nhttps://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto\r\nmessage in the RPC return. The gnmi.Error message can be used to add additional\r\ndetails where required.\r\nReference: gNMI Specification Section 3.4.2"
+      "title": "SetResponse is the response to a SetRequest, sent from the target to the\nclient. It reports the result of the modifications to the data tree that were\nspecified by the client. Errors for this RPC should be reported using the\nhttps://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto\nmessage in the RPC return. The gnmi.Error message can be used to add additional\ndetails where required.\nReference: gNMI Specification Section 3.4.2"
     },
     "gnmiSubscribeRequest": {
       "type": "object",
@@ -1962,10 +2122,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the SubscribeRequest. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the SubscribeRequest. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "SubscribeRequest is the message sent by the client to the target when\r\ninitiating a subscription to a set of paths within the data tree. The\r\nrequest field must be populated and the initial message must specify a\r\nSubscriptionList to initiate a subscription. The message is subsequently\r\nused to define aliases or trigger polled data to be sent by the target.\r\nReference: gNMI Specification Section 3.5.1.1"
+      "title": "SubscribeRequest is the message sent by the client to the target when\ninitiating a subscription to a set of paths within the data tree. The\nrequest field must be populated and the initial message must specify a\nSubscriptionList to initiate a subscription. The message is subsequently\nused to define aliases or trigger polled data to be sent by the target.\nReference: gNMI Specification Section 3.5.1.1"
     },
     "gnmiSubscribeResponse": {
       "type": "object",
@@ -1975,7 +2135,7 @@
         },
         "syncResponse": {
           "type": "boolean",
-          "description": "Indicate target has sent all values associated with the subscription\r\nat least once."
+          "description": "Indicate target has sent all values associated with the subscription\nat least once."
         },
         "error": {
           "$ref": "#/definitions/gnmiError",
@@ -1986,10 +2146,10 @@
           "items": {
             "$ref": "#/definitions/gnmi_extExtension"
           },
-          "description": "Extension messages associated with the SubscribeResponse. See the\r\ngNMI extension specification for further definition."
+          "description": "Extension messages associated with the SubscribeResponse. See the\ngNMI extension specification for further definition."
         }
       },
-      "title": "SubscribeResponse is the message used by the target within a Subscribe RPC.\r\nThe target includes a Notification message which is used to transmit values\r\nof the path(s) that are associated with the subscription. The same message\r\nis to indicate that the target has sent all data values once (is\r\nsynchronized).\r\nReference: gNMI Specification Section 3.5.1.4"
+      "title": "SubscribeResponse is the message used by the target within a Subscribe RPC.\nThe target includes a Notification message which is used to transmit values\nof the path(s) that are associated with the subscription. The same message\nis to indicate that the target has sent all data values once (is\nsynchronized).\nReference: gNMI Specification Section 3.5.1.4"
     },
     "gnmiSubscription": {
       "type": "object",
@@ -2006,15 +2166,15 @@
         },
         "suppressRedundant": {
           "type": "boolean",
-          "description": "Indicates whether values that have not changed should be sent in a SAMPLE\r\nsubscription."
+          "description": "Indicates whether values that have not changed should be sent in a SAMPLE\nsubscription."
         },
         "heartbeatInterval": {
           "type": "string",
           "format": "uint64",
-          "description": "Specifies the maximum allowable silent period in nanoseconds when\r\nsuppress_redundant is in use. The target should send a value at least once\r\nin the period specified."
+          "description": "Specifies the maximum allowable silent period in nanoseconds when\nsuppress_redundant is in use. The target should send a value at least once\nin the period specified."
         }
       },
-      "title": "Subscription is a single request within a SubscriptionList. The path\r\nspecified is interpreted (along with the prefix) as the elements of the data\r\ntree that the client is subscribing to. The mode determines how the target\r\nshould trigger updates to be sent.\r\nReference: gNMI Specification Section 3.5.1.3"
+      "title": "Subscription is a single request within a SubscriptionList. The path\nspecified is interpreted (along with the prefix) as the elements of the data\ntree that the client is subscribing to. The mode determines how the target\nshould trigger updates to be sent.\nReference: gNMI Specification Section 3.5.1.3"
     },
     "gnmiSubscriptionList": {
       "type": "object",
@@ -2040,25 +2200,25 @@
         },
         "allowAggregation": {
           "type": "boolean",
-          "description": "Whether elements of the schema that are marked as eligible for aggregation\r\nshould be aggregated or not."
+          "description": "Whether elements of the schema that are marked as eligible for aggregation\nshould be aggregated or not."
         },
         "useModels": {
           "type": "array",
           "items": {
             "$ref": "#/definitions/gnmiModelData"
           },
-          "description": "The set of schemas that define the elements of the data tree that should\r\nbe sent by the target."
+          "description": "The set of schemas that define the elements of the data tree that should\nbe sent by the target."
         },
         "encoding": {
           "$ref": "#/definitions/gnmiEncoding",
-          "description": "The encoding that the target should use within the Notifications generated\r\ncorresponding to the SubscriptionList."
+          "description": "The encoding that the target should use within the Notifications generated\ncorresponding to the SubscriptionList."
         },
         "updatesOnly": {
           "type": "boolean",
-          "description": "An optional field to specify that only updates to current state should be\r\nsent to a client. If set, the initial state is not sent to the client but\r\nrather only the sync message followed by any subsequent updates to the\r\ncurrent state. For ONCE and POLL modes, this causes the server to send only\r\nthe sync message (Sec. 3.5.2.3)."
+          "description": "An optional field to specify that only updates to current state should be\nsent to a client. If set, the initial state is not sent to the client but\nrather only the sync message followed by any subsequent updates to the\ncurrent state. For ONCE and POLL modes, this causes the server to send only\nthe sync message (Sec. 3.5.2.3)."
         }
       },
-      "title": "SubscriptionList is used within a Subscribe message to specify the list of\r\npaths that the client wishes to subscribe to. The message consists of a\r\nlist of (possibly prefixed) paths, and options that relate to the\r\nsubscription.\r\nReference: gNMI Specification Section 3.5.1.2"
+      "title": "SubscriptionList is used within a Subscribe message to specify the list of\npaths that the client wishes to subscribe to. The message consists of a\nlist of (possibly prefixed) paths, and options that relate to the\nsubscription.\nReference: gNMI Specification Section 3.5.1.2"
     },
     "gnmiSubscriptionMode": {
       "type": "string",
@@ -2068,7 +2228,7 @@
         "SAMPLE"
       ],
       "default": "TARGET_DEFINED",
-      "title": "SubscriptionMode is the mode of the subscription, specifying how the\r\ntarget must return values in a subscription.\r\nReference: gNMI Specification Section 3.5.1.3"
+      "title": "SubscriptionMode is the mode of the subscription, specifying how the\ntarget must return values in a subscription.\nReference: gNMI Specification Section 3.5.1.3"
     },
     "gnmiTypedValue": {
       "type": "object",
@@ -2118,10 +2278,10 @@
         "protoBytes": {
           "type": "string",
           "format": "byte",
-          "description": "Protobuf binary encoded bytes. The message type is not included.\r\nSee the specification at\r\ngithub.com/openconfig/reference/blob/master/rpc/gnmi/protobuf-vals.md\r\nfor a complete specification."
+          "description": "Protobuf binary encoded bytes. The message type is not included.\nSee the specification at\ngithub.com/openconfig/reference/blob/master/rpc/gnmi/protobuf-vals.md\nfor a complete specification."
         }
       },
-      "description": "TypedValue is used to encode a value being sent between the client and\r\ntarget (originated by either entity)."
+      "description": "TypedValue is used to encode a value being sent between the client and\ntarget (originated by either entity)."
     },
     "gnmiUpdate": {
       "type": "object",
@@ -2140,7 +2300,7 @@
           "format": "int64"
         }
       },
-      "title": "Update is a re-usable message that is used to store a particular Path,\r\nValue pair.\r\nReference: gNMI Specification Section 2.1"
+      "title": "Update is a re-usable message that is used to store a particular Path,\nValue pair.\nReference: gNMI Specification Section 2.1"
     },
     "gnmiUpdateResult": {
       "type": "object",
@@ -2148,7 +2308,7 @@
         "timestamp": {
           "type": "string",
           "format": "int64",
-          "description": "Deprecated timestamp for the UpdateResult, this field has been\r\nreplaced by the timestamp within the SetResponse message, since\r\nall mutations effected by a set should be applied as a single\r\ntransaction."
+          "description": "Deprecated timestamp for the UpdateResult, this field has been\nreplaced by the timestamp within the SetResponse message, since\nall mutations effected by a set should be applied as a single\ntransaction."
         },
         "path": {
           "$ref": "#/definitions/gnmiPath"
@@ -2160,7 +2320,7 @@
           "$ref": "#/definitions/gnmiUpdateResultOperation"
         }
       },
-      "title": "UpdateResult is used within the SetResponse message to communicate the\r\nresult of an operation specified within a SetRequest message.\r\nReference: gNMI Specification Section 3.4.2"
+      "title": "UpdateResult is used within the SetResponse message to communicate the\nresult of an operation specified within a SetRequest message.\nReference: gNMI Specification Section 3.4.2"
     },
     "gnmiUpdateResultOperation": {
       "type": "string",
@@ -2184,7 +2344,7 @@
           "$ref": "#/definitions/gnmiEncoding"
         }
       },
-      "description": "Value encodes a data tree node's value - along with the way in which\r\nthe value is encoded. This message is deprecated by gNMI 0.3.0.\r\nReference: gNMI Specification Section 2.2.3."
+      "description": "Value encodes a data tree node's value - along with the way in which\nthe value is encoded. This message is deprecated by gNMI 0.3.0.\nReference: gNMI Specification Section 2.2.3."
     },
     "gnmi_extExtension": {
       "type": "object",
@@ -2209,7 +2369,7 @@
         "EID_EXPERIMENTAL"
       ],
       "default": "EID_UNSET",
-      "description": "RegisteredExtension is an enumeration acting as a registry for extensions\r\ndefined by external sources.\n\n - EID_EXPERIMENTAL: An experimental extension that may be used during prototyping of a new\r\nextension."
+      "description": "RegisteredExtension is an enumeration acting as a registry for extensions\ndefined by external sources.\n\n - EID_EXPERIMENTAL: An experimental extension that may be used during prototyping of a new\nextension."
     },
     "gnmi_extHistory": {
       "type": "object",
@@ -2222,7 +2382,7 @@
           "$ref": "#/definitions/gnmi_extTimeRange"
         }
       },
-      "title": "The History extension allows clients to request historical data. Its\r\nspec can be found at\r\nhttps://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-history.md"
+      "title": "The History extension allows clients to request historical data. Its\nspec can be found at\nhttps://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-history.md"
     },
     "gnmi_extMasterArbitration": {
       "type": "object",
@@ -2234,7 +2394,7 @@
           "$ref": "#/definitions/gnmi_extUint128"
         }
       },
-      "title": "MasterArbitration is used to select the master among multiple gNMI clients\r\nwith the same Roles. The client with the largest election_id is honored as\r\nthe master.\r\nThe document about gNMI master arbitration can be found at\r\nhttps://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-master-arbitration.md"
+      "title": "MasterArbitration is used to select the master among multiple gNMI clients\nwith the same Roles. The client with the largest election_id is honored as\nthe master.\nThe document about gNMI master arbitration can be found at\nhttps://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-master-arbitration.md"
     },
     "gnmi_extRegisteredExtension": {
       "type": "object",
@@ -2247,7 +2407,7 @@
           "format": "byte"
         }
       },
-      "description": "The RegisteredExtension message defines an extension which is defined outside\r\nof this file."
+      "description": "The RegisteredExtension message defines an extension which is defined outside\nof this file."
     },
     "gnmi_extRole": {
       "type": "object",
@@ -2308,17 +2468,17 @@
         },
         "timestamp": {
           "$ref": "#/definitions/fakeTimestamp",
-          "description": "The initial timestamp and configuration on how the timestamp will change\r\nfor subsequent values. If timestamp is not set the default will assume to\r\nbe the current system time."
+          "description": "The initial timestamp and configuration on how the timestamp will change\nfor subsequent values. If timestamp is not set the default will assume to\nbe the current system time."
         },
         "repeat": {
           "type": "integer",
           "format": "int32",
-          "description": "If set, repeat indicates that the value should be repeated this many times,\r\notherwise it is repeated indefinitely."
+          "description": "If set, repeat indicates that the value should be repeated this many times,\notherwise it is repeated indefinitely."
         },
         "seed": {
           "type": "string",
           "format": "int64",
-          "description": "A local random seed used in generating subsequent values for this path. If\r\nnot set, will share the global random source with seed defined in Config."
+          "description": "A local random seed used in generating subsequent values for this path. If\nnot set, will share the global random source with seed defined in Config."
         },
         "intValue": {
           "$ref": "#/definitions/fakeIntValue"
@@ -2346,7 +2506,7 @@
           "$ref": "#/definitions/fakeStringListValue"
         }
       },
-      "description": "Value is the main message that will trigger a stream of updates for a given\r\npath.  A file containing a list of values can be used to simulate a network\r\ndevice for integration tests."
+      "description": "Value is the main message that will trigger a stream of updates for a given\npath.  A file containing a list of values can be used to simulate a network\ndevice for integration tests."
     },
     "googlerpcStatus": {
       "type": "object",
@@ -2366,7 +2526,52 @@
         }
       }
     },
-    "pndv1alphaOperation": {
+    "gosdncsbiGetRequest": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "all": {
+          "type": "boolean"
+        },
+        "did": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "gosdncsbiGetResponse": {
+      "type": "object",
+      "properties": {
+        "timestamp": {
+          "type": "string",
+          "format": "int64"
+        },
+        "deployments": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/csbiDeployment"
+          }
+        }
+      }
+    },
+    "gosdncsbiState": {
+      "type": "string",
+      "enum": [
+        "STATE_UNSPECIFIED",
+        "STATE_ANNOUNCED",
+        "STATE_BUILT",
+        "STATE_DEPLOYED",
+        "STATE_RUNNING",
+        "STATE_DECOMMISSIONED"
+      ],
+      "default": "STATE_UNSPECIFIED"
+    },
+    "gosdnpndOperation": {
       "type": "string",
       "enum": [
         "OPERATION_UNSPECIFIED",
@@ -2376,7 +2581,7 @@
       ],
       "default": "OPERATION_UNSPECIFIED"
     },
-    "pndv1alphaSetResponse": {
+    "gosdnpndSetResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2384,11 +2589,11 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/pndv1alphaStatus"
+          "$ref": "#/definitions/gosdnpndStatus"
         }
       }
     },
-    "pndv1alphaStatus": {
+    "gosdnpndStatus": {
       "type": "string",
       "enum": [
         "STATUS_UNSPECIFIED",
@@ -2397,18 +2602,7 @@
       ],
       "default": "STATUS_UNSPECIFIED"
     },
-    "protobufAny": {
-      "type": "object",
-      "properties": {
-        "@type": {
-          "type": "string",
-          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
-        }
-      },
-      "additionalProperties": {},
-      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
-    },
-    "southboundv1alphaType": {
+    "gosdnsouthboundType": {
       "type": "string",
       "enum": [
         "TYPE_UNSPECIFIED",
@@ -2418,19 +2612,7 @@
       ],
       "default": "TYPE_UNSPECIFIED"
     },
-    "v1alphaAck": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "transportOption": {
-          "$ref": "#/definitions/v1alphaTransportOption"
-        }
-      }
-    },
-    "v1alphaApiOperation": {
+    "pndApiOperation": {
       "type": "string",
       "enum": [
         "API_OPERATION_UNSPECIFIED",
@@ -2440,7 +2622,7 @@
       ],
       "default": "API_OPERATION_UNSPECIFIED"
     },
-    "v1alphaChange": {
+    "pndChange": {
       "type": "object",
       "properties": {
         "id": {
@@ -2451,11 +2633,11 @@
           "format": "int64"
         },
         "state": {
-          "$ref": "#/definitions/v1alphaChange_State"
+          "$ref": "#/definitions/pndChangeState"
         }
       }
     },
-    "v1alphaChangeRequest": {
+    "pndChangeRequest": {
       "type": "object",
       "properties": {
         "path": {
@@ -2465,101 +2647,23 @@
           "type": "string"
         },
         "apiOp": {
-          "$ref": "#/definitions/v1alphaApiOperation"
+          "$ref": "#/definitions/pndApiOperation"
         }
       },
       "title": "TODO: rename"
     },
-    "v1alphaChange_State": {
+    "pndChangeState": {
       "type": "string",
       "enum": [
-        "STATE_UNSPECIFIED",
-        "STATE_PENDING",
-        "STATE_COMMITTED",
-        "STATE_CONFIRMED",
-        "STATE_INCONSISTENT"
+        "CHANGE_STATE_UNSPECIFIED",
+        "CHANGE_STATE_PENDING",
+        "CHANGE_STATE_COMMITTED",
+        "CHANGE_STATE_CONFIRMED",
+        "CHANGE_STATE_INCONSISTENT"
       ],
-      "default": "STATE_UNSPECIFIED"
-    },
-    "v1alphaCreatePluginRequest": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "transportOption": {
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/v1alphaTransportOption"
-          }
-        }
-      }
-    },
-    "v1alphaCreatePndRequest": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "pnd": {
-          "$ref": "#/definitions/v1alphaPndCreateProperties"
-        }
-      }
-    },
-    "v1alphaCreatePndResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "status": {
-          "$ref": "#/definitions/v1alphaCreatePndResponseStatus"
-        }
-      }
-    },
-    "v1alphaCreatePndResponseStatus": {
-      "type": "string",
-      "enum": [
-        "STATUS_UNSPECIFIED",
-        "STATUS_OK",
-        "STATUS_ERROR"
-      ],
-      "default": "STATUS_UNSPECIFIED"
+      "default": "CHANGE_STATE_UNSPECIFIED"
     },
-    "v1alphaCreateRequest": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "transportOption": {
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/v1alphaTransportOption"
-          }
-        }
-      }
-    },
-    "v1alphaCreateResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "deployments": {
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/v1alphaDeployment"
-          }
-        }
-      }
-    },
-    "v1alphaDeleteOndResponse": {
+    "pndDeleteOndResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2567,11 +2671,11 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/pndv1alphaStatus"
+          "$ref": "#/definitions/gosdnpndStatus"
         }
       }
     },
-    "v1alphaDeletePndResponse": {
+    "pndDeletePndResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2579,61 +2683,11 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/pndv1alphaStatus"
-        }
-      }
-    },
-    "v1alphaDeleteRequest": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "did": {
-          "type": "array",
-          "items": {
-            "type": "string"
-          }
-        }
-      }
-    },
-    "v1alphaDeleteResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "status": {
-          "$ref": "#/definitions/v1alphaDeleteResponseStatus"
-        }
-      }
-    },
-    "v1alphaDeleteResponseStatus": {
-      "type": "string",
-      "enum": [
-        "STATUS_UNSPECIFIED",
-        "STATUS_OK",
-        "STATUS_ERROR"
-      ],
-      "default": "STATUS_UNSPECIFIED"
-    },
-    "v1alphaDeployment": {
-      "type": "object",
-      "properties": {
-        "id": {
-          "type": "string"
-        },
-        "name": {
-          "type": "string"
-        },
-        "state": {
-          "$ref": "#/definitions/csbiv1alphaState"
+          "$ref": "#/definitions/gosdnpndStatus"
         }
       }
     },
-    "v1alphaGetChangeListResponse": {
+    "pndGetChangeListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2641,18 +2695,18 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\r\nis also sufficient."
+          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "change": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/v1alphaChange"
+            "$ref": "#/definitions/pndChange"
           }
         }
       }
     },
-    "v1alphaGetChangeResponse": {
+    "pndGetChangeResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2660,15 +2714,15 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\r\nis also sufficient."
+          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "change": {
-          "$ref": "#/definitions/v1alphaChange"
+          "$ref": "#/definitions/pndChange"
         }
       }
     },
-    "v1alphaGetOndListResponse": {
+    "pndGetOndListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2676,18 +2730,18 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\r\nis also sufficient."
+          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "ond": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/v1alphaOrchestratedNetworkingDevice"
+            "$ref": "#/definitions/pndOrchestratedNetworkingDevice"
           }
         }
       }
     },
-    "v1alphaGetOndResponse": {
+    "pndGetOndResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2695,15 +2749,15 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\r\nis also sufficient."
+          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "ond": {
-          "$ref": "#/definitions/v1alphaOrchestratedNetworkingDevice"
+          "$ref": "#/definitions/pndOrchestratedNetworkingDevice"
         }
       }
     },
-    "v1alphaGetPathResponse": {
+    "pndGetPathResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2711,8 +2765,8 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\r\nis also sufficient."
+          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "device": {
           "type": "array",
@@ -2722,7 +2776,7 @@
         }
       }
     },
-    "v1alphaGetPndListResponse": {
+    "pndGetSbiListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2730,45 +2784,18 @@
           "format": "int64"
         },
         "pnd": {
-          "type": "array",
-          "items": {
-            "$ref": "#/definitions/v1alphaPrincipalNetworkDomain"
-          }
-        }
-      }
-    },
-    "v1alphaGetPndResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain"
-        }
-      }
-    },
-    "v1alphaGetSbiListResponse": {
-      "type": "object",
-      "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\r\nis also sufficient."
+          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "sbi": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/v1alphaSouthboundInterface"
+            "$ref": "#/definitions/southboundSouthboundInterface"
           }
         }
       }
     },
-    "v1alphaGetSbiResponse": {
+    "pndGetSbiResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2776,35 +2803,15 @@
           "format": "int64"
         },
         "pnd": {
-          "$ref": "#/definitions/v1alphaPrincipalNetworkDomain",
-          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\r\nis also sufficient."
+          "$ref": "#/definitions/pndPrincipalNetworkDomain",
+          "description": "TODO: Check if this is really needed. Perhaps a reference to the PND's ID\nis also sufficient."
         },
         "sbi": {
-          "$ref": "#/definitions/v1alphaSouthboundInterface"
-        }
-      }
-    },
-    "v1alphaGnmiTransportOption": {
-      "type": "object",
-      "properties": {
-        "compression": {
-          "type": "string"
-        },
-        "grpcDialOptions": {
-          "type": "object",
-          "additionalProperties": {
-            "type": "string"
-          }
-        },
-        "token": {
-          "type": "string"
-        },
-        "encoding": {
-          "$ref": "#/definitions/gnmiEncoding"
+          "$ref": "#/definitions/southboundSouthboundInterface"
         }
       }
     },
-    "v1alphaOrchestratedNetworkingDevice": {
+    "pndOrchestratedNetworkingDevice": {
       "type": "object",
       "properties": {
         "id": {
@@ -2820,34 +2827,11 @@
           }
         },
         "sbi": {
-          "$ref": "#/definitions/v1alphaSouthboundInterface"
-        }
-      }
-    },
-    "v1alphaPayload": {
-      "type": "object",
-      "properties": {
-        "chunk": {
-          "type": "string",
-          "format": "byte"
-        }
-      }
-    },
-    "v1alphaPndCreateProperties": {
-      "type": "object",
-      "properties": {
-        "name": {
-          "type": "string"
-        },
-        "description": {
-          "type": "string"
-        },
-        "sbi": {
-          "type": "string"
+          "$ref": "#/definitions/southboundSouthboundInterface"
         }
       }
     },
-    "v1alphaPrincipalNetworkDomain": {
+    "pndPrincipalNetworkDomain": {
       "type": "object",
       "properties": {
         "id": {
@@ -2861,21 +2845,18 @@
         }
       }
     },
-    "v1alphaRestconfTransportOption": {
-      "type": "object"
-    },
-    "v1alphaSetChange": {
+    "pndSetChange": {
       "type": "object",
       "properties": {
         "cuid": {
           "type": "string"
         },
         "op": {
-          "$ref": "#/definitions/pndv1alphaOperation"
+          "$ref": "#/definitions/gosdnpndOperation"
         }
       }
     },
-    "v1alphaSetChangeListResponse": {
+    "pndSetChangeListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2883,34 +2864,34 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/pndv1alphaStatus"
+          "$ref": "#/definitions/gosdnpndStatus"
         },
         "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndv1alphaSetResponse"
+            "$ref": "#/definitions/gosdnpndSetResponse"
           }
         }
       }
     },
-    "v1alphaSetOnd": {
+    "pndSetOnd": {
       "type": "object",
       "properties": {
         "address": {
           "type": "string"
         },
         "sbi": {
-          "$ref": "#/definitions/v1alphaSouthboundInterface"
+          "$ref": "#/definitions/southboundSouthboundInterface"
         },
         "deviceName": {
           "type": "string"
         },
         "transportOption": {
-          "$ref": "#/definitions/v1alphaTransportOption"
+          "$ref": "#/definitions/transportTransportOption"
         }
       }
     },
-    "v1alphaSetOndListResponse": {
+    "pndSetOndListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2918,17 +2899,17 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/pndv1alphaStatus"
+          "$ref": "#/definitions/gosdnpndStatus"
         },
         "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndv1alphaSetResponse"
+            "$ref": "#/definitions/gosdnpndSetResponse"
           }
         }
       }
     },
-    "v1alphaSetPathListResponse": {
+    "pndSetPathListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2936,20 +2917,20 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/pndv1alphaStatus"
+          "$ref": "#/definitions/gosdnpndStatus"
         },
         "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndv1alphaSetResponse"
+            "$ref": "#/definitions/gosdnpndSetResponse"
           }
         }
       }
     },
-    "v1alphaSetSbi": {
+    "pndSetSbi": {
       "type": "object"
     },
-    "v1alphaSetSbiListResponse": {
+    "pndSetSbiListResponse": {
       "type": "object",
       "properties": {
         "timestamp": {
@@ -2957,43 +2938,62 @@
           "format": "int64"
         },
         "status": {
-          "$ref": "#/definitions/pndv1alphaStatus"
+          "$ref": "#/definitions/gosdnpndStatus"
         },
         "responses": {
           "type": "array",
           "items": {
-            "$ref": "#/definitions/pndv1alphaSetResponse"
+            "$ref": "#/definitions/gosdnpndSetResponse"
           }
         }
       }
     },
-    "v1alphaSouthboundInterface": {
+    "protobufAny": {
+      "type": "object",
+      "properties": {
+        "@type": {
+          "type": "string",
+          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
+        }
+      },
+      "additionalProperties": {},
+      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
+    },
+    "southboundSouthboundInterface": {
       "type": "object",
       "properties": {
         "id": {
           "type": "string"
         },
         "type": {
-          "$ref": "#/definitions/southboundv1alphaType"
+          "$ref": "#/definitions/gosdnsouthboundType"
         }
       }
     },
-    "v1alphaSyn": {
+    "transportGnmiTransportOption": {
       "type": "object",
       "properties": {
-        "timestamp": {
-          "type": "string",
-          "format": "int64"
-        },
-        "id": {
+        "compression": {
           "type": "string"
         },
-        "address": {
+        "grpcDialOptions": {
+          "type": "object",
+          "additionalProperties": {
+            "type": "string"
+          }
+        },
+        "token": {
           "type": "string"
+        },
+        "encoding": {
+          "$ref": "#/definitions/gnmiEncoding"
         }
       }
     },
-    "v1alphaTransportOption": {
+    "transportRestconfTransportOption": {
+      "type": "object"
+    },
+    "transportTransportOption": {
       "type": "object",
       "properties": {
         "address": {
@@ -3009,13 +3009,13 @@
           "type": "boolean"
         },
         "gnmiTransportOption": {
-          "$ref": "#/definitions/v1alphaGnmiTransportOption"
+          "$ref": "#/definitions/transportGnmiTransportOption"
         },
         "restconfTransportOption": {
-          "$ref": "#/definitions/v1alphaRestconfTransportOption"
+          "$ref": "#/definitions/transportRestconfTransportOption"
         },
         "type": {
-          "$ref": "#/definitions/southboundv1alphaType"
+          "$ref": "#/definitions/gosdnsouthboundType"
         }
       }
     }
diff --git a/proto/gosdn/core/core.proto b/proto/gosdn/core/core.proto
index b625e6cb6a942f05e27ad5f8fb38a3c55480a9d4..fc5b2bae051e10560d29e409a8a1b8ac706e8854 100644
--- a/proto/gosdn/core/core.proto
+++ b/proto/gosdn/core/core.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-package gosdn.core.v1alpha;
+package gosdn.core;
 
 import "google/api/annotations.proto";
 import "gosdn/pnd/pnd.proto";
@@ -10,17 +10,17 @@ option go_package = "code.fbi.h-da.de/danet/api/go/gosdn/core";
 service CoreService {
   rpc GetPnd(GetPndRequest) returns (GetPndResponse) {
     option (google.api.http) = {
-      get: "/v1/pnd/{pid}"
+      get: "/pnd/{pid}"
     };
   }
   rpc GetPndList(GetPndListRequest) returns (GetPndListResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds"
+      get: "/pnds"
     };
   }
   rpc CreatePnd(CreatePndRequest) returns (CreatePndResponse) {
     option (google.api.http) = {
-      post: "/v1/pnds"
+      post: "/pnds"
       body: "*"
     };
   }
@@ -37,12 +37,12 @@ message GetPndRequest {
 
 message GetPndListResponse {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  repeated .gosdn.pnd.v1alpha.PrincipalNetworkDomain pnd = 2;
+  repeated .gosdn.pnd.PrincipalNetworkDomain pnd = 2;
 }
 
 message GetPndResponse {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  .gosdn.pnd.v1alpha.PrincipalNetworkDomain pnd = 2;
+  .gosdn.pnd.PrincipalNetworkDomain pnd = 2;
 }
 
 message CreatePndRequest {
diff --git a/proto/gosdn/csbi/csbi.proto b/proto/gosdn/csbi/csbi.proto
index f59a09e049971b97fed9114ee02914f97f2c8769..633115be837f9d33478b5eac45ebce03afbbd639 100644
--- a/proto/gosdn/csbi/csbi.proto
+++ b/proto/gosdn/csbi/csbi.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-package gosdn.csbi.v1alpha;
+package gosdn.csbi;
 
 import "gosdn/transport/transport.proto";
 
@@ -22,7 +22,7 @@ message Syn {
 
 message Ack {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  .gosdn.transport.v1alpha.TransportOption transport_option = 2;
+  .gosdn.transport.TransportOption transport_option = 2;
 }
 
 message GetRequest {
@@ -53,12 +53,12 @@ enum State {
 
 message CreateRequest {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  repeated .gosdn.transport.v1alpha.TransportOption transport_option = 2;
+  repeated .gosdn.transport.TransportOption transport_option = 2;
 }
 
 message CreatePluginRequest {
   int64 timestamp = 1;          // Timestamp in nanoseconds since Epoch.
-  repeated .gosdn.transport.v1alpha.TransportOption transport_option = 2;
+  repeated .gosdn.transport.TransportOption transport_option = 2;
 }
 
 message CreateResponse {
diff --git a/proto/gosdn/pnd/pnd.proto b/proto/gosdn/pnd/pnd.proto
index cb3e348b5a5780855da6af75dfa9b9ef1d23295d..3a9ee870207ad00737a2089ab720f7fb75fe7f6a 100644
--- a/proto/gosdn/pnd/pnd.proto
+++ b/proto/gosdn/pnd/pnd.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-package gosdn.pnd.v1alpha;
+package gosdn.pnd;
 
 import "google/api/annotations.proto";
 //import "protoc-gen-openapiv2/options/annotations.proto";
@@ -34,17 +34,17 @@ service PndService {
   // specific Principal Network Domain.
   rpc GetOndList(GetOndListRequest) returns (GetOndListResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds/{pid}/onds"
+      get: "/pnds/{pid}/onds"
     };
   }
   rpc GetOnd(GetOndRequest) returns (GetOndResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds/{pid}/ond/{did}"
+      get: "/pnds/{pid}/ond/{did}"
     };
   }
   rpc SetOndList(SetOndListRequest) returns (SetOndListResponse) {
     option (google.api.http) = {
-      post: "/v1/pnds/{pid}/onds"
+      post: "/pnds/{pid}/onds"
       body: "*"
     };
   }
@@ -52,34 +52,34 @@ service PndService {
   // Domain supports.
   rpc GetSbiList(GetSbiListRequest) returns (GetSbiListResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds/{pid}/sbis"
+      get: "/pnds/{pid}/sbis"
     };
   }
   rpc GetSbi(GetSbiRequest) returns (GetSbiResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds/{pid}/sbis/{sid}"
+      get: "/pnds/{pid}/sbis/{sid}"
     };
   }
   rpc SetSbiList(SetSbiListRequest) returns (SetSbiListResponse) {
     option (google.api.http) = {
-      post: "/v1/pnds/{pid}/sbis"
+      post: "/pnds/{pid}/sbis"
       body: "*"
     };
   }
   // Allows to request Changes registered for a specific Principal Network Domain.
   rpc GetChangeList(GetChangeListRequest) returns (GetChangeListResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds/{pid}/changes"
+      get: "/pnds/{pid}/changes"
     };
   }
   rpc GetChange(GetChangeRequest) returns (GetChangeResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds/{pid}/changes/{cuid}"
+      get: "/pnds/{pid}/changes/{cuid}"
     };
   }
   rpc SetChangeList(SetChangeListRequest) returns (SetChangeListResponse) {
     option (google.api.http) = {
-      post: "/v1/pnds/{pid}/changes"
+      post: "/pnds/{pid}/changes"
       body: "*"
     };
   }
@@ -87,23 +87,23 @@ service PndService {
   // managed by a specific Principal Network Domain.
   rpc GetPath(GetPathRequest) returns (GetPathResponse) {
     option (google.api.http) = {
-      get: "/v1/pnds/{pid}/onds/{did}/paths/{path}"
+      get: "/pnds/{pid}/onds/{did}/paths/{path}"
     };
   }
   rpc SetPathList(SetPathListRequest) returns (SetPathListResponse) {
     option (google.api.http) = {
-      post: "/v1/pnds/{pid}/onds/{did}/paths"
+      post: "/pnds/{pid}/onds/{did}/paths"
       body: "*"
     };
   }
   rpc DeletePnd(DeletePndRequest) returns (DeletePndResponse) {
     option (google.api.http) = {
-      delete: "/v1/pnds/{pid}"
+      delete: "/pnds/{pid}"
     };
   }
   rpc DeleteOnd(DeleteOndRequest) returns (DeleteOndResponse) {
     option (google.api.http) = {
-      delete: "/v1/pnds/{pid}/onds/{did}"
+      delete: "/pnds/{pid}/onds/{did}"
     };
   }
 }
@@ -168,7 +168,7 @@ message GetSbiResponse {
   // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
   // is also sufficient.
   PrincipalNetworkDomain pnd = 2;
-  .gosdn.southbound.v1alpha.SouthboundInterface sbi = 3;
+  .gosdn.southbound.SouthboundInterface sbi = 3;
 }
 
 message GetSbiListResponse {
@@ -176,7 +176,7 @@ message GetSbiListResponse {
   // TODO: Check if this is really needed. Perhaps a reference to the PND's ID
   // is also sufficient.
   PrincipalNetworkDomain pnd = 2;
-  repeated .gosdn.southbound.v1alpha.SouthboundInterface sbi = 3;
+  repeated .gosdn.southbound.SouthboundInterface sbi = 3;
 }
 
 message GetPathResponse {
@@ -213,22 +213,22 @@ message OrchestratedNetworkingDevice {
   string id = 1;
   string name = 2;
   repeated gnmi.Notification device = 3;
-  .gosdn.southbound.v1alpha.SouthboundInterface sbi = 4;
+  .gosdn.southbound.SouthboundInterface sbi = 4;
 }
 
-enum Change_State {
-  STATE_UNSPECIFIED = 0;
-  STATE_PENDING = 1;
-  STATE_COMMITTED = 2;
-  STATE_CONFIRMED = 3;
-  STATE_INCONSISTENT = 4;
+enum ChangeState {
+  CHANGE_STATE_UNSPECIFIED = 0;
+  CHANGE_STATE_PENDING = 1;
+  CHANGE_STATE_COMMITTED = 2;
+  CHANGE_STATE_CONFIRMED = 3;
+  CHANGE_STATE_INCONSISTENT = 4;
 }
 
 message Change {
   string id = 1;
   int64 age = 2;
 
-  Change_State state = 3;
+  ChangeState state = 3;
 }
 
 message SetOndListRequest {
@@ -258,9 +258,9 @@ message SetPathListRequest {
 
 message SetOnd {
   string address = 1;
-  .gosdn.southbound.v1alpha.SouthboundInterface sbi = 2;
+  .gosdn.southbound.SouthboundInterface sbi = 2;
   string device_name = 3;
-  .gosdn.transport.v1alpha.TransportOption transport_option = 4;
+  .gosdn.transport.TransportOption transport_option = 4;
 }
 
 message SetSbi {
diff --git a/proto/gosdn/southbound/southbound.proto b/proto/gosdn/southbound/southbound.proto
index 9b69ad2430fddf3b9c088f6aae0580403d3f1e78..4a87687ec97af3ee9ea33f63baf2b18fab0aa8a5 100644
--- a/proto/gosdn/southbound/southbound.proto
+++ b/proto/gosdn/southbound/southbound.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-package gosdn.southbound.v1alpha;
+package gosdn.southbound;
 
 import "google/protobuf/descriptor.proto";
 
diff --git a/proto/gosdn/transport/transport.proto b/proto/gosdn/transport/transport.proto
index a264413890cc36d164923327bd9bbbaa4669e7b7..5e8d2f646b6e69bb8caac31818d563364f97d103 100644
--- a/proto/gosdn/transport/transport.proto
+++ b/proto/gosdn/transport/transport.proto
@@ -1,6 +1,6 @@
 syntax = "proto3";
 
-package gosdn.transport.v1alpha;
+package gosdn.transport;
 
 import "google/protobuf/descriptor.proto";
 import "github.com/openconfig/gnmi/proto/gnmi/gnmi.proto";
@@ -17,7 +17,7 @@ message TransportOption {
     GnmiTransportOption gnmi_transport_option = 5;
     RestconfTransportOption restconf_transport_option = 6;
   }
-  .gosdn.southbound.v1alpha.Type type = 7;
+  .gosdn.southbound.Type type = 7;
 }
 
 message GnmiTransportOption {