// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.34.1
// 	protoc        v5.29.3
// source: implant/implantpb/module.proto

package implantpb

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type Ping struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Nonce int32 `protobuf:"varint,1,opt,name=nonce,proto3" json:"nonce,omitempty"`
}

func (x *Ping) Reset() {
	*x = Ping{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Ping) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Ping) ProtoMessage() {}

func (x *Ping) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Ping.ProtoReflect.Descriptor instead.
func (*Ping) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{0}
}

func (x *Ping) GetNonce() int32 {
	if x != nil {
		return x.Nonce
	}
	return 0
}

type Register struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name    string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Proxy   string   `protobuf:"bytes,2,opt,name=proxy,proto3" json:"proxy,omitempty"`
	Module  []string `protobuf:"bytes,3,rep,name=module,proto3" json:"module,omitempty"`
	Addons  []*Addon `protobuf:"bytes,4,rep,name=addons,proto3" json:"addons,omitempty"`
	Timer   *Timer   `protobuf:"bytes,5,opt,name=timer,proto3" json:"timer,omitempty"`
	Sysinfo *SysInfo `protobuf:"bytes,11,opt,name=sysinfo,proto3" json:"sysinfo,omitempty"`
	Secure  *Secure  `protobuf:"bytes,12,opt,name=secure,proto3" json:"secure,omitempty"` // implant的公钥，用于server加密数据
}

func (x *Register) Reset() {
	*x = Register{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Register) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Register) ProtoMessage() {}

func (x *Register) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Register.ProtoReflect.Descriptor instead.
func (*Register) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{1}
}

func (x *Register) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Register) GetProxy() string {
	if x != nil {
		return x.Proxy
	}
	return ""
}

func (x *Register) GetModule() []string {
	if x != nil {
		return x.Module
	}
	return nil
}

func (x *Register) GetAddons() []*Addon {
	if x != nil {
		return x.Addons
	}
	return nil
}

func (x *Register) GetTimer() *Timer {
	if x != nil {
		return x.Timer
	}
	return nil
}

func (x *Register) GetSysinfo() *SysInfo {
	if x != nil {
		return x.Sysinfo
	}
	return nil
}

func (x *Register) GetSecure() *Secure {
	if x != nil {
		return x.Secure
	}
	return nil
}

type Secure struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Enable    bool   `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"`
	Key       string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`                              // encryption key
	Type      string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`                            // encryption type
	PublicKey string `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // implant的公钥，用于server加密数据
}

func (x *Secure) Reset() {
	*x = Secure{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Secure) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Secure) ProtoMessage() {}

func (x *Secure) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Secure.ProtoReflect.Descriptor instead.
func (*Secure) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{2}
}

func (x *Secure) GetEnable() bool {
	if x != nil {
		return x.Enable
	}
	return false
}

func (x *Secure) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *Secure) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *Secure) GetPublicKey() string {
	if x != nil {
		return x.PublicKey
	}
	return ""
}

// Age 密钥交换相关消息
type KeyExchangeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // 临时公钥 (Age X25519)
	Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`                  // 对临时公钥的签名
	Timestamp uint64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"`                 // 时间戳
	Nonce     string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"`                          // 随机数
}

func (x *KeyExchangeRequest) Reset() {
	*x = KeyExchangeRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *KeyExchangeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KeyExchangeRequest) ProtoMessage() {}

func (x *KeyExchangeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KeyExchangeRequest.ProtoReflect.Descriptor instead.
func (*KeyExchangeRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{3}
}

func (x *KeyExchangeRequest) GetPublicKey() string {
	if x != nil {
		return x.PublicKey
	}
	return ""
}

func (x *KeyExchangeRequest) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *KeyExchangeRequest) GetTimestamp() uint64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *KeyExchangeRequest) GetNonce() string {
	if x != nil {
		return x.Nonce
	}
	return ""
}

type KeyExchangeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Server 临时公钥
}

func (x *KeyExchangeResponse) Reset() {
	*x = KeyExchangeResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *KeyExchangeResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*KeyExchangeResponse) ProtoMessage() {}

func (x *KeyExchangeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use KeyExchangeResponse.ProtoReflect.Descriptor instead.
func (*KeyExchangeResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{4}
}

func (x *KeyExchangeResponse) GetPublicKey() string {
	if x != nil {
		return x.PublicKey
	}
	return ""
}

type Init struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *Init) Reset() {
	*x = Init{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Init) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Init) ProtoMessage() {}

func (x *Init) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Init.ProtoReflect.Descriptor instead.
func (*Init) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{5}
}

func (x *Init) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

type SysInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Filepath    string   `protobuf:"bytes,1,opt,name=filepath,proto3" json:"filepath,omitempty"`
	Workdir     string   `protobuf:"bytes,2,opt,name=workdir,proto3" json:"workdir,omitempty"`
	IsPrivilege bool     `protobuf:"varint,3,opt,name=is_privilege,json=isPrivilege,proto3" json:"is_privilege,omitempty"`
	Os          *Os      `protobuf:"bytes,11,opt,name=os,proto3" json:"os,omitempty"`
	Process     *Process `protobuf:"bytes,12,opt,name=process,proto3" json:"process,omitempty"`
}

func (x *SysInfo) Reset() {
	*x = SysInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SysInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SysInfo) ProtoMessage() {}

func (x *SysInfo) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SysInfo.ProtoReflect.Descriptor instead.
func (*SysInfo) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{6}
}

func (x *SysInfo) GetFilepath() string {
	if x != nil {
		return x.Filepath
	}
	return ""
}

func (x *SysInfo) GetWorkdir() string {
	if x != nil {
		return x.Workdir
	}
	return ""
}

func (x *SysInfo) GetIsPrivilege() bool {
	if x != nil {
		return x.IsPrivilege
	}
	return false
}

func (x *SysInfo) GetOs() *Os {
	if x != nil {
		return x.Os
	}
	return nil
}

func (x *SysInfo) GetProcess() *Process {
	if x != nil {
		return x.Process
	}
	return nil
}

type Suicide struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type      int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}

func (x *Suicide) Reset() {
	*x = Suicide{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Suicide) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Suicide) ProtoMessage() {}

func (x *Suicide) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Suicide.ProtoReflect.Descriptor instead.
func (*Suicide) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{7}
}

func (x *Suicide) GetType() int32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *Suicide) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

// common empty request
type Request struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name   string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Input  string            `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"`
	Args   []string          `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"`
	Params map[string]string `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Bin    []byte            `protobuf:"bytes,5,opt,name=bin,proto3" json:"bin,omitempty"`
}

func (x *Request) Reset() {
	*x = Request{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Request) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Request) ProtoMessage() {}

func (x *Request) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Request.ProtoReflect.Descriptor instead.
func (*Request) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{8}
}

func (x *Request) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Request) GetInput() string {
	if x != nil {
		return x.Input
	}
	return ""
}

func (x *Request) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *Request) GetParams() map[string]string {
	if x != nil {
		return x.Params
	}
	return nil
}

func (x *Request) GetBin() []byte {
	if x != nil {
		return x.Bin
	}
	return nil
}

type Response struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Output string            `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"`
	Error  string            `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	Kv     map[string]string `protobuf:"bytes,3,rep,name=kv,proto3" json:"kv,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Array  []string          `protobuf:"bytes,4,rep,name=array,proto3" json:"array,omitempty"`
}

func (x *Response) Reset() {
	*x = Response{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Response) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Response) ProtoMessage() {}

func (x *Response) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Response.ProtoReflect.Descriptor instead.
func (*Response) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{9}
}

func (x *Response) GetOutput() string {
	if x != nil {
		return x.Output
	}
	return ""
}

func (x *Response) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *Response) GetKv() map[string]string {
	if x != nil {
		return x.Kv
	}
	return nil
}

func (x *Response) GetArray() []string {
	if x != nil {
		return x.Array
	}
	return nil
}

type BypassRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ETW      bool `protobuf:"varint,1,opt,name=ETW,proto3" json:"ETW,omitempty"`
	AMSI     bool `protobuf:"varint,2,opt,name=AMSI,proto3" json:"AMSI,omitempty"`
	BlockDll bool `protobuf:"varint,3,opt,name=block_dll,json=blockDll,proto3" json:"block_dll,omitempty"`
}

func (x *BypassRequest) Reset() {
	*x = BypassRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BypassRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BypassRequest) ProtoMessage() {}

func (x *BypassRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use BypassRequest.ProtoReflect.Descriptor instead.
func (*BypassRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{10}
}

func (x *BypassRequest) GetETW() bool {
	if x != nil {
		return x.ETW
	}
	return false
}

func (x *BypassRequest) GetAMSI() bool {
	if x != nil {
		return x.AMSI
	}
	return false
}

func (x *BypassRequest) GetBlockDll() bool {
	if x != nil {
		return x.BlockDll
	}
	return false
}

type NetInterface struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index       int32    `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
	Name        string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mac         string   `protobuf:"bytes,3,opt,name=mac,proto3" json:"mac,omitempty"`
	IpAddresses []string `protobuf:"bytes,4,rep,name=ip_addresses,json=ipAddresses,proto3" json:"ip_addresses,omitempty"`
}

func (x *NetInterface) Reset() {
	*x = NetInterface{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NetInterface) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NetInterface) ProtoMessage() {}

func (x *NetInterface) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NetInterface.ProtoReflect.Descriptor instead.
func (*NetInterface) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{11}
}

func (x *NetInterface) GetIndex() int32 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *NetInterface) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *NetInterface) GetMac() string {
	if x != nil {
		return x.Mac
	}
	return ""
}

func (x *NetInterface) GetIpAddresses() []string {
	if x != nil {
		return x.IpAddresses
	}
	return nil
}

type SockTabEntry struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	LocalAddr  string `protobuf:"bytes,1,opt,name=local_addr,json=localAddr,proto3" json:"local_addr,omitempty"`
	RemoteAddr string `protobuf:"bytes,2,opt,name=remote_addr,json=remoteAddr,proto3" json:"remote_addr,omitempty"`
	SkState    string `protobuf:"bytes,3,opt,name=skState,proto3" json:"skState,omitempty"`
	// uint32 uid = 4;
	Pid      string `protobuf:"bytes,5,opt,name=pid,proto3" json:"pid,omitempty"`
	Protocol string `protobuf:"bytes,6,opt,name=protocol,proto3" json:"protocol,omitempty"`
}

func (x *SockTabEntry) Reset() {
	*x = SockTabEntry{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SockTabEntry) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SockTabEntry) ProtoMessage() {}

func (x *SockTabEntry) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SockTabEntry.ProtoReflect.Descriptor instead.
func (*SockTabEntry) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{12}
}

func (x *SockTabEntry) GetLocalAddr() string {
	if x != nil {
		return x.LocalAddr
	}
	return ""
}

func (x *SockTabEntry) GetRemoteAddr() string {
	if x != nil {
		return x.RemoteAddr
	}
	return ""
}

func (x *SockTabEntry) GetSkState() string {
	if x != nil {
		return x.SkState
	}
	return ""
}

func (x *SockTabEntry) GetPid() string {
	if x != nil {
		return x.Pid
	}
	return ""
}

func (x *SockTabEntry) GetProtocol() string {
	if x != nil {
		return x.Protocol
	}
	return ""
}

type NetstatResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Socks []*SockTabEntry `protobuf:"bytes,1,rep,name=socks,proto3" json:"socks,omitempty"`
}

func (x *NetstatResponse) Reset() {
	*x = NetstatResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NetstatResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NetstatResponse) ProtoMessage() {}

func (x *NetstatResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NetstatResponse.ProtoReflect.Descriptor instead.
func (*NetstatResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{13}
}

func (x *NetstatResponse) GetSocks() []*SockTabEntry {
	if x != nil {
		return x.Socks
	}
	return nil
}

type Block struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BlockId uint32 `protobuf:"varint,1,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"`
	Content []byte `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
	End     bool   `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"`
}

