goplayd/lib/spot/proto/connect.pb.go

2864 lines
114 KiB
Go
Raw Permalink Normal View History

2023-01-11 17:08:26 +00:00
// Extracted from: Spotify 1.1.73.517 (macOS)
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.1
// protoc v3.21.12
// source: connect.proto
package proto
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 AudioOutputDeviceType int32
const (
AudioOutputDeviceType_UNKNOWN_AUDIO_OUTPUT_DEVICE_TYPE AudioOutputDeviceType = 0
AudioOutputDeviceType_BUILT_IN_SPEAKER AudioOutputDeviceType = 1
AudioOutputDeviceType_LINE_OUT AudioOutputDeviceType = 2
AudioOutputDeviceType_BLUETOOTH AudioOutputDeviceType = 3
AudioOutputDeviceType_AIRPLAY AudioOutputDeviceType = 4
)
// Enum value maps for AudioOutputDeviceType.
var (
AudioOutputDeviceType_name = map[int32]string{
0: "UNKNOWN_AUDIO_OUTPUT_DEVICE_TYPE",
1: "BUILT_IN_SPEAKER",
2: "LINE_OUT",
3: "BLUETOOTH",
4: "AIRPLAY",
}
AudioOutputDeviceType_value = map[string]int32{
"UNKNOWN_AUDIO_OUTPUT_DEVICE_TYPE": 0,
"BUILT_IN_SPEAKER": 1,
"LINE_OUT": 2,
"BLUETOOTH": 3,
"AIRPLAY": 4,
}
)
func (x AudioOutputDeviceType) Enum() *AudioOutputDeviceType {
p := new(AudioOutputDeviceType)
*p = x
return p
}
func (x AudioOutputDeviceType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (AudioOutputDeviceType) Descriptor() protoreflect.EnumDescriptor {
return file_connect_proto_enumTypes[0].Descriptor()
}
func (AudioOutputDeviceType) Type() protoreflect.EnumType {
return &file_connect_proto_enumTypes[0]
}
func (x AudioOutputDeviceType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use AudioOutputDeviceType.Descriptor instead.
func (AudioOutputDeviceType) EnumDescriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{0}
}
type PutStateReason int32
const (
PutStateReason_UNKNOWN_PUT_STATE_REASON PutStateReason = 0
PutStateReason_SPIRC_HELLO PutStateReason = 1
PutStateReason_SPIRC_NOTIFY PutStateReason = 2
PutStateReason_NEW_DEVICE PutStateReason = 3
PutStateReason_PLAYER_STATE_CHANGED PutStateReason = 4
PutStateReason_VOLUME_CHANGED PutStateReason = 5
PutStateReason_PICKER_OPENED PutStateReason = 6
PutStateReason_BECAME_INACTIVE PutStateReason = 7
PutStateReason_ALIAS_CHANGED PutStateReason = 8
)
// Enum value maps for PutStateReason.
var (
PutStateReason_name = map[int32]string{
0: "UNKNOWN_PUT_STATE_REASON",
1: "SPIRC_HELLO",
2: "SPIRC_NOTIFY",
3: "NEW_DEVICE",
4: "PLAYER_STATE_CHANGED",
5: "VOLUME_CHANGED",
6: "PICKER_OPENED",
7: "BECAME_INACTIVE",
8: "ALIAS_CHANGED",
}
PutStateReason_value = map[string]int32{
"UNKNOWN_PUT_STATE_REASON": 0,
"SPIRC_HELLO": 1,
"SPIRC_NOTIFY": 2,
"NEW_DEVICE": 3,
"PLAYER_STATE_CHANGED": 4,
"VOLUME_CHANGED": 5,
"PICKER_OPENED": 6,
"BECAME_INACTIVE": 7,
"ALIAS_CHANGED": 8,
}
)
func (x PutStateReason) Enum() *PutStateReason {
p := new(PutStateReason)
*p = x
return p
}
func (x PutStateReason) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (PutStateReason) Descriptor() protoreflect.EnumDescriptor {
return file_connect_proto_enumTypes[1].Descriptor()
}
func (PutStateReason) Type() protoreflect.EnumType {
return &file_connect_proto_enumTypes[1]
}
func (x PutStateReason) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use PutStateReason.Descriptor instead.
func (PutStateReason) EnumDescriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{1}
}
type MemberType int32
const (
MemberType_SPIRC_V2 MemberType = 0
MemberType_SPIRC_V3 MemberType = 1
MemberType_CONNECT_STATE MemberType = 2
MemberType_CONNECT_STATE_EXTENDED MemberType = 5
MemberType_ACTIVE_DEVICE_TRACKER MemberType = 6
MemberType_PLAY_TOKEN MemberType = 7
)
// Enum value maps for MemberType.
var (
MemberType_name = map[int32]string{
0: "SPIRC_V2",
1: "SPIRC_V3",
2: "CONNECT_STATE",
5: "CONNECT_STATE_EXTENDED",
6: "ACTIVE_DEVICE_TRACKER",
7: "PLAY_TOKEN",
}
MemberType_value = map[string]int32{
"SPIRC_V2": 0,
"SPIRC_V3": 1,
"CONNECT_STATE": 2,
"CONNECT_STATE_EXTENDED": 5,
"ACTIVE_DEVICE_TRACKER": 6,
"PLAY_TOKEN": 7,
}
)
func (x MemberType) Enum() *MemberType {
p := new(MemberType)
*p = x
return p
}
func (x MemberType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (MemberType) Descriptor() protoreflect.EnumDescriptor {
return file_connect_proto_enumTypes[2].Descriptor()
}
func (MemberType) Type() protoreflect.EnumType {
return &file_connect_proto_enumTypes[2]
}
func (x MemberType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use MemberType.Descriptor instead.
func (MemberType) EnumDescriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{2}
}
type ClusterUpdateReason int32
const (
ClusterUpdateReason_UNKNOWN_CLUSTER_UPDATE_REASON ClusterUpdateReason = 0
ClusterUpdateReason_DEVICES_DISAPPEARED ClusterUpdateReason = 1
ClusterUpdateReason_DEVICE_STATE_CHANGED ClusterUpdateReason = 2
ClusterUpdateReason_NEW_DEVICE_APPEARED ClusterUpdateReason = 3
ClusterUpdateReason_DEVICE_VOLUME_CHANGED ClusterUpdateReason = 4
ClusterUpdateReason_DEVICE_ALIAS_CHANGED ClusterUpdateReason = 5
)
// Enum value maps for ClusterUpdateReason.
var (
ClusterUpdateReason_name = map[int32]string{
0: "UNKNOWN_CLUSTER_UPDATE_REASON",
1: "DEVICES_DISAPPEARED",
2: "DEVICE_STATE_CHANGED",
3: "NEW_DEVICE_APPEARED",
4: "DEVICE_VOLUME_CHANGED",
5: "DEVICE_ALIAS_CHANGED",
}
ClusterUpdateReason_value = map[string]int32{
"UNKNOWN_CLUSTER_UPDATE_REASON": 0,
"DEVICES_DISAPPEARED": 1,
"DEVICE_STATE_CHANGED": 2,
"NEW_DEVICE_APPEARED": 3,
"DEVICE_VOLUME_CHANGED": 4,
"DEVICE_ALIAS_CHANGED": 5,
}
)
func (x ClusterUpdateReason) Enum() *ClusterUpdateReason {
p := new(ClusterUpdateReason)
*p = x
return p
}
func (x ClusterUpdateReason) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ClusterUpdateReason) Descriptor() protoreflect.EnumDescriptor {
return file_connect_proto_enumTypes[3].Descriptor()
}
func (ClusterUpdateReason) Type() protoreflect.EnumType {
return &file_connect_proto_enumTypes[3]
}
func (x ClusterUpdateReason) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ClusterUpdateReason.Descriptor instead.
func (ClusterUpdateReason) EnumDescriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{3}
}
type SendCommandResult int32
const (
SendCommandResult_UNKNOWN_SEND_COMMAND_RESULT SendCommandResult = 0
SendCommandResult_SUCCESS SendCommandResult = 1
SendCommandResult_DEVICE_NOT_FOUND SendCommandResult = 2
SendCommandResult_CONTEXT_PLAYER_ERROR SendCommandResult = 3
SendCommandResult_DEVICE_DISAPPEARED SendCommandResult = 4
SendCommandResult_UPSTREAM_ERROR SendCommandResult = 5
SendCommandResult_DEVICE_DOES_NOT_SUPPORT_COMMAND SendCommandResult = 6
SendCommandResult_RATE_LIMITED SendCommandResult = 7
)
// Enum value maps for SendCommandResult.
var (
SendCommandResult_name = map[int32]string{
0: "UNKNOWN_SEND_COMMAND_RESULT",
1: "SUCCESS",
2: "DEVICE_NOT_FOUND",
3: "CONTEXT_PLAYER_ERROR",
4: "DEVICE_DISAPPEARED",
5: "UPSTREAM_ERROR",
6: "DEVICE_DOES_NOT_SUPPORT_COMMAND",
7: "RATE_LIMITED",
}
SendCommandResult_value = map[string]int32{
"UNKNOWN_SEND_COMMAND_RESULT": 0,
"SUCCESS": 1,
"DEVICE_NOT_FOUND": 2,
"CONTEXT_PLAYER_ERROR": 3,
"DEVICE_DISAPPEARED": 4,
"UPSTREAM_ERROR": 5,
"DEVICE_DOES_NOT_SUPPORT_COMMAND": 6,
"RATE_LIMITED": 7,
}
)
func (x SendCommandResult) Enum() *SendCommandResult {
p := new(SendCommandResult)
*p = x
return p
}
func (x SendCommandResult) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SendCommandResult) Descriptor() protoreflect.EnumDescriptor {
return file_connect_proto_enumTypes[4].Descriptor()
}
func (SendCommandResult) Type() protoreflect.EnumType {
return &file_connect_proto_enumTypes[4]
}
func (x SendCommandResult) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SendCommandResult.Descriptor instead.
func (SendCommandResult) EnumDescriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{4}
}
type ClusterUpdate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
UpdateReason ClusterUpdateReason `protobuf:"varint,2,opt,name=update_reason,json=updateReason,proto3,enum=spotify.connectstate.ClusterUpdateReason" json:"update_reason,omitempty"`
AckId string `protobuf:"bytes,3,opt,name=ack_id,json=ackId,proto3" json:"ack_id,omitempty"`
DevicesThatChanged []string `protobuf:"bytes,4,rep,name=devices_that_changed,json=devicesThatChanged,proto3" json:"devices_that_changed,omitempty"`
}
func (x *ClusterUpdate) Reset() {
*x = ClusterUpdate{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ClusterUpdate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClusterUpdate) ProtoMessage() {}
func (x *ClusterUpdate) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 ClusterUpdate.ProtoReflect.Descriptor instead.
func (*ClusterUpdate) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{0}
}
func (x *ClusterUpdate) GetCluster() *Cluster {
if x != nil {
return x.Cluster
}
return nil
}
func (x *ClusterUpdate) GetUpdateReason() ClusterUpdateReason {
if x != nil {
return x.UpdateReason
}
return ClusterUpdateReason_UNKNOWN_CLUSTER_UPDATE_REASON
}
func (x *ClusterUpdate) GetAckId() string {
if x != nil {
return x.AckId
}
return ""
}
func (x *ClusterUpdate) GetDevicesThatChanged() []string {
if x != nil {
return x.DevicesThatChanged
}
return nil
}
type PostCommandResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
AckId string `protobuf:"bytes,1,opt,name=ack_id,json=ackId,proto3" json:"ack_id,omitempty"`
}
func (x *PostCommandResponse) Reset() {
*x = PostCommandResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PostCommandResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PostCommandResponse) ProtoMessage() {}
func (x *PostCommandResponse) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 PostCommandResponse.ProtoReflect.Descriptor instead.
func (*PostCommandResponse) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{1}
}
func (x *PostCommandResponse) GetAckId() string {
if x != nil {
return x.AckId
}
return ""
}
type Device struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
DeviceInfo *DeviceInfo `protobuf:"bytes,1,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"`
PlayerState *PlayerState `protobuf:"bytes,2,opt,name=player_state,json=playerState,proto3" json:"player_state,omitempty"`
PrivateDeviceInfo *PrivateDeviceInfo `protobuf:"bytes,3,opt,name=private_device_info,json=privateDeviceInfo,proto3" json:"private_device_info,omitempty"`
TransferData []byte `protobuf:"bytes,4,opt,name=transfer_data,json=transferData,proto3" json:"transfer_data,omitempty"`
}
func (x *Device) Reset() {
*x = Device{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Device) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Device) ProtoMessage() {}
func (x *Device) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 Device.ProtoReflect.Descriptor instead.
func (*Device) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{2}
}
func (x *Device) GetDeviceInfo() *DeviceInfo {
if x != nil {
return x.DeviceInfo
}
return nil
}
func (x *Device) GetPlayerState() *PlayerState {
if x != nil {
return x.PlayerState
}
return nil
}
func (x *Device) GetPrivateDeviceInfo() *PrivateDeviceInfo {
if x != nil {
return x.PrivateDeviceInfo
}
return nil
}
func (x *Device) GetTransferData() []byte {
if x != nil {
return x.TransferData
}
return nil
}
type Cluster struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ChangedTimestampMs int64 `protobuf:"varint,1,opt,name=changed_timestamp_ms,json=changedTimestampMs,proto3" json:"changed_timestamp_ms,omitempty"`
ActiveDeviceId string `protobuf:"bytes,2,opt,name=active_device_id,json=activeDeviceId,proto3" json:"active_device_id,omitempty"`
PlayerState *PlayerState `protobuf:"bytes,3,opt,name=player_state,json=playerState,proto3" json:"player_state,omitempty"`
Device map[string]*DeviceInfo `protobuf:"bytes,4,rep,name=device,proto3" json:"device,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
TransferData []byte `protobuf:"bytes,5,opt,name=transfer_data,json=transferData,proto3" json:"transfer_data,omitempty"`
TransferDataTimestamp uint64 `protobuf:"varint,6,opt,name=transfer_data_timestamp,json=transferDataTimestamp,proto3" json:"transfer_data_timestamp,omitempty"`
NotPlayingSinceTimestamp int64 `protobuf:"varint,7,opt,name=not_playing_since_timestamp,json=notPlayingSinceTimestamp,proto3" json:"not_playing_since_timestamp,omitempty"`
NeedFullPlayerState bool `protobuf:"varint,8,opt,name=need_full_player_state,json=needFullPlayerState,proto3" json:"need_full_player_state,omitempty"`
ServerTimestampMs int64 `protobuf:"varint,9,opt,name=server_timestamp_ms,json=serverTimestampMs,proto3" json:"server_timestamp_ms,omitempty"`
}
func (x *Cluster) Reset() {
*x = Cluster{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Cluster) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Cluster) ProtoMessage() {}
func (x *Cluster) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 Cluster.ProtoReflect.Descriptor instead.
func (*Cluster) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{3}
}
func (x *Cluster) GetChangedTimestampMs() int64 {
if x != nil {
return x.ChangedTimestampMs
}
return 0
}
func (x *Cluster) GetActiveDeviceId() string {
if x != nil {
return x.ActiveDeviceId
}
return ""
}
func (x *Cluster) GetPlayerState() *PlayerState {
if x != nil {
return x.PlayerState
}
return nil
}
func (x *Cluster) GetDevice() map[string]*DeviceInfo {
if x != nil {
return x.Device
}
return nil
}
func (x *Cluster) GetTransferData() []byte {
if x != nil {
return x.TransferData
}
return nil
}
func (x *Cluster) GetTransferDataTimestamp() uint64 {
if x != nil {
return x.TransferDataTimestamp
}
return 0
}
func (x *Cluster) GetNotPlayingSinceTimestamp() int64 {
if x != nil {
return x.NotPlayingSinceTimestamp
}
return 0
}
func (x *Cluster) GetNeedFullPlayerState() bool {
if x != nil {
return x.NeedFullPlayerState
}
return false
}
func (x *Cluster) GetServerTimestampMs() int64 {
if x != nil {
return x.ServerTimestampMs
}
return 0
}
type PutStateRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CallbackUrl string `protobuf:"bytes,1,opt,name=callback_url,json=callbackUrl,proto3" json:"callback_url,omitempty"`
Device *Device `protobuf:"bytes,2,opt,name=device,proto3" json:"device,omitempty"`
MemberType MemberType `protobuf:"varint,3,opt,name=member_type,json=memberType,proto3,enum=spotify.connectstate.MemberType" json:"member_type,omitempty"`
IsActive bool `protobuf:"varint,4,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"`
PutStateReason PutStateReason `protobuf:"varint,5,opt,name=put_state_reason,json=putStateReason,proto3,enum=spotify.connectstate.PutStateReason" json:"put_state_reason,omitempty"`
MessageId uint32 `protobuf:"varint,6,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
LastCommandSentByDeviceId string `protobuf:"bytes,7,opt,name=last_command_sent_by_device_id,json=lastCommandSentByDeviceId,proto3" json:"last_command_sent_by_device_id,omitempty"`
LastCommandMessageId uint32 `protobuf:"varint,8,opt,name=last_command_message_id,json=lastCommandMessageId,proto3" json:"last_command_message_id,omitempty"`
StartedPlayingAt uint64 `protobuf:"varint,9,opt,name=started_playing_at,json=startedPlayingAt,proto3" json:"started_playing_at,omitempty"`
HasBeenPlayingForMs uint64 `protobuf:"varint,11,opt,name=has_been_playing_for_ms,json=hasBeenPlayingForMs,proto3" json:"has_been_playing_for_ms,omitempty"`
ClientSideTimestamp uint64 `protobuf:"varint,12,opt,name=client_side_timestamp,json=clientSideTimestamp,proto3" json:"client_side_timestamp,omitempty"`
OnlyWritePlayerState bool `protobuf:"varint,13,opt,name=only_write_player_state,json=onlyWritePlayerState,proto3" json:"only_write_player_state,omitempty"`
}
func (x *PutStateRequest) Reset() {
*x = PutStateRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PutStateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PutStateRequest) ProtoMessage() {}
func (x *PutStateRequest) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 PutStateRequest.ProtoReflect.Descriptor instead.
func (*PutStateRequest) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{4}
}
func (x *PutStateRequest) GetCallbackUrl() string {
if x != nil {
return x.CallbackUrl
}
return ""
}
func (x *PutStateRequest) GetDevice() *Device {
if x != nil {
return x.Device
}
return nil
}
func (x *PutStateRequest) GetMemberType() MemberType {
if x != nil {
return x.MemberType
}
return MemberType_SPIRC_V2
}
func (x *PutStateRequest) GetIsActive() bool {
if x != nil {
return x.IsActive
}
return false
}
func (x *PutStateRequest) GetPutStateReason() PutStateReason {
if x != nil {
return x.PutStateReason
}
return PutStateReason_UNKNOWN_PUT_STATE_REASON
}
func (x *PutStateRequest) GetMessageId() uint32 {
if x != nil {
return x.MessageId
}
return 0
}
func (x *PutStateRequest) GetLastCommandSentByDeviceId() string {
if x != nil {
return x.LastCommandSentByDeviceId
}
return ""
}
func (x *PutStateRequest) GetLastCommandMessageId() uint32 {
if x != nil {
return x.LastCommandMessageId
}
return 0
}
func (x *PutStateRequest) GetStartedPlayingAt() uint64 {
if x != nil {
return x.StartedPlayingAt
}
return 0
}
func (x *PutStateRequest) GetHasBeenPlayingForMs() uint64 {
if x != nil {
return x.HasBeenPlayingForMs
}
return 0
}
func (x *PutStateRequest) GetClientSideTimestamp() uint64 {
if x != nil {
return x.ClientSideTimestamp
}
return 0
}
func (x *PutStateRequest) GetOnlyWritePlayerState() bool {
if x != nil {
return x.OnlyWritePlayerState
}
return false
}
type PrivateDeviceInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"`
}
func (x *PrivateDeviceInfo) Reset() {
*x = PrivateDeviceInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PrivateDeviceInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PrivateDeviceInfo) ProtoMessage() {}
func (x *PrivateDeviceInfo) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 PrivateDeviceInfo.ProtoReflect.Descriptor instead.
func (*PrivateDeviceInfo) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{5}
}
func (x *PrivateDeviceInfo) GetPlatform() string {
if x != nil {
return x.Platform
}
return ""
}
type SubscribeRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CallbackUrl string `protobuf:"bytes,1,opt,name=callback_url,json=callbackUrl,proto3" json:"callback_url,omitempty"`
}
func (x *SubscribeRequest) Reset() {
*x = SubscribeRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[6]
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_connect_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 SubscribeRequest.ProtoReflect.Descriptor instead.
func (*SubscribeRequest) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{6}
}
func (x *SubscribeRequest) GetCallbackUrl() string {
if x != nil {
return x.CallbackUrl
}
return ""
}
type DeviceInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CanPlay bool `protobuf:"varint,1,opt,name=can_play,json=canPlay,proto3" json:"can_play,omitempty"`
Volume uint32 `protobuf:"varint,2,opt,name=volume,proto3" json:"volume,omitempty"`
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
Capabilities *Capabilities `protobuf:"bytes,4,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
Metadata []*DeviceMetadata `protobuf:"bytes,5,rep,name=metadata,proto3" json:"metadata,omitempty"`
DeviceSoftwareVersion string `protobuf:"bytes,6,opt,name=device_software_version,json=deviceSoftwareVersion,proto3" json:"device_software_version,omitempty"`
DeviceType DeviceType `protobuf:"varint,7,opt,name=device_type,json=deviceType,proto3,enum=spotify.connectstate.devices.DeviceType" json:"device_type,omitempty"`
SpircVersion string `protobuf:"bytes,9,opt,name=spirc_version,json=spircVersion,proto3" json:"spirc_version,omitempty"`
DeviceId string `protobuf:"bytes,10,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
IsPrivateSession bool `protobuf:"varint,11,opt,name=is_private_session,json=isPrivateSession,proto3" json:"is_private_session,omitempty"`
IsSocialConnect bool `protobuf:"varint,12,opt,name=is_social_connect,json=isSocialConnect,proto3" json:"is_social_connect,omitempty"`
ClientId string `protobuf:"bytes,13,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
Brand string `protobuf:"bytes,14,opt,name=brand,proto3" json:"brand,omitempty"`
Model string `protobuf:"bytes,15,opt,name=model,proto3" json:"model,omitempty"`
MetadataMap map[string]string `protobuf:"bytes,16,rep,name=metadata_map,json=metadataMap,proto3" json:"metadata_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
ProductId string `protobuf:"bytes,17,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
DeduplicationId string `protobuf:"bytes,18,opt,name=deduplication_id,json=deduplicationId,proto3" json:"deduplication_id,omitempty"`
SelectedAliasId uint32 `protobuf:"varint,19,opt,name=selected_alias_id,json=selectedAliasId,proto3" json:"selected_alias_id,omitempty"`
DeviceAliases map[uint32]*DeviceAlias `protobuf:"bytes,20,rep,name=device_aliases,json=deviceAliases,proto3" json:"device_aliases,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
IsOffline bool `protobuf:"varint,21,opt,name=is_offline,json=isOffline,proto3" json:"is_offline,omitempty"`
PublicIp string `protobuf:"bytes,22,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"`
License string `protobuf:"bytes,23,opt,name=license,proto3" json:"license,omitempty"`
IsGroup bool `protobuf:"varint,25,opt,name=is_group,json=isGroup,proto3" json:"is_group,omitempty"`
IsDynamicDevice bool `protobuf:"varint,26,opt,name=is_dynamic_device,json=isDynamicDevice,proto3" json:"is_dynamic_device,omitempty"`
DisallowPlaybackReasons []string `protobuf:"bytes,27,rep,name=disallow_playback_reasons,json=disallowPlaybackReasons,proto3" json:"disallow_playback_reasons,omitempty"`
DisallowTransferReasons []string `protobuf:"bytes,28,rep,name=disallow_transfer_reasons,json=disallowTransferReasons,proto3" json:"disallow_transfer_reasons,omitempty"`
// Types that are assignable to XAudioOutputDeviceInfo:
//
// *DeviceInfo_AudioOutputDeviceInfo
XAudioOutputDeviceInfo isDeviceInfo_XAudioOutputDeviceInfo `protobuf_oneof:"_audio_output_device_info"`
}
func (x *DeviceInfo) Reset() {
*x = DeviceInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeviceInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeviceInfo) ProtoMessage() {}
func (x *DeviceInfo) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 DeviceInfo.ProtoReflect.Descriptor instead.
func (*DeviceInfo) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{7}
}
func (x *DeviceInfo) GetCanPlay() bool {
if x != nil {
return x.CanPlay
}
return false
}
func (x *DeviceInfo) GetVolume() uint32 {
if x != nil {
return x.Volume
}
return 0
}
func (x *DeviceInfo) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DeviceInfo) GetCapabilities() *Capabilities {
if x != nil {
return x.Capabilities
}
return nil
}
func (x *DeviceInfo) GetMetadata() []*DeviceMetadata {
if x != nil {
return x.Metadata
}
return nil
}
func (x *DeviceInfo) GetDeviceSoftwareVersion() string {
if x != nil {
return x.DeviceSoftwareVersion
}
return ""
}
func (x *DeviceInfo) GetDeviceType() DeviceType {
if x != nil {
return x.DeviceType
}
return DeviceType_UNKNOWN
}
func (x *DeviceInfo) GetSpircVersion() string {
if x != nil {
return x.SpircVersion
}
return ""
}
func (x *DeviceInfo) GetDeviceId() string {
if x != nil {
return x.DeviceId
}
return ""
}
func (x *DeviceInfo) GetIsPrivateSession() bool {
if x != nil {
return x.IsPrivateSession
}
return false
}
func (x *DeviceInfo) GetIsSocialConnect() bool {
if x != nil {
return x.IsSocialConnect
}
return false
}
func (x *DeviceInfo) GetClientId() string {
if x != nil {
return x.ClientId
}
return ""
}
func (x *DeviceInfo) GetBrand() string {
if x != nil {
return x.Brand
}
return ""
}
func (x *DeviceInfo) GetModel() string {
if x != nil {
return x.Model
}
return ""
}
func (x *DeviceInfo) GetMetadataMap() map[string]string {
if x != nil {
return x.MetadataMap
}
return nil
}
func (x *DeviceInfo) GetProductId() string {
if x != nil {
return x.ProductId
}
return ""
}
func (x *DeviceInfo) GetDeduplicationId() string {
if x != nil {
return x.DeduplicationId
}
return ""
}
func (x *DeviceInfo) GetSelectedAliasId() uint32 {
if x != nil {
return x.SelectedAliasId
}
return 0
}
func (x *DeviceInfo) GetDeviceAliases() map[uint32]*DeviceAlias {
if x != nil {
return x.DeviceAliases
}
return nil
}
func (x *DeviceInfo) GetIsOffline() bool {
if x != nil {
return x.IsOffline
}
return false
}
func (x *DeviceInfo) GetPublicIp() string {
if x != nil {
return x.PublicIp
}
return ""
}
func (x *DeviceInfo) GetLicense() string {
if x != nil {
return x.License
}
return ""
}
func (x *DeviceInfo) GetIsGroup() bool {
if x != nil {
return x.IsGroup
}
return false
}
func (x *DeviceInfo) GetIsDynamicDevice() bool {
if x != nil {
return x.IsDynamicDevice
}
return false
}
func (x *DeviceInfo) GetDisallowPlaybackReasons() []string {
if x != nil {
return x.DisallowPlaybackReasons
}
return nil
}
func (x *DeviceInfo) GetDisallowTransferReasons() []string {
if x != nil {
return x.DisallowTransferReasons
}
return nil
}
func (m *DeviceInfo) GetXAudioOutputDeviceInfo() isDeviceInfo_XAudioOutputDeviceInfo {
if m != nil {
return m.XAudioOutputDeviceInfo
}
return nil
}
func (x *DeviceInfo) GetAudioOutputDeviceInfo() *AudioOutputDeviceInfo {
if x, ok := x.GetXAudioOutputDeviceInfo().(*DeviceInfo_AudioOutputDeviceInfo); ok {
return x.AudioOutputDeviceInfo
}
return nil
}
type isDeviceInfo_XAudioOutputDeviceInfo interface {
isDeviceInfo_XAudioOutputDeviceInfo()
}
type DeviceInfo_AudioOutputDeviceInfo struct {
AudioOutputDeviceInfo *AudioOutputDeviceInfo `protobuf:"bytes,24,opt,name=audio_output_device_info,json=audioOutputDeviceInfo,proto3,oneof"`
}
func (*DeviceInfo_AudioOutputDeviceInfo) isDeviceInfo_XAudioOutputDeviceInfo() {}
type AudioOutputDeviceInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to XAudioOutputDeviceType:
//
// *AudioOutputDeviceInfo_AudioOutputDeviceType
XAudioOutputDeviceType isAudioOutputDeviceInfo_XAudioOutputDeviceType `protobuf_oneof:"_audio_output_device_type"`
// Types that are assignable to XDeviceName:
//
// *AudioOutputDeviceInfo_DeviceName
XDeviceName isAudioOutputDeviceInfo_XDeviceName `protobuf_oneof:"_device_name"`
}
func (x *AudioOutputDeviceInfo) Reset() {
*x = AudioOutputDeviceInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AudioOutputDeviceInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AudioOutputDeviceInfo) ProtoMessage() {}
func (x *AudioOutputDeviceInfo) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 AudioOutputDeviceInfo.ProtoReflect.Descriptor instead.
func (*AudioOutputDeviceInfo) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{8}
}
func (m *AudioOutputDeviceInfo) GetXAudioOutputDeviceType() isAudioOutputDeviceInfo_XAudioOutputDeviceType {
if m != nil {
return m.XAudioOutputDeviceType
}
return nil
}
func (x *AudioOutputDeviceInfo) GetAudioOutputDeviceType() AudioOutputDeviceType {
if x, ok := x.GetXAudioOutputDeviceType().(*AudioOutputDeviceInfo_AudioOutputDeviceType); ok {
return x.AudioOutputDeviceType
}
return AudioOutputDeviceType_UNKNOWN_AUDIO_OUTPUT_DEVICE_TYPE
}
func (m *AudioOutputDeviceInfo) GetXDeviceName() isAudioOutputDeviceInfo_XDeviceName {
if m != nil {
return m.XDeviceName
}
return nil
}
func (x *AudioOutputDeviceInfo) GetDeviceName() string {
if x, ok := x.GetXDeviceName().(*AudioOutputDeviceInfo_DeviceName); ok {
return x.DeviceName
}
return ""
}
type isAudioOutputDeviceInfo_XAudioOutputDeviceType interface {
isAudioOutputDeviceInfo_XAudioOutputDeviceType()
}
type AudioOutputDeviceInfo_AudioOutputDeviceType struct {
AudioOutputDeviceType AudioOutputDeviceType `protobuf:"varint,1,opt,name=audio_output_device_type,json=audioOutputDeviceType,proto3,enum=spotify.connectstate.AudioOutputDeviceType,oneof"`
}
func (*AudioOutputDeviceInfo_AudioOutputDeviceType) isAudioOutputDeviceInfo_XAudioOutputDeviceType() {
}
type isAudioOutputDeviceInfo_XDeviceName interface {
isAudioOutputDeviceInfo_XDeviceName()
}
type AudioOutputDeviceInfo_DeviceName struct {
DeviceName string `protobuf:"bytes,2,opt,name=device_name,json=deviceName,proto3,oneof"`
}
func (*AudioOutputDeviceInfo_DeviceName) isAudioOutputDeviceInfo_XDeviceName() {}
// Deprecated: Do not use.
type DeviceMetadata struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
Metadata string `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
}
func (x *DeviceMetadata) Reset() {
*x = DeviceMetadata{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeviceMetadata) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeviceMetadata) ProtoMessage() {}
func (x *DeviceMetadata) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 DeviceMetadata.ProtoReflect.Descriptor instead.
func (*DeviceMetadata) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{9}
}
func (x *DeviceMetadata) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *DeviceMetadata) GetMetadata() string {
if x != nil {
return x.Metadata
}
return ""
}
type Capabilities struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CanBePlayer bool `protobuf:"varint,2,opt,name=can_be_player,json=canBePlayer,proto3" json:"can_be_player,omitempty"`
RestrictToLocal bool `protobuf:"varint,3,opt,name=restrict_to_local,json=restrictToLocal,proto3" json:"restrict_to_local,omitempty"`
GaiaEqConnectId bool `protobuf:"varint,5,opt,name=gaia_eq_connect_id,json=gaiaEqConnectId,proto3" json:"gaia_eq_connect_id,omitempty"`
SupportsLogout bool `protobuf:"varint,6,opt,name=supports_logout,json=supportsLogout,proto3" json:"supports_logout,omitempty"`
IsObservable bool `protobuf:"varint,7,opt,name=is_observable,json=isObservable,proto3" json:"is_observable,omitempty"`
VolumeSteps int32 `protobuf:"varint,8,opt,name=volume_steps,json=volumeSteps,proto3" json:"volume_steps,omitempty"`
SupportedTypes []string `protobuf:"bytes,9,rep,name=supported_types,json=supportedTypes,proto3" json:"supported_types,omitempty"`
CommandAcks bool `protobuf:"varint,10,opt,name=command_acks,json=commandAcks,proto3" json:"command_acks,omitempty"`
SupportsRename bool `protobuf:"varint,11,opt,name=supports_rename,json=supportsRename,proto3" json:"supports_rename,omitempty"`
Hidden bool `protobuf:"varint,12,opt,name=hidden,proto3" json:"hidden,omitempty"`
DisableVolume bool `protobuf:"varint,13,opt,name=disable_volume,json=disableVolume,proto3" json:"disable_volume,omitempty"`
ConnectDisabled bool `protobuf:"varint,14,opt,name=connect_disabled,json=connectDisabled,proto3" json:"connect_disabled,omitempty"`
SupportsPlaylistV2 bool `protobuf:"varint,15,opt,name=supports_playlist_v2,json=supportsPlaylistV2,proto3" json:"supports_playlist_v2,omitempty"`
IsControllable bool `protobuf:"varint,16,opt,name=is_controllable,json=isControllable,proto3" json:"is_controllable,omitempty"`
SupportsExternalEpisodes bool `protobuf:"varint,17,opt,name=supports_external_episodes,json=supportsExternalEpisodes,proto3" json:"supports_external_episodes,omitempty"`
SupportsSetBackendMetadata bool `protobuf:"varint,18,opt,name=supports_set_backend_metadata,json=supportsSetBackendMetadata,proto3" json:"supports_set_backend_metadata,omitempty"`
SupportsTransferCommand bool `protobuf:"varint,19,opt,name=supports_transfer_command,json=supportsTransferCommand,proto3" json:"supports_transfer_command,omitempty"`
SupportsCommandRequest bool `protobuf:"varint,20,opt,name=supports_command_request,json=supportsCommandRequest,proto3" json:"supports_command_request,omitempty"`
IsVoiceEnabled bool `protobuf:"varint,21,opt,name=is_voice_enabled,json=isVoiceEnabled,proto3" json:"is_voice_enabled,omitempty"`
NeedsFullPlayerState bool `protobuf:"varint,22,opt,name=needs_full_player_state,json=needsFullPlayerState,proto3" json:"needs_full_player_state,omitempty"`
SupportsGzipPushes bool `protobuf:"varint,23,opt,name=supports_gzip_pushes,json=supportsGzipPushes,proto3" json:"supports_gzip_pushes,omitempty"`
SupportsSetOptionsCommand bool `protobuf:"varint,25,opt,name=supports_set_options_command,json=supportsSetOptionsCommand,proto3" json:"supports_set_options_command,omitempty"`
SupportsHifi *CapabilitySupportDetails `protobuf:"bytes,26,opt,name=supports_hifi,json=supportsHifi,proto3" json:"supports_hifi,omitempty"`
ConnectCapabilities string `protobuf:"bytes,27,opt,name=connect_capabilities,json=connectCapabilities,proto3" json:"connect_capabilities,omitempty"`
}
func (x *Capabilities) Reset() {
*x = Capabilities{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Capabilities) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Capabilities) ProtoMessage() {}
func (x *Capabilities) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 Capabilities.ProtoReflect.Descriptor instead.
func (*Capabilities) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{10}
}
func (x *Capabilities) GetCanBePlayer() bool {
if x != nil {
return x.CanBePlayer
}
return false
}
func (x *Capabilities) GetRestrictToLocal() bool {
if x != nil {
return x.RestrictToLocal
}
return false
}
func (x *Capabilities) GetGaiaEqConnectId() bool {
if x != nil {
return x.GaiaEqConnectId
}
return false
}
func (x *Capabilities) GetSupportsLogout() bool {
if x != nil {
return x.SupportsLogout
}
return false
}
func (x *Capabilities) GetIsObservable() bool {
if x != nil {
return x.IsObservable
}
return false
}
func (x *Capabilities) GetVolumeSteps() int32 {
if x != nil {
return x.VolumeSteps
}
return 0
}
func (x *Capabilities) GetSupportedTypes() []string {
if x != nil {
return x.SupportedTypes
}
return nil
}
func (x *Capabilities) GetCommandAcks() bool {
if x != nil {
return x.CommandAcks
}
return false
}
func (x *Capabilities) GetSupportsRename() bool {
if x != nil {
return x.SupportsRename
}
return false
}
func (x *Capabilities) GetHidden() bool {
if x != nil {
return x.Hidden
}
return false
}
func (x *Capabilities) GetDisableVolume() bool {
if x != nil {
return x.DisableVolume
}
return false
}
func (x *Capabilities) GetConnectDisabled() bool {
if x != nil {
return x.ConnectDisabled
}
return false
}
func (x *Capabilities) GetSupportsPlaylistV2() bool {
if x != nil {
return x.SupportsPlaylistV2
}
return false
}
func (x *Capabilities) GetIsControllable() bool {
if x != nil {
return x.IsControllable
}
return false
}
func (x *Capabilities) GetSupportsExternalEpisodes() bool {
if x != nil {
return x.SupportsExternalEpisodes
}
return false
}
func (x *Capabilities) GetSupportsSetBackendMetadata() bool {
if x != nil {
return x.SupportsSetBackendMetadata
}
return false
}
func (x *Capabilities) GetSupportsTransferCommand() bool {
if x != nil {
return x.SupportsTransferCommand
}
return false
}
func (x *Capabilities) GetSupportsCommandRequest() bool {
if x != nil {
return x.SupportsCommandRequest
}
return false
}
func (x *Capabilities) GetIsVoiceEnabled() bool {
if x != nil {
return x.IsVoiceEnabled
}
return false
}
func (x *Capabilities) GetNeedsFullPlayerState() bool {
if x != nil {
return x.NeedsFullPlayerState
}
return false
}
func (x *Capabilities) GetSupportsGzipPushes() bool {
if x != nil {
return x.SupportsGzipPushes
}
return false
}
func (x *Capabilities) GetSupportsSetOptionsCommand() bool {
if x != nil {
return x.SupportsSetOptionsCommand
}
return false
}
func (x *Capabilities) GetSupportsHifi() *CapabilitySupportDetails {
if x != nil {
return x.SupportsHifi
}
return nil
}
func (x *Capabilities) GetConnectCapabilities() string {
if x != nil {
return x.ConnectCapabilities
}
return ""
}
type CapabilitySupportDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FullySupported bool `protobuf:"varint,1,opt,name=fully_supported,json=fullySupported,proto3" json:"fully_supported,omitempty"`
UserEligible bool `protobuf:"varint,2,opt,name=user_eligible,json=userEligible,proto3" json:"user_eligible,omitempty"`
DeviceSupported bool `protobuf:"varint,3,opt,name=device_supported,json=deviceSupported,proto3" json:"device_supported,omitempty"`
}
func (x *CapabilitySupportDetails) Reset() {
*x = CapabilitySupportDetails{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CapabilitySupportDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CapabilitySupportDetails) ProtoMessage() {}
func (x *CapabilitySupportDetails) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 CapabilitySupportDetails.ProtoReflect.Descriptor instead.
func (*CapabilitySupportDetails) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{11}
}
func (x *CapabilitySupportDetails) GetFullySupported() bool {
if x != nil {
return x.FullySupported
}
return false
}
func (x *CapabilitySupportDetails) GetUserEligible() bool {
if x != nil {
return x.UserEligible
}
return false
}
func (x *CapabilitySupportDetails) GetDeviceSupported() bool {
if x != nil {
return x.DeviceSupported
}
return false
}
type ConnectCommandOptions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
MessageId int32 `protobuf:"varint,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
TargetAliasId uint32 `protobuf:"varint,3,opt,name=target_alias_id,json=targetAliasId,proto3" json:"target_alias_id,omitempty"`
}
func (x *ConnectCommandOptions) Reset() {
*x = ConnectCommandOptions{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ConnectCommandOptions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ConnectCommandOptions) ProtoMessage() {}
func (x *ConnectCommandOptions) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 ConnectCommandOptions.ProtoReflect.Descriptor instead.
func (*ConnectCommandOptions) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{12}
}
func (x *ConnectCommandOptions) GetMessageId() int32 {
if x != nil {
return x.MessageId
}
return 0
}
func (x *ConnectCommandOptions) GetTargetAliasId() uint32 {
if x != nil {
return x.TargetAliasId
}
return 0
}
type LogoutCommand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
CommandOptions *ConnectCommandOptions `protobuf:"bytes,1,opt,name=command_options,json=commandOptions,proto3" json:"command_options,omitempty"`
}
func (x *LogoutCommand) Reset() {
*x = LogoutCommand{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LogoutCommand) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LogoutCommand) ProtoMessage() {}
func (x *LogoutCommand) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 LogoutCommand.ProtoReflect.Descriptor instead.
func (*LogoutCommand) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{13}
}
func (x *LogoutCommand) GetCommandOptions() *ConnectCommandOptions {
if x != nil {
return x.CommandOptions
}
return nil
}
type SetVolumeCommand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Volume int32 `protobuf:"varint,1,opt,name=volume,proto3" json:"volume,omitempty"`
CommandOptions *ConnectCommandOptions `protobuf:"bytes,2,opt,name=command_options,json=commandOptions,proto3" json:"command_options,omitempty"`
}
func (x *SetVolumeCommand) Reset() {
*x = SetVolumeCommand{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SetVolumeCommand) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SetVolumeCommand) ProtoMessage() {}
func (x *SetVolumeCommand) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 SetVolumeCommand.ProtoReflect.Descriptor instead.
func (*SetVolumeCommand) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{14}
}
func (x *SetVolumeCommand) GetVolume() int32 {
if x != nil {
return x.Volume
}
return 0
}
func (x *SetVolumeCommand) GetCommandOptions() *ConnectCommandOptions {
if x != nil {
return x.CommandOptions
}
return nil
}
type RenameCommand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
RenameTo string `protobuf:"bytes,1,opt,name=rename_to,json=renameTo,proto3" json:"rename_to,omitempty"`
CommandOptions *ConnectCommandOptions `protobuf:"bytes,2,opt,name=command_options,json=commandOptions,proto3" json:"command_options,omitempty"`
}
func (x *RenameCommand) Reset() {
*x = RenameCommand{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RenameCommand) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RenameCommand) ProtoMessage() {}
func (x *RenameCommand) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 RenameCommand.ProtoReflect.Descriptor instead.
func (*RenameCommand) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{15}
}
func (x *RenameCommand) GetRenameTo() string {
if x != nil {
return x.RenameTo
}
return ""
}
func (x *RenameCommand) GetCommandOptions() *ConnectCommandOptions {
if x != nil {
return x.CommandOptions
}
return nil
}
type ConnectPlayerCommand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
PlayerCommandJson string `protobuf:"bytes,1,opt,name=player_command_json,json=playerCommandJson,proto3" json:"player_command_json,omitempty"`
CommandOptions *ConnectCommandOptions `protobuf:"bytes,2,opt,name=command_options,json=commandOptions,proto3" json:"command_options,omitempty"`
}
func (x *ConnectPlayerCommand) Reset() {
*x = ConnectPlayerCommand{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ConnectPlayerCommand) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ConnectPlayerCommand) ProtoMessage() {}
func (x *ConnectPlayerCommand) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 ConnectPlayerCommand.ProtoReflect.Descriptor instead.
func (*ConnectPlayerCommand) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{16}
}
func (x *ConnectPlayerCommand) GetPlayerCommandJson() string {
if x != nil {
return x.PlayerCommandJson
}
return ""
}
func (x *ConnectPlayerCommand) GetCommandOptions() *ConnectCommandOptions {
if x != nil {
return x.CommandOptions
}
return nil
}
type SetBackendMetadataCommand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Metadata map[string]string `protobuf:"bytes,1,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *SetBackendMetadataCommand) Reset() {
*x = SetBackendMetadataCommand{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SetBackendMetadataCommand) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SetBackendMetadataCommand) ProtoMessage() {}
func (x *SetBackendMetadataCommand) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 SetBackendMetadataCommand.ProtoReflect.Descriptor instead.
func (*SetBackendMetadataCommand) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{17}
}
func (x *SetBackendMetadataCommand) GetMetadata() map[string]string {
if x != nil {
return x.Metadata
}
return nil
}
type CommandAndSourceDevice struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"`
SourceDeviceInfo *DeviceInfo `protobuf:"bytes,2,opt,name=source_device_info,json=sourceDeviceInfo,proto3" json:"source_device_info,omitempty"`
}
func (x *CommandAndSourceDevice) Reset() {
*x = CommandAndSourceDevice{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CommandAndSourceDevice) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CommandAndSourceDevice) ProtoMessage() {}
func (x *CommandAndSourceDevice) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 CommandAndSourceDevice.ProtoReflect.Descriptor instead.
func (*CommandAndSourceDevice) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{18}
}
func (x *CommandAndSourceDevice) GetCommand() string {
if x != nil {
return x.Command
}
return ""
}
func (x *CommandAndSourceDevice) GetSourceDeviceInfo() *DeviceInfo {
if x != nil {
return x.SourceDeviceInfo
}
return nil
}
type ActiveDeviceUpdate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
}
func (x *ActiveDeviceUpdate) Reset() {
*x = ActiveDeviceUpdate{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ActiveDeviceUpdate) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ActiveDeviceUpdate) ProtoMessage() {}
func (x *ActiveDeviceUpdate) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 ActiveDeviceUpdate.ProtoReflect.Descriptor instead.
func (*ActiveDeviceUpdate) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{19}
}
func (x *ActiveDeviceUpdate) GetDeviceId() string {
if x != nil {
return x.DeviceId
}
return ""
}
type StartedPlayingEvent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
UserInfoHeader []byte `protobuf:"bytes,1,opt,name=user_info_header,json=userInfoHeader,proto3" json:"user_info_header,omitempty"`
DeviceId string `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
}
func (x *StartedPlayingEvent) Reset() {
*x = StartedPlayingEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_connect_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *StartedPlayingEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StartedPlayingEvent) ProtoMessage() {}
func (x *StartedPlayingEvent) ProtoReflect() protoreflect.Message {
mi := &file_connect_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 StartedPlayingEvent.ProtoReflect.Descriptor instead.
func (*StartedPlayingEvent) Descriptor() ([]byte, []int) {
return file_connect_proto_rawDescGZIP(), []int{20}
}
func (x *StartedPlayingEvent) GetUserInfoHeader() []byte {
if x != nil {
return x.UserInfoHeader
}
return nil
}
func (x *StartedPlayingEvent) GetDeviceId() string {
if x != nil {
return x.DeviceId
}
return ""
}
var File_connect_proto protoreflect.FileDescriptor
var file_connect_proto_rawDesc = []byte{
0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x14, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x73, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a,
0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52,
0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x15, 0x0a,
0x06, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61,
0x63, 0x6b, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x5f,
0x74, 0x68, 0x61, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03,
0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x54, 0x68, 0x61, 0x74, 0x43,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x13, 0x50, 0x6f, 0x73, 0x74, 0x43, 0x6f,
0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a,
0x06, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61,
0x63, 0x6b, 0x49, 0x64, 0x22, 0x8f, 0x02, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12,
0x41, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x44, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69,
0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x70, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x76,
0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x69,
0x76, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11,
0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x64, 0x61,
0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0xcc, 0x04, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x4d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64,
0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x44,
0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x79,
0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73,
0x66, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c,
0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x36, 0x0a, 0x17,
0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x74,
0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x73,
0x74, 0x61, 0x6d, 0x70, 0x12, 0x3d, 0x0a, 0x1b, 0x6e, 0x6f, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79,
0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x6e, 0x6f, 0x74, 0x50, 0x6c,
0x61, 0x79, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x66, 0x75, 0x6c, 0x6c,
0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20,
0x01, 0x28, 0x08, 0x52, 0x13, 0x6e, 0x65, 0x65, 0x64, 0x46, 0x75, 0x6c, 0x6c, 0x50, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76,
0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x73, 0x18,
0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d,
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4d, 0x73, 0x1a, 0x5b, 0x0a, 0x0b, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69,
0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x82, 0x05, 0x0a, 0x0f, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61,
0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6c,
0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x06,
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74,
0x61, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66,
0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4d,
0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65,
0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69,
0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69,
0x76, 0x65, 0x12, 0x4e, 0x0a, 0x10, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f,
0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74,
0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73,
0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x75, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73,
0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49,
0x64, 0x12, 0x41, 0x0a, 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
0x64, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x6c, 0x61, 0x73, 0x74, 0x43,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d,
0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18,
0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x73,
0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x61,
0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64,
0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x12, 0x34, 0x0a, 0x17, 0x68, 0x61, 0x73,
0x5f, 0x62, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6f,
0x72, 0x5f, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x68, 0x61, 0x73, 0x42,
0x65, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x4d, 0x73, 0x12,
0x32, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13,
0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x77, 0x72, 0x69, 0x74,
0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x57, 0x72, 0x69, 0x74, 0x65, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2f, 0x0a, 0x11, 0x50, 0x72,
0x69, 0x76, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x35, 0x0a, 0x10, 0x53,
0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x55,
0x72, 0x6c, 0x22, 0xb4, 0x0b, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06,
0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61,
0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
0x65, 0x73, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x66,
0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x66, 0x74, 0x77,
0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x0b, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x28, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x70, 0x69, 0x72, 0x63, 0x5f, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x70,
0x69, 0x72, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64,
0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x70, 0x72,
0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20,
0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x53, 0x65,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x73, 0x6f, 0x63, 0x69,
0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08,
0x52, 0x0f, 0x69, 0x73, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14,
0x0a, 0x05, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62,
0x72, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x0f, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x54, 0x0a, 0x0c, 0x6d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x31, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
0x66, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70,
0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x11,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12,
0x29, 0x0a, 0x10, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x64, 0x75, 0x70,
0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65,
0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18,
0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41,
0x6c, 0x69, 0x61, 0x73, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33,
0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f,
0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73,
0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65,
0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e,
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x16,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x18,
0x0a, 0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x67,
0x72, 0x6f, 0x75, 0x70, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69,
0x63, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
0x69, 0x73, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12,
0x3a, 0x0a, 0x19, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x6c, 0x61, 0x79,
0x62, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x1b, 0x20, 0x03,
0x28, 0x09, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x6c, 0x61, 0x79,
0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x64,
0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17,
0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x18, 0x61, 0x75, 0x64, 0x69, 0x6f,
0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74,
0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x15, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4f,
0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a,
0x3e, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x70, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
0x6b, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61,
0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1b, 0x0a, 0x19,
0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xcf, 0x01, 0x0a, 0x15, 0x41, 0x75,
0x64, 0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x66, 0x0a, 0x18, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x6f, 0x75, 0x74,
0x70, 0x75, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x75, 0x64,
0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x48, 0x00, 0x52, 0x15, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75,
0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x64,
0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x48, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x1b,
0x0a, 0x19, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f,
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x44, 0x0a, 0x0e, 0x44,
0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x02, 0x18,
0x01, 0x22, 0x89, 0x09, 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x5f, 0x62, 0x65, 0x5f, 0x70, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x61, 0x6e, 0x42, 0x65,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69,
0x63, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x54, 0x6f, 0x4c, 0x6f, 0x63,
0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x12, 0x67, 0x61, 0x69, 0x61, 0x5f, 0x65, 0x71, 0x5f, 0x63, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
0x67, 0x61, 0x69, 0x61, 0x45, 0x71, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12,
0x27, 0x0a, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x6f,
0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
0x74, 0x73, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x6f,
0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0c, 0x69, 0x73, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a,
0x0c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x08, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x65, 0x70, 0x73,
0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d,
0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x41, 0x63, 0x6b, 0x73, 0x12, 0x27, 0x0a, 0x0f,
0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x52,
0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18,
0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x25, 0x0a,
0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18,
0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f,
0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12,
0x30, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79,
0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73,
0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x6c, 0x69, 0x73, 0x74, 0x56,
0x32, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
0x61, 0x62, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x75,
0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f,
0x65, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18,
0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
0x45, 0x70, 0x69, 0x73, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x1d, 0x73, 0x75, 0x70, 0x70,
0x6f, 0x72, 0x74, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52,
0x1a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b,
0x65, 0x6e, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x19, 0x73,
0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17,
0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x56,
0x6f, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x6e,
0x65, 0x65, 0x64, 0x73, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6e, 0x65,
0x65, 0x64, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x67,
0x7a, 0x69, 0x70, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08,
0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x47, 0x7a, 0x69, 0x70, 0x50, 0x75,
0x73, 0x68, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73,
0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x6d,
0x6d, 0x61, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x73, 0x75, 0x70, 0x70,
0x6f, 0x72, 0x74, 0x73, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f,
0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x53, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
0x73, 0x5f, 0x68, 0x69, 0x66, 0x69, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73,
0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74,
0x61, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x75,
0x70, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x73, 0x75,
0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x48, 0x69, 0x66, 0x69, 0x12, 0x31, 0x0a, 0x14, 0x63, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
0x65, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x93, 0x01,
0x0a, 0x18, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x75, 0x70, 0x70,
0x6f, 0x72, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x75,
0x6c, 0x6c, 0x79, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72,
0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6c, 0x69, 0x67,
0x69, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72,
0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x69,
0x63, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72,
0x74, 0x65, 0x64, 0x22, 0x5e, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x43, 0x6f,
0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74,
0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x69, 0x61,
0x73, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6d,
0x6d, 0x61, 0x6e, 0x64, 0x12, 0x54, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f,
0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d,
0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x53,
0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12,
0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x6d, 0x61,
0x6e, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x43,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0e, 0x63,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x82, 0x01,
0x0a, 0x0d, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12,
0x1b, 0x0a, 0x09, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x6f, 0x12, 0x54, 0x0a, 0x0f,
0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e,
0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x70,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x6a, 0x73,
0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0f, 0x63,
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x6e,
0x65, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x22, 0xb3, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12,
0x59, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x3d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b,
0x65, 0x6e, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
0x6e, 0x64, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x6d,
0x61, 0x6e, 0x64, 0x41, 0x6e, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x4e, 0x0a, 0x12,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e,
0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69,
0x66, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x31, 0x0a, 0x12,
0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22,
0x5c, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e,
0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x2a, 0x7d, 0x0a,
0x15, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69,
0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
0x4e, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x44,
0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10,
0x42, 0x55, 0x49, 0x4c, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x50, 0x45, 0x41, 0x4b, 0x45, 0x52,
0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x02,
0x12, 0x0d, 0x0a, 0x09, 0x42, 0x4c, 0x55, 0x45, 0x54, 0x4f, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x12,
0x0b, 0x0a, 0x07, 0x41, 0x49, 0x52, 0x50, 0x4c, 0x41, 0x59, 0x10, 0x04, 0x2a, 0xca, 0x01, 0x0a,
0x0e, 0x50, 0x75, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x55, 0x54, 0x5f, 0x53,
0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a,
0x0b, 0x53, 0x50, 0x49, 0x52, 0x43, 0x5f, 0x48, 0x45, 0x4c, 0x4c, 0x4f, 0x10, 0x01, 0x12, 0x10,
0x0a, 0x0c, 0x53, 0x50, 0x49, 0x52, 0x43, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x02,
0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x45, 0x57, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03,
0x12, 0x18, 0x0a, 0x14, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45,
0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f,
0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x05, 0x12, 0x11,
0x0a, 0x0d, 0x50, 0x49, 0x43, 0x4b, 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x45, 0x44, 0x10,
0x06, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x45, 0x43, 0x41, 0x4d, 0x45, 0x5f, 0x49, 0x4e, 0x41, 0x43,
0x54, 0x49, 0x56, 0x45, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x5f,
0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x08, 0x2a, 0x82, 0x01, 0x0a, 0x0a, 0x4d, 0x65,
0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x50, 0x49, 0x52,
0x43, 0x5f, 0x56, 0x32, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x50, 0x49, 0x52, 0x43, 0x5f,
0x56, 0x33, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f,
0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x4e, 0x45,
0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45,
0x44, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x44, 0x45,
0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x06, 0x12, 0x0e,
0x0a, 0x0a, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x07, 0x2a, 0xb9,
0x01, 0x0a, 0x13, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
0x4e, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45,
0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x45, 0x56,
0x49, 0x43, 0x45, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x50, 0x50, 0x45, 0x41, 0x52, 0x45, 0x44,
0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41,
0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13,
0x4e, 0x45, 0x57, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x45, 0x41,
0x52, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f,
0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x04,
0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x49, 0x41, 0x53,
0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x05, 0x2a, 0xd4, 0x01, 0x0a, 0x11, 0x53,
0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x45, 0x4e, 0x44,
0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10,
0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x14,
0x0a, 0x10, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55,
0x4e, 0x44, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x5f,
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x16,
0x0a, 0x12, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x50, 0x50, 0x45,
0x41, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x50, 0x53, 0x54, 0x52, 0x45,
0x41, 0x4d, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x45,
0x56, 0x49, 0x43, 0x45, 0x5f, 0x44, 0x4f, 0x45, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x55,
0x50, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x06, 0x12,
0x10, 0x0a, 0x0c, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10,
0x07, 0x42, 0x45, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x70, 0x6f, 0x74, 0x69, 0x66, 0x79,
0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x6d, 0x6f,
0x64, 0x65, 0x6c, 0x48, 0x02, 0x5a, 0x21, 0x74, 0x75, 0x78, 0x70, 0x61, 0x2e, 0x69, 0x6e, 0x2f,
0x61, 0x2f, 0x67, 0x6f, 0x70, 0x6c, 0x61, 0x79, 0x64, 0x2f, 0x6c, 0x69, 0x62, 0x2f, 0x73, 0x70,
0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_connect_proto_rawDescOnce sync.Once
file_connect_proto_rawDescData = file_connect_proto_rawDesc
)
func file_connect_proto_rawDescGZIP() []byte {
file_connect_proto_rawDescOnce.Do(func() {
file_connect_proto_rawDescData = protoimpl.X.CompressGZIP(file_connect_proto_rawDescData)
})
return file_connect_proto_rawDescData
}
var file_connect_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_connect_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
var file_connect_proto_goTypes = []interface{}{
(AudioOutputDeviceType)(0), // 0: spotify.connectstate.AudioOutputDeviceType
(PutStateReason)(0), // 1: spotify.connectstate.PutStateReason
(MemberType)(0), // 2: spotify.connectstate.MemberType
(ClusterUpdateReason)(0), // 3: spotify.connectstate.ClusterUpdateReason
(SendCommandResult)(0), // 4: spotify.connectstate.SendCommandResult
(*ClusterUpdate)(nil), // 5: spotify.connectstate.ClusterUpdate
(*PostCommandResponse)(nil), // 6: spotify.connectstate.PostCommandResponse
(*Device)(nil), // 7: spotify.connectstate.Device
(*Cluster)(nil), // 8: spotify.connectstate.Cluster
(*PutStateRequest)(nil), // 9: spotify.connectstate.PutStateRequest
(*PrivateDeviceInfo)(nil), // 10: spotify.connectstate.PrivateDeviceInfo
(*SubscribeRequest)(nil), // 11: spotify.connectstate.SubscribeRequest
(*DeviceInfo)(nil), // 12: spotify.connectstate.DeviceInfo
(*AudioOutputDeviceInfo)(nil), // 13: spotify.connectstate.AudioOutputDeviceInfo
(*DeviceMetadata)(nil), // 14: spotify.connectstate.DeviceMetadata
(*Capabilities)(nil), // 15: spotify.connectstate.Capabilities
(*CapabilitySupportDetails)(nil), // 16: spotify.connectstate.CapabilitySupportDetails
(*ConnectCommandOptions)(nil), // 17: spotify.connectstate.ConnectCommandOptions
(*LogoutCommand)(nil), // 18: spotify.connectstate.LogoutCommand
(*SetVolumeCommand)(nil), // 19: spotify.connectstate.SetVolumeCommand
(*RenameCommand)(nil), // 20: spotify.connectstate.RenameCommand
(*ConnectPlayerCommand)(nil), // 21: spotify.connectstate.ConnectPlayerCommand
(*SetBackendMetadataCommand)(nil), // 22: spotify.connectstate.SetBackendMetadataCommand
(*CommandAndSourceDevice)(nil), // 23: spotify.connectstate.CommandAndSourceDevice
(*ActiveDeviceUpdate)(nil), // 24: spotify.connectstate.ActiveDeviceUpdate
(*StartedPlayingEvent)(nil), // 25: spotify.connectstate.StartedPlayingEvent
nil, // 26: spotify.connectstate.Cluster.DeviceEntry
nil, // 27: spotify.connectstate.DeviceInfo.MetadataMapEntry
nil, // 28: spotify.connectstate.DeviceInfo.DeviceAliasesEntry
nil, // 29: spotify.connectstate.SetBackendMetadataCommand.MetadataEntry
(*PlayerState)(nil), // 30: spotify.connectstate.PlayerState
(DeviceType)(0), // 31: spotify.connectstate.devices.DeviceType
(*DeviceAlias)(nil), // 32: spotify.connectstate.devices.DeviceAlias
}
var file_connect_proto_depIdxs = []int32{
8, // 0: spotify.connectstate.ClusterUpdate.cluster:type_name -> spotify.connectstate.Cluster
3, // 1: spotify.connectstate.ClusterUpdate.update_reason:type_name -> spotify.connectstate.ClusterUpdateReason
12, // 2: spotify.connectstate.Device.device_info:type_name -> spotify.connectstate.DeviceInfo
30, // 3: spotify.connectstate.Device.player_state:type_name -> spotify.connectstate.PlayerState
10, // 4: spotify.connectstate.Device.private_device_info:type_name -> spotify.connectstate.PrivateDeviceInfo
30, // 5: spotify.connectstate.Cluster.player_state:type_name -> spotify.connectstate.PlayerState
26, // 6: spotify.connectstate.Cluster.device:type_name -> spotify.connectstate.Cluster.DeviceEntry
7, // 7: spotify.connectstate.PutStateRequest.device:type_name -> spotify.connectstate.Device
2, // 8: spotify.connectstate.PutStateRequest.member_type:type_name -> spotify.connectstate.MemberType
1, // 9: spotify.connectstate.PutStateRequest.put_state_reason:type_name -> spotify.connectstate.PutStateReason
15, // 10: spotify.connectstate.DeviceInfo.capabilities:type_name -> spotify.connectstate.Capabilities
14, // 11: spotify.connectstate.DeviceInfo.metadata:type_name -> spotify.connectstate.DeviceMetadata
31, // 12: spotify.connectstate.DeviceInfo.device_type:type_name -> spotify.connectstate.devices.DeviceType
27, // 13: spotify.connectstate.DeviceInfo.metadata_map:type_name -> spotify.connectstate.DeviceInfo.MetadataMapEntry
28, // 14: spotify.connectstate.DeviceInfo.device_aliases:type_name -> spotify.connectstate.DeviceInfo.DeviceAliasesEntry
13, // 15: spotify.connectstate.DeviceInfo.audio_output_device_info:type_name -> spotify.connectstate.AudioOutputDeviceInfo
0, // 16: spotify.connectstate.AudioOutputDeviceInfo.audio_output_device_type:type_name -> spotify.connectstate.AudioOutputDeviceType
16, // 17: spotify.connectstate.Capabilities.supports_hifi:type_name -> spotify.connectstate.CapabilitySupportDetails
17, // 18: spotify.connectstate.LogoutCommand.command_options:type_name -> spotify.connectstate.ConnectCommandOptions
17, // 19: spotify.connectstate.SetVolumeCommand.command_options:type_name -> spotify.connectstate.ConnectCommandOptions
17, // 20: spotify.connectstate.RenameCommand.command_options:type_name -> spotify.connectstate.ConnectCommandOptions
17, // 21: spotify.connectstate.ConnectPlayerCommand.command_options:type_name -> spotify.connectstate.ConnectCommandOptions
29, // 22: spotify.connectstate.SetBackendMetadataCommand.metadata:type_name -> spotify.connectstate.SetBackendMetadataCommand.MetadataEntry
12, // 23: spotify.connectstate.CommandAndSourceDevice.source_device_info:type_name -> spotify.connectstate.DeviceInfo
12, // 24: spotify.connectstate.Cluster.DeviceEntry.value:type_name -> spotify.connectstate.DeviceInfo
32, // 25: spotify.connectstate.DeviceInfo.DeviceAliasesEntry.value:type_name -> spotify.connectstate.devices.DeviceAlias
26, // [26:26] is the sub-list for method output_type
26, // [26:26] 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_connect_proto_init() }
func file_connect_proto_init() {
if File_connect_proto != nil {
return
}
file_player_proto_init()
file_devices_proto_init()
if !protoimpl.UnsafeEnabled {
file_connect_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClusterUpdate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PostCommandResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Device); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Cluster); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PutStateRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PrivateDeviceInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[6].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_connect_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AudioOutputDeviceInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeviceMetadata); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Capabilities); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CapabilitySupportDetails); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ConnectCommandOptions); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LogoutCommand); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetVolumeCommand); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RenameCommand); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ConnectPlayerCommand); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetBackendMetadataCommand); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CommandAndSourceDevice); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ActiveDeviceUpdate); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_connect_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StartedPlayingEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_connect_proto_msgTypes[7].OneofWrappers = []interface{}{
(*DeviceInfo_AudioOutputDeviceInfo)(nil),
}
file_connect_proto_msgTypes[8].OneofWrappers = []interface{}{
(*AudioOutputDeviceInfo_AudioOutputDeviceType)(nil),
(*AudioOutputDeviceInfo_DeviceName)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_connect_proto_rawDesc,
NumEnums: 5,
NumMessages: 25,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_connect_proto_goTypes,
DependencyIndexes: file_connect_proto_depIdxs,
EnumInfos: file_connect_proto_enumTypes,
MessageInfos: file_connect_proto_msgTypes,
}.Build()
File_connect_proto = out.File
file_connect_proto_rawDesc = nil
file_connect_proto_goTypes = nil
file_connect_proto_depIdxs = nil
}