diff --git a/csi.proto b/csi.proto index d7eb2888..61bfbc85 100644 --- a/csi.proto +++ b/csi.proto @@ -12,6 +12,9 @@ service Identity { rpc GetPluginCapabilities(GetPluginCapabilitiesRequest) returns (GetPluginCapabilitiesResponse) {} + + rpc Probe (ProbeRequest) + returns (ProbeResponse) {} } service Controller { @@ -36,9 +39,6 @@ service Controller { rpc GetCapacity (GetCapacityRequest) returns (GetCapacityResponse) {} - rpc ControllerProbe (ControllerProbeRequest) - returns (ControllerProbeResponse) {} - rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest) returns (ControllerGetCapabilitiesResponse) {} } @@ -59,9 +59,6 @@ service Node { rpc NodeGetId (NodeGetIdRequest) returns (NodeGetIdResponse) {} - rpc NodeProbe (NodeProbeRequest) - returns (NodeProbeResponse) {} - rpc NodeGetCapabilities (NodeGetCapabilitiesRequest) returns (NodeGetCapabilitiesResponse) {} } @@ -148,6 +145,16 @@ message PluginCapability { } //////// //////// +message ProbeRequest { + // The API version assumed by the CO. This is a REQUIRED field. + Version version = 1; +} + +message ProbeResponse { + // Intentionally empty. +} +//////// +//////// message CreateVolumeRequest { // The API version assumed by the CO. This field is REQUIRED. Version version = 1; @@ -511,14 +518,6 @@ message GetCapacityResponse { } //////// //////// -message ControllerProbeRequest { - // The API version assumed by the CO. This is a REQUIRED field. - Version version = 1; -} - -message ControllerProbeResponse {} -//////// -//////// message ControllerGetCapabilitiesRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; @@ -730,14 +729,6 @@ message NodeGetIdResponse { } //////// //////// -message NodeProbeRequest { - // The API version assumed by the CO. This is a REQUIRED field. - Version version = 1; -} - -message NodeProbeResponse {} -//////// -//////// message NodeGetCapabilitiesRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; diff --git a/lib/go/csi/csi.pb.go b/lib/go/csi/csi.pb.go index 289c22c6..99710211 100644 --- a/lib/go/csi/csi.pb.go +++ b/lib/go/csi/csi.pb.go @@ -16,6 +16,8 @@ It has these top-level messages: GetPluginCapabilitiesRequest GetPluginCapabilitiesResponse PluginCapability + ProbeRequest + ProbeResponse CreateVolumeRequest CreateVolumeResponse VolumeCapability @@ -33,8 +35,6 @@ It has these top-level messages: ListVolumesResponse GetCapacityRequest GetCapacityResponse - ControllerProbeRequest - ControllerProbeResponse ControllerGetCapabilitiesRequest ControllerGetCapabilitiesResponse ControllerServiceCapability @@ -48,8 +48,6 @@ It has these top-level messages: NodeUnpublishVolumeResponse NodeGetIdRequest NodeGetIdResponse - NodeProbeRequest - NodeProbeResponse NodeGetCapabilitiesRequest NodeGetCapabilitiesResponse NodeServiceCapability @@ -148,7 +146,7 @@ func (x VolumeCapability_AccessMode_Mode) String() string { return proto.EnumName(VolumeCapability_AccessMode_Mode_name, int32(x)) } func (VolumeCapability_AccessMode_Mode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 2, 0} + return fileDescriptor0, []int{12, 2, 0} } type ControllerServiceCapability_RPC_Type int32 @@ -203,7 +201,7 @@ func (x NodeServiceCapability_RPC_Type) String() string { return proto.EnumName(NodeServiceCapability_RPC_Type_name, int32(x)) } func (NodeServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{44, 0, 0} + return fileDescriptor0, []int{42, 0, 0} } // ////// @@ -475,6 +473,33 @@ func (m *PluginCapability_Service) GetType() PluginCapability_Service_Type { return PluginCapability_Service_UNKNOWN } +// ////// +// ////// +type ProbeRequest struct { + // The API version assumed by the CO. This is a REQUIRED field. + Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` +} + +func (m *ProbeRequest) Reset() { *m = ProbeRequest{} } +func (m *ProbeRequest) String() string { return proto.CompactTextString(m) } +func (*ProbeRequest) ProtoMessage() {} +func (*ProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } + +func (m *ProbeRequest) GetVersion() *Version { + if m != nil { + return m.Version + } + return nil +} + +type ProbeResponse struct { +} + +func (m *ProbeResponse) Reset() { *m = ProbeResponse{} } +func (m *ProbeResponse) String() string { return proto.CompactTextString(m) } +func (*ProbeResponse) ProtoMessage() {} +func (*ProbeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } + // ////// // ////// type CreateVolumeRequest struct { @@ -530,7 +555,7 @@ type CreateVolumeRequest struct { func (m *CreateVolumeRequest) Reset() { *m = CreateVolumeRequest{} } func (m *CreateVolumeRequest) String() string { return proto.CompactTextString(m) } func (*CreateVolumeRequest) ProtoMessage() {} -func (*CreateVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } +func (*CreateVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } func (m *CreateVolumeRequest) GetVersion() *Version { if m != nil { @@ -584,7 +609,7 @@ type CreateVolumeResponse struct { func (m *CreateVolumeResponse) Reset() { *m = CreateVolumeResponse{} } func (m *CreateVolumeResponse) String() string { return proto.CompactTextString(m) } func (*CreateVolumeResponse) ProtoMessage() {} -func (*CreateVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } +func (*CreateVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } func (m *CreateVolumeResponse) GetVolume() *Volume { if m != nil { @@ -609,7 +634,7 @@ type VolumeCapability struct { func (m *VolumeCapability) Reset() { *m = VolumeCapability{} } func (m *VolumeCapability) String() string { return proto.CompactTextString(m) } func (*VolumeCapability) ProtoMessage() {} -func (*VolumeCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } +func (*VolumeCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } type isVolumeCapability_AccessType interface { isVolumeCapability_AccessType() @@ -735,7 +760,7 @@ func (m *VolumeCapability_BlockVolume) Reset() { *m = VolumeCapability_B func (m *VolumeCapability_BlockVolume) String() string { return proto.CompactTextString(m) } func (*VolumeCapability_BlockVolume) ProtoMessage() {} func (*VolumeCapability_BlockVolume) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 0} + return fileDescriptor0, []int{12, 0} } // Indicate that the volume will be accessed via the filesystem API. @@ -755,7 +780,7 @@ func (m *VolumeCapability_MountVolume) Reset() { *m = VolumeCapability_M func (m *VolumeCapability_MountVolume) String() string { return proto.CompactTextString(m) } func (*VolumeCapability_MountVolume) ProtoMessage() {} func (*VolumeCapability_MountVolume) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 1} + return fileDescriptor0, []int{12, 1} } func (m *VolumeCapability_MountVolume) GetFsType() string { @@ -781,7 +806,7 @@ type VolumeCapability_AccessMode struct { func (m *VolumeCapability_AccessMode) Reset() { *m = VolumeCapability_AccessMode{} } func (m *VolumeCapability_AccessMode) String() string { return proto.CompactTextString(m) } func (*VolumeCapability_AccessMode) ProtoMessage() {} -func (*VolumeCapability_AccessMode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 2} } +func (*VolumeCapability_AccessMode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12, 2} } func (m *VolumeCapability_AccessMode) GetMode() VolumeCapability_AccessMode_Mode { if m != nil { @@ -807,7 +832,7 @@ type CapacityRange struct { func (m *CapacityRange) Reset() { *m = CapacityRange{} } func (m *CapacityRange) String() string { return proto.CompactTextString(m) } func (*CapacityRange) ProtoMessage() {} -func (*CapacityRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } +func (*CapacityRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } func (m *CapacityRange) GetRequiredBytes() int64 { if m != nil { @@ -848,7 +873,7 @@ type Volume struct { func (m *Volume) Reset() { *m = Volume{} } func (m *Volume) String() string { return proto.CompactTextString(m) } func (*Volume) ProtoMessage() {} -func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } func (m *Volume) GetCapacityBytes() int64 { if m != nil { @@ -896,7 +921,7 @@ type DeleteVolumeRequest struct { func (m *DeleteVolumeRequest) Reset() { *m = DeleteVolumeRequest{} } func (m *DeleteVolumeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteVolumeRequest) ProtoMessage() {} -func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } +func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } func (m *DeleteVolumeRequest) GetVersion() *Version { if m != nil { @@ -925,7 +950,7 @@ type DeleteVolumeResponse struct { func (m *DeleteVolumeResponse) Reset() { *m = DeleteVolumeResponse{} } func (m *DeleteVolumeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteVolumeResponse) ProtoMessage() {} -func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } +func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } // ////// // ////// @@ -965,7 +990,7 @@ type ControllerPublishVolumeRequest struct { func (m *ControllerPublishVolumeRequest) Reset() { *m = ControllerPublishVolumeRequest{} } func (m *ControllerPublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*ControllerPublishVolumeRequest) ProtoMessage() {} -func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } +func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } func (m *ControllerPublishVolumeRequest) GetVersion() *Version { if m != nil { @@ -1028,7 +1053,7 @@ func (m *ControllerPublishVolumeResponse) Reset() { *m = ControllerPubli func (m *ControllerPublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*ControllerPublishVolumeResponse) ProtoMessage() {} func (*ControllerPublishVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{16} + return fileDescriptor0, []int{18} } func (m *ControllerPublishVolumeResponse) GetPublishInfo() map[string]string { @@ -1069,7 +1094,7 @@ func (m *ControllerUnpublishVolumeRequest) Reset() { *m = ControllerUnpu func (m *ControllerUnpublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*ControllerUnpublishVolumeRequest) ProtoMessage() {} func (*ControllerUnpublishVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{17} + return fileDescriptor0, []int{19} } func (m *ControllerUnpublishVolumeRequest) GetVersion() *Version { @@ -1107,7 +1132,7 @@ func (m *ControllerUnpublishVolumeResponse) Reset() { *m = ControllerUnp func (m *ControllerUnpublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*ControllerUnpublishVolumeResponse) ProtoMessage() {} func (*ControllerUnpublishVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{18} + return fileDescriptor0, []int{20} } // ////// @@ -1130,7 +1155,7 @@ func (m *ValidateVolumeCapabilitiesRequest) Reset() { *m = ValidateVolum func (m *ValidateVolumeCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*ValidateVolumeCapabilitiesRequest) ProtoMessage() {} func (*ValidateVolumeCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{19} + return fileDescriptor0, []int{21} } func (m *ValidateVolumeCapabilitiesRequest) GetVersion() *Version { @@ -1175,7 +1200,7 @@ func (m *ValidateVolumeCapabilitiesResponse) Reset() { *m = ValidateVolu func (m *ValidateVolumeCapabilitiesResponse) String() string { return proto.CompactTextString(m) } func (*ValidateVolumeCapabilitiesResponse) ProtoMessage() {} func (*ValidateVolumeCapabilitiesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{20} + return fileDescriptor0, []int{22} } func (m *ValidateVolumeCapabilitiesResponse) GetSupported() bool { @@ -1216,7 +1241,7 @@ type ListVolumesRequest struct { func (m *ListVolumesRequest) Reset() { *m = ListVolumesRequest{} } func (m *ListVolumesRequest) String() string { return proto.CompactTextString(m) } func (*ListVolumesRequest) ProtoMessage() {} -func (*ListVolumesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } +func (*ListVolumesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } func (m *ListVolumesRequest) GetVersion() *Version { if m != nil { @@ -1253,7 +1278,7 @@ type ListVolumesResponse struct { func (m *ListVolumesResponse) Reset() { *m = ListVolumesResponse{} } func (m *ListVolumesResponse) String() string { return proto.CompactTextString(m) } func (*ListVolumesResponse) ProtoMessage() {} -func (*ListVolumesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } +func (*ListVolumesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } func (m *ListVolumesResponse) GetEntries() []*ListVolumesResponse_Entry { if m != nil { @@ -1276,7 +1301,7 @@ type ListVolumesResponse_Entry struct { func (m *ListVolumesResponse_Entry) Reset() { *m = ListVolumesResponse_Entry{} } func (m *ListVolumesResponse_Entry) String() string { return proto.CompactTextString(m) } func (*ListVolumesResponse_Entry) ProtoMessage() {} -func (*ListVolumesResponse_Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22, 0} } +func (*ListVolumesResponse_Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24, 0} } func (m *ListVolumesResponse_Entry) GetVolume() *Volume { if m != nil { @@ -1306,7 +1331,7 @@ type GetCapacityRequest struct { func (m *GetCapacityRequest) Reset() { *m = GetCapacityRequest{} } func (m *GetCapacityRequest) String() string { return proto.CompactTextString(m) } func (*GetCapacityRequest) ProtoMessage() {} -func (*GetCapacityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } +func (*GetCapacityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } func (m *GetCapacityRequest) GetVersion() *Version { if m != nil { @@ -1342,7 +1367,7 @@ type GetCapacityResponse struct { func (m *GetCapacityResponse) Reset() { *m = GetCapacityResponse{} } func (m *GetCapacityResponse) String() string { return proto.CompactTextString(m) } func (*GetCapacityResponse) ProtoMessage() {} -func (*GetCapacityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } +func (*GetCapacityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } func (m *GetCapacityResponse) GetAvailableCapacity() int64 { if m != nil { @@ -1351,33 +1376,6 @@ func (m *GetCapacityResponse) GetAvailableCapacity() int64 { return 0 } -// ////// -// ////// -type ControllerProbeRequest struct { - // The API version assumed by the CO. This is a REQUIRED field. - Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` -} - -func (m *ControllerProbeRequest) Reset() { *m = ControllerProbeRequest{} } -func (m *ControllerProbeRequest) String() string { return proto.CompactTextString(m) } -func (*ControllerProbeRequest) ProtoMessage() {} -func (*ControllerProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *ControllerProbeRequest) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -type ControllerProbeResponse struct { -} - -func (m *ControllerProbeResponse) Reset() { *m = ControllerProbeResponse{} } -func (m *ControllerProbeResponse) String() string { return proto.CompactTextString(m) } -func (*ControllerProbeResponse) ProtoMessage() {} -func (*ControllerProbeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - // ////// // ////// type ControllerGetCapabilitiesRequest struct { @@ -1927,33 +1925,6 @@ func (m *NodeGetIdResponse) GetNodeId() string { return "" } -// ////// -// ////// -type NodeProbeRequest struct { - // The API version assumed by the CO. This is a REQUIRED field. - Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` -} - -func (m *NodeProbeRequest) Reset() { *m = NodeProbeRequest{} } -func (m *NodeProbeRequest) String() string { return proto.CompactTextString(m) } -func (*NodeProbeRequest) ProtoMessage() {} -func (*NodeProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } - -func (m *NodeProbeRequest) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -type NodeProbeResponse struct { -} - -func (m *NodeProbeResponse) Reset() { *m = NodeProbeResponse{} } -func (m *NodeProbeResponse) String() string { return proto.CompactTextString(m) } -func (*NodeProbeResponse) ProtoMessage() {} -func (*NodeProbeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } - // ////// // ////// type NodeGetCapabilitiesRequest struct { @@ -1964,7 +1935,7 @@ type NodeGetCapabilitiesRequest struct { func (m *NodeGetCapabilitiesRequest) Reset() { *m = NodeGetCapabilitiesRequest{} } func (m *NodeGetCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*NodeGetCapabilitiesRequest) ProtoMessage() {} -func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } +func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } func (m *NodeGetCapabilitiesRequest) GetVersion() *Version { if m != nil { @@ -1982,7 +1953,7 @@ type NodeGetCapabilitiesResponse struct { func (m *NodeGetCapabilitiesResponse) Reset() { *m = NodeGetCapabilitiesResponse{} } func (m *NodeGetCapabilitiesResponse) String() string { return proto.CompactTextString(m) } func (*NodeGetCapabilitiesResponse) ProtoMessage() {} -func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } +func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } func (m *NodeGetCapabilitiesResponse) GetCapabilities() []*NodeServiceCapability { if m != nil { @@ -2001,7 +1972,7 @@ type NodeServiceCapability struct { func (m *NodeServiceCapability) Reset() { *m = NodeServiceCapability{} } func (m *NodeServiceCapability) String() string { return proto.CompactTextString(m) } func (*NodeServiceCapability) ProtoMessage() {} -func (*NodeServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } +func (*NodeServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } type isNodeServiceCapability_Type interface { isNodeServiceCapability_Type() @@ -2089,7 +2060,7 @@ type NodeServiceCapability_RPC struct { func (m *NodeServiceCapability_RPC) Reset() { *m = NodeServiceCapability_RPC{} } func (m *NodeServiceCapability_RPC) String() string { return proto.CompactTextString(m) } func (*NodeServiceCapability_RPC) ProtoMessage() {} -func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44, 0} } +func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42, 0} } func (m *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type { if m != nil { @@ -2108,6 +2079,8 @@ func init() { proto.RegisterType((*GetPluginCapabilitiesResponse)(nil), "csi.GetPluginCapabilitiesResponse") proto.RegisterType((*PluginCapability)(nil), "csi.PluginCapability") proto.RegisterType((*PluginCapability_Service)(nil), "csi.PluginCapability.Service") + proto.RegisterType((*ProbeRequest)(nil), "csi.ProbeRequest") + proto.RegisterType((*ProbeResponse)(nil), "csi.ProbeResponse") proto.RegisterType((*CreateVolumeRequest)(nil), "csi.CreateVolumeRequest") proto.RegisterType((*CreateVolumeResponse)(nil), "csi.CreateVolumeResponse") proto.RegisterType((*VolumeCapability)(nil), "csi.VolumeCapability") @@ -2129,8 +2102,6 @@ func init() { proto.RegisterType((*ListVolumesResponse_Entry)(nil), "csi.ListVolumesResponse.Entry") proto.RegisterType((*GetCapacityRequest)(nil), "csi.GetCapacityRequest") proto.RegisterType((*GetCapacityResponse)(nil), "csi.GetCapacityResponse") - proto.RegisterType((*ControllerProbeRequest)(nil), "csi.ControllerProbeRequest") - proto.RegisterType((*ControllerProbeResponse)(nil), "csi.ControllerProbeResponse") proto.RegisterType((*ControllerGetCapabilitiesRequest)(nil), "csi.ControllerGetCapabilitiesRequest") proto.RegisterType((*ControllerGetCapabilitiesResponse)(nil), "csi.ControllerGetCapabilitiesResponse") proto.RegisterType((*ControllerServiceCapability)(nil), "csi.ControllerServiceCapability") @@ -2145,8 +2116,6 @@ func init() { proto.RegisterType((*NodeUnpublishVolumeResponse)(nil), "csi.NodeUnpublishVolumeResponse") proto.RegisterType((*NodeGetIdRequest)(nil), "csi.NodeGetIdRequest") proto.RegisterType((*NodeGetIdResponse)(nil), "csi.NodeGetIdResponse") - proto.RegisterType((*NodeProbeRequest)(nil), "csi.NodeProbeRequest") - proto.RegisterType((*NodeProbeResponse)(nil), "csi.NodeProbeResponse") proto.RegisterType((*NodeGetCapabilitiesRequest)(nil), "csi.NodeGetCapabilitiesRequest") proto.RegisterType((*NodeGetCapabilitiesResponse)(nil), "csi.NodeGetCapabilitiesResponse") proto.RegisterType((*NodeServiceCapability)(nil), "csi.NodeServiceCapability") @@ -2171,6 +2140,7 @@ type IdentityClient interface { GetSupportedVersions(ctx context.Context, in *GetSupportedVersionsRequest, opts ...grpc.CallOption) (*GetSupportedVersionsResponse, error) GetPluginInfo(ctx context.Context, in *GetPluginInfoRequest, opts ...grpc.CallOption) (*GetPluginInfoResponse, error) GetPluginCapabilities(ctx context.Context, in *GetPluginCapabilitiesRequest, opts ...grpc.CallOption) (*GetPluginCapabilitiesResponse, error) + Probe(ctx context.Context, in *ProbeRequest, opts ...grpc.CallOption) (*ProbeResponse, error) } type identityClient struct { @@ -2208,12 +2178,22 @@ func (c *identityClient) GetPluginCapabilities(ctx context.Context, in *GetPlugi return out, nil } +func (c *identityClient) Probe(ctx context.Context, in *ProbeRequest, opts ...grpc.CallOption) (*ProbeResponse, error) { + out := new(ProbeResponse) + err := grpc.Invoke(ctx, "/csi.Identity/Probe", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for Identity service type IdentityServer interface { GetSupportedVersions(context.Context, *GetSupportedVersionsRequest) (*GetSupportedVersionsResponse, error) GetPluginInfo(context.Context, *GetPluginInfoRequest) (*GetPluginInfoResponse, error) GetPluginCapabilities(context.Context, *GetPluginCapabilitiesRequest) (*GetPluginCapabilitiesResponse, error) + Probe(context.Context, *ProbeRequest) (*ProbeResponse, error) } func RegisterIdentityServer(s *grpc.Server, srv IdentityServer) { @@ -2274,6 +2254,24 @@ func _Identity_GetPluginCapabilities_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _Identity_Probe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProbeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IdentityServer).Probe(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/csi.Identity/Probe", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IdentityServer).Probe(ctx, req.(*ProbeRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Identity_serviceDesc = grpc.ServiceDesc{ ServiceName: "csi.Identity", HandlerType: (*IdentityServer)(nil), @@ -2290,6 +2288,10 @@ var _Identity_serviceDesc = grpc.ServiceDesc{ MethodName: "GetPluginCapabilities", Handler: _Identity_GetPluginCapabilities_Handler, }, + { + MethodName: "Probe", + Handler: _Identity_Probe_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "csi.proto", @@ -2305,7 +2307,6 @@ type ControllerClient interface { ValidateVolumeCapabilities(ctx context.Context, in *ValidateVolumeCapabilitiesRequest, opts ...grpc.CallOption) (*ValidateVolumeCapabilitiesResponse, error) ListVolumes(ctx context.Context, in *ListVolumesRequest, opts ...grpc.CallOption) (*ListVolumesResponse, error) GetCapacity(ctx context.Context, in *GetCapacityRequest, opts ...grpc.CallOption) (*GetCapacityResponse, error) - ControllerProbe(ctx context.Context, in *ControllerProbeRequest, opts ...grpc.CallOption) (*ControllerProbeResponse, error) ControllerGetCapabilities(ctx context.Context, in *ControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*ControllerGetCapabilitiesResponse, error) } @@ -2380,15 +2381,6 @@ func (c *controllerClient) GetCapacity(ctx context.Context, in *GetCapacityReque return out, nil } -func (c *controllerClient) ControllerProbe(ctx context.Context, in *ControllerProbeRequest, opts ...grpc.CallOption) (*ControllerProbeResponse, error) { - out := new(ControllerProbeResponse) - err := grpc.Invoke(ctx, "/csi.Controller/ControllerProbe", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *controllerClient) ControllerGetCapabilities(ctx context.Context, in *ControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*ControllerGetCapabilitiesResponse, error) { out := new(ControllerGetCapabilitiesResponse) err := grpc.Invoke(ctx, "/csi.Controller/ControllerGetCapabilities", in, out, c.cc, opts...) @@ -2408,7 +2400,6 @@ type ControllerServer interface { ValidateVolumeCapabilities(context.Context, *ValidateVolumeCapabilitiesRequest) (*ValidateVolumeCapabilitiesResponse, error) ListVolumes(context.Context, *ListVolumesRequest) (*ListVolumesResponse, error) GetCapacity(context.Context, *GetCapacityRequest) (*GetCapacityResponse, error) - ControllerProbe(context.Context, *ControllerProbeRequest) (*ControllerProbeResponse, error) ControllerGetCapabilities(context.Context, *ControllerGetCapabilitiesRequest) (*ControllerGetCapabilitiesResponse, error) } @@ -2542,24 +2533,6 @@ func _Controller_GetCapacity_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } -func _Controller_ControllerProbe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ControllerProbeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ControllerServer).ControllerProbe(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/csi.Controller/ControllerProbe", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ControllerServer).ControllerProbe(ctx, req.(*ControllerProbeRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Controller_ControllerGetCapabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ControllerGetCapabilitiesRequest) if err := dec(in); err != nil { @@ -2610,10 +2583,6 @@ var _Controller_serviceDesc = grpc.ServiceDesc{ MethodName: "GetCapacity", Handler: _Controller_GetCapacity_Handler, }, - { - MethodName: "ControllerProbe", - Handler: _Controller_ControllerProbe_Handler, - }, { MethodName: "ControllerGetCapabilities", Handler: _Controller_ControllerGetCapabilities_Handler, @@ -2631,7 +2600,6 @@ type NodeClient interface { NodePublishVolume(ctx context.Context, in *NodePublishVolumeRequest, opts ...grpc.CallOption) (*NodePublishVolumeResponse, error) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*NodeUnpublishVolumeResponse, error) NodeGetId(ctx context.Context, in *NodeGetIdRequest, opts ...grpc.CallOption) (*NodeGetIdResponse, error) - NodeProbe(ctx context.Context, in *NodeProbeRequest, opts ...grpc.CallOption) (*NodeProbeResponse, error) NodeGetCapabilities(ctx context.Context, in *NodeGetCapabilitiesRequest, opts ...grpc.CallOption) (*NodeGetCapabilitiesResponse, error) } @@ -2688,15 +2656,6 @@ func (c *nodeClient) NodeGetId(ctx context.Context, in *NodeGetIdRequest, opts . return out, nil } -func (c *nodeClient) NodeProbe(ctx context.Context, in *NodeProbeRequest, opts ...grpc.CallOption) (*NodeProbeResponse, error) { - out := new(NodeProbeResponse) - err := grpc.Invoke(ctx, "/csi.Node/NodeProbe", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *nodeClient) NodeGetCapabilities(ctx context.Context, in *NodeGetCapabilitiesRequest, opts ...grpc.CallOption) (*NodeGetCapabilitiesResponse, error) { out := new(NodeGetCapabilitiesResponse) err := grpc.Invoke(ctx, "/csi.Node/NodeGetCapabilities", in, out, c.cc, opts...) @@ -2714,7 +2673,6 @@ type NodeServer interface { NodePublishVolume(context.Context, *NodePublishVolumeRequest) (*NodePublishVolumeResponse, error) NodeUnpublishVolume(context.Context, *NodeUnpublishVolumeRequest) (*NodeUnpublishVolumeResponse, error) NodeGetId(context.Context, *NodeGetIdRequest) (*NodeGetIdResponse, error) - NodeProbe(context.Context, *NodeProbeRequest) (*NodeProbeResponse, error) NodeGetCapabilities(context.Context, *NodeGetCapabilitiesRequest) (*NodeGetCapabilitiesResponse, error) } @@ -2812,24 +2770,6 @@ func _Node_NodeGetId_Handler(srv interface{}, ctx context.Context, dec func(inte return interceptor(ctx, in, info, handler) } -func _Node_NodeProbe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(NodeProbeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServer).NodeProbe(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/csi.Node/NodeProbe", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServer).NodeProbe(ctx, req.(*NodeProbeRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Node_NodeGetCapabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(NodeGetCapabilitiesRequest) if err := dec(in); err != nil { @@ -2872,10 +2812,6 @@ var _Node_serviceDesc = grpc.ServiceDesc{ MethodName: "NodeGetId", Handler: _Node_NodeGetId_Handler, }, - { - MethodName: "NodeProbe", - Handler: _Node_NodeProbe_Handler, - }, { MethodName: "NodeGetCapabilities", Handler: _Node_NodeGetCapabilities_Handler, @@ -2888,154 +2824,152 @@ var _Node_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("csi.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2374 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0xcd, 0x6f, 0xdb, 0xc8, - 0xf5, 0xa2, 0x3e, 0x2c, 0xeb, 0xc9, 0xce, 0x2a, 0x63, 0xc7, 0x96, 0xe9, 0x38, 0x71, 0x98, 0x4d, - 0x36, 0x3f, 0xfc, 0xb2, 0x02, 0xea, 0xc5, 0xb6, 0xf1, 0x66, 0x13, 0xd4, 0x96, 0x19, 0x5b, 0x8d, - 0x23, 0x7b, 0x69, 0x39, 0xe9, 0x6e, 0xbb, 0xe5, 0xd2, 0xd2, 0xd8, 0x61, 0x23, 0x91, 0x5a, 0x92, - 0x32, 0x22, 0x14, 0xbd, 0xf5, 0xd4, 0xf6, 0x56, 0x14, 0xbd, 0x14, 0xed, 0xb1, 0x28, 0xd0, 0x6b, - 0x7b, 0x59, 0xf4, 0x52, 0xa0, 0xb7, 0x02, 0x3d, 0xf5, 0xde, 0xeb, 0xf6, 0xaf, 0x28, 0x38, 0x33, - 0xa4, 0x86, 0xd4, 0x90, 0xb2, 0x92, 0x4d, 0xd0, 0x93, 0xc8, 0xf7, 0x3d, 0xf3, 0xde, 0xbc, 0x79, - 0xef, 0x51, 0x50, 0x6a, 0xbb, 0x66, 0xad, 0xef, 0xd8, 0x9e, 0x8d, 0x72, 0x6d, 0xd7, 0x54, 0xd6, - 0x60, 0x75, 0x17, 0x7b, 0x47, 0x83, 0x7e, 0xdf, 0x76, 0x3c, 0xdc, 0x79, 0x8a, 0x1d, 0xd7, 0xb4, - 0x2d, 0x57, 0xc3, 0x5f, 0x0e, 0xb0, 0xeb, 0x29, 0x3f, 0x80, 0xab, 0x62, 0xb4, 0xdb, 0xb7, 0x2d, - 0x17, 0xa3, 0xfb, 0x80, 0xdc, 0x00, 0xa9, 0x9f, 0x33, 0x6c, 0x55, 0x5a, 0xcf, 0xdd, 0x29, 0x6f, - 0xcc, 0xd5, 0x7c, 0x5d, 0x8c, 0x45, 0xbb, 0xec, 0xc6, 0x85, 0x28, 0x8f, 0xa1, 0xc8, 0x9e, 0xd1, - 0x22, 0x14, 0x7a, 0xc6, 0x8f, 0x6d, 0xa7, 0x2a, 0xad, 0x4b, 0x77, 0x0a, 0x1a, 0x7d, 0x21, 0x50, - 0xd3, 0xb2, 0x9d, 0x6a, 0x96, 0x41, 0xfd, 0x17, 0x1f, 0xda, 0x37, 0xbc, 0xf6, 0xf3, 0x6a, 0x8e, - 0x42, 0xc9, 0x8b, 0xf2, 0x10, 0x16, 0x77, 0xb1, 0x77, 0xd8, 0x1d, 0x9c, 0x99, 0x56, 0xc3, 0x3a, - 0xb5, 0xd9, 0x0a, 0xd0, 0x6d, 0x28, 0x32, 0xbb, 0x88, 0xec, 0xb8, 0x59, 0x01, 0x52, 0xf9, 0x97, - 0x04, 0x57, 0x62, 0x02, 0xd8, 0x1a, 0x11, 0xe4, 0x2d, 0xa3, 0x87, 0x09, 0x7b, 0x49, 0x23, 0xcf, - 0xe8, 0x16, 0x5c, 0x3a, 0xc7, 0x56, 0xc7, 0x76, 0x82, 0x45, 0x13, 0x13, 0x4b, 0xda, 0x3c, 0x85, - 0x06, 0xcb, 0xda, 0x81, 0xd9, 0x9e, 0x61, 0x99, 0xa7, 0xd8, 0xf5, 0xaa, 0x39, 0xb2, 0x29, 0x77, - 0x88, 0x76, 0xa1, 0xa2, 0xda, 0x13, 0x46, 0xaa, 0x5a, 0x9e, 0x33, 0xd4, 0x42, 0x4e, 0xf9, 0x3e, - 0xcc, 0x47, 0x50, 0xa8, 0x02, 0xb9, 0x17, 0x78, 0xc8, 0x0c, 0xf2, 0x1f, 0xfd, 0x3d, 0x39, 0x37, - 0xba, 0x03, 0xcc, 0xcc, 0xa0, 0x2f, 0x1f, 0x65, 0xef, 0x49, 0xca, 0x23, 0xe2, 0x41, 0xaa, 0xad, - 0x6e, 0xf4, 0x8d, 0x13, 0xb3, 0x6b, 0x7a, 0x26, 0x76, 0xa7, 0xdd, 0x9f, 0xcf, 0x60, 0x2d, 0x41, - 0x0e, 0xdb, 0xa6, 0x4d, 0x98, 0x6b, 0x73, 0xf0, 0x6a, 0x96, 0xac, 0xf7, 0x0a, 0x91, 0x16, 0x63, - 0x1b, 0x6a, 0x11, 0x52, 0xe5, 0xef, 0x12, 0x54, 0xe2, 0x24, 0x68, 0x13, 0x8a, 0x2e, 0x76, 0xce, - 0xcd, 0x36, 0x66, 0x86, 0xad, 0x09, 0x45, 0xd5, 0x8e, 0x28, 0xd1, 0x5e, 0x46, 0x0b, 0xe8, 0x65, - 0x0b, 0x8a, 0x0c, 0x8a, 0xbe, 0x0d, 0x79, 0x6f, 0xd8, 0xa7, 0x22, 0x2e, 0x6d, 0x28, 0xa9, 0x22, - 0x6a, 0xad, 0x61, 0x1f, 0x6b, 0x84, 0x5e, 0xf9, 0x7f, 0xc8, 0xfb, 0x6f, 0xa8, 0x0c, 0xc5, 0xe3, - 0xe6, 0xe3, 0xe6, 0xc1, 0xb3, 0x66, 0x25, 0x83, 0x96, 0x00, 0xd5, 0x0f, 0x9a, 0x2d, 0xed, 0x60, - 0x7f, 0x5f, 0xd5, 0xf4, 0x23, 0x55, 0x7b, 0xda, 0xa8, 0xab, 0x15, 0x69, 0x7b, 0x86, 0x2a, 0x51, - 0xfe, 0x94, 0x87, 0x85, 0xba, 0x83, 0x0d, 0x0f, 0x3f, 0xb5, 0xbb, 0x83, 0x1e, 0x9e, 0x72, 0x8f, - 0xc3, 0x48, 0xcb, 0x72, 0x91, 0xb6, 0x09, 0x97, 0xfc, 0xbd, 0x6a, 0x9b, 0xde, 0x50, 0x77, 0x0c, - 0xeb, 0x0c, 0x93, 0xb0, 0x2f, 0x6f, 0x20, 0x22, 0xa2, 0xce, 0x50, 0x9a, 0x8f, 0xd1, 0xe6, 0xdb, - 0xfc, 0x2b, 0x7a, 0x04, 0x0b, 0xe7, 0xc4, 0x0e, 0x3d, 0xe2, 0x98, 0x3c, 0xe7, 0x18, 0x6a, 0x27, - 0xe7, 0x18, 0x74, 0x1e, 0x85, 0x98, 0xd8, 0x45, 0x7b, 0x00, 0x7d, 0xc3, 0x31, 0x7a, 0xd8, 0xc3, - 0x8e, 0x5b, 0x2d, 0x70, 0x71, 0x2c, 0x58, 0x6c, 0xed, 0x30, 0x24, 0xa5, 0x71, 0xcc, 0xf1, 0xa2, - 0x9f, 0xc2, 0x5a, 0xdb, 0xb6, 0x3c, 0xc7, 0xee, 0x76, 0xb1, 0xa3, 0xb7, 0x09, 0xb7, 0xff, 0xd3, - 0xc1, 0x96, 0x67, 0x1a, 0x5d, 0xb7, 0x3a, 0x43, 0x84, 0x6f, 0x26, 0x0a, 0xaf, 0x87, 0xdc, 0x14, - 0x5b, 0x1f, 0xf1, 0x52, 0x6d, 0xab, 0xed, 0x64, 0x0a, 0xf9, 0x01, 0xbc, 0x13, 0xb3, 0x6e, 0x9a, - 0xa3, 0x24, 0x37, 0x61, 0x7d, 0x92, 0xfe, 0xa9, 0x8e, 0xe6, 0x7d, 0x58, 0x8c, 0xae, 0x91, 0x9d, - 0xa4, 0x9b, 0x30, 0x43, 0xbd, 0xc0, 0xa2, 0xa5, 0xcc, 0xb9, 0x4a, 0x63, 0x28, 0xe5, 0x77, 0x79, - 0xa8, 0xc4, 0xbd, 0x87, 0x36, 0xa1, 0x70, 0xd2, 0xb5, 0xdb, 0x2f, 0x18, 0xe3, 0x0d, 0xa1, 0x8f, - 0x6b, 0xdb, 0x3e, 0x09, 0x85, 0xee, 0x65, 0x34, 0xca, 0xe1, 0xb3, 0xf6, 0xec, 0x81, 0xe5, 0x11, - 0x33, 0x13, 0x59, 0x9f, 0xf8, 0x24, 0x23, 0x56, 0xc2, 0x81, 0xb6, 0xa0, 0x6c, 0xb4, 0xdb, 0xd8, - 0x75, 0xf5, 0x9e, 0xdd, 0x09, 0xe2, 0x73, 0x5d, 0x2c, 0x60, 0x8b, 0x10, 0x3e, 0xb1, 0x3b, 0x58, - 0x03, 0x23, 0x7c, 0x96, 0xe7, 0xa1, 0xcc, 0x59, 0x25, 0xef, 0x42, 0x99, 0xd3, 0x84, 0x96, 0xa1, - 0x78, 0xea, 0xea, 0xe1, 0x39, 0x2e, 0x69, 0x33, 0xa7, 0x2e, 0x39, 0x9d, 0xd7, 0xa1, 0x4c, 0x4c, - 0xd0, 0x4f, 0xbb, 0xc6, 0x19, 0x4d, 0x39, 0x25, 0x0d, 0x08, 0xe8, 0x91, 0x0f, 0x91, 0xbf, 0x96, - 0x00, 0x46, 0x2a, 0xd1, 0x26, 0xe4, 0x89, 0x89, 0x34, 0x1b, 0xdc, 0x9a, 0x64, 0x62, 0x8d, 0xd8, - 0x49, 0x58, 0x94, 0xdf, 0x4b, 0x90, 0x27, 0x32, 0xe2, 0x19, 0xe1, 0xa8, 0xd1, 0xdc, 0xdd, 0x57, - 0xf5, 0xe6, 0xc1, 0x8e, 0xaa, 0x3f, 0xd3, 0x1a, 0x2d, 0x55, 0xab, 0x48, 0x68, 0x15, 0x96, 0x79, - 0xb8, 0xa6, 0x6e, 0xed, 0xa8, 0x9a, 0x7e, 0xd0, 0xdc, 0xff, 0xb4, 0x92, 0x45, 0x32, 0x2c, 0x3d, - 0x39, 0xde, 0x6f, 0x35, 0xc6, 0x71, 0x39, 0x74, 0x15, 0xaa, 0x1c, 0x8e, 0xc9, 0x60, 0x62, 0xf3, - 0xbe, 0x58, 0x0e, 0x4b, 0x1f, 0x19, 0xb2, 0xb0, 0x3d, 0x1f, 0xba, 0x81, 0x24, 0xa3, 0x67, 0x30, - 0x1f, 0xc9, 0x0e, 0xfe, 0x9d, 0xe5, 0xe0, 0x2f, 0x07, 0xa6, 0x83, 0x3b, 0xfa, 0xc9, 0xd0, 0xc3, - 0x2e, 0xd9, 0x86, 0x9c, 0x36, 0x1f, 0x40, 0xb7, 0x7d, 0xa0, 0xbf, 0xa7, 0x5d, 0xb3, 0x67, 0x7a, - 0x8c, 0x26, 0x4b, 0x68, 0x80, 0x80, 0x08, 0x81, 0xf2, 0x95, 0x04, 0x33, 0xcc, 0x31, 0xb7, 0xb8, - 0xe4, 0x14, 0x11, 0x19, 0x40, 0xa9, 0xc8, 0x4b, 0x90, 0x35, 0x3b, 0x2c, 0xfe, 0xb3, 0x66, 0x07, - 0xdd, 0x07, 0x30, 0x3c, 0xcf, 0x31, 0x4f, 0x06, 0x3e, 0x0b, 0xbd, 0x18, 0x57, 0x39, 0x67, 0xd4, - 0xb6, 0x42, 0x2c, 0xcb, 0x21, 0x23, 0x72, 0xff, 0x10, 0xc7, 0xd0, 0x53, 0x1d, 0xba, 0x3f, 0x66, - 0x61, 0x61, 0x07, 0x77, 0xf1, 0xab, 0xe6, 0xe8, 0x55, 0x28, 0xb1, 0xa4, 0x1a, 0x2e, 0x69, 0x96, - 0x02, 0x1a, 0x9d, 0x58, 0x7e, 0xeb, 0x10, 0x35, 0x91, 0xfc, 0x96, 0xe3, 0xf2, 0x9b, 0xc0, 0x0a, - 0x2e, 0xbf, 0x51, 0x6c, 0x5a, 0x7e, 0x1b, 0xa3, 0x88, 0x26, 0x28, 0xb1, 0x80, 0xa9, 0xf6, 0x6a, - 0x09, 0x16, 0xa3, 0x46, 0xd2, 0x04, 0xa5, 0xfc, 0x27, 0x0f, 0xd7, 0x46, 0x8a, 0x0e, 0x07, 0x27, - 0x5d, 0xd3, 0x7d, 0xfe, 0x06, 0xb6, 0x73, 0x19, 0x8a, 0x96, 0xdd, 0x21, 0xa8, 0x1c, 0x3d, 0xf7, - 0xfe, 0x6b, 0xa3, 0x83, 0xb6, 0xe1, 0x72, 0xfc, 0x66, 0x1b, 0x56, 0xf3, 0x44, 0x4f, 0xc2, 0xbd, - 0x56, 0x39, 0x8f, 0xe7, 0x4a, 0x19, 0x66, 0x1d, 0x6c, 0x74, 0x6c, 0xab, 0x3b, 0xac, 0x16, 0xd6, - 0xa5, 0x3b, 0xb3, 0x5a, 0xf8, 0x8e, 0x7e, 0x21, 0xc1, 0x35, 0xce, 0x91, 0x7d, 0xba, 0x42, 0xc1, - 0x4d, 0xa5, 0xd2, 0x9b, 0x2a, 0x75, 0x2f, 0xc6, 0xd1, 0x63, 0x5e, 0xbd, 0xda, 0x4e, 0x21, 0x41, - 0xa7, 0xe1, 0x6a, 0xb9, 0x53, 0x53, 0xe4, 0x6f, 0xca, 0x74, 0xfd, 0xf4, 0x2d, 0x7e, 0xa6, 0xd8, - 0x8e, 0x8c, 0xc0, 0xf2, 0x01, 0xdc, 0x98, 0x68, 0xea, 0x54, 0x17, 0x66, 0x1d, 0xae, 0x08, 0x75, - 0x4f, 0x15, 0x84, 0x5f, 0x49, 0x70, 0x3d, 0x71, 0x81, 0xec, 0xc6, 0xfc, 0x3e, 0xcc, 0x05, 0x3e, - 0x32, 0xad, 0x53, 0x9b, 0x35, 0x20, 0x1f, 0xa6, 0x6f, 0x0e, 0xab, 0xba, 0x19, 0xd4, 0xaf, 0xc4, - 0xe9, 0xc6, 0x94, 0xfb, 0x23, 0x88, 0xfc, 0x10, 0x2a, 0x71, 0x82, 0xa9, 0xac, 0xff, 0x3a, 0xcb, - 0x9f, 0xc9, 0x63, 0xab, 0xff, 0xf6, 0x0f, 0xcb, 0xaf, 0x24, 0x58, 0xe7, 0x82, 0x79, 0x60, 0x89, - 0xc2, 0x99, 0x16, 0x85, 0x8d, 0xd8, 0x8e, 0x89, 0xed, 0x15, 0x11, 0x8c, 0x85, 0x34, 0x77, 0x7e, - 0x44, 0x44, 0xf2, 0x27, 0x70, 0xf3, 0x02, 0x62, 0xa6, 0xda, 0xeb, 0x9b, 0x7c, 0xfc, 0x8e, 0x99, - 0xce, 0x72, 0xd7, 0xbf, 0xb3, 0x70, 0xe3, 0xa9, 0xd1, 0x35, 0x3b, 0x61, 0xdd, 0xf5, 0x1a, 0x5d, - 0x51, 0xba, 0x47, 0x12, 0xea, 0xef, 0xdc, 0xb4, 0xf5, 0xb7, 0x29, 0x3a, 0xff, 0xd4, 0x61, 0x1f, - 0x53, 0x29, 0x93, 0xd6, 0x73, 0xe1, 0x14, 0xf0, 0x8d, 0x9c, 0xd8, 0x1f, 0x82, 0x92, 0x66, 0x11, - 0x3b, 0xb3, 0x57, 0xa1, 0x14, 0x8e, 0x04, 0x88, 0xdc, 0x59, 0x6d, 0x04, 0x40, 0x55, 0x28, 0xf6, - 0xb0, 0xeb, 0x1a, 0x67, 0x81, 0xfc, 0xe0, 0x55, 0xf9, 0x99, 0x04, 0x68, 0xdf, 0x74, 0x59, 0x6d, - 0x38, 0xb5, 0xc7, 0xfc, 0x92, 0xd1, 0x78, 0xa9, 0x63, 0xcb, 0x73, 0x4c, 0x56, 0xde, 0x14, 0x34, - 0xe8, 0x19, 0x2f, 0x55, 0x0a, 0xf1, 0x6b, 0x1a, 0xd7, 0x33, 0x1c, 0xcf, 0xb4, 0xce, 0x74, 0xcf, - 0x7e, 0x81, 0x2d, 0x76, 0x9c, 0xe6, 0x03, 0x68, 0xcb, 0x07, 0x2a, 0xbf, 0x95, 0x60, 0x21, 0x62, - 0x06, 0x5b, 0xd6, 0x3d, 0x28, 0x06, 0xb2, 0x69, 0x16, 0xba, 0x46, 0xec, 0x10, 0x90, 0xd6, 0xa8, - 0x13, 0x02, 0x72, 0xb4, 0x06, 0x60, 0xe1, 0x97, 0x1e, 0x53, 0x4a, 0x57, 0x5d, 0xf2, 0x21, 0x44, - 0xa1, 0x7c, 0x17, 0x0a, 0xd4, 0x15, 0x17, 0x6a, 0x0f, 0x7e, 0x99, 0x05, 0xb4, 0x8b, 0xbd, 0xb0, - 0x02, 0x9c, 0x72, 0x97, 0x12, 0x42, 0x37, 0x3b, 0x6d, 0xe8, 0xee, 0x46, 0x5a, 0x47, 0x1a, 0xf9, - 0xef, 0x05, 0x23, 0x90, 0x98, 0x71, 0x69, 0x9d, 0xe3, 0x6b, 0xb6, 0x6e, 0xca, 0x0e, 0x2c, 0x44, - 0x14, 0x32, 0x67, 0xbd, 0x0f, 0xc8, 0x38, 0x37, 0xcc, 0xae, 0x71, 0xd2, 0xa5, 0x2b, 0xf5, 0xb1, - 0xac, 0x86, 0xbd, 0x1c, 0x62, 0x02, 0x36, 0xe5, 0xbb, 0xb0, 0xc4, 0xdd, 0x26, 0x8e, 0x7d, 0x32, - 0x6d, 0x06, 0x57, 0x56, 0x60, 0x79, 0x4c, 0x02, 0x4b, 0x4c, 0xdf, 0xe3, 0x2f, 0x0a, 0x66, 0xec, - 0xab, 0x0e, 0x6b, 0x4c, 0x3e, 0x13, 0x8e, 0xc9, 0x62, 0x8b, 0xdf, 0x11, 0x0e, 0x6c, 0xd6, 0x63, - 0x57, 0x00, 0x9b, 0x8d, 0x24, 0xce, 0x6e, 0x7e, 0x93, 0x85, 0xd5, 0x14, 0x6a, 0x74, 0x0f, 0x72, - 0x4e, 0xbf, 0xcd, 0xcc, 0x7d, 0x77, 0x92, 0xf0, 0x9a, 0x76, 0x58, 0xdf, 0xcb, 0x68, 0x3e, 0x8b, - 0xfc, 0x67, 0x09, 0x72, 0xda, 0x61, 0x1d, 0x3d, 0x88, 0x8c, 0x70, 0xfe, 0xef, 0x22, 0x22, 0xf8, - 0x49, 0x8e, 0x2d, 0x9a, 0xe4, 0x54, 0x61, 0xb1, 0xae, 0xa9, 0x5b, 0x2d, 0x55, 0xdf, 0x51, 0xf7, - 0xd5, 0x96, 0xaa, 0x3f, 0x3d, 0xd8, 0x3f, 0x7e, 0xa2, 0x56, 0x24, 0xbf, 0x01, 0x3b, 0x3c, 0xde, - 0xde, 0x6f, 0x1c, 0xed, 0xe9, 0xc7, 0xcd, 0xe0, 0x89, 0x61, 0xb3, 0xa8, 0x02, 0x73, 0xfb, 0x8d, - 0xa3, 0x16, 0x03, 0x1c, 0x55, 0x72, 0x3e, 0x64, 0x57, 0x6d, 0xe9, 0xf5, 0xad, 0xc3, 0xad, 0x7a, - 0xa3, 0xf5, 0x69, 0x25, 0x1f, 0x4e, 0x83, 0xfe, 0x5a, 0x80, 0xa5, 0xa6, 0xdd, 0xc1, 0x47, 0x9e, - 0x71, 0xf6, 0x26, 0x9a, 0x8d, 0x83, 0x58, 0xd1, 0x43, 0x4f, 0xd7, 0x5d, 0x22, 0x49, 0xac, 0x37, - 0xbd, 0xd6, 0x41, 0x35, 0x58, 0x70, 0x3d, 0xe3, 0x8c, 0x24, 0x3e, 0xc3, 0x39, 0xc3, 0x9e, 0xde, - 0x37, 0xbc, 0xe7, 0xa4, 0xae, 0x2e, 0x69, 0x97, 0x19, 0xaa, 0x45, 0x30, 0x87, 0x86, 0xf7, 0x5c, - 0x5c, 0x85, 0x17, 0xa6, 0xab, 0xc2, 0x5f, 0xc0, 0x12, 0xa9, 0x5a, 0x7c, 0xe9, 0xa2, 0x51, 0xd0, - 0x87, 0x69, 0xcb, 0x09, 0xc1, 0x63, 0xd5, 0xc7, 0xa2, 0x25, 0x40, 0xa1, 0x1f, 0x25, 0x17, 0xd2, - 0xdf, 0x4a, 0xd3, 0x73, 0xd1, 0xdb, 0xf3, 0x35, 0x8b, 0x45, 0x79, 0x17, 0x56, 0x12, 0x97, 0xf4, - 0xf6, 0x0b, 0xef, 0x15, 0x58, 0x1e, 0xdb, 0x0f, 0x96, 0xab, 0xfe, 0x99, 0x85, 0xaa, 0x8f, 0x3b, - 0xb6, 0xdc, 0x37, 0x14, 0xdc, 0x09, 0xb1, 0x98, 0x4b, 0x8a, 0x45, 0x17, 0xaa, 0x24, 0x8e, 0x06, - 0xd6, 0x78, 0x24, 0xe5, 0xb9, 0x56, 0x29, 0xc9, 0x6a, 0x1e, 0x31, 0x16, 0x4d, 0x24, 0x44, 0xc7, - 0x91, 0x72, 0x03, 0x56, 0x53, 0xd8, 0xa6, 0xda, 0xec, 0x55, 0xea, 0xfa, 0x98, 0x69, 0x6c, 0xbb, - 0x7f, 0x3e, 0x43, 0xb7, 0xfb, 0xcd, 0x75, 0xda, 0x9f, 0x08, 0x73, 0x49, 0x2d, 0xdc, 0x32, 0x61, - 0x5f, 0xf9, 0xcd, 0x66, 0x93, 0xeb, 0x50, 0xe6, 0xe9, 0x0a, 0x84, 0x0e, 0xbc, 0x09, 0xe9, 0x66, - 0xe6, 0xd5, 0x9b, 0xfe, 0x62, 0xac, 0xe9, 0x0f, 0x42, 0x48, 0xd4, 0x1e, 0xcd, 0xc6, 0x42, 0x48, - 0xb8, 0x1f, 0x1c, 0x42, 0x1c, 0x42, 0x82, 0xde, 0xfe, 0x0b, 0x51, 0x4a, 0x2a, 0x11, 0x6d, 0x1f, - 0xa4, 0x6b, 0x7b, 0x5b, 0x49, 0x89, 0x05, 0xf9, 0xff, 0xcc, 0x3c, 0x80, 0x9d, 0x14, 0x61, 0x33, - 0xaf, 0xfc, 0x23, 0x0b, 0x32, 0x3d, 0x47, 0x6f, 0xae, 0xd1, 0x8e, 0x05, 0x6a, 0x6e, 0x2c, 0x50, - 0x7f, 0x02, 0x32, 0xcb, 0x45, 0xc9, 0x9d, 0xf6, 0x03, 0x2e, 0x1b, 0xf5, 0x93, 0x82, 0x29, 0xb9, - 0xbb, 0xae, 0x5a, 0x09, 0x68, 0xf9, 0x31, 0xac, 0xa5, 0xb2, 0x4e, 0xb5, 0xd7, 0x6b, 0x41, 0x82, - 0x13, 0xf7, 0xd2, 0x1f, 0x41, 0xc5, 0x47, 0xef, 0x62, 0xaf, 0xd1, 0x99, 0xb6, 0x44, 0xbd, 0x0b, - 0x97, 0x39, 0x5e, 0x56, 0x92, 0x72, 0x33, 0x0c, 0x89, 0x9f, 0x61, 0x04, 0x9a, 0x5e, 0xa9, 0xe6, - 0x5e, 0xa0, 0x9a, 0xa2, 0xd5, 0xf6, 0x0e, 0x8d, 0x93, 0xd7, 0xac, 0xb3, 0x3f, 0xa7, 0xfb, 0x93, - 0x54, 0x61, 0x3f, 0x8c, 0x55, 0xd8, 0xb4, 0x21, 0x94, 0x47, 0xa5, 0xc6, 0x84, 0xda, 0xfa, 0x6f, - 0x12, 0x5c, 0x11, 0xd2, 0xa1, 0x0d, 0xbe, 0xaa, 0xbe, 0x96, 0x2c, 0x90, 0xaf, 0xa7, 0x7b, 0xb4, - 0x9c, 0xfe, 0x4e, 0xa4, 0x9c, 0xbe, 0x99, 0xce, 0xcb, 0x17, 0xd2, 0xef, 0x27, 0x14, 0xd2, 0x47, - 0xad, 0xad, 0x5d, 0x55, 0x3f, 0x6e, 0xd2, 0xdf, 0xa0, 0x90, 0x0e, 0xca, 0xe0, 0x8d, 0x5f, 0x67, - 0x61, 0xb6, 0x41, 0x42, 0xd0, 0x1b, 0xa2, 0xcf, 0xc9, 0x57, 0xfa, 0xb1, 0xff, 0x13, 0xa0, 0xf5, - 0xa0, 0x27, 0x4c, 0xfa, 0x27, 0x82, 0x7c, 0x23, 0x85, 0x82, 0xf9, 0x34, 0x83, 0xf6, 0x60, 0x3e, - 0xf2, 0x69, 0x1d, 0xad, 0x88, 0x3e, 0xb7, 0x53, 0x81, 0x72, 0xf2, 0x97, 0x78, 0x25, 0x83, 0xbe, - 0xe0, 0xfe, 0x0d, 0x10, 0xe9, 0x68, 0x6f, 0x44, 0xd9, 0x04, 0xd1, 0x23, 0x2b, 0x69, 0x24, 0x81, - 0x86, 0x8d, 0x3f, 0xcc, 0x00, 0x8c, 0xda, 0x18, 0xa4, 0xc2, 0x1c, 0xff, 0x31, 0x10, 0x55, 0x93, - 0xbe, 0x81, 0xca, 0x2b, 0x02, 0x4c, 0x68, 0xb7, 0x0a, 0x73, 0xfc, 0xc8, 0x9e, 0x89, 0x11, 0x7c, - 0x6a, 0x60, 0x62, 0x84, 0xf3, 0xfd, 0x0c, 0x3a, 0x8d, 0xf4, 0xa9, 0xfc, 0xe1, 0x47, 0x37, 0x2f, - 0x30, 0x72, 0x96, 0xdf, 0xbd, 0xc8, 0xe8, 0x55, 0xc9, 0xa0, 0x2e, 0xac, 0x24, 0x8e, 0xec, 0xd0, - 0xad, 0x0b, 0x4d, 0x23, 0xe5, 0xdb, 0x93, 0xc8, 0x42, 0x6d, 0x36, 0xc8, 0xc9, 0x83, 0x29, 0x74, - 0xfb, 0x62, 0xb3, 0x34, 0xf9, 0xbd, 0x89, 0x74, 0xa1, 0xc2, 0x6d, 0x28, 0x73, 0x83, 0x1f, 0xb4, - 0x3c, 0x3e, 0x0a, 0xa2, 0x22, 0xab, 0x49, 0x33, 0x22, 0x2a, 0x83, 0x1b, 0x5d, 0x30, 0x19, 0xe3, - 0xd3, 0x13, 0x26, 0x43, 0x30, 0xe5, 0x50, 0x32, 0xa8, 0x09, 0xef, 0xc4, 0xc6, 0x0e, 0x68, 0x35, - 0xee, 0x21, 0x2e, 0xb5, 0xca, 0x57, 0xc5, 0x48, 0xb1, 0xdb, 0x62, 0xd9, 0x6f, 0xcc, 0x6d, 0xe2, - 0x1c, 0x3b, 0xe6, 0xb6, 0x84, 0x24, 0xaa, 0x64, 0x36, 0xfe, 0x92, 0x87, 0xbc, 0x9f, 0xa1, 0xfc, - 0x65, 0xc4, 0x3a, 0x12, 0xb6, 0x0c, 0x71, 0xdf, 0xc6, 0x96, 0x91, 0xd4, 0xc4, 0x64, 0x50, 0x8b, - 0xde, 0x0c, 0x91, 0xa2, 0x1b, 0xad, 0xa5, 0xf6, 0x09, 0xf2, 0xb5, 0x24, 0x74, 0x5c, 0x6a, 0xf4, - 0xd4, 0xac, 0xa5, 0x16, 0x73, 0x9c, 0xd4, 0xa4, 0x93, 0xf2, 0x19, 0x2c, 0x08, 0xae, 0x62, 0x74, - 0x7d, 0x42, 0x1d, 0x21, 0xaf, 0x27, 0x13, 0x84, 0xb2, 0x3f, 0x86, 0x52, 0x78, 0x17, 0xa3, 0x2b, - 0x21, 0x03, 0x7f, 0xaf, 0xcb, 0x4b, 0x71, 0x70, 0x9c, 0x9b, 0x86, 0xd5, 0x88, 0x3b, 0x12, 0x50, - 0x4b, 0x71, 0x70, 0x7c, 0x5d, 0xf1, 0x20, 0xba, 0xce, 0xab, 0x13, 0x85, 0xcf, 0x7a, 0x32, 0x41, - 0x20, 0xfb, 0x64, 0x86, 0xfc, 0xd1, 0xed, 0x83, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x53, 0x2b, - 0xe1, 0xef, 0xf5, 0x26, 0x00, 0x00, + // 2348 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x6f, 0xdb, 0xc8, + 0xd5, 0xd4, 0x87, 0x65, 0x3d, 0xd9, 0x89, 0x3c, 0x76, 0x6c, 0x85, 0x8e, 0x13, 0x87, 0xd9, 0x64, + 0x53, 0x34, 0x2b, 0xb4, 0x5e, 0xec, 0x36, 0xde, 0x6c, 0x02, 0xd8, 0x32, 0x63, 0xab, 0x71, 0x64, + 0x2f, 0x2d, 0x27, 0xdd, 0x6d, 0xb7, 0x5c, 0x5a, 0x1a, 0x3b, 0x6c, 0x24, 0x52, 0x4b, 0x52, 0x46, + 0x84, 0xa2, 0xb7, 0x9e, 0xda, 0xde, 0x7a, 0xe8, 0xa5, 0x68, 0xcf, 0x05, 0x7a, 0xed, 0x69, 0xd1, + 0x4b, 0x81, 0xa2, 0x97, 0x02, 0x3d, 0x15, 0xbd, 0xf6, 0xba, 0xfd, 0x05, 0x3d, 0x16, 0x9c, 0x19, + 0x52, 0x43, 0x6a, 0x48, 0x59, 0xc9, 0x3a, 0xe8, 0xc9, 0xe2, 0xfb, 0x9e, 0x37, 0x6f, 0xde, 0xbc, + 0xf7, 0xc6, 0x50, 0x6c, 0xb9, 0x66, 0xb5, 0xe7, 0xd8, 0x9e, 0x8d, 0xb2, 0x2d, 0xd7, 0x54, 0x56, + 0x61, 0x65, 0x07, 0x7b, 0x87, 0xfd, 0x5e, 0xcf, 0x76, 0x3c, 0xdc, 0x7e, 0x86, 0x1d, 0xd7, 0xb4, + 0x2d, 0x57, 0xc3, 0x5f, 0xf6, 0xb1, 0xeb, 0x29, 0x3f, 0x84, 0x6b, 0x62, 0xb4, 0xdb, 0xb3, 0x2d, + 0x17, 0xa3, 0x07, 0x80, 0xdc, 0x00, 0xa9, 0x9f, 0x31, 0x6c, 0x45, 0x5a, 0xcb, 0xde, 0x2d, 0xad, + 0xcf, 0x56, 0x7d, 0x5d, 0x8c, 0x45, 0x9b, 0x77, 0xe3, 0x42, 0x94, 0x27, 0x50, 0x60, 0xbf, 0xd1, + 0x22, 0xe4, 0xbb, 0xc6, 0x4f, 0x6c, 0xa7, 0x22, 0xad, 0x49, 0x77, 0xf3, 0x1a, 0xfd, 0x20, 0x50, + 0xd3, 0xb2, 0x9d, 0x4a, 0x86, 0x41, 0xfd, 0x0f, 0x1f, 0xda, 0x33, 0xbc, 0xd6, 0x8b, 0x4a, 0x96, + 0x42, 0xc9, 0x87, 0xf2, 0x08, 0x16, 0x77, 0xb0, 0x77, 0xd0, 0xe9, 0x9f, 0x9a, 0x56, 0xdd, 0x3a, + 0xb1, 0xd9, 0x0a, 0xd0, 0x1d, 0x28, 0x30, 0xbb, 0x88, 0xec, 0xb8, 0x59, 0x01, 0x52, 0xf9, 0xa7, + 0x04, 0x57, 0x62, 0x02, 0xd8, 0x1a, 0x11, 0xe4, 0x2c, 0xa3, 0x8b, 0x09, 0x7b, 0x51, 0x23, 0xbf, + 0xd1, 0x6d, 0xb8, 0x74, 0x86, 0xad, 0xb6, 0xed, 0x04, 0x8b, 0x26, 0x26, 0x16, 0xb5, 0x39, 0x0a, + 0x0d, 0x96, 0xb5, 0x0d, 0x33, 0x5d, 0xc3, 0x32, 0x4f, 0xb0, 0xeb, 0x55, 0xb2, 0xc4, 0x29, 0x77, + 0x89, 0x76, 0xa1, 0xa2, 0xea, 0x53, 0x46, 0xaa, 0x5a, 0x9e, 0x33, 0xd0, 0x42, 0x4e, 0xf9, 0x01, + 0xcc, 0x45, 0x50, 0xa8, 0x0c, 0xd9, 0x97, 0x78, 0xc0, 0x0c, 0xf2, 0x7f, 0xfa, 0x3e, 0x39, 0x33, + 0x3a, 0x7d, 0xcc, 0xcc, 0xa0, 0x1f, 0x1f, 0x65, 0xee, 0x4b, 0xca, 0x63, 0xb2, 0x83, 0x54, 0x5b, + 0xcd, 0xe8, 0x19, 0xc7, 0x66, 0xc7, 0xf4, 0x4c, 0xec, 0x4e, 0xea, 0x9f, 0xcf, 0x60, 0x35, 0x41, + 0x0e, 0x73, 0xd3, 0x06, 0xcc, 0xb6, 0x38, 0x78, 0x25, 0x43, 0xd6, 0x7b, 0x85, 0x48, 0x8b, 0xb1, + 0x0d, 0xb4, 0x08, 0xa9, 0xf2, 0x57, 0x09, 0xca, 0x71, 0x12, 0xb4, 0x01, 0x05, 0x17, 0x3b, 0x67, + 0x66, 0x0b, 0x33, 0xc3, 0x56, 0x85, 0xa2, 0xaa, 0x87, 0x94, 0x68, 0x77, 0x4a, 0x0b, 0xe8, 0x65, + 0x0b, 0x0a, 0x0c, 0x8a, 0x3e, 0x84, 0x9c, 0x37, 0xe8, 0x51, 0x11, 0x97, 0xd6, 0x95, 0x54, 0x11, + 0xd5, 0xe6, 0xa0, 0x87, 0x35, 0x42, 0xaf, 0x7c, 0x1b, 0x72, 0xfe, 0x17, 0x2a, 0x41, 0xe1, 0xa8, + 0xf1, 0xa4, 0xb1, 0xff, 0xbc, 0x51, 0x9e, 0x42, 0x4b, 0x80, 0x6a, 0xfb, 0x8d, 0xa6, 0xb6, 0xbf, + 0xb7, 0xa7, 0x6a, 0xfa, 0xa1, 0xaa, 0x3d, 0xab, 0xd7, 0xd4, 0xb2, 0xb4, 0x35, 0x4d, 0x95, 0x28, + 0x1f, 0xc2, 0xec, 0x81, 0x63, 0x1f, 0xe3, 0x49, 0x7d, 0x7b, 0x19, 0xe6, 0x18, 0x1f, 0xf5, 0xa5, + 0xf2, 0xc7, 0x1c, 0x2c, 0xd4, 0x1c, 0x6c, 0x78, 0xf8, 0x99, 0xdd, 0xe9, 0x77, 0x27, 0x15, 0x18, + 0x86, 0x6c, 0x86, 0x0b, 0xd9, 0x0d, 0xb8, 0xe4, 0x3b, 0xbd, 0x65, 0x7a, 0x03, 0xdd, 0x31, 0xac, + 0x53, 0x4c, 0xce, 0x4f, 0x69, 0x1d, 0x11, 0x11, 0x35, 0x86, 0xd2, 0x7c, 0x8c, 0x36, 0xd7, 0xe2, + 0x3f, 0xd1, 0x63, 0x58, 0x38, 0x23, 0x76, 0xe8, 0x91, 0x1d, 0xce, 0x71, 0x3b, 0x4c, 0xed, 0xe4, + 0x76, 0x18, 0x9d, 0x45, 0x21, 0x26, 0x76, 0xd1, 0x2e, 0x40, 0xcf, 0x70, 0x8c, 0x2e, 0xf6, 0xb0, + 0xe3, 0x56, 0xf2, 0xdc, 0x81, 0x10, 0x2c, 0xb6, 0x7a, 0x10, 0x92, 0xd2, 0x03, 0xc1, 0xf1, 0xa2, + 0x9f, 0xc1, 0x6a, 0xcb, 0xb6, 0x3c, 0xc7, 0xee, 0x74, 0xb0, 0xa3, 0xb7, 0x08, 0xb7, 0xff, 0xa7, + 0x8d, 0x2d, 0xcf, 0x34, 0x3a, 0x6e, 0x65, 0x9a, 0x08, 0xdf, 0x48, 0x14, 0x5e, 0x0b, 0xb9, 0x29, + 0xb6, 0x36, 0xe4, 0xa5, 0xda, 0x56, 0x5a, 0xc9, 0x14, 0xf2, 0x43, 0xb8, 0x1c, 0xb3, 0x6e, 0x92, + 0x33, 0x29, 0x37, 0x60, 0x6d, 0x9c, 0xfe, 0x89, 0xce, 0xf8, 0x03, 0x58, 0x8c, 0xae, 0x91, 0x1d, + 0xc9, 0x5b, 0x30, 0x4d, 0x77, 0x81, 0x45, 0x4b, 0x89, 0xdb, 0x2a, 0x8d, 0xa1, 0x94, 0xdf, 0xe5, + 0xa0, 0x1c, 0xdf, 0x3d, 0xb4, 0x01, 0xf9, 0xe3, 0x8e, 0xdd, 0x7a, 0xc9, 0x18, 0x6f, 0x0a, 0xf7, + 0xb8, 0xba, 0xe5, 0x93, 0x50, 0xe8, 0xee, 0x94, 0x46, 0x39, 0x7c, 0xd6, 0xae, 0xdd, 0xb7, 0x3c, + 0x62, 0x66, 0x22, 0xeb, 0x53, 0x9f, 0x64, 0xc8, 0x4a, 0x38, 0xd0, 0x26, 0x94, 0x8c, 0x56, 0x0b, + 0xbb, 0xae, 0xde, 0xb5, 0xdb, 0x41, 0x7c, 0xae, 0x89, 0x05, 0x6c, 0x12, 0xc2, 0xa7, 0x76, 0x1b, + 0x6b, 0x60, 0x84, 0xbf, 0xe5, 0x39, 0x28, 0x71, 0x56, 0xc9, 0x3b, 0x50, 0xe2, 0x34, 0xa1, 0x65, + 0x28, 0x9c, 0xb8, 0x7a, 0x98, 0x10, 0x8a, 0xda, 0xf4, 0x89, 0x4b, 0x8e, 0xf9, 0x0d, 0x28, 0x11, + 0x13, 0xf4, 0x93, 0x8e, 0x71, 0x4a, 0x73, 0x57, 0x51, 0x03, 0x02, 0x7a, 0xec, 0x43, 0xe4, 0xaf, + 0x25, 0x80, 0xa1, 0x4a, 0xb4, 0x01, 0x39, 0x62, 0x22, 0x4d, 0x2b, 0xb7, 0xc7, 0x99, 0x58, 0x25, + 0x76, 0x12, 0x16, 0xe5, 0xf7, 0x12, 0xe4, 0x88, 0x8c, 0x78, 0x6a, 0x39, 0xac, 0x37, 0x76, 0xf6, + 0x54, 0xbd, 0xb1, 0xbf, 0xad, 0xea, 0xcf, 0xb5, 0x7a, 0x53, 0xd5, 0xca, 0x12, 0x5a, 0x81, 0x65, + 0x1e, 0xae, 0xa9, 0x9b, 0xdb, 0xaa, 0xa6, 0xef, 0x37, 0xf6, 0x3e, 0x2d, 0x67, 0x90, 0x0c, 0x4b, + 0x4f, 0x8f, 0xf6, 0x9a, 0xf5, 0x51, 0x5c, 0x16, 0x5d, 0x83, 0x0a, 0x87, 0x63, 0x32, 0x98, 0xd8, + 0x9c, 0x2f, 0x96, 0xc3, 0xd2, 0x9f, 0x0c, 0x99, 0xdf, 0x9a, 0x0b, 0xb7, 0x81, 0x64, 0xb5, 0xe7, + 0x30, 0x17, 0xc9, 0x0e, 0xfe, 0xe5, 0xe7, 0xe0, 0x2f, 0xfb, 0xa6, 0x83, 0xdb, 0xfa, 0xf1, 0xc0, + 0xc3, 0x2e, 0x71, 0x43, 0x56, 0x9b, 0x0b, 0xa0, 0x5b, 0x3e, 0xd0, 0xf7, 0x69, 0xc7, 0xec, 0x9a, + 0x1e, 0xa3, 0xc9, 0x10, 0x1a, 0x20, 0x20, 0x42, 0xa0, 0x7c, 0x25, 0xc1, 0x34, 0xdb, 0x98, 0xdb, + 0x5c, 0x72, 0x8a, 0x88, 0x0c, 0xa0, 0x54, 0xe4, 0x25, 0xc8, 0x98, 0x6d, 0x16, 0xff, 0x19, 0xb3, + 0x8d, 0x1e, 0x00, 0x18, 0x9e, 0xe7, 0x98, 0xc7, 0x7d, 0x9f, 0x85, 0xde, 0xb0, 0x2b, 0xdc, 0x66, + 0x54, 0x37, 0x43, 0x2c, 0xcb, 0x21, 0x43, 0x72, 0xff, 0x10, 0xc7, 0xd0, 0x13, 0x1d, 0xba, 0x3f, + 0x64, 0x60, 0x61, 0x1b, 0x77, 0xf0, 0xeb, 0xe6, 0xe8, 0x15, 0x28, 0xb2, 0xa4, 0x1a, 0x2e, 0x69, + 0x86, 0x02, 0xea, 0xed, 0x58, 0x7e, 0x6b, 0x13, 0x35, 0x91, 0xfc, 0x96, 0xe5, 0xf2, 0x9b, 0xc0, + 0x0a, 0x2e, 0xbf, 0x51, 0x6c, 0x5a, 0x7e, 0x1b, 0xa1, 0x88, 0x26, 0x28, 0xb1, 0x80, 0x89, 0x7c, + 0xb5, 0x04, 0x8b, 0x51, 0x23, 0xd9, 0x3d, 0xf7, 0x9f, 0x1c, 0x5c, 0x1f, 0x2a, 0x3a, 0xe8, 0x1f, + 0x77, 0x4c, 0xf7, 0xc5, 0x05, 0xb8, 0x73, 0x19, 0x0a, 0x96, 0xdd, 0x26, 0xa8, 0x2c, 0x3d, 0xf7, + 0xfe, 0x67, 0xbd, 0x8d, 0xb6, 0x60, 0x3e, 0x7e, 0xb3, 0x0d, 0x2a, 0x39, 0xa2, 0x27, 0xe1, 0x5e, + 0x2b, 0x9f, 0xc5, 0x73, 0xa5, 0x0c, 0x33, 0x0e, 0x36, 0xda, 0xb6, 0xd5, 0x19, 0x54, 0xf2, 0x6b, + 0xd2, 0xdd, 0x19, 0x2d, 0xfc, 0x46, 0xbf, 0x94, 0xe0, 0x3a, 0xb7, 0x91, 0x3d, 0xba, 0x42, 0xc1, + 0x4d, 0xa5, 0xd2, 0x9b, 0x2a, 0xd5, 0x17, 0xa3, 0xe8, 0x91, 0x5d, 0xbd, 0xd6, 0x4a, 0x21, 0x41, + 0x27, 0xe1, 0x6a, 0xb9, 0x53, 0x53, 0xe0, 0x6f, 0xca, 0x74, 0xfd, 0xf4, 0x2b, 0x7e, 0xa6, 0x98, + 0x47, 0x86, 0x60, 0x79, 0x1f, 0x6e, 0x8e, 0x35, 0x75, 0xa2, 0x0b, 0xb3, 0x06, 0x57, 0x84, 0xba, + 0x27, 0x0a, 0xc2, 0xaf, 0x24, 0xb8, 0x91, 0xb8, 0x40, 0x76, 0x63, 0xfe, 0x00, 0x66, 0x83, 0x3d, + 0x32, 0xad, 0x13, 0x9b, 0x75, 0x32, 0x1f, 0xa4, 0x3b, 0x87, 0x95, 0xef, 0x0c, 0xea, 0x97, 0xf4, + 0xd4, 0x31, 0xa5, 0xde, 0x10, 0x22, 0x3f, 0x82, 0x72, 0x9c, 0x60, 0x22, 0xeb, 0xbf, 0xce, 0xf0, + 0x67, 0xf2, 0xc8, 0xea, 0xbd, 0xfd, 0xc3, 0xf2, 0x6b, 0x09, 0xd6, 0xb8, 0x60, 0xee, 0x5b, 0xa2, + 0x70, 0xa6, 0x45, 0x61, 0x3d, 0xe6, 0x31, 0xb1, 0xbd, 0x22, 0x82, 0x91, 0x90, 0xe6, 0xce, 0x8f, + 0x88, 0x48, 0xfe, 0x04, 0x6e, 0x9d, 0x43, 0xcc, 0x44, 0xbe, 0xbe, 0xc5, 0xc7, 0xef, 0x88, 0xe9, + 0x2c, 0x77, 0xfd, 0x3b, 0x03, 0x37, 0x9f, 0x19, 0x1d, 0xb3, 0x1d, 0xd6, 0x5d, 0x6f, 0xd0, 0x5e, + 0xa5, 0xef, 0x48, 0x42, 0xfd, 0x9d, 0x9d, 0xb4, 0xfe, 0x36, 0x45, 0xe7, 0x9f, 0x6e, 0xd8, 0xc7, + 0x54, 0xca, 0xb8, 0xf5, 0x9c, 0x3b, 0x05, 0x7c, 0x23, 0x27, 0xf6, 0x47, 0xa0, 0xa4, 0x59, 0xc4, + 0xce, 0xec, 0x35, 0x28, 0x86, 0xb3, 0x05, 0x22, 0x77, 0x46, 0x1b, 0x02, 0x50, 0x05, 0x0a, 0x5d, + 0xec, 0xba, 0xc6, 0x69, 0x20, 0x3f, 0xf8, 0x54, 0x7e, 0x2e, 0x01, 0xda, 0x33, 0x5d, 0x56, 0x1b, + 0x4e, 0xbc, 0x63, 0x7e, 0xc9, 0x68, 0xbc, 0xd2, 0xb1, 0xe5, 0x39, 0x26, 0x2b, 0x6f, 0xf2, 0x1a, + 0x74, 0x8d, 0x57, 0x2a, 0x85, 0xf8, 0x35, 0x8d, 0xeb, 0x19, 0x8e, 0x67, 0x5a, 0xa7, 0xba, 0x67, + 0xbf, 0xc4, 0x16, 0x3b, 0x4e, 0x73, 0x01, 0xb4, 0xe9, 0x03, 0x95, 0xdf, 0x4a, 0xb0, 0x10, 0x31, + 0x83, 0x2d, 0xeb, 0x3e, 0x14, 0x02, 0xd9, 0x34, 0x0b, 0x5d, 0x27, 0x76, 0x08, 0x48, 0xab, 0x74, + 0x13, 0x02, 0x72, 0xb4, 0x0a, 0x60, 0xe1, 0x57, 0x1e, 0x53, 0x4a, 0x57, 0x5d, 0xf4, 0x21, 0x44, + 0xa1, 0x7c, 0x0f, 0xf2, 0x74, 0x2b, 0xce, 0xd5, 0x1e, 0xfc, 0x2a, 0x03, 0x68, 0x07, 0x7b, 0x61, + 0x05, 0x38, 0xa1, 0x97, 0x12, 0x42, 0x37, 0x33, 0x69, 0xe8, 0xee, 0x44, 0x5a, 0x47, 0x1a, 0xf9, + 0xef, 0x06, 0xb3, 0x94, 0x98, 0x71, 0x69, 0x9d, 0xe3, 0x1b, 0xb6, 0x6e, 0xca, 0x36, 0x2c, 0x44, + 0x14, 0xb2, 0xcd, 0x7a, 0x0f, 0x90, 0x71, 0x66, 0x98, 0x1d, 0xe3, 0xb8, 0x43, 0x57, 0xea, 0x63, + 0x59, 0x0d, 0x3b, 0x1f, 0x62, 0x02, 0x36, 0xe5, 0xfb, 0x7c, 0x2e, 0x67, 0xf2, 0x5e, 0x77, 0x30, + 0x63, 0xf2, 0xc9, 0x6a, 0x44, 0x16, 0xb3, 0x6f, 0x5b, 0x38, 0x9c, 0x59, 0x8b, 0x65, 0x69, 0x36, + 0x07, 0x49, 0x9c, 0xd3, 0xfc, 0x26, 0x03, 0x2b, 0x29, 0xd4, 0xe8, 0x3e, 0x64, 0x9d, 0x5e, 0x8b, + 0x99, 0xfb, 0xce, 0x38, 0xe1, 0x55, 0xed, 0xa0, 0xb6, 0x3b, 0xa5, 0xf9, 0x2c, 0xf2, 0x9f, 0x24, + 0xc8, 0x6a, 0x07, 0x35, 0xf4, 0x30, 0x32, 0xae, 0xf9, 0xd6, 0x79, 0x44, 0xf0, 0x53, 0x1b, 0x5b, + 0x34, 0xb5, 0xa9, 0xc0, 0x62, 0x4d, 0x53, 0x37, 0x9b, 0xaa, 0xbe, 0xad, 0xee, 0xa9, 0x4d, 0x55, + 0x7f, 0xb6, 0xbf, 0x77, 0xf4, 0x54, 0x2d, 0x4b, 0x7e, 0x8f, 0x74, 0x70, 0xb4, 0xb5, 0x57, 0x3f, + 0xdc, 0xd5, 0x8f, 0x1a, 0xc1, 0x2f, 0x86, 0xcd, 0xa0, 0x32, 0xcc, 0xee, 0xd5, 0x0f, 0x9b, 0x0c, + 0x70, 0x58, 0xce, 0xfa, 0x90, 0x1d, 0xb5, 0xa9, 0xd7, 0x36, 0x0f, 0x36, 0x6b, 0xf5, 0xe6, 0xa7, + 0xe5, 0x5c, 0x38, 0xf9, 0xf9, 0x73, 0x1e, 0x96, 0x1a, 0x76, 0x1b, 0x1f, 0x7a, 0xc6, 0xe9, 0x45, + 0xf4, 0x03, 0xfb, 0xb1, 0xba, 0x84, 0x1e, 0x80, 0x7b, 0x44, 0x92, 0x58, 0x6f, 0x7a, 0x39, 0x82, + 0xaa, 0xb0, 0xe0, 0x7a, 0xc6, 0x29, 0xc9, 0x4d, 0x86, 0x73, 0x8a, 0x3d, 0xbd, 0x67, 0x78, 0x2f, + 0x48, 0xe9, 0x5b, 0xd4, 0xe6, 0x19, 0xaa, 0x49, 0x30, 0x07, 0x86, 0xf7, 0x42, 0x5c, 0x28, 0xe7, + 0x27, 0x2b, 0x94, 0x5f, 0xc2, 0x12, 0x29, 0x2c, 0x7c, 0xe9, 0xa2, 0x69, 0xcd, 0x07, 0x69, 0xcb, + 0x09, 0xc1, 0x23, 0x05, 0xc2, 0xa2, 0x25, 0x40, 0xa1, 0x1f, 0x27, 0xd7, 0xba, 0xdf, 0x4d, 0xd3, + 0x73, 0xde, 0x0b, 0xee, 0x0d, 0xeb, 0x39, 0x79, 0x07, 0xae, 0x26, 0x2e, 0xe9, 0xed, 0xd7, 0xc6, + 0x57, 0x61, 0x79, 0xc4, 0x1f, 0xac, 0xce, 0xf9, 0x47, 0x06, 0x2a, 0x3e, 0xee, 0xc8, 0x72, 0x2f, + 0x28, 0xb8, 0x13, 0x62, 0x31, 0x9b, 0x14, 0x8b, 0x2e, 0x54, 0x48, 0x1c, 0xf5, 0xad, 0xd1, 0x48, + 0xca, 0x71, 0xdd, 0x4c, 0x92, 0xd5, 0x3c, 0x62, 0x24, 0x9a, 0x48, 0x88, 0x8e, 0x22, 0xe5, 0x3a, + 0xac, 0xa4, 0xb0, 0x4d, 0xe4, 0xec, 0x15, 0xba, 0xf5, 0x31, 0xd3, 0x98, 0xbb, 0x7f, 0x31, 0x4d, + 0xdd, 0x7d, 0x71, 0xcd, 0xf0, 0x27, 0xc2, 0x5c, 0x52, 0x0d, 0x5d, 0x26, 0x6c, 0xfd, 0xbe, 0xd9, + 0x6c, 0x72, 0x03, 0x4a, 0x3c, 0x5d, 0x9e, 0xd0, 0x81, 0x37, 0x26, 0xdd, 0x4c, 0xbf, 0x7e, 0x5f, + 0x5e, 0x88, 0xf5, 0xe5, 0x41, 0x08, 0x89, 0x3a, 0x98, 0x99, 0x58, 0x08, 0x09, 0xfd, 0xc1, 0x21, + 0xc4, 0x21, 0x24, 0x68, 0xbf, 0xbf, 0x10, 0xa5, 0xa4, 0x22, 0xd1, 0xf6, 0x7e, 0xba, 0xb6, 0xb7, + 0x95, 0x94, 0x58, 0x90, 0xff, 0xdf, 0xb4, 0xec, 0xec, 0xa4, 0x08, 0xfb, 0x6d, 0xe5, 0xef, 0x19, + 0x90, 0xe9, 0x39, 0xba, 0xb8, 0x5e, 0x38, 0x16, 0xa8, 0xd9, 0x91, 0x40, 0xfd, 0x29, 0xc8, 0x2c, + 0x17, 0x25, 0x37, 0xc3, 0x0f, 0xb9, 0x6c, 0xd4, 0x4b, 0x0a, 0xa6, 0xe4, 0x06, 0xb8, 0x62, 0x25, + 0xa0, 0xe5, 0x27, 0xb0, 0x9a, 0xca, 0x3a, 0x91, 0xaf, 0x57, 0x83, 0x04, 0x27, 0x6e, 0x77, 0x3f, + 0x82, 0xb2, 0x8f, 0xde, 0xc1, 0x5e, 0xbd, 0x3d, 0x69, 0x89, 0x7a, 0x0f, 0xe6, 0x39, 0x5e, 0x56, + 0x92, 0x72, 0x63, 0x06, 0x89, 0x1f, 0x33, 0x28, 0xdb, 0x74, 0x5b, 0xdf, 0xb0, 0x2c, 0xfe, 0x9c, + 0x2e, 0x27, 0xa9, 0x20, 0x7e, 0x14, 0x2b, 0x88, 0x69, 0x8b, 0x25, 0x0f, 0x2b, 0x83, 0x31, 0xa5, + 0xf0, 0x5f, 0x24, 0xb8, 0x22, 0xa4, 0x43, 0xeb, 0x7c, 0x11, 0x7c, 0x3d, 0x59, 0x20, 0x5f, 0xfe, + 0x76, 0x69, 0xf5, 0xfb, 0xbd, 0x48, 0xf5, 0x7b, 0x2b, 0x9d, 0x97, 0xaf, 0x7b, 0xdf, 0x4b, 0xa8, + 0x7b, 0x0f, 0x9b, 0x9b, 0x3b, 0xaa, 0x7e, 0xd4, 0xa0, 0x7f, 0x83, 0xba, 0x37, 0xa8, 0x5a, 0xd7, + 0xff, 0x96, 0x81, 0x99, 0x3a, 0x89, 0x18, 0x6f, 0x80, 0x3e, 0x27, 0x0f, 0xe8, 0x23, 0x4f, 0xfd, + 0x68, 0x2d, 0xe8, 0xb2, 0x92, 0xfe, 0x49, 0x40, 0xbe, 0x99, 0x42, 0xc1, 0xa2, 0x67, 0x0a, 0xed, + 0xc2, 0x5c, 0xe4, 0xd5, 0x1b, 0x5d, 0x15, 0xbd, 0x84, 0x53, 0x81, 0x72, 0xf2, 0x23, 0xb9, 0x32, + 0x85, 0xbe, 0xe0, 0x1e, 0xea, 0x23, 0x3d, 0xe2, 0xcd, 0x28, 0x9b, 0x20, 0x7a, 0x64, 0x25, 0x8d, + 0x24, 0xd4, 0xf0, 0x1d, 0xc8, 0x93, 0xf7, 0x58, 0x34, 0x4f, 0xdf, 0x8b, 0xb9, 0x37, 0x5d, 0x19, + 0xf1, 0xa0, 0x80, 0x63, 0xfd, 0x5f, 0x79, 0x80, 0x61, 0x9f, 0x82, 0x54, 0x98, 0xe5, 0x1f, 0xe4, + 0x50, 0x25, 0xe9, 0x1d, 0x52, 0xbe, 0x2a, 0xc0, 0x84, 0x76, 0xa8, 0x30, 0xcb, 0x8f, 0xcd, 0x99, + 0x18, 0xc1, 0xb8, 0x9f, 0x89, 0x11, 0xce, 0xd8, 0xa7, 0xd0, 0x09, 0x2c, 0x27, 0xcc, 0x2e, 0xd1, + 0xad, 0x73, 0x8c, 0x7d, 0xe5, 0x77, 0xce, 0x33, 0xfe, 0x54, 0xa6, 0x50, 0x07, 0xae, 0x26, 0x8e, + 0xcd, 0xd0, 0xed, 0x73, 0x4d, 0x04, 0xe5, 0x3b, 0xe3, 0xc8, 0x42, 0x6d, 0x36, 0xc8, 0xc9, 0xc3, + 0x21, 0x74, 0xe7, 0x7c, 0xf3, 0x2c, 0xf9, 0xdd, 0xb1, 0x74, 0xa1, 0xc2, 0x2d, 0x28, 0x71, 0xc3, + 0x17, 0xb4, 0x3c, 0x3a, 0x8e, 0xa1, 0x22, 0x2b, 0x49, 0x73, 0x1a, 0x2a, 0x83, 0x1b, 0x1f, 0x30, + 0x19, 0xa3, 0x13, 0x0c, 0x26, 0x43, 0x30, 0x69, 0x88, 0xbb, 0x39, 0x96, 0xdf, 0x46, 0xdc, 0x2c, + 0xce, 0xa2, 0x23, 0x6e, 0x4e, 0x48, 0x93, 0xca, 0xd4, 0xfa, 0x7f, 0xb3, 0x90, 0xf3, 0x73, 0x10, + 0x6a, 0xc0, 0xe5, 0x58, 0x8b, 0x80, 0x56, 0x52, 0x1a, 0x29, 0xf9, 0x9a, 0x18, 0x19, 0x2e, 0xa3, + 0x49, 0x2f, 0x85, 0x48, 0x15, 0x8c, 0x56, 0x53, 0x0b, 0x77, 0xf9, 0x7a, 0x12, 0x3a, 0x2e, 0x35, + 0x1a, 0xe5, 0xab, 0xa9, 0xd5, 0x15, 0x27, 0x35, 0x29, 0xb2, 0x3f, 0x83, 0x05, 0xc1, 0xdd, 0x88, + 0x6e, 0x8c, 0xb9, 0xd8, 0xe5, 0xb5, 0x64, 0x82, 0x50, 0xf6, 0xc7, 0x50, 0x0c, 0x2f, 0x47, 0x74, + 0x25, 0x64, 0xe0, 0x2f, 0x5a, 0x79, 0x29, 0x0e, 0x8e, 0x5b, 0x16, 0x0f, 0x83, 0x1b, 0x3c, 0x83, + 0x28, 0x00, 0xd6, 0x92, 0x09, 0x02, 0xd9, 0xc7, 0xd3, 0xe4, 0xff, 0xc4, 0xde, 0xff, 0x5f, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x2a, 0x1b, 0xdc, 0x39, 0x34, 0x26, 0x00, 0x00, } diff --git a/spec.md b/spec.md index b4047773..a73169f6 100644 --- a/spec.md +++ b/spec.md @@ -289,6 +289,9 @@ service Identity { rpc GetPluginCapabilities(GetPluginCapabilitiesRequest) returns (GetPluginCapabilitiesResponse) {} + + rpc Probe (ProbeRequest) + returns (ProbeResponse) {} } service Controller { @@ -313,9 +316,6 @@ service Controller { rpc GetCapacity (GetCapacityRequest) returns (GetCapacityResponse) {} - rpc ControllerProbe (ControllerProbeRequest) - returns (ControllerProbeResponse) {} - rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest) returns (ControllerGetCapabilitiesResponse) {} } @@ -336,9 +336,6 @@ service Node { rpc NodeGetId (NodeGetIdRequest) returns (NodeGetIdResponse) {} - rpc NodeProbe (NodeProbeRequest) - returns (NodeProbeResponse) {} - rpc NodeGetCapabilities (NodeGetCapabilitiesRequest) returns (NodeGetCapabilitiesResponse) {} } @@ -387,7 +384,7 @@ The status `details` MUST be empty. In the future, this spec may require `detail ### Identity Service RPC Identity service RPCs allow a CO to negotiate an API protocol version that MAY be used for subsequent RPCs across all CSI services with respect to a particular CSI plugin. -The general flow of the success case is as follows (protos illustrated in YAML for brevity): +The general flow of the success case MAY be as follows (protos illustrated in YAML for brevity): 1. CO queries supported versions via Identity RPC. The CO is expected to gracefully handle, in the manner of its own choosing, the case wherein the returned `supported_versions` from the plugin are not supported by the CO. @@ -435,6 +432,18 @@ The general flow of the success case is as follows (protos illustrated in YAML f type: CONTROLLER_SERVICE ``` +4. CO queries the readiness of the plugin. + +``` + # CO --(Probe)--> Plugin + request: + version: + major: 0 + minor: 2 + patch: 0 + response: {} +``` + #### `GetSupportedVersions` A Plugin SHALL reply with a list of supported CSI versions. @@ -548,6 +557,45 @@ message PluginCapability { If the plugin is unable to complete the GetPluginCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. +#### `Probe` + +A Plugin MUST implement this RPC call. +The primary utility of the Probe RPC is to verify that the plugin is in a healthy state. +If an unhealthy state is reported, via a non-success response, a CO MAY take action with the intent to bring the plugin to a healthy state. +Such actions MAY include, but SHALL NOT be limited to, the following: + +* Restarting the plugin container, or +* Notifying the plugin supervisor. + +The Plugin MAY verify that it has the right configurations, devices, dependencies and drivers in order to run and return a success if the validation succeeds. +The CO MAY invoke this RPC at any time after version negotiation has been completed (see `GetSupportedVersions`). +A CO MAY invoke this call multiple times with the understanding that a plugin's implementation MAY NOT be trivial and there MAY be overhead incurred by such repeated calls. +The SP SHALL document guidance and known limitations regarding a particular Plugin's implementation of this RPC. +For example, the SP MAY document the maximum frequency at which its Probe implementation should be called. + +```protobuf +message ProbeRequest { + // The API version assumed by the CO. This is a REQUIRED field. + Version version = 1; +} + +message ProbeResponse { + // Intentionally empty. +} +``` + +##### Probe Errors + +If the plugin is unable to complete the Probe call successfully, it MUST return a non-ok gRPC code in the gRPC status. +If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. +The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. + +| Condition | gRPC Code | Description | Recovery Behavior | +|-----------|-----------|-------------|-------------------| +| Plugin not healthy | 9 FAILED_PRECONDITION | Indicates that the plugin is not in a healthy/ready state. | Caller SHOULD assume the plugin is not healthy and that future RPCs MAY fail because of this condition. | +| Missing required dependency | 9 FAILED_PRECONDITION | Indicates that the plugin is missing one or more required dependency. | Caller MUST assume the plugin is not healthy. | + + ### Controller Service RPC #### `CreateVolume` @@ -1065,34 +1113,6 @@ message GetCapacityResponse { If the plugin is unable to complete the GetCapacity call successfully, it MUST return a non-ok gRPC code in the gRPC status. -#### `ControllerProbe` - -A Controller Plugin MUST implement this RPC call. -The Plugin SHOULD verify if it has the right configurations, devices, dependencies and drivers in order to run the controller service, and return a success if the validation succeeds. -The CO SHALL invoke this RPC prior to any other controller service RPC in order to allow the CO to determine the readiness of the controller service. -A CO MAY invoke this call multiple times with the understanding that a plugin's implementation MAY NOT be trivial and there MAY be overhead incurred by such repeated calls. - -```protobuf -message ControllerProbeRequest { - // The API version assumed by the CO. This is a REQUIRED field. - Version version = 1; -} - -message ControllerProbeResponse {} -``` - -##### ControllerProbe Errors - -If the plugin is unable to complete the ControllerProbe call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Bad plugin config | 9 FAILED_PRECONDITION | Indicates that the plugin is misconfigured. | Caller MUST assume the plugin is not healthy. | -| Missing required dependency | 9 FAILED_PRECONDITION | Indicates that the plugin is missing one or more required dependency. | Caller MUST assume the plugin is not healthy. | - - #### `ControllerGetCapabilities` A Controller Plugin MUST implement this RPC call. This RPC allows the CO to check the supported capabilities of controller service provided by the Plugin. @@ -1482,36 +1502,6 @@ Condition | gRPC Code | Description | Recovery Behavior | --- | --- | --- | --- | | Call not implemented | 12 UNIMPLEMENTED | NodeGetId call is not implemented by the plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. Caller MAY call `ControllerGetCapabilities` or `NodeGetCapabilities` to discover Plugin capabilities. | -#### `NodeProbe` - -A Node Plugin MUST implement this RPC call. -The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. -The CO SHOULD call this RPC for the node at which it wants to place the workload. -This RPC allows the CO to probe the readiness of the Plugin on the node where the volumes will be used. -The Plugin SHOULD verify if it has everything it needs (binaries, kernel module, drivers, etc.) to run on that node, and return a success if the validation succeeds. -The CO MAY use this RPC to probe which machines can support specific Plugins and schedule workloads accordingly. - -```protobuf -message NodeProbeRequest { - // The API version assumed by the CO. This is a REQUIRED field. - Version version = 1; -} - -message NodeProbeResponse {} -``` - -##### NodeProbe Errors - -If the plugin is unable to complete the NodeProbe call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Bad plugin config | 9 FAILED_PRECONDITION | Indicates that the plugin is misconfigured. | Caller MUST assume the plugin is not healthy. | -| Missing required dependency | 9 FAILED_PRECONDITION | Indicates that the plugin is missing one or more required dependency. | Caller MUST assume the plugin is not healthy. | - - #### `NodeGetCapabilities` A Node Plugin MUST implement this RPC call. @@ -1651,6 +1641,8 @@ Supervised plugins MAY be isolated and/or resource-bounded. ##### Available Services * Plugin Packages MAY support all or a subset of CSI services; service combinations MAY be configurable at runtime by the Plugin Supervisor. + * A plugin must know the "mode" in which it is operating (e.g. node, controller, or both). + * This specification does not dictate the mechanism by which mode of operation must be discovered, and instead places that burden upon the SP. * Misconfigured plugin software SHOULD fail-fast with an OS-appropriate error code. ##### Linux Capabilities