func (x *Block) Reset() {
	*x = Block{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Block) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Block) ProtoMessage() {}

func (x *Block) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Block.ProtoReflect.Descriptor instead.
func (*Block) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{14}
}

func (x *Block) GetBlockId() uint32 {
	if x != nil {
		return x.BlockId
	}
	return 0
}

func (x *Block) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *Block) GetEnd() bool {
	if x != nil {
		return x.End
	}
	return false
}

type ACK struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id      uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Success bool   `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"`
	End     bool   `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"`
}

func (x *ACK) Reset() {
	*x = ACK{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ACK) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ACK) ProtoMessage() {}

func (x *ACK) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ACK.ProtoReflect.Descriptor instead.
func (*ACK) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{15}
}

func (x *ACK) GetId() uint32 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *ACK) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *ACK) GetEnd() bool {
	if x != nil {
		return x.End
	}
	return false
}

type Os struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name     string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Version  string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // kernel version
	Release  string `protobuf:"bytes,3,opt,name=release,proto3" json:"release,omitempty"` // release version
	Arch     string `protobuf:"bytes,4,opt,name=arch,proto3" json:"arch,omitempty"`
	Username string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"`
	Hostname string `protobuf:"bytes,6,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Locale   string `protobuf:"bytes,7,opt,name=locale,proto3" json:"locale,omitempty"` // timezone
}

func (x *Os) Reset() {
	*x = Os{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Os) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Os) ProtoMessage() {}

func (x *Os) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Os.ProtoReflect.Descriptor instead.
func (*Os) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{16}
}

func (x *Os) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Os) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *Os) GetRelease() string {
	if x != nil {
		return x.Release
	}
	return ""
}

func (x *Os) GetArch() string {
	if x != nil {
		return x.Arch
	}
	return ""
}

func (x *Os) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *Os) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *Os) GetLocale() string {
	if x != nil {
		return x.Locale
	}
	return ""
}

type Process struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Pid   uint32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
	Ppid  uint32 `protobuf:"varint,3,opt,name=ppid,proto3" json:"ppid,omitempty"`
	Owner string `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"`
	Arch  string `protobuf:"bytes,5,opt,name=arch,proto3" json:"arch,omitempty"`
	Path  string `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"`
	Args  string `protobuf:"bytes,7,opt,name=args,proto3" json:"args,omitempty"`
	Uid   string `protobuf:"bytes,8,opt,name=uid,proto3" json:"uid,omitempty"`
}

func (x *Process) Reset() {
	*x = Process{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Process) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Process) ProtoMessage() {}

func (x *Process) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Process.ProtoReflect.Descriptor instead.
func (*Process) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{17}
}

func (x *Process) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Process) GetPid() uint32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

func (x *Process) GetPpid() uint32 {
	if x != nil {
		return x.Ppid
	}
	return 0
}

func (x *Process) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *Process) GetArch() string {
	if x != nil {
		return x.Arch
	}
	return ""
}

func (x *Process) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *Process) GetArgs() string {
	if x != nil {
		return x.Args
	}
	return ""
}

func (x *Process) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

type Timer struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Expression string  `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
	Jitter     float64 `protobuf:"fixed64,2,opt,name=jitter,proto3" json:"jitter,omitempty"`
}

func (x *Timer) Reset() {
	*x = Timer{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Timer) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Timer) ProtoMessage() {}

func (x *Timer) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Timer.ProtoReflect.Descriptor instead.
func (*Timer) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{18}
}

func (x *Timer) GetExpression() string {
	if x != nil {
		return x.Expression
	}
	return ""
}

func (x *Timer) GetJitter() float64 {
	if x != nil {
		return x.Jitter
	}
	return 0
}

type FileInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name    string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	IsDir   bool   `protobuf:"varint,2,opt,name=IsDir,proto3" json:"IsDir,omitempty"`
	Size    uint64 `protobuf:"varint,3,opt,name=Size,proto3" json:"Size,omitempty"`
	ModTime int64  `protobuf:"varint,4,opt,name=ModTime,proto3" json:"ModTime,omitempty"`
	Mode    uint32 `protobuf:"varint,5,opt,name=Mode,proto3" json:"Mode,omitempty"`
	Link    string `protobuf:"bytes,6,opt,name=Link,proto3" json:"Link,omitempty"`
}

func (x *FileInfo) Reset() {
	*x = FileInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FileInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FileInfo) ProtoMessage() {}

func (x *FileInfo) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FileInfo.ProtoReflect.Descriptor instead.
func (*FileInfo) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{19}
}

func (x *FileInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *FileInfo) GetIsDir() bool {
	if x != nil {
		return x.IsDir
	}
	return false
}

func (x *FileInfo) GetSize() uint64 {
	if x != nil {
		return x.Size
	}
	return 0
}

func (x *FileInfo) GetModTime() int64 {
	if x != nil {
		return x.ModTime
	}
	return 0
}

func (x *FileInfo) GetMode() uint32 {
	if x != nil {
		return x.Mode
	}
	return 0
}

func (x *FileInfo) GetLink() string {
	if x != nil {
		return x.Link
	}
	return ""
}

type SacrificeProcess struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Hidden   bool   `protobuf:"varint,1,opt,name=hidden,proto3" json:"hidden,omitempty"`
	BlockDll bool   `protobuf:"varint,2,opt,name=block_dll,json=blockDll,proto3" json:"block_dll,omitempty"`
	Etw      bool   `protobuf:"varint,3,opt,name=etw,proto3" json:"etw,omitempty"`
	Ppid     uint32 `protobuf:"varint,4,opt,name=ppid,proto3" json:"ppid,omitempty"`
	Argue    string `protobuf:"bytes,5,opt,name=argue,proto3" json:"argue,omitempty"`
}

func (x *SacrificeProcess) Reset() {
	*x = SacrificeProcess{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SacrificeProcess) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SacrificeProcess) ProtoMessage() {}

func (x *SacrificeProcess) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SacrificeProcess.ProtoReflect.Descriptor instead.
func (*SacrificeProcess) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{20}
}

func (x *SacrificeProcess) GetHidden() bool {
	if x != nil {
		return x.Hidden
	}
	return false
}

func (x *SacrificeProcess) GetBlockDll() bool {
	if x != nil {
		return x.BlockDll
	}
	return false
}

func (x *SacrificeProcess) GetEtw() bool {
	if x != nil {
		return x.Etw
	}
	return false
}

func (x *SacrificeProcess) GetPpid() uint32 {
	if x != nil {
		return x.Ppid
	}
	return 0
}

func (x *SacrificeProcess) GetArgue() string {
	if x != nil {
		return x.Argue
	}
	return ""
}

type LsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path   string      `protobuf:"bytes,1,opt,name=Path,proto3" json:"Path,omitempty"`
	Exists bool        `protobuf:"varint,2,opt,name=Exists,proto3" json:"Exists,omitempty"`
	Files  []*FileInfo `protobuf:"bytes,3,rep,name=Files,proto3" json:"Files,omitempty"`
}

func (x *LsResponse) Reset() {
	*x = LsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LsResponse) ProtoMessage() {}

func (x *LsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LsResponse.ProtoReflect.Descriptor instead.
func (*LsResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{21}
}

func (x *LsResponse) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *LsResponse) GetExists() bool {
	if x != nil {
		return x.Exists
	}
	return false
}

func (x *LsResponse) GetFiles() []*FileInfo {
	if x != nil {
		return x.Files
	}
	return nil
}

type DriveInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path       string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`                               // "C:\\"
	DriveType  string `protobuf:"bytes,2,opt,name=drive_type,json=driveType,proto3" json:"drive_type,omitempty"`    // "Fixed drive"
	TotalSize  uint64 `protobuf:"varint,3,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`   //
	FreeSize   uint64 `protobuf:"varint,4,opt,name=free_size,json=freeSize,proto3" json:"free_size,omitempty"`      //
	FileSystem string `protobuf:"bytes,5,opt,name=file_system,json=fileSystem,proto3" json:"file_system,omitempty"` // "NTFS"
}

func (x *DriveInfo) Reset() {
	*x = DriveInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DriveInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DriveInfo) ProtoMessage() {}

func (x *DriveInfo) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DriveInfo.ProtoReflect.Descriptor instead.
func (*DriveInfo) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{22}
}

func (x *DriveInfo) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *DriveInfo) GetDriveType() string {
	if x != nil {
		return x.DriveType
	}
	return ""
}

func (x *DriveInfo) GetTotalSize() uint64 {
	if x != nil {
		return x.TotalSize
	}
	return 0
}

func (x *DriveInfo) GetFreeSize() uint64 {
	if x != nil {
		return x.FreeSize
	}
	return 0
}

func (x *DriveInfo) GetFileSystem() string {
	if x != nil {
		return x.FileSystem
	}
	return ""
}

type EnumDriversResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Drives []*DriveInfo `protobuf:"bytes,1,rep,name=drives,proto3" json:"drives,omitempty"`
}

func (x *EnumDriversResponse) Reset() {
	*x = EnumDriversResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *EnumDriversResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EnumDriversResponse) ProtoMessage() {}

func (x *EnumDriversResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EnumDriversResponse.ProtoReflect.Descriptor instead.
func (*EnumDriversResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{23}
}

func (x *EnumDriversResponse) GetDrives() []*DriveInfo {
	if x != nil {
		return x.Drives
	}
	return nil
}

type PsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Processes []*Process `protobuf:"bytes,1,rep,name=processes,proto3" json:"processes,omitempty"`
}

func (x *PsResponse) Reset() {
	*x = PsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PsResponse) ProtoMessage() {}

