From 1e49dc2585a20bc750d9ae51b16caf795cf1db60 Mon Sep 17 00:00:00 2001 From: hrgbcxd <104820372+hrgbcxd@users.noreply.github.com> Date: Wed, 20 Jul 2022 17:27:24 +0200 Subject: [PATCH] Feature/add lom commands (#839) --- go.mod | 2 +- go.sum | 4 +- mdm/internal/checkinproto/checkin.pb.go | 4 +- mdm/internal/connectproto/connect.pb.go | 4 +- mdm/mdm/command.go | 19 + mdm/mdm/internal/mdmproto/mdm.pb.go | 1764 +++++++++-------- mdm/mdm/internal/mdmproto/mdm.proto | 15 + mdm/mdm/marshal_json.go | 10 + mdm/mdm/marshal_plist.go | 9 + mdm/mdm/marshal_proto.go | 19 + mdm/mdm/mdm_command_test.go | 48 + mdm/mdm/unmarshal_json.go | 8 + mdm/mdm/unmarshal_plist.go | 8 + mdm/mdm/unmarshal_proto.go | 17 + platform/apns/internal/pushproto/push.pb.go | 4 +- .../internal/blueprintproto/blueprint.pb.go | 4 +- .../internal/commandproto/command.pb.go | 4 +- .../config/internal/configproto/config.pb.go | 4 +- .../sync/internal/depsyncproto/depsync.pb.go | 4 +- .../device/internal/deviceproto/device.pb.go | 4 +- .../internal/profileproto/profile.pb.go | 4 +- .../devicecommandproto/device_command.pb.go | 4 +- .../remove/internal/removeproto/remove.pb.go | 4 +- platform/user/internal/userproto/user.pb.go | 4 +- tools/api/commands/lom_reset | 33 + 25 files changed, 1200 insertions(+), 804 deletions(-) create mode 100644 tools/api/commands/lom_reset diff --git a/go.mod b/go.mod index 299770ce..20d5c055 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352 golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 - google.golang.org/protobuf v1.27.1 + google.golang.org/protobuf v1.28.0 gopkg.in/Masterminds/squirrel.v1 v1.0.0-20170825200431-a6b93000bd21 ) diff --git a/go.sum b/go.sum index 85337a78..4a8e7292 100644 --- a/go.sum +++ b/go.sum @@ -104,7 +104,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.2.0 h1:S0iUepdCWODXRvtE+gcRDd15L+k+k1AiHlMiMjefH24= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/Masterminds/squirrel.v1 v1.0.0-20170825200431-a6b93000bd21 h1:GmGVIcDxdecAcVjcTp4IpK4VmCMxXhyZKwN2eIzsZ4Y= gopkg.in/Masterminds/squirrel.v1 v1.0.0-20170825200431-a6b93000bd21/go.mod h1:8PH4rQjb7OdPC6OWDDuY6J/PT8iSNTiff3jmccc2m10= diff --git a/mdm/internal/checkinproto/checkin.pb.go b/mdm/internal/checkinproto/checkin.pb.go index 68102cd7..c59ebd6f 100644 --- a/mdm/internal/checkinproto/checkin.pb.go +++ b/mdm/internal/checkinproto/checkin.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: checkin.proto package checkinproto diff --git a/mdm/internal/connectproto/connect.pb.go b/mdm/internal/connectproto/connect.pb.go index c91f413b..dc15ef10 100644 --- a/mdm/internal/connectproto/connect.pb.go +++ b/mdm/internal/connectproto/connect.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: connect.proto package connectproto diff --git a/mdm/mdm/command.go b/mdm/mdm/command.go index 7154a2c7..2d03a49d 100644 --- a/mdm/mdm/command.go +++ b/mdm/mdm/command.go @@ -69,6 +69,8 @@ type Command struct { ActiveNSExtensions *ActiveNSExtensions RotateFileVaultKey *RotateFileVaultKey RefreshCellularPlans *RefreshCellularPlans + LOMDeviceRequest *LOMDeviceRequest + LOMSetupRequestCommand *LOMSetupRequestCommand } // InstallProfile is an InstallProfile MDM Command @@ -236,6 +238,23 @@ type Setting struct { ConfigurationData []byte `plist:"-" json:"configuration"` // used to build the dictionary } +type LOMDeviceRequest struct { + RequestList []LOMDeviceRequestCommand `plist:",omitempty" json:"request_list,omitempty"` +} + +type LOMDeviceRequestCommand struct { + DeviceDNSName string `json:"device_dns_name"` + DeviceRequestType string `json:"device_request_type"` + DeviceRequestUUID string `json:"device_request_uuid"` + LOMProtocolVersion int `json:"lom_protocol_version"` + PrimaryIPv6AddressList []string `json:"primary_ip_v6_address_list"` + SecondaryIPv6AddressList []string `json:"secondary_ip_v6_address_list"` +} + +type LOMSetupRequestCommand struct { + RequestRequiresNetworkTether *bool `plist:",omitempty" json:"request_requires_network_tether,omitempty"` +} + type ManagedApplicationConfiguration struct { Identifiers []string `plist:",omitempty" json:"identifiers,omitempty"` } diff --git a/mdm/mdm/internal/mdmproto/mdm.pb.go b/mdm/mdm/internal/mdmproto/mdm.pb.go index 147aada0..fbf769c4 100644 --- a/mdm/mdm/internal/mdmproto/mdm.pb.go +++ b/mdm/mdm/internal/mdmproto/mdm.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.27.1 -// protoc v3.19.4 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: mdm.proto package mdmproto @@ -72,7 +72,7 @@ func (x ResultPayload_Status) Number() protoreflect.EnumNumber { // Deprecated: Use ResultPayload_Status.Descriptor instead. func (ResultPayload_Status) EnumDescriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{69, 0} + return file_mdm_proto_rawDescGZIP(), []int{71, 0} } type CommandPayload struct { @@ -143,6 +143,7 @@ type Command struct { //- CertificateList", //- SecurityInfo //- RestartDevice + //- LOMSetupRequest //- ShutDownDevice //- StopMirroring //- ClearRestrictionsPassword @@ -199,6 +200,7 @@ type Command struct { // *Command_SetRecoveryLock // *Command_VerifyRecoveryLock // *Command_RefreshCellularPlans + // *Command_LomDeviceRequestCommand Request isCommand_Request `protobuf_oneof:"request"` } @@ -521,6 +523,13 @@ func (x *Command) GetRefreshCellularPlans() *RefreshCellularPlans { return nil } +func (x *Command) GetLomDeviceRequestCommand() *LOMDeviceRequest { + if x, ok := x.GetRequest().(*Command_LomDeviceRequestCommand); ok { + return x.LomDeviceRequestCommand + } + return nil +} + type isCommand_Request interface { isCommand_Request() } @@ -681,6 +690,10 @@ type Command_RefreshCellularPlans struct { RefreshCellularPlans *RefreshCellularPlans `protobuf:"bytes,40,opt,name=refresh_cellular_plans,json=refreshCellularPlans,proto3,oneof"` } +type Command_LomDeviceRequestCommand struct { + LomDeviceRequestCommand *LOMDeviceRequest `protobuf:"bytes,41,opt,name=lomDeviceRequestCommand,proto3,oneof"` +} + func (*Command_InstallProfile) isCommand_Request() {} func (*Command_RemoveProfile) isCommand_Request() {} @@ -759,6 +772,8 @@ func (*Command_VerifyRecoveryLock) isCommand_Request() {} func (*Command_RefreshCellularPlans) isCommand_Request() {} +func (*Command_LomDeviceRequestCommand) isCommand_Request() {} + type InstallProfile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2684,6 +2699,140 @@ func (x *RemoveMedia) GetPersistentId() string { return "" } +type LOMDeviceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RequestList []*LOMDeviceRequestCommand `protobuf:"bytes,1,rep,name=requestList,proto3" json:"requestList,omitempty"` +} + +func (x *LOMDeviceRequest) Reset() { + *x = LOMDeviceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mdm_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LOMDeviceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LOMDeviceRequest) ProtoMessage() {} + +func (x *LOMDeviceRequest) ProtoReflect() protoreflect.Message { + mi := &file_mdm_proto_msgTypes[35] + 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 LOMDeviceRequest.ProtoReflect.Descriptor instead. +func (*LOMDeviceRequest) Descriptor() ([]byte, []int) { + return file_mdm_proto_rawDescGZIP(), []int{35} +} + +func (x *LOMDeviceRequest) GetRequestList() []*LOMDeviceRequestCommand { + if x != nil { + return x.RequestList + } + return nil +} + +type LOMDeviceRequestCommand struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeviceDNSName string `protobuf:"bytes,1,opt,name=deviceDNSName,proto3" json:"deviceDNSName,omitempty"` + DeviceRequestType string `protobuf:"bytes,2,opt,name=deviceRequestType,proto3" json:"deviceRequestType,omitempty"` + DeviceRequestUUID string `protobuf:"bytes,3,opt,name=deviceRequestUUID,proto3" json:"deviceRequestUUID,omitempty"` + LomProtocolVersion int64 `protobuf:"varint,4,opt,name=lomProtocolVersion,proto3" json:"lomProtocolVersion,omitempty"` + PrimaryIPv6AddressList []string `protobuf:"bytes,5,rep,name=primaryIPv6AddressList,proto3" json:"primaryIPv6AddressList,omitempty"` + SecondaryIPv6AddressList []string `protobuf:"bytes,6,rep,name=secondaryIPv6AddressList,proto3" json:"secondaryIPv6AddressList,omitempty"` +} + +func (x *LOMDeviceRequestCommand) Reset() { + *x = LOMDeviceRequestCommand{} + if protoimpl.UnsafeEnabled { + mi := &file_mdm_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LOMDeviceRequestCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LOMDeviceRequestCommand) ProtoMessage() {} + +func (x *LOMDeviceRequestCommand) ProtoReflect() protoreflect.Message { + mi := &file_mdm_proto_msgTypes[36] + 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 LOMDeviceRequestCommand.ProtoReflect.Descriptor instead. +func (*LOMDeviceRequestCommand) Descriptor() ([]byte, []int) { + return file_mdm_proto_rawDescGZIP(), []int{36} +} + +func (x *LOMDeviceRequestCommand) GetDeviceDNSName() string { + if x != nil { + return x.DeviceDNSName + } + return "" +} + +func (x *LOMDeviceRequestCommand) GetDeviceRequestType() string { + if x != nil { + return x.DeviceRequestType + } + return "" +} + +func (x *LOMDeviceRequestCommand) GetDeviceRequestUUID() string { + if x != nil { + return x.DeviceRequestUUID + } + return "" +} + +func (x *LOMDeviceRequestCommand) GetLomProtocolVersion() int64 { + if x != nil { + return x.LomProtocolVersion + } + return 0 +} + +func (x *LOMDeviceRequestCommand) GetPrimaryIPv6AddressList() []string { + if x != nil { + return x.PrimaryIPv6AddressList + } + return nil +} + +func (x *LOMDeviceRequestCommand) GetSecondaryIPv6AddressList() []string { + if x != nil { + return x.SecondaryIPv6AddressList + } + return nil +} + type Settings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2695,7 +2844,7 @@ type Settings struct { func (x *Settings) Reset() { *x = Settings{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[35] + mi := &file_mdm_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2708,7 +2857,7 @@ func (x *Settings) String() string { func (*Settings) ProtoMessage() {} func (x *Settings) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[35] + mi := &file_mdm_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2721,7 +2870,7 @@ func (x *Settings) ProtoReflect() protoreflect.Message { // Deprecated: Use Settings.ProtoReflect.Descriptor instead. func (*Settings) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{35} + return file_mdm_proto_rawDescGZIP(), []int{37} } func (x *Settings) GetSettings() []*Setting { @@ -2757,7 +2906,7 @@ type Setting struct { func (x *Setting) Reset() { *x = Setting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[36] + mi := &file_mdm_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2770,7 +2919,7 @@ func (x *Setting) String() string { func (*Setting) ProtoMessage() {} func (x *Setting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[36] + mi := &file_mdm_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2783,7 +2932,7 @@ func (x *Setting) ProtoReflect() protoreflect.Message { // Deprecated: Use Setting.ProtoReflect.Descriptor instead. func (*Setting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{36} + return file_mdm_proto_rawDescGZIP(), []int{38} } func (x *Setting) GetItem() string { @@ -2909,7 +3058,7 @@ type VoiceRoamingSetting struct { func (x *VoiceRoamingSetting) Reset() { *x = VoiceRoamingSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[37] + mi := &file_mdm_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2922,7 +3071,7 @@ func (x *VoiceRoamingSetting) String() string { func (*VoiceRoamingSetting) ProtoMessage() {} func (x *VoiceRoamingSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[37] + mi := &file_mdm_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2935,7 +3084,7 @@ func (x *VoiceRoamingSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use VoiceRoamingSetting.ProtoReflect.Descriptor instead. func (*VoiceRoamingSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{37} + return file_mdm_proto_rawDescGZIP(), []int{39} } func (x *VoiceRoamingSetting) GetEnabled() bool { @@ -2956,7 +3105,7 @@ type PersonalHotspotSetting struct { func (x *PersonalHotspotSetting) Reset() { *x = PersonalHotspotSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[38] + mi := &file_mdm_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2969,7 +3118,7 @@ func (x *PersonalHotspotSetting) String() string { func (*PersonalHotspotSetting) ProtoMessage() {} func (x *PersonalHotspotSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[38] + mi := &file_mdm_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2982,7 +3131,7 @@ func (x *PersonalHotspotSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use PersonalHotspotSetting.ProtoReflect.Descriptor instead. func (*PersonalHotspotSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{38} + return file_mdm_proto_rawDescGZIP(), []int{40} } func (x *PersonalHotspotSetting) GetEnabled() bool { @@ -3004,7 +3153,7 @@ type WallpaperSetting struct { func (x *WallpaperSetting) Reset() { *x = WallpaperSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[39] + mi := &file_mdm_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3017,7 +3166,7 @@ func (x *WallpaperSetting) String() string { func (*WallpaperSetting) ProtoMessage() {} func (x *WallpaperSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[39] + mi := &file_mdm_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3030,7 +3179,7 @@ func (x *WallpaperSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use WallpaperSetting.ProtoReflect.Descriptor instead. func (*WallpaperSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{39} + return file_mdm_proto_rawDescGZIP(), []int{41} } func (x *WallpaperSetting) GetImage() []byte { @@ -3058,7 +3207,7 @@ type DataRoamingSetting struct { func (x *DataRoamingSetting) Reset() { *x = DataRoamingSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[40] + mi := &file_mdm_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3071,7 +3220,7 @@ func (x *DataRoamingSetting) String() string { func (*DataRoamingSetting) ProtoMessage() {} func (x *DataRoamingSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[40] + mi := &file_mdm_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3084,7 +3233,7 @@ func (x *DataRoamingSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use DataRoamingSetting.ProtoReflect.Descriptor instead. func (*DataRoamingSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{40} + return file_mdm_proto_rawDescGZIP(), []int{42} } func (x *DataRoamingSetting) GetEnabled() bool { @@ -3105,7 +3254,7 @@ type BluetoothSetting struct { func (x *BluetoothSetting) Reset() { *x = BluetoothSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[41] + mi := &file_mdm_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3118,7 +3267,7 @@ func (x *BluetoothSetting) String() string { func (*BluetoothSetting) ProtoMessage() {} func (x *BluetoothSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[41] + mi := &file_mdm_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3131,7 +3280,7 @@ func (x *BluetoothSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use BluetoothSetting.ProtoReflect.Descriptor instead. func (*BluetoothSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{41} + return file_mdm_proto_rawDescGZIP(), []int{43} } func (x *BluetoothSetting) GetEnabled() bool { @@ -3153,7 +3302,7 @@ type ApplicationAttributesSetting struct { func (x *ApplicationAttributesSetting) Reset() { *x = ApplicationAttributesSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[42] + mi := &file_mdm_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3166,7 +3315,7 @@ func (x *ApplicationAttributesSetting) String() string { func (*ApplicationAttributesSetting) ProtoMessage() {} func (x *ApplicationAttributesSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[42] + mi := &file_mdm_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3179,7 +3328,7 @@ func (x *ApplicationAttributesSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationAttributesSetting.ProtoReflect.Descriptor instead. func (*ApplicationAttributesSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{42} + return file_mdm_proto_rawDescGZIP(), []int{44} } func (x *ApplicationAttributesSetting) GetIdentifier() string { @@ -3208,7 +3357,7 @@ type ApplicationConfigurationSetting struct { func (x *ApplicationConfigurationSetting) Reset() { *x = ApplicationConfigurationSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[43] + mi := &file_mdm_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3221,7 +3370,7 @@ func (x *ApplicationConfigurationSetting) String() string { func (*ApplicationConfigurationSetting) ProtoMessage() {} func (x *ApplicationConfigurationSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[43] + mi := &file_mdm_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3234,7 +3383,7 @@ func (x *ApplicationConfigurationSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationConfigurationSetting.ProtoReflect.Descriptor instead. func (*ApplicationConfigurationSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{43} + return file_mdm_proto_rawDescGZIP(), []int{45} } func (x *ApplicationConfigurationSetting) GetIdentifier() string { @@ -3262,7 +3411,7 @@ type ApplicationAttributes struct { func (x *ApplicationAttributes) Reset() { *x = ApplicationAttributes{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[44] + mi := &file_mdm_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3275,7 +3424,7 @@ func (x *ApplicationAttributes) String() string { func (*ApplicationAttributes) ProtoMessage() {} func (x *ApplicationAttributes) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[44] + mi := &file_mdm_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3288,7 +3437,7 @@ func (x *ApplicationAttributes) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplicationAttributes.ProtoReflect.Descriptor instead. func (*ApplicationAttributes) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{44} + return file_mdm_proto_rawDescGZIP(), []int{46} } func (x *ApplicationAttributes) GetVpnUuid() string { @@ -3309,7 +3458,7 @@ type DeviceNameSetting struct { func (x *DeviceNameSetting) Reset() { *x = DeviceNameSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[45] + mi := &file_mdm_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3322,7 +3471,7 @@ func (x *DeviceNameSetting) String() string { func (*DeviceNameSetting) ProtoMessage() {} func (x *DeviceNameSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[45] + mi := &file_mdm_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3335,7 +3484,7 @@ func (x *DeviceNameSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceNameSetting.ProtoReflect.Descriptor instead. func (*DeviceNameSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{45} + return file_mdm_proto_rawDescGZIP(), []int{47} } func (x *DeviceNameSetting) GetDeviceName() string { @@ -3356,7 +3505,7 @@ type TimeZoneSetting struct { func (x *TimeZoneSetting) Reset() { *x = TimeZoneSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[46] + mi := &file_mdm_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3369,7 +3518,7 @@ func (x *TimeZoneSetting) String() string { func (*TimeZoneSetting) ProtoMessage() {} func (x *TimeZoneSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[46] + mi := &file_mdm_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3382,7 +3531,7 @@ func (x *TimeZoneSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use TimeZoneSetting.ProtoReflect.Descriptor instead. func (*TimeZoneSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{46} + return file_mdm_proto_rawDescGZIP(), []int{48} } func (x *TimeZoneSetting) GetTimeZone() string { @@ -3403,7 +3552,7 @@ type HostnameSetting struct { func (x *HostnameSetting) Reset() { *x = HostnameSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[47] + mi := &file_mdm_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3416,7 +3565,7 @@ func (x *HostnameSetting) String() string { func (*HostnameSetting) ProtoMessage() {} func (x *HostnameSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[47] + mi := &file_mdm_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3429,7 +3578,7 @@ func (x *HostnameSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use HostnameSetting.ProtoReflect.Descriptor instead. func (*HostnameSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{47} + return file_mdm_proto_rawDescGZIP(), []int{49} } func (x *HostnameSetting) GetHostname() string { @@ -3450,7 +3599,7 @@ type MDMOptionsSetting struct { func (x *MDMOptionsSetting) Reset() { *x = MDMOptionsSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[48] + mi := &file_mdm_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3463,7 +3612,7 @@ func (x *MDMOptionsSetting) String() string { func (*MDMOptionsSetting) ProtoMessage() {} func (x *MDMOptionsSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[48] + mi := &file_mdm_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3476,7 +3625,7 @@ func (x *MDMOptionsSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use MDMOptionsSetting.ProtoReflect.Descriptor instead. func (*MDMOptionsSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{48} + return file_mdm_proto_rawDescGZIP(), []int{50} } func (x *MDMOptionsSetting) GetMdmOptions() *MDMOptions { @@ -3499,7 +3648,7 @@ type MDMOptions struct { func (x *MDMOptions) Reset() { *x = MDMOptions{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[49] + mi := &file_mdm_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3512,7 +3661,7 @@ func (x *MDMOptions) String() string { func (*MDMOptions) ProtoMessage() {} func (x *MDMOptions) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[49] + mi := &file_mdm_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3525,7 +3674,7 @@ func (x *MDMOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use MDMOptions.ProtoReflect.Descriptor instead. func (*MDMOptions) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{49} + return file_mdm_proto_rawDescGZIP(), []int{51} } func (x *MDMOptions) GetActivationLockAllowedWhileSupervised() bool { @@ -3560,7 +3709,7 @@ type PasscodeLockGracePeriodSetting struct { func (x *PasscodeLockGracePeriodSetting) Reset() { *x = PasscodeLockGracePeriodSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[50] + mi := &file_mdm_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3573,7 +3722,7 @@ func (x *PasscodeLockGracePeriodSetting) String() string { func (*PasscodeLockGracePeriodSetting) ProtoMessage() {} func (x *PasscodeLockGracePeriodSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[50] + mi := &file_mdm_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3586,7 +3735,7 @@ func (x *PasscodeLockGracePeriodSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use PasscodeLockGracePeriodSetting.ProtoReflect.Descriptor instead. func (*PasscodeLockGracePeriodSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{50} + return file_mdm_proto_rawDescGZIP(), []int{52} } func (x *PasscodeLockGracePeriodSetting) GetPasscodeLockGracePeriod() int64 { @@ -3607,7 +3756,7 @@ type MaximumResidentUsersSetting struct { func (x *MaximumResidentUsersSetting) Reset() { *x = MaximumResidentUsersSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[51] + mi := &file_mdm_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3620,7 +3769,7 @@ func (x *MaximumResidentUsersSetting) String() string { func (*MaximumResidentUsersSetting) ProtoMessage() {} func (x *MaximumResidentUsersSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[51] + mi := &file_mdm_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3633,7 +3782,7 @@ func (x *MaximumResidentUsersSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use MaximumResidentUsersSetting.ProtoReflect.Descriptor instead. func (*MaximumResidentUsersSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{51} + return file_mdm_proto_rawDescGZIP(), []int{53} } func (x *MaximumResidentUsersSetting) GetMaximumResidentUsers() int64 { @@ -3654,7 +3803,7 @@ type DiagnosticSubmissionSetting struct { func (x *DiagnosticSubmissionSetting) Reset() { *x = DiagnosticSubmissionSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[52] + mi := &file_mdm_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3667,7 +3816,7 @@ func (x *DiagnosticSubmissionSetting) String() string { func (*DiagnosticSubmissionSetting) ProtoMessage() {} func (x *DiagnosticSubmissionSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[52] + mi := &file_mdm_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3680,7 +3829,7 @@ func (x *DiagnosticSubmissionSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use DiagnosticSubmissionSetting.ProtoReflect.Descriptor instead. func (*DiagnosticSubmissionSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{52} + return file_mdm_proto_rawDescGZIP(), []int{54} } func (x *DiagnosticSubmissionSetting) GetEnabled() bool { @@ -3701,7 +3850,7 @@ type AppAnalyticsSetting struct { func (x *AppAnalyticsSetting) Reset() { *x = AppAnalyticsSetting{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[53] + mi := &file_mdm_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3714,7 +3863,7 @@ func (x *AppAnalyticsSetting) String() string { func (*AppAnalyticsSetting) ProtoMessage() {} func (x *AppAnalyticsSetting) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[53] + mi := &file_mdm_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3727,7 +3876,7 @@ func (x *AppAnalyticsSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use AppAnalyticsSetting.ProtoReflect.Descriptor instead. func (*AppAnalyticsSetting) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{53} + return file_mdm_proto_rawDescGZIP(), []int{55} } func (x *AppAnalyticsSetting) GetEnabled() bool { @@ -3748,7 +3897,7 @@ type ManagedApplicationConfiguration struct { func (x *ManagedApplicationConfiguration) Reset() { *x = ManagedApplicationConfiguration{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[54] + mi := &file_mdm_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3761,7 +3910,7 @@ func (x *ManagedApplicationConfiguration) String() string { func (*ManagedApplicationConfiguration) ProtoMessage() {} func (x *ManagedApplicationConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[54] + mi := &file_mdm_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3774,7 +3923,7 @@ func (x *ManagedApplicationConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ManagedApplicationConfiguration.ProtoReflect.Descriptor instead. func (*ManagedApplicationConfiguration) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{54} + return file_mdm_proto_rawDescGZIP(), []int{56} } func (x *ManagedApplicationConfiguration) GetIdentifiers() []string { @@ -3795,7 +3944,7 @@ type ManagedApplicationAttributes struct { func (x *ManagedApplicationAttributes) Reset() { *x = ManagedApplicationAttributes{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[55] + mi := &file_mdm_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3808,7 +3957,7 @@ func (x *ManagedApplicationAttributes) String() string { func (*ManagedApplicationAttributes) ProtoMessage() {} func (x *ManagedApplicationAttributes) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[55] + mi := &file_mdm_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3821,7 +3970,7 @@ func (x *ManagedApplicationAttributes) ProtoReflect() protoreflect.Message { // Deprecated: Use ManagedApplicationAttributes.ProtoReflect.Descriptor instead. func (*ManagedApplicationAttributes) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{55} + return file_mdm_proto_rawDescGZIP(), []int{57} } func (x *ManagedApplicationAttributes) GetIdentifiers() []string { @@ -3843,7 +3992,7 @@ type ManagedApplicationFeedback struct { func (x *ManagedApplicationFeedback) Reset() { *x = ManagedApplicationFeedback{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[56] + mi := &file_mdm_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3856,7 +4005,7 @@ func (x *ManagedApplicationFeedback) String() string { func (*ManagedApplicationFeedback) ProtoMessage() {} func (x *ManagedApplicationFeedback) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[56] + mi := &file_mdm_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3869,7 +4018,7 @@ func (x *ManagedApplicationFeedback) ProtoReflect() protoreflect.Message { // Deprecated: Use ManagedApplicationFeedback.ProtoReflect.Descriptor instead. func (*ManagedApplicationFeedback) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{56} + return file_mdm_proto_rawDescGZIP(), []int{58} } func (x *ManagedApplicationFeedback) GetIdentifiers() []string { @@ -3900,7 +4049,7 @@ type SetFirmwarePassword struct { func (x *SetFirmwarePassword) Reset() { *x = SetFirmwarePassword{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[57] + mi := &file_mdm_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3913,7 +4062,7 @@ func (x *SetFirmwarePassword) String() string { func (*SetFirmwarePassword) ProtoMessage() {} func (x *SetFirmwarePassword) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[57] + mi := &file_mdm_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3926,7 +4075,7 @@ func (x *SetFirmwarePassword) ProtoReflect() protoreflect.Message { // Deprecated: Use SetFirmwarePassword.ProtoReflect.Descriptor instead. func (*SetFirmwarePassword) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{57} + return file_mdm_proto_rawDescGZIP(), []int{59} } func (x *SetFirmwarePassword) GetCurrentPassword() string { @@ -3968,7 +4117,7 @@ type VerifyFirmwarePassword struct { func (x *VerifyFirmwarePassword) Reset() { *x = VerifyFirmwarePassword{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[58] + mi := &file_mdm_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3981,7 +4130,7 @@ func (x *VerifyFirmwarePassword) String() string { func (*VerifyFirmwarePassword) ProtoMessage() {} func (x *VerifyFirmwarePassword) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[58] + mi := &file_mdm_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3994,7 +4143,7 @@ func (x *VerifyFirmwarePassword) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyFirmwarePassword.ProtoReflect.Descriptor instead. func (*VerifyFirmwarePassword) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{58} + return file_mdm_proto_rawDescGZIP(), []int{60} } func (x *VerifyFirmwarePassword) GetPassword() string { @@ -4018,7 +4167,7 @@ type SetRecoveryLock struct { func (x *SetRecoveryLock) Reset() { *x = SetRecoveryLock{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[59] + mi := &file_mdm_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4031,7 +4180,7 @@ func (x *SetRecoveryLock) String() string { func (*SetRecoveryLock) ProtoMessage() {} func (x *SetRecoveryLock) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[59] + mi := &file_mdm_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4044,7 +4193,7 @@ func (x *SetRecoveryLock) ProtoReflect() protoreflect.Message { // Deprecated: Use SetRecoveryLock.ProtoReflect.Descriptor instead. func (*SetRecoveryLock) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{59} + return file_mdm_proto_rawDescGZIP(), []int{61} } func (x *SetRecoveryLock) GetCurrentPassword() string { @@ -4086,7 +4235,7 @@ type VerifyRecoveryLock struct { func (x *VerifyRecoveryLock) Reset() { *x = VerifyRecoveryLock{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[60] + mi := &file_mdm_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4099,7 +4248,7 @@ func (x *VerifyRecoveryLock) String() string { func (*VerifyRecoveryLock) ProtoMessage() {} func (x *VerifyRecoveryLock) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[60] + mi := &file_mdm_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4112,7 +4261,7 @@ func (x *VerifyRecoveryLock) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyRecoveryLock.ProtoReflect.Descriptor instead. func (*VerifyRecoveryLock) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{60} + return file_mdm_proto_rawDescGZIP(), []int{62} } func (x *VerifyRecoveryLock) GetPassword() string { @@ -4134,7 +4283,7 @@ type SetAutoAdminPassword struct { func (x *SetAutoAdminPassword) Reset() { *x = SetAutoAdminPassword{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[61] + mi := &file_mdm_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4147,7 +4296,7 @@ func (x *SetAutoAdminPassword) String() string { func (*SetAutoAdminPassword) ProtoMessage() {} func (x *SetAutoAdminPassword) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[61] + mi := &file_mdm_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4160,7 +4309,7 @@ func (x *SetAutoAdminPassword) ProtoReflect() protoreflect.Message { // Deprecated: Use SetAutoAdminPassword.ProtoReflect.Descriptor instead. func (*SetAutoAdminPassword) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{61} + return file_mdm_proto_rawDescGZIP(), []int{63} } func (x *SetAutoAdminPassword) GetGuid() string { @@ -4188,7 +4337,7 @@ type ScheduleOSUpdate struct { func (x *ScheduleOSUpdate) Reset() { *x = ScheduleOSUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[62] + mi := &file_mdm_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4201,7 +4350,7 @@ func (x *ScheduleOSUpdate) String() string { func (*ScheduleOSUpdate) ProtoMessage() {} func (x *ScheduleOSUpdate) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[62] + mi := &file_mdm_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4214,7 +4363,7 @@ func (x *ScheduleOSUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleOSUpdate.ProtoReflect.Descriptor instead. func (*ScheduleOSUpdate) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{62} + return file_mdm_proto_rawDescGZIP(), []int{64} } func (x *ScheduleOSUpdate) GetUpdates() []*Update { @@ -4239,7 +4388,7 @@ type Update struct { func (x *Update) Reset() { *x = Update{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[63] + mi := &file_mdm_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4252,7 +4401,7 @@ func (x *Update) String() string { func (*Update) ProtoMessage() {} func (x *Update) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[63] + mi := &file_mdm_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4265,7 +4414,7 @@ func (x *Update) ProtoReflect() protoreflect.Message { // Deprecated: Use Update.ProtoReflect.Descriptor instead. func (*Update) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{63} + return file_mdm_proto_rawDescGZIP(), []int{65} } func (x *Update) GetProductKey() string { @@ -4314,7 +4463,7 @@ type ScheduleOSUpdateScan struct { func (x *ScheduleOSUpdateScan) Reset() { *x = ScheduleOSUpdateScan{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[64] + mi := &file_mdm_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4327,7 +4476,7 @@ func (x *ScheduleOSUpdateScan) String() string { func (*ScheduleOSUpdateScan) ProtoMessage() {} func (x *ScheduleOSUpdateScan) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[64] + mi := &file_mdm_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4340,7 +4489,7 @@ func (x *ScheduleOSUpdateScan) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleOSUpdateScan.ProtoReflect.Descriptor instead. func (*ScheduleOSUpdateScan) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{64} + return file_mdm_proto_rawDescGZIP(), []int{66} } func (x *ScheduleOSUpdateScan) GetForce() bool { @@ -4361,7 +4510,7 @@ type ActiveNSExtensions struct { func (x *ActiveNSExtensions) Reset() { *x = ActiveNSExtensions{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[65] + mi := &file_mdm_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4374,7 +4523,7 @@ func (x *ActiveNSExtensions) String() string { func (*ActiveNSExtensions) ProtoMessage() {} func (x *ActiveNSExtensions) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[65] + mi := &file_mdm_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4387,7 +4536,7 @@ func (x *ActiveNSExtensions) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveNSExtensions.ProtoReflect.Descriptor instead. func (*ActiveNSExtensions) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{65} + return file_mdm_proto_rawDescGZIP(), []int{67} } func (x *ActiveNSExtensions) GetFilterExtensionPoints() []string { @@ -4411,7 +4560,7 @@ type RotateFileVaultKey struct { func (x *RotateFileVaultKey) Reset() { *x = RotateFileVaultKey{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[66] + mi := &file_mdm_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4424,7 +4573,7 @@ func (x *RotateFileVaultKey) String() string { func (*RotateFileVaultKey) ProtoMessage() {} func (x *RotateFileVaultKey) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[66] + mi := &file_mdm_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4437,7 +4586,7 @@ func (x *RotateFileVaultKey) ProtoReflect() protoreflect.Message { // Deprecated: Use RotateFileVaultKey.ProtoReflect.Descriptor instead. func (*RotateFileVaultKey) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{66} + return file_mdm_proto_rawDescGZIP(), []int{68} } func (x *RotateFileVaultKey) GetKeyType() string { @@ -4481,7 +4630,7 @@ type FileVaultUnlock struct { func (x *FileVaultUnlock) Reset() { *x = FileVaultUnlock{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[67] + mi := &file_mdm_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4494,7 +4643,7 @@ func (x *FileVaultUnlock) String() string { func (*FileVaultUnlock) ProtoMessage() {} func (x *FileVaultUnlock) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[67] + mi := &file_mdm_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4507,7 +4656,7 @@ func (x *FileVaultUnlock) ProtoReflect() protoreflect.Message { // Deprecated: Use FileVaultUnlock.ProtoReflect.Descriptor instead. func (*FileVaultUnlock) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{67} + return file_mdm_proto_rawDescGZIP(), []int{69} } func (x *FileVaultUnlock) GetPassword() string { @@ -4542,7 +4691,7 @@ type SetBootstrapToken struct { func (x *SetBootstrapToken) Reset() { *x = SetBootstrapToken{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[68] + mi := &file_mdm_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4555,7 +4704,7 @@ func (x *SetBootstrapToken) String() string { func (*SetBootstrapToken) ProtoMessage() {} func (x *SetBootstrapToken) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[68] + mi := &file_mdm_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4568,7 +4717,7 @@ func (x *SetBootstrapToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SetBootstrapToken.ProtoReflect.Descriptor instead. func (*SetBootstrapToken) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{68} + return file_mdm_proto_rawDescGZIP(), []int{70} } func (x *SetBootstrapToken) GetBootstrapToken() string { @@ -4591,7 +4740,7 @@ type ResultPayload struct { func (x *ResultPayload) Reset() { *x = ResultPayload{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[69] + mi := &file_mdm_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4604,7 +4753,7 @@ func (x *ResultPayload) String() string { func (*ResultPayload) ProtoMessage() {} func (x *ResultPayload) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[69] + mi := &file_mdm_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4617,7 +4766,7 @@ func (x *ResultPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use ResultPayload.ProtoReflect.Descriptor instead. func (*ResultPayload) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{69} + return file_mdm_proto_rawDescGZIP(), []int{71} } func (x *ResultPayload) GetUdid() string { @@ -4658,7 +4807,7 @@ type ErrorChain struct { func (x *ErrorChain) Reset() { *x = ErrorChain{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[70] + mi := &file_mdm_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4671,7 +4820,7 @@ func (x *ErrorChain) String() string { func (*ErrorChain) ProtoMessage() {} func (x *ErrorChain) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[70] + mi := &file_mdm_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4684,7 +4833,7 @@ func (x *ErrorChain) ProtoReflect() protoreflect.Message { // Deprecated: Use ErrorChain.ProtoReflect.Descriptor instead. func (*ErrorChain) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{70} + return file_mdm_proto_rawDescGZIP(), []int{72} } func (x *ErrorChain) GetLocalizedDescription() string { @@ -4726,7 +4875,7 @@ type RefreshCellularPlans struct { func (x *RefreshCellularPlans) Reset() { *x = RefreshCellularPlans{} if protoimpl.UnsafeEnabled { - mi := &file_mdm_proto_msgTypes[71] + mi := &file_mdm_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4739,7 +4888,7 @@ func (x *RefreshCellularPlans) String() string { func (*RefreshCellularPlans) ProtoMessage() {} func (x *RefreshCellularPlans) ProtoReflect() protoreflect.Message { - mi := &file_mdm_proto_msgTypes[71] + mi := &file_mdm_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4752,7 +4901,7 @@ func (x *RefreshCellularPlans) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshCellularPlans.ProtoReflect.Descriptor instead. func (*RefreshCellularPlans) Descriptor() ([]byte, []int) { - return file_mdm_proto_rawDescGZIP(), []int{71} + return file_mdm_proto_rawDescGZIP(), []int{73} } func (x *RefreshCellularPlans) GetEsimServerUrl() string { @@ -4772,7 +4921,7 @@ var file_mdm_proto_rawDesc = []byte{ 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x07, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x9f, 0x19, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0xf7, 0x19, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, @@ -4973,553 +5122,585 @@ var file_mdm_proto_rawDesc = []byte{ 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x42, 0x09, - 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2a, 0x0a, 0x0e, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2f, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x4f, 0x0a, 0x1a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x68, 0x0a, 0x18, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x4f, 0x6e, - 0x6c, 0x79, 0x22, 0x2d, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x22, 0x32, 0x0a, 0x0d, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, - 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5b, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, - 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x45, 0x72, 0x61, 0x73, 0x65, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x70, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x10, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6c, - 0x61, 0x6e, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, - 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, - 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x22, 0xaa, 0x01, 0x0a, - 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x69, 0x6e, - 0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0c, 0x52, 0x65, 0x73, - 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2f, 0x0a, 0x11, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, - 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, - 0x0a, 0x0e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, - 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, - 0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74, 0x65, 0x22, 0xba, 0x03, 0x0a, 0x12, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, - 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x64, 0x6d, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, - 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x44, 0x0a, 0x19, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x5f, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x75, - 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x21, 0x0a, 0x1f, + 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x56, + 0x0a, 0x17, 0x6c, 0x6f, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x4f, 0x4d, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x6c, + 0x6f, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x2a, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2f, 0x0a, + 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x4f, + 0x0a, 0x1a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x14, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, + 0x2f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x22, 0x68, 0x0a, 0x18, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2a, + 0x0a, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x5f, 0x6f, + 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x2d, 0x0a, 0x11, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x0d, 0x43, 0x6c, 0x65, + 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0b, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5b, 0x0a, + 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x70, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x45, + 0x72, 0x61, 0x73, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x12, + 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, + 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, + 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, + 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, + 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x69, 0x74, 0x79, 0x53, + 0x65, 0x74, 0x75, 0x70, 0x22, 0xaa, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x63, 0x61, 0x6e, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x61, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x22, 0x41, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, + 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x13, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2f, 0x0a, 0x11, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x4c, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6f, 0x6f, 0x74, 0x6e, 0x6f, 0x74, + 0x65, 0x22, 0xba, 0x03, 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, + 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x12, 0x3d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, + 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x4f, 0x0a, + 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x1e, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, - 0xf9, 0x01, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61, - 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, - 0x55, 0x72, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, - 0x75, 0x72, 0x6c, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x17, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, - 0x74, 0x55, 0x72, 0x6c, 0x50, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x73, - 0x12, 0x49, 0x0a, 0x21, 0x70, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1e, 0x70, 0x69, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x08, 0x4d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x67, 0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, - 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, - 0x2e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x97, 0x01, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x6d, 0x64, 0x35, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x6d, 0x64, 0x35, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x64, 0x35, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x64, 0x35, 0x73, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x73, 0x22, 0xf4, 0x01, 0x0a, 0x08, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, - 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, - 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0d, - 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0x60, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, + 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x44, + 0x0a, 0x19, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, + 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x22, 0x21, 0x0a, 0x1f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1e, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x08, + 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x70, 0x69, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, + 0x17, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x50, 0x69, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x21, 0x70, 0x69, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x1e, 0x70, 0x69, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x76, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x08, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, + 0x3d, 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x67, + 0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, + 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, + 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x64, 0x6d, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x97, 0x01, 0x0a, 0x05, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x64, 0x35, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x64, 0x35, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x64, 0x35, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x6d, 0x64, 0x35, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x68, 0x61, + 0x32, 0x35, 0x36, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35, + 0x36, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, + 0x73, 0x22, 0xf4, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x64, 0x65, 0x6d, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x64, - 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x64, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x3a, 0x0a, 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x33, - 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x50, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x22, 0x38, 0x0a, 0x14, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x75, 0x62, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x69, 0x7a, + 0x65, 0x49, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x0a, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x13, 0x41, 0x70, + 0x70, 0x6c, 0x79, 0x52, 0x65, 0x64, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x64, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x64, 0x65, + 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3a, 0x0a, 0x16, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x9f, 0x04, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x4c, 0x0a, 0x23, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, - 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x73, 0x6b, - 0x69, 0x70, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, - 0x29, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, - 0x75, 0x70, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x72, 0x65, - 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x23, 0x73, 0x65, 0x74, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x75, - 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x73, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, - 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x27, 0x64, 0x6f, 0x6e, 0x74, 0x5f, 0x61, 0x75, - 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x22, 0x64, 0x6f, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x6f, - 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6c, - 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x19, 0x61, - 0x75, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x65, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x33, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x57, 0x0a, 0x0f, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x25, 0x0a, + 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x72, 0x6c, 0x22, 0x38, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x9f, + 0x04, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x23, 0x73, 0x6b, 0x69, 0x70, 0x5f, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x29, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x73, 0x65, 0x74, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x41, 0x73, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x53, 0x0a, + 0x27, 0x64, 0x6f, 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x22, + 0x64, 0x6f, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x19, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x69, 0x6d, 0x61, + 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, + 0x19, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x16, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x46, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x19, 0x70, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x5b, 0x0a, 0x19, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x74, 0x75, + 0x70, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x16, 0x41, 0x75, 0x74, - 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0c, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x26, 0x0a, 0x0f, - 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, - 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x79, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, - 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, - 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x08, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x64, 0x6d, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xf9, 0x08, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x64, - 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x76, - 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x6f, - 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x52, 0x0c, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, - 0x4b, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x74, 0x73, - 0x70, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x64, 0x6d, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x6f, 0x74, - 0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x70, 0x65, 0x72, - 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x12, 0x38, 0x0a, 0x09, - 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x70, - 0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x77, 0x61, 0x6c, - 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, - 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, - 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x6f, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, - 0x6f, 0x6f, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x64, 0x6d, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, - 0x68, 0x12, 0x5d, 0x0a, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x3c, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, - 0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, - 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x17, 0x70, 0x61, - 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x5b, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x6d, 0x61, - 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x15, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, - 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x69, 0x61, + 0x22, 0x91, 0x01, 0x0a, 0x16, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, + 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, + 0x75, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, + 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69, + 0x64, 0x64, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, + 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0x79, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, + 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0d, 0x69, 0x74, 0x75, 0x6e, 0x65, 0x73, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x10, 0x4c, 0x4f, 0x4d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, + 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x4f, 0x4d, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, + 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xbf, 0x02, 0x0a, + 0x17, 0x4c, 0x4f, 0x4d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x44, 0x4e, 0x53, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x44, 0x4e, 0x53, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, + 0x0a, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x55, 0x55, 0x49, + 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x6c, 0x6f, + 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x16, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x49, 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x70, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x49, 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x18, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x49, + 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x49, + 0x50, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x39, + 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, + 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xf9, 0x08, 0x0a, 0x07, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, + 0x0a, 0x0d, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x12, 0x4b, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x68, + 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, + 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, + 0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0f, + 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x12, + 0x38, 0x0a, 0x09, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x61, + 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0c, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x72, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x62, 0x6c, + 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, + 0x74, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x74, + 0x6f, 0x6f, 0x74, 0x68, 0x12, 0x5d, 0x0a, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x15, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x65, 0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, + 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x17, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, + 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x5b, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x14, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x15, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, + 0x74, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x14, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, - 0x73, 0x74, 0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x42, - 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x41, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x12, 0x66, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, - 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, - 0x6e, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x22, 0x32, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x48, - 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x57, 0x61, 0x6c, 0x6c, 0x70, - 0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x10, 0x42, 0x6c, 0x75, 0x65, 0x74, - 0x6f, 0x6f, 0x74, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x85, - 0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x12, 0x42, 0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x76, 0x70, 0x6e, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x70, 0x6e, 0x55, 0x75, 0x69, 0x64, 0x22, 0x34, 0x0a, 0x11, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, - 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x2e, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, - 0x22, 0x2d, 0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x4a, 0x0a, 0x11, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x0a, - 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x28, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x65, - 0x72, 0x76, 0x69, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x24, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x41, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, - 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x15, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x37, 0x70, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x30, 0x70, 0x72, 0x6f, - 0x6d, 0x70, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x42, 0x6f, - 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x6f, 0x72, 0x41, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, - 0x1e, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, - 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, - 0x3b, 0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x17, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, - 0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x53, 0x0a, 0x1b, - 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x6d, 0x61, 0x78, - 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x22, 0x37, 0x0a, 0x1b, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x6e, 0x12, 0x42, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, + 0x63, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x12, 0x66, 0x0a, 0x19, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x52, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x5a, 0x6f, 0x6e, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x74, 0x69, 0x6d, + 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x6f, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x32, 0x0a, 0x16, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, + 0x61, 0x6c, 0x48, 0x6f, 0x74, 0x73, 0x70, 0x6f, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2f, 0x0a, 0x13, 0x41, 0x70, - 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x43, 0x0a, 0x1f, 0x4d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, - 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x22, 0x40, 0x0a, 0x1c, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x22, 0x67, 0x0a, 0x1a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, - 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x66, 0x65, 0x65, - 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x22, 0xcb, 0x01, 0x0a, 0x13, - 0x53, 0x65, 0x74, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x6f, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x6f, - 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, - 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x34, 0x0a, 0x16, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, - 0xc7, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4c, - 0x6f, 0x63, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x6f, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x6f, - 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, - 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x12, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4c, 0x6f, 0x63, 0x6b, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x53, - 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x67, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x22, 0x3e, 0x0a, 0x10, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4f, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x2a, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a, - 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x22, 0x2c, 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4f, 0x53, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x22, 0x4c, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x53, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0xe0, - 0x01, 0x0a, 0x12, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75, - 0x6c, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x44, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x6e, - 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x64, 0x6d, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x55, - 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61, 0x75, 0x6c, 0x74, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0e, 0x6e, 0x65, 0x77, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, - 0x40, 0x0a, 0x1c, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x45, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x55, - 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3c, - 0x0a, 0x11, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6f, - 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd2, 0x01, 0x0a, - 0x0d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x64, - 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x75, 0x75, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x64, 0x6d, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x53, 0x0a, 0x06, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x49, - 0x64, 0x6c, 0x65, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x4e, 0x6f, 0x77, 0x10, - 0x04, 0x22, 0xb9, 0x01, 0x0a, 0x0a, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x12, 0x33, 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x73, 0x5f, 0x65, 0x6e, 0x67, 0x6c, - 0x69, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1d, - 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3e, 0x0a, - 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, - 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x65, 0x73, 0x69, 0x6d, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x65, 0x73, 0x69, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x42, 0x38, 0x5a, - 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, - 0x6f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x64, - 0x6d, 0x2f, 0x6d, 0x64, 0x6d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, - 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x57, 0x61, + 0x6c, 0x6c, 0x70, 0x61, 0x70, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x10, 0x42, 0x6c, + 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, + 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x96, 0x01, 0x0a, 0x1c, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x16, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x64, 0x6d, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x22, 0x85, 0x01, 0x0a, 0x1f, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x72, + 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1b, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x15, 0x41, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x70, 0x6e, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x70, 0x6e, 0x55, 0x75, 0x69, 0x64, 0x22, 0x34, 0x0a, + 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x2e, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, + 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, + 0x6f, 0x6e, 0x65, 0x22, 0x2d, 0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x11, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x0b, 0x6d, 0x64, 0x6d, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, + 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x0a, 0x6d, 0x64, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8f, + 0x02, 0x0a, 0x0a, 0x4d, 0x44, 0x4d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, + 0x28, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x5f, 0x73, + 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x24, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x6b, 0x41, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x53, 0x75, 0x70, 0x65, 0x72, + 0x76, 0x69, 0x73, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, + 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, + 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x71, 0x0a, + 0x37, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x30, + 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, + 0x77, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, + 0x6f, 0x72, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x5d, 0x0a, 0x1e, 0x50, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x6b, + 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x1a, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x70, 0x61, 0x73, 0x73, 0x63, 0x6f, 0x64, 0x65, + 0x4c, 0x6f, 0x63, 0x6b, 0x47, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, + 0x53, 0x0a, 0x1b, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x34, + 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, + 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x22, 0x37, 0x0a, 0x1b, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, + 0x69, 0x63, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2f, 0x0a, + 0x13, 0x41, 0x70, 0x70, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x43, + 0x0a, 0x1f, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x73, 0x22, 0x40, 0x0a, 0x1c, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x67, 0x0a, 0x1a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, + 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x22, 0xcb, + 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, + 0x6f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x4f, 0x72, 0x6f, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x74, 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x34, 0x0a, 0x16, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, + 0x6f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x4f, 0x72, 0x6f, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x74, 0x65, 0x74, 0x68, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x65, 0x74, 0x68, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x12, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x4c, 0x6f, + 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x4f, + 0x0a, 0x14, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x75, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x48, 0x61, 0x73, 0x68, 0x22, + 0x3e, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4f, 0x53, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, + 0xc3, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d, + 0x61, 0x78, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x55, 0x73, 0x65, 0x72, + 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x2c, 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x4f, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x53, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x12, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x56, 0x61, 0x75, 0x6c, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x75, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x61, + 0x75, 0x6c, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x77, + 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x12, 0x40, 0x0a, 0x1c, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x5f, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x75, + 0x6c, 0x74, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x10, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x22, 0x3c, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, + 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, + 0x72, 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xd2, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x64, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x55, 0x75, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, + 0x53, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x63, 0x6b, + 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x02, 0x12, 0x08, + 0x0a, 0x04, 0x49, 0x64, 0x6c, 0x65, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x4e, + 0x6f, 0x77, 0x10, 0x04, 0x22, 0xb9, 0x01, 0x0a, 0x0a, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x73, 0x5f, 0x65, + 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x75, 0x73, 0x45, 0x6e, 0x67, 0x6c, + 0x69, 0x73, 0x68, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, + 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, + 0x22, 0x3e, 0x0a, 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x65, 0x6c, 0x6c, 0x75, + 0x6c, 0x61, 0x72, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x65, 0x73, 0x69, 0x6d, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x65, 0x73, 0x69, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, + 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, + 0x69, 0x63, 0x72, 0x6f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6d, 0x64, 0x6d, + 0x2f, 0x6d, 0x64, 0x6d, 0x2f, 0x6d, 0x64, 0x6d, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x6d, 0x64, 0x6d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -5535,7 +5716,7 @@ func file_mdm_proto_rawDescGZIP() []byte { } var file_mdm_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_mdm_proto_msgTypes = make([]protoimpl.MessageInfo, 72) +var file_mdm_proto_msgTypes = make([]protoimpl.MessageInfo, 74) var file_mdm_proto_goTypes = []interface{}{ (ResultPayload_Status)(0), // 0: mdmproto.ResultPayload.Status (*CommandPayload)(nil), // 1: mdmproto.CommandPayload @@ -5573,43 +5754,45 @@ var file_mdm_proto_goTypes = []interface{}{ (*AutoSetupAdminAccounts)(nil), // 33: mdmproto.AutoSetupAdminAccounts (*InstallMedia)(nil), // 34: mdmproto.InstallMedia (*RemoveMedia)(nil), // 35: mdmproto.RemoveMedia - (*Settings)(nil), // 36: mdmproto.Settings - (*Setting)(nil), // 37: mdmproto.Setting - (*VoiceRoamingSetting)(nil), // 38: mdmproto.VoiceRoamingSetting - (*PersonalHotspotSetting)(nil), // 39: mdmproto.PersonalHotspotSetting - (*WallpaperSetting)(nil), // 40: mdmproto.WallpaperSetting - (*DataRoamingSetting)(nil), // 41: mdmproto.DataRoamingSetting - (*BluetoothSetting)(nil), // 42: mdmproto.BluetoothSetting - (*ApplicationAttributesSetting)(nil), // 43: mdmproto.ApplicationAttributesSetting - (*ApplicationConfigurationSetting)(nil), // 44: mdmproto.ApplicationConfigurationSetting - (*ApplicationAttributes)(nil), // 45: mdmproto.ApplicationAttributes - (*DeviceNameSetting)(nil), // 46: mdmproto.DeviceNameSetting - (*TimeZoneSetting)(nil), // 47: mdmproto.TimeZoneSetting - (*HostnameSetting)(nil), // 48: mdmproto.HostnameSetting - (*MDMOptionsSetting)(nil), // 49: mdmproto.MDMOptionsSetting - (*MDMOptions)(nil), // 50: mdmproto.MDMOptions - (*PasscodeLockGracePeriodSetting)(nil), // 51: mdmproto.PasscodeLockGracePeriodSetting - (*MaximumResidentUsersSetting)(nil), // 52: mdmproto.MaximumResidentUsersSetting - (*DiagnosticSubmissionSetting)(nil), // 53: mdmproto.DiagnosticSubmissionSetting - (*AppAnalyticsSetting)(nil), // 54: mdmproto.AppAnalyticsSetting - (*ManagedApplicationConfiguration)(nil), // 55: mdmproto.ManagedApplicationConfiguration - (*ManagedApplicationAttributes)(nil), // 56: mdmproto.ManagedApplicationAttributes - (*ManagedApplicationFeedback)(nil), // 57: mdmproto.ManagedApplicationFeedback - (*SetFirmwarePassword)(nil), // 58: mdmproto.SetFirmwarePassword - (*VerifyFirmwarePassword)(nil), // 59: mdmproto.VerifyFirmwarePassword - (*SetRecoveryLock)(nil), // 60: mdmproto.SetRecoveryLock - (*VerifyRecoveryLock)(nil), // 61: mdmproto.VerifyRecoveryLock - (*SetAutoAdminPassword)(nil), // 62: mdmproto.SetAutoAdminPassword - (*ScheduleOSUpdate)(nil), // 63: mdmproto.ScheduleOSUpdate - (*Update)(nil), // 64: mdmproto.Update - (*ScheduleOSUpdateScan)(nil), // 65: mdmproto.ScheduleOSUpdateScan - (*ActiveNSExtensions)(nil), // 66: mdmproto.ActiveNSExtensions - (*RotateFileVaultKey)(nil), // 67: mdmproto.RotateFileVaultKey - (*FileVaultUnlock)(nil), // 68: mdmproto.FileVaultUnlock - (*SetBootstrapToken)(nil), // 69: mdmproto.SetBootstrapToken - (*ResultPayload)(nil), // 70: mdmproto.ResultPayload - (*ErrorChain)(nil), // 71: mdmproto.ErrorChain - (*RefreshCellularPlans)(nil), // 72: mdmproto.RefreshCellularPlans + (*LOMDeviceRequest)(nil), // 36: mdmproto.LOMDeviceRequest + (*LOMDeviceRequestCommand)(nil), // 37: mdmproto.LOMDeviceRequestCommand + (*Settings)(nil), // 38: mdmproto.Settings + (*Setting)(nil), // 39: mdmproto.Setting + (*VoiceRoamingSetting)(nil), // 40: mdmproto.VoiceRoamingSetting + (*PersonalHotspotSetting)(nil), // 41: mdmproto.PersonalHotspotSetting + (*WallpaperSetting)(nil), // 42: mdmproto.WallpaperSetting + (*DataRoamingSetting)(nil), // 43: mdmproto.DataRoamingSetting + (*BluetoothSetting)(nil), // 44: mdmproto.BluetoothSetting + (*ApplicationAttributesSetting)(nil), // 45: mdmproto.ApplicationAttributesSetting + (*ApplicationConfigurationSetting)(nil), // 46: mdmproto.ApplicationConfigurationSetting + (*ApplicationAttributes)(nil), // 47: mdmproto.ApplicationAttributes + (*DeviceNameSetting)(nil), // 48: mdmproto.DeviceNameSetting + (*TimeZoneSetting)(nil), // 49: mdmproto.TimeZoneSetting + (*HostnameSetting)(nil), // 50: mdmproto.HostnameSetting + (*MDMOptionsSetting)(nil), // 51: mdmproto.MDMOptionsSetting + (*MDMOptions)(nil), // 52: mdmproto.MDMOptions + (*PasscodeLockGracePeriodSetting)(nil), // 53: mdmproto.PasscodeLockGracePeriodSetting + (*MaximumResidentUsersSetting)(nil), // 54: mdmproto.MaximumResidentUsersSetting + (*DiagnosticSubmissionSetting)(nil), // 55: mdmproto.DiagnosticSubmissionSetting + (*AppAnalyticsSetting)(nil), // 56: mdmproto.AppAnalyticsSetting + (*ManagedApplicationConfiguration)(nil), // 57: mdmproto.ManagedApplicationConfiguration + (*ManagedApplicationAttributes)(nil), // 58: mdmproto.ManagedApplicationAttributes + (*ManagedApplicationFeedback)(nil), // 59: mdmproto.ManagedApplicationFeedback + (*SetFirmwarePassword)(nil), // 60: mdmproto.SetFirmwarePassword + (*VerifyFirmwarePassword)(nil), // 61: mdmproto.VerifyFirmwarePassword + (*SetRecoveryLock)(nil), // 62: mdmproto.SetRecoveryLock + (*VerifyRecoveryLock)(nil), // 63: mdmproto.VerifyRecoveryLock + (*SetAutoAdminPassword)(nil), // 64: mdmproto.SetAutoAdminPassword + (*ScheduleOSUpdate)(nil), // 65: mdmproto.ScheduleOSUpdate + (*Update)(nil), // 66: mdmproto.Update + (*ScheduleOSUpdateScan)(nil), // 67: mdmproto.ScheduleOSUpdateScan + (*ActiveNSExtensions)(nil), // 68: mdmproto.ActiveNSExtensions + (*RotateFileVaultKey)(nil), // 69: mdmproto.RotateFileVaultKey + (*FileVaultUnlock)(nil), // 70: mdmproto.FileVaultUnlock + (*SetBootstrapToken)(nil), // 71: mdmproto.SetBootstrapToken + (*ResultPayload)(nil), // 72: mdmproto.ResultPayload + (*ErrorChain)(nil), // 73: mdmproto.ErrorChain + (*RefreshCellularPlans)(nil), // 74: mdmproto.RefreshCellularPlans } var file_mdm_proto_depIdxs = []int32{ 2, // 0: mdmproto.CommandPayload.command:type_name -> mdmproto.Command @@ -5636,57 +5819,59 @@ var file_mdm_proto_depIdxs = []int32{ 31, // 21: mdmproto.Command.validata_applications:type_name -> mdmproto.ValidateApplications 34, // 22: mdmproto.Command.install_media:type_name -> mdmproto.InstallMedia 35, // 23: mdmproto.Command.remove_media:type_name -> mdmproto.RemoveMedia - 36, // 24: mdmproto.Command.settings:type_name -> mdmproto.Settings - 55, // 25: mdmproto.Command.managed_application_configuration:type_name -> mdmproto.ManagedApplicationConfiguration - 56, // 26: mdmproto.Command.managed_application_attributes:type_name -> mdmproto.ManagedApplicationAttributes - 57, // 27: mdmproto.Command.managed_application_feedback:type_name -> mdmproto.ManagedApplicationFeedback - 58, // 28: mdmproto.Command.set_firmware_password:type_name -> mdmproto.SetFirmwarePassword - 59, // 29: mdmproto.Command.verify_firmware_password:type_name -> mdmproto.VerifyFirmwarePassword - 62, // 30: mdmproto.Command.set_auto_admin_password:type_name -> mdmproto.SetAutoAdminPassword - 63, // 31: mdmproto.Command.schedule_os_update:type_name -> mdmproto.ScheduleOSUpdate - 65, // 32: mdmproto.Command.schedule_os_update_scan:type_name -> mdmproto.ScheduleOSUpdateScan - 66, // 33: mdmproto.Command.active_ns_extensions:type_name -> mdmproto.ActiveNSExtensions - 67, // 34: mdmproto.Command.rotate_filevault_key:type_name -> mdmproto.RotateFileVaultKey + 38, // 24: mdmproto.Command.settings:type_name -> mdmproto.Settings + 57, // 25: mdmproto.Command.managed_application_configuration:type_name -> mdmproto.ManagedApplicationConfiguration + 58, // 26: mdmproto.Command.managed_application_attributes:type_name -> mdmproto.ManagedApplicationAttributes + 59, // 27: mdmproto.Command.managed_application_feedback:type_name -> mdmproto.ManagedApplicationFeedback + 60, // 28: mdmproto.Command.set_firmware_password:type_name -> mdmproto.SetFirmwarePassword + 61, // 29: mdmproto.Command.verify_firmware_password:type_name -> mdmproto.VerifyFirmwarePassword + 64, // 30: mdmproto.Command.set_auto_admin_password:type_name -> mdmproto.SetAutoAdminPassword + 65, // 31: mdmproto.Command.schedule_os_update:type_name -> mdmproto.ScheduleOSUpdate + 67, // 32: mdmproto.Command.schedule_os_update_scan:type_name -> mdmproto.ScheduleOSUpdateScan + 68, // 33: mdmproto.Command.active_ns_extensions:type_name -> mdmproto.ActiveNSExtensions + 69, // 34: mdmproto.Command.rotate_filevault_key:type_name -> mdmproto.RotateFileVaultKey 21, // 35: mdmproto.Command.install_enterprise_application:type_name -> mdmproto.InstallEnterpriseApplication - 69, // 36: mdmproto.Command.set_bootstrap_token:type_name -> mdmproto.SetBootstrapToken - 60, // 37: mdmproto.Command.set_recovery_lock:type_name -> mdmproto.SetRecoveryLock - 61, // 38: mdmproto.Command.verify_recovery_lock:type_name -> mdmproto.VerifyRecoveryLock - 72, // 39: mdmproto.Command.refresh_cellular_plans:type_name -> mdmproto.RefreshCellularPlans - 18, // 40: mdmproto.InstallApplication.options:type_name -> mdmproto.InstallApplicationOptions - 19, // 41: mdmproto.InstallApplication.configuration:type_name -> mdmproto.InstallApplicationConfiguration - 20, // 42: mdmproto.InstallApplication.attributes:type_name -> mdmproto.InstallApplicationAttributes - 22, // 43: mdmproto.InstallEnterpriseApplication.manifest:type_name -> mdmproto.Manifest - 23, // 44: mdmproto.Manifest.manifest_items:type_name -> mdmproto.ManifestItem - 24, // 45: mdmproto.ManifestItem.assets:type_name -> mdmproto.Asset - 25, // 46: mdmproto.ManifestItem.metadata:type_name -> mdmproto.Metadata - 26, // 47: mdmproto.Metadata.items:type_name -> mdmproto.BundleInfo - 33, // 48: mdmproto.AccountConfiguration.auto_setup_admin_accounts:type_name -> mdmproto.AutoSetupAdminAccounts - 37, // 49: mdmproto.Settings.settings:type_name -> mdmproto.Setting - 46, // 50: mdmproto.Setting.device_name:type_name -> mdmproto.DeviceNameSetting - 48, // 51: mdmproto.Setting.hostname:type_name -> mdmproto.HostnameSetting - 38, // 52: mdmproto.Setting.voice_roaming:type_name -> mdmproto.VoiceRoamingSetting - 39, // 53: mdmproto.Setting.personal_hotspot:type_name -> mdmproto.PersonalHotspotSetting - 40, // 54: mdmproto.Setting.wallpaper:type_name -> mdmproto.WallpaperSetting - 41, // 55: mdmproto.Setting.data_roaming:type_name -> mdmproto.DataRoamingSetting - 42, // 56: mdmproto.Setting.bluetooth:type_name -> mdmproto.BluetoothSetting - 43, // 57: mdmproto.Setting.application_attributes:type_name -> mdmproto.ApplicationAttributesSetting - 49, // 58: mdmproto.Setting.mdm_options:type_name -> mdmproto.MDMOptionsSetting - 51, // 59: mdmproto.Setting.passcode_lock_grace_period:type_name -> mdmproto.PasscodeLockGracePeriodSetting - 52, // 60: mdmproto.Setting.maximum_resident_users:type_name -> mdmproto.MaximumResidentUsersSetting - 53, // 61: mdmproto.Setting.diagnostic_submission:type_name -> mdmproto.DiagnosticSubmissionSetting - 54, // 62: mdmproto.Setting.app_analytics:type_name -> mdmproto.AppAnalyticsSetting - 44, // 63: mdmproto.Setting.application_configuration:type_name -> mdmproto.ApplicationConfigurationSetting - 47, // 64: mdmproto.Setting.time_zone:type_name -> mdmproto.TimeZoneSetting - 45, // 65: mdmproto.ApplicationAttributesSetting.application_attributes:type_name -> mdmproto.ApplicationAttributes - 50, // 66: mdmproto.MDMOptionsSetting.mdm_options:type_name -> mdmproto.MDMOptions - 64, // 67: mdmproto.ScheduleOSUpdate.updates:type_name -> mdmproto.Update - 68, // 68: mdmproto.RotateFileVaultKey.filevault_unlock:type_name -> mdmproto.FileVaultUnlock - 71, // 69: mdmproto.ResultPayload.error_chain:type_name -> mdmproto.ErrorChain - 70, // [70:70] is the sub-list for method output_type - 70, // [70:70] is the sub-list for method input_type - 70, // [70:70] is the sub-list for extension type_name - 70, // [70:70] is the sub-list for extension extendee - 0, // [0:70] is the sub-list for field type_name + 71, // 36: mdmproto.Command.set_bootstrap_token:type_name -> mdmproto.SetBootstrapToken + 62, // 37: mdmproto.Command.set_recovery_lock:type_name -> mdmproto.SetRecoveryLock + 63, // 38: mdmproto.Command.verify_recovery_lock:type_name -> mdmproto.VerifyRecoveryLock + 74, // 39: mdmproto.Command.refresh_cellular_plans:type_name -> mdmproto.RefreshCellularPlans + 36, // 40: mdmproto.Command.lomDeviceRequestCommand:type_name -> mdmproto.LOMDeviceRequest + 18, // 41: mdmproto.InstallApplication.options:type_name -> mdmproto.InstallApplicationOptions + 19, // 42: mdmproto.InstallApplication.configuration:type_name -> mdmproto.InstallApplicationConfiguration + 20, // 43: mdmproto.InstallApplication.attributes:type_name -> mdmproto.InstallApplicationAttributes + 22, // 44: mdmproto.InstallEnterpriseApplication.manifest:type_name -> mdmproto.Manifest + 23, // 45: mdmproto.Manifest.manifest_items:type_name -> mdmproto.ManifestItem + 24, // 46: mdmproto.ManifestItem.assets:type_name -> mdmproto.Asset + 25, // 47: mdmproto.ManifestItem.metadata:type_name -> mdmproto.Metadata + 26, // 48: mdmproto.Metadata.items:type_name -> mdmproto.BundleInfo + 33, // 49: mdmproto.AccountConfiguration.auto_setup_admin_accounts:type_name -> mdmproto.AutoSetupAdminAccounts + 37, // 50: mdmproto.LOMDeviceRequest.requestList:type_name -> mdmproto.LOMDeviceRequestCommand + 39, // 51: mdmproto.Settings.settings:type_name -> mdmproto.Setting + 48, // 52: mdmproto.Setting.device_name:type_name -> mdmproto.DeviceNameSetting + 50, // 53: mdmproto.Setting.hostname:type_name -> mdmproto.HostnameSetting + 40, // 54: mdmproto.Setting.voice_roaming:type_name -> mdmproto.VoiceRoamingSetting + 41, // 55: mdmproto.Setting.personal_hotspot:type_name -> mdmproto.PersonalHotspotSetting + 42, // 56: mdmproto.Setting.wallpaper:type_name -> mdmproto.WallpaperSetting + 43, // 57: mdmproto.Setting.data_roaming:type_name -> mdmproto.DataRoamingSetting + 44, // 58: mdmproto.Setting.bluetooth:type_name -> mdmproto.BluetoothSetting + 45, // 59: mdmproto.Setting.application_attributes:type_name -> mdmproto.ApplicationAttributesSetting + 51, // 60: mdmproto.Setting.mdm_options:type_name -> mdmproto.MDMOptionsSetting + 53, // 61: mdmproto.Setting.passcode_lock_grace_period:type_name -> mdmproto.PasscodeLockGracePeriodSetting + 54, // 62: mdmproto.Setting.maximum_resident_users:type_name -> mdmproto.MaximumResidentUsersSetting + 55, // 63: mdmproto.Setting.diagnostic_submission:type_name -> mdmproto.DiagnosticSubmissionSetting + 56, // 64: mdmproto.Setting.app_analytics:type_name -> mdmproto.AppAnalyticsSetting + 46, // 65: mdmproto.Setting.application_configuration:type_name -> mdmproto.ApplicationConfigurationSetting + 49, // 66: mdmproto.Setting.time_zone:type_name -> mdmproto.TimeZoneSetting + 47, // 67: mdmproto.ApplicationAttributesSetting.application_attributes:type_name -> mdmproto.ApplicationAttributes + 52, // 68: mdmproto.MDMOptionsSetting.mdm_options:type_name -> mdmproto.MDMOptions + 66, // 69: mdmproto.ScheduleOSUpdate.updates:type_name -> mdmproto.Update + 70, // 70: mdmproto.RotateFileVaultKey.filevault_unlock:type_name -> mdmproto.FileVaultUnlock + 73, // 71: mdmproto.ResultPayload.error_chain:type_name -> mdmproto.ErrorChain + 72, // [72:72] is the sub-list for method output_type + 72, // [72:72] is the sub-list for method input_type + 72, // [72:72] is the sub-list for extension type_name + 72, // [72:72] is the sub-list for extension extendee + 0, // [0:72] is the sub-list for field type_name } func init() { file_mdm_proto_init() } @@ -6116,7 +6301,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Settings); i { + switch v := v.(*LOMDeviceRequest); i { case 0: return &v.state case 1: @@ -6128,7 +6313,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Setting); i { + switch v := v.(*LOMDeviceRequestCommand); i { case 0: return &v.state case 1: @@ -6140,7 +6325,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VoiceRoamingSetting); i { + switch v := v.(*Settings); i { case 0: return &v.state case 1: @@ -6152,7 +6337,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PersonalHotspotSetting); i { + switch v := v.(*Setting); i { case 0: return &v.state case 1: @@ -6164,7 +6349,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WallpaperSetting); i { + switch v := v.(*VoiceRoamingSetting); i { case 0: return &v.state case 1: @@ -6176,7 +6361,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataRoamingSetting); i { + switch v := v.(*PersonalHotspotSetting); i { case 0: return &v.state case 1: @@ -6188,7 +6373,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BluetoothSetting); i { + switch v := v.(*WallpaperSetting); i { case 0: return &v.state case 1: @@ -6200,7 +6385,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationAttributesSetting); i { + switch v := v.(*DataRoamingSetting); i { case 0: return &v.state case 1: @@ -6212,7 +6397,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationConfigurationSetting); i { + switch v := v.(*BluetoothSetting); i { case 0: return &v.state case 1: @@ -6224,7 +6409,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplicationAttributes); i { + switch v := v.(*ApplicationAttributesSetting); i { case 0: return &v.state case 1: @@ -6236,7 +6421,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceNameSetting); i { + switch v := v.(*ApplicationConfigurationSetting); i { case 0: return &v.state case 1: @@ -6248,7 +6433,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimeZoneSetting); i { + switch v := v.(*ApplicationAttributes); i { case 0: return &v.state case 1: @@ -6260,7 +6445,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HostnameSetting); i { + switch v := v.(*DeviceNameSetting); i { case 0: return &v.state case 1: @@ -6272,7 +6457,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MDMOptionsSetting); i { + switch v := v.(*TimeZoneSetting); i { case 0: return &v.state case 1: @@ -6284,7 +6469,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MDMOptions); i { + switch v := v.(*HostnameSetting); i { case 0: return &v.state case 1: @@ -6296,7 +6481,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PasscodeLockGracePeriodSetting); i { + switch v := v.(*MDMOptionsSetting); i { case 0: return &v.state case 1: @@ -6308,7 +6493,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MaximumResidentUsersSetting); i { + switch v := v.(*MDMOptions); i { case 0: return &v.state case 1: @@ -6320,7 +6505,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiagnosticSubmissionSetting); i { + switch v := v.(*PasscodeLockGracePeriodSetting); i { case 0: return &v.state case 1: @@ -6332,7 +6517,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AppAnalyticsSetting); i { + switch v := v.(*MaximumResidentUsersSetting); i { case 0: return &v.state case 1: @@ -6344,7 +6529,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ManagedApplicationConfiguration); i { + switch v := v.(*DiagnosticSubmissionSetting); i { case 0: return &v.state case 1: @@ -6356,7 +6541,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ManagedApplicationAttributes); i { + switch v := v.(*AppAnalyticsSetting); i { case 0: return &v.state case 1: @@ -6368,7 +6553,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ManagedApplicationFeedback); i { + switch v := v.(*ManagedApplicationConfiguration); i { case 0: return &v.state case 1: @@ -6380,7 +6565,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetFirmwarePassword); i { + switch v := v.(*ManagedApplicationAttributes); i { case 0: return &v.state case 1: @@ -6392,7 +6577,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyFirmwarePassword); i { + switch v := v.(*ManagedApplicationFeedback); i { case 0: return &v.state case 1: @@ -6404,7 +6589,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetRecoveryLock); i { + switch v := v.(*SetFirmwarePassword); i { case 0: return &v.state case 1: @@ -6416,7 +6601,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyRecoveryLock); i { + switch v := v.(*VerifyFirmwarePassword); i { case 0: return &v.state case 1: @@ -6428,7 +6613,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetAutoAdminPassword); i { + switch v := v.(*SetRecoveryLock); i { case 0: return &v.state case 1: @@ -6440,7 +6625,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScheduleOSUpdate); i { + switch v := v.(*VerifyRecoveryLock); i { case 0: return &v.state case 1: @@ -6452,7 +6637,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Update); i { + switch v := v.(*SetAutoAdminPassword); i { case 0: return &v.state case 1: @@ -6464,7 +6649,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ScheduleOSUpdateScan); i { + switch v := v.(*ScheduleOSUpdate); i { case 0: return &v.state case 1: @@ -6476,7 +6661,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActiveNSExtensions); i { + switch v := v.(*Update); i { case 0: return &v.state case 1: @@ -6488,7 +6673,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RotateFileVaultKey); i { + switch v := v.(*ScheduleOSUpdateScan); i { case 0: return &v.state case 1: @@ -6500,7 +6685,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileVaultUnlock); i { + switch v := v.(*ActiveNSExtensions); i { case 0: return &v.state case 1: @@ -6512,7 +6697,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetBootstrapToken); i { + switch v := v.(*RotateFileVaultKey); i { case 0: return &v.state case 1: @@ -6524,7 +6709,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResultPayload); i { + switch v := v.(*FileVaultUnlock); i { case 0: return &v.state case 1: @@ -6536,7 +6721,7 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ErrorChain); i { + switch v := v.(*SetBootstrapToken); i { case 0: return &v.state case 1: @@ -6548,6 +6733,30 @@ func file_mdm_proto_init() { } } file_mdm_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResultPayload); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mdm_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ErrorChain); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mdm_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshCellularPlans); i { case 0: return &v.state @@ -6600,6 +6809,7 @@ func file_mdm_proto_init() { (*Command_SetRecoveryLock)(nil), (*Command_VerifyRecoveryLock)(nil), (*Command_RefreshCellularPlans)(nil), + (*Command_LomDeviceRequestCommand)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -6607,7 +6817,7 @@ func file_mdm_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_mdm_proto_rawDesc, NumEnums: 1, - NumMessages: 72, + NumMessages: 74, NumExtensions: 0, NumServices: 0, }, diff --git a/mdm/mdm/internal/mdmproto/mdm.proto b/mdm/mdm/internal/mdmproto/mdm.proto index 374dc344..c5f44622 100644 --- a/mdm/mdm/internal/mdmproto/mdm.proto +++ b/mdm/mdm/internal/mdmproto/mdm.proto @@ -18,6 +18,7 @@ message Command { - CertificateList", - SecurityInfo - RestartDevice + - LOMSetupRequest - ShutDownDevice - StopMirroring - ClearRestrictionsPassword @@ -74,6 +75,7 @@ message Command { SetRecoveryLock set_recovery_lock = 38; VerifyRecoveryLock verify_recovery_lock = 39; RefreshCellularPlans refresh_cellular_plans = 40; + LOMDeviceRequest lomDeviceRequestCommand = 41; } } @@ -256,6 +258,19 @@ message RemoveMedia { string persistent_id = 3; } +message LOMDeviceRequest { + repeated LOMDeviceRequestCommand requestList = 1; +} + +message LOMDeviceRequestCommand { + string deviceDNSName = 1; + string deviceRequestType = 2; + string deviceRequestUUID = 3; + int64 lomProtocolVersion = 4; + repeated string primaryIPv6AddressList = 5; + repeated string secondaryIPv6AddressList = 6; +} + message Settings { repeated Setting settings = 1; } diff --git a/mdm/mdm/marshal_json.go b/mdm/mdm/marshal_json.go index 34a8ffab..40a4864d 100644 --- a/mdm/mdm/marshal_json.go +++ b/mdm/mdm/marshal_json.go @@ -12,6 +12,7 @@ func (c *Command) MarshalJSON() ([]byte, error) { "CertificateList", "SecurityInfo", "RestartDevice", + "LOMSetupRequest", "ShutDownDevice", "StopMirroring", "ClearRestrictionsPassword", @@ -250,6 +251,15 @@ func (c *Command) MarshalJSON() ([]byte, error) { RemoveMedia: c.RemoveMedia, } return json.Marshal(&x) + case "LOMDeviceRequest": + var x = struct { + RequestType string `json:"request_type"` + *LOMDeviceRequest + }{ + RequestType: c.RequestType, + LOMDeviceRequest: c.LOMDeviceRequest, + } + return json.Marshal(&x) case "Settings": var x = struct { RequestType string `json:"request_type"` diff --git a/mdm/mdm/marshal_plist.go b/mdm/mdm/marshal_plist.go index bed09a48..94a60f10 100644 --- a/mdm/mdm/marshal_plist.go +++ b/mdm/mdm/marshal_plist.go @@ -14,6 +14,7 @@ func (c *Command) MarshalPlist() (interface{}, error) { "CertificateList", "SecurityInfo", "RestartDevice", + "LOMSetupRequest", "ShutDownDevice", "StopMirroring", "ClearRestrictionsPassword", @@ -228,6 +229,14 @@ func (c *Command) MarshalPlist() (interface{}, error) { RequestType: c.RequestType, RemoveMedia: c.RemoveMedia, }, nil + case "LOMDeviceRequest": + return &struct { + RequestType string + *LOMDeviceRequest + }{ + RequestType: c.RequestType, + LOMDeviceRequest: c.LOMDeviceRequest, + }, nil case "Settings": // convert all the data plists into the dictionary inside settings before serialization. for i, set := range c.Settings.Settings { diff --git a/mdm/mdm/marshal_proto.go b/mdm/mdm/marshal_proto.go index e8de230e..24224991 100644 --- a/mdm/mdm/marshal_proto.go +++ b/mdm/mdm/marshal_proto.go @@ -31,6 +31,7 @@ func commandToProto(cmd *Command) (*mdmproto.Command, error) { "CertificateList", "SecurityInfo", "RestartDevice", + "LOMSetupRequest", "ShutDownDevice", "StopMirroring", "ClearRestrictionsPassword", @@ -297,6 +298,24 @@ func commandToProto(cmd *Command) (*mdmproto.Command, error) { PersistentId: cmd.RemoveMedia.PersistentID, }, } + case "LOMDeviceRequest": + var requestList []*mdmproto.LOMDeviceRequestCommand + for _, r := range cmd.LOMDeviceRequest.RequestList { + requestList = append(requestList, &mdmproto.LOMDeviceRequestCommand{ + DeviceDNSName: r.DeviceDNSName, + DeviceRequestType: r.DeviceRequestType, + DeviceRequestUUID: r.DeviceRequestUUID, + LomProtocolVersion: int64(r.LOMProtocolVersion), + PrimaryIPv6AddressList: r.PrimaryIPv6AddressList, + SecondaryIPv6AddressList: r.SecondaryIPv6AddressList, + }) + } + + cmdproto.Request = &mdmproto.Command_LomDeviceRequestCommand{ + LomDeviceRequestCommand: &mdmproto.LOMDeviceRequest{ + RequestList: requestList, + }, + } case "Settings": var settings []*mdmproto.Setting for _, s := range cmd.Settings.Settings { diff --git a/mdm/mdm/mdm_command_test.go b/mdm/mdm/mdm_command_test.go index 77a315b7..3f31e8ec 100644 --- a/mdm/mdm/mdm_command_test.go +++ b/mdm/mdm/mdm_command_test.go @@ -146,6 +146,27 @@ func TestMarshalCommand(t *testing.T) { }, }, }, + { + Command: Command{ + RequestType: "LOMDeviceRequest", + LOMDeviceRequest: &LOMDeviceRequest{ + RequestList: []LOMDeviceRequestCommand{ + { + DeviceDNSName: "dns.name", + DeviceRequestType: "request.type", + DeviceRequestUUID: "uuid", + LOMProtocolVersion: 1356382, + PrimaryIPv6AddressList: []string{ + "2fb2:244a:d925:ddf6:8a28:1a52:b0e2:ea62", + }, + SecondaryIPv6AddressList: []string{ + "2fb2:244a:d925:ddf6:8a28:1a52:b0e2:ea63", + }, + }, + }, + }, + }, + }, } for _, tt := range tests { t.Run(tt.Command.RequestType+"_json", func(t *testing.T) { @@ -525,6 +546,33 @@ func TestEndToEnd(t *testing.T) { } }, }, + { + name: "LOMDeviceRequest", + requestBytes: []byte( + `{"udid":"controllerUid","request_type":"LOMDeviceRequest","request_list":[{"device_dns_name":"deviceDnsName","device_request_type":"Reset","device_request_uuid":"B97F3491-E5E9-40D4-B163-36C41648CB46","lom_protocol_version":254,"primary_ip_v6_address_list":["primaryIpV6"],"secondary_ip_v6_address_list":["secondaryIpV6"]}]}`, + ), + testFn: func(t *testing.T, parts endToEndParts) { + needToSee := [][]byte{ + []byte(`LOMDeviceRequest`), + []byte(`deviceDnsName`), + []byte(`Reset`), + []byte(`B97F3491-E5E9-40D4-B163-36C41648CB46`), + []byte(`254`), + []byte(`primaryIpV6`), + []byte(`secondaryIpV6`), + } + + for _, b := range needToSee { + if !bytes.Contains(parts.plistData, b) { + t.Error(fmt.Sprintf("marshaled plist does not contain required bytes: '%s'", string(b))) + } + } + + if parts.req.UDID != "controllerUid" { + t.Error("UDID should be set to request udid") + } + }, + }, } for _, tt := range tests { diff --git a/mdm/mdm/unmarshal_json.go b/mdm/mdm/unmarshal_json.go index dc25cac4..db142b7d 100644 --- a/mdm/mdm/unmarshal_json.go +++ b/mdm/mdm/unmarshal_json.go @@ -37,6 +37,7 @@ func (c *Command) UnmarshalJSON(data []byte) error { "CertificateList", "SecurityInfo", "RestartDevice", + "LOMSetupRequest", "ShutDownDevice", "StopMirroring", "ClearRestrictionsPassword", @@ -222,6 +223,13 @@ func (c *Command) UnmarshalJSON(data []byte) error { } c.RemoveMedia = &payload return nil + case "LOMDeviceRequest": + var payload LOMDeviceRequest + if err := json.Unmarshal(data, &payload); err != nil { + return errors.Wrapf(err, "mdm: unmarshal %s command json", c.RequestType) + } + c.LOMDeviceRequest = &payload + return nil case "Settings": var payload Settings if err := json.Unmarshal(data, &payload); err != nil { diff --git a/mdm/mdm/unmarshal_plist.go b/mdm/mdm/unmarshal_plist.go index 9c40d784..3d116af4 100644 --- a/mdm/mdm/unmarshal_plist.go +++ b/mdm/mdm/unmarshal_plist.go @@ -21,6 +21,7 @@ func (c *Command) UnmarshalPlist(unmarshal func(i interface{}) error) error { "CertificateList", "SecurityInfo", "RestartDevice", + "LOMSetupRequest", "ShutDownDevice", "StopMirroring", "ClearRestrictionsPassword", @@ -206,6 +207,13 @@ func (c *Command) UnmarshalPlist(unmarshal func(i interface{}) error) error { } c.RemoveMedia = &payload return nil + case "LOMDeviceRequest": + var payload LOMDeviceRequest + if err := unmarshal(&payload); err != nil { + return errors.Wrapf(err, "mdm: unmarshal %s command plist", requestType.RequestType) + } + c.LOMDeviceRequest = &payload + return nil case "Settings": var payload Settings if err := unmarshal(&payload); err != nil { diff --git a/mdm/mdm/unmarshal_proto.go b/mdm/mdm/unmarshal_proto.go index 1b55df9e..f64c579f 100644 --- a/mdm/mdm/unmarshal_proto.go +++ b/mdm/mdm/unmarshal_proto.go @@ -17,6 +17,7 @@ func protoToCommand(pb *mdmproto.Command) *Command { "CertificateList", "SecurityInfo", "RestartDevice", + "LOMSetupRequest", "ShutDownDevice", "StopMirroring", "ClearRestrictionsPassword", @@ -269,6 +270,22 @@ func protoToCommand(pb *mdmproto.Command) *Command { MediaType: pbc.GetMediaType(), PersistentID: pbc.GetPersistentId(), } + case "LOMDeviceRequest": + pbc := pb.GetLomDeviceRequestCommand() + var requestList []LOMDeviceRequestCommand + for _, r := range pbc.GetRequestList() { + requestList = append(requestList, LOMDeviceRequestCommand{ + DeviceDNSName: r.GetDeviceDNSName(), + DeviceRequestType: r.GetDeviceRequestType(), + DeviceRequestUUID: r.GetDeviceRequestUUID(), + LOMProtocolVersion: int(r.GetLomProtocolVersion()), + PrimaryIPv6AddressList: r.GetPrimaryIPv6AddressList(), + SecondaryIPv6AddressList: r.GetSecondaryIPv6AddressList(), + }) + } + cmd.LOMDeviceRequest = &LOMDeviceRequest{ + RequestList: requestList, + } case "Settings": pbc := pb.GetSettings() var settings []Setting diff --git a/platform/apns/internal/pushproto/push.pb.go b/platform/apns/internal/pushproto/push.pb.go index 3399a6e6..0ad2a912 100644 --- a/platform/apns/internal/pushproto/push.pb.go +++ b/platform/apns/internal/pushproto/push.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: push.proto package pushproto diff --git a/platform/blueprint/internal/blueprintproto/blueprint.pb.go b/platform/blueprint/internal/blueprintproto/blueprint.pb.go index 74538999..7819ea14 100644 --- a/platform/blueprint/internal/blueprintproto/blueprint.pb.go +++ b/platform/blueprint/internal/blueprintproto/blueprint.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: blueprint.proto package blueprintproto diff --git a/platform/command/internal/commandproto/command.pb.go b/platform/command/internal/commandproto/command.pb.go index a5ef95e2..1fbb6874 100644 --- a/platform/command/internal/commandproto/command.pb.go +++ b/platform/command/internal/commandproto/command.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: command.proto package commandproto diff --git a/platform/config/internal/configproto/config.pb.go b/platform/config/internal/configproto/config.pb.go index 429b2657..5e04af1d 100644 --- a/platform/config/internal/configproto/config.pb.go +++ b/platform/config/internal/configproto/config.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: config.proto package configproto diff --git a/platform/dep/sync/internal/depsyncproto/depsync.pb.go b/platform/dep/sync/internal/depsyncproto/depsync.pb.go index 785fab0c..a8f784ab 100644 --- a/platform/dep/sync/internal/depsyncproto/depsync.pb.go +++ b/platform/dep/sync/internal/depsyncproto/depsync.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: depsync.proto package depsyncproto diff --git a/platform/device/internal/deviceproto/device.pb.go b/platform/device/internal/deviceproto/device.pb.go index f929d1fe..dd0cdf3c 100644 --- a/platform/device/internal/deviceproto/device.pb.go +++ b/platform/device/internal/deviceproto/device.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: device.proto package deviceproto diff --git a/platform/profile/internal/profileproto/profile.pb.go b/platform/profile/internal/profileproto/profile.pb.go index fba16f04..92fb8b11 100644 --- a/platform/profile/internal/profileproto/profile.pb.go +++ b/platform/profile/internal/profileproto/profile.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: profile.proto package profileproto diff --git a/platform/queue/internal/devicecommandproto/device_command.pb.go b/platform/queue/internal/devicecommandproto/device_command.pb.go index 400f7234..62643ddc 100644 --- a/platform/queue/internal/devicecommandproto/device_command.pb.go +++ b/platform/queue/internal/devicecommandproto/device_command.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: device_command.proto package devicecommandproto diff --git a/platform/remove/internal/removeproto/remove.pb.go b/platform/remove/internal/removeproto/remove.pb.go index eee4a804..c4308b2f 100644 --- a/platform/remove/internal/removeproto/remove.pb.go +++ b/platform/remove/internal/removeproto/remove.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: remove.proto package removeproto diff --git a/platform/user/internal/userproto/user.pb.go b/platform/user/internal/userproto/user.pb.go index 27a3eece..16a9dd52 100644 --- a/platform/user/internal/userproto/user.pb.go +++ b/platform/user/internal/userproto/user.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.18.1 +// protoc-gen-go v1.28.0 +// protoc v3.21.2 // source: user.proto package userproto diff --git a/tools/api/commands/lom_reset b/tools/api/commands/lom_reset new file mode 100644 index 00000000..0a41a734 --- /dev/null +++ b/tools/api/commands/lom_reset @@ -0,0 +1,33 @@ +#!/bin/bash +source $MICROMDM_ENV_PATH +endpoint="v1/commands" + +# apple documentation https://developer.apple.com/documentation/devicemanagement/lomdevicerequestcommand/command/requestlistitem + +requestUuid=$(cat /proc/sys/kernel/random/uuid) +requestUuid=${requestUuid^^} + +jq -n \ + --arg request_type "LOMDeviceRequest" \ + --arg udid "$1" \ + --arg requestUuid "$requestUuid" \ + --arg deviceDnsName "$2" \ + --arg deviceIpV6 "$3" \ + '.udid = $udid + |.request_type = $request_type + |.request_list = [ + { + "device_dns_name": $deviceDnsName, + "device_request_type": "Reset", + "device_request_uuid": $requestUuid, + "lom_protocol_version": 1, + "primary_ip_v6_address_list": [ + $deviceIpV6 + ], + "secondary_ip_v6_address_list": [ + + ] + } + ] + '| \ + curl $CURL_OPTS -K <(cat <<< "-u micromdm:$API_TOKEN") "$SERVER_URL/$endpoint" -d@-