func (x *PsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PsResponse.ProtoReflect.Descriptor instead.
func (*PsResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{24}
}

func (x *PsResponse) GetProcesses() []*Process {
	if x != nil {
		return x.Processes
	}
	return nil
}

type ExecRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path      string   `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	Args      []string `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"`
	Output    bool     `protobuf:"varint,3,opt,name=output,proto3" json:"output,omitempty"`
	Singleton bool     `protobuf:"varint,4,opt,name=singleton,proto3" json:"singleton,omitempty"`
	Realtime  bool     `protobuf:"varint,5,opt,name=realtime,proto3" json:"realtime,omitempty"`
	Ppid      uint32   `protobuf:"varint,10,opt,name=ppid,proto3" json:"ppid,omitempty"`
}

func (x *ExecRequest) Reset() {
	*x = ExecRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExecRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecRequest) ProtoMessage() {}

func (x *ExecRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[25]
	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 ExecRequest.ProtoReflect.Descriptor instead.
func (*ExecRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{25}
}

func (x *ExecRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *ExecRequest) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *ExecRequest) GetOutput() bool {
	if x != nil {
		return x.Output
	}
	return false
}

func (x *ExecRequest) GetSingleton() bool {
	if x != nil {
		return x.Singleton
	}
	return false
}

func (x *ExecRequest) GetRealtime() bool {
	if x != nil {
		return x.Realtime
	}
	return false
}

func (x *ExecRequest) GetPpid() uint32 {
	if x != nil {
		return x.Ppid
	}
	return 0
}

type ExecResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StatusCode int32  `protobuf:"varint,1,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"`
	Stdout     []byte `protobuf:"bytes,2,opt,name=stdout,proto3" json:"stdout,omitempty"`
	Stderr     []byte `protobuf:"bytes,3,opt,name=stderr,proto3" json:"stderr,omitempty"`
	Pid        uint32 `protobuf:"varint,4,opt,name=pid,proto3" json:"pid,omitempty"`
	End        bool   `protobuf:"varint,5,opt,name=end,proto3" json:"end,omitempty"`
}

func (x *ExecResponse) Reset() {
	*x = ExecResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExecResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecResponse) ProtoMessage() {}

func (x *ExecResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[26]
	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 ExecResponse.ProtoReflect.Descriptor instead.
func (*ExecResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{26}
}

func (x *ExecResponse) GetStatusCode() int32 {
	if x != nil {
		return x.StatusCode
	}
	return 0
}

func (x *ExecResponse) GetStdout() []byte {
	if x != nil {
		return x.Stdout
	}
	return nil
}

func (x *ExecResponse) GetStderr() []byte {
	if x != nil {
		return x.Stderr
	}
	return nil
}

func (x *ExecResponse) GetPid() uint32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

func (x *ExecResponse) GetEnd() bool {
	if x != nil {
		return x.End
	}
	return false
}

type BinaryResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data    []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`       // common return, bof BeaconOutput
	Message []byte `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` // bof BeaconPrintf
	Err     string `protobuf:"bytes,4,opt,name=err,proto3" json:"err,omitempty"`
	Status  int32  `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
}

func (x *BinaryResponse) Reset() {
	*x = BinaryResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *BinaryResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*BinaryResponse) ProtoMessage() {}

func (x *BinaryResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[27]
	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 BinaryResponse.ProtoReflect.Descriptor instead.
func (*BinaryResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{27}
}

func (x *BinaryResponse) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *BinaryResponse) GetMessage() []byte {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *BinaryResponse) GetErr() string {
	if x != nil {
		return x.Err
	}
	return ""
}

func (x *BinaryResponse) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

type Modules struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Modules []string `protobuf:"bytes,1,rep,name=modules,proto3" json:"modules,omitempty"`
}

func (x *Modules) Reset() {
	*x = Modules{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Modules) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Modules) ProtoMessage() {}

func (x *Modules) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[28]
	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 Modules.ProtoReflect.Descriptor instead.
func (*Modules) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{28}
}

func (x *Modules) GetModules() []string {
	if x != nil {
		return x.Modules
	}
	return nil
}

type Addons struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addons []*Addon `protobuf:"bytes,1,rep,name=addons,proto3" json:"addons,omitempty"`
}

func (x *Addons) Reset() {
	*x = Addons{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Addons) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Addons) ProtoMessage() {}

func (x *Addons) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[29]
	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 Addons.ProtoReflect.Descriptor instead.
func (*Addons) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{29}
}

func (x *Addons) GetAddons() []*Addon {
	if x != nil {
		return x.Addons
	}
	return nil
}

type Addon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name   string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Type   string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	Depend string `protobuf:"bytes,3,opt,name=depend,proto3" json:"depend,omitempty"`
}

func (x *Addon) Reset() {
	*x = Addon{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Addon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Addon) ProtoMessage() {}

func (x *Addon) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[30]
	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 Addon.ProtoReflect.Descriptor instead.
func (*Addon) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{30}
}

func (x *Addon) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Addon) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *Addon) GetDepend() string {
	if x != nil {
		return x.Depend
	}
	return ""
}

type LoadModule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Bundle string `protobuf:"bytes,1,opt,name=bundle,proto3" json:"bundle,omitempty"`
	Bin    []byte `protobuf:"bytes,2,opt,name=bin,proto3" json:"bin,omitempty"`
}

func (x *LoadModule) Reset() {
	*x = LoadModule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LoadModule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoadModule) ProtoMessage() {}

func (x *LoadModule) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[31]
	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 LoadModule.ProtoReflect.Descriptor instead.
func (*LoadModule) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{31}
}

func (x *LoadModule) GetBundle() string {
	if x != nil {
		return x.Bundle
	}
	return ""
}

func (x *LoadModule) GetBin() []byte {
	if x != nil {
		return x.Bin
	}
	return nil
}

type LoadAddon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name   string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Type   string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	Depend string `protobuf:"bytes,3,opt,name=depend,proto3" json:"depend,omitempty"`
	Bin    []byte `protobuf:"bytes,4,opt,name=bin,proto3" json:"bin,omitempty"`
}

func (x *LoadAddon) Reset() {
	*x = LoadAddon{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LoadAddon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LoadAddon) ProtoMessage() {}

func (x *LoadAddon) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[32]
	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 LoadAddon.ProtoReflect.Descriptor instead.
func (*LoadAddon) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{32}
}

func (x *LoadAddon) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *LoadAddon) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *LoadAddon) GetDepend() string {
	if x != nil {
		return x.Depend
	}
	return ""
}

func (x *LoadAddon) GetBin() []byte {
	if x != nil {
		return x.Bin
	}
	return nil
}

type ExecuteAddon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addon         string         `protobuf:"bytes,1,opt,name=addon,proto3" json:"addon,omitempty"`
	ExecuteBinary *ExecuteBinary `protobuf:"bytes,2,opt,name=execute_binary,json=executeBinary,proto3" json:"execute_binary,omitempty"`
}

func (x *ExecuteAddon) Reset() {
	*x = ExecuteAddon{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExecuteAddon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecuteAddon) ProtoMessage() {}

func (x *ExecuteAddon) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[33]
	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 ExecuteAddon.ProtoReflect.Descriptor instead.
func (*ExecuteAddon) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{33}
}

func (x *ExecuteAddon) GetAddon() string {
	if x != nil {
		return x.Addon
	}
	return ""
}

func (x *ExecuteAddon) GetExecuteBinary() *ExecuteBinary {
	if x != nil {
		return x.ExecuteBinary
	}
	return nil
}

type ExecuteBinary struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name        string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Bin         []byte            `protobuf:"bytes,2,opt,name=bin,proto3" json:"bin,omitempty"`
	Param       map[string]string `protobuf:"bytes,3,rep,name=param,proto3" json:"param,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Type        string            `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"`
	ProcessName string            `protobuf:"bytes,5,opt,name=process_name,json=processName,proto3" json:"process_name,omitempty"`
	Args        []string          `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"`
	EntryPoint  string            `protobuf:"bytes,7,opt,name=entry_point,json=entryPoint,proto3" json:"entry_point,omitempty"`
	Data        []byte            `protobuf:"bytes,8,opt,name=data,proto3" json:"data,omitempty"`
	Output      bool              `protobuf:"varint,9,opt,name=output,proto3" json:"output,omitempty"`
	Arch        uint32            `protobuf:"varint,10,opt,name=arch,proto3" json:"arch,omitempty"`
	Timeout     uint32            `protobuf:"varint,11,opt,name=timeout,proto3" json:"timeout,omitempty"`
	Sacrifice   *SacrificeProcess `protobuf:"bytes,12,opt,name=sacrifice,proto3" json:"sacrifice,omitempty"`
	Path        string            `protobuf:"bytes,13,opt,name=path,proto3" json:"path,omitempty"`
	Context     string            `protobuf:"bytes,14,opt,name=context,proto3" json:"context,omitempty"`
	Delay       uint32            `protobuf:"varint,15,opt,name=delay,proto3" json:"delay,omitempty"` //millisecond
}

func (x *ExecuteBinary) Reset() {
	*x = ExecuteBinary{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExecuteBinary) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecuteBinary) ProtoMessage() {}

func (x *ExecuteBinary) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[34]
	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 ExecuteBinary.ProtoReflect.Descriptor instead.
func (*ExecuteBinary) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{34}
}

func (x *ExecuteBinary) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ExecuteBinary) GetBin() []byte {
	if x != nil {
		return x.Bin
	}
	return nil
}

func (x *ExecuteBinary) GetParam() map[string]string {
	if x != nil {
		return x.Param
	}
	return nil
}

func (x *ExecuteBinary) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *ExecuteBinary) GetProcessName() string {
	if x != nil {
		return x.ProcessName
	}
	return ""
}

func (x *ExecuteBinary) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *ExecuteBinary) GetEntryPoint() string {
	if x != nil {
		return x.EntryPoint
	}
	return ""
}

func (x *ExecuteBinary) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *ExecuteBinary) GetOutput() bool {
	if x != nil {
		return x.Output
	}
	return false
}

func (x *ExecuteBinary) GetArch() uint32 {
	if x != nil {
		return x.Arch
	}
	return 0
}

func (x *ExecuteBinary) GetTimeout() uint32 {
	if x != nil {
		return x.Timeout
	}
	return 0
}

func (x *ExecuteBinary) GetSacrifice() *SacrificeProcess {
	if x != nil {
		return x.Sacrifice
	}
	return nil
}

func (x *ExecuteBinary) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *ExecuteBinary) GetContext() string {
	if x != nil {
		return x.Context
	}
	return ""
}

func (x *ExecuteBinary) GetDelay() uint32 {
	if x != nil {
		return x.Delay
	}
	return 0
}

type ExecuteCommand struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Command   string            `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"`
	Sacrifice *SacrificeProcess `protobuf:"bytes,2,opt,name=sacrifice,proto3" json:"sacrifice,omitempty"`
}

func (x *ExecuteCommand) Reset() {
	*x = ExecuteCommand{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExecuteCommand) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecuteCommand) ProtoMessage() {}

func (x *ExecuteCommand) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_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 ExecuteCommand.ProtoReflect.Descriptor instead.
func (*ExecuteCommand) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{35}
}

func (x *ExecuteCommand) GetCommand() string {
	if x != nil {
		return x.Command
	}
	return ""
}

func (x *ExecuteCommand) GetSacrifice() *SacrificeProcess {
	if x != nil {
		return x.Sacrifice
	}
	return nil
}

type UploadRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name     string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Target   string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
	Priv     uint32 `protobuf:"varint,3,opt,name=priv,proto3" json:"priv,omitempty"`
	Data     []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
	Hidden   bool   `protobuf:"varint,5,opt,name=hidden,proto3" json:"hidden,omitempty"`
	Override bool   `protobuf:"varint,6,opt,name=override,proto3" json:"override,omitempty"`
}

func (x *UploadRequest) Reset() {
	*x = UploadRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UploadRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UploadRequest) ProtoMessage() {}

func (x *UploadRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_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 UploadRequest.ProtoReflect.Descriptor instead.
func (*UploadRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{36}
}

func (x *UploadRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *UploadRequest) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *UploadRequest) GetPriv() uint32 {
	if x != nil {
		return x.Priv
	}
	return 0
}

func (x *UploadRequest) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *UploadRequest) GetHidden() bool {
	if x != nil {
		return x.Hidden
	}
	return false
}

func (x *UploadRequest) GetOverride() bool {
	if x != nil {
		return x.Override
	}
	return false
}

type DownloadRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path       string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	Name       string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	BufferSize uint32 `protobuf:"varint,3,opt,name=buffer_size,json=bufferSize,proto3" json:"buffer_size,omitempty"`
	Dir        bool   `protobuf:"varint,4,opt,name=dir,proto3" json:"dir,omitempty"`
	Cur        int32  `protobuf:"varint,5,opt,name=cur,proto3" json:"cur,omitempty"`
}

func (x *DownloadRequest) Reset() {
	*x = DownloadRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DownloadRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DownloadRequest) ProtoMessage() {}

func (x *DownloadRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[37]
	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 DownloadRequest.ProtoReflect.Descriptor instead.
func (*DownloadRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{37}
}

func (x *DownloadRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *DownloadRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DownloadRequest) GetBufferSize() uint32 {
	if x != nil {
		return x.BufferSize
	}
	return 0
}

func (x *DownloadRequest) GetDir() bool {
	if x != nil {
		return x.Dir
	}
	return false
}

func (x *DownloadRequest) GetCur() int32 {
	if x != nil {
		return x.Cur
	}
	return 0
}

type DownloadResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Checksum string `protobuf:"bytes,1,opt,name=checksum,proto3" json:"checksum,omitempty"`
	Size     uint64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
	Cur      int32  `protobuf:"varint,3,opt,name=cur,proto3" json:"cur,omitempty"`
	Content  []byte `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
}

func (x *DownloadResponse) Reset() {
	*x = DownloadResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DownloadResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DownloadResponse) ProtoMessage() {}

func (x *DownloadResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[38]
	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 DownloadResponse.ProtoReflect.Descriptor instead.
func (*DownloadResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{38}
}

func (x *DownloadResponse) GetChecksum() string {
	if x != nil {
		return x.Checksum
	}
	return ""
}

func (x *DownloadResponse) GetSize() uint64 {
	if x != nil {
		return x.Size
	}
	return 0
}

func (x *DownloadResponse) GetCur() int32 {
	if x != nil {
		return x.Cur
	}
	return 0
}

func (x *DownloadResponse) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

type CurlRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Url      string            `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	Timeout  int32             `protobuf:"varint,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
	Method   string            `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"`
	Body     []byte            `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"`
	Header   map[string]string `protobuf:"bytes,5,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Hostname string            `protobuf:"bytes,6,opt,name=hostname,proto3" json:"hostname,omitempty"`
}

func (x *CurlRequest) Reset() {
	*x = CurlRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CurlRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CurlRequest) ProtoMessage() {}

func (x *CurlRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[39]
	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 CurlRequest.ProtoReflect.Descriptor instead.
func (*CurlRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{39}
}

func (x *CurlRequest) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *CurlRequest) GetTimeout() int32 {
	if x != nil {
		return x.Timeout
	}
	return 0
}

func (x *CurlRequest) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *CurlRequest) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *CurlRequest) GetHeader() map[string]string {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *CurlRequest) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

type ChownRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path      string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	Uid       string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
	Gid       string `protobuf:"bytes,3,opt,name=gid,proto3" json:"gid,omitempty"`
	Recursive bool   `protobuf:"varint,4,opt,name=recursive,proto3" json:"recursive,omitempty"`
}

func (x *ChownRequest) Reset() {
	*x = ChownRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ChownRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ChownRequest) ProtoMessage() {}

func (x *ChownRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[40]
	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 ChownRequest.ProtoReflect.Descriptor instead.
func (*ChownRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{40}
}

func (x *ChownRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *ChownRequest) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *ChownRequest) GetGid() string {
	if x != nil {
		return x.Gid
	}
	return ""
}

func (x *ChownRequest) GetRecursive() bool {
	if x != nil {
		return x.Recursive
	}
	return false
}

type IfconfigResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NetInterfaces []*NetInterface `protobuf:"bytes,1,rep,name=net_interfaces,json=netInterfaces,proto3" json:"net_interfaces,omitempty"`
}

func (x *IfconfigResponse) Reset() {
	*x = IfconfigResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IfconfigResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IfconfigResponse) ProtoMessage() {}

func (x *IfconfigResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[41]
	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 IfconfigResponse.ProtoReflect.Descriptor instead.
func (*IfconfigResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{41}
}

func (x *IfconfigResponse) GetNetInterfaces() []*NetInterface {
	if x != nil {
		return x.NetInterfaces
	}
	return nil
}

// wrap for client
type RegistryRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type     string    `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	Registry *Registry `protobuf:"bytes,2,opt,name=registry,proto3" json:"registry,omitempty"`
}

func (x *RegistryRequest) Reset() {
	*x = RegistryRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RegistryRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RegistryRequest) ProtoMessage() {}

func (x *RegistryRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[42]
	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 RegistryRequest.ProtoReflect.Descriptor instead.
func (*RegistryRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{42}
}

func (x *RegistryRequest) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *RegistryRequest) GetRegistry() *Registry {
	if x != nil {
		return x.Registry
	}
	return nil
}

type Registry struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Hive string `protobuf:"bytes,1,opt,name=hive,proto3" json:"hive,omitempty"`
	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	Key  string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
}

func (x *Registry) Reset() {
	*x = Registry{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Registry) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Registry) ProtoMessage() {}

func (x *Registry) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[43]
	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 Registry.ProtoReflect.Descriptor instead.
func (*Registry) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{43}
}

func (x *Registry) GetHive() string {
	if x != nil {
		return x.Hive
	}
	return ""
}

func (x *Registry) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *Registry) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

type RegistryWriteRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Hive        string `protobuf:"bytes,1,opt,name=hive,proto3" json:"hive,omitempty"`
	Path        string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	Key         string `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
	StringValue string `protobuf:"bytes,5,opt,name=string_value,json=stringValue,proto3" json:"string_value,omitempty"`
	ByteValue   []byte `protobuf:"bytes,6,opt,name=byte_value,json=byteValue,proto3" json:"byte_value,omitempty"`
	DwordValue  uint32 `protobuf:"varint,7,opt,name=dword_value,json=dwordValue,proto3" json:"dword_value,omitempty"`
	QwordValue  uint64 `protobuf:"varint,8,opt,name=qword_value,json=qwordValue,proto3" json:"qword_value,omitempty"`
	Regtype     uint32 `protobuf:"varint,10,opt,name=regtype,proto3" json:"regtype,omitempty"`
}

func (x *RegistryWriteRequest) Reset() {
	*x = RegistryWriteRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RegistryWriteRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RegistryWriteRequest) ProtoMessage() {}

func (x *RegistryWriteRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[44]
	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 RegistryWriteRequest.ProtoReflect.Descriptor instead.
func (*RegistryWriteRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{44}
}

func (x *RegistryWriteRequest) GetHive() string {
	if x != nil {
		return x.Hive
	}
	return ""
}

func (x *RegistryWriteRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *RegistryWriteRequest) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *RegistryWriteRequest) GetStringValue() string {
	if x != nil {
		return x.StringValue
	}
	return ""
}

func (x *RegistryWriteRequest) GetByteValue() []byte {
	if x != nil {
		return x.ByteValue
	}
	return nil
}

func (x *RegistryWriteRequest) GetDwordValue() uint32 {
	if x != nil {
		return x.DwordValue
	}
	return 0
}

func (x *RegistryWriteRequest) GetQwordValue() uint64 {
	if x != nil {
		return x.QwordValue
	}
	return 0
}

func (x *RegistryWriteRequest) GetRegtype() uint32 {
	if x != nil {
		return x.Regtype
	}
	return 0
}

type TaskScheduleRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type     string        `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	Taskschd *TaskSchedule `protobuf:"bytes,2,opt,name=taskschd,proto3" json:"taskschd,omitempty"`
}

func (x *TaskScheduleRequest) Reset() {
	*x = TaskScheduleRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TaskScheduleRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskScheduleRequest) ProtoMessage() {}

func (x *TaskScheduleRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[45]
	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 TaskScheduleRequest.ProtoReflect.Descriptor instead.
func (*TaskScheduleRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{45}
}

func (x *TaskScheduleRequest) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *TaskScheduleRequest) GetTaskschd() *TaskSchedule {
	if x != nil {
		return x.Taskschd
	}
	return nil
}

type TaskSchedule struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name           string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Path           string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	ExecutablePath string `protobuf:"bytes,3,opt,name=executable_path,json=executablePath,proto3" json:"executable_path,omitempty"`
	TriggerType    uint32 `protobuf:"varint,4,opt,name=trigger_type,json=triggerType,proto3" json:"trigger_type,omitempty"`
	StartBoundary  string `protobuf:"bytes,5,opt,name=start_boundary,json=startBoundary,proto3" json:"start_boundary,omitempty"`
	Description    string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
	Enabled        bool   `protobuf:"varint,7,opt,name=enabled,proto3" json:"enabled,omitempty"`
	LastRunTime    string `protobuf:"bytes,8,opt,name=last_run_time,json=lastRunTime,proto3" json:"last_run_time,omitempty"`
	NextRunTime    string `protobuf:"bytes,9,opt,name=next_run_time,json=nextRunTime,proto3" json:"next_run_time,omitempty"`
}

func (x *TaskSchedule) Reset() {
	*x = TaskSchedule{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TaskSchedule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskSchedule) ProtoMessage() {}

func (x *TaskSchedule) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[46]
	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 TaskSchedule.ProtoReflect.Descriptor instead.
func (*TaskSchedule) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{46}
}

func (x *TaskSchedule) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TaskSchedule) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *TaskSchedule) GetExecutablePath() string {
	if x != nil {
		return x.ExecutablePath
	}
	return ""
}

func (x *TaskSchedule) GetTriggerType() uint32 {
	if x != nil {
		return x.TriggerType
	}
	return 0
}

func (x *TaskSchedule) GetStartBoundary() string {
	if x != nil {
		return x.StartBoundary
	}
	return ""
}

func (x *TaskSchedule) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *TaskSchedule) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *TaskSchedule) GetLastRunTime() string {
	if x != nil {
		return x.LastRunTime
	}
	return ""
}

func (x *TaskSchedule) GetNextRunTime() string {
	if x != nil {
		return x.NextRunTime
	}
	return ""
}

type TaskSchedulesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Schedules []*TaskSchedule `protobuf:"bytes,1,rep,name=schedules,proto3" json:"schedules,omitempty"`
}

func (x *TaskSchedulesResponse) Reset() {
	*x = TaskSchedulesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TaskSchedulesResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskSchedulesResponse) ProtoMessage() {}

func (x *TaskSchedulesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[47]
	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 TaskSchedulesResponse.ProtoReflect.Descriptor instead.
func (*TaskSchedulesResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{47}
}

func (x *TaskSchedulesResponse) GetSchedules() []*TaskSchedule {
	if x != nil {
		return x.Schedules
	}
	return nil
}

// wrap for client
type ServiceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type    string         `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	Service *ServiceConfig `protobuf:"bytes,2,opt,name=service,proto3" json:"service,omitempty"`
}

func (x *ServiceRequest) Reset() {
	*x = ServiceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ServiceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceRequest) ProtoMessage() {}

func (x *ServiceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[48]
	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 ServiceRequest.ProtoReflect.Descriptor instead.
func (*ServiceRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{48}
}

func (x *ServiceRequest) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *ServiceRequest) GetService() *ServiceConfig {
	if x != nil {
		return x.Service
	}
	return nil
}

type ServiceConfig struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name           string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	DisplayName    string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	ExecutablePath string `protobuf:"bytes,3,opt,name=executable_path,json=executablePath,proto3" json:"executable_path,omitempty"`
	StartType      uint32 `protobuf:"varint,4,opt,name=start_type,json=startType,proto3" json:"start_type,omitempty"`
	ErrorControl   uint32 `protobuf:"varint,5,opt,name=error_control,json=errorControl,proto3" json:"error_control,omitempty"`
	AccountName    string `protobuf:"bytes,6,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"`
}

func (x *ServiceConfig) Reset() {
	*x = ServiceConfig{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ServiceConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceConfig) ProtoMessage() {}

func (x *ServiceConfig) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[49]
	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 ServiceConfig.ProtoReflect.Descriptor instead.
func (*ServiceConfig) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{49}
}

func (x *ServiceConfig) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ServiceConfig) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *ServiceConfig) GetExecutablePath() string {
	if x != nil {
		return x.ExecutablePath
	}
	return ""
}

func (x *ServiceConfig) GetStartType() uint32 {
	if x != nil {
		return x.StartType
	}
	return 0
}

func (x *ServiceConfig) GetErrorControl() uint32 {
	if x != nil {
		return x.ErrorControl
	}
	return 0
}

func (x *ServiceConfig) GetAccountName() string {
	if x != nil {
		return x.AccountName
	}
	return ""
}

type ServiceStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CurrentState uint32 `protobuf:"varint,1,opt,name=current_state,json=currentState,proto3" json:"current_state,omitempty"`
	ProcessId    uint32 `protobuf:"varint,2,opt,name=process_id,json=processId,proto3" json:"process_id,omitempty"`
	ExitCode     uint32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
	Checkpoint   uint32 `protobuf:"varint,4,opt,name=checkpoint,proto3" json:"checkpoint,omitempty"`
	WaitHint     uint32 `protobuf:"varint,5,opt,name=wait_hint,json=waitHint,proto3" json:"wait_hint,omitempty"`
}

func (x *ServiceStatus) Reset() {
	*x = ServiceStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ServiceStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceStatus) ProtoMessage() {}

func (x *ServiceStatus) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[50]
	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 ServiceStatus.ProtoReflect.Descriptor instead.
func (*ServiceStatus) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{50}
}

func (x *ServiceStatus) GetCurrentState() uint32 {
	if x != nil {
		return x.CurrentState
	}
	return 0
}

func (x *ServiceStatus) GetProcessId() uint32 {
	if x != nil {
		return x.ProcessId
	}
	return 0
}

func (x *ServiceStatus) GetExitCode() uint32 {
	if x != nil {
		return x.ExitCode
	}
	return 0
}

func (x *ServiceStatus) GetCheckpoint() uint32 {
	if x != nil {
		return x.Checkpoint
	}
	return 0
}

func (x *ServiceStatus) GetWaitHint() uint32 {
	if x != nil {
		return x.WaitHint
	}
	return 0
}

type Service struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Config *ServiceConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	Status *ServiceStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
}

func (x *Service) Reset() {
	*x = Service{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Service) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Service) ProtoMessage() {}

func (x *Service) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[51]
	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 Service.ProtoReflect.Descriptor instead.
func (*Service) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{51}
}

func (x *Service) GetConfig() *ServiceConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *Service) GetStatus() *ServiceStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

type ServicesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Services []*Service `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"`
}

func (x *ServicesResponse) Reset() {
	*x = ServicesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ServicesResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServicesResponse) ProtoMessage() {}

func (x *ServicesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[52]
	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 ServicesResponse.ProtoReflect.Descriptor instead.
func (*ServicesResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{52}
}

func (x *ServicesResponse) GetServices() []*Service {
	if x != nil {
		return x.Services
	}
	return nil
}

type WmiQueryRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Namespace string   `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
	Args      []string `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"`
}

func (x *WmiQueryRequest) Reset() {
	*x = WmiQueryRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WmiQueryRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WmiQueryRequest) ProtoMessage() {}

func (x *WmiQueryRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[53]
	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 WmiQueryRequest.ProtoReflect.Descriptor instead.
func (*WmiQueryRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{53}
}

func (x *WmiQueryRequest) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *WmiQueryRequest) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

type WmiMethodRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Namespace  string            `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
	ClassName  string            `protobuf:"bytes,2,opt,name=class_name,json=className,proto3" json:"class_name,omitempty"`
	MethodName string            `protobuf:"bytes,3,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"`
	Params     map[string]string `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *WmiMethodRequest) Reset() {
	*x = WmiMethodRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WmiMethodRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WmiMethodRequest) ProtoMessage() {}

func (x *WmiMethodRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[54]
	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 WmiMethodRequest.ProtoReflect.Descriptor instead.
func (*WmiMethodRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{54}
}

func (x *WmiMethodRequest) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *WmiMethodRequest) GetClassName() string {
	if x != nil {
		return x.ClassName
	}
	return ""
}

func (x *WmiMethodRequest) GetMethodName() string {
	if x != nil {
		return x.MethodName
	}
	return ""
}

func (x *WmiMethodRequest) GetParams() map[string]string {
	if x != nil {
		return x.Params
	}
	return nil
}

type RunAsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Username   string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` // 需要执行的用户名
	Domain     string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"`     // 用户所属域
	Password   string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` // 用户密码
	Program    string `protobuf:"bytes,4,opt,name=program,proto3" json:"program,omitempty"`   // 程序路径
	Args       string `protobuf:"bytes,5,opt,name=args,proto3" json:"args,omitempty"`         // 程序参数（可选）
	UseProfile bool   `protobuf:"varint,6,opt,name=use_profile,json=useProfile,proto3" json:"use_profile,omitempty"`
	Netonly    bool   `protobuf:"varint,7,opt,name=netonly,proto3" json:"netonly,omitempty"` // 是否仅使用网络凭据 (可选，默认 false)
	UseEnv     bool   `protobuf:"varint,8,opt,name=use_env,json=useEnv,proto3" json:"use_env,omitempty"`
}

func (x *RunAsRequest) Reset() {
	*x = RunAsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[55]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RunAsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunAsRequest) ProtoMessage() {}

func (x *RunAsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[55]
	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 RunAsRequest.ProtoReflect.Descriptor instead.
func (*RunAsRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{55}
}

func (x *RunAsRequest) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *RunAsRequest) GetDomain() string {
	if x != nil {
		return x.Domain
	}
	return ""
}

func (x *RunAsRequest) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *RunAsRequest) GetProgram() string {
	if x != nil {
		return x.Program
	}
	return ""
}

func (x *RunAsRequest) GetArgs() string {
	if x != nil {
		return x.Args
	}
	return ""
}

func (x *RunAsRequest) GetUseProfile() bool {
	if x != nil {
		return x.UseProfile
	}
	return false
}

func (x *RunAsRequest) GetNetonly() bool {
	if x != nil {
		return x.Netonly
	}
	return false
}

func (x *RunAsRequest) GetUseEnv() bool {
	if x != nil {
		return x.UseEnv
	}
	return false
}

type GetSystem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Bin []byte `protobuf:"bytes,1,opt,name=bin,proto3" json:"bin,omitempty"`
	Pid uint32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
}

func (x *GetSystem) Reset() {
	*x = GetSystem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetSystem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSystem) ProtoMessage() {}

func (x *GetSystem) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[56]
	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 GetSystem.ProtoReflect.Descriptor instead.
func (*GetSystem) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{56}
}

func (x *GetSystem) GetBin() []byte {
	if x != nil {
		return x.Bin
	}
	return nil
}

func (x *GetSystem) GetPid() uint32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

type Inject struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Bin []byte `protobuf:"bytes,1,opt,name=bin,proto3" json:"bin,omitempty"`
	Pid uint32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"`
}

func (x *Inject) Reset() {
	*x = Inject{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[57]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Inject) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Inject) ProtoMessage() {}

func (x *Inject) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[57]
	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 Inject.ProtoReflect.Descriptor instead.
func (*Inject) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{57}
}

func (x *Inject) GetBin() []byte {
	if x != nil {
		return x.Bin
	}
	return nil
}

func (x *Inject) GetPid() uint32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

type Pipe struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name   string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
	Data   []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *Pipe) Reset() {
	*x = Pipe{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Pipe) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Pipe) ProtoMessage() {}

func (x *Pipe) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[58]
	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 Pipe.ProtoReflect.Descriptor instead.
func (*Pipe) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{58}
}

func (x *Pipe) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Pipe) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *Pipe) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

type PipeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	Pipe *Pipe  `protobuf:"bytes,2,opt,name=pipe,proto3" json:"pipe,omitempty"`
}

func (x *PipeRequest) Reset() {
	*x = PipeRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[59]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PipeRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PipeRequest) ProtoMessage() {}

func (x *PipeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[59]
	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 PipeRequest.ProtoReflect.Descriptor instead.
func (*PipeRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{59}
}

func (x *PipeRequest) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *PipeRequest) GetPipe() *Pipe {
	if x != nil {
		return x.Pipe
	}
	return nil
}

type Switch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Urls []string `protobuf:"bytes,1,rep,name=urls,proto3" json:"urls,omitempty"`
}

func (x *Switch) Reset() {
	*x = Switch{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[60]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Switch) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Switch) ProtoMessage() {}

func (x *Switch) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[60]
	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 Switch.ProtoReflect.Descriptor instead.
func (*Switch) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{60}
}

func (x *Switch) GetUrls() []string {
	if x != nil {
		return x.Urls
	}
	return nil
}

type TaskCtrl struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TaskId uint32 `protobuf:"varint,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
	Op     string `protobuf:"bytes,2,opt,name=op,proto3" json:"op,omitempty"`
}

func (x *TaskCtrl) Reset() {
	*x = TaskCtrl{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[61]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TaskCtrl) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskCtrl) ProtoMessage() {}

func (x *TaskCtrl) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[61]
	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 TaskCtrl.ProtoReflect.Descriptor instead.
func (*TaskCtrl) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{61}
}

func (x *TaskCtrl) GetTaskId() uint32 {
	if x != nil {
		return x.TaskId
	}
	return 0
}

func (x *TaskCtrl) GetOp() string {
	if x != nil {
		return x.Op
	}
	return ""
}

type TaskInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TaskId    uint32 `protobuf:"varint,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
	Last      uint64 `protobuf:"varint,2,opt,name=last,proto3" json:"last,omitempty"`
	RecvCount uint32 `protobuf:"varint,3,opt,name=recv_count,json=recvCount,proto3" json:"recv_count,omitempty"`
	SendCount uint32 `protobuf:"varint,4,opt,name=send_count,json=sendCount,proto3" json:"send_count,omitempty"`
}

func (x *TaskInfo) Reset() {
	*x = TaskInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[62]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TaskInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskInfo) ProtoMessage() {}

func (x *TaskInfo) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[62]
	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 TaskInfo.ProtoReflect.Descriptor instead.
func (*TaskInfo) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{62}
}

func (x *TaskInfo) GetTaskId() uint32 {
	if x != nil {
		return x.TaskId
	}
	return 0
}

func (x *TaskInfo) GetLast() uint64 {
	if x != nil {
		return x.Last
	}
	return 0
}

func (x *TaskInfo) GetRecvCount() uint32 {
	if x != nil {
		return x.RecvCount
	}
	return 0
}

func (x *TaskInfo) GetSendCount() uint32 {
	if x != nil {
		return x.SendCount
	}
	return 0
}

type TaskListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Tasks []*TaskInfo `protobuf:"bytes,1,rep,name=tasks,proto3" json:"tasks,omitempty"`
}

func (x *TaskListResponse) Reset() {
	*x = TaskListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[63]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TaskListResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TaskListResponse) ProtoMessage() {}

func (x *TaskListResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[63]
	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 TaskListResponse.ProtoReflect.Descriptor instead.
func (*TaskListResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{63}
}

func (x *TaskListResponse) GetTasks() []*TaskInfo {
	if x != nil {
		return x.Tasks
	}
	return nil
}

type FFmpegRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Action       string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"`
	DeviceName   string `protobuf:"bytes,2,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"`
	OutputFormat string `protobuf:"bytes,3,opt,name=output_format,json=outputFormat,proto3" json:"output_format,omitempty"`
	OutputPath   string `protobuf:"bytes,4,opt,name=output_path,json=outputPath,proto3" json:"output_path,omitempty"`
	Time         string `protobuf:"bytes,5,opt,name=time,proto3" json:"time,omitempty"`
}

func (x *FFmpegRequest) Reset() {
	*x = FFmpegRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[64]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FFmpegRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FFmpegRequest) ProtoMessage() {}

func (x *FFmpegRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[64]
	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 FFmpegRequest.ProtoReflect.Descriptor instead.
func (*FFmpegRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{64}
}

func (x *FFmpegRequest) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

func (x *FFmpegRequest) GetDeviceName() string {
	if x != nil {
		return x.DeviceName
	}
	return ""
}

func (x *FFmpegRequest) GetOutputFormat() string {
	if x != nil {
		return x.OutputFormat
	}
	return ""
}

func (x *FFmpegRequest) GetOutputPath() string {
	if x != nil {
		return x.OutputPath
	}
	return ""
}

func (x *FFmpegRequest) GetTime() string {
	if x != nil {
		return x.Time
	}
	return ""
}

// PTY
type PtyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type      string            `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`                                                                                             // type: "start", "input", "stop"
	SessionId string            `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`                                                                  //
	Shell     string            `protobuf:"bytes,3,opt,name=shell,proto3" json:"shell,omitempty"`                                                                                           // shell type: "/bin/bash", "cmd.exe", "powershell.exe"
	Cols      uint32            `protobuf:"varint,4,opt,name=cols,proto3" json:"cols,omitempty"`                                                                                            //
	Rows      uint32            `protobuf:"varint,5,opt,name=rows,proto3" json:"rows,omitempty"`                                                                                            //
	InputData []byte            `protobuf:"bytes,6,opt,name=input_data,json=inputData,proto3" json:"input_data,omitempty"`                                                                  //
	InputText string            `protobuf:"bytes,7,opt,name=input_text,json=inputText,proto3" json:"input_text,omitempty"`                                                                  //
	Params    map[string]string `protobuf:"bytes,8,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //
}

func (x *PtyRequest) Reset() {
	*x = PtyRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[65]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PtyRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PtyRequest) ProtoMessage() {}

func (x *PtyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[65]
	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 PtyRequest.ProtoReflect.Descriptor instead.
func (*PtyRequest) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{65}
}

func (x *PtyRequest) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *PtyRequest) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *PtyRequest) GetShell() string {
	if x != nil {
		return x.Shell
	}
	return ""
}

func (x *PtyRequest) GetCols() uint32 {
	if x != nil {
		return x.Cols
	}
	return 0
}

func (x *PtyRequest) GetRows() uint32 {
	if x != nil {
		return x.Rows
	}
	return 0
}

func (x *PtyRequest) GetInputData() []byte {
	if x != nil {
		return x.InputData
	}
	return nil
}

func (x *PtyRequest) GetInputText() string {
	if x != nil {
		return x.InputText
	}
	return ""
}

func (x *PtyRequest) GetParams() map[string]string {
	if x != nil {
		return x.Params
	}
	return nil
}

type PtyResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SessionId      string            `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`              // 会话ID
	OutputData     []byte            `protobuf:"bytes,2,opt,name=output_data,json=outputData,proto3" json:"output_data,omitempty"`           // 输出数据（二进制）
	OutputText     string            `protobuf:"bytes,3,opt,name=output_text,json=outputText,proto3" json:"output_text,omitempty"`           // 输出数据（文本）
	Error          string            `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`                                       // 错误信息
	SessionActive  bool              `protobuf:"varint,5,opt,name=session_active,json=sessionActive,proto3" json:"session_active,omitempty"` // 会话是否仍然活跃
	ActiveSessions []string          `protobuf:"bytes,6,rep,name=active_sessions,json=activeSessions,proto3" json:"active_sessions,omitempty"`
	Metadata       map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *PtyResponse) Reset() {
	*x = PtyResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_implant_implantpb_module_proto_msgTypes[66]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PtyResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PtyResponse) ProtoMessage() {}

func (x *PtyResponse) ProtoReflect() protoreflect.Message {
	mi := &file_implant_implantpb_module_proto_msgTypes[66]
	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 PtyResponse.ProtoReflect.Descriptor instead.
func (*PtyResponse) Descriptor() ([]byte, []int) {
	return file_implant_implantpb_module_proto_rawDescGZIP(), []int{66}
}

func (x *PtyResponse) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *PtyResponse) GetOutputData() []byte {
	if x != nil {
		return x.OutputData
	}
	return nil
}

func (x *PtyResponse) GetOutputText() string {
	if x != nil {
		return x.OutputText
	}
	return ""
}

func (x *PtyResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *PtyResponse) GetSessionActive() bool {
	if x != nil {
		return x.SessionActive
	}
	return false
}

func (x *PtyResponse) GetActiveSessions() []string {
	if x != nil {
		return x.ActiveSessions
	}
	return nil
}

func (x *PtyResponse) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

var File_implant_implantpb_module_proto protoreflect.FileDescriptor

var file_implant_implantpb_module_proto_rawDesc = []byte{
	0x0a, 0x1e, 0x69, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x61, 0x6e,
	0x74, 0x70, 0x62, 0x2f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x12, 0x08, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x22, 0x1c, 0x0a, 0x04, 0x50, 0x69,
	0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0xf3, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67,
	0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f,
	0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x12,
	0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x6f, 0x6e,
	0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
	0x70, 0x62, 0x2e, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73,
	0x12, 0x25, 0x0a, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72,
	0x52, 0x05, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x07, 0x73, 0x79, 0x73, 0x69, 0x6e,
	0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c,
	0x65, 0x70, 0x62, 0x2e, 0x53, 0x79, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x73, 0x79, 0x73,
	0x69, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e,
	0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x52, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x22, 0x65,
	0x0a, 0x06, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x63,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73,
	0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
	0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x34, 0x0a,
	0x13, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x4b, 0x65, 0x79, 0x22, 0x1a, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
	0xad, 0x01, 0x0a, 0x07, 0x53, 0x79, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x66,
	0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
	0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64,
	0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69,
	0x72, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, 0x69,
	0x6c, 0x65, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x4f, 0x73, 0x52, 0x02,
	0x6f, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x50,
	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x22,
	0x3b, 0x0a, 0x07, 0x53, 0x75, 0x69, 0x63, 0x69, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c,
	0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xcb, 0x01, 0x0a,
	0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
	0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70,
	0x62, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a,
	0x03, 0x62, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x69, 0x6e, 0x1a,
	0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb1, 0x01, 0x0a, 0x08, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x02, 0x6b, 0x76, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x02, 0x6b,
	0x76, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x35, 0x0a, 0x07, 0x4b, 0x76, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52,
	0x0a, 0x0d, 0x42, 0x79, 0x70, 0x61, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x10, 0x0a, 0x03, 0x45, 0x54, 0x57, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x45, 0x54,
	0x57, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x4d, 0x53, 0x49, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x04, 0x41, 0x4d, 0x53, 0x49, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64,
	0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44,
	0x6c, 0x6c, 0x22, 0x6d, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61,
	0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03,
	0x6d, 0x61, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x12, 0x21,
	0x0a, 0x0c, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65,
	0x73, 0x22, 0x96, 0x01, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x6b, 0x54, 0x61, 0x62, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x64,
	0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64,
	0x64, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03,
	0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1a,
	0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3f, 0x0a, 0x0f, 0x4e, 0x65,
	0x74, 0x73, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a,
	0x05, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d,
	0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x54, 0x61, 0x62, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x4e, 0x0a, 0x05, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12,
	0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x41, 0x0a, 0x03, 0x41,
	0x43, 0x4b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02,
	0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03,
	0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xb0,
	0x01, 0x0a, 0x02, 0x4f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a,
	0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63,
	0x68, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
	0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63,
	0x61, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
	0x65, 0x22, 0xa7, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03,
	0x70, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x04, 0x70, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a,
	0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63,
	0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x3f, 0x0a, 0x05, 0x54,
	0x69, 0x6d, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x6a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x22, 0x8a, 0x01, 0x0a,
	0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x49, 0x73, 0x44, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73,
	0x44, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x6f, 0x64, 0x54, 0x69,
	0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x6f, 0x64, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x83, 0x01, 0x0a, 0x10, 0x53, 0x61,
	0x63, 0x72, 0x69, 0x66, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x16,
	0x0a, 0x06, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
	0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
	0x64, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x44, 0x6c, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x74, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x03, 0x65, 0x74, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x72, 0x67,
	0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x72, 0x67, 0x75, 0x65, 0x22,
	0x62, 0x0a, 0x0a, 0x4c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a,
	0x04, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x61, 0x74,
	0x68, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x06, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x46, 0x69, 0x6c,
	0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c,
	0x65, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x46, 0x69,
	0x6c, 0x65, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x09, 0x44, 0x72, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69,
	0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53,
	0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x72, 0x65, 0x65, 0x53, 0x69, 0x7a, 0x65,
	0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65,
	0x6d, 0x22, 0x42, 0x0a, 0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c,
	0x65, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x64,
	0x72, 0x69, 0x76, 0x65, 0x73, 0x22, 0x3d, 0x0a, 0x0a, 0x50, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70,
	0x62, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65,
	0x73, 0x73, 0x65, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x0b, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06,
	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f,
	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74,
	0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12,
	0x0a, 0x04, 0x70, 0x70, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x70,
	0x69, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f,
	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74,
	0x64, 0x65, 0x72, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x68, 0x0a, 0x0e, 0x42, 0x69, 0x6e, 0x61,
	0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18,
	0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x72, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x22, 0x23, 0x0a, 0x07, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x0a,
	0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
	0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x6f, 0x6e,
	0x73, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x41, 0x64, 0x64,
	0x6f, 0x6e, 0x52, 0x06, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x22, 0x47, 0x0a, 0x05, 0x41, 0x64,
	0x64, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64,
	0x65, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x70,
	0x65, 0x6e, 0x64, 0x22, 0x36, 0x0a, 0x0a, 0x4c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
	0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x69, 0x6e, 0x22, 0x5d, 0x0a, 0x09, 0x4c,
	0x6f, 0x61, 0x64, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x69, 0x6e, 0x22, 0x64, 0x0a, 0x0c, 0x45, 0x78,
	0x65, 0x63, 0x75, 0x74, 0x65, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64,
	0x64, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x6f, 0x6e,
	0x12, 0x3e, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x61,
	0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c,
	0x65, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72,
	0x79, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79,
	0x22, 0xed, 0x03, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61,
	0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x03, 0x62, 0x69, 0x6e, 0x12, 0x38, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61,
	0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
	0x70, 0x62, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79,
	0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x61, 0x72,
	0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73,
	0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72,
	0x6f, 0x63, 0x65, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67,
	0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1f, 0x0a,
	0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12,
	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72,
	0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x18,
	0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x73, 0x61, 0x63, 0x72,
	0x69, 0x66, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x6f,
	0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x63, 0x72, 0x69, 0x66, 0x69, 0x63, 0x65,
	0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x09, 0x73, 0x61, 0x63, 0x72, 0x69, 0x66, 0x69,
	0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
	0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x64, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
	0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x09,
	0x73, 0x61, 0x63, 0x72, 0x69, 0x66, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x53, 0x61, 0x63, 0x72, 0x69,
	0x66, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x09, 0x73, 0x61, 0x63,
	0x72, 0x69, 0x66, 0x69, 0x63, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x6f, 0x61,
	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06,
	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61,
	0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x72, 0x69, 0x76, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x04, 0x70, 0x72, 0x69, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06,
	0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x69,
	0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
	0x22, 0x7e, 0x0a, 0x0f, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62,
	0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x0a, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03,
	0x64, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x69, 0x72, 0x12, 0x10,
	0x0a, 0x03, 0x63, 0x75, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x75, 0x72,
	0x22, 0x6e, 0x0a, 0x10, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
	0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04,
	0x73, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x75, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x03, 0x63, 0x75, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x22, 0xf7, 0x01, 0x0a, 0x0b, 0x43, 0x75, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
	0x72, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65,
	0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x39, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64,
	0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c,
	0x65, 0x70, 0x62, 0x2e, 0x43, 0x75, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61,
	0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x1a,
	0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x0c, 0x43, 0x68,
	0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61,
	0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10,
	0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64,
	0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67,
	0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65,
	0x22, 0x51, 0x0a, 0x10, 0x49, 0x66, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65,
	0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d,
	0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x4e, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72,
	0x66, 0x61, 0x63, 0x65, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61,
	0x63, 0x65, 0x73, 0x22, 0x55, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x72, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d,
	0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
	0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x22, 0x44, 0x0a, 0x08, 0x52, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x76, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61,
	0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x22, 0xee, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x57, 0x72, 0x69,
	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x76,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x76, 0x65, 0x12, 0x12, 0x0a,
	0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
	0x68, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x77, 0x6f, 0x72,
	0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x71, 0x77, 0x6f, 0x72, 0x64, 0x5f,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x71, 0x77, 0x6f,
	0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x67, 0x74, 0x79, 0x70,
	0x65, 0x22, 0x5d, 0x0a, 0x13, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x08,
	0x74, 0x61, 0x73, 0x6b, 0x73, 0x63, 0x68, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
	0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63,
	0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x63, 0x68, 0x64,
	0x22, 0xad, 0x02, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
	0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65,
	0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61,
	0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
	0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62,
	0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b,
	0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18,
	0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74,
	0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d,
	0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65,
	0x22, 0x4d, 0x0a, 0x15, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x73, 0x63, 0x68,
	0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d,
	0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x63, 0x68, 0x65,
	0x64, 0x75, 0x6c, 0x65, 0x52, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22,
	0x57, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70,
	0x62, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
	0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x72,
	0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21,
	0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f,
	0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63,
	0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x21,
	0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d,
	0x65, 0x22, 0xad, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73,
	0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72,
	0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72,
	0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f,
	0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74,
	0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69,
	0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70,
	0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x68, 0x69, 0x6e,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x77, 0x61, 0x69, 0x74, 0x48, 0x69, 0x6e,
	0x74, 0x22, 0x6b, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x06,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d,
	0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x41,
	0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e,
	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
	0x73, 0x22, 0x43, 0x0a, 0x0f, 0x57, 0x6d, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x10, 0x57, 0x6d, 0x69, 0x4d, 0x65,
	0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61,
	0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
	0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x68,
	0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d,
	0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72,
	0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x6f, 0x64, 0x75,
	0x6c, 0x65, 0x70, 0x62, 0x2e, 0x57, 0x6d, 0x69, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72,
	0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x22, 0xe0, 0x01, 0x0a, 0x0c, 0x52, 0x75, 0x6e, 0x41, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 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, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73,
	0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12,
	0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61,
	0x72, 0x67, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69,
	0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x50, 0x72, 0x6f,
	0x66, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x6f, 0x6e, 0x6c, 0x79, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x17,
	0x0a, 0x07, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x6e, 0x76, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x06, 0x75, 0x73, 0x65, 0x45, 0x6e, 0x76, 0x22, 0x2f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x79,
	0x73, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x03, 0x62, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x06, 0x49, 0x6e, 0x6a, 0x65,
	0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x03, 0x62, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x46, 0x0a, 0x04, 0x50, 0x69, 0x70, 0x65, 0x12, 0x12,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x45,
	0x0a, 0x0b, 0x50, 0x69, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x12, 0x22, 0x0a, 0x04, 0x70, 0x69, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0e, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x52,
	0x04, 0x70, 0x69, 0x70, 0x65, 0x22, 0x1c, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12,
	0x12, 0x0a, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75,
	0x72, 0x6c, 0x73, 0x22, 0x33, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x74, 0x72, 0x6c, 0x12,
	0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x75, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a,
	0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x6c, 0x61, 0x73,
	0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x63, 0x76, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22,
	0x3c, 0x0a, 0x10, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x54, 0x61,
	0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0xa2, 0x01,
	0x0a, 0x0d, 0x46, 0x46, 0x6d, 0x70, 0x65, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1f, 0x0a,
	0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12,
	0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69,
	0x6d, 0x65, 0x22, 0xb0, 0x02, 0x0a, 0x0a, 0x50, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
	0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x12,
	0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x72, 0x6f,
	0x77, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74,
	0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74,
	0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x20, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x50, 0x74, 0x79, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61,
	0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd2, 0x02, 0x0a, 0x0b, 0x50, 0x74, 0x79, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75,
	0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f,
	0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e,
	0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74,
	0x69, 0x76, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63,
	0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x08,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23,
	0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x70, 0x62, 0x2e, 0x50, 0x74, 0x79, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a,
	0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x72, 0x65,
	0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x61, 0x6c, 0x69, 0x63, 0x65, 0x2d, 0x6e, 0x65,
	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x2f, 0x69, 0x6d, 0x70, 0x6c, 0x61,
	0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_implant_implantpb_module_proto_rawDescOnce sync.Once
	file_implant_implantpb_module_proto_rawDescData = file_implant_implantpb_module_proto_rawDesc
)

func file_implant_implantpb_module_proto_rawDescGZIP() []byte {
	file_implant_implantpb_module_proto_rawDescOnce.Do(func() {
		file_implant_implantpb_module_proto_rawDescData = protoimpl.X.CompressGZIP(file_implant_implantpb_module_proto_rawDescData)
	})
	return file_implant_implantpb_module_proto_rawDescData
}

var file_implant_implantpb_module_proto_msgTypes = make([]protoimpl.MessageInfo, 74)
var file_implant_implantpb_module_proto_goTypes = []interface{}{
	(*Ping)(nil),                  // 0: modulepb.Ping
	(*Register)(nil),              // 1: modulepb.Register
	(*Secure)(nil),                // 2: modulepb.Secure
	(*KeyExchangeRequest)(nil),    // 3: modulepb.KeyExchangeRequest
	(*KeyExchangeResponse)(nil),   // 4: modulepb.KeyExchangeResponse
	(*Init)(nil),                  // 5: modulepb.Init
	(*SysInfo)(nil),               // 6: modulepb.SysInfo
	(*Suicide)(nil),               // 7: modulepb.Suicide
	(*Request)(nil),               // 8: modulepb.Request
	(*Response)(nil),              // 9: modulepb.Response
	(*BypassRequest)(nil),         // 10: modulepb.BypassRequest
	(*NetInterface)(nil),          // 11: modulepb.NetInterface
	(*SockTabEntry)(nil),          // 12: modulepb.SockTabEntry
	(*NetstatResponse)(nil),       // 13: modulepb.NetstatResponse
	(*Block)(nil),                 // 14: modulepb.Block
	(*ACK)(nil),                   // 15: modulepb.ACK
	(*Os)(nil),                    // 16: modulepb.Os
	(*Process)(nil),               // 17: modulepb.Process
	(*Timer)(nil),                 // 18: modulepb.Timer
	(*FileInfo)(nil),              // 19: modulepb.FileInfo
	(*SacrificeProcess)(nil),      // 20: modulepb.SacrificeProcess
	(*LsResponse)(nil),            // 21: modulepb.LsResponse
	(*DriveInfo)(nil),             // 22: modulepb.DriveInfo
	(*EnumDriversResponse)(nil),   // 23: modulepb.EnumDriversResponse
	(*PsResponse)(nil),            // 24: modulepb.PsResponse
	(*ExecRequest)(nil),           // 25: modulepb.ExecRequest
	(*ExecResponse)(nil),          // 26: modulepb.ExecResponse
	(*BinaryResponse)(nil),        // 27: modulepb.BinaryResponse
	(*Modules)(nil),               // 28: modulepb.Modules
	(*Addons)(nil),                // 29: modulepb.Addons
	(*Addon)(nil),                 // 30: modulepb.Addon
	(*LoadModule)(nil),            // 31: modulepb.LoadModule
	(*LoadAddon)(nil),             // 32: modulepb.LoadAddon
	(*ExecuteAddon)(nil),          // 33: modulepb.ExecuteAddon
	(*ExecuteBinary)(nil),         // 34: modulepb.ExecuteBinary
	(*ExecuteCommand)(nil),        // 35: modulepb.ExecuteCommand
	(*UploadRequest)(nil),         // 36: modulepb.UploadRequest
	(*DownloadRequest)(nil),       // 37: modulepb.DownloadRequest
	(*DownloadResponse)(nil),      // 38: modulepb.DownloadResponse
	(*CurlRequest)(nil),           // 39: modulepb.CurlRequest
	(*ChownRequest)(nil),          // 40: modulepb.ChownRequest
	(*IfconfigResponse)(nil),      // 41: modulepb.IfconfigResponse
	(*RegistryRequest)(nil),       // 42: modulepb.RegistryRequest
	(*Registry)(nil),              // 43: modulepb.Registry
	(*RegistryWriteRequest)(nil),  // 44: modulepb.RegistryWriteRequest
	(*TaskScheduleRequest)(nil),   // 45: modulepb.TaskScheduleRequest
	(*TaskSchedule)(nil),          // 46: modulepb.TaskSchedule
	(*TaskSchedulesResponse)(nil), // 47: modulepb.TaskSchedulesResponse
	(*ServiceRequest)(nil),        // 48: modulepb.ServiceRequest
	(*ServiceConfig)(nil),         // 49: modulepb.ServiceConfig
	(*ServiceStatus)(nil),         // 50: modulepb.ServiceStatus
	(*Service)(nil),               // 51: modulepb.Service
	(*ServicesResponse)(nil),      // 52: modulepb.ServicesResponse
	(*WmiQueryRequest)(nil),       // 53: modulepb.WmiQueryRequest
	(*WmiMethodRequest)(nil),      // 54: modulepb.WmiMethodRequest
	(*RunAsRequest)(nil),          // 55: modulepb.RunAsRequest
	(*GetSystem)(nil),             // 56: modulepb.GetSystem
	(*Inject)(nil),                // 57: modulepb.Inject
	(*Pipe)(nil),                  // 58: modulepb.Pipe
	(*PipeRequest)(nil),           // 59: modulepb.PipeRequest
	(*Switch)(nil),                // 60: modulepb.Switch
	(*TaskCtrl)(nil),              // 61: modulepb.TaskCtrl
	(*TaskInfo)(nil),              // 62: modulepb.TaskInfo
	(*TaskListResponse)(nil),      // 63: modulepb.TaskListResponse
	(*FFmpegRequest)(nil),         // 64: modulepb.FFmpegRequest
	(*PtyRequest)(nil),            // 65: modulepb.PtyRequest
	(*PtyResponse)(nil),           // 66: modulepb.PtyResponse
	nil,                           // 67: modulepb.Request.ParamsEntry
	nil,                           // 68: modulepb.Response.KvEntry
	nil,                           // 69: modulepb.ExecuteBinary.ParamEntry
	nil,                           // 70: modulepb.CurlRequest.HeaderEntry
	nil,                           // 71: modulepb.WmiMethodRequest.ParamsEntry
	nil,                           // 72: modulepb.PtyRequest.ParamsEntry
	nil,                           // 73: modulepb.PtyResponse.MetadataEntry
}
var file_implant_implantpb_module_proto_depIdxs = []int32{
	30, // 0: modulepb.Register.addons:type_name -> modulepb.Addon
	18, // 1: modulepb.Register.timer:type_name -> modulepb.Timer
	6,  // 2: modulepb.Register.sysinfo:type_name -> modulepb.SysInfo
	2,  // 3: modulepb.Register.secure:type_name -> modulepb.Secure
	16, // 4: modulepb.SysInfo.os:type_name -> modulepb.Os
	17, // 5: modulepb.SysInfo.process:type_name -> modulepb.Process
	67, // 6: modulepb.Request.params:type_name -> modulepb.Request.ParamsEntry
	68, // 7: modulepb.Response.kv:type_name -> modulepb.Response.KvEntry
	12, // 8: modulepb.NetstatResponse.socks:type_name -> modulepb.SockTabEntry
	19, // 9: modulepb.LsResponse.Files:type_name -> modulepb.FileInfo
	22, // 10: modulepb.EnumDriversResponse.drives:type_name -> modulepb.DriveInfo
	17, // 11: modulepb.PsResponse.processes:type_name -> modulepb.Process
	30, // 12: modulepb.Addons.addons:type_name -> modulepb.Addon
	34, // 13: modulepb.ExecuteAddon.execute_binary:type_name -> modulepb.ExecuteBinary
	69, // 14: modulepb.ExecuteBinary.param:type_name -> modulepb.ExecuteBinary.ParamEntry
	20, // 15: modulepb.ExecuteBinary.sacrifice:type_name -> modulepb.SacrificeProcess
	20, // 16: modulepb.ExecuteCommand.sacrifice:type_name -> modulepb.SacrificeProcess
	70, // 17: modulepb.CurlRequest.header:type_name -> modulepb.CurlRequest.HeaderEntry
	11, // 18: modulepb.IfconfigResponse.net_interfaces:type_name -> modulepb.NetInterface
	43, // 19: modulepb.RegistryRequest.registry:type_name -> modulepb.Registry
	46, // 20: modulepb.TaskScheduleRequest.taskschd:type_name -> modulepb.TaskSchedule
	46, // 21: modulepb.TaskSchedulesResponse.schedules:type_name -> modulepb.TaskSchedule
	49, // 22: modulepb.ServiceRequest.service:type_name -> modulepb.ServiceConfig
	49, // 23: modulepb.Service.config:type_name -> modulepb.ServiceConfig
	50, // 24: modulepb.Service.status:type_name -> modulepb.ServiceStatus
	51, // 25: modulepb.ServicesResponse.services:type_name -> modulepb.Service
	71, // 26: modulepb.WmiMethodRequest.params:type_name -> modulepb.WmiMethodRequest.ParamsEntry
	58, // 27: modulepb.PipeRequest.pipe:type_name -> modulepb.Pipe
	62, // 28: modulepb.TaskListResponse.tasks:type_name -> modulepb.TaskInfo
	72, // 29: modulepb.PtyRequest.params:type_name -> modulepb.PtyRequest.ParamsEntry
	73, // 30: modulepb.PtyResponse.metadata:type_name -> modulepb.PtyResponse.MetadataEntry
	31, // [31:31] is the sub-list for method output_type
	31, // [31:31] is the sub-list for method input_type
	31, // [31:31] is the sub-list for extension type_name
	31, // [31:31] is the sub-list for extension extendee
	0,  // [0:31] is the sub-list for field type_name
}

func init() { file_implant_implantpb_module_proto_init() }
func file_implant_implantpb_module_proto_init() {
	if File_implant_implantpb_module_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_implant_implantpb_module_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Ping); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Register); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Secure); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyExchangeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyExchangeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Init); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SysInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Suicide); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Request); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Response); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BypassRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NetInterface); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SockTabEntry); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NetstatResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Block); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ACK); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Os); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Process); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Timer); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FileInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SacrificeProcess); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DriveInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EnumDriversResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExecRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExecResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BinaryResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Modules); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Addons); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Addon); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LoadModule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LoadAddon); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExecuteAddon); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExecuteBinary); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExecuteCommand); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UploadRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DownloadRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DownloadResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CurlRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChownRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IfconfigResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RegistryRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Registry); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RegistryWriteRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TaskScheduleRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TaskSchedule); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TaskSchedulesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServiceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServiceConfig); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServiceStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Service); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServicesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WmiQueryRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WmiMethodRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RunAsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetSystem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Inject); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Pipe); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PipeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Switch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TaskCtrl); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TaskInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TaskListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FFmpegRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PtyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_implant_implantpb_module_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PtyResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_implant_implantpb_module_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   74,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_implant_implantpb_module_proto_goTypes,
		DependencyIndexes: file_implant_implantpb_module_proto_depIdxs,
		MessageInfos:      file_implant_implantpb_module_proto_msgTypes,
	}.Build()
	File_implant_implantpb_module_proto = out.File
	file_implant_implantpb_module_proto_rawDesc = nil
	file_implant_implantpb_module_proto_goTypes = nil
	file_implant_implantpb_module_proto_depIdxs = nil
}
