// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.3
// 	protoc        v5.29.3
// source: clientpb/client.proto

package clientpb

import (
	commonpb "github.com/bishopfox/sliver/protobuf/commonpb"
	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 OutputFormat int32

const (
	OutputFormat_SHARED_LIB  OutputFormat = 0
	OutputFormat_SHELLCODE   OutputFormat = 1
	OutputFormat_EXECUTABLE  OutputFormat = 2
	OutputFormat_SERVICE     OutputFormat = 3
	OutputFormat_THIRD_PARTY OutputFormat = 4
)

// Enum value maps for OutputFormat.
var (
	OutputFormat_name = map[int32]string{
		0: "SHARED_LIB",
		1: "SHELLCODE",
		2: "EXECUTABLE",
		3: "SERVICE",
		4: "THIRD_PARTY",
	}
	OutputFormat_value = map[string]int32{
		"SHARED_LIB":  0,
		"SHELLCODE":   1,
		"EXECUTABLE":  2,
		"SERVICE":     3,
		"THIRD_PARTY": 4,
	}
)

func (x OutputFormat) Enum() *OutputFormat {
	p := new(OutputFormat)
	*p = x
	return p
}

func (x OutputFormat) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (OutputFormat) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[0].Descriptor()
}

func (OutputFormat) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[0]
}

func (x OutputFormat) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use OutputFormat.Descriptor instead.
func (OutputFormat) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{0}
}

type StageProtocol int32

const (
	StageProtocol_TCP   StageProtocol = 0
	StageProtocol_HTTP  StageProtocol = 1
	StageProtocol_HTTPS StageProtocol = 2
)

// Enum value maps for StageProtocol.
var (
	StageProtocol_name = map[int32]string{
		0: "TCP",
		1: "HTTP",
		2: "HTTPS",
	}
	StageProtocol_value = map[string]int32{
		"TCP":   0,
		"HTTP":  1,
		"HTTPS": 2,
	}
)

func (x StageProtocol) Enum() *StageProtocol {
	p := new(StageProtocol)
	*p = x
	return p
}

func (x StageProtocol) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (StageProtocol) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[1].Descriptor()
}

func (StageProtocol) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[1]
}

func (x StageProtocol) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use StageProtocol.Descriptor instead.
func (StageProtocol) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{1}
}

// [ Loot ] ----------------------------------------
type FileType int32

const (
	FileType_NO_FILE FileType = 0
	FileType_BINARY  FileType = 1
	FileType_TEXT    FileType = 2
)

// Enum value maps for FileType.
var (
	FileType_name = map[int32]string{
		0: "NO_FILE",
		1: "BINARY",
		2: "TEXT",
	}
	FileType_value = map[string]int32{
		"NO_FILE": 0,
		"BINARY":  1,
		"TEXT":    2,
	}
)

func (x FileType) Enum() *FileType {
	p := new(FileType)
	*p = x
	return p
}

func (x FileType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (FileType) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[2].Descriptor()
}

func (FileType) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[2]
}

func (x FileType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use FileType.Descriptor instead.
func (FileType) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{2}
}

// [ Shellcode ] ----------------------------------------
type ShellcodeEncoder int32

const (
	ShellcodeEncoder_NONE           ShellcodeEncoder = 0
	ShellcodeEncoder_SHIKATA_GA_NAI ShellcodeEncoder = 1
)

// Enum value maps for ShellcodeEncoder.
var (
	ShellcodeEncoder_name = map[int32]string{
		0: "NONE",
		1: "SHIKATA_GA_NAI",
	}
	ShellcodeEncoder_value = map[string]int32{
		"NONE":           0,
		"SHIKATA_GA_NAI": 1,
	}
)

func (x ShellcodeEncoder) Enum() *ShellcodeEncoder {
	p := new(ShellcodeEncoder)
	*p = x
	return p
}

func (x ShellcodeEncoder) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ShellcodeEncoder) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[3].Descriptor()
}

func (ShellcodeEncoder) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[3]
}

func (x ShellcodeEncoder) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ShellcodeEncoder.Descriptor instead.
func (ShellcodeEncoder) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{3}
}

type HTTPC2SegmentType int32

const (
	HTTPC2SegmentType_POLL    HTTPC2SegmentType = 0
	HTTPC2SegmentType_SESSION HTTPC2SegmentType = 1
	HTTPC2SegmentType_CLOSE   HTTPC2SegmentType = 2
)

// Enum value maps for HTTPC2SegmentType.
var (
	HTTPC2SegmentType_name = map[int32]string{
		0: "POLL",
		1: "SESSION",
		2: "CLOSE",
	}
	HTTPC2SegmentType_value = map[string]int32{
		"POLL":    0,
		"SESSION": 1,
		"CLOSE":   2,
	}
)

func (x HTTPC2SegmentType) Enum() *HTTPC2SegmentType {
	p := new(HTTPC2SegmentType)
	*p = x
	return p
}

func (x HTTPC2SegmentType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (HTTPC2SegmentType) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[4].Descriptor()
}

func (HTTPC2SegmentType) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[4]
}

func (x HTTPC2SegmentType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use HTTPC2SegmentType.Descriptor instead.
func (HTTPC2SegmentType) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{4}
}

type HashType int32

const (
	HashType_MD5 HashType = 0   // MD5 - zero must come first in an enum
	HashType_MD4 HashType = 900 // MD4
	// MD5
	HashType_SHA1                         HashType = 100   // SHA1
	HashType_SHA2_224                     HashType = 1300  // SHA2-224
	HashType_SHA2_256                     HashType = 1400  // SHA2-256
	HashType_SHA2_384                     HashType = 10800 // SHA2-384
	HashType_SHA2_512                     HashType = 1700  // SHA2-512
	HashType_SHA3_224                     HashType = 17300 // SHA3-224
	HashType_SHA3_256                     HashType = 17400 // SHA3-256
	HashType_SHA3_384                     HashType = 17500 // SHA3-384
	HashType_SHA3_512                     HashType = 17600 // SHA3-512
	HashType_RIPEMD_160                   HashType = 6000  // RIPEMD-160
	HashType_BLAKE2B_256                  HashType = 600   // BLAKE2b-512
	HashType_GOST_R_32_11_2012_256        HashType = 11700 // GOST R 34.11-2012 (Streebog) 256-bit, big-endian
	HashType_GOST_R_32_11_2012_512        HashType = 11800 // GOST R 34.11-2012 (Streebog) 512-bit, big-endian
	HashType_GOST_R_34_11_94              HashType = 6900  // GOST R 34.11-94
	HashType_GPG                          HashType = 17010 // GPG (AES-128/AES-256 (SHA-1($pass)))
	HashType_HALF_MD5                     HashType = 5100  // Half MD5
	HashType_KECCAK_224                   HashType = 17700 // Keccak-224
	HashType_KECCAK_256                   HashType = 17800 // Keccak-256
	HashType_KECCAK_384                   HashType = 17900 // Keccak-384
	HashType_KECCAK_512                   HashType = 18000 // Keccak-512
	HashType_WHIRLPOOL                    HashType = 6100  // Whirlpool
	HashType_SIPHASH                      HashType = 10100 // SipHash
	HashType_MD5_UTF16LE                  HashType = 70    // md5(utf16le($pass))
	HashType_SHA1_UTF16LE                 HashType = 170   // sha1(utf16le($pass))
	HashType_SHA256_UTF16LE               HashType = 1470  // sha256(utf16le($pass))
	HashType_SHA384_UTF16LE               HashType = 10870 // sha384(utf16le($pass))
	HashType_SHA512_UTF16LE               HashType = 1770  // sha512(utf16le($pass))
	HashType_BLAKE2B_512_PW_SALT          HashType = 610   // BLAKE2b-512($pass.$salt)
	HashType_BLAKE2B_512_SALT_PW          HashType = 620   // BLAKE2b-512($salt.$pass)
	HashType_MD5_PW_SALT                  HashType = 10    // md5($pass.$salt)
	HashType_MD5_SALT_PW                  HashType = 20    // md5($salt.$pass)
	HashType_MD5_SALT_PW_SALT             HashType = 3800  // md5($salt.$pass.$salt)
	HashType_MD5_SALT_MD5_PW              HashType = 3710  // md5($salt.md5($pass))
	HashType_CRC32                        HashType = 11500 // CRC32
	HashType_CRC32C                       HashType = 27900 // CRC32B
	HashType_CRC64Jones                   HashType = 28000 // CRC64-Jones
	HashType_JAVA_OBJECT                  HashType = 18700
	HashType_MURMUR                       HashType = 25700 // MurmurHash
	HashType_MURMUR3                      HashType = 27800 // MurmurHash3
	HashType_THREE_DES                    HashType = 14100 // 3DES (PT = $salt, key = $pass)
	HashType_DES                          HashType = 14000 // DES (PT = $salt, key = $pass)
	HashType_AES_128_ECB                  HashType = 26401 // AES-128-ECB NOKDF (PT = $salt, key = $pass)
	HashType_AES_192_ECB                  HashType = 26402 //  AES-192-ECB NOKDF (PT = $salt, key = $pass)
	HashType_AES_256_ECB                  HashType = 26403 // AES-256-ECB NOKDF (PT = $salt, key = $pass)
	HashType_CHA_CHA_20                   HashType = 15400 // ChaCha20
	HashType_LINUX_KERNEL_CRYPTO_API_24   HashType = 14500 // Linux Kernel Crypto API (2.4)
	HashType_SKIP_32                      HashType = 14900 // Skip32 (PT = $salt, key = $pass)
	HashType_PBKDF2_HMAC_MD5              HashType = 11900 // PBKDF2-HMAC-MD5
	HashType_PBKDF2_HMAC_SHA1             HashType = 12000 // PBKDF2-HMAC-SHA1
	HashType_PBKDF2_HMAC_SHA256           HashType = 10900 // PBKDF2-HMAC-SHA256
	HashType_PBKDF2_HMAC_SHA512           HashType = 12100 // PBKDF2-HMAC-SHA512
	HashType_SCRYPT                       HashType = 8900  // scrypt
	HashType_PHPASS                       HashType = 400   // phpass
	HashType_TACACS_PLUS                  HashType = 16100 // TACACS+
	HashType_SIP_DIGEST                   HashType = 11400 // SIP digest authentication (MD5)
	HashType_IKE_MD5                      HashType = 5300  // IKE-PSK MD5
	HashType_IKE_SHA1                     HashType = 5400  // IKE-PSK SHA1
	HashType_SNMP_V3_HMAC_MD5_96          HashType = 25100 // SNMPv3 HMAC-MD5-96
	HashType_SNMP_V3_HMAC_MD5_96__SHA1_96 HashType = 25000 // SNMPv3 HMAC-MD5-96 / HMAC-SHA1-96
	HashType_SNMP_V3_HMAC_SHA1_96         HashType = 25200 // SNMPv3 HMAC-SHA1-96
	HashType_SNMP_V3_HMAC_SHA224_128      HashType = 26700 // SNMPv3 HMAC-SHA224-128
	HashType_SNMP_V3_HMAC_SHA256_192      HashType = 26800 // SNMPv3 HMAC-SHA256-192
	HashType_SNMP_V3_HMAC_SHA384_256      HashType = 26900 // SNMPv3 HMAC-SHA384-256
	HashType_SNMP_V3_HMAC_SHA512_384      HashType = 27300 // SNMPv3 HMAC-SHA512-384
	HashType_WPA_EAPOL_PBKDF2             HashType = 2500  // WPA-EAPOL-PBKDF2
	HashType_WPA_EAPOL_PMK                HashType = 2501  // WPA-EAPOL-PMK
	HashType_WPA_PBKDF2_PMKID_EAPOL       HashType = 22000 // WPA-PBKDF2-PMKID+EAPOL
	HashType_WPA_PMK_PMKID_EAPOL          HashType = 22001 // WPA-PMK-PMKID+EAPOL
	HashType_WPA_PMKID_PBKDF2             HashType = 16800 // WPA-PMKID-PBKDF2
	HashType_WPA_PMKID_PMK                HashType = 16801 // WPA-PMKID-PMK
	HashType_IPMI2_PAKP_HMAC_SHA1         HashType = 7300  // IPMI2 RAKP HMAC-SHA1
	HashType_CRAM_MD5                     HashType = 10200 // CRAM-MD5
	HashType_JWT                          HashType = 16500 // JWT (JSON Web Token)
	HashType_RADMIN_3                     HashType = 29200 // Radmin3
	HashType_KERBEROS_17_TGS_REP          HashType = 19600 // Kerberos 5, etype 17, TGS-REP
	HashType_KERBEROS_17_PREAUTH          HashType = 19800 // Kerberos 5, etype 17, Pre-Auth
	HashType_KERBEROS_17_DB               HashType = 28800 // Kerberos 5, etype 17, DB
	HashType_KERBEROS_18_TGS_REP          HashType = 19700 // Kerberos 5, etype 18, TGS-REP
	HashType_KERBEROS_18_PREAUTH          HashType = 19900 // Kerberos 5, etype 18, Pre-Auth
	HashType_KERBEROS_18_DB               HashType = 28900 // Kerberos 5, etype 18, DB
	HashType_KERBEROS_23_SA_REQ_PREAUTH   HashType = 7500  // Kerberos 5, etype 23, AS-REQ Pre-Auth
	HashType_KERBEROS_23_TGS_REP          HashType = 13100 // Kerberos 5, etype 23, TGS-REP
	HashType_KERBEROS_23_AS_REP           HashType = 18200 // Kerberos 5, etype 23, AS-REP
	HashType_NET_NTLM_V1                  HashType = 5500  // NetNTLMv1 / NetNTLMv1+ESS
	HashType_NET_NTLM_V1_NT               HashType = 27000 // NetNTLMv1 / NetNTLMv1+ESS (NT)
	HashType_NET_NTLM_V2                  HashType = 5600  // NetNTLMv2
	HashType_NET_NTLM_V2_NT               HashType = 27100 // NetNTLMv2 (NT)
	HashType_FLASK                        HashType = 29100 // Flask Session Cookie ($salt.$salt.$pass)
	HashType_ISCSI_CHAP                   HashType = 4800  // iSCSI CHAP authentication, MD5(CHAP)
	HashType_RACF                         HashType = 8500
	HashType_AIX_SMD5                     HashType = 6300
	HashType_AIX_SSHA1                    HashType = 6700
	HashType_AIX_SSHA256                  HashType = 6400
	HashType_AIX_SSHA512                  HashType = 6500
	HashType_LM                           HashType = 3000  // LM
	HashType_QNX_MD5                      HashType = 19000 // QNX /etc/shadow (MD5)
	HashType_QNX_SHA256                   HashType = 19100 // QNX /etc/shadow (SHA256)
	HashType_QNX_SHA512                   HashType = 19200 // QNX /etc/shadow (SHA512)
	HashType_DPAPI_V1_CTX_1_AND_2         HashType = 15300 // DPAPI masterkey file v1 (context 1 and 2)
	HashType_DPAPI_V1_CTX_3               HashType = 15310 // DPAPI masterkey file v1 (context 3)
	HashType_DPAPI_V2_CTX_1_AND_2         HashType = 15900 // DPAPI masterkey file v2 (context 1)
	HashType_DPAPI_V2_CTX_3               HashType = 15910 // DPAPI masterkey file v2 (context 3)
	HashType_GRUB_2                       HashType = 7200  // GRUB 2
	HashType_MS_AZURE_SYNC                HashType = 12800 // MS-AzureSync PBKDF2-HMAC-SHA256
	HashType_BSDI_CRYPT                   HashType = 12400 // BSDi Crypt, Extended DES
	HashType_NTLM                         HashType = 1000  // NTLM
	HashType_RADMIN2                      HashType = 9900  // Radmin2
	HashType_SAMSUNG_ANDROID              HashType = 5800  // Samsung Android Password/PIN
	HashType_WINDOWS_HELLO_PIN            HashType = 28100 // Windows Hello PIN/Password
	HashType_WINDOWS_PHONE                HashType = 13800 // Windows Phone 8+ PIN/Password
	HashType_CISCO_ASA_MD5                HashType = 2410  // Cisco-ASA MD5
	HashType_CISCO_IOS_PBKDF2_SHA256      HashType = 9200  // Cisco-IOS $8$ (PBKDF2-SHA256)
	HashType_CISCO_IOS_SCRYPT             HashType = 9300  // Cisco-IOS $9$ (scrypt)
	HashType_CISCO_PIX_MD5                HashType = 2400  // Cisco-Pix MD5
	HashType_CITRIX_NETSCALER_SHA1        HashType = 8100  // Citrix NetScaler (SHA1)
	HashType_CITRIX_NETSCALER_SHA512      HashType = 22200 // Citrix NetScaler (SHA512)
	HashType_DCC                          HashType = 1100  // Domain Cached Credentials (DCC), MS Cache
	HashType_DCC2                         HashType = 2100  // Domain Cached Credentials 2 (DCC2), MS Cache 2
	HashType_MACOS_10_8                   HashType = 7100  // macOS v10.8+ (PBKDF2-SHA512)
	HashType_INVALID                      HashType = 9999  // Invalid hash type
	// Out of order
	HashType_BCRYPT_UNIX       HashType = 3200 // bcrypt
	HashType_SHA512_CRYPT_UNIX HashType = 1800 // sha512crypt $6$, SHA512 (Unix)
)

// Enum value maps for HashType.
var (
	HashType_name = map[int32]string{
		0:     "MD5",
		900:   "MD4",
		100:   "SHA1",
		1300:  "SHA2_224",
		1400:  "SHA2_256",
		10800: "SHA2_384",
		1700:  "SHA2_512",
		17300: "SHA3_224",
		17400: "SHA3_256",
		17500: "SHA3_384",
		17600: "SHA3_512",
		6000:  "RIPEMD_160",
		600:   "BLAKE2B_256",
		11700: "GOST_R_32_11_2012_256",
		11800: "GOST_R_32_11_2012_512",
		6900:  "GOST_R_34_11_94",
		17010: "GPG",
		5100:  "HALF_MD5",
		17700: "KECCAK_224",
		17800: "KECCAK_256",
		17900: "KECCAK_384",
		18000: "KECCAK_512",
		6100:  "WHIRLPOOL",
		10100: "SIPHASH",
		70:    "MD5_UTF16LE",
		170:   "SHA1_UTF16LE",
		1470:  "SHA256_UTF16LE",
		10870: "SHA384_UTF16LE",
		1770:  "SHA512_UTF16LE",
		610:   "BLAKE2B_512_PW_SALT",
		620:   "BLAKE2B_512_SALT_PW",
		10:    "MD5_PW_SALT",
		20:    "MD5_SALT_PW",
		3800:  "MD5_SALT_PW_SALT",
		3710:  "MD5_SALT_MD5_PW",
		11500: "CRC32",
		27900: "CRC32C",
		28000: "CRC64Jones",
		18700: "JAVA_OBJECT",
		25700: "MURMUR",
		27800: "MURMUR3",
		14100: "THREE_DES",
		14000: "DES",
		26401: "AES_128_ECB",
		26402: "AES_192_ECB",
		26403: "AES_256_ECB",
		15400: "CHA_CHA_20",
		14500: "LINUX_KERNEL_CRYPTO_API_24",
		14900: "SKIP_32",
		11900: "PBKDF2_HMAC_MD5",
		12000: "PBKDF2_HMAC_SHA1",
		10900: "PBKDF2_HMAC_SHA256",
		12100: "PBKDF2_HMAC_SHA512",
		8900:  "SCRYPT",
		400:   "PHPASS",
		16100: "TACACS_PLUS",
		11400: "SIP_DIGEST",
		5300:  "IKE_MD5",
		5400:  "IKE_SHA1",
		25100: "SNMP_V3_HMAC_MD5_96",
		25000: "SNMP_V3_HMAC_MD5_96__SHA1_96",
		25200: "SNMP_V3_HMAC_SHA1_96",
		26700: "SNMP_V3_HMAC_SHA224_128",
		26800: "SNMP_V3_HMAC_SHA256_192",
		26900: "SNMP_V3_HMAC_SHA384_256",
		27300: "SNMP_V3_HMAC_SHA512_384",
		2500:  "WPA_EAPOL_PBKDF2",
		2501:  "WPA_EAPOL_PMK",
		22000: "WPA_PBKDF2_PMKID_EAPOL",
		22001: "WPA_PMK_PMKID_EAPOL",
		16800: "WPA_PMKID_PBKDF2",
		16801: "WPA_PMKID_PMK",
		7300:  "IPMI2_PAKP_HMAC_SHA1",
		10200: "CRAM_MD5",
		16500: "JWT",
		29200: "RADMIN_3",
		19600: "KERBEROS_17_TGS_REP",
		19800: "KERBEROS_17_PREAUTH",
		28800: "KERBEROS_17_DB",
		19700: "KERBEROS_18_TGS_REP",
		19900: "KERBEROS_18_PREAUTH",
		28900: "KERBEROS_18_DB",
		7500:  "KERBEROS_23_SA_REQ_PREAUTH",
		13100: "KERBEROS_23_TGS_REP",
		18200: "KERBEROS_23_AS_REP",
		5500:  "NET_NTLM_V1",
		27000: "NET_NTLM_V1_NT",
		5600:  "NET_NTLM_V2",
		27100: "NET_NTLM_V2_NT",
		29100: "FLASK",
		4800:  "ISCSI_CHAP",
		8500:  "RACF",
		6300:  "AIX_SMD5",
		6700:  "AIX_SSHA1",
		6400:  "AIX_SSHA256",
		6500:  "AIX_SSHA512",
		3000:  "LM",
		19000: "QNX_MD5",
		19100: "QNX_SHA256",
		19200: "QNX_SHA512",
		15300: "DPAPI_V1_CTX_1_AND_2",
		15310: "DPAPI_V1_CTX_3",
		15900: "DPAPI_V2_CTX_1_AND_2",
		15910: "DPAPI_V2_CTX_3",
		7200:  "GRUB_2",
		12800: "MS_AZURE_SYNC",
		12400: "BSDI_CRYPT",
		1000:  "NTLM",
		9900:  "RADMIN2",
		5800:  "SAMSUNG_ANDROID",
		28100: "WINDOWS_HELLO_PIN",
		13800: "WINDOWS_PHONE",
		2410:  "CISCO_ASA_MD5",
		9200:  "CISCO_IOS_PBKDF2_SHA256",
		9300:  "CISCO_IOS_SCRYPT",
		2400:  "CISCO_PIX_MD5",
		8100:  "CITRIX_NETSCALER_SHA1",
		22200: "CITRIX_NETSCALER_SHA512",
		1100:  "DCC",
		2100:  "DCC2",
		7100:  "MACOS_10_8",
		9999:  "INVALID",
		3200:  "BCRYPT_UNIX",
		1800:  "SHA512_CRYPT_UNIX",
	}
	HashType_value = map[string]int32{
		"MD5":                          0,
		"MD4":                          900,
		"SHA1":                         100,
		"SHA2_224":                     1300,
		"SHA2_256":                     1400,
		"SHA2_384":                     10800,
		"SHA2_512":                     1700,
		"SHA3_224":                     17300,
		"SHA3_256":                     17400,
		"SHA3_384":                     17500,
		"SHA3_512":                     17600,
		"RIPEMD_160":                   6000,
		"BLAKE2B_256":                  600,
		"GOST_R_32_11_2012_256":        11700,
		"GOST_R_32_11_2012_512":        11800,
		"GOST_R_34_11_94":              6900,
		"GPG":                          17010,
		"HALF_MD5":                     5100,
		"KECCAK_224":                   17700,
		"KECCAK_256":                   17800,
		"KECCAK_384":                   17900,
		"KECCAK_512":                   18000,
		"WHIRLPOOL":                    6100,
		"SIPHASH":                      10100,
		"MD5_UTF16LE":                  70,
		"SHA1_UTF16LE":                 170,
		"SHA256_UTF16LE":               1470,
		"SHA384_UTF16LE":               10870,
		"SHA512_UTF16LE":               1770,
		"BLAKE2B_512_PW_SALT":          610,
		"BLAKE2B_512_SALT_PW":          620,
		"MD5_PW_SALT":                  10,
		"MD5_SALT_PW":                  20,
		"MD5_SALT_PW_SALT":             3800,
		"MD5_SALT_MD5_PW":              3710,
		"CRC32":                        11500,
		"CRC32C":                       27900,
		"CRC64Jones":                   28000,
		"JAVA_OBJECT":                  18700,
		"MURMUR":                       25700,
		"MURMUR3":                      27800,
		"THREE_DES":                    14100,
		"DES":                          14000,
		"AES_128_ECB":                  26401,
		"AES_192_ECB":                  26402,
		"AES_256_ECB":                  26403,
		"CHA_CHA_20":                   15400,
		"LINUX_KERNEL_CRYPTO_API_24":   14500,
		"SKIP_32":                      14900,
		"PBKDF2_HMAC_MD5":              11900,
		"PBKDF2_HMAC_SHA1":             12000,
		"PBKDF2_HMAC_SHA256":           10900,
		"PBKDF2_HMAC_SHA512":           12100,
		"SCRYPT":                       8900,
		"PHPASS":                       400,
		"TACACS_PLUS":                  16100,
		"SIP_DIGEST":                   11400,
		"IKE_MD5":                      5300,
		"IKE_SHA1":                     5400,
		"SNMP_V3_HMAC_MD5_96":          25100,
		"SNMP_V3_HMAC_MD5_96__SHA1_96": 25000,
		"SNMP_V3_HMAC_SHA1_96":         25200,
		"SNMP_V3_HMAC_SHA224_128":      26700,
		"SNMP_V3_HMAC_SHA256_192":      26800,
		"SNMP_V3_HMAC_SHA384_256":      26900,
		"SNMP_V3_HMAC_SHA512_384":      27300,
		"WPA_EAPOL_PBKDF2":             2500,
		"WPA_EAPOL_PMK":                2501,
		"WPA_PBKDF2_PMKID_EAPOL":       22000,
		"WPA_PMK_PMKID_EAPOL":          22001,
		"WPA_PMKID_PBKDF2":             16800,
		"WPA_PMKID_PMK":                16801,
		"IPMI2_PAKP_HMAC_SHA1":         7300,
		"CRAM_MD5":                     10200,
		"JWT":                          16500,
		"RADMIN_3":                     29200,
		"KERBEROS_17_TGS_REP":          19600,
		"KERBEROS_17_PREAUTH":          19800,
		"KERBEROS_17_DB":               28800,
		"KERBEROS_18_TGS_REP":          19700,
		"KERBEROS_18_PREAUTH":          19900,
		"KERBEROS_18_DB":               28900,
		"KERBEROS_23_SA_REQ_PREAUTH":   7500,
		"KERBEROS_23_TGS_REP":          13100,
		"KERBEROS_23_AS_REP":           18200,
		"NET_NTLM_V1":                  5500,
		"NET_NTLM_V1_NT":               27000,
		"NET_NTLM_V2":                  5600,
		"NET_NTLM_V2_NT":               27100,
		"FLASK":                        29100,
		"ISCSI_CHAP":                   4800,
		"RACF":                         8500,
		"AIX_SMD5":                     6300,
		"AIX_SSHA1":                    6700,
		"AIX_SSHA256":                  6400,
		"AIX_SSHA512":                  6500,
		"LM":                           3000,
		"QNX_MD5":                      19000,
		"QNX_SHA256":                   19100,
		"QNX_SHA512":                   19200,
		"DPAPI_V1_CTX_1_AND_2":         15300,
		"DPAPI_V1_CTX_3":               15310,
		"DPAPI_V2_CTX_1_AND_2":         15900,
		"DPAPI_V2_CTX_3":               15910,
		"GRUB_2":                       7200,
		"MS_AZURE_SYNC":                12800,
		"BSDI_CRYPT":                   12400,
		"NTLM":                         1000,
		"RADMIN2":                      9900,
		"SAMSUNG_ANDROID":              5800,
		"WINDOWS_HELLO_PIN":            28100,
		"WINDOWS_PHONE":                13800,
		"CISCO_ASA_MD5":                2410,
		"CISCO_IOS_PBKDF2_SHA256":      9200,
		"CISCO_IOS_SCRYPT":             9300,
		"CISCO_PIX_MD5":                2400,
		"CITRIX_NETSCALER_SHA1":        8100,
		"CITRIX_NETSCALER_SHA512":      22200,
		"DCC":                          1100,
		"DCC2":                         2100,
		"MACOS_10_8":                   7100,
		"INVALID":                      9999,
		"BCRYPT_UNIX":                  3200,
		"SHA512_CRYPT_UNIX":            1800,
	}
)

func (x HashType) Enum() *HashType {
	p := new(HashType)
	*p = x
	return p
}

func (x HashType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (HashType) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[5].Descriptor()
}

func (HashType) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[5]
}

func (x HashType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use HashType.Descriptor instead.
func (HashType) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{5}
}

type States int32

const (
	States_IDLE         States = 0
	States_CRACKING     States = 1
	States_INITIALIZING States = 2
)

// Enum value maps for States.
var (
	States_name = map[int32]string{
		0: "IDLE",
		1: "CRACKING",
		2: "INITIALIZING",
	}
	States_value = map[string]int32{
		"IDLE":         0,
		"CRACKING":     1,
		"INITIALIZING": 2,
	}
)

func (x States) Enum() *States {
	p := new(States)
	*p = x
	return p
}

func (x States) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (States) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[6].Descriptor()
}

func (States) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[6]
}

func (x States) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use States.Descriptor instead.
func (States) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{6}
}

type CrackJobStatus int32

const (
	CrackJobStatus_IN_PROGRESS CrackJobStatus = 0
	CrackJobStatus_COMPLETED   CrackJobStatus = 1
	CrackJobStatus_FAILED      CrackJobStatus = 2
)

// Enum value maps for CrackJobStatus.
var (
	CrackJobStatus_name = map[int32]string{
		0: "IN_PROGRESS",
		1: "COMPLETED",
		2: "FAILED",
	}
	CrackJobStatus_value = map[string]int32{
		"IN_PROGRESS": 0,
		"COMPLETED":   1,
		"FAILED":      2,
	}
)

func (x CrackJobStatus) Enum() *CrackJobStatus {
	p := new(CrackJobStatus)
	*p = x
	return p
}

func (x CrackJobStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CrackJobStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[7].Descriptor()
}

func (CrackJobStatus) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[7]
}

func (x CrackJobStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CrackJobStatus.Descriptor instead.
func (CrackJobStatus) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{7}
}

type CrackAttackMode int32

const (
	CrackAttackMode_STRAIGHT             CrackAttackMode = 0
	CrackAttackMode_COMBINATION          CrackAttackMode = 1
	CrackAttackMode_BRUTEFORCE           CrackAttackMode = 3
	CrackAttackMode_HYBRID_WORDLIST_MASK CrackAttackMode = 6
	CrackAttackMode_HYBRID_MASK_WORDLIST CrackAttackMode = 7
	CrackAttackMode_ASSOCIATION          CrackAttackMode = 9
	CrackAttackMode_NO_ATTACK            CrackAttackMode = 10
)

// Enum value maps for CrackAttackMode.
var (
	CrackAttackMode_name = map[int32]string{
		0:  "STRAIGHT",
		1:  "COMBINATION",
		3:  "BRUTEFORCE",
		6:  "HYBRID_WORDLIST_MASK",
		7:  "HYBRID_MASK_WORDLIST",
		9:  "ASSOCIATION",
		10: "NO_ATTACK",
	}
	CrackAttackMode_value = map[string]int32{
		"STRAIGHT":             0,
		"COMBINATION":          1,
		"BRUTEFORCE":           3,
		"HYBRID_WORDLIST_MASK": 6,
		"HYBRID_MASK_WORDLIST": 7,
		"ASSOCIATION":          9,
		"NO_ATTACK":            10,
	}
)

func (x CrackAttackMode) Enum() *CrackAttackMode {
	p := new(CrackAttackMode)
	*p = x
	return p
}

func (x CrackAttackMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CrackAttackMode) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[8].Descriptor()
}

func (CrackAttackMode) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[8]
}

func (x CrackAttackMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CrackAttackMode.Descriptor instead.
func (CrackAttackMode) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{8}
}

type CrackEncoding int32

const (
	CrackEncoding_INVALID_ENCODING CrackEncoding = 0
	CrackEncoding_ISO_8859_15      CrackEncoding = 1
	CrackEncoding_UTF_32LE         CrackEncoding = 2
)

// Enum value maps for CrackEncoding.
var (
	CrackEncoding_name = map[int32]string{
		0: "INVALID_ENCODING",
		1: "ISO_8859_15",
		2: "UTF_32LE",
	}
	CrackEncoding_value = map[string]int32{
		"INVALID_ENCODING": 0,
		"ISO_8859_15":      1,
		"UTF_32LE":         2,
	}
)

func (x CrackEncoding) Enum() *CrackEncoding {
	p := new(CrackEncoding)
	*p = x
	return p
}

func (x CrackEncoding) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CrackEncoding) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[9].Descriptor()
}

func (CrackEncoding) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[9]
}

func (x CrackEncoding) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CrackEncoding.Descriptor instead.
func (CrackEncoding) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{9}
}

type CrackOutfileFormat int32

const (
	CrackOutfileFormat_INVALID_FORMAT     CrackOutfileFormat = 0
	CrackOutfileFormat_HASH_SALT          CrackOutfileFormat = 1 // 1 | hash[:salt]
	CrackOutfileFormat_PLAIN              CrackOutfileFormat = 2 // 2 | plain
	CrackOutfileFormat_HEX_PLAIN          CrackOutfileFormat = 3 // 3 | hex_plain
	CrackOutfileFormat_CRACK_POS          CrackOutfileFormat = 4 // 4 | crack_pos
	CrackOutfileFormat_TIMESTAMP_ABSOLUTE CrackOutfileFormat = 5 // 5 | timestamp absolute
	CrackOutfileFormat_TIMESTAMP_RELATIVE CrackOutfileFormat = 6 // 6 | timestamp relative
)

// Enum value maps for CrackOutfileFormat.
var (
	CrackOutfileFormat_name = map[int32]string{
		0: "INVALID_FORMAT",
		1: "HASH_SALT",
		2: "PLAIN",
		3: "HEX_PLAIN",
		4: "CRACK_POS",
		5: "TIMESTAMP_ABSOLUTE",
		6: "TIMESTAMP_RELATIVE",
	}
	CrackOutfileFormat_value = map[string]int32{
		"INVALID_FORMAT":     0,
		"HASH_SALT":          1,
		"PLAIN":              2,
		"HEX_PLAIN":          3,
		"CRACK_POS":          4,
		"TIMESTAMP_ABSOLUTE": 5,
		"TIMESTAMP_RELATIVE": 6,
	}
)

func (x CrackOutfileFormat) Enum() *CrackOutfileFormat {
	p := new(CrackOutfileFormat)
	*p = x
	return p
}

func (x CrackOutfileFormat) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CrackOutfileFormat) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[10].Descriptor()
}

func (CrackOutfileFormat) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[10]
}

func (x CrackOutfileFormat) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CrackOutfileFormat.Descriptor instead.
func (CrackOutfileFormat) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{10}
}

type CrackWorkloadProfile int32

const (
	CrackWorkloadProfile_INVALID_WORKLOAD_PROFILE CrackWorkloadProfile = 0
	CrackWorkloadProfile_LOW                      CrackWorkloadProfile = 1
	CrackWorkloadProfile_DEFAULT                  CrackWorkloadProfile = 2
	CrackWorkloadProfile_HIGH                     CrackWorkloadProfile = 3
	CrackWorkloadProfile_NIGHTMARE                CrackWorkloadProfile = 4
)

// Enum value maps for CrackWorkloadProfile.
var (
	CrackWorkloadProfile_name = map[int32]string{
		0: "INVALID_WORKLOAD_PROFILE",
		1: "LOW",
		2: "DEFAULT",
		3: "HIGH",
		4: "NIGHTMARE",
	}
	CrackWorkloadProfile_value = map[string]int32{
		"INVALID_WORKLOAD_PROFILE": 0,
		"LOW":                      1,
		"DEFAULT":                  2,
		"HIGH":                     3,
		"NIGHTMARE":                4,
	}
)

func (x CrackWorkloadProfile) Enum() *CrackWorkloadProfile {
	p := new(CrackWorkloadProfile)
	*p = x
	return p
}

func (x CrackWorkloadProfile) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CrackWorkloadProfile) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[11].Descriptor()
}

func (CrackWorkloadProfile) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[11]
}

func (x CrackWorkloadProfile) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CrackWorkloadProfile.Descriptor instead.
func (CrackWorkloadProfile) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{11}
}

type CrackFileType int32

const (
	CrackFileType_INVALID_TYPE   CrackFileType = 0
	CrackFileType_WORDLIST       CrackFileType = 1
	CrackFileType_RULES          CrackFileType = 2
	CrackFileType_MARKOV_HCSTAT2 CrackFileType = 3
)

// Enum value maps for CrackFileType.
var (
	CrackFileType_name = map[int32]string{
		0: "INVALID_TYPE",
		1: "WORDLIST",
		2: "RULES",
		3: "MARKOV_HCSTAT2",
	}
	CrackFileType_value = map[string]int32{
		"INVALID_TYPE":   0,
		"WORDLIST":       1,
		"RULES":          2,
		"MARKOV_HCSTAT2": 3,
	}
)

func (x CrackFileType) Enum() *CrackFileType {
	p := new(CrackFileType)
	*p = x
	return p
}

func (x CrackFileType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CrackFileType) Descriptor() protoreflect.EnumDescriptor {
	return file_clientpb_client_proto_enumTypes[12].Descriptor()
}

func (CrackFileType) Type() protoreflect.EnumType {
	return &file_clientpb_client_proto_enumTypes[12]
}

func (x CrackFileType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CrackFileType.Descriptor instead.
func (CrackFileType) EnumDescriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{12}
}

type Version struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Major         int32                  `protobuf:"varint,1,opt,name=Major,proto3" json:"Major,omitempty"`
	Minor         int32                  `protobuf:"varint,2,opt,name=Minor,proto3" json:"Minor,omitempty"`
	Patch         int32                  `protobuf:"varint,3,opt,name=Patch,proto3" json:"Patch,omitempty"`
	Commit        string                 `protobuf:"bytes,4,opt,name=Commit,proto3" json:"Commit,omitempty"`
	Dirty         bool                   `protobuf:"varint,5,opt,name=Dirty,proto3" json:"Dirty,omitempty"`
	CompiledAt    int64                  `protobuf:"varint,6,opt,name=CompiledAt,proto3" json:"CompiledAt,omitempty"`
	OS            string                 `protobuf:"bytes,7,opt,name=OS,proto3" json:"OS,omitempty"`
	Arch          string                 `protobuf:"bytes,8,opt,name=Arch,proto3" json:"Arch,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Version) Reset() {
	*x = Version{}
	mi := &file_clientpb_client_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Version) ProtoMessage() {}

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

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

func (x *Version) GetMajor() int32 {
	if x != nil {
		return x.Major
	}
	return 0
}

func (x *Version) GetMinor() int32 {
	if x != nil {
		return x.Minor
	}
	return 0
}

func (x *Version) GetPatch() int32 {
	if x != nil {
		return x.Patch
	}
	return 0
}

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

func (x *Version) GetDirty() bool {
	if x != nil {
		return x.Dirty
	}
	return false
}

func (x *Version) GetCompiledAt() int64 {
	if x != nil {
		return x.CompiledAt
	}
	return 0
}

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

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

// [ Client Logs ] ----------------------------------------
type ClientLogData struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Stream        string                 `protobuf:"bytes,1,opt,name=Stream,proto3" json:"Stream,omitempty"`
	Data          []byte                 `protobuf:"bytes,2,opt,name=Data,proto3" json:"Data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ClientLogData) Reset() {
	*x = ClientLogData{}
	mi := &file_clientpb_client_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ClientLogData) ProtoMessage() {}

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

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

func (x *ClientLogData) GetStream() string {
	if x != nil {
		return x.Stream
	}
	return ""
}

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

type Session struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	ID                string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name              string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	Hostname          string                 `protobuf:"bytes,3,opt,name=Hostname,proto3" json:"Hostname,omitempty"`
	UUID              string                 `protobuf:"bytes,4,opt,name=UUID,proto3" json:"UUID,omitempty"`
	Username          string                 `protobuf:"bytes,5,opt,name=Username,proto3" json:"Username,omitempty"`
	UID               string                 `protobuf:"bytes,6,opt,name=UID,proto3" json:"UID,omitempty"`
	GID               string                 `protobuf:"bytes,7,opt,name=GID,proto3" json:"GID,omitempty"`
	OS                string                 `protobuf:"bytes,8,opt,name=OS,proto3" json:"OS,omitempty"`
	Arch              string                 `protobuf:"bytes,9,opt,name=Arch,proto3" json:"Arch,omitempty"`
	Transport         string                 `protobuf:"bytes,10,opt,name=Transport,proto3" json:"Transport,omitempty"`
	RemoteAddress     string                 `protobuf:"bytes,11,opt,name=RemoteAddress,proto3" json:"RemoteAddress,omitempty"`
	PID               int32                  `protobuf:"varint,12,opt,name=PID,proto3" json:"PID,omitempty"`
	Filename          string                 `protobuf:"bytes,13,opt,name=Filename,proto3" json:"Filename,omitempty"` // Argv[0]
	LastCheckin       int64                  `protobuf:"varint,14,opt,name=LastCheckin,proto3" json:"LastCheckin,omitempty"`
	ActiveC2          string                 `protobuf:"bytes,15,opt,name=ActiveC2,proto3" json:"ActiveC2,omitempty"`
	Version           string                 `protobuf:"bytes,16,opt,name=Version,proto3" json:"Version,omitempty"`
	Evasion           bool                   `protobuf:"varint,17,opt,name=Evasion,proto3" json:"Evasion,omitempty"`
	IsDead            bool                   `protobuf:"varint,18,opt,name=IsDead,proto3" json:"IsDead,omitempty"`
	ReconnectInterval int64                  `protobuf:"varint,19,opt,name=ReconnectInterval,proto3" json:"ReconnectInterval,omitempty"`
	ProxyURL          string                 `protobuf:"bytes,20,opt,name=ProxyURL,proto3" json:"ProxyURL,omitempty"`
	Burned            bool                   `protobuf:"varint,22,opt,name=Burned,proto3" json:"Burned,omitempty"`
	Extensions        []string               `protobuf:"bytes,23,rep,name=Extensions,proto3" json:"Extensions,omitempty"`
	// string ConfigID = 24;
	PeerID        int64  `protobuf:"varint,25,opt,name=PeerID,proto3" json:"PeerID,omitempty"`
	Locale        string `protobuf:"bytes,26,opt,name=Locale,proto3" json:"Locale,omitempty"`
	FirstContact  int64  `protobuf:"varint,27,opt,name=FirstContact,proto3" json:"FirstContact,omitempty"`
	Integrity     string `protobuf:"bytes,28,opt,name=Integrity,proto3" json:"Integrity,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Session) Reset() {
	*x = Session{}
	mi := &file_clientpb_client_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Session) ProtoMessage() {}

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

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

func (x *Session) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

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

func (x *Session) GetUUID() string {
	if x != nil {
		return x.UUID
	}
	return ""
}

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

func (x *Session) GetUID() string {
	if x != nil {
		return x.UID
	}
	return ""
}

func (x *Session) GetGID() string {
	if x != nil {
		return x.GID
	}
	return ""
}

func (x *Session) GetOS() string {
	if x != nil {
		return x.OS
	}
	return ""
}

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

func (x *Session) GetTransport() string {
	if x != nil {
		return x.Transport
	}
	return ""
}

func (x *Session) GetRemoteAddress() string {
	if x != nil {
		return x.RemoteAddress
	}
	return ""
}

func (x *Session) GetPID() int32 {
	if x != nil {
		return x.PID
	}
	return 0
}

func (x *Session) GetFilename() string {
	if x != nil {
		return x.Filename
	}
	return ""
}

func (x *Session) GetLastCheckin() int64 {
	if x != nil {
		return x.LastCheckin
	}
	return 0
}

func (x *Session) GetActiveC2() string {
	if x != nil {
		return x.ActiveC2
	}
	return ""
}

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

func (x *Session) GetEvasion() bool {
	if x != nil {
		return x.Evasion
	}
	return false
}

func (x *Session) GetIsDead() bool {
	if x != nil {
		return x.IsDead
	}
	return false
}

func (x *Session) GetReconnectInterval() int64 {
	if x != nil {
		return x.ReconnectInterval
	}
	return 0
}

func (x *Session) GetProxyURL() string {
	if x != nil {
		return x.ProxyURL
	}
	return ""
}

func (x *Session) GetBurned() bool {
	if x != nil {
		return x.Burned
	}
	return false
}

func (x *Session) GetExtensions() []string {
	if x != nil {
		return x.Extensions
	}
	return nil
}

func (x *Session) GetPeerID() int64 {
	if x != nil {
		return x.PeerID
	}
	return 0
}

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

func (x *Session) GetFirstContact() int64 {
	if x != nil {
		return x.FirstContact
	}
	return 0
}

func (x *Session) GetIntegrity() string {
	if x != nil {
		return x.Integrity
	}
	return ""
}

type Beacon struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	ID                  string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name                string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	Hostname            string                 `protobuf:"bytes,3,opt,name=Hostname,proto3" json:"Hostname,omitempty"`
	UUID                string                 `protobuf:"bytes,4,opt,name=UUID,proto3" json:"UUID,omitempty"`
	Username            string                 `protobuf:"bytes,5,opt,name=Username,proto3" json:"Username,omitempty"`
	UID                 string                 `protobuf:"bytes,6,opt,name=UID,proto3" json:"UID,omitempty"`
	GID                 string                 `protobuf:"bytes,7,opt,name=GID,proto3" json:"GID,omitempty"`
	OS                  string                 `protobuf:"bytes,8,opt,name=OS,proto3" json:"OS,omitempty"`
	Arch                string                 `protobuf:"bytes,9,opt,name=Arch,proto3" json:"Arch,omitempty"`
	Transport           string                 `protobuf:"bytes,10,opt,name=Transport,proto3" json:"Transport,omitempty"`
	RemoteAddress       string                 `protobuf:"bytes,11,opt,name=RemoteAddress,proto3" json:"RemoteAddress,omitempty"`
	PID                 int32                  `protobuf:"varint,12,opt,name=PID,proto3" json:"PID,omitempty"`
	Filename            string                 `protobuf:"bytes,13,opt,name=Filename,proto3" json:"Filename,omitempty"` // Argv[0]
	LastCheckin         int64                  `protobuf:"varint,14,opt,name=LastCheckin,proto3" json:"LastCheckin,omitempty"`
	ActiveC2            string                 `protobuf:"bytes,15,opt,name=ActiveC2,proto3" json:"ActiveC2,omitempty"`
	Version             string                 `protobuf:"bytes,16,opt,name=Version,proto3" json:"Version,omitempty"`
	Evasion             bool                   `protobuf:"varint,17,opt,name=Evasion,proto3" json:"Evasion,omitempty"`
	IsDead              bool                   `protobuf:"varint,18,opt,name=IsDead,proto3" json:"IsDead,omitempty"`
	ProxyURL            string                 `protobuf:"bytes,20,opt,name=ProxyURL,proto3" json:"ProxyURL,omitempty"`
	ReconnectInterval   int64                  `protobuf:"varint,21,opt,name=ReconnectInterval,proto3" json:"ReconnectInterval,omitempty"`
	Interval            int64                  `protobuf:"varint,22,opt,name=Interval,proto3" json:"Interval,omitempty"`
	Jitter              int64                  `protobuf:"varint,23,opt,name=Jitter,proto3" json:"Jitter,omitempty"`
	Burned              bool                   `protobuf:"varint,24,opt,name=Burned,proto3" json:"Burned,omitempty"`
	NextCheckin         int64                  `protobuf:"varint,25,opt,name=NextCheckin,proto3" json:"NextCheckin,omitempty"`
	TasksCount          int64                  `protobuf:"varint,26,opt,name=TasksCount,proto3" json:"TasksCount,omitempty"`
	TasksCountCompleted int64                  `protobuf:"varint,27,opt,name=TasksCountCompleted,proto3" json:"TasksCountCompleted,omitempty"`
	Locale              string                 `protobuf:"bytes,28,opt,name=Locale,proto3" json:"Locale,omitempty"`
	FirstContact        int64                  `protobuf:"varint,29,opt,name=FirstContact,proto3" json:"FirstContact,omitempty"`
	Integrity           string                 `protobuf:"bytes,30,opt,name=Integrity,proto3" json:"Integrity,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *Beacon) Reset() {
	*x = Beacon{}
	mi := &file_clientpb_client_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Beacon) ProtoMessage() {}

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

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

func (x *Beacon) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

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

func (x *Beacon) GetUUID() string {
	if x != nil {
		return x.UUID
	}
	return ""
}

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

func (x *Beacon) GetUID() string {
	if x != nil {
		return x.UID
	}
	return ""
}

func (x *Beacon) GetGID() string {
	if x != nil {
		return x.GID
	}
	return ""
}

func (x *Beacon) GetOS() string {
	if x != nil {
		return x.OS
	}
	return ""
}

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

func (x *Beacon) GetTransport() string {
	if x != nil {
		return x.Transport
	}
	return ""
}

func (x *Beacon) GetRemoteAddress() string {
	if x != nil {
		return x.RemoteAddress
	}
	return ""
}

func (x *Beacon) GetPID() int32 {
	if x != nil {
		return x.PID
	}
	return 0
}

func (x *Beacon) GetFilename() string {
	if x != nil {
		return x.Filename
	}
	return ""
}

func (x *Beacon) GetLastCheckin() int64 {
	if x != nil {
		return x.LastCheckin
	}
	return 0
}

func (x *Beacon) GetActiveC2() string {
	if x != nil {
		return x.ActiveC2
	}
	return ""
}

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

func (x *Beacon) GetEvasion() bool {
	if x != nil {
		return x.Evasion
	}
	return false
}

func (x *Beacon) GetIsDead() bool {
	if x != nil {
		return x.IsDead
	}
	return false
}

func (x *Beacon) GetProxyURL() string {
	if x != nil {
		return x.ProxyURL
	}
	return ""
}

func (x *Beacon) GetReconnectInterval() int64 {
	if x != nil {
		return x.ReconnectInterval
	}
	return 0
}

func (x *Beacon) GetInterval() int64 {
	if x != nil {
		return x.Interval
	}
	return 0
}

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

func (x *Beacon) GetBurned() bool {
	if x != nil {
		return x.Burned
	}
	return false
}

func (x *Beacon) GetNextCheckin() int64 {
	if x != nil {
		return x.NextCheckin
	}
	return 0
}

func (x *Beacon) GetTasksCount() int64 {
	if x != nil {
		return x.TasksCount
	}
	return 0
}

func (x *Beacon) GetTasksCountCompleted() int64 {
	if x != nil {
		return x.TasksCountCompleted
	}
	return 0
}

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

func (x *Beacon) GetFirstContact() int64 {
	if x != nil {
		return x.FirstContact
	}
	return 0
}

func (x *Beacon) GetIntegrity() string {
	if x != nil {
		return x.Integrity
	}
	return ""
}

type Beacons struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Beacons       []*Beacon              `protobuf:"bytes,2,rep,name=Beacons,proto3" json:"Beacons,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Beacons) Reset() {
	*x = Beacons{}
	mi := &file_clientpb_client_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Beacons) ProtoMessage() {}

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

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

func (x *Beacons) GetBeacons() []*Beacon {
	if x != nil {
		return x.Beacons
	}
	return nil
}

type BeaconTask struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	BeaconID      string                 `protobuf:"bytes,2,opt,name=BeaconID,proto3" json:"BeaconID,omitempty"`
	CreatedAt     int64                  `protobuf:"varint,3,opt,name=CreatedAt,proto3" json:"CreatedAt,omitempty"`
	State         string                 `protobuf:"bytes,4,opt,name=State,proto3" json:"State,omitempty"`
	SentAt        int64                  `protobuf:"varint,5,opt,name=SentAt,proto3" json:"SentAt,omitempty"`
	CompletedAt   int64                  `protobuf:"varint,6,opt,name=CompletedAt,proto3" json:"CompletedAt,omitempty"`
	Request       []byte                 `protobuf:"bytes,7,opt,name=Request,proto3" json:"Request,omitempty"`
	Response      []byte                 `protobuf:"bytes,8,opt,name=Response,proto3" json:"Response,omitempty"`
	Description   string                 `protobuf:"bytes,9,opt,name=Description,proto3" json:"Description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BeaconTask) Reset() {
	*x = BeaconTask{}
	mi := &file_clientpb_client_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BeaconTask) ProtoMessage() {}

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

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

func (x *BeaconTask) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *BeaconTask) GetBeaconID() string {
	if x != nil {
		return x.BeaconID
	}
	return ""
}

func (x *BeaconTask) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *BeaconTask) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

func (x *BeaconTask) GetSentAt() int64 {
	if x != nil {
		return x.SentAt
	}
	return 0
}

func (x *BeaconTask) GetCompletedAt() int64 {
	if x != nil {
		return x.CompletedAt
	}
	return 0
}

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

func (x *BeaconTask) GetResponse() []byte {
	if x != nil {
		return x.Response
	}
	return nil
}

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

type BeaconTasks struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BeaconID      string                 `protobuf:"bytes,1,opt,name=BeaconID,proto3" json:"BeaconID,omitempty"`
	Tasks         []*BeaconTask          `protobuf:"bytes,2,rep,name=Tasks,proto3" json:"Tasks,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BeaconTasks) Reset() {
	*x = BeaconTasks{}
	mi := &file_clientpb_client_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BeaconTasks) ProtoMessage() {}

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

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

func (x *BeaconTasks) GetBeaconID() string {
	if x != nil {
		return x.BeaconID
	}
	return ""
}

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

type BeaconIntegrity struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BeaconID      string                 `protobuf:"bytes,1,opt,name=BeaconID,proto3" json:"BeaconID,omitempty"`
	Integrity     string                 `protobuf:"bytes,2,opt,name=Integrity,proto3" json:"Integrity,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BeaconIntegrity) Reset() {
	*x = BeaconIntegrity{}
	mi := &file_clientpb_client_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BeaconIntegrity) ProtoMessage() {}

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

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

func (x *BeaconIntegrity) GetBeaconID() string {
	if x != nil {
		return x.BeaconID
	}
	return ""
}

func (x *BeaconIntegrity) GetIntegrity() string {
	if x != nil {
		return x.Integrity
	}
	return ""
}

type ImplantC2 struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Priority      uint32                 `protobuf:"varint,2,opt,name=Priority,proto3" json:"Priority,omitempty"`
	URL           string                 `protobuf:"bytes,3,opt,name=URL,proto3" json:"URL,omitempty"`
	Options       string                 `protobuf:"bytes,4,opt,name=Options,proto3" json:"Options,omitempty"` // Protocol specific options
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ImplantC2) Reset() {
	*x = ImplantC2{}
	mi := &file_clientpb_client_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImplantC2) ProtoMessage() {}

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

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

func (x *ImplantC2) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *ImplantC2) GetPriority() uint32 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *ImplantC2) GetURL() string {
	if x != nil {
		return x.URL
	}
	return ""
}

func (x *ImplantC2) GetOptions() string {
	if x != nil {
		return x.Options
	}
	return ""
}

type ImplantConfig struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	ID                  string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	ImplantBuilds       []*ImplantBuild        `protobuf:"bytes,2,rep,name=ImplantBuilds,proto3" json:"ImplantBuilds,omitempty"`
	ImplantProfileID    string                 `protobuf:"bytes,3,opt,name=ImplantProfileID,proto3" json:"ImplantProfileID,omitempty"`
	IsBeacon            bool                   `protobuf:"varint,4,opt,name=IsBeacon,proto3" json:"IsBeacon,omitempty"`
	BeaconInterval      int64                  `protobuf:"varint,5,opt,name=BeaconInterval,proto3" json:"BeaconInterval,omitempty"`
	BeaconJitter        int64                  `protobuf:"varint,6,opt,name=BeaconJitter,proto3" json:"BeaconJitter,omitempty"`
	GOOS                string                 `protobuf:"bytes,7,opt,name=GOOS,proto3" json:"GOOS,omitempty"`
	GOARCH              string                 `protobuf:"bytes,8,opt,name=GOARCH,proto3" json:"GOARCH,omitempty"`
	Debug               bool                   `protobuf:"varint,10,opt,name=Debug,proto3" json:"Debug,omitempty"`
	Evasion             bool                   `protobuf:"varint,11,opt,name=Evasion,proto3" json:"Evasion,omitempty"`
	ObfuscateSymbols    bool                   `protobuf:"varint,12,opt,name=ObfuscateSymbols,proto3" json:"ObfuscateSymbols,omitempty"`
	TemplateName        string                 `protobuf:"bytes,13,opt,name=TemplateName,proto3" json:"TemplateName,omitempty"`
	SGNEnabled          bool                   `protobuf:"varint,14,opt,name=SGNEnabled,proto3" json:"SGNEnabled,omitempty"`
	IncludeMTLS         bool                   `protobuf:"varint,53,opt,name=IncludeMTLS,proto3" json:"IncludeMTLS,omitempty"`
	IncludeHTTP         bool                   `protobuf:"varint,16,opt,name=IncludeHTTP,proto3" json:"IncludeHTTP,omitempty"`
	IncludeWG           bool                   `protobuf:"varint,17,opt,name=IncludeWG,proto3" json:"IncludeWG,omitempty"`
	IncludeDNS          bool                   `protobuf:"varint,18,opt,name=IncludeDNS,proto3" json:"IncludeDNS,omitempty"`
	IncludeNamePipe     bool                   `protobuf:"varint,19,opt,name=IncludeNamePipe,proto3" json:"IncludeNamePipe,omitempty"`
	IncludeTCP          bool                   `protobuf:"varint,20,opt,name=IncludeTCP,proto3" json:"IncludeTCP,omitempty"`
	WGPeerTunIP         string                 `protobuf:"bytes,32,opt,name=WGPeerTunIP,proto3" json:"WGPeerTunIP,omitempty"`
	WGKeyExchangePort   uint32                 `protobuf:"varint,33,opt,name=WGKeyExchangePort,proto3" json:"WGKeyExchangePort,omitempty"`
	WGTcpCommsPort      uint32                 `protobuf:"varint,34,opt,name=WGTcpCommsPort,proto3" json:"WGTcpCommsPort,omitempty"`
	ReconnectInterval   int64                  `protobuf:"varint,40,opt,name=ReconnectInterval,proto3" json:"ReconnectInterval,omitempty"`
	MaxConnectionErrors uint32                 `protobuf:"varint,41,opt,name=MaxConnectionErrors,proto3" json:"MaxConnectionErrors,omitempty"`
	PollTimeout         int64                  `protobuf:"varint,42,opt,name=PollTimeout,proto3" json:"PollTimeout,omitempty"`
	// c2
	C2                     []*ImplantC2     `protobuf:"bytes,50,rep,name=C2,proto3" json:"C2,omitempty"`
	CanaryDomains          []string         `protobuf:"bytes,51,rep,name=CanaryDomains,proto3" json:"CanaryDomains,omitempty"`
	ConnectionStrategy     string           `protobuf:"bytes,52,opt,name=ConnectionStrategy,proto3" json:"ConnectionStrategy,omitempty"`
	LimitDomainJoined      bool             `protobuf:"varint,60,opt,name=LimitDomainJoined,proto3" json:"LimitDomainJoined,omitempty"`
	LimitDatetime          string           `protobuf:"bytes,61,opt,name=LimitDatetime,proto3" json:"LimitDatetime,omitempty"`
	LimitHostname          string           `protobuf:"bytes,62,opt,name=LimitHostname,proto3" json:"LimitHostname,omitempty"`
	LimitUsername          string           `protobuf:"bytes,63,opt,name=LimitUsername,proto3" json:"LimitUsername,omitempty"`
	LimitFileExists        string           `protobuf:"bytes,64,opt,name=LimitFileExists,proto3" json:"LimitFileExists,omitempty"`
	LimitLocale            string           `protobuf:"bytes,65,opt,name=LimitLocale,proto3" json:"LimitLocale,omitempty"`
	Format                 OutputFormat     `protobuf:"varint,100,opt,name=Format,proto3,enum=clientpb.OutputFormat" json:"Format,omitempty"`
	IsSharedLib            bool             `protobuf:"varint,101,opt,name=IsSharedLib,proto3" json:"IsSharedLib,omitempty"`
	IsService              bool             `protobuf:"varint,103,opt,name=IsService,proto3" json:"IsService,omitempty"`
	IsShellcode            bool             `protobuf:"varint,104,opt,name=IsShellcode,proto3" json:"IsShellcode,omitempty"`
	RunAtLoad              bool             `protobuf:"varint,105,opt,name=RunAtLoad,proto3" json:"RunAtLoad,omitempty"`
	DebugFile              string           `protobuf:"bytes,106,opt,name=DebugFile,proto3" json:"DebugFile,omitempty"`
	Exports                []string         `protobuf:"bytes,107,rep,name=exports,proto3" json:"exports,omitempty"`
	HTTPC2ConfigName       string           `protobuf:"bytes,150,opt,name=HTTPC2ConfigName,proto3" json:"HTTPC2ConfigName,omitempty"`
	NetGoEnabled           bool             `protobuf:"varint,151,opt,name=NetGoEnabled,proto3" json:"NetGoEnabled,omitempty"`
	TrafficEncodersEnabled bool             `protobuf:"varint,152,opt,name=TrafficEncodersEnabled,proto3" json:"TrafficEncodersEnabled,omitempty"`
	TrafficEncoders        []string         `protobuf:"bytes,153,rep,name=TrafficEncoders,proto3" json:"TrafficEncoders,omitempty"`
	Extension              string           `protobuf:"bytes,154,opt,name=Extension,proto3" json:"Extension,omitempty"`
	Assets                 []*commonpb.File `protobuf:"bytes,200,rep,name=Assets,proto3" json:"Assets,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

func (x *ImplantConfig) Reset() {
	*x = ImplantConfig{}
	mi := &file_clientpb_client_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImplantConfig) ProtoMessage() {}

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

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

func (x *ImplantConfig) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *ImplantConfig) GetImplantBuilds() []*ImplantBuild {
	if x != nil {
		return x.ImplantBuilds
	}
	return nil
}

func (x *ImplantConfig) GetImplantProfileID() string {
	if x != nil {
		return x.ImplantProfileID
	}
	return ""
}

func (x *ImplantConfig) GetIsBeacon() bool {
	if x != nil {
		return x.IsBeacon
	}
	return false
}

func (x *ImplantConfig) GetBeaconInterval() int64 {
	if x != nil {
		return x.BeaconInterval
	}
	return 0
}

func (x *ImplantConfig) GetBeaconJitter() int64 {
	if x != nil {
		return x.BeaconJitter
	}
	return 0
}

func (x *ImplantConfig) GetGOOS() string {
	if x != nil {
		return x.GOOS
	}
	return ""
}

func (x *ImplantConfig) GetGOARCH() string {
	if x != nil {
		return x.GOARCH
	}
	return ""
}

func (x *ImplantConfig) GetDebug() bool {
	if x != nil {
		return x.Debug
	}
	return false
}

func (x *ImplantConfig) GetEvasion() bool {
	if x != nil {
		return x.Evasion
	}
	return false
}

func (x *ImplantConfig) GetObfuscateSymbols() bool {
	if x != nil {
		return x.ObfuscateSymbols
	}
	return false
}

func (x *ImplantConfig) GetTemplateName() string {
	if x != nil {
		return x.TemplateName
	}
	return ""
}

func (x *ImplantConfig) GetSGNEnabled() bool {
	if x != nil {
		return x.SGNEnabled
	}
	return false
}

func (x *ImplantConfig) GetIncludeMTLS() bool {
	if x != nil {
		return x.IncludeMTLS
	}
	return false
}

func (x *ImplantConfig) GetIncludeHTTP() bool {
	if x != nil {
		return x.IncludeHTTP
	}
	return false
}

func (x *ImplantConfig) GetIncludeWG() bool {
	if x != nil {
		return x.IncludeWG
	}
	return false
}

func (x *ImplantConfig) GetIncludeDNS() bool {
	if x != nil {
		return x.IncludeDNS
	}
	return false
}

func (x *ImplantConfig) GetIncludeNamePipe() bool {
	if x != nil {
		return x.IncludeNamePipe
	}
	return false
}

func (x *ImplantConfig) GetIncludeTCP() bool {
	if x != nil {
		return x.IncludeTCP
	}
	return false
}

func (x *ImplantConfig) GetWGPeerTunIP() string {
	if x != nil {
		return x.WGPeerTunIP
	}
	return ""
}

func (x *ImplantConfig) GetWGKeyExchangePort() uint32 {
	if x != nil {
		return x.WGKeyExchangePort
	}
	return 0
}

func (x *ImplantConfig) GetWGTcpCommsPort() uint32 {
	if x != nil {
		return x.WGTcpCommsPort
	}
	return 0
}

func (x *ImplantConfig) GetReconnectInterval() int64 {
	if x != nil {
		return x.ReconnectInterval
	}
	return 0
}

func (x *ImplantConfig) GetMaxConnectionErrors() uint32 {
	if x != nil {
		return x.MaxConnectionErrors
	}
	return 0
}

func (x *ImplantConfig) GetPollTimeout() int64 {
	if x != nil {
		return x.PollTimeout
	}
	return 0
}

func (x *ImplantConfig) GetC2() []*ImplantC2 {
	if x != nil {
		return x.C2
	}
	return nil
}

func (x *ImplantConfig) GetCanaryDomains() []string {
	if x != nil {
		return x.CanaryDomains
	}
	return nil
}

func (x *ImplantConfig) GetConnectionStrategy() string {
	if x != nil {
		return x.ConnectionStrategy
	}
	return ""
}

func (x *ImplantConfig) GetLimitDomainJoined() bool {
	if x != nil {
		return x.LimitDomainJoined
	}
	return false
}

func (x *ImplantConfig) GetLimitDatetime() string {
	if x != nil {
		return x.LimitDatetime
	}
	return ""
}

func (x *ImplantConfig) GetLimitHostname() string {
	if x != nil {
		return x.LimitHostname
	}
	return ""
}

func (x *ImplantConfig) GetLimitUsername() string {
	if x != nil {
		return x.LimitUsername
	}
	return ""
}

func (x *ImplantConfig) GetLimitFileExists() string {
	if x != nil {
		return x.LimitFileExists
	}
	return ""
}

func (x *ImplantConfig) GetLimitLocale() string {
	if x != nil {
		return x.LimitLocale
	}
	return ""
}

func (x *ImplantConfig) GetFormat() OutputFormat {
	if x != nil {
		return x.Format
	}
	return OutputFormat_SHARED_LIB
}

func (x *ImplantConfig) GetIsSharedLib() bool {
	if x != nil {
		return x.IsSharedLib
	}
	return false
}

func (x *ImplantConfig) GetIsService() bool {
	if x != nil {
		return x.IsService
	}
	return false
}

func (x *ImplantConfig) GetIsShellcode() bool {
	if x != nil {
		return x.IsShellcode
	}
	return false
}

func (x *ImplantConfig) GetRunAtLoad() bool {
	if x != nil {
		return x.RunAtLoad
	}
	return false
}

func (x *ImplantConfig) GetDebugFile() string {
	if x != nil {
		return x.DebugFile
	}
	return ""
}

func (x *ImplantConfig) GetExports() []string {
	if x != nil {
		return x.Exports
	}
	return nil
}

func (x *ImplantConfig) GetHTTPC2ConfigName() string {
	if x != nil {
		return x.HTTPC2ConfigName
	}
	return ""
}

func (x *ImplantConfig) GetNetGoEnabled() bool {
	if x != nil {
		return x.NetGoEnabled
	}
	return false
}

func (x *ImplantConfig) GetTrafficEncodersEnabled() bool {
	if x != nil {
		return x.TrafficEncodersEnabled
	}
	return false
}

func (x *ImplantConfig) GetTrafficEncoders() []string {
	if x != nil {
		return x.TrafficEncoders
	}
	return nil
}

func (x *ImplantConfig) GetExtension() string {
	if x != nil {
		return x.Extension
	}
	return ""
}

func (x *ImplantConfig) GetAssets() []*commonpb.File {
	if x != nil {
		return x.Assets
	}
	return nil
}

type TrafficEncoder struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            uint64                 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Wasm          *commonpb.File         `protobuf:"bytes,2,opt,name=Wasm,proto3" json:"Wasm,omitempty"`
	SkipTests     bool                   `protobuf:"varint,8,opt,name=SkipTests,proto3" json:"SkipTests,omitempty"`
	TestID        string                 `protobuf:"bytes,9,opt,name=TestID,proto3" json:"TestID,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TrafficEncoder) Reset() {
	*x = TrafficEncoder{}
	mi := &file_clientpb_client_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TrafficEncoder) ProtoMessage() {}

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

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

func (x *TrafficEncoder) GetID() uint64 {
	if x != nil {
		return x.ID
	}
	return 0
}

func (x *TrafficEncoder) GetWasm() *commonpb.File {
	if x != nil {
		return x.Wasm
	}
	return nil
}

func (x *TrafficEncoder) GetSkipTests() bool {
	if x != nil {
		return x.SkipTests
	}
	return false
}

func (x *TrafficEncoder) GetTestID() string {
	if x != nil {
		return x.TestID
	}
	return ""
}

type TrafficEncoderMap struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// File Name -> TrafficEncoder
	Encoders      map[string]*TrafficEncoder `protobuf:"bytes,1,rep,name=Encoders,proto3" json:"Encoders,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TrafficEncoderMap) Reset() {
	*x = TrafficEncoderMap{}
	mi := &file_clientpb_client_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TrafficEncoderMap) ProtoMessage() {}

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

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

func (x *TrafficEncoderMap) GetEncoders() map[string]*TrafficEncoder {
	if x != nil {
		return x.Encoders
	}
	return nil
}

type TrafficEncoderTest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	Completed     bool                   `protobuf:"varint,2,opt,name=Completed,proto3" json:"Completed,omitempty"`
	Success       bool                   `protobuf:"varint,3,opt,name=Success,proto3" json:"Success,omitempty"`
	Duration      int64                  `protobuf:"varint,4,opt,name=Duration,proto3" json:"Duration,omitempty"`
	Err           string                 `protobuf:"bytes,9,opt,name=Err,proto3" json:"Err,omitempty"`
	Sample        []byte                 `protobuf:"bytes,10,opt,name=Sample,proto3" json:"Sample,omitempty"` // Only used on failed tests
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TrafficEncoderTest) Reset() {
	*x = TrafficEncoderTest{}
	mi := &file_clientpb_client_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TrafficEncoderTest) ProtoMessage() {}

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

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

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

func (x *TrafficEncoderTest) GetCompleted() bool {
	if x != nil {
		return x.Completed
	}
	return false
}

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

func (x *TrafficEncoderTest) GetDuration() int64 {
	if x != nil {
		return x.Duration
	}
	return 0
}

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

func (x *TrafficEncoderTest) GetSample() []byte {
	if x != nil {
		return x.Sample
	}
	return nil
}

type TrafficEncoderTests struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Encoder       *TrafficEncoder        `protobuf:"bytes,1,opt,name=Encoder,proto3" json:"Encoder,omitempty"`
	Tests         []*TrafficEncoderTest  `protobuf:"bytes,2,rep,name=Tests,proto3" json:"Tests,omitempty"`
	TotalDuration int64                  `protobuf:"varint,3,opt,name=TotalDuration,proto3" json:"TotalDuration,omitempty"`
	TotalTests    int32                  `protobuf:"varint,4,opt,name=TotalTests,proto3" json:"TotalTests,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TrafficEncoderTests) Reset() {
	*x = TrafficEncoderTests{}
	mi := &file_clientpb_client_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TrafficEncoderTests) ProtoMessage() {}

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

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

func (x *TrafficEncoderTests) GetEncoder() *TrafficEncoder {
	if x != nil {
		return x.Encoder
	}
	return nil
}

func (x *TrafficEncoderTests) GetTests() []*TrafficEncoderTest {
	if x != nil {
		return x.Tests
	}
	return nil
}

func (x *TrafficEncoderTests) GetTotalDuration() int64 {
	if x != nil {
		return x.TotalDuration
	}
	return 0
}

func (x *TrafficEncoderTests) GetTotalTests() int32 {
	if x != nil {
		return x.TotalTests
	}
	return 0
}

type ExternalImplantConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Config        *ImplantConfig         `protobuf:"bytes,1,opt,name=Config,proto3" json:"Config,omitempty"`
	Build         *ImplantBuild          `protobuf:"bytes,2,opt,name=Build,proto3" json:"Build,omitempty"`
	HTTPC2        *HTTPC2Config          `protobuf:"bytes,3,opt,name=HTTPC2,proto3" json:"HTTPC2,omitempty"`
	Encoders      map[string]uint64      `protobuf:"bytes,4,rep,name=encoders,proto3" json:"encoders,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExternalImplantConfig) Reset() {
	*x = ExternalImplantConfig{}
	mi := &file_clientpb_client_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExternalImplantConfig) ProtoMessage() {}

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

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

func (x *ExternalImplantConfig) GetConfig() *ImplantConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *ExternalImplantConfig) GetBuild() *ImplantBuild {
	if x != nil {
		return x.Build
	}
	return nil
}

func (x *ExternalImplantConfig) GetHTTPC2() *HTTPC2Config {
	if x != nil {
		return x.HTTPC2
	}
	return nil
}

func (x *ExternalImplantConfig) GetEncoders() map[string]uint64 {
	if x != nil {
		return x.Encoders
	}
	return nil
}

type ExternalImplantBinary struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Name           string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	ImplantBuildID string                 `protobuf:"bytes,2,opt,name=ImplantBuildID,proto3" json:"ImplantBuildID,omitempty"`
	File           *commonpb.File         `protobuf:"bytes,3,opt,name=File,proto3" json:"File,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *ExternalImplantBinary) Reset() {
	*x = ExternalImplantBinary{}
	mi := &file_clientpb_client_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExternalImplantBinary) ProtoMessage() {}

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

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

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

func (x *ExternalImplantBinary) GetImplantBuildID() string {
	if x != nil {
		return x.ImplantBuildID
	}
	return ""
}

func (x *ExternalImplantBinary) GetFile() *commonpb.File {
	if x != nil {
		return x.File
	}
	return nil
}

// Configs of previously built implants
type ImplantBuilds struct {
	state         protoimpl.MessageState    `protogen:"open.v1"`
	Configs       map[string]*ImplantConfig `protobuf:"bytes,1,rep,name=Configs,proto3" json:"Configs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	ResourceIDs   map[string]*ResourceID    `protobuf:"bytes,2,rep,name=ResourceIDs,proto3" json:"ResourceIDs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Staged        map[string]bool           `protobuf:"bytes,3,rep,name=staged,proto3" json:"staged,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ImplantBuilds) Reset() {
	*x = ImplantBuilds{}
	mi := &file_clientpb_client_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImplantBuilds) ProtoMessage() {}

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

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

func (x *ImplantBuilds) GetConfigs() map[string]*ImplantConfig {
	if x != nil {
		return x.Configs
	}
	return nil
}

func (x *ImplantBuilds) GetResourceIDs() map[string]*ResourceID {
	if x != nil {
		return x.ResourceIDs
	}
	return nil
}

func (x *ImplantBuilds) GetStaged() map[string]bool {
	if x != nil {
		return x.Staged
	}
	return nil
}

type ImplantStageReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Build         []string               `protobuf:"bytes,1,rep,name=Build,proto3" json:"Build,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ImplantStageReq) Reset() {
	*x = ImplantStageReq{}
	mi := &file_clientpb_client_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImplantStageReq) ProtoMessage() {}

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

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

func (x *ImplantStageReq) GetBuild() []string {
	if x != nil {
		return x.Build
	}
	return nil
}

type ImplantBuild struct {
	state                   protoimpl.MessageState `protogen:"open.v1"`
	ID                      string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name                    string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	MD5                     string                 `protobuf:"bytes,3,opt,name=MD5,proto3" json:"MD5,omitempty"`
	SHA1                    string                 `protobuf:"bytes,4,opt,name=SHA1,proto3" json:"SHA1,omitempty"`
	SHA256                  string                 `protobuf:"bytes,5,opt,name=SHA256,proto3" json:"SHA256,omitempty"`
	Burned                  bool                   `protobuf:"varint,6,opt,name=Burned,proto3" json:"Burned,omitempty"`
	ImplantID               uint64                 `protobuf:"varint,7,opt,name=ImplantID,proto3" json:"ImplantID,omitempty"`
	ImplantConfigID         string                 `protobuf:"bytes,8,opt,name=ImplantConfigID,proto3" json:"ImplantConfigID,omitempty"`
	AgeServerPublicKey      string                 `protobuf:"bytes,9,opt,name=AgeServerPublicKey,proto3" json:"AgeServerPublicKey,omitempty"`
	PeerPublicKey           string                 `protobuf:"bytes,10,opt,name=PeerPublicKey,proto3" json:"PeerPublicKey,omitempty"`
	PeerPrivateKey          string                 `protobuf:"bytes,11,opt,name=PeerPrivateKey,proto3" json:"PeerPrivateKey,omitempty"`
	PeerPublicKeySignature  string                 `protobuf:"bytes,12,opt,name=PeerPublicKeySignature,proto3" json:"PeerPublicKeySignature,omitempty"`
	MinisignServerPublicKey string                 `protobuf:"bytes,13,opt,name=MinisignServerPublicKey,proto3" json:"MinisignServerPublicKey,omitempty"`
	PeerPublicKeyDigest     string                 `protobuf:"bytes,14,opt,name=PeerPublicKeyDigest,proto3" json:"PeerPublicKeyDigest,omitempty"`
	WGImplantPrivKey        string                 `protobuf:"bytes,15,opt,name=WGImplantPrivKey,proto3" json:"WGImplantPrivKey,omitempty"`
	WGServerPubKey          string                 `protobuf:"bytes,16,opt,name=WGServerPubKey,proto3" json:"WGServerPubKey,omitempty"`
	MtlsCACert              string                 `protobuf:"bytes,17,opt,name=MtlsCACert,proto3" json:"MtlsCACert,omitempty"`
	MtlsCert                string                 `protobuf:"bytes,18,opt,name=MtlsCert,proto3" json:"MtlsCert,omitempty"`
	MtlsKey                 string                 `protobuf:"bytes,19,opt,name=MtlsKey,proto3" json:"MtlsKey,omitempty"`
	Stage                   bool                   `protobuf:"varint,20,opt,name=Stage,proto3" json:"Stage,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

func (x *ImplantBuild) Reset() {
	*x = ImplantBuild{}
	mi := &file_clientpb_client_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImplantBuild) ProtoMessage() {}

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

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

func (x *ImplantBuild) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *ImplantBuild) GetMD5() string {
	if x != nil {
		return x.MD5
	}
	return ""
}

func (x *ImplantBuild) GetSHA1() string {
	if x != nil {
		return x.SHA1
	}
	return ""
}

func (x *ImplantBuild) GetSHA256() string {
	if x != nil {
		return x.SHA256
	}
	return ""
}

func (x *ImplantBuild) GetBurned() bool {
	if x != nil {
		return x.Burned
	}
	return false
}

func (x *ImplantBuild) GetImplantID() uint64 {
	if x != nil {
		return x.ImplantID
	}
	return 0
}

func (x *ImplantBuild) GetImplantConfigID() string {
	if x != nil {
		return x.ImplantConfigID
	}
	return ""
}

func (x *ImplantBuild) GetAgeServerPublicKey() string {
	if x != nil {
		return x.AgeServerPublicKey
	}
	return ""
}

func (x *ImplantBuild) GetPeerPublicKey() string {
	if x != nil {
		return x.PeerPublicKey
	}
	return ""
}

func (x *ImplantBuild) GetPeerPrivateKey() string {
	if x != nil {
		return x.PeerPrivateKey
	}
	return ""
}

func (x *ImplantBuild) GetPeerPublicKeySignature() string {
	if x != nil {
		return x.PeerPublicKeySignature
	}
	return ""
}

func (x *ImplantBuild) GetMinisignServerPublicKey() string {
	if x != nil {
		return x.MinisignServerPublicKey
	}
	return ""
}

func (x *ImplantBuild) GetPeerPublicKeyDigest() string {
	if x != nil {
		return x.PeerPublicKeyDigest
	}
	return ""
}

func (x *ImplantBuild) GetWGImplantPrivKey() string {
	if x != nil {
		return x.WGImplantPrivKey
	}
	return ""
}

func (x *ImplantBuild) GetWGServerPubKey() string {
	if x != nil {
		return x.WGServerPubKey
	}
	return ""
}

func (x *ImplantBuild) GetMtlsCACert() string {
	if x != nil {
		return x.MtlsCACert
	}
	return ""
}

func (x *ImplantBuild) GetMtlsCert() string {
	if x != nil {
		return x.MtlsCert
	}
	return ""
}

func (x *ImplantBuild) GetMtlsKey() string {
	if x != nil {
		return x.MtlsKey
	}
	return ""
}

func (x *ImplantBuild) GetStage() bool {
	if x != nil {
		return x.Stage
	}
	return false
}

type CompilerTarget struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	GOOS          string                 `protobuf:"bytes,1,opt,name=GOOS,proto3" json:"GOOS,omitempty"`     // The server's OS
	GOARCH        string                 `protobuf:"bytes,2,opt,name=GOARCH,proto3" json:"GOARCH,omitempty"` // The server's Arch
	Format        OutputFormat           `protobuf:"varint,3,opt,name=Format,proto3,enum=clientpb.OutputFormat" json:"Format,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CompilerTarget) Reset() {
	*x = CompilerTarget{}
	mi := &file_clientpb_client_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CompilerTarget) ProtoMessage() {}

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

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

func (x *CompilerTarget) GetGOOS() string {
	if x != nil {
		return x.GOOS
	}
	return ""
}

func (x *CompilerTarget) GetGOARCH() string {
	if x != nil {
		return x.GOARCH
	}
	return ""
}

func (x *CompilerTarget) GetFormat() OutputFormat {
	if x != nil {
		return x.Format
	}
	return OutputFormat_SHARED_LIB
}

type CrossCompiler struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	TargetGOOS    string                 `protobuf:"bytes,1,opt,name=TargetGOOS,proto3" json:"TargetGOOS,omitempty"`     // The server's OS
	TargetGOARCH  string                 `protobuf:"bytes,2,opt,name=TargetGOARCH,proto3" json:"TargetGOARCH,omitempty"` // The server's Arch
	CCPath        string                 `protobuf:"bytes,3,opt,name=CCPath,proto3" json:"CCPath,omitempty"`
	CXXPath       string                 `protobuf:"bytes,4,opt,name=CXXPath,proto3" json:"CXXPath,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CrossCompiler) Reset() {
	*x = CrossCompiler{}
	mi := &file_clientpb_client_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrossCompiler) ProtoMessage() {}

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

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

func (x *CrossCompiler) GetTargetGOOS() string {
	if x != nil {
		return x.TargetGOOS
	}
	return ""
}

func (x *CrossCompiler) GetTargetGOARCH() string {
	if x != nil {
		return x.TargetGOARCH
	}
	return ""
}

func (x *CrossCompiler) GetCCPath() string {
	if x != nil {
		return x.CCPath
	}
	return ""
}

func (x *CrossCompiler) GetCXXPath() string {
	if x != nil {
		return x.CXXPath
	}
	return ""
}

type Compiler struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	GOOS               string                 `protobuf:"bytes,1,opt,name=GOOS,proto3" json:"GOOS,omitempty"`     // The server's OS
	GOARCH             string                 `protobuf:"bytes,2,opt,name=GOARCH,proto3" json:"GOARCH,omitempty"` // The server's Arch
	Targets            []*CompilerTarget      `protobuf:"bytes,3,rep,name=Targets,proto3" json:"Targets,omitempty"`
	CrossCompilers     []*CrossCompiler       `protobuf:"bytes,4,rep,name=CrossCompilers,proto3" json:"CrossCompilers,omitempty"`
	UnsupportedTargets []*CompilerTarget      `protobuf:"bytes,5,rep,name=UnsupportedTargets,proto3" json:"UnsupportedTargets,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *Compiler) Reset() {
	*x = Compiler{}
	mi := &file_clientpb_client_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Compiler) ProtoMessage() {}

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

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

func (x *Compiler) GetGOOS() string {
	if x != nil {
		return x.GOOS
	}
	return ""
}

func (x *Compiler) GetGOARCH() string {
	if x != nil {
		return x.GOARCH
	}
	return ""
}

func (x *Compiler) GetTargets() []*CompilerTarget {
	if x != nil {
		return x.Targets
	}
	return nil
}

func (x *Compiler) GetCrossCompilers() []*CrossCompiler {
	if x != nil {
		return x.CrossCompilers
	}
	return nil
}

func (x *Compiler) GetUnsupportedTargets() []*CompilerTarget {
	if x != nil {
		return x.UnsupportedTargets
	}
	return nil
}

type DeleteReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteReq) Reset() {
	*x = DeleteReq{}
	mi := &file_clientpb_client_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeleteReq) ProtoMessage() {}

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

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

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

// DNSCanary - Single canary and metadata
type DNSCanary struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	ID             string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	ImplantName    string                 `protobuf:"bytes,2,opt,name=ImplantName,proto3" json:"ImplantName,omitempty"`
	Domain         string                 `protobuf:"bytes,3,opt,name=Domain,proto3" json:"Domain,omitempty"`
	Triggered      bool                   `protobuf:"varint,4,opt,name=Triggered,proto3" json:"Triggered,omitempty"`
	FirstTriggered string                 `protobuf:"bytes,5,opt,name=FirstTriggered,proto3" json:"FirstTriggered,omitempty"`
	LatestTrigger  string                 `protobuf:"bytes,6,opt,name=LatestTrigger,proto3" json:"LatestTrigger,omitempty"`
	Count          uint32                 `protobuf:"varint,7,opt,name=Count,proto3" json:"Count,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *DNSCanary) Reset() {
	*x = DNSCanary{}
	mi := &file_clientpb_client_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DNSCanary) ProtoMessage() {}

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

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

func (x *DNSCanary) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *DNSCanary) GetImplantName() string {
	if x != nil {
		return x.ImplantName
	}
	return ""
}

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

func (x *DNSCanary) GetTriggered() bool {
	if x != nil {
		return x.Triggered
	}
	return false
}

func (x *DNSCanary) GetFirstTriggered() string {
	if x != nil {
		return x.FirstTriggered
	}
	return ""
}

func (x *DNSCanary) GetLatestTrigger() string {
	if x != nil {
		return x.LatestTrigger
	}
	return ""
}

func (x *DNSCanary) GetCount() uint32 {
	if x != nil {
		return x.Count
	}
	return 0
}

type Canaries struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Canaries      []*DNSCanary           `protobuf:"bytes,1,rep,name=Canaries,proto3" json:"Canaries,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Canaries) Reset() {
	*x = Canaries{}
	mi := &file_clientpb_client_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Canaries) ProtoMessage() {}

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

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

func (x *Canaries) GetCanaries() []*DNSCanary {
	if x != nil {
		return x.Canaries
	}
	return nil
}

// UniqueWGIP - Unique wireguard IP
type UniqueWGIP struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	IP            string                 `protobuf:"bytes,1,opt,name=IP,proto3" json:"IP,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UniqueWGIP) Reset() {
	*x = UniqueWGIP{}
	mi := &file_clientpb_client_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UniqueWGIP) ProtoMessage() {}

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

// Deprecated: Use UniqueWGIP.ProtoReflect.Descriptor instead.
func (*UniqueWGIP) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{25}
}

func (x *UniqueWGIP) GetIP() string {
	if x != nil {
		return x.IP
	}
	return ""
}

type ImplantProfile struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	Config        *ImplantConfig         `protobuf:"bytes,3,opt,name=Config,proto3" json:"Config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ImplantProfile) Reset() {
	*x = ImplantProfile{}
	mi := &file_clientpb_client_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImplantProfile) ProtoMessage() {}

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

// Deprecated: Use ImplantProfile.ProtoReflect.Descriptor instead.
func (*ImplantProfile) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{26}
}

func (x *ImplantProfile) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *ImplantProfile) GetConfig() *ImplantConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

type ImplantProfiles struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Profiles      []*ImplantProfile      `protobuf:"bytes,1,rep,name=Profiles,proto3" json:"Profiles,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ImplantProfiles) Reset() {
	*x = ImplantProfiles{}
	mi := &file_clientpb_client_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImplantProfiles) ProtoMessage() {}

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

// Deprecated: Use ImplantProfiles.ProtoReflect.Descriptor instead.
func (*ImplantProfiles) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{27}
}

func (x *ImplantProfiles) GetProfiles() []*ImplantProfile {
	if x != nil {
		return x.Profiles
	}
	return nil
}

type RegenerateReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ImplantName   string                 `protobuf:"bytes,1,opt,name=ImplantName,proto3" json:"ImplantName,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RegenerateReq) Reset() {
	*x = RegenerateReq{}
	mi := &file_clientpb_client_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RegenerateReq) ProtoMessage() {}

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

// Deprecated: Use RegenerateReq.ProtoReflect.Descriptor instead.
func (*RegenerateReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{28}
}

func (x *RegenerateReq) GetImplantName() string {
	if x != nil {
		return x.ImplantName
	}
	return ""
}

type Job struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            uint32                 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	Description   string                 `protobuf:"bytes,3,opt,name=Description,proto3" json:"Description,omitempty"`
	Protocol      string                 `protobuf:"bytes,4,opt,name=Protocol,proto3" json:"Protocol,omitempty"`
	Port          uint32                 `protobuf:"varint,5,opt,name=Port,proto3" json:"Port,omitempty"`
	Domains       []string               `protobuf:"bytes,6,rep,name=Domains,proto3" json:"Domains,omitempty"`
	ProfileName   string                 `protobuf:"bytes,7,opt,name=ProfileName,proto3" json:"ProfileName,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Job) Reset() {
	*x = Job{}
	mi := &file_clientpb_client_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Job) ProtoMessage() {}

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

// Deprecated: Use Job.ProtoReflect.Descriptor instead.
func (*Job) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{29}
}

func (x *Job) GetID() uint32 {
	if x != nil {
		return x.ID
	}
	return 0
}

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

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

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

func (x *Job) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *Job) GetDomains() []string {
	if x != nil {
		return x.Domains
	}
	return nil
}

func (x *Job) GetProfileName() string {
	if x != nil {
		return x.ProfileName
	}
	return ""
}

type Jobs struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Active        []*Job                 `protobuf:"bytes,1,rep,name=Active,proto3" json:"Active,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Jobs) Reset() {
	*x = Jobs{}
	mi := &file_clientpb_client_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Jobs) ProtoMessage() {}

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

// Deprecated: Use Jobs.ProtoReflect.Descriptor instead.
func (*Jobs) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{30}
}

func (x *Jobs) GetActive() []*Job {
	if x != nil {
		return x.Active
	}
	return nil
}

type KillJobReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            uint32                 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KillJobReq) Reset() {
	*x = KillJobReq{}
	mi := &file_clientpb_client_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KillJobReq) ProtoMessage() {}

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

// Deprecated: Use KillJobReq.ProtoReflect.Descriptor instead.
func (*KillJobReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{31}
}

func (x *KillJobReq) GetID() uint32 {
	if x != nil {
		return x.ID
	}
	return 0
}

type RestartJobReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	JobIDs        []uint32               `protobuf:"varint,1,rep,packed,name=JobIDs,proto3" json:"JobIDs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RestartJobReq) Reset() {
	*x = RestartJobReq{}
	mi := &file_clientpb_client_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RestartJobReq) ProtoMessage() {}

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

// Deprecated: Use RestartJobReq.ProtoReflect.Descriptor instead.
func (*RestartJobReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{32}
}

func (x *RestartJobReq) GetJobIDs() []uint32 {
	if x != nil {
		return x.JobIDs
	}
	return nil
}

type KillJob struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            uint32                 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Success       bool                   `protobuf:"varint,2,opt,name=Success,proto3" json:"Success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *KillJob) Reset() {
	*x = KillJob{}
	mi := &file_clientpb_client_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*KillJob) ProtoMessage() {}

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

// Deprecated: Use KillJob.ProtoReflect.Descriptor instead.
func (*KillJob) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{33}
}

func (x *KillJob) GetID() uint32 {
	if x != nil {
		return x.ID
	}
	return 0
}

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

// [ Listeners ] ----------------------------------------
type ListenerJob struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	ID            string                  `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Type          string                  `protobuf:"bytes,2,opt,name=Type,proto3" json:"Type,omitempty"`
	JobID         uint32                  `protobuf:"varint,3,opt,name=JobID,proto3" json:"JobID,omitempty"`
	MTLSConf      *MTLSListenerReq        `protobuf:"bytes,4,opt,name=MTLSConf,proto3" json:"MTLSConf,omitempty"`
	WGConf        *WGListenerReq          `protobuf:"bytes,5,opt,name=WGConf,proto3" json:"WGConf,omitempty"`
	DNSConf       *DNSListenerReq         `protobuf:"bytes,6,opt,name=DNSConf,proto3" json:"DNSConf,omitempty"`
	HTTPConf      *HTTPListenerReq        `protobuf:"bytes,7,opt,name=HTTPConf,proto3" json:"HTTPConf,omitempty"`
	MultiConf     *MultiplayerListenerReq `protobuf:"bytes,8,opt,name=MultiConf,proto3" json:"MultiConf,omitempty"`
	TCPConf       *StagerListenerReq      `protobuf:"bytes,9,opt,name=TCPConf,proto3" json:"TCPConf,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListenerJob) Reset() {
	*x = ListenerJob{}
	mi := &file_clientpb_client_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListenerJob) ProtoMessage() {}

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

// Deprecated: Use ListenerJob.ProtoReflect.Descriptor instead.
func (*ListenerJob) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{34}
}

func (x *ListenerJob) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *ListenerJob) GetJobID() uint32 {
	if x != nil {
		return x.JobID
	}
	return 0
}

func (x *ListenerJob) GetMTLSConf() *MTLSListenerReq {
	if x != nil {
		return x.MTLSConf
	}
	return nil
}

func (x *ListenerJob) GetWGConf() *WGListenerReq {
	if x != nil {
		return x.WGConf
	}
	return nil
}

func (x *ListenerJob) GetDNSConf() *DNSListenerReq {
	if x != nil {
		return x.DNSConf
	}
	return nil
}

func (x *ListenerJob) GetHTTPConf() *HTTPListenerReq {
	if x != nil {
		return x.HTTPConf
	}
	return nil
}

func (x *ListenerJob) GetMultiConf() *MultiplayerListenerReq {
	if x != nil {
		return x.MultiConf
	}
	return nil
}

func (x *ListenerJob) GetTCPConf() *StagerListenerReq {
	if x != nil {
		return x.TCPConf
	}
	return nil
}

type MultiplayerListenerReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Host          string                 `protobuf:"bytes,1,opt,name=Host,proto3" json:"Host,omitempty"`
	Port          uint32                 `protobuf:"varint,2,opt,name=Port,proto3" json:"Port,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MultiplayerListenerReq) Reset() {
	*x = MultiplayerListenerReq{}
	mi := &file_clientpb_client_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MultiplayerListenerReq) ProtoMessage() {}

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

// Deprecated: Use MultiplayerListenerReq.ProtoReflect.Descriptor instead.
func (*MultiplayerListenerReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{35}
}

func (x *MultiplayerListenerReq) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *MultiplayerListenerReq) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

type MTLSListenerReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Host          string                 `protobuf:"bytes,1,opt,name=Host,proto3" json:"Host,omitempty"`
	Port          uint32                 `protobuf:"varint,2,opt,name=Port,proto3" json:"Port,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MTLSListenerReq) Reset() {
	*x = MTLSListenerReq{}
	mi := &file_clientpb_client_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MTLSListenerReq) ProtoMessage() {}

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

// Deprecated: Use MTLSListenerReq.ProtoReflect.Descriptor instead.
func (*MTLSListenerReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{36}
}

func (x *MTLSListenerReq) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *MTLSListenerReq) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

type WGListenerReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Host          string                 `protobuf:"bytes,6,opt,name=Host,proto3" json:"Host,omitempty"`
	Port          uint32                 `protobuf:"varint,1,opt,name=Port,proto3" json:"Port,omitempty"`
	TunIP         string                 `protobuf:"bytes,2,opt,name=TunIP,proto3" json:"TunIP,omitempty"`
	NPort         uint32                 `protobuf:"varint,3,opt,name=NPort,proto3" json:"NPort,omitempty"`
	KeyPort       uint32                 `protobuf:"varint,4,opt,name=KeyPort,proto3" json:"KeyPort,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WGListenerReq) Reset() {
	*x = WGListenerReq{}
	mi := &file_clientpb_client_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*WGListenerReq) ProtoMessage() {}

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

// Deprecated: Use WGListenerReq.ProtoReflect.Descriptor instead.
func (*WGListenerReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{37}
}

func (x *WGListenerReq) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *WGListenerReq) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *WGListenerReq) GetTunIP() string {
	if x != nil {
		return x.TunIP
	}
	return ""
}

func (x *WGListenerReq) GetNPort() uint32 {
	if x != nil {
		return x.NPort
	}
	return 0
}

func (x *WGListenerReq) GetKeyPort() uint32 {
	if x != nil {
		return x.KeyPort
	}
	return 0
}

type DNSListenerReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Domains       []string               `protobuf:"bytes,1,rep,name=Domains,proto3" json:"Domains,omitempty"`
	Canaries      bool                   `protobuf:"varint,2,opt,name=Canaries,proto3" json:"Canaries,omitempty"`
	Host          string                 `protobuf:"bytes,3,opt,name=Host,proto3" json:"Host,omitempty"`
	Port          uint32                 `protobuf:"varint,4,opt,name=Port,proto3" json:"Port,omitempty"`
	EnforceOTP    bool                   `protobuf:"varint,6,opt,name=EnforceOTP,proto3" json:"EnforceOTP,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DNSListenerReq) Reset() {
	*x = DNSListenerReq{}
	mi := &file_clientpb_client_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DNSListenerReq) ProtoMessage() {}

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

// Deprecated: Use DNSListenerReq.ProtoReflect.Descriptor instead.
func (*DNSListenerReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{38}
}

func (x *DNSListenerReq) GetDomains() []string {
	if x != nil {
		return x.Domains
	}
	return nil
}

func (x *DNSListenerReq) GetCanaries() bool {
	if x != nil {
		return x.Canaries
	}
	return false
}

func (x *DNSListenerReq) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *DNSListenerReq) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *DNSListenerReq) GetEnforceOTP() bool {
	if x != nil {
		return x.EnforceOTP
	}
	return false
}

type HTTPListenerReq struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Domain          string                 `protobuf:"bytes,1,opt,name=Domain,proto3" json:"Domain,omitempty"`
	Host            string                 `protobuf:"bytes,2,opt,name=Host,proto3" json:"Host,omitempty"`
	Port            uint32                 `protobuf:"varint,3,opt,name=Port,proto3" json:"Port,omitempty"`
	Secure          bool                   `protobuf:"varint,4,opt,name=Secure,proto3" json:"Secure,omitempty"` // Enable HTTPS
	Website         string                 `protobuf:"bytes,5,opt,name=Website,proto3" json:"Website,omitempty"`
	Cert            []byte                 `protobuf:"bytes,6,opt,name=Cert,proto3" json:"Cert,omitempty"`
	Key             []byte                 `protobuf:"bytes,7,opt,name=Key,proto3" json:"Key,omitempty"`
	ACME            bool                   `protobuf:"varint,8,opt,name=ACME,proto3" json:"ACME,omitempty"`
	EnforceOTP      bool                   `protobuf:"varint,10,opt,name=EnforceOTP,proto3" json:"EnforceOTP,omitempty"`
	LongPollTimeout int64                  `protobuf:"varint,11,opt,name=LongPollTimeout,proto3" json:"LongPollTimeout,omitempty"`
	LongPollJitter  int64                  `protobuf:"varint,12,opt,name=LongPollJitter,proto3" json:"LongPollJitter,omitempty"`
	RandomizeJARM   bool                   `protobuf:"varint,13,opt,name=RandomizeJARM,proto3" json:"RandomizeJARM,omitempty"` // Only valid with Secure = true
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *HTTPListenerReq) Reset() {
	*x = HTTPListenerReq{}
	mi := &file_clientpb_client_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPListenerReq) ProtoMessage() {}

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

// Deprecated: Use HTTPListenerReq.ProtoReflect.Descriptor instead.
func (*HTTPListenerReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{39}
}

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

func (x *HTTPListenerReq) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *HTTPListenerReq) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

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

func (x *HTTPListenerReq) GetWebsite() string {
	if x != nil {
		return x.Website
	}
	return ""
}

func (x *HTTPListenerReq) GetCert() []byte {
	if x != nil {
		return x.Cert
	}
	return nil
}

func (x *HTTPListenerReq) GetKey() []byte {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *HTTPListenerReq) GetACME() bool {
	if x != nil {
		return x.ACME
	}
	return false
}

func (x *HTTPListenerReq) GetEnforceOTP() bool {
	if x != nil {
		return x.EnforceOTP
	}
	return false
}

func (x *HTTPListenerReq) GetLongPollTimeout() int64 {
	if x != nil {
		return x.LongPollTimeout
	}
	return 0
}

func (x *HTTPListenerReq) GetLongPollJitter() int64 {
	if x != nil {
		return x.LongPollJitter
	}
	return 0
}

func (x *HTTPListenerReq) GetRandomizeJARM() bool {
	if x != nil {
		return x.RandomizeJARM
	}
	return false
}

// Named Pipes Messages for pivoting
type NamedPipesReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PipeName      string                 `protobuf:"bytes,16,opt,name=PipeName,proto3" json:"PipeName,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NamedPipesReq) Reset() {
	*x = NamedPipesReq{}
	mi := &file_clientpb_client_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*NamedPipesReq) ProtoMessage() {}

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

// Deprecated: Use NamedPipesReq.ProtoReflect.Descriptor instead.
func (*NamedPipesReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{40}
}

func (x *NamedPipesReq) GetPipeName() string {
	if x != nil {
		return x.PipeName
	}
	return ""
}

func (x *NamedPipesReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type NamedPipes struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=Success,proto3" json:"Success,omitempty"`
	Err           string                 `protobuf:"bytes,2,opt,name=Err,proto3" json:"Err,omitempty"`
	Response      *commonpb.Response     `protobuf:"bytes,9,opt,name=Response,proto3" json:"Response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NamedPipes) Reset() {
	*x = NamedPipes{}
	mi := &file_clientpb_client_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*NamedPipes) ProtoMessage() {}

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

// Deprecated: Use NamedPipes.ProtoReflect.Descriptor instead.
func (*NamedPipes) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{41}
}

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

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

func (x *NamedPipes) GetResponse() *commonpb.Response {
	if x != nil {
		return x.Response
	}
	return nil
}

// TCP Messages for pivoting
type TCPPivotReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Address       string                 `protobuf:"bytes,16,opt,name=Address,proto3" json:"Address,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TCPPivotReq) Reset() {
	*x = TCPPivotReq{}
	mi := &file_clientpb_client_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TCPPivotReq) ProtoMessage() {}

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

// Deprecated: Use TCPPivotReq.ProtoReflect.Descriptor instead.
func (*TCPPivotReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{42}
}

func (x *TCPPivotReq) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *TCPPivotReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type TCPPivot struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Success       bool                   `protobuf:"varint,1,opt,name=Success,proto3" json:"Success,omitempty"`
	Err           string                 `protobuf:"bytes,2,opt,name=Err,proto3" json:"Err,omitempty"`
	Response      *commonpb.Response     `protobuf:"bytes,9,opt,name=Response,proto3" json:"Response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TCPPivot) Reset() {
	*x = TCPPivot{}
	mi := &file_clientpb_client_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TCPPivot) ProtoMessage() {}

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

// Deprecated: Use TCPPivot.ProtoReflect.Descriptor instead.
func (*TCPPivot) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{43}
}

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

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

func (x *TCPPivot) GetResponse() *commonpb.Response {
	if x != nil {
		return x.Response
	}
	return nil
}

// [ commands ] ----------------------------------------
type Sessions struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Sessions      []*Session             `protobuf:"bytes,1,rep,name=Sessions,proto3" json:"Sessions,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Sessions) Reset() {
	*x = Sessions{}
	mi := &file_clientpb_client_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Sessions) ProtoMessage() {}

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

// Deprecated: Use Sessions.ProtoReflect.Descriptor instead.
func (*Sessions) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{44}
}

func (x *Sessions) GetSessions() []*Session {
	if x != nil {
		return x.Sessions
	}
	return nil
}

type RenameReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionID     string                 `protobuf:"bytes,1,opt,name=SessionID,proto3" json:"SessionID,omitempty"`
	BeaconID      string                 `protobuf:"bytes,2,opt,name=BeaconID,proto3" json:"BeaconID,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RenameReq) Reset() {
	*x = RenameReq{}
	mi := &file_clientpb_client_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RenameReq) ProtoMessage() {}

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

// Deprecated: Use RenameReq.ProtoReflect.Descriptor instead.
func (*RenameReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{45}
}

func (x *RenameReq) GetSessionID() string {
	if x != nil {
		return x.SessionID
	}
	return ""
}

func (x *RenameReq) GetBeaconID() string {
	if x != nil {
		return x.BeaconID
	}
	return ""
}

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

type GenerateReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Config        *ImplantConfig         `protobuf:"bytes,1,opt,name=Config,proto3" json:"Config,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GenerateReq) Reset() {
	*x = GenerateReq{}
	mi := &file_clientpb_client_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GenerateReq) ProtoMessage() {}

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

// Deprecated: Use GenerateReq.ProtoReflect.Descriptor instead.
func (*GenerateReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{46}
}

func (x *GenerateReq) GetConfig() *ImplantConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

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

type GenerateStageReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Profile       string                 `protobuf:"bytes,1,opt,name=Profile,proto3" json:"Profile,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	AESEncryptKey string                 `protobuf:"bytes,3,opt,name=AESEncryptKey,proto3" json:"AESEncryptKey,omitempty"`
	AESEncryptIv  string                 `protobuf:"bytes,4,opt,name=AESEncryptIv,proto3" json:"AESEncryptIv,omitempty"`
	RC4EncryptKey string                 `protobuf:"bytes,5,opt,name=RC4EncryptKey,proto3" json:"RC4EncryptKey,omitempty"`
	PrependSize   bool                   `protobuf:"varint,6,opt,name=PrependSize,proto3" json:"PrependSize,omitempty"`
	CompressF     string                 `protobuf:"bytes,7,opt,name=CompressF,proto3" json:"CompressF,omitempty"`
	Compress      string                 `protobuf:"bytes,8,opt,name=Compress,proto3" json:"Compress,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GenerateStageReq) Reset() {
	*x = GenerateStageReq{}
	mi := &file_clientpb_client_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GenerateStageReq) ProtoMessage() {}

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

// Deprecated: Use GenerateStageReq.ProtoReflect.Descriptor instead.
func (*GenerateStageReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{47}
}

func (x *GenerateStageReq) GetProfile() string {
	if x != nil {
		return x.Profile
	}
	return ""
}

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

func (x *GenerateStageReq) GetAESEncryptKey() string {
	if x != nil {
		return x.AESEncryptKey
	}
	return ""
}

func (x *GenerateStageReq) GetAESEncryptIv() string {
	if x != nil {
		return x.AESEncryptIv
	}
	return ""
}

func (x *GenerateStageReq) GetRC4EncryptKey() string {
	if x != nil {
		return x.RC4EncryptKey
	}
	return ""
}

func (x *GenerateStageReq) GetPrependSize() bool {
	if x != nil {
		return x.PrependSize
	}
	return false
}

func (x *GenerateStageReq) GetCompressF() string {
	if x != nil {
		return x.CompressF
	}
	return ""
}

func (x *GenerateStageReq) GetCompress() string {
	if x != nil {
		return x.Compress
	}
	return ""
}

type Generate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	File          *commonpb.File         `protobuf:"bytes,1,opt,name=File,proto3" json:"File,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Generate) Reset() {
	*x = Generate{}
	mi := &file_clientpb_client_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Generate) ProtoMessage() {}

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

// Deprecated: Use Generate.ProtoReflect.Descriptor instead.
func (*Generate) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{48}
}

func (x *Generate) GetFile() *commonpb.File {
	if x != nil {
		return x.File
	}
	return nil
}

type MSFReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Payload       string                 `protobuf:"bytes,1,opt,name=Payload,proto3" json:"Payload,omitempty"`
	LHost         string                 `protobuf:"bytes,2,opt,name=LHost,proto3" json:"LHost,omitempty"`
	LPort         uint32                 `protobuf:"varint,3,opt,name=LPort,proto3" json:"LPort,omitempty"`
	Encoder       string                 `protobuf:"bytes,4,opt,name=Encoder,proto3" json:"Encoder,omitempty"`
	Iterations    int32                  `protobuf:"varint,5,opt,name=Iterations,proto3" json:"Iterations,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MSFReq) Reset() {
	*x = MSFReq{}
	mi := &file_clientpb_client_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MSFReq) ProtoMessage() {}

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

// Deprecated: Use MSFReq.ProtoReflect.Descriptor instead.
func (*MSFReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{49}
}

func (x *MSFReq) GetPayload() string {
	if x != nil {
		return x.Payload
	}
	return ""
}

func (x *MSFReq) GetLHost() string {
	if x != nil {
		return x.LHost
	}
	return ""
}

func (x *MSFReq) GetLPort() uint32 {
	if x != nil {
		return x.LPort
	}
	return 0
}

func (x *MSFReq) GetEncoder() string {
	if x != nil {
		return x.Encoder
	}
	return ""
}

func (x *MSFReq) GetIterations() int32 {
	if x != nil {
		return x.Iterations
	}
	return 0
}

func (x *MSFReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type MSFRemoteReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Payload       string                 `protobuf:"bytes,1,opt,name=Payload,proto3" json:"Payload,omitempty"`
	LHost         string                 `protobuf:"bytes,2,opt,name=LHost,proto3" json:"LHost,omitempty"`
	LPort         uint32                 `protobuf:"varint,3,opt,name=LPort,proto3" json:"LPort,omitempty"`
	Encoder       string                 `protobuf:"bytes,4,opt,name=Encoder,proto3" json:"Encoder,omitempty"`
	Iterations    int32                  `protobuf:"varint,5,opt,name=Iterations,proto3" json:"Iterations,omitempty"`
	PID           uint32                 `protobuf:"varint,8,opt,name=PID,proto3" json:"PID,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MSFRemoteReq) Reset() {
	*x = MSFRemoteReq{}
	mi := &file_clientpb_client_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MSFRemoteReq) ProtoMessage() {}

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

// Deprecated: Use MSFRemoteReq.ProtoReflect.Descriptor instead.
func (*MSFRemoteReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{50}
}

func (x *MSFRemoteReq) GetPayload() string {
	if x != nil {
		return x.Payload
	}
	return ""
}

func (x *MSFRemoteReq) GetLHost() string {
	if x != nil {
		return x.LHost
	}
	return ""
}

func (x *MSFRemoteReq) GetLPort() uint32 {
	if x != nil {
		return x.LPort
	}
	return 0
}

func (x *MSFRemoteReq) GetEncoder() string {
	if x != nil {
		return x.Encoder
	}
	return ""
}

func (x *MSFRemoteReq) GetIterations() int32 {
	if x != nil {
		return x.Iterations
	}
	return 0
}

func (x *MSFRemoteReq) GetPID() uint32 {
	if x != nil {
		return x.PID
	}
	return 0
}

func (x *MSFRemoteReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type StagerListenerReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Protocol      StageProtocol          `protobuf:"varint,1,opt,name=Protocol,proto3,enum=clientpb.StageProtocol" json:"Protocol,omitempty"`
	Host          string                 `protobuf:"bytes,2,opt,name=Host,proto3" json:"Host,omitempty"`
	Port          uint32                 `protobuf:"varint,3,opt,name=Port,proto3" json:"Port,omitempty"`
	Data          []byte                 `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data,omitempty"`
	ProfileName   string                 `protobuf:"bytes,5,opt,name=ProfileName,proto3" json:"ProfileName,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StagerListenerReq) Reset() {
	*x = StagerListenerReq{}
	mi := &file_clientpb_client_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StagerListenerReq) ProtoMessage() {}

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

// Deprecated: Use StagerListenerReq.ProtoReflect.Descriptor instead.
func (*StagerListenerReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{51}
}

func (x *StagerListenerReq) GetProtocol() StageProtocol {
	if x != nil {
		return x.Protocol
	}
	return StageProtocol_TCP
}

func (x *StagerListenerReq) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *StagerListenerReq) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

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

func (x *StagerListenerReq) GetProfileName() string {
	if x != nil {
		return x.ProfileName
	}
	return ""
}

type StagerListener struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	JobID         uint32                 `protobuf:"varint,1,opt,name=JobID,proto3" json:"JobID,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StagerListener) Reset() {
	*x = StagerListener{}
	mi := &file_clientpb_client_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StagerListener) ProtoMessage() {}

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

// Deprecated: Use StagerListener.ProtoReflect.Descriptor instead.
func (*StagerListener) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{52}
}

func (x *StagerListener) GetJobID() uint32 {
	if x != nil {
		return x.JobID
	}
	return 0
}

type ShellcodeRDIReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          []byte                 `protobuf:"bytes,1,opt,name=Data,proto3" json:"Data,omitempty"`
	FunctionName  string                 `protobuf:"bytes,2,opt,name=FunctionName,proto3" json:"FunctionName,omitempty"`
	Arguments     string                 `protobuf:"bytes,3,opt,name=Arguments,proto3" json:"Arguments,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ShellcodeRDIReq) Reset() {
	*x = ShellcodeRDIReq{}
	mi := &file_clientpb_client_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ShellcodeRDIReq) ProtoMessage() {}

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

// Deprecated: Use ShellcodeRDIReq.ProtoReflect.Descriptor instead.
func (*ShellcodeRDIReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{53}
}

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

func (x *ShellcodeRDIReq) GetFunctionName() string {
	if x != nil {
		return x.FunctionName
	}
	return ""
}

func (x *ShellcodeRDIReq) GetArguments() string {
	if x != nil {
		return x.Arguments
	}
	return ""
}

type ShellcodeRDI struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          []byte                 `protobuf:"bytes,1,opt,name=Data,proto3" json:"Data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ShellcodeRDI) Reset() {
	*x = ShellcodeRDI{}
	mi := &file_clientpb_client_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ShellcodeRDI) ProtoMessage() {}

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

// Deprecated: Use ShellcodeRDI.ProtoReflect.Descriptor instead.
func (*ShellcodeRDI) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{54}
}

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

// GetSystemReq - Client request to the server which is translated into
//
//	InvokeSystemReq when sending to the implant.
type GetSystemReq struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	HostingProcess string                 `protobuf:"bytes,1,opt,name=HostingProcess,proto3" json:"HostingProcess,omitempty"`
	Config         *ImplantConfig         `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"`
	Name           string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	Request        *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *GetSystemReq) Reset() {
	*x = GetSystemReq{}
	mi := &file_clientpb_client_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetSystemReq) ProtoMessage() {}

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

// Deprecated: Use GetSystemReq.ProtoReflect.Descriptor instead.
func (*GetSystemReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{55}
}

func (x *GetSystemReq) GetHostingProcess() string {
	if x != nil {
		return x.HostingProcess
	}
	return ""
}

func (x *GetSystemReq) GetConfig() *ImplantConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

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

func (x *GetSystemReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

// MigrateReq - Client request to the server which is translated into
//
//	InvokeMigrateReq when sending to the implant.
type MigrateReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Pid           uint32                 `protobuf:"varint,1,opt,name=Pid,proto3" json:"Pid,omitempty"`
	Config        *ImplantConfig         `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"`
	Encoder       ShellcodeEncoder       `protobuf:"varint,3,opt,name=Encoder,proto3,enum=clientpb.ShellcodeEncoder" json:"Encoder,omitempty"`
	Name          string                 `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"`
	ProcName      string                 `protobuf:"bytes,5,opt,name=ProcName,proto3" json:"ProcName,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MigrateReq) Reset() {
	*x = MigrateReq{}
	mi := &file_clientpb_client_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MigrateReq) ProtoMessage() {}

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

// Deprecated: Use MigrateReq.ProtoReflect.Descriptor instead.
func (*MigrateReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{56}
}

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

func (x *MigrateReq) GetConfig() *ImplantConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *MigrateReq) GetEncoder() ShellcodeEncoder {
	if x != nil {
		return x.Encoder
	}
	return ShellcodeEncoder_NONE
}

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

func (x *MigrateReq) GetProcName() string {
	if x != nil {
		return x.ProcName
	}
	return ""
}

func (x *MigrateReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

// [ Tunnels ] ----------------------------------------
type CreateTunnelReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateTunnelReq) Reset() {
	*x = CreateTunnelReq{}
	mi := &file_clientpb_client_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CreateTunnelReq) ProtoMessage() {}

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

// Deprecated: Use CreateTunnelReq.ProtoReflect.Descriptor instead.
func (*CreateTunnelReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{57}
}

func (x *CreateTunnelReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type CreateTunnel struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SessionID     uint32                 `protobuf:"varint,1,opt,name=SessionID,proto3" json:"SessionID,omitempty"`
	TunnelID      uint64                 `protobuf:"varint,8,opt,name=TunnelID,proto3" json:"TunnelID,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateTunnel) Reset() {
	*x = CreateTunnel{}
	mi := &file_clientpb_client_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CreateTunnel) ProtoMessage() {}

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

// Deprecated: Use CreateTunnel.ProtoReflect.Descriptor instead.
func (*CreateTunnel) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{58}
}

func (x *CreateTunnel) GetSessionID() uint32 {
	if x != nil {
		return x.SessionID
	}
	return 0
}

func (x *CreateTunnel) GetTunnelID() uint64 {
	if x != nil {
		return x.TunnelID
	}
	return 0
}

type CloseTunnelReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	TunnelID      uint64                 `protobuf:"varint,8,opt,name=TunnelID,proto3" json:"TunnelID,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CloseTunnelReq) Reset() {
	*x = CloseTunnelReq{}
	mi := &file_clientpb_client_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CloseTunnelReq) ProtoMessage() {}

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

// Deprecated: Use CloseTunnelReq.ProtoReflect.Descriptor instead.
func (*CloseTunnelReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{59}
}

func (x *CloseTunnelReq) GetTunnelID() uint64 {
	if x != nil {
		return x.TunnelID
	}
	return 0
}

func (x *CloseTunnelReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

// [ Pivots ] ----------------------------------------
type PivotGraphEntry struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PeerID        int64                  `protobuf:"varint,1,opt,name=PeerID,proto3" json:"PeerID,omitempty"`
	Session       *Session               `protobuf:"bytes,2,opt,name=Session,proto3" json:"Session,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	Children      []*PivotGraphEntry     `protobuf:"bytes,4,rep,name=Children,proto3" json:"Children,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PivotGraphEntry) Reset() {
	*x = PivotGraphEntry{}
	mi := &file_clientpb_client_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PivotGraphEntry) ProtoMessage() {}

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

// Deprecated: Use PivotGraphEntry.ProtoReflect.Descriptor instead.
func (*PivotGraphEntry) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{60}
}

func (x *PivotGraphEntry) GetPeerID() int64 {
	if x != nil {
		return x.PeerID
	}
	return 0
}

func (x *PivotGraphEntry) GetSession() *Session {
	if x != nil {
		return x.Session
	}
	return nil
}

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

func (x *PivotGraphEntry) GetChildren() []*PivotGraphEntry {
	if x != nil {
		return x.Children
	}
	return nil
}

type PivotGraph struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Children      []*PivotGraphEntry     `protobuf:"bytes,1,rep,name=Children,proto3" json:"Children,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PivotGraph) Reset() {
	*x = PivotGraph{}
	mi := &file_clientpb_client_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PivotGraph) ProtoMessage() {}

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

// Deprecated: Use PivotGraph.ProtoReflect.Descriptor instead.
func (*PivotGraph) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{61}
}

func (x *PivotGraph) GetChildren() []*PivotGraphEntry {
	if x != nil {
		return x.Children
	}
	return nil
}

// [ Events ] ----------------------------------------
type Client struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            uint32                 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	Operator      *Operator              `protobuf:"bytes,3,opt,name=Operator,proto3" json:"Operator,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Client) Reset() {
	*x = Client{}
	mi := &file_clientpb_client_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Client) ProtoMessage() {}

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

// Deprecated: Use Client.ProtoReflect.Descriptor instead.
func (*Client) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{62}
}

func (x *Client) GetID() uint32 {
	if x != nil {
		return x.ID
	}
	return 0
}

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

func (x *Client) GetOperator() *Operator {
	if x != nil {
		return x.Operator
	}
	return nil
}

type Event struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	EventType     string                 `protobuf:"bytes,1,opt,name=EventType,proto3" json:"EventType,omitempty"`
	Session       *Session               `protobuf:"bytes,2,opt,name=Session,proto3" json:"Session,omitempty"`
	Job           *Job                   `protobuf:"bytes,3,opt,name=Job,proto3" json:"Job,omitempty"`
	Client        *Client                `protobuf:"bytes,4,opt,name=Client,proto3" json:"Client,omitempty"`
	Data          []byte                 `protobuf:"bytes,5,opt,name=Data,proto3" json:"Data,omitempty"`
	Err           string                 `protobuf:"bytes,6,opt,name=Err,proto3" json:"Err,omitempty"` // Can't trigger normal gRPC error
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Event) Reset() {
	*x = Event{}
	mi := &file_clientpb_client_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Event) ProtoMessage() {}

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

// Deprecated: Use Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{63}
}

func (x *Event) GetEventType() string {
	if x != nil {
		return x.EventType
	}
	return ""
}

func (x *Event) GetSession() *Session {
	if x != nil {
		return x.Session
	}
	return nil
}

func (x *Event) GetJob() *Job {
	if x != nil {
		return x.Job
	}
	return nil
}

func (x *Event) GetClient() *Client {
	if x != nil {
		return x.Client
	}
	return nil
}

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

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

type Operators struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Operators     []*Operator            `protobuf:"bytes,1,rep,name=Operators,proto3" json:"Operators,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Operators) Reset() {
	*x = Operators{}
	mi := &file_clientpb_client_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Operators) ProtoMessage() {}

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

// Deprecated: Use Operators.ProtoReflect.Descriptor instead.
func (*Operators) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{64}
}

func (x *Operators) GetOperators() []*Operator {
	if x != nil {
		return x.Operators
	}
	return nil
}

type Operator struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Online        bool                   `protobuf:"varint,1,opt,name=Online,proto3" json:"Online,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Operator) Reset() {
	*x = Operator{}
	mi := &file_clientpb_client_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Operator) ProtoMessage() {}

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

// Deprecated: Use Operator.ProtoReflect.Descriptor instead.
func (*Operator) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{65}
}

func (x *Operator) GetOnline() bool {
	if x != nil {
		return x.Online
	}
	return false
}

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

// [ Websites ] ----------------------------------------
type WebContent struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	WebsiteID     string                 `protobuf:"bytes,2,opt,name=WebsiteID,proto3" json:"WebsiteID,omitempty"`
	Path          string                 `protobuf:"bytes,3,opt,name=Path,proto3" json:"Path,omitempty"`
	ContentType   string                 `protobuf:"bytes,4,opt,name=ContentType,proto3" json:"ContentType,omitempty"`
	Size          uint64                 `protobuf:"varint,5,opt,name=Size,proto3" json:"Size,omitempty"`
	Content       []byte                 `protobuf:"bytes,9,opt,name=Content,proto3" json:"Content,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WebContent) Reset() {
	*x = WebContent{}
	mi := &file_clientpb_client_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*WebContent) ProtoMessage() {}

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

// Deprecated: Use WebContent.ProtoReflect.Descriptor instead.
func (*WebContent) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{66}
}

func (x *WebContent) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *WebContent) GetWebsiteID() string {
	if x != nil {
		return x.WebsiteID
	}
	return ""
}

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

func (x *WebContent) GetContentType() string {
	if x != nil {
		return x.ContentType
	}
	return ""
}

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

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

type WebsiteAddContent struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	Contents      map[string]*WebContent `protobuf:"bytes,2,rep,name=Contents,proto3" json:"Contents,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WebsiteAddContent) Reset() {
	*x = WebsiteAddContent{}
	mi := &file_clientpb_client_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*WebsiteAddContent) ProtoMessage() {}

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

// Deprecated: Use WebsiteAddContent.ProtoReflect.Descriptor instead.
func (*WebsiteAddContent) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{67}
}

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

func (x *WebsiteAddContent) GetContents() map[string]*WebContent {
	if x != nil {
		return x.Contents
	}
	return nil
}

type WebsiteRemoveContent struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	Paths         []string               `protobuf:"bytes,2,rep,name=Paths,proto3" json:"Paths,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WebsiteRemoveContent) Reset() {
	*x = WebsiteRemoveContent{}
	mi := &file_clientpb_client_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*WebsiteRemoveContent) ProtoMessage() {}

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

// Deprecated: Use WebsiteRemoveContent.ProtoReflect.Descriptor instead.
func (*WebsiteRemoveContent) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{68}
}

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

func (x *WebsiteRemoveContent) GetPaths() []string {
	if x != nil {
		return x.Paths
	}
	return nil
}

type Website struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	Contents      map[string]*WebContent `protobuf:"bytes,3,rep,name=Contents,proto3" json:"Contents,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Website) Reset() {
	*x = Website{}
	mi := &file_clientpb_client_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Website) ProtoMessage() {}

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

// Deprecated: Use Website.ProtoReflect.Descriptor instead.
func (*Website) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{69}
}

func (x *Website) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *Website) GetContents() map[string]*WebContent {
	if x != nil {
		return x.Contents
	}
	return nil
}

type Websites struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Websites      []*Website             `protobuf:"bytes,1,rep,name=Websites,proto3" json:"Websites,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Websites) Reset() {
	*x = Websites{}
	mi := &file_clientpb_client_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Websites) ProtoMessage() {}

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

// Deprecated: Use Websites.ProtoReflect.Descriptor instead.
func (*Websites) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{70}
}

func (x *Websites) GetWebsites() []*Website {
	if x != nil {
		return x.Websites
	}
	return nil
}

type WGClientConfig struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	ServerPubKey     string                 `protobuf:"bytes,1,opt,name=ServerPubKey,proto3" json:"ServerPubKey,omitempty"`
	ClientPrivateKey string                 `protobuf:"bytes,2,opt,name=ClientPrivateKey,proto3" json:"ClientPrivateKey,omitempty"`
	ClientPubKey     string                 `protobuf:"bytes,3,opt,name=ClientPubKey,proto3" json:"ClientPubKey,omitempty"`
	ClientIP         string                 `protobuf:"bytes,4,opt,name=ClientIP,proto3" json:"ClientIP,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *WGClientConfig) Reset() {
	*x = WGClientConfig{}
	mi := &file_clientpb_client_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*WGClientConfig) ProtoMessage() {}

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

// Deprecated: Use WGClientConfig.ProtoReflect.Descriptor instead.
func (*WGClientConfig) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{71}
}

func (x *WGClientConfig) GetServerPubKey() string {
	if x != nil {
		return x.ServerPubKey
	}
	return ""
}

func (x *WGClientConfig) GetClientPrivateKey() string {
	if x != nil {
		return x.ClientPrivateKey
	}
	return ""
}

func (x *WGClientConfig) GetClientPubKey() string {
	if x != nil {
		return x.ClientPubKey
	}
	return ""
}

func (x *WGClientConfig) GetClientIP() string {
	if x != nil {
		return x.ClientIP
	}
	return ""
}

type Loot struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	ID             string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name           string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	FileType       FileType               `protobuf:"varint,3,opt,name=FileType,proto3,enum=clientpb.FileType" json:"FileType,omitempty"`
	OriginHostUUID string                 `protobuf:"bytes,4,opt,name=OriginHostUUID,proto3" json:"OriginHostUUID,omitempty"`
	Size           int64                  `protobuf:"varint,5,opt,name=Size,proto3" json:"Size,omitempty"`
	File           *commonpb.File         `protobuf:"bytes,9,opt,name=File,proto3" json:"File,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *Loot) Reset() {
	*x = Loot{}
	mi := &file_clientpb_client_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Loot) ProtoMessage() {}

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

// Deprecated: Use Loot.ProtoReflect.Descriptor instead.
func (*Loot) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{72}
}

func (x *Loot) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *Loot) GetFileType() FileType {
	if x != nil {
		return x.FileType
	}
	return FileType_NO_FILE
}

func (x *Loot) GetOriginHostUUID() string {
	if x != nil {
		return x.OriginHostUUID
	}
	return ""
}

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

func (x *Loot) GetFile() *commonpb.File {
	if x != nil {
		return x.File
	}
	return nil
}

type AllLoot struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Loot          []*Loot                `protobuf:"bytes,1,rep,name=Loot,proto3" json:"Loot,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AllLoot) Reset() {
	*x = AllLoot{}
	mi := &file_clientpb_client_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AllLoot) ProtoMessage() {}

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

// Deprecated: Use AllLoot.ProtoReflect.Descriptor instead.
func (*AllLoot) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{73}
}

func (x *AllLoot) GetLoot() []*Loot {
	if x != nil {
		return x.Loot
	}
	return nil
}

// [ Hosts ] ----------------------------------------
type IOC struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Path          string                 `protobuf:"bytes,1,opt,name=Path,proto3" json:"Path,omitempty"`
	FileHash      string                 `protobuf:"bytes,2,opt,name=FileHash,proto3" json:"FileHash,omitempty"`
	ID            string                 `protobuf:"bytes,3,opt,name=ID,proto3" json:"ID,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IOC) Reset() {
	*x = IOC{}
	mi := &file_clientpb_client_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*IOC) ProtoMessage() {}

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

// Deprecated: Use IOC.ProtoReflect.Descriptor instead.
func (*IOC) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{74}
}

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

func (x *IOC) GetFileHash() string {
	if x != nil {
		return x.FileHash
	}
	return ""
}

func (x *IOC) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

type ExtensionData struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Output        string                 `protobuf:"bytes,1,opt,name=Output,proto3" json:"Output,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExtensionData) Reset() {
	*x = ExtensionData{}
	mi := &file_clientpb_client_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExtensionData) ProtoMessage() {}

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

// Deprecated: Use ExtensionData.ProtoReflect.Descriptor instead.
func (*ExtensionData) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{75}
}

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

type Host struct {
	state         protoimpl.MessageState    `protogen:"open.v1"`
	ID            string                    `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Hostname      string                    `protobuf:"bytes,2,opt,name=Hostname,proto3" json:"Hostname,omitempty"`
	HostUUID      string                    `protobuf:"bytes,3,opt,name=HostUUID,proto3" json:"HostUUID,omitempty"`
	OSVersion     string                    `protobuf:"bytes,4,opt,name=OSVersion,proto3" json:"OSVersion,omitempty"`
	IOCs          []*IOC                    `protobuf:"bytes,5,rep,name=IOCs,proto3" json:"IOCs,omitempty"`
	ExtensionData map[string]*ExtensionData `protobuf:"bytes,6,rep,name=ExtensionData,proto3" json:"ExtensionData,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Locale        string                    `protobuf:"bytes,7,opt,name=Locale,proto3" json:"Locale,omitempty"`
	FirstContact  int64                     `protobuf:"varint,8,opt,name=FirstContact,proto3" json:"FirstContact,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Host) Reset() {
	*x = Host{}
	mi := &file_clientpb_client_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Host) ProtoMessage() {}

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

// Deprecated: Use Host.ProtoReflect.Descriptor instead.
func (*Host) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{76}
}

func (x *Host) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *Host) GetHostUUID() string {
	if x != nil {
		return x.HostUUID
	}
	return ""
}

func (x *Host) GetOSVersion() string {
	if x != nil {
		return x.OSVersion
	}
	return ""
}

func (x *Host) GetIOCs() []*IOC {
	if x != nil {
		return x.IOCs
	}
	return nil
}

func (x *Host) GetExtensionData() map[string]*ExtensionData {
	if x != nil {
		return x.ExtensionData
	}
	return nil
}

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

func (x *Host) GetFirstContact() int64 {
	if x != nil {
		return x.FirstContact
	}
	return 0
}

type AllHosts struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hosts         []*Host                `protobuf:"bytes,1,rep,name=Hosts,proto3" json:"Hosts,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AllHosts) Reset() {
	*x = AllHosts{}
	mi := &file_clientpb_client_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AllHosts) ProtoMessage() {}

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

// Deprecated: Use AllHosts.ProtoReflect.Descriptor instead.
func (*AllHosts) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{77}
}

func (x *AllHosts) GetHosts() []*Host {
	if x != nil {
		return x.Hosts
	}
	return nil
}

// [ Dll Hijack ] ----------------------------------------
type DllHijackReq struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	ReferenceDLLPath string                 `protobuf:"bytes,1,opt,name=ReferenceDLLPath,proto3" json:"ReferenceDLLPath,omitempty"`
	TargetLocation   string                 `protobuf:"bytes,2,opt,name=TargetLocation,proto3" json:"TargetLocation,omitempty"`
	ReferenceDLL     []byte                 `protobuf:"bytes,3,opt,name=ReferenceDLL,proto3" json:"ReferenceDLL,omitempty"`
	TargetDLL        []byte                 `protobuf:"bytes,4,opt,name=TargetDLL,proto3" json:"TargetDLL,omitempty"`
	ProfileName      string                 `protobuf:"bytes,5,opt,name=ProfileName,proto3" json:"ProfileName,omitempty"`
	Name             string                 `protobuf:"bytes,6,opt,name=Name,proto3" json:"Name,omitempty"`
	Request          *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *DllHijackReq) Reset() {
	*x = DllHijackReq{}
	mi := &file_clientpb_client_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DllHijackReq) ProtoMessage() {}

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

// Deprecated: Use DllHijackReq.ProtoReflect.Descriptor instead.
func (*DllHijackReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{78}
}

func (x *DllHijackReq) GetReferenceDLLPath() string {
	if x != nil {
		return x.ReferenceDLLPath
	}
	return ""
}

func (x *DllHijackReq) GetTargetLocation() string {
	if x != nil {
		return x.TargetLocation
	}
	return ""
}

func (x *DllHijackReq) GetReferenceDLL() []byte {
	if x != nil {
		return x.ReferenceDLL
	}
	return nil
}

func (x *DllHijackReq) GetTargetDLL() []byte {
	if x != nil {
		return x.TargetDLL
	}
	return nil
}

func (x *DllHijackReq) GetProfileName() string {
	if x != nil {
		return x.ProfileName
	}
	return ""
}

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

func (x *DllHijackReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type DllHijack struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Response      *commonpb.Response     `protobuf:"bytes,9,opt,name=Response,proto3" json:"Response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DllHijack) Reset() {
	*x = DllHijack{}
	mi := &file_clientpb_client_proto_msgTypes[79]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DllHijack) ProtoMessage() {}

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

// Deprecated: Use DllHijack.ProtoReflect.Descriptor instead.
func (*DllHijack) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{79}
}

func (x *DllHijack) GetResponse() *commonpb.Response {
	if x != nil {
		return x.Response
	}
	return nil
}

type BackdoorReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	FilePath      string                 `protobuf:"bytes,1,opt,name=FilePath,proto3" json:"FilePath,omitempty"`
	ProfileName   string                 `protobuf:"bytes,2,opt,name=ProfileName,proto3" json:"ProfileName,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BackdoorReq) Reset() {
	*x = BackdoorReq{}
	mi := &file_clientpb_client_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BackdoorReq) ProtoMessage() {}

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

// Deprecated: Use BackdoorReq.ProtoReflect.Descriptor instead.
func (*BackdoorReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{80}
}

func (x *BackdoorReq) GetFilePath() string {
	if x != nil {
		return x.FilePath
	}
	return ""
}

func (x *BackdoorReq) GetProfileName() string {
	if x != nil {
		return x.ProfileName
	}
	return ""
}

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

func (x *BackdoorReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type Backdoor struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Response      *commonpb.Response     `protobuf:"bytes,9,opt,name=Response,proto3" json:"Response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Backdoor) Reset() {
	*x = Backdoor{}
	mi := &file_clientpb_client_proto_msgTypes[81]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Backdoor) ProtoMessage() {}

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

// Deprecated: Use Backdoor.ProtoReflect.Descriptor instead.
func (*Backdoor) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{81}
}

func (x *Backdoor) GetResponse() *commonpb.Response {
	if x != nil {
		return x.Response
	}
	return nil
}

type ShellcodeEncodeReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Encoder       ShellcodeEncoder       `protobuf:"varint,1,opt,name=Encoder,proto3,enum=clientpb.ShellcodeEncoder" json:"Encoder,omitempty"`
	Architecture  string                 `protobuf:"bytes,2,opt,name=Architecture,proto3" json:"Architecture,omitempty"`
	Iterations    uint32                 `protobuf:"varint,3,opt,name=Iterations,proto3" json:"Iterations,omitempty"`
	BadChars      []byte                 `protobuf:"bytes,4,opt,name=BadChars,proto3" json:"BadChars,omitempty"`
	Data          []byte                 `protobuf:"bytes,8,opt,name=Data,proto3" json:"Data,omitempty"`
	Request       *commonpb.Request      `protobuf:"bytes,9,opt,name=Request,proto3" json:"Request,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ShellcodeEncodeReq) Reset() {
	*x = ShellcodeEncodeReq{}
	mi := &file_clientpb_client_proto_msgTypes[82]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ShellcodeEncodeReq) ProtoMessage() {}

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

// Deprecated: Use ShellcodeEncodeReq.ProtoReflect.Descriptor instead.
func (*ShellcodeEncodeReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{82}
}

func (x *ShellcodeEncodeReq) GetEncoder() ShellcodeEncoder {
	if x != nil {
		return x.Encoder
	}
	return ShellcodeEncoder_NONE
}

func (x *ShellcodeEncodeReq) GetArchitecture() string {
	if x != nil {
		return x.Architecture
	}
	return ""
}

func (x *ShellcodeEncodeReq) GetIterations() uint32 {
	if x != nil {
		return x.Iterations
	}
	return 0
}

func (x *ShellcodeEncodeReq) GetBadChars() []byte {
	if x != nil {
		return x.BadChars
	}
	return nil
}

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

func (x *ShellcodeEncodeReq) GetRequest() *commonpb.Request {
	if x != nil {
		return x.Request
	}
	return nil
}

type ShellcodeEncode struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Data          []byte                 `protobuf:"bytes,8,opt,name=Data,proto3" json:"Data,omitempty"`
	Response      *commonpb.Response     `protobuf:"bytes,9,opt,name=Response,proto3" json:"Response,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ShellcodeEncode) Reset() {
	*x = ShellcodeEncode{}
	mi := &file_clientpb_client_proto_msgTypes[83]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ShellcodeEncode) ProtoMessage() {}

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

// Deprecated: Use ShellcodeEncode.ProtoReflect.Descriptor instead.
func (*ShellcodeEncode) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{83}
}

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

func (x *ShellcodeEncode) GetResponse() *commonpb.Response {
	if x != nil {
		return x.Response
	}
	return nil
}

type ShellcodeEncoderMap struct {
	state         protoimpl.MessageState      `protogen:"open.v1"`
	Encoders      map[string]ShellcodeEncoder `protobuf:"bytes,1,rep,name=Encoders,proto3" json:"Encoders,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=clientpb.ShellcodeEncoder"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ShellcodeEncoderMap) Reset() {
	*x = ShellcodeEncoderMap{}
	mi := &file_clientpb_client_proto_msgTypes[84]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ShellcodeEncoderMap) ProtoMessage() {}

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

// Deprecated: Use ShellcodeEncoderMap.ProtoReflect.Descriptor instead.
func (*ShellcodeEncoderMap) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{84}
}

func (x *ShellcodeEncoderMap) GetEncoders() map[string]ShellcodeEncoder {
	if x != nil {
		return x.Encoders
	}
	return nil
}

type ExternalGenerateReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Config        *ImplantConfig         `protobuf:"bytes,1,opt,name=Config,proto3" json:"Config,omitempty"`
	BuilderName   string                 `protobuf:"bytes,2,opt,name=BuilderName,proto3" json:"BuilderName,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExternalGenerateReq) Reset() {
	*x = ExternalGenerateReq{}
	mi := &file_clientpb_client_proto_msgTypes[85]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExternalGenerateReq) ProtoMessage() {}

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

// Deprecated: Use ExternalGenerateReq.ProtoReflect.Descriptor instead.
func (*ExternalGenerateReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{85}
}

func (x *ExternalGenerateReq) GetConfig() *ImplantConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *ExternalGenerateReq) GetBuilderName() string {
	if x != nil {
		return x.BuilderName
	}
	return ""
}

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

type Builders struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Builders      []*Builder             `protobuf:"bytes,1,rep,name=Builders,proto3" json:"Builders,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Builders) Reset() {
	*x = Builders{}
	mi := &file_clientpb_client_proto_msgTypes[86]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Builders) ProtoMessage() {}

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

// Deprecated: Use Builders.ProtoReflect.Descriptor instead.
func (*Builders) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{86}
}

func (x *Builders) GetBuilders() []*Builder {
	if x != nil {
		return x.Builders
	}
	return nil
}

type Builder struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Name           string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	OperatorName   string                 `protobuf:"bytes,2,opt,name=OperatorName,proto3" json:"OperatorName,omitempty"`
	GOOS           string                 `protobuf:"bytes,3,opt,name=GOOS,proto3" json:"GOOS,omitempty"`     // The builder's OS
	GOARCH         string                 `protobuf:"bytes,4,opt,name=GOARCH,proto3" json:"GOARCH,omitempty"` // The builder's Arch
	Templates      []string               `protobuf:"bytes,5,rep,name=Templates,proto3" json:"Templates,omitempty"`
	Targets        []*CompilerTarget      `protobuf:"bytes,6,rep,name=Targets,proto3" json:"Targets,omitempty"`
	CrossCompilers []*CrossCompiler       `protobuf:"bytes,7,rep,name=CrossCompilers,proto3" json:"CrossCompilers,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *Builder) Reset() {
	*x = Builder{}
	mi := &file_clientpb_client_proto_msgTypes[87]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Builder) ProtoMessage() {}

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

// Deprecated: Use Builder.ProtoReflect.Descriptor instead.
func (*Builder) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{87}
}

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

func (x *Builder) GetOperatorName() string {
	if x != nil {
		return x.OperatorName
	}
	return ""
}

func (x *Builder) GetGOOS() string {
	if x != nil {
		return x.GOOS
	}
	return ""
}

func (x *Builder) GetGOARCH() string {
	if x != nil {
		return x.GOARCH
	}
	return ""
}

func (x *Builder) GetTemplates() []string {
	if x != nil {
		return x.Templates
	}
	return nil
}

func (x *Builder) GetTargets() []*CompilerTarget {
	if x != nil {
		return x.Targets
	}
	return nil
}

func (x *Builder) GetCrossCompilers() []*CrossCompiler {
	if x != nil {
		return x.CrossCompilers
	}
	return nil
}

// [ HTTP C2 ] ----------------------------------------
type HTTPC2Configs struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Configs       []*HTTPC2Config        `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPC2Configs) Reset() {
	*x = HTTPC2Configs{}
	mi := &file_clientpb_client_proto_msgTypes[88]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2Configs) ProtoMessage() {}

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

// Deprecated: Use HTTPC2Configs.ProtoReflect.Descriptor instead.
func (*HTTPC2Configs) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{88}
}

func (x *HTTPC2Configs) GetConfigs() []*HTTPC2Config {
	if x != nil {
		return x.Configs
	}
	return nil
}

type C2ProfileReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *C2ProfileReq) Reset() {
	*x = C2ProfileReq{}
	mi := &file_clientpb_client_proto_msgTypes[89]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*C2ProfileReq) ProtoMessage() {}

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

// Deprecated: Use C2ProfileReq.ProtoReflect.Descriptor instead.
func (*C2ProfileReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{89}
}

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

type HTTPC2ConfigReq struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Overwrite     bool                   `protobuf:"varint,1,opt,name=overwrite,proto3" json:"overwrite,omitempty"`
	C2Config      *HTTPC2Config          `protobuf:"bytes,2,opt,name=C2Config,proto3" json:"C2Config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPC2ConfigReq) Reset() {
	*x = HTTPC2ConfigReq{}
	mi := &file_clientpb_client_proto_msgTypes[90]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2ConfigReq) ProtoMessage() {}

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

// Deprecated: Use HTTPC2ConfigReq.ProtoReflect.Descriptor instead.
func (*HTTPC2ConfigReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{90}
}

func (x *HTTPC2ConfigReq) GetOverwrite() bool {
	if x != nil {
		return x.Overwrite
	}
	return false
}

func (x *HTTPC2ConfigReq) GetC2Config() *HTTPC2Config {
	if x != nil {
		return x.C2Config
	}
	return nil
}

type HTTPC2Config struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Created       int64                  `protobuf:"varint,2,opt,name=Created,proto3" json:"Created,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	ServerConfig  *HTTPC2ServerConfig    `protobuf:"bytes,4,opt,name=ServerConfig,proto3" json:"ServerConfig,omitempty"`
	ImplantConfig *HTTPC2ImplantConfig   `protobuf:"bytes,5,opt,name=ImplantConfig,proto3" json:"ImplantConfig,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPC2Config) Reset() {
	*x = HTTPC2Config{}
	mi := &file_clientpb_client_proto_msgTypes[91]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2Config) ProtoMessage() {}

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

// Deprecated: Use HTTPC2Config.ProtoReflect.Descriptor instead.
func (*HTTPC2Config) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{91}
}

func (x *HTTPC2Config) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *HTTPC2Config) GetCreated() int64 {
	if x != nil {
		return x.Created
	}
	return 0
}

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

func (x *HTTPC2Config) GetServerConfig() *HTTPC2ServerConfig {
	if x != nil {
		return x.ServerConfig
	}
	return nil
}

func (x *HTTPC2Config) GetImplantConfig() *HTTPC2ImplantConfig {
	if x != nil {
		return x.ImplantConfig
	}
	return nil
}

type HTTPC2ServerConfig struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	ID                   string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	RandomVersionHeaders bool                   `protobuf:"varint,2,opt,name=RandomVersionHeaders,proto3" json:"RandomVersionHeaders,omitempty"`
	Headers              []*HTTPC2Header        `protobuf:"bytes,3,rep,name=Headers,proto3" json:"Headers,omitempty"`
	Cookies              []*HTTPC2Cookie        `protobuf:"bytes,4,rep,name=Cookies,proto3" json:"Cookies,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *HTTPC2ServerConfig) Reset() {
	*x = HTTPC2ServerConfig{}
	mi := &file_clientpb_client_proto_msgTypes[92]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2ServerConfig) ProtoMessage() {}

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

// Deprecated: Use HTTPC2ServerConfig.ProtoReflect.Descriptor instead.
func (*HTTPC2ServerConfig) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{92}
}

func (x *HTTPC2ServerConfig) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *HTTPC2ServerConfig) GetRandomVersionHeaders() bool {
	if x != nil {
		return x.RandomVersionHeaders
	}
	return false
}

func (x *HTTPC2ServerConfig) GetHeaders() []*HTTPC2Header {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *HTTPC2ServerConfig) GetCookies() []*HTTPC2Cookie {
	if x != nil {
		return x.Cookies
	}
	return nil
}

type HTTPC2ImplantConfig struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	ID                 string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	UserAgent          string                 `protobuf:"bytes,2,opt,name=UserAgent,proto3" json:"UserAgent,omitempty"`
	ChromeBaseVersion  int32                  `protobuf:"varint,3,opt,name=ChromeBaseVersion,proto3" json:"ChromeBaseVersion,omitempty"`
	MacOSVersion       string                 `protobuf:"bytes,4,opt,name=MacOSVersion,proto3" json:"MacOSVersion,omitempty"`
	NonceQueryArgChars string                 `protobuf:"bytes,5,opt,name=NonceQueryArgChars,proto3" json:"NonceQueryArgChars,omitempty"`
	ExtraURLParameters []*HTTPC2URLParameter  `protobuf:"bytes,6,rep,name=ExtraURLParameters,proto3" json:"ExtraURLParameters,omitempty"`
	Headers            []*HTTPC2Header        `protobuf:"bytes,7,rep,name=Headers,proto3" json:"Headers,omitempty"`
	MaxFileGen         int32                  `protobuf:"varint,8,opt,name=MaxFileGen,proto3" json:"MaxFileGen,omitempty"`
	MinFileGen         int32                  `protobuf:"varint,9,opt,name=MinFileGen,proto3" json:"MinFileGen,omitempty"`
	MaxPathGen         int32                  `protobuf:"varint,10,opt,name=MaxPathGen,proto3" json:"MaxPathGen,omitempty"`
	MinPathGen         int32                  `protobuf:"varint,11,opt,name=MinPathGen,proto3" json:"MinPathGen,omitempty"`
	MaxPathLength      int32                  `protobuf:"varint,12,opt,name=MaxPathLength,proto3" json:"MaxPathLength,omitempty"`
	MinPathLength      int32                  `protobuf:"varint,13,opt,name=MinPathLength,proto3" json:"MinPathLength,omitempty"`
	Extensions         []string               `protobuf:"bytes,14,rep,name=extensions,proto3" json:"extensions,omitempty"`
	PathSegments       []*HTTPC2PathSegment   `protobuf:"bytes,17,rep,name=PathSegments,proto3" json:"PathSegments,omitempty"`
	NonceQueryLength   int32                  `protobuf:"varint,18,opt,name=NonceQueryLength,proto3" json:"NonceQueryLength,omitempty"`
	NonceMode          string                 `protobuf:"bytes,19,opt,name=NonceMode,proto3" json:"NonceMode,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *HTTPC2ImplantConfig) Reset() {
	*x = HTTPC2ImplantConfig{}
	mi := &file_clientpb_client_proto_msgTypes[93]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2ImplantConfig) ProtoMessage() {}

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

// Deprecated: Use HTTPC2ImplantConfig.ProtoReflect.Descriptor instead.
func (*HTTPC2ImplantConfig) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{93}
}

func (x *HTTPC2ImplantConfig) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *HTTPC2ImplantConfig) GetUserAgent() string {
	if x != nil {
		return x.UserAgent
	}
	return ""
}

func (x *HTTPC2ImplantConfig) GetChromeBaseVersion() int32 {
	if x != nil {
		return x.ChromeBaseVersion
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetMacOSVersion() string {
	if x != nil {
		return x.MacOSVersion
	}
	return ""
}

func (x *HTTPC2ImplantConfig) GetNonceQueryArgChars() string {
	if x != nil {
		return x.NonceQueryArgChars
	}
	return ""
}

func (x *HTTPC2ImplantConfig) GetExtraURLParameters() []*HTTPC2URLParameter {
	if x != nil {
		return x.ExtraURLParameters
	}
	return nil
}

func (x *HTTPC2ImplantConfig) GetHeaders() []*HTTPC2Header {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *HTTPC2ImplantConfig) GetMaxFileGen() int32 {
	if x != nil {
		return x.MaxFileGen
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetMinFileGen() int32 {
	if x != nil {
		return x.MinFileGen
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetMaxPathGen() int32 {
	if x != nil {
		return x.MaxPathGen
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetMinPathGen() int32 {
	if x != nil {
		return x.MinPathGen
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetMaxPathLength() int32 {
	if x != nil {
		return x.MaxPathLength
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetMinPathLength() int32 {
	if x != nil {
		return x.MinPathLength
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetExtensions() []string {
	if x != nil {
		return x.Extensions
	}
	return nil
}

func (x *HTTPC2ImplantConfig) GetPathSegments() []*HTTPC2PathSegment {
	if x != nil {
		return x.PathSegments
	}
	return nil
}

func (x *HTTPC2ImplantConfig) GetNonceQueryLength() int32 {
	if x != nil {
		return x.NonceQueryLength
	}
	return 0
}

func (x *HTTPC2ImplantConfig) GetNonceMode() string {
	if x != nil {
		return x.NonceMode
	}
	return ""
}

type HTTPC2Cookie struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPC2Cookie) Reset() {
	*x = HTTPC2Cookie{}
	mi := &file_clientpb_client_proto_msgTypes[94]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2Cookie) ProtoMessage() {}

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

// Deprecated: Use HTTPC2Cookie.ProtoReflect.Descriptor instead.
func (*HTTPC2Cookie) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{94}
}

func (x *HTTPC2Cookie) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

type HTTPC2Header struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Method        string                 `protobuf:"bytes,2,opt,name=Method,proto3" json:"Method,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	Value         string                 `protobuf:"bytes,4,opt,name=Value,proto3" json:"Value,omitempty"`
	Probability   int32                  `protobuf:"varint,5,opt,name=Probability,proto3" json:"Probability,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPC2Header) Reset() {
	*x = HTTPC2Header{}
	mi := &file_clientpb_client_proto_msgTypes[95]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2Header) ProtoMessage() {}

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

// Deprecated: Use HTTPC2Header.ProtoReflect.Descriptor instead.
func (*HTTPC2Header) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{95}
}

func (x *HTTPC2Header) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

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

func (x *HTTPC2Header) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *HTTPC2Header) GetProbability() int32 {
	if x != nil {
		return x.Probability
	}
	return 0
}

type HTTPC2URLParameter struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Method        string                 `protobuf:"bytes,2,opt,name=Method,proto3" json:"Method,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	Value         string                 `protobuf:"bytes,4,opt,name=Value,proto3" json:"Value,omitempty"`
	Probability   int32                  `protobuf:"varint,5,opt,name=Probability,proto3" json:"Probability,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPC2URLParameter) Reset() {
	*x = HTTPC2URLParameter{}
	mi := &file_clientpb_client_proto_msgTypes[96]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2URLParameter) ProtoMessage() {}

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

// Deprecated: Use HTTPC2URLParameter.ProtoReflect.Descriptor instead.
func (*HTTPC2URLParameter) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{96}
}

func (x *HTTPC2URLParameter) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

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

func (x *HTTPC2URLParameter) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *HTTPC2URLParameter) GetProbability() int32 {
	if x != nil {
		return x.Probability
	}
	return 0
}

type HTTPC2PathSegment struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	IsFile        bool                   `protobuf:"varint,2,opt,name=IsFile,proto3" json:"IsFile,omitempty"`
	Value         string                 `protobuf:"bytes,3,opt,name=Value,proto3" json:"Value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPC2PathSegment) Reset() {
	*x = HTTPC2PathSegment{}
	mi := &file_clientpb_client_proto_msgTypes[97]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*HTTPC2PathSegment) ProtoMessage() {}

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

// Deprecated: Use HTTPC2PathSegment.ProtoReflect.Descriptor instead.
func (*HTTPC2PathSegment) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{97}
}

func (x *HTTPC2PathSegment) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *HTTPC2PathSegment) GetIsFile() bool {
	if x != nil {
		return x.IsFile
	}
	return false
}

func (x *HTTPC2PathSegment) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type Credential struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	ID             string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Username       string                 `protobuf:"bytes,2,opt,name=Username,proto3" json:"Username,omitempty"`
	Plaintext      string                 `protobuf:"bytes,3,opt,name=Plaintext,proto3" json:"Plaintext,omitempty"`
	Hash           string                 `protobuf:"bytes,4,opt,name=Hash,proto3" json:"Hash,omitempty"`
	HashType       HashType               `protobuf:"varint,5,opt,name=HashType,proto3,enum=clientpb.HashType" json:"HashType,omitempty"`
	IsCracked      bool                   `protobuf:"varint,6,opt,name=IsCracked,proto3" json:"IsCracked,omitempty"`
	OriginHostUUID string                 `protobuf:"bytes,7,opt,name=OriginHostUUID,proto3" json:"OriginHostUUID,omitempty"`
	Collection     string                 `protobuf:"bytes,8,opt,name=Collection,proto3" json:"Collection,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *Credential) Reset() {
	*x = Credential{}
	mi := &file_clientpb_client_proto_msgTypes[98]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Credential) ProtoMessage() {}

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

// Deprecated: Use Credential.ProtoReflect.Descriptor instead.
func (*Credential) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{98}
}

func (x *Credential) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *Credential) GetPlaintext() string {
	if x != nil {
		return x.Plaintext
	}
	return ""
}

func (x *Credential) GetHash() string {
	if x != nil {
		return x.Hash
	}
	return ""
}

func (x *Credential) GetHashType() HashType {
	if x != nil {
		return x.HashType
	}
	return HashType_MD5
}

func (x *Credential) GetIsCracked() bool {
	if x != nil {
		return x.IsCracked
	}
	return false
}

func (x *Credential) GetOriginHostUUID() string {
	if x != nil {
		return x.OriginHostUUID
	}
	return ""
}

func (x *Credential) GetCollection() string {
	if x != nil {
		return x.Collection
	}
	return ""
}

type Credentials struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Credentials   []*Credential          `protobuf:"bytes,1,rep,name=Credentials,proto3" json:"Credentials,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Credentials) Reset() {
	*x = Credentials{}
	mi := &file_clientpb_client_proto_msgTypes[99]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Credentials) ProtoMessage() {}

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

// Deprecated: Use Credentials.ProtoReflect.Descriptor instead.
func (*Credentials) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{99}
}

func (x *Credentials) GetCredentials() []*Credential {
	if x != nil {
		return x.Credentials
	}
	return nil
}

// [ Crackstation ] ----------------------------------------
type Crackstations struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Crackstations []*Crackstation        `protobuf:"bytes,1,rep,name=Crackstations,proto3" json:"Crackstations,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Crackstations) Reset() {
	*x = Crackstations{}
	mi := &file_clientpb_client_proto_msgTypes[100]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Crackstations) ProtoMessage() {}

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

// Deprecated: Use Crackstations.ProtoReflect.Descriptor instead.
func (*Crackstations) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{100}
}

func (x *Crackstations) GetCrackstations() []*Crackstation {
	if x != nil {
		return x.Crackstations
	}
	return nil
}

type CrackstationStatus struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Name              string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	HostUUID          string                 `protobuf:"bytes,2,opt,name=HostUUID,proto3" json:"HostUUID,omitempty"`
	State             States                 `protobuf:"varint,3,opt,name=State,proto3,enum=clientpb.States" json:"State,omitempty"`
	CurrentCrackJobID string                 `protobuf:"bytes,4,opt,name=CurrentCrackJobID,proto3" json:"CurrentCrackJobID,omitempty"`
	IsSyncing         bool                   `protobuf:"varint,5,opt,name=IsSyncing,proto3" json:"IsSyncing,omitempty"`
	Syncing           *CrackSyncStatus       `protobuf:"bytes,6,opt,name=Syncing,proto3" json:"Syncing,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *CrackstationStatus) Reset() {
	*x = CrackstationStatus{}
	mi := &file_clientpb_client_proto_msgTypes[101]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackstationStatus) ProtoMessage() {}

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

// Deprecated: Use CrackstationStatus.ProtoReflect.Descriptor instead.
func (*CrackstationStatus) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{101}
}

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

func (x *CrackstationStatus) GetHostUUID() string {
	if x != nil {
		return x.HostUUID
	}
	return ""
}

func (x *CrackstationStatus) GetState() States {
	if x != nil {
		return x.State
	}
	return States_IDLE
}

func (x *CrackstationStatus) GetCurrentCrackJobID() string {
	if x != nil {
		return x.CurrentCrackJobID
	}
	return ""
}

func (x *CrackstationStatus) GetIsSyncing() bool {
	if x != nil {
		return x.IsSyncing
	}
	return false
}

func (x *CrackstationStatus) GetSyncing() *CrackSyncStatus {
	if x != nil {
		return x.Syncing
	}
	return nil
}

type CrackSyncStatus struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Speed         float32                `protobuf:"fixed32,1,opt,name=Speed,proto3" json:"Speed,omitempty"`
	Progress      map[string]float32     `protobuf:"bytes,2,rep,name=Progress,proto3" json:"Progress,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CrackSyncStatus) Reset() {
	*x = CrackSyncStatus{}
	mi := &file_clientpb_client_proto_msgTypes[102]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackSyncStatus) ProtoMessage() {}

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

// Deprecated: Use CrackSyncStatus.ProtoReflect.Descriptor instead.
func (*CrackSyncStatus) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{102}
}

func (x *CrackSyncStatus) GetSpeed() float32 {
	if x != nil {
		return x.Speed
	}
	return 0
}

func (x *CrackSyncStatus) GetProgress() map[string]float32 {
	if x != nil {
		return x.Progress
	}
	return nil
}

type CrackBenchmark struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
	HostUUID      string                 `protobuf:"bytes,2,opt,name=HostUUID,proto3" json:"HostUUID,omitempty"`
	Benchmarks    map[int32]uint64       `protobuf:"bytes,3,rep,name=Benchmarks,proto3" json:"Benchmarks,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CrackBenchmark) Reset() {
	*x = CrackBenchmark{}
	mi := &file_clientpb_client_proto_msgTypes[103]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackBenchmark) ProtoMessage() {}

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

// Deprecated: Use CrackBenchmark.ProtoReflect.Descriptor instead.
func (*CrackBenchmark) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{103}
}

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

func (x *CrackBenchmark) GetHostUUID() string {
	if x != nil {
		return x.HostUUID
	}
	return ""
}

func (x *CrackBenchmark) GetBenchmarks() map[int32]uint64 {
	if x != nil {
		return x.Benchmarks
	}
	return nil
}

type CrackTask struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	HostUUID      string                 `protobuf:"bytes,2,opt,name=HostUUID,proto3" json:"HostUUID,omitempty"` // CrackstationID
	CreatedAt     int64                  `protobuf:"varint,3,opt,name=CreatedAt,proto3" json:"CreatedAt,omitempty"`
	StartedAt     int64                  `protobuf:"varint,4,opt,name=StartedAt,proto3" json:"StartedAt,omitempty"`
	CompletedAt   int64                  `protobuf:"varint,5,opt,name=CompletedAt,proto3" json:"CompletedAt,omitempty"`
	Err           string                 `protobuf:"bytes,7,opt,name=Err,proto3" json:"Err,omitempty"`
	Command       *CrackCommand          `protobuf:"bytes,9,opt,name=Command,proto3" json:"Command,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CrackTask) Reset() {
	*x = CrackTask{}
	mi := &file_clientpb_client_proto_msgTypes[104]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackTask) ProtoMessage() {}

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

// Deprecated: Use CrackTask.ProtoReflect.Descriptor instead.
func (*CrackTask) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{104}
}

func (x *CrackTask) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *CrackTask) GetHostUUID() string {
	if x != nil {
		return x.HostUUID
	}
	return ""
}

func (x *CrackTask) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *CrackTask) GetStartedAt() int64 {
	if x != nil {
		return x.StartedAt
	}
	return 0
}

func (x *CrackTask) GetCompletedAt() int64 {
	if x != nil {
		return x.CompletedAt
	}
	return 0
}

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

func (x *CrackTask) GetCommand() *CrackCommand {
	if x != nil {
		return x.Command
	}
	return nil
}

type Crackstation struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	ID             string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Name           string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	OperatorName   string                 `protobuf:"bytes,3,opt,name=OperatorName,proto3" json:"OperatorName,omitempty"`
	GOOS           string                 `protobuf:"bytes,4,opt,name=GOOS,proto3" json:"GOOS,omitempty"`     // The cracker's OS
	GOARCH         string                 `protobuf:"bytes,5,opt,name=GOARCH,proto3" json:"GOARCH,omitempty"` // The cracker's Arch
	HashcatVersion string                 `protobuf:"bytes,6,opt,name=HashcatVersion,proto3" json:"HashcatVersion,omitempty"`
	HostUUID       string                 `protobuf:"bytes,7,opt,name=HostUUID,proto3" json:"HostUUID,omitempty"`
	Version        string                 `protobuf:"bytes,8,opt,name=Version,proto3" json:"Version,omitempty"`
	Benchmarks     map[int32]uint64       `protobuf:"bytes,9,rep,name=Benchmarks,proto3" json:"Benchmarks,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	CUDA           []*CUDABackendInfo     `protobuf:"bytes,100,rep,name=CUDA,proto3" json:"CUDA,omitempty"`
	Metal          []*MetalBackendInfo    `protobuf:"bytes,101,rep,name=Metal,proto3" json:"Metal,omitempty"`
	OpenCL         []*OpenCLBackendInfo   `protobuf:"bytes,102,rep,name=OpenCL,proto3" json:"OpenCL,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *Crackstation) Reset() {
	*x = Crackstation{}
	mi := &file_clientpb_client_proto_msgTypes[105]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Crackstation) ProtoMessage() {}

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

// Deprecated: Use Crackstation.ProtoReflect.Descriptor instead.
func (*Crackstation) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{105}
}

func (x *Crackstation) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *Crackstation) GetOperatorName() string {
	if x != nil {
		return x.OperatorName
	}
	return ""
}

func (x *Crackstation) GetGOOS() string {
	if x != nil {
		return x.GOOS
	}
	return ""
}

func (x *Crackstation) GetGOARCH() string {
	if x != nil {
		return x.GOARCH
	}
	return ""
}

func (x *Crackstation) GetHashcatVersion() string {
	if x != nil {
		return x.HashcatVersion
	}
	return ""
}

func (x *Crackstation) GetHostUUID() string {
	if x != nil {
		return x.HostUUID
	}
	return ""
}

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

func (x *Crackstation) GetBenchmarks() map[int32]uint64 {
	if x != nil {
		return x.Benchmarks
	}
	return nil
}

func (x *Crackstation) GetCUDA() []*CUDABackendInfo {
	if x != nil {
		return x.CUDA
	}
	return nil
}

func (x *Crackstation) GetMetal() []*MetalBackendInfo {
	if x != nil {
		return x.Metal
	}
	return nil
}

func (x *Crackstation) GetOpenCL() []*OpenCLBackendInfo {
	if x != nil {
		return x.OpenCL
	}
	return nil
}

type CUDABackendInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          string                 `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
	VendorID      int32                  `protobuf:"varint,2,opt,name=VendorID,proto3" json:"VendorID,omitempty"`
	Vendor        string                 `protobuf:"bytes,3,opt,name=Vendor,proto3" json:"Vendor,omitempty"`
	Name          string                 `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"`
	Version       string                 `protobuf:"bytes,5,opt,name=Version,proto3" json:"Version,omitempty"`
	Processors    int32                  `protobuf:"varint,6,opt,name=Processors,proto3" json:"Processors,omitempty"`
	Clock         int32                  `protobuf:"varint,7,opt,name=Clock,proto3" json:"Clock,omitempty"`
	MemoryTotal   string                 `protobuf:"bytes,8,opt,name=MemoryTotal,proto3" json:"MemoryTotal,omitempty"`
	MemoryFree    string                 `protobuf:"bytes,9,opt,name=MemoryFree,proto3" json:"MemoryFree,omitempty"`
	CUDAVersion   string                 `protobuf:"bytes,10,opt,name=CUDAVersion,proto3" json:"CUDAVersion,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CUDABackendInfo) Reset() {
	*x = CUDABackendInfo{}
	mi := &file_clientpb_client_proto_msgTypes[106]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CUDABackendInfo) ProtoMessage() {}

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

// Deprecated: Use CUDABackendInfo.ProtoReflect.Descriptor instead.
func (*CUDABackendInfo) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{106}
}

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

func (x *CUDABackendInfo) GetVendorID() int32 {
	if x != nil {
		return x.VendorID
	}
	return 0
}

func (x *CUDABackendInfo) GetVendor() string {
	if x != nil {
		return x.Vendor
	}
	return ""
}

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

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

func (x *CUDABackendInfo) GetProcessors() int32 {
	if x != nil {
		return x.Processors
	}
	return 0
}

func (x *CUDABackendInfo) GetClock() int32 {
	if x != nil {
		return x.Clock
	}
	return 0
}

func (x *CUDABackendInfo) GetMemoryTotal() string {
	if x != nil {
		return x.MemoryTotal
	}
	return ""
}

func (x *CUDABackendInfo) GetMemoryFree() string {
	if x != nil {
		return x.MemoryFree
	}
	return ""
}

func (x *CUDABackendInfo) GetCUDAVersion() string {
	if x != nil {
		return x.CUDAVersion
	}
	return ""
}

type OpenCLBackendInfo struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	Type                string                 `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
	VendorID            int32                  `protobuf:"varint,2,opt,name=VendorID,proto3" json:"VendorID,omitempty"`
	Vendor              string                 `protobuf:"bytes,3,opt,name=Vendor,proto3" json:"Vendor,omitempty"`
	Name                string                 `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"`
	Version             string                 `protobuf:"bytes,5,opt,name=Version,proto3" json:"Version,omitempty"`
	Processors          int32                  `protobuf:"varint,6,opt,name=Processors,proto3" json:"Processors,omitempty"`
	Clock               int32                  `protobuf:"varint,7,opt,name=Clock,proto3" json:"Clock,omitempty"`
	MemoryTotal         string                 `protobuf:"bytes,8,opt,name=MemoryTotal,proto3" json:"MemoryTotal,omitempty"`
	MemoryFree          string                 `protobuf:"bytes,9,opt,name=MemoryFree,proto3" json:"MemoryFree,omitempty"`
	OpenCLVersion       string                 `protobuf:"bytes,10,opt,name=OpenCLVersion,proto3" json:"OpenCLVersion,omitempty"`
	OpenCLDriverVersion string                 `protobuf:"bytes,11,opt,name=OpenCLDriverVersion,proto3" json:"OpenCLDriverVersion,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *OpenCLBackendInfo) Reset() {
	*x = OpenCLBackendInfo{}
	mi := &file_clientpb_client_proto_msgTypes[107]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*OpenCLBackendInfo) ProtoMessage() {}

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

// Deprecated: Use OpenCLBackendInfo.ProtoReflect.Descriptor instead.
func (*OpenCLBackendInfo) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{107}
}

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

func (x *OpenCLBackendInfo) GetVendorID() int32 {
	if x != nil {
		return x.VendorID
	}
	return 0
}

func (x *OpenCLBackendInfo) GetVendor() string {
	if x != nil {
		return x.Vendor
	}
	return ""
}

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

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

func (x *OpenCLBackendInfo) GetProcessors() int32 {
	if x != nil {
		return x.Processors
	}
	return 0
}

func (x *OpenCLBackendInfo) GetClock() int32 {
	if x != nil {
		return x.Clock
	}
	return 0
}

func (x *OpenCLBackendInfo) GetMemoryTotal() string {
	if x != nil {
		return x.MemoryTotal
	}
	return ""
}

func (x *OpenCLBackendInfo) GetMemoryFree() string {
	if x != nil {
		return x.MemoryFree
	}
	return ""
}

func (x *OpenCLBackendInfo) GetOpenCLVersion() string {
	if x != nil {
		return x.OpenCLVersion
	}
	return ""
}

func (x *OpenCLBackendInfo) GetOpenCLDriverVersion() string {
	if x != nil {
		return x.OpenCLDriverVersion
	}
	return ""
}

type MetalBackendInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          string                 `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
	VendorID      int32                  `protobuf:"varint,2,opt,name=VendorID,proto3" json:"VendorID,omitempty"`
	Vendor        string                 `protobuf:"bytes,3,opt,name=Vendor,proto3" json:"Vendor,omitempty"`
	Name          string                 `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"`
	Version       string                 `protobuf:"bytes,5,opt,name=Version,proto3" json:"Version,omitempty"`
	Processors    int32                  `protobuf:"varint,6,opt,name=Processors,proto3" json:"Processors,omitempty"`
	Clock         int32                  `protobuf:"varint,7,opt,name=Clock,proto3" json:"Clock,omitempty"`
	MemoryTotal   string                 `protobuf:"bytes,8,opt,name=MemoryTotal,proto3" json:"MemoryTotal,omitempty"`
	MemoryFree    string                 `protobuf:"bytes,9,opt,name=MemoryFree,proto3" json:"MemoryFree,omitempty"`
	MetalVersion  string                 `protobuf:"bytes,10,opt,name=MetalVersion,proto3" json:"MetalVersion,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MetalBackendInfo) Reset() {
	*x = MetalBackendInfo{}
	mi := &file_clientpb_client_proto_msgTypes[108]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MetalBackendInfo) ProtoMessage() {}

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

// Deprecated: Use MetalBackendInfo.ProtoReflect.Descriptor instead.
func (*MetalBackendInfo) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{108}
}

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

func (x *MetalBackendInfo) GetVendorID() int32 {
	if x != nil {
		return x.VendorID
	}
	return 0
}

func (x *MetalBackendInfo) GetVendor() string {
	if x != nil {
		return x.Vendor
	}
	return ""
}

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

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

func (x *MetalBackendInfo) GetProcessors() int32 {
	if x != nil {
		return x.Processors
	}
	return 0
}

func (x *MetalBackendInfo) GetClock() int32 {
	if x != nil {
		return x.Clock
	}
	return 0
}

func (x *MetalBackendInfo) GetMemoryTotal() string {
	if x != nil {
		return x.MemoryTotal
	}
	return ""
}

func (x *MetalBackendInfo) GetMemoryFree() string {
	if x != nil {
		return x.MemoryFree
	}
	return ""
}

func (x *MetalBackendInfo) GetMetalVersion() string {
	if x != nil {
		return x.MetalVersion
	}
	return ""
}

type CrackCommand struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	AttackMode CrackAttackMode        `protobuf:"varint,1,opt,name=AttackMode,proto3,enum=clientpb.CrackAttackMode" json:"AttackMode,omitempty"`
	HashType   HashType               `protobuf:"varint,2,opt,name=HashType,proto3,enum=clientpb.HashType" json:"HashType,omitempty"`
	Hashes     []string               `protobuf:"bytes,3,rep,name=Hashes,proto3" json:"Hashes,omitempty"`
	// --version
	// --help
	Quiet                  bool   `protobuf:"varint,4,opt,name=Quiet,proto3" json:"Quiet,omitempty"`
	HexCharset             bool   `protobuf:"varint,5,opt,name=HexCharset,proto3" json:"HexCharset,omitempty"`
	HexSalt                bool   `protobuf:"varint,6,opt,name=HexSalt,proto3" json:"HexSalt,omitempty"`
	HexWordlist            bool   `protobuf:"varint,7,opt,name=HexWordlist,proto3" json:"HexWordlist,omitempty"`
	Force                  bool   `protobuf:"varint,8,opt,name=Force,proto3" json:"Force,omitempty"`
	DeprecatedCheckDisable bool   `protobuf:"varint,9,opt,name=DeprecatedCheckDisable,proto3" json:"DeprecatedCheckDisable,omitempty"`
	Status                 bool   `protobuf:"varint,10,opt,name=Status,proto3" json:"Status,omitempty"`
	StatusJSON             bool   `protobuf:"varint,11,opt,name=StatusJSON,proto3" json:"StatusJSON,omitempty"`
	StatusTimer            uint32 `protobuf:"varint,12,opt,name=StatusTimer,proto3" json:"StatusTimer,omitempty"`
	StdinTimeoutAbort      uint32 `protobuf:"varint,13,opt,name=StdinTimeoutAbort,proto3" json:"StdinTimeoutAbort,omitempty"`
	MachineReadable        bool   `protobuf:"varint,14,opt,name=MachineReadable,proto3" json:"MachineReadable,omitempty"`
	KeepGuessing           bool   `protobuf:"varint,15,opt,name=KeepGuessing,proto3" json:"KeepGuessing,omitempty"`
	SelfTestDisable        bool   `protobuf:"varint,16,opt,name=SelfTestDisable,proto3" json:"SelfTestDisable,omitempty"`
	Loopback               bool   `protobuf:"varint,17,opt,name=Loopback,proto3" json:"Loopback,omitempty"`
	MarkovHcstat2          []byte `protobuf:"bytes,18,opt,name=MarkovHcstat2,proto3" json:"MarkovHcstat2,omitempty"` // --markov-hcstat2 FILE
	MarkovDisable          bool   `protobuf:"varint,19,opt,name=MarkovDisable,proto3" json:"MarkovDisable,omitempty"`
	MarkovClassic          bool   `protobuf:"varint,20,opt,name=MarkovClassic,proto3" json:"MarkovClassic,omitempty"`
	MarkovInverse          bool   `protobuf:"varint,21,opt,name=MarkovInverse,proto3" json:"MarkovInverse,omitempty"`
	MarkovThreshold        uint32 `protobuf:"varint,22,opt,name=MarkovThreshold,proto3" json:"MarkovThreshold,omitempty"`
	Runtime                uint32 `protobuf:"varint,23,opt,name=Runtime,proto3" json:"Runtime,omitempty"`
	Session                string `protobuf:"bytes,24,opt,name=Session,proto3" json:"Session,omitempty"` // [a-zA-Z0-9_-]
	Restore                bool   `protobuf:"varint,25,opt,name=Restore,proto3" json:"Restore,omitempty"`
	RestoreDisable         bool   `protobuf:"varint,26,opt,name=RestoreDisable,proto3" json:"RestoreDisable,omitempty"`
	RestoreFile            []byte `protobuf:"bytes,27,opt,name=RestoreFile,proto3" json:"RestoreFile,omitempty"` // --restore-file-path FILE
	// --outfile FILE (28)
	OutfileFormat          []CrackOutfileFormat `protobuf:"varint,29,rep,packed,name=OutfileFormat,proto3,enum=clientpb.CrackOutfileFormat" json:"OutfileFormat,omitempty"`
	OutfileAutohexDisable  bool                 `protobuf:"varint,30,opt,name=OutfileAutohexDisable,proto3" json:"OutfileAutohexDisable,omitempty"`
	OutfileCheckTimer      uint32               `protobuf:"varint,31,opt,name=OutfileCheckTimer,proto3" json:"OutfileCheckTimer,omitempty"`
	WordlistAutohexDisable bool                 `protobuf:"varint,32,opt,name=WordlistAutohexDisable,proto3" json:"WordlistAutohexDisable,omitempty"`
	Separator              string               `protobuf:"bytes,33,opt,name=Separator,proto3" json:"Separator,omitempty"` // single char
	Stdout                 bool                 `protobuf:"varint,34,opt,name=Stdout,proto3" json:"Stdout,omitempty"`
	Show                   bool                 `protobuf:"varint,35,opt,name=Show,proto3" json:"Show,omitempty"`
	Left                   bool                 `protobuf:"varint,36,opt,name=Left,proto3" json:"Left,omitempty"`
	Username               bool                 `protobuf:"varint,37,opt,name=Username,proto3" json:"Username,omitempty"`
	Remove                 bool                 `protobuf:"varint,38,opt,name=Remove,proto3" json:"Remove,omitempty"`
	RemoveTimer            uint32               `protobuf:"varint,39,opt,name=RemoveTimer,proto3" json:"RemoveTimer,omitempty"`
	PotfileDisable         bool                 `protobuf:"varint,40,opt,name=PotfileDisable,proto3" json:"PotfileDisable,omitempty"`
	Potfile                []byte               `protobuf:"bytes,41,opt,name=Potfile,proto3" json:"Potfile,omitempty"` // --potfile-path FILE
	EncodingFrom           CrackEncoding        `protobuf:"varint,42,opt,name=EncodingFrom,proto3,enum=clientpb.CrackEncoding" json:"EncodingFrom,omitempty"`
	EncodingTo             CrackEncoding        `protobuf:"varint,43,opt,name=EncodingTo,proto3,enum=clientpb.CrackEncoding" json:"EncodingTo,omitempty"`
	DebugMode              uint32               `protobuf:"varint,44,opt,name=DebugMode,proto3" json:"DebugMode,omitempty"`
	// --debug-file FILE (45)
	// --induction-dir DIR (46)
	// --outfile-check-dir DIR (47)
	LogfileDisable        bool   `protobuf:"varint,48,opt,name=LogfileDisable,proto3" json:"LogfileDisable,omitempty"`
	HccapxMessagePair     uint32 `protobuf:"varint,49,opt,name=HccapxMessagePair,proto3" json:"HccapxMessagePair,omitempty"`
	NonceErrorCorrections uint32 `protobuf:"varint,50,opt,name=NonceErrorCorrections,proto3" json:"NonceErrorCorrections,omitempty"`
	KeyboardLayoutMapping []byte `protobuf:"bytes,51,opt,name=KeyboardLayoutMapping,proto3" json:"KeyboardLayoutMapping,omitempty"` // --keyboard-layout-mapping FILE
	// --truecrypt-keyfiles FILE (52)
	// --veracrypt-keyfiles FILE (53)
	// --veracrypt-pim-start PIM (54)
	// --veracrypt-pim-stop PIM (55)
	Benchmark    bool     `protobuf:"varint,56,opt,name=Benchmark,proto3" json:"Benchmark,omitempty"`
	BenchmarkAll bool     `protobuf:"varint,57,opt,name=BenchmarkAll,proto3" json:"BenchmarkAll,omitempty"`
	SpeedOnly    bool     `protobuf:"varint,58,opt,name=SpeedOnly,proto3" json:"SpeedOnly,omitempty"`
	ProgressOnly bool     `protobuf:"varint,59,opt,name=ProgressOnly,proto3" json:"ProgressOnly,omitempty"`
	SegmentSize  uint32   `protobuf:"varint,60,opt,name=SegmentSize,proto3" json:"SegmentSize,omitempty"`
	BitmapMin    uint32   `protobuf:"varint,61,opt,name=BitmapMin,proto3" json:"BitmapMin,omitempty"`
	BitmapMax    uint32   `protobuf:"varint,62,opt,name=BitmapMax,proto3" json:"BitmapMax,omitempty"`
	CPUAffinity  []uint32 `protobuf:"varint,63,rep,packed,name=CPUAffinity,proto3" json:"CPUAffinity,omitempty"`
	HookThreads  uint32   `protobuf:"varint,64,opt,name=HookThreads,proto3" json:"HookThreads,omitempty"`
	HashInfo     bool     `protobuf:"varint,65,opt,name=HashInfo,proto3" json:"HashInfo,omitempty"`
	// --example-hashes (66)
	BackendIgnoreCUDA     bool                 `protobuf:"varint,67,opt,name=BackendIgnoreCUDA,proto3" json:"BackendIgnoreCUDA,omitempty"`
	BackendIgnoreHip      bool                 `protobuf:"varint,68,opt,name=BackendIgnoreHip,proto3" json:"BackendIgnoreHip,omitempty"`
	BackendIgnoreMetal    bool                 `protobuf:"varint,69,opt,name=BackendIgnoreMetal,proto3" json:"BackendIgnoreMetal,omitempty"`
	BackendIgnoreOpenCL   bool                 `protobuf:"varint,70,opt,name=BackendIgnoreOpenCL,proto3" json:"BackendIgnoreOpenCL,omitempty"`
	BackendInfo           bool                 `protobuf:"varint,71,opt,name=BackendInfo,proto3" json:"BackendInfo,omitempty"`
	BackendDevices        []uint32             `protobuf:"varint,72,rep,packed,name=BackendDevices,proto3" json:"BackendDevices,omitempty"`
	OpenCLDeviceTypes     []uint32             `protobuf:"varint,73,rep,packed,name=OpenCLDeviceTypes,proto3" json:"OpenCLDeviceTypes,omitempty"`
	OptimizedKernelEnable bool                 `protobuf:"varint,74,opt,name=OptimizedKernelEnable,proto3" json:"OptimizedKernelEnable,omitempty"`
	MultiplyAccelDisabled bool                 `protobuf:"varint,75,opt,name=MultiplyAccelDisabled,proto3" json:"MultiplyAccelDisabled,omitempty"`
	WorkloadProfile       CrackWorkloadProfile `protobuf:"varint,76,opt,name=WorkloadProfile,proto3,enum=clientpb.CrackWorkloadProfile" json:"WorkloadProfile,omitempty"`
	KernelAccel           uint32               `protobuf:"varint,77,opt,name=KernelAccel,proto3" json:"KernelAccel,omitempty"`
	KernelLoops           uint32               `protobuf:"varint,78,opt,name=KernelLoops,proto3" json:"KernelLoops,omitempty"`
	KernelThreads         uint32               `protobuf:"varint,79,opt,name=KernelThreads,proto3" json:"KernelThreads,omitempty"`
	BackendVectorWidth    uint32               `protobuf:"varint,80,opt,name=BackendVectorWidth,proto3" json:"BackendVectorWidth,omitempty"`
	SpinDamp              uint32               `protobuf:"varint,81,opt,name=SpinDamp,proto3" json:"SpinDamp,omitempty"`
	HwmonDisable          bool                 `protobuf:"varint,82,opt,name=HwmonDisable,proto3" json:"HwmonDisable,omitempty"`
	HwmonTempAbort        uint32               `protobuf:"varint,83,opt,name=HwmonTempAbort,proto3" json:"HwmonTempAbort,omitempty"`
	ScryptTMTO            uint32               `protobuf:"varint,84,opt,name=ScryptTMTO,proto3" json:"ScryptTMTO,omitempty"`
	Skip                  uint64               `protobuf:"varint,85,opt,name=Skip,proto3" json:"Skip,omitempty"`
	Limit                 uint64               `protobuf:"varint,86,opt,name=Limit,proto3" json:"Limit,omitempty"`
	Keyspace              bool                 `protobuf:"varint,87,opt,name=Keyspace,proto3" json:"Keyspace,omitempty"`
	// --rule-left (88)
	// --rule-right (89)
	RulesFile             []byte `protobuf:"bytes,90,opt,name=RulesFile,proto3" json:"RulesFile,omitempty"` // --rules-file FILE
	GenerateRules         uint32 `protobuf:"varint,91,opt,name=GenerateRules,proto3" json:"GenerateRules,omitempty"`
	GenerateRulesFunMin   uint32 `protobuf:"varint,92,opt,name=GenerateRulesFunMin,proto3" json:"GenerateRulesFunMin,omitempty"`
	GenerateRulesFunMax   uint32 `protobuf:"varint,93,opt,name=GenerateRulesFunMax,proto3" json:"GenerateRulesFunMax,omitempty"`
	GenerateRulesFuncSel  string `protobuf:"bytes,94,opt,name=GenerateRulesFuncSel,proto3" json:"GenerateRulesFuncSel,omitempty"`
	GenerateRulesSeed     int32  `protobuf:"varint,95,opt,name=GenerateRulesSeed,proto3" json:"GenerateRulesSeed,omitempty"`
	CustomCharset1        string `protobuf:"bytes,96,opt,name=CustomCharset1,proto3" json:"CustomCharset1,omitempty"`
	CustomCharset2        string `protobuf:"bytes,97,opt,name=CustomCharset2,proto3" json:"CustomCharset2,omitempty"`
	CustomCharset3        string `protobuf:"bytes,98,opt,name=CustomCharset3,proto3" json:"CustomCharset3,omitempty"`
	CustomCharset4        string `protobuf:"bytes,99,opt,name=CustomCharset4,proto3" json:"CustomCharset4,omitempty"`
	Identify              string `protobuf:"bytes,100,opt,name=Identify,proto3" json:"Identify,omitempty"`
	Increment             bool   `protobuf:"varint,101,opt,name=Increment,proto3" json:"Increment,omitempty"`
	IncrementMin          uint32 `protobuf:"varint,102,opt,name=IncrementMin,proto3" json:"IncrementMin,omitempty"`
	IncrementMax          uint32 `protobuf:"varint,103,opt,name=IncrementMax,proto3" json:"IncrementMax,omitempty"`
	SlowCandidates        bool   `protobuf:"varint,104,opt,name=SlowCandidates,proto3" json:"SlowCandidates,omitempty"`
	BrainServer           bool   `protobuf:"varint,105,opt,name=BrainServer,proto3" json:"BrainServer,omitempty"`
	BrainServerTimer      uint32 `protobuf:"varint,106,opt,name=BrainServerTimer,proto3" json:"BrainServerTimer,omitempty"`
	BrainClient           bool   `protobuf:"varint,107,opt,name=BrainClient,proto3" json:"BrainClient,omitempty"`
	BrainClientFeatures   string `protobuf:"bytes,108,opt,name=BrainClientFeatures,proto3" json:"BrainClientFeatures,omitempty"`
	BrainHost             string `protobuf:"bytes,109,opt,name=BrainHost,proto3" json:"BrainHost,omitempty"`
	BrainPort             uint32 `protobuf:"varint,110,opt,name=BrainPort,proto3" json:"BrainPort,omitempty"`
	BrainPassword         string `protobuf:"bytes,111,opt,name=BrainPassword,proto3" json:"BrainPassword,omitempty"`
	BrainSession          string `protobuf:"bytes,112,opt,name=BrainSession,proto3" json:"BrainSession,omitempty"`
	BrainSessionWhitelist string `protobuf:"bytes,113,opt,name=BrainSessionWhitelist,proto3" json:"BrainSessionWhitelist,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *CrackCommand) Reset() {
	*x = CrackCommand{}
	mi := &file_clientpb_client_proto_msgTypes[109]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackCommand) ProtoMessage() {}

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

// Deprecated: Use CrackCommand.ProtoReflect.Descriptor instead.
func (*CrackCommand) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{109}
}

func (x *CrackCommand) GetAttackMode() CrackAttackMode {
	if x != nil {
		return x.AttackMode
	}
	return CrackAttackMode_STRAIGHT
}

func (x *CrackCommand) GetHashType() HashType {
	if x != nil {
		return x.HashType
	}
	return HashType_MD5
}

func (x *CrackCommand) GetHashes() []string {
	if x != nil {
		return x.Hashes
	}
	return nil
}

func (x *CrackCommand) GetQuiet() bool {
	if x != nil {
		return x.Quiet
	}
	return false
}

func (x *CrackCommand) GetHexCharset() bool {
	if x != nil {
		return x.HexCharset
	}
	return false
}

func (x *CrackCommand) GetHexSalt() bool {
	if x != nil {
		return x.HexSalt
	}
	return false
}

func (x *CrackCommand) GetHexWordlist() bool {
	if x != nil {
		return x.HexWordlist
	}
	return false
}

func (x *CrackCommand) GetForce() bool {
	if x != nil {
		return x.Force
	}
	return false
}

func (x *CrackCommand) GetDeprecatedCheckDisable() bool {
	if x != nil {
		return x.DeprecatedCheckDisable
	}
	return false
}

func (x *CrackCommand) GetStatus() bool {
	if x != nil {
		return x.Status
	}
	return false
}

func (x *CrackCommand) GetStatusJSON() bool {
	if x != nil {
		return x.StatusJSON
	}
	return false
}

func (x *CrackCommand) GetStatusTimer() uint32 {
	if x != nil {
		return x.StatusTimer
	}
	return 0
}

func (x *CrackCommand) GetStdinTimeoutAbort() uint32 {
	if x != nil {
		return x.StdinTimeoutAbort
	}
	return 0
}

func (x *CrackCommand) GetMachineReadable() bool {
	if x != nil {
		return x.MachineReadable
	}
	return false
}

func (x *CrackCommand) GetKeepGuessing() bool {
	if x != nil {
		return x.KeepGuessing
	}
	return false
}

func (x *CrackCommand) GetSelfTestDisable() bool {
	if x != nil {
		return x.SelfTestDisable
	}
	return false
}

func (x *CrackCommand) GetLoopback() bool {
	if x != nil {
		return x.Loopback
	}
	return false
}

func (x *CrackCommand) GetMarkovHcstat2() []byte {
	if x != nil {
		return x.MarkovHcstat2
	}
	return nil
}

func (x *CrackCommand) GetMarkovDisable() bool {
	if x != nil {
		return x.MarkovDisable
	}
	return false
}

func (x *CrackCommand) GetMarkovClassic() bool {
	if x != nil {
		return x.MarkovClassic
	}
	return false
}

func (x *CrackCommand) GetMarkovInverse() bool {
	if x != nil {
		return x.MarkovInverse
	}
	return false
}

func (x *CrackCommand) GetMarkovThreshold() uint32 {
	if x != nil {
		return x.MarkovThreshold
	}
	return 0
}

func (x *CrackCommand) GetRuntime() uint32 {
	if x != nil {
		return x.Runtime
	}
	return 0
}

func (x *CrackCommand) GetSession() string {
	if x != nil {
		return x.Session
	}
	return ""
}

func (x *CrackCommand) GetRestore() bool {
	if x != nil {
		return x.Restore
	}
	return false
}

func (x *CrackCommand) GetRestoreDisable() bool {
	if x != nil {
		return x.RestoreDisable
	}
	return false
}

func (x *CrackCommand) GetRestoreFile() []byte {
	if x != nil {
		return x.RestoreFile
	}
	return nil
}

func (x *CrackCommand) GetOutfileFormat() []CrackOutfileFormat {
	if x != nil {
		return x.OutfileFormat
	}
	return nil
}

func (x *CrackCommand) GetOutfileAutohexDisable() bool {
	if x != nil {
		return x.OutfileAutohexDisable
	}
	return false
}

func (x *CrackCommand) GetOutfileCheckTimer() uint32 {
	if x != nil {
		return x.OutfileCheckTimer
	}
	return 0
}

func (x *CrackCommand) GetWordlistAutohexDisable() bool {
	if x != nil {
		return x.WordlistAutohexDisable
	}
	return false
}

func (x *CrackCommand) GetSeparator() string {
	if x != nil {
		return x.Separator
	}
	return ""
}

func (x *CrackCommand) GetStdout() bool {
	if x != nil {
		return x.Stdout
	}
	return false
}

func (x *CrackCommand) GetShow() bool {
	if x != nil {
		return x.Show
	}
	return false
}

func (x *CrackCommand) GetLeft() bool {
	if x != nil {
		return x.Left
	}
	return false
}

func (x *CrackCommand) GetUsername() bool {
	if x != nil {
		return x.Username
	}
	return false
}

func (x *CrackCommand) GetRemove() bool {
	if x != nil {
		return x.Remove
	}
	return false
}

func (x *CrackCommand) GetRemoveTimer() uint32 {
	if x != nil {
		return x.RemoveTimer
	}
	return 0
}

func (x *CrackCommand) GetPotfileDisable() bool {
	if x != nil {
		return x.PotfileDisable
	}
	return false
}

func (x *CrackCommand) GetPotfile() []byte {
	if x != nil {
		return x.Potfile
	}
	return nil
}

func (x *CrackCommand) GetEncodingFrom() CrackEncoding {
	if x != nil {
		return x.EncodingFrom
	}
	return CrackEncoding_INVALID_ENCODING
}

func (x *CrackCommand) GetEncodingTo() CrackEncoding {
	if x != nil {
		return x.EncodingTo
	}
	return CrackEncoding_INVALID_ENCODING
}

func (x *CrackCommand) GetDebugMode() uint32 {
	if x != nil {
		return x.DebugMode
	}
	return 0
}

func (x *CrackCommand) GetLogfileDisable() bool {
	if x != nil {
		return x.LogfileDisable
	}
	return false
}

func (x *CrackCommand) GetHccapxMessagePair() uint32 {
	if x != nil {
		return x.HccapxMessagePair
	}
	return 0
}

func (x *CrackCommand) GetNonceErrorCorrections() uint32 {
	if x != nil {
		return x.NonceErrorCorrections
	}
	return 0
}

func (x *CrackCommand) GetKeyboardLayoutMapping() []byte {
	if x != nil {
		return x.KeyboardLayoutMapping
	}
	return nil
}

func (x *CrackCommand) GetBenchmark() bool {
	if x != nil {
		return x.Benchmark
	}
	return false
}

func (x *CrackCommand) GetBenchmarkAll() bool {
	if x != nil {
		return x.BenchmarkAll
	}
	return false
}

func (x *CrackCommand) GetSpeedOnly() bool {
	if x != nil {
		return x.SpeedOnly
	}
	return false
}

func (x *CrackCommand) GetProgressOnly() bool {
	if x != nil {
		return x.ProgressOnly
	}
	return false
}

func (x *CrackCommand) GetSegmentSize() uint32 {
	if x != nil {
		return x.SegmentSize
	}
	return 0
}

func (x *CrackCommand) GetBitmapMin() uint32 {
	if x != nil {
		return x.BitmapMin
	}
	return 0
}

func (x *CrackCommand) GetBitmapMax() uint32 {
	if x != nil {
		return x.BitmapMax
	}
	return 0
}

func (x *CrackCommand) GetCPUAffinity() []uint32 {
	if x != nil {
		return x.CPUAffinity
	}
	return nil
}

func (x *CrackCommand) GetHookThreads() uint32 {
	if x != nil {
		return x.HookThreads
	}
	return 0
}

func (x *CrackCommand) GetHashInfo() bool {
	if x != nil {
		return x.HashInfo
	}
	return false
}

func (x *CrackCommand) GetBackendIgnoreCUDA() bool {
	if x != nil {
		return x.BackendIgnoreCUDA
	}
	return false
}

func (x *CrackCommand) GetBackendIgnoreHip() bool {
	if x != nil {
		return x.BackendIgnoreHip
	}
	return false
}

func (x *CrackCommand) GetBackendIgnoreMetal() bool {
	if x != nil {
		return x.BackendIgnoreMetal
	}
	return false
}

func (x *CrackCommand) GetBackendIgnoreOpenCL() bool {
	if x != nil {
		return x.BackendIgnoreOpenCL
	}
	return false
}

func (x *CrackCommand) GetBackendInfo() bool {
	if x != nil {
		return x.BackendInfo
	}
	return false
}

func (x *CrackCommand) GetBackendDevices() []uint32 {
	if x != nil {
		return x.BackendDevices
	}
	return nil
}

func (x *CrackCommand) GetOpenCLDeviceTypes() []uint32 {
	if x != nil {
		return x.OpenCLDeviceTypes
	}
	return nil
}

func (x *CrackCommand) GetOptimizedKernelEnable() bool {
	if x != nil {
		return x.OptimizedKernelEnable
	}
	return false
}

func (x *CrackCommand) GetMultiplyAccelDisabled() bool {
	if x != nil {
		return x.MultiplyAccelDisabled
	}
	return false
}

func (x *CrackCommand) GetWorkloadProfile() CrackWorkloadProfile {
	if x != nil {
		return x.WorkloadProfile
	}
	return CrackWorkloadProfile_INVALID_WORKLOAD_PROFILE
}

func (x *CrackCommand) GetKernelAccel() uint32 {
	if x != nil {
		return x.KernelAccel
	}
	return 0
}

func (x *CrackCommand) GetKernelLoops() uint32 {
	if x != nil {
		return x.KernelLoops
	}
	return 0
}

func (x *CrackCommand) GetKernelThreads() uint32 {
	if x != nil {
		return x.KernelThreads
	}
	return 0
}

func (x *CrackCommand) GetBackendVectorWidth() uint32 {
	if x != nil {
		return x.BackendVectorWidth
	}
	return 0
}

func (x *CrackCommand) GetSpinDamp() uint32 {
	if x != nil {
		return x.SpinDamp
	}
	return 0
}

func (x *CrackCommand) GetHwmonDisable() bool {
	if x != nil {
		return x.HwmonDisable
	}
	return false
}

func (x *CrackCommand) GetHwmonTempAbort() uint32 {
	if x != nil {
		return x.HwmonTempAbort
	}
	return 0
}

func (x *CrackCommand) GetScryptTMTO() uint32 {
	if x != nil {
		return x.ScryptTMTO
	}
	return 0
}

func (x *CrackCommand) GetSkip() uint64 {
	if x != nil {
		return x.Skip
	}
	return 0
}

func (x *CrackCommand) GetLimit() uint64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *CrackCommand) GetKeyspace() bool {
	if x != nil {
		return x.Keyspace
	}
	return false
}

func (x *CrackCommand) GetRulesFile() []byte {
	if x != nil {
		return x.RulesFile
	}
	return nil
}

func (x *CrackCommand) GetGenerateRules() uint32 {
	if x != nil {
		return x.GenerateRules
	}
	return 0
}

func (x *CrackCommand) GetGenerateRulesFunMin() uint32 {
	if x != nil {
		return x.GenerateRulesFunMin
	}
	return 0
}

func (x *CrackCommand) GetGenerateRulesFunMax() uint32 {
	if x != nil {
		return x.GenerateRulesFunMax
	}
	return 0
}

func (x *CrackCommand) GetGenerateRulesFuncSel() string {
	if x != nil {
		return x.GenerateRulesFuncSel
	}
	return ""
}

func (x *CrackCommand) GetGenerateRulesSeed() int32 {
	if x != nil {
		return x.GenerateRulesSeed
	}
	return 0
}

func (x *CrackCommand) GetCustomCharset1() string {
	if x != nil {
		return x.CustomCharset1
	}
	return ""
}

func (x *CrackCommand) GetCustomCharset2() string {
	if x != nil {
		return x.CustomCharset2
	}
	return ""
}

func (x *CrackCommand) GetCustomCharset3() string {
	if x != nil {
		return x.CustomCharset3
	}
	return ""
}

func (x *CrackCommand) GetCustomCharset4() string {
	if x != nil {
		return x.CustomCharset4
	}
	return ""
}

func (x *CrackCommand) GetIdentify() string {
	if x != nil {
		return x.Identify
	}
	return ""
}

func (x *CrackCommand) GetIncrement() bool {
	if x != nil {
		return x.Increment
	}
	return false
}

func (x *CrackCommand) GetIncrementMin() uint32 {
	if x != nil {
		return x.IncrementMin
	}
	return 0
}

func (x *CrackCommand) GetIncrementMax() uint32 {
	if x != nil {
		return x.IncrementMax
	}
	return 0
}

func (x *CrackCommand) GetSlowCandidates() bool {
	if x != nil {
		return x.SlowCandidates
	}
	return false
}

func (x *CrackCommand) GetBrainServer() bool {
	if x != nil {
		return x.BrainServer
	}
	return false
}

func (x *CrackCommand) GetBrainServerTimer() uint32 {
	if x != nil {
		return x.BrainServerTimer
	}
	return 0
}

func (x *CrackCommand) GetBrainClient() bool {
	if x != nil {
		return x.BrainClient
	}
	return false
}

func (x *CrackCommand) GetBrainClientFeatures() string {
	if x != nil {
		return x.BrainClientFeatures
	}
	return ""
}

func (x *CrackCommand) GetBrainHost() string {
	if x != nil {
		return x.BrainHost
	}
	return ""
}

func (x *CrackCommand) GetBrainPort() uint32 {
	if x != nil {
		return x.BrainPort
	}
	return 0
}

func (x *CrackCommand) GetBrainPassword() string {
	if x != nil {
		return x.BrainPassword
	}
	return ""
}

func (x *CrackCommand) GetBrainSession() string {
	if x != nil {
		return x.BrainSession
	}
	return ""
}

func (x *CrackCommand) GetBrainSessionWhitelist() string {
	if x != nil {
		return x.BrainSessionWhitelist
	}
	return ""
}

type CrackConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	AutoFire      bool                   `protobuf:"varint,1,opt,name=AutoFire,proto3" json:"AutoFire,omitempty"`
	MaxFileSize   int64                  `protobuf:"varint,2,opt,name=MaxFileSize,proto3" json:"MaxFileSize,omitempty"`
	ChunkSize     int64                  `protobuf:"varint,3,opt,name=ChunkSize,proto3" json:"ChunkSize,omitempty"`
	MaxDiskUsage  int64                  `protobuf:"varint,4,opt,name=MaxDiskUsage,proto3" json:"MaxDiskUsage,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CrackConfig) Reset() {
	*x = CrackConfig{}
	mi := &file_clientpb_client_proto_msgTypes[110]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackConfig) ProtoMessage() {}

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

// Deprecated: Use CrackConfig.ProtoReflect.Descriptor instead.
func (*CrackConfig) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{110}
}

func (x *CrackConfig) GetAutoFire() bool {
	if x != nil {
		return x.AutoFire
	}
	return false
}

func (x *CrackConfig) GetMaxFileSize() int64 {
	if x != nil {
		return x.MaxFileSize
	}
	return 0
}

func (x *CrackConfig) GetChunkSize() int64 {
	if x != nil {
		return x.ChunkSize
	}
	return 0
}

func (x *CrackConfig) GetMaxDiskUsage() int64 {
	if x != nil {
		return x.MaxDiskUsage
	}
	return 0
}

type CrackFiles struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Files            []*CrackFile           `protobuf:"bytes,1,rep,name=Files,proto3" json:"Files,omitempty"`
	CurrentDiskUsage int64                  `protobuf:"varint,2,opt,name=CurrentDiskUsage,proto3" json:"CurrentDiskUsage,omitempty"`
	MaxDiskUsage     int64                  `protobuf:"varint,3,opt,name=MaxDiskUsage,proto3" json:"MaxDiskUsage,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *CrackFiles) Reset() {
	*x = CrackFiles{}
	mi := &file_clientpb_client_proto_msgTypes[111]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackFiles) ProtoMessage() {}

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

// Deprecated: Use CrackFiles.ProtoReflect.Descriptor instead.
func (*CrackFiles) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{111}
}

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

func (x *CrackFiles) GetCurrentDiskUsage() int64 {
	if x != nil {
		return x.CurrentDiskUsage
	}
	return 0
}

func (x *CrackFiles) GetMaxDiskUsage() int64 {
	if x != nil {
		return x.MaxDiskUsage
	}
	return 0
}

type CrackFile struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	ID               string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	CreatedAt        int64                  `protobuf:"varint,2,opt,name=CreatedAt,proto3" json:"CreatedAt,omitempty"`
	LastModified     int64                  `protobuf:"varint,3,opt,name=LastModified,proto3" json:"LastModified,omitempty"`
	Name             string                 `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"`
	UncompressedSize int64                  `protobuf:"varint,5,opt,name=UncompressedSize,proto3" json:"UncompressedSize,omitempty"`
	Sha2_256         string                 `protobuf:"bytes,6,opt,name=Sha2_256,json=Sha2256,proto3" json:"Sha2_256,omitempty"`
	Type             CrackFileType          `protobuf:"varint,7,opt,name=Type,proto3,enum=clientpb.CrackFileType" json:"Type,omitempty"`
	IsCompressed     bool                   `protobuf:"varint,8,opt,name=IsCompressed,proto3" json:"IsCompressed,omitempty"`
	MaxFileSize      int64                  `protobuf:"varint,9,opt,name=MaxFileSize,proto3" json:"MaxFileSize,omitempty"`
	ChunkSize        int64                  `protobuf:"varint,10,opt,name=ChunkSize,proto3" json:"ChunkSize,omitempty"`
	Chunks           []*CrackFileChunk      `protobuf:"bytes,100,rep,name=Chunks,proto3" json:"Chunks,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *CrackFile) Reset() {
	*x = CrackFile{}
	mi := &file_clientpb_client_proto_msgTypes[112]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackFile) ProtoMessage() {}

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

// Deprecated: Use CrackFile.ProtoReflect.Descriptor instead.
func (*CrackFile) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{112}
}

func (x *CrackFile) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *CrackFile) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

func (x *CrackFile) GetLastModified() int64 {
	if x != nil {
		return x.LastModified
	}
	return 0
}

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

func (x *CrackFile) GetUncompressedSize() int64 {
	if x != nil {
		return x.UncompressedSize
	}
	return 0
}

func (x *CrackFile) GetSha2_256() string {
	if x != nil {
		return x.Sha2_256
	}
	return ""
}

func (x *CrackFile) GetType() CrackFileType {
	if x != nil {
		return x.Type
	}
	return CrackFileType_INVALID_TYPE
}

func (x *CrackFile) GetIsCompressed() bool {
	if x != nil {
		return x.IsCompressed
	}
	return false
}

func (x *CrackFile) GetMaxFileSize() int64 {
	if x != nil {
		return x.MaxFileSize
	}
	return 0
}

func (x *CrackFile) GetChunkSize() int64 {
	if x != nil {
		return x.ChunkSize
	}
	return 0
}

func (x *CrackFile) GetChunks() []*CrackFileChunk {
	if x != nil {
		return x.Chunks
	}
	return nil
}

type CrackFileChunk struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	CrackFileID   string                 `protobuf:"bytes,2,opt,name=CrackFileID,proto3" json:"CrackFileID,omitempty"`
	N             uint32                 `protobuf:"varint,3,opt,name=N,proto3" json:"N,omitempty"`
	Data          []byte                 `protobuf:"bytes,9,opt,name=Data,proto3" json:"Data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CrackFileChunk) Reset() {
	*x = CrackFileChunk{}
	mi := &file_clientpb_client_proto_msgTypes[113]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CrackFileChunk) ProtoMessage() {}

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

// Deprecated: Use CrackFileChunk.ProtoReflect.Descriptor instead.
func (*CrackFileChunk) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{113}
}

func (x *CrackFileChunk) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

func (x *CrackFileChunk) GetCrackFileID() string {
	if x != nil {
		return x.CrackFileID
	}
	return ""
}

func (x *CrackFileChunk) GetN() uint32 {
	if x != nil {
		return x.N
	}
	return 0
}

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

// watchtower
type MonitoringProviders struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Providers     []*MonitoringProvider  `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MonitoringProviders) Reset() {
	*x = MonitoringProviders{}
	mi := &file_clientpb_client_proto_msgTypes[114]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MonitoringProviders) ProtoMessage() {}

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

// Deprecated: Use MonitoringProviders.ProtoReflect.Descriptor instead.
func (*MonitoringProviders) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{114}
}

func (x *MonitoringProviders) GetProviders() []*MonitoringProvider {
	if x != nil {
		return x.Providers
	}
	return nil
}

type MonitoringProvider struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Type          string                 `protobuf:"bytes,2,opt,name=Type,proto3" json:"Type,omitempty"`
	APIKey        string                 `protobuf:"bytes,3,opt,name=APIKey,proto3" json:"APIKey,omitempty"`
	APIPassword   string                 `protobuf:"bytes,4,opt,name=APIPassword,proto3" json:"APIPassword,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MonitoringProvider) Reset() {
	*x = MonitoringProvider{}
	mi := &file_clientpb_client_proto_msgTypes[115]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*MonitoringProvider) ProtoMessage() {}

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

// Deprecated: Use MonitoringProvider.ProtoReflect.Descriptor instead.
func (*MonitoringProvider) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{115}
}

func (x *MonitoringProvider) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

func (x *MonitoringProvider) GetAPIKey() string {
	if x != nil {
		return x.APIKey
	}
	return ""
}

func (x *MonitoringProvider) GetAPIPassword() string {
	if x != nil {
		return x.APIPassword
	}
	return ""
}

// resource IDs
type ResourceID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ID            string                 `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"`
	Type          string                 `protobuf:"bytes,2,opt,name=Type,proto3" json:"Type,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	Value         uint64                 `protobuf:"varint,4,opt,name=Value,proto3" json:"Value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ResourceID) Reset() {
	*x = ResourceID{}
	mi := &file_clientpb_client_proto_msgTypes[116]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ResourceID) ProtoMessage() {}

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

// Deprecated: Use ResourceID.ProtoReflect.Descriptor instead.
func (*ResourceID) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{116}
}

func (x *ResourceID) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

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

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

func (x *ResourceID) GetValue() uint64 {
	if x != nil {
		return x.Value
	}
	return 0
}

type CertificatesReq struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	CategoryFilters uint32                 `protobuf:"varint,1,opt,name=CategoryFilters,proto3" json:"CategoryFilters,omitempty"`
	CN              string                 `protobuf:"bytes,2,opt,name=CN,proto3" json:"CN,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *CertificatesReq) Reset() {
	*x = CertificatesReq{}
	mi := &file_clientpb_client_proto_msgTypes[117]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CertificatesReq) ProtoMessage() {}

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

// Deprecated: Use CertificatesReq.ProtoReflect.Descriptor instead.
func (*CertificatesReq) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{117}
}

func (x *CertificatesReq) GetCategoryFilters() uint32 {
	if x != nil {
		return x.CategoryFilters
	}
	return 0
}

func (x *CertificatesReq) GetCN() string {
	if x != nil {
		return x.CN
	}
	return ""
}

type CertificateData struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	CN             string                 `protobuf:"bytes,1,opt,name=CN,proto3" json:"CN,omitempty"`
	CreationTime   string                 `protobuf:"bytes,2,opt,name=CreationTime,proto3" json:"CreationTime,omitempty"`
	ValidityStart  string                 `protobuf:"bytes,3,opt,name=ValidityStart,proto3" json:"ValidityStart,omitempty"`
	ValidityExpiry string                 `protobuf:"bytes,4,opt,name=ValidityExpiry,proto3" json:"ValidityExpiry,omitempty"`
	Type           string                 `protobuf:"bytes,5,opt,name=Type,proto3" json:"Type,omitempty"`
	KeyAlgorithm   string                 `protobuf:"bytes,6,opt,name=KeyAlgorithm,proto3" json:"KeyAlgorithm,omitempty"`
	ID             string                 `protobuf:"bytes,7,opt,name=ID,proto3" json:"ID,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *CertificateData) Reset() {
	*x = CertificateData{}
	mi := &file_clientpb_client_proto_msgTypes[118]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CertificateData) ProtoMessage() {}

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

// Deprecated: Use CertificateData.ProtoReflect.Descriptor instead.
func (*CertificateData) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{118}
}

func (x *CertificateData) GetCN() string {
	if x != nil {
		return x.CN
	}
	return ""
}

func (x *CertificateData) GetCreationTime() string {
	if x != nil {
		return x.CreationTime
	}
	return ""
}

func (x *CertificateData) GetValidityStart() string {
	if x != nil {
		return x.ValidityStart
	}
	return ""
}

func (x *CertificateData) GetValidityExpiry() string {
	if x != nil {
		return x.ValidityExpiry
	}
	return ""
}

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

func (x *CertificateData) GetKeyAlgorithm() string {
	if x != nil {
		return x.KeyAlgorithm
	}
	return ""
}

func (x *CertificateData) GetID() string {
	if x != nil {
		return x.ID
	}
	return ""
}

type CertificateInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Info          []*CertificateData     `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CertificateInfo) Reset() {
	*x = CertificateInfo{}
	mi := &file_clientpb_client_proto_msgTypes[119]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CertificateInfo) ProtoMessage() {}

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

// Deprecated: Use CertificateInfo.ProtoReflect.Descriptor instead.
func (*CertificateInfo) Descriptor() ([]byte, []int) {
	return file_clientpb_client_proto_rawDescGZIP(), []int{119}
}

func (x *CertificateInfo) GetInfo() []*CertificateData {
	if x != nil {
		return x.Info
	}
	return nil
}

var File_clientpb_client_proto protoreflect.FileDescriptor

var file_clientpb_client_proto_rawDesc = []byte{
	0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70,
	0x62, 0x1a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x69,
	0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x69, 0x6e, 0x6f, 0x72,
	0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x05, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x44, 0x69, 0x72, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x44,
	0x69, 0x72, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64,
	0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c,
	0x65, 0x64, 0x41, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x53, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x4f, 0x53, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x72, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x41, 0x72, 0x63, 0x68, 0x22, 0x3b, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72,
	0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x05, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49,
	0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d,
	0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x55, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x47, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x53, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x4f, 0x53, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x72, 0x63, 0x68, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x72, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x54, 0x72,
	0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74,
	0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a,
	0x03, 0x50, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x49, 0x44, 0x12,
	0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4c,
	0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x12, 0x1a, 0x0a,
	0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x76, 0x61, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x45, 0x76, 0x61, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a,
	0x06, 0x49, 0x73, 0x44, 0x65, 0x61, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49,
	0x73, 0x44, 0x65, 0x61, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72,
	0x76, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x55, 0x52, 0x4c, 0x18,
	0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x55, 0x52, 0x4c, 0x12,
	0x16, 0x0a, 0x06, 0x42, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x06, 0x42, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e,
	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x78, 0x74,
	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x65, 0x65, 0x72, 0x49,
	0x44, 0x18, 0x19, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x50, 0x65, 0x65, 0x72, 0x49, 0x44, 0x12,
	0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x73, 0x74,
	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x46,
	0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x49,
	0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x22, 0xa0, 0x06, 0x0a, 0x06, 0x42, 0x65,
	0x61, 0x63, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73, 0x74,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x55, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x49, 0x44, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x47, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x53, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x4f, 0x53, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x72, 0x63, 0x68,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x72, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65,
	0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x12, 0x10, 0x0a, 0x03, 0x50, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50,
	0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20,
	0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e,
	0x12, 0x1a, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x32, 0x18, 0x0f, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x32, 0x12, 0x18, 0x0a, 0x07,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x56,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x76, 0x61, 0x73, 0x69, 0x6f,
	0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x45, 0x76, 0x61, 0x73, 0x69, 0x6f, 0x6e,
	0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x44, 0x65, 0x61, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x06, 0x49, 0x73, 0x44, 0x65, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x78,
	0x79, 0x55, 0x52, 0x4c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x78,
	0x79, 0x55, 0x52, 0x4c, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76,
	0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x16,
	0x0a, 0x06, 0x4a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
	0x4a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x75, 0x72, 0x6e, 0x65, 0x64,
	0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x42, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x20,
	0x0a, 0x0b, 0x4e, 0x65, 0x78, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x18, 0x19, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0b, 0x4e, 0x65, 0x78, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e,
	0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1a,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x30, 0x0a, 0x13, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f,
	0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x54,
	0x61, 0x73, 0x6b, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
	0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x1c, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x69,
	0x72, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0c, 0x46, 0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x1c,
	0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x22, 0x35, 0x0a, 0x07,
	0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x42, 0x65, 0x61, 0x63, 0x6f,
	0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x52, 0x07, 0x42, 0x65, 0x61, 0x63,
	0x6f, 0x6e, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0a, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x61,
	0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c,
	0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x14, 0x0a, 0x05,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61,
	0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x06, 0x53, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f,
	0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x54, 0x61,
	0x73, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x44, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x44, 0x12,
	0x2a, 0x0a, 0x05, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e,
	0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x4b, 0x0a, 0x0f, 0x42,
	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1a,
	0x0a, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e,
	0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x49,
	0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x22, 0x63, 0x0a, 0x09, 0x49, 0x6d, 0x70, 0x6c,
	0x61, 0x6e, 0x74, 0x43, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x55, 0x52, 0x4c, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd0, 0x0d,
	0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
	0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12,
	0x3c, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70,
	0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x0d,
	0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x2a, 0x0a,
	0x10, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49,
	0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74,
	0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x42,
	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x42,
	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49,
	0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x42,
	0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x22, 0x0a,
	0x0c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x4a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0c, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x4a, 0x69, 0x74, 0x74, 0x65,
	0x72, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x4f, 0x4f, 0x53, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x47, 0x4f, 0x4f, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x12, 0x14, 0x0a,
	0x05, 0x44, 0x65, 0x62, 0x75, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x44, 0x65,
	0x62, 0x75, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x76, 0x61, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x45, 0x76, 0x61, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a,
	0x10, 0x4f, 0x62, 0x66, 0x75, 0x73, 0x63, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x4f, 0x62, 0x66, 0x75, 0x73, 0x63, 0x61,
	0x74, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a,
	0x0a, 0x53, 0x47, 0x4e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0a, 0x53, 0x47, 0x4e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a,
	0x0b, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x54, 0x4c, 0x53, 0x18, 0x35, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0b, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x54, 0x4c, 0x53, 0x12,
	0x20, 0x0a, 0x0b, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x54, 0x54, 0x50, 0x18, 0x10,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x48, 0x54, 0x54,
	0x50, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x57, 0x47, 0x18, 0x11,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x57, 0x47, 0x12,
	0x1e, 0x0a, 0x0a, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x4e, 0x53, 0x18, 0x12, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x44, 0x4e, 0x53, 0x12,
	0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x69,
	0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64,
	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x69, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x6e, 0x63,
	0x6c, 0x75, 0x64, 0x65, 0x54, 0x43, 0x50, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49,
	0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x43, 0x50, 0x12, 0x20, 0x0a, 0x0b, 0x57, 0x47, 0x50,
	0x65, 0x65, 0x72, 0x54, 0x75, 0x6e, 0x49, 0x50, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x57, 0x47, 0x50, 0x65, 0x65, 0x72, 0x54, 0x75, 0x6e, 0x49, 0x50, 0x12, 0x2c, 0x0a, 0x11, 0x57,
	0x47, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74,
	0x18, 0x21, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x57, 0x47, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x63,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x57, 0x47, 0x54,
	0x63, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0e, 0x57, 0x47, 0x54, 0x63, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x73, 0x50, 0x6f, 0x72,
	0x74, 0x12, 0x2c, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x6e,
	0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x28, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x52, 0x65,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12,
	0x30, 0x0a, 0x13, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x4d, 0x61,
	0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x73, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6f, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x18, 0x2a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x50, 0x6f, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65,
	0x6f, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x02, 0x43, 0x32, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61,
	0x6e, 0x74, 0x43, 0x32, 0x52, 0x02, 0x43, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x61,
	0x72, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x0d, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2e,
	0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61,
	0x74, 0x65, 0x67, 0x79, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x43, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x2c,
	0x0a, 0x11, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x69,
	0x6e, 0x65, 0x64, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x4c, 0x69, 0x6d, 0x69, 0x74,
	0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d,
	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3d, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, 0x74, 0x69,
	0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x69, 0x6d, 0x69, 0x74,
	0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x69, 0x6d, 0x69,
	0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28,
	0x0a, 0x0f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74,
	0x73, 0x18, 0x40, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x69,
	0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x69, 0x6d, 0x69,
	0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x41, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4c,
	0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x46, 0x6f,
	0x72, 0x6d, 0x61, 0x74, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x52, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73,
	0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4c, 0x69, 0x62, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0b, 0x49, 0x73, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4c, 0x69, 0x62, 0x12, 0x1c, 0x0a, 0x09,
	0x49, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x67, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x09, 0x49, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73,
	0x53, 0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x68, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0b, 0x49, 0x73, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09,
	0x52, 0x75, 0x6e, 0x41, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x18, 0x69, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x09, 0x52, 0x75, 0x6e, 0x41, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x65,
	0x62, 0x75, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x44,
	0x65, 0x62, 0x75, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6f,
	0x72, 0x74, 0x73, 0x18, 0x6b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x70, 0x6f, 0x72,
	0x74, 0x73, 0x12, 0x2b, 0x0a, 0x10, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x48,
	0x54, 0x54, 0x50, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x23, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x47, 0x6f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18,
	0x97, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x4e, 0x65, 0x74, 0x47, 0x6f, 0x45, 0x6e, 0x61,
	0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45,
	0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x98,
	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e,
	0x63, 0x6f, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x29, 0x0a,
	0x0f, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x73,
	0x18, 0x99, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63,
	0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65,
	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x45, 0x78,
	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74,
	0x73, 0x18, 0xc8, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73,
	0x22, 0x7a, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f, 0x64,
	0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02,
	0x49, 0x44, 0x12, 0x22, 0x0a, 0x04, 0x57, 0x61, 0x73, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65,
	0x52, 0x04, 0x57, 0x61, 0x73, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x65,
	0x73, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x70, 0x54,
	0x65, 0x73, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x54, 0x65, 0x73, 0x74, 0x49, 0x44, 0x22, 0xb1, 0x01, 0x0a,
	0x11, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x4d,
	0x61, 0x70, 0x12, 0x45, 0x0a, 0x08, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e,
	0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x4d, 0x61,
	0x70, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x08, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x55, 0x0a, 0x0d, 0x45, 0x6e, 0x63,
	0x6f, 0x64, 0x65, 0x72, 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, 0x2e, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e,
	0x63, 0x6f, 0x64, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0xa6, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f,
	0x64, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43,
	0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
	0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63,
	0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x53, 0x75, 0x63, 0x63,
	0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x10, 0x0a, 0x03, 0x45, 0x72, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x72,
	0x72, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x54, 0x72,
	0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74,
	0x73, 0x12, 0x32, 0x0a, 0x07, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x54, 0x72,
	0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x52, 0x07, 0x45, 0x6e,
	0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x05, 0x54, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e,
	0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x54, 0x65,
	0x73, 0x74, 0x52, 0x05, 0x54, 0x65, 0x73, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x6f, 0x74,
	0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x0d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x73, 0x22,
	0xae, 0x02, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6c,
	0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x06, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x52, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x05, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c,
	0x64, 0x52, 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x48, 0x54, 0x54, 0x50,
	0x43, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x52, 0x06, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x12, 0x49, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f,
	0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x6d,
	0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x63, 0x6f,
	0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64,
	0x65, 0x72, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 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, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x77, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6c,
	0x61, 0x6e, 0x74, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a,
	0x0e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x46,
	0x69, 0x6c, 0x65, 0x52, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x22, 0xbe, 0x03, 0x0a, 0x0d, 0x49, 0x6d,
	0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x3e, 0x0a, 0x07, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x52,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x28, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c,
	0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x49, 0x44, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x52, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65,
	0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73,
	0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x67, 0x65, 0x64, 0x1a, 0x53, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62,
	0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x10, 0x52, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 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,
	0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x49, 0x44, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 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, 0x08, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x27, 0x0a, 0x0f, 0x49, 0x6d,
	0x70, 0x6c, 0x61, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a,
	0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x42, 0x75,
	0x69, 0x6c, 0x64, 0x22, 0xb2, 0x05, 0x0a, 0x0c, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x44, 0x35, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x44, 0x35, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x48,
	0x41, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x53, 0x48, 0x41, 0x31, 0x12, 0x16,
	0x0a, 0x06, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x75, 0x72, 0x6e, 0x65, 0x64,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x42, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x1c,
	0x0a, 0x09, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x09, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f,
	0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x44, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x12, 0x41, 0x67, 0x65, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x12, 0x41, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x65, 0x65, 0x72, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x50,
	0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e,
	0x50, 0x65, 0x65, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x50, 0x65, 0x65, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74,
	0x65, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x16, 0x50, 0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x50, 0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
	0x4b, 0x65, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x38, 0x0a, 0x17,
	0x4d, 0x69, 0x6e, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x4d,
	0x69, 0x6e, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x13, 0x50, 0x65, 0x65, 0x72, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x13, 0x50, 0x65, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
	0x65, 0x79, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x57, 0x47, 0x49, 0x6d,
	0x70, 0x6c, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x18, 0x0f, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x10, 0x57, 0x47, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x69,
	0x76, 0x4b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x57, 0x47, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x57, 0x47,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a,
	0x4d, 0x74, 0x6c, 0x73, 0x43, 0x41, 0x43, 0x65, 0x72, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0a, 0x4d, 0x74, 0x6c, 0x73, 0x43, 0x41, 0x43, 0x65, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08,
	0x4d, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x4d, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x74, 0x6c, 0x73,
	0x4b, 0x65, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x74, 0x6c, 0x73, 0x4b,
	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x05, 0x53, 0x74, 0x61, 0x67, 0x65, 0x22, 0x6c, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70,
	0x69, 0x6c, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x4f,
	0x4f, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x47, 0x4f, 0x4f, 0x53, 0x12, 0x16,
	0x0a, 0x06, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x12, 0x2e, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70,
	0x62, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06,
	0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x73, 0x73,
	0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x47, 0x4f, 0x4f, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x54, 0x61,
	0x72, 0x67, 0x65, 0x74, 0x47, 0x4f, 0x4f, 0x53, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x12, 0x16, 0x0a, 0x06,
	0x43, 0x43, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x43,
	0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x58, 0x58, 0x50, 0x61, 0x74, 0x68, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x58, 0x58, 0x50, 0x61, 0x74, 0x68, 0x22, 0xf5,
	0x01, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x47,
	0x4f, 0x4f, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x47, 0x4f, 0x4f, 0x53, 0x12,
	0x16, 0x0a, 0x06, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x12, 0x32, 0x0a, 0x07, 0x54, 0x61, 0x72, 0x67, 0x65,
	0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x52, 0x07, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x43,
	0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43,
	0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x0e, 0x43, 0x72,
	0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x12,
	0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
	0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x52, 0x12, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x54,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0x1f, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x09, 0x44, 0x4e, 0x53, 0x43,
	0x61, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74,
	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x49, 0x6d, 0x70, 0x6c,
	0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12,
	0x1c, 0x0a, 0x09, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x12, 0x26, 0x0a,
	0x0e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x54, 0x72, 0x69, 0x67,
	0x67, 0x65, 0x72, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54,
	0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x61,
	0x74, 0x65, 0x73, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x22, 0x3b, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x0a,
	0x08, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x44, 0x4e, 0x53, 0x43, 0x61,
	0x6e, 0x61, 0x72, 0x79, 0x52, 0x08, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x1c,
	0x0a, 0x0a, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x57, 0x47, 0x49, 0x50, 0x12, 0x0e, 0x0a, 0x02,
	0x49, 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22, 0x65, 0x0a, 0x0e,
	0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12,
	0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d,
	0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x22, 0x47, 0x0a, 0x0f, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x50, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69,
	0x6c, 0x65, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0d,
	0x52, 0x65, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a,
	0x0b, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22,
	0xb7, 0x01, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x44,
	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a,
	0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a,
	0x07, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07,
	0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69,
	0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2d, 0x0a, 0x04, 0x4a, 0x6f, 0x62,
	0x73, 0x12, 0x25, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4a, 0x6f, 0x62,
	0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x1c, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, 0x6c,
	0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x22, 0x27, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x6f, 0x62, 0x49, 0x44,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x4a, 0x6f, 0x62, 0x49, 0x44, 0x73, 0x22,
	0x33, 0x0a, 0x07, 0x4b, 0x69, 0x6c, 0x6c, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x53, 0x75, 0x63,
	0x63, 0x65, 0x73, 0x73, 0x22, 0x91, 0x03, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65,
	0x72, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4a, 0x6f, 0x62, 0x49,
	0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4a, 0x6f, 0x62, 0x49, 0x44, 0x12, 0x35,
	0x0a, 0x08, 0x4d, 0x54, 0x4c, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x19, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4d, 0x54, 0x4c, 0x53,
	0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x52, 0x08, 0x4d, 0x54, 0x4c,
	0x53, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x2f, 0x0a, 0x06, 0x57, 0x47, 0x43, 0x6f, 0x6e, 0x66, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62,
	0x2e, 0x57, 0x47, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x52, 0x06,
	0x57, 0x47, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x32, 0x0a, 0x07, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e,
	0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x70, 0x62, 0x2e, 0x44, 0x4e, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65,
	0x71, 0x52, 0x07, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x35, 0x0a, 0x08, 0x48, 0x54,
	0x54, 0x50, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x4c, 0x69, 0x73, 0x74,
	0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x52, 0x08, 0x48, 0x54, 0x54, 0x50, 0x43, 0x6f, 0x6e,
	0x66, 0x12, 0x3e, 0x0a, 0x09, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e,
	0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x65,
	0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x52, 0x09, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6f, 0x6e,
	0x66, 0x12, 0x35, 0x0a, 0x07, 0x54, 0x43, 0x50, 0x43, 0x6f, 0x6e, 0x66, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74,
	0x61, 0x67, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x52,
	0x07, 0x54, 0x43, 0x50, 0x43, 0x6f, 0x6e, 0x66, 0x22, 0x40, 0x0a, 0x16, 0x4d, 0x75, 0x6c, 0x74,
	0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52,
	0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x39, 0x0a, 0x0f, 0x4d, 0x54,
	0x4c, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a,
	0x04, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x48, 0x6f, 0x73,
	0x74, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x04, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x7d, 0x0a, 0x0d, 0x57, 0x47, 0x4c, 0x69, 0x73, 0x74, 0x65,
	0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f,
	0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x54, 0x75, 0x6e, 0x49, 0x50, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54,
	0x75, 0x6e, 0x49, 0x50, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x05, 0x4e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4b, 0x65,
	0x79, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x4b, 0x65, 0x79,
	0x50, 0x6f, 0x72, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x4e, 0x53, 0x4c, 0x69, 0x73, 0x74,
	0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x6f, 0x6d, 0x61, 0x69,
	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e,
	0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x08, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a,
	0x04, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x48, 0x6f, 0x73,
	0x74, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
	0x4f, 0x54, 0x50, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x45, 0x6e, 0x66, 0x6f, 0x72,
	0x63, 0x65, 0x4f, 0x54, 0x50, 0x22, 0xd5, 0x02, 0x0a, 0x0f, 0x48, 0x54, 0x54, 0x50, 0x4c, 0x69,
	0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d,
	0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69,
	0x6e, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x63,
	0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x65, 0x63, 0x75, 0x72,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43,
	0x65, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x43, 0x65, 0x72, 0x74, 0x12,
	0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x4b, 0x65,
	0x79, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x43, 0x4d, 0x45, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x04, 0x41, 0x43, 0x4d, 0x45, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65,
	0x4f, 0x54, 0x50, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x45, 0x6e, 0x66, 0x6f, 0x72,
	0x63, 0x65, 0x4f, 0x54, 0x50, 0x12, 0x28, 0x0a, 0x0f, 0x4c, 0x6f, 0x6e, 0x67, 0x50, 0x6f, 0x6c,
	0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f,
	0x4c, 0x6f, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
	0x26, 0x0a, 0x0e, 0x4c, 0x6f, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x6c, 0x4a, 0x69, 0x74, 0x74, 0x65,
	0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x4c, 0x6f, 0x6e, 0x67, 0x50, 0x6f, 0x6c,
	0x6c, 0x4a, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x64, 0x6f,
	0x6d, 0x69, 0x7a, 0x65, 0x4a, 0x41, 0x52, 0x4d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d,
	0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x69, 0x7a, 0x65, 0x4a, 0x41, 0x52, 0x4d, 0x22, 0x58, 0x0a,
	0x0d, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x50, 0x69, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1a,
	0x0a, 0x08, 0x50, 0x69, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x50, 0x69, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x68, 0x0a, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x64,
	0x50, 0x69, 0x70, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
	0x10, 0x0a, 0x03, 0x45, 0x72, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x72,
	0x72, 0x12, 0x2e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x54, 0x0a, 0x0b, 0x54, 0x43, 0x50, 0x50, 0x69, 0x76, 0x6f, 0x74, 0x52, 0x65, 0x71,
	0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x66, 0x0a, 0x08, 0x54, 0x43, 0x50, 0x50, 0x69,
	0x76, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a,
	0x03, 0x45, 0x72, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x72, 0x72, 0x12,
	0x2e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x39, 0x0a, 0x08, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x53,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x52, 0x08, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x59, 0x0a, 0x09, 0x52, 0x65,
	0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49,
	0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x49,
	0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x0b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
	0x65, 0x52, 0x65, 0x71, 0x12, 0x2f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e,
	0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x47, 0x65,
	0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x18,
	0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d,
	0x41, 0x45, 0x53, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x45, 0x53, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b,
	0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x45, 0x53, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
	0x49, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x41, 0x45, 0x53, 0x45, 0x6e, 0x63,
	0x72, 0x79, 0x70, 0x74, 0x49, 0x76, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x43, 0x34, 0x45, 0x6e, 0x63,
	0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x52,
	0x43, 0x34, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0b,
	0x50, 0x72, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0b, 0x50, 0x72, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c,
	0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x46, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x46, 0x12, 0x1a, 0x0a, 0x08,
	0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x47, 0x65, 0x6e, 0x65,
	0x72, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x46, 0x69,
	0x6c, 0x65, 0x52, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x06, 0x4d, 0x53, 0x46,
	0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a,
	0x05, 0x4c, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x48,
	0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x05, 0x4c, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x63,
	0x6f, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x63, 0x6f,
	0x64, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x4d, 0x53, 0x46, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65,
	0x71, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c,
	0x48, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x48, 0x6f, 0x73,
	0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x05, 0x4c, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x63, 0x6f, 0x64,
	0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65,
	0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03,
	0x50, 0x49, 0x44, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x22, 0xa6, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x67, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x65,
	0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
	0x6c, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x48,
	0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x12,
	0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x50,
	0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69,
	0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0e, 0x53, 0x74, 0x61,
	0x67, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4a,
	0x6f, 0x62, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4a, 0x6f, 0x62, 0x49,
	0x44, 0x22, 0x67, 0x0a, 0x0f, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x44,
	0x49, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09,
	0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x22, 0x0a, 0x0c, 0x53, 0x68,
	0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x44, 0x49, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0xa8,
	0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x12,
	0x26, 0x0a, 0x0e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x67,
	0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x52, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x07,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xe2, 0x01, 0x0a, 0x0a, 0x4d, 0x69,
	0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x50, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x52, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x07, 0x45,
	0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64,
	0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x52, 0x07, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65,
	0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x63, 0x4e, 0x61, 0x6d,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x63, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3e,
	0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65,
	0x71, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4c,
	0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c,
	0x0a, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x08,
	0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02,
	0x30, 0x01, 0x52, 0x08, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x22, 0x5d, 0x0a, 0x0e,
	0x43, 0x6c, 0x6f, 0x73, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1e,
	0x0a, 0x08, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04,
	0x42, 0x02, 0x30, 0x01, 0x52, 0x08, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x12, 0x2b,
	0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x0f,
	0x50, 0x69, 0x76, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x16, 0x0a, 0x06, 0x50, 0x65, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x06, 0x50, 0x65, 0x65, 0x72, 0x49, 0x44, 0x12, 0x2b, 0x0a, 0x07, 0x53, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x53, 0x65, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x43, 0x68, 0x69, 0x6c,
	0x64, 0x72, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x76, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22,
	0x43, 0x0a, 0x0a, 0x50, 0x69, 0x76, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x35, 0x0a,
	0x08, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x69, 0x76, 0x6f, 0x74,
	0x47, 0x72, 0x61, 0x70, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x43, 0x68, 0x69, 0x6c,
	0x64, 0x72, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12,
	0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e,
	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
	0x6f, 0x72, 0x22, 0xc3, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09,
	0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x53, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e,
	0x4a, 0x6f, 0x62, 0x52, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x28, 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x43, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x72, 0x72, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
	0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x4f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x36, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61,
	0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x06, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e,
	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22,
	0xa2, 0x01, 0x0a, 0x0a, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c,
	0x0a, 0x09, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04,
	0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68,
	0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x16, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
	0x42, 0x02, 0x30, 0x01, 0x52, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x11, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65,
	0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x45,
	0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x29, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x57, 0x65, 0x62, 0x73,
	0x69, 0x74, 0x65, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x51, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x70, 0x62, 0x2e, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x40, 0x0a, 0x14, 0x57, 0x65, 0x62, 0x73,
	0x69, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x05, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xbd, 0x01, 0x0a, 0x07, 0x57,
	0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x2e,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x51, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x70, 0x62, 0x2e, 0x57, 0x65, 0x62, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x08, 0x57, 0x65,
	0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x57, 0x65, 0x62,
	0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x57, 0x47, 0x43, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x10,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x72,
	0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x22, 0xba, 0x01, 0x0a, 0x04, 0x4c, 0x6f, 0x6f,
	0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49,
	0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x46, 0x69, 0x6c,
	0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x48,
	0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f,
	0x72, 0x69, 0x67, 0x69, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x12, 0x0a,
	0x04, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x53, 0x69, 0x7a,
	0x65, 0x12, 0x22, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52,
	0x04, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x2d, 0x0a, 0x07, 0x41, 0x6c, 0x6c, 0x4c, 0x6f, 0x6f, 0x74,
	0x12, 0x22, 0x0a, 0x04, 0x4c, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e,
	0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4c, 0x6f, 0x6f, 0x74, 0x52, 0x04,
	0x4c, 0x6f, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x03, 0x49, 0x4f, 0x43, 0x12, 0x12, 0x0a, 0x04, 0x50,
	0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12,
	0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49,
	0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x22, 0x27, 0x0a, 0x0d, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06,
	0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x22, 0xef, 0x02, 0x0a, 0x04, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x0e, 0x0a,
	0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a,
	0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73,
	0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73,
	0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x04, 0x49, 0x4f, 0x43, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x4f, 0x43,
	0x52, 0x04, 0x49, 0x4f, 0x43, 0x73, 0x12, 0x47, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
	0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x45, 0x78,
	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x52, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12,
	0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x73, 0x74,
	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x46,
	0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x1a, 0x59, 0x0a, 0x12, 0x45,
	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 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, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x45, 0x78,
	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, 0x08, 0x41, 0x6c, 0x6c, 0x48, 0x6f, 0x73,
	0x74, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x6f, 0x73,
	0x74, 0x52, 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x0c, 0x44, 0x6c, 0x6c,
	0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, 0x66,
	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x4c, 0x4c, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x4c,
	0x4c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x54,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a,
	0x0c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x4c, 0x4c, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x4c,
	0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x4c, 0x4c, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x4c, 0x4c, 0x12,
	0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70,
	0x62, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x22, 0x3b, 0x0a, 0x09, 0x44, 0x6c, 0x6c, 0x48, 0x69, 0x6a, 0x61, 0x63, 0x6b, 0x12,
	0x2e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x8c, 0x01, 0x0a, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x64, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x12,
	0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x50,
	0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
	0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3a,
	0x0a, 0x08, 0x42, 0x61, 0x63, 0x6b, 0x64, 0x6f, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x08, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x53,
	0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65,
	0x71, 0x12, 0x34, 0x0a, 0x07, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x68,
	0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x52, 0x07,
	0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x72, 0x63, 0x68, 0x69,
	0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x41,
	0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x49,
	0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x0a, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x42,
	0x61, 0x64, 0x43, 0x68, 0x61, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x42,
	0x61, 0x64, 0x43, 0x68, 0x61, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x07, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63,
	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52,
	0x07, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0f, 0x53, 0x68, 0x65, 0x6c,
	0x6c, 0x63, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44,
	0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12,
	0x2e, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0xb7, 0x01, 0x0a, 0x13, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x63,
	0x6f, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x08, 0x45, 0x6e, 0x63, 0x6f, 0x64,
	0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x45, 0x6e,
	0x63, 0x6f, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x73,
	0x1a, 0x57, 0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 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, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x68,
	0x65, 0x6c, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7c, 0x0a, 0x13, 0x45, 0x78, 0x74,
	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71,
	0x12, 0x2f, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6c,
	0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x08, 0x42, 0x75, 0x69, 0x6c, 0x64,
	0x65, 0x72, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62,
	0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x08, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
	0x72, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x07, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x12,
	0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74,
	0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x4f, 0x4f, 0x53, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x47, 0x4f, 0x4f, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x4f,
	0x41, 0x52, 0x43, 0x48, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x47, 0x4f, 0x41, 0x52,
	0x43, 0x48, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73,
	0x12, 0x32, 0x0a, 0x07, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d,
	0x70, 0x69, 0x6c, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x54, 0x61, 0x72,
	0x67, 0x65, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d,
	0x70, 0x69, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d,
	0x70, 0x69, 0x6c, 0x65, 0x72, 0x52, 0x0e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70,
	0x69, 0x6c, 0x65, 0x72, 0x73, 0x22, 0x41, 0x0a, 0x0d, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
	0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x22, 0x0a, 0x0c, 0x43, 0x32, 0x50, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x63, 0x0a, 0x0f,
	0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12,
	0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x32, 0x0a,
	0x08, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43,
	0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x22, 0xd3, 0x01, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x40, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70,
	0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x12, 0x43, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x49, 0x6d, 0x70, 0x6c, 0x61,
	0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e,
	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xbc, 0x01, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50,
	0x43, 0x32, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x32,
	0x0a, 0x14, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x52, 0x61,
	0x6e, 0x64, 0x6f, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48,
	0x54, 0x54, 0x50, 0x43, 0x32, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x48, 0x65, 0x61,
	0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x73, 0x18,
	0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62,
	0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x52, 0x07, 0x43,
	0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x73, 0x22, 0xbc, 0x05, 0x0a, 0x13, 0x48, 0x54, 0x54, 0x50, 0x43,
	0x32, 0x49, 0x6d, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1c,
	0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x55, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11,
	0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x42, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x42,
	0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61,
	0x63, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0c, 0x4d, 0x61, 0x63, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e,
	0x0a, 0x12, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x43,
	0x68, 0x61, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x4e, 0x6f, 0x6e, 0x63,
	0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x72, 0x67, 0x43, 0x68, 0x61, 0x72, 0x73, 0x12, 0x4c,
	0x0a, 0x12, 0x45, 0x78, 0x74, 0x72, 0x61, 0x55, 0x52, 0x4c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
	0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x55, 0x52, 0x4c, 0x50,
	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x12, 0x45, 0x78, 0x74, 0x72, 0x61, 0x55,
	0x52, 0x4c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x07,
	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x48,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1e,
	0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6e, 0x12, 0x1e,
	0x0a, 0x0a, 0x4d, 0x69, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0a, 0x4d, 0x69, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x47, 0x65, 0x6e, 0x12, 0x1e,
	0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x50, 0x61, 0x74, 0x68, 0x47, 0x65, 0x6e, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x50, 0x61, 0x74, 0x68, 0x47, 0x65, 0x6e, 0x12, 0x1e,
	0x0a, 0x0a, 0x4d, 0x69, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x47, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0a, 0x4d, 0x69, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x47, 0x65, 0x6e, 0x12, 0x24,
	0x0a, 0x0d, 0x4d, 0x61, 0x78, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
	0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x78, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x65,
	0x6e, 0x67, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x69, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x4c,
	0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x69, 0x6e,
	0x50, 0x61, 0x74, 0x68, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78,
	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x50, 0x61,
	0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x1b, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x54, 0x54, 0x50,
	0x43, 0x32, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x50,
	0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x4e,
	0x6f, 0x6e, 0x63, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
	0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x6f, 0x6e, 0x63, 0x65,
	0x4d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4e, 0x6f, 0x6e, 0x63,
	0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x32, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x43,
	0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0c, 0x48, 0x54,
	0x54, 0x50, 0x43, 0x32, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x65,
	0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4d, 0x65, 0x74, 0x68,
	0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b,
	0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x0b, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x88,
	0x01, 0x0a, 0x12, 0x48, 0x54, 0x54, 0x50, 0x43, 0x32, 0x55, 0x52, 0x4c, 0x50, 0x61, 0x72, 0x61,
	0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a,
	0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x62, 0x61,
	0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x50, 0x72,
	0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x51, 0x0a, 0x11, 0x48, 0x54, 0x54,
	0x50, 0x43, 0x32, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x16,
	0x0a, 0x06, 0x49, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
	0x49, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x80, 0x02, 0x0a,
	0x0a, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49,
	0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x55,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x69, 0x6e,
	0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x69,
	0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x08, 0x48, 0x61, 0x73,
	0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x63, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x08, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x43,
	0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x49, 0x73,
	0x43, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x72, 0x69, 0x67, 0x69,
	0x6e, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12,
	0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22,
	0x45, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x36,
	0x0a, 0x0b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43,
	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x0b, 0x43, 0x72, 0x65, 0x64, 0x65,
	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4d, 0x0a, 0x0d, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x73,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x43, 0x72, 0x61, 0x63, 0x6b,
	0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
	0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x73,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x73,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04,
	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x05,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x63, 0x6c,
	0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x05, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43,
	0x72, 0x61, 0x63, 0x6b, 0x4a, 0x6f, 0x62, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x11, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x4a, 0x6f, 0x62,
	0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x49, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67,
	0x12, 0x33, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61,
	0x63, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x53, 0x79,
	0x6e, 0x63, 0x69, 0x6e, 0x67, 0x22, 0xa9, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x53,
	0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65,
	0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12,
	0x43, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61,
	0x63, 0x6b, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x50, 0x72, 0x6f,
	0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67,
	0x72, 0x65, 0x73, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 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, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x42, 0x65, 0x6e, 0x63, 0x68,
	0x6d, 0x61, 0x72, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74,
	0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73, 0x74,
	0x55, 0x55, 0x49, 0x44, 0x12, 0x48, 0x0a, 0x0a, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
	0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
	0x72, 0x6b, 0x2e, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x0a, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x1a, 0x3d,
	0x0a, 0x0f, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd9, 0x01,
	0x0a, 0x09, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49,
	0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x48,
	0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x48,
	0x6f, 0x73, 0x74, 0x55, 0x55, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x64, 0x41, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64,
	0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65,
	0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64,
	0x41, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x72, 0x72, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x45, 0x72, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
	0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
	0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0xfd, 0x03, 0x0a, 0x0c, 0x43, 0x72,
	0x61, 0x63, 0x6b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22,
	0x0a, 0x0c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x4f, 0x4f, 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x47, 0x4f, 0x4f, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x47, 0x4f, 0x41, 0x52, 0x43, 0x48, 0x12, 0x26,
	0x0a, 0x0e, 0x48, 0x61, 0x73, 0x68, 0x63, 0x61, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x48, 0x61, 0x73, 0x68, 0x63, 0x61, 0x74, 0x56,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x55,
	0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x55,
	0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0a,
	0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x26, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61, 0x63,
	0x6b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
	0x72, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d,
	0x61, 0x72, 0x6b, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x43, 0x55, 0x44, 0x41, 0x18, 0x64, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x55,
	0x44, 0x41, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43,
	0x55, 0x44, 0x41, 0x12, 0x30, 0x0a, 0x05, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x18, 0x65, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x4d, 0x65,
	0x74, 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05,
	0x4d, 0x65, 0x74, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x18,
	0x66, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62,
	0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x06, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x1a, 0x3d, 0x0a, 0x0f, 0x42, 0x65,
	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa1, 0x02, 0x0a, 0x0f, 0x43, 0x55,
	0x44, 0x41, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a,
	0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a,
	0x06, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x56,
	0x65, 0x6e, 0x64, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72,
	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x05, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x65, 0x6d,
	0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x65, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43,
	0x55, 0x44, 0x41, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x43, 0x55, 0x44, 0x41, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd9, 0x02,
	0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x65, 0x6e, 0x64, 0x6f,
	0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x65, 0x6e, 0x64, 0x6f,
	0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e,
	0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x18, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f,
	0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50,
	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6c, 0x6f,
	0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12,
	0x20, 0x0a, 0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61,
	0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x65, 0x65, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x65,
	0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x43,
	0x4c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x44, 0x72, 0x69, 0x76,
	0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x02, 0x0a, 0x10, 0x4d, 0x65,
	0x74, 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
	0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x16,
	0x0a, 0x06, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x56, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f,
	0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
	0x73, 0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x65,
	0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a,
	0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0a, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x46, 0x72, 0x65, 0x65, 0x12, 0x22, 0x0a, 0x0c,
	0x4d, 0x65, 0x74, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0c, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x22, 0xb9, 0x1e, 0x0a, 0x0c, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
	0x64, 0x12, 0x39, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62,
	0x2e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65,
	0x52, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x08,
	0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12,
	0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x08, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
	0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x48, 0x61,
	0x73, 0x68, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x51, 0x75, 0x69, 0x65, 0x74, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x05, 0x51, 0x75, 0x69, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x48, 0x65,
	0x78, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
	0x48, 0x65, 0x78, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65,
	0x78, 0x53, 0x61, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x48, 0x65, 0x78,
	0x53, 0x61, 0x6c, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x65, 0x78, 0x57, 0x6f, 0x72, 0x64, 0x6c,
	0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x48, 0x65, 0x78, 0x57, 0x6f,
	0x72, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x16,
	0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44,
	0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x44, 0x65,
	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x69, 0x73,
	0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x20, 0x0a, 0x0b,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x2c,
	0x0a, 0x11, 0x53, 0x74, 0x64, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x62,
	0x6f, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x53, 0x74, 0x64, 0x69, 0x6e,
	0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x0f,
	0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x18,
	0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65,
	0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4b, 0x65, 0x65, 0x70, 0x47, 0x75,
	0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x4b, 0x65,
	0x65, 0x70, 0x47, 0x75, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x65,
	0x6c, 0x66, 0x54, 0x65, 0x73, 0x74, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x10, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0f, 0x53, 0x65, 0x6c, 0x66, 0x54, 0x65, 0x73, 0x74, 0x44, 0x69, 0x73,
	0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b,
	0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b,
	0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x6f, 0x76, 0x48, 0x63, 0x73, 0x74, 0x61, 0x74,
	0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x6f, 0x76, 0x48,
	0x63, 0x73, 0x74, 0x61, 0x74, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x6f, 0x76,
	0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x4d,
	0x61, 0x72, 0x6b, 0x6f, 0x76, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0d,
	0x4d, 0x61, 0x72, 0x6b, 0x6f, 0x76, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x63, 0x18, 0x14, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x6f, 0x76, 0x43, 0x6c, 0x61, 0x73, 0x73,
	0x69, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x6f, 0x76, 0x49, 0x6e, 0x76, 0x65,
	0x72, 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x6f,
	0x76, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x72, 0x6b,
	0x6f, 0x76, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0f, 0x4d, 0x61, 0x72, 0x6b, 0x6f, 0x76, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
	0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x17, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x07, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72,
	0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65,
	0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62,
	0x6c, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72,
	0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x74,
	0x6f, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x52,
	0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x4f, 0x75,
	0x74, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x1d, 0x20, 0x03, 0x28,
	0x0e, 0x32, 0x1c, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61,
	0x63, 0x6b, 0x4f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52,
	0x0d, 0x4f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x34,
	0x0a, 0x15, 0x4f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x68, 0x65, 0x78,
	0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x4f,
	0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x68, 0x65, 0x78, 0x44, 0x69, 0x73,
	0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43,
	0x68, 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x11, 0x4f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d,
	0x65, 0x72, 0x12, 0x36, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x75,
	0x74, 0x6f, 0x68, 0x65, 0x78, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x20, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x16, 0x57, 0x6f, 0x72, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x75, 0x74, 0x6f,
	0x68, 0x65, 0x78, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65,
	0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53,
	0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x64, 0x6f,
	0x75, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x64, 0x6f, 0x75, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,
	0x53, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x65, 0x66, 0x74, 0x18, 0x24, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x04, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x26,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x20, 0x0a, 0x0b,
	0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x18, 0x27, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x26,
	0x0a, 0x0e, 0x50, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
	0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x50, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x44,
	0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x6f, 0x74, 0x66, 0x69, 0x6c,
	0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x50, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65,
	0x12, 0x3b, 0x0a, 0x0c, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x6f, 0x6d,
	0x18, 0x2a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70,
	0x62, 0x2e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52,
	0x0c, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x37, 0x0a,
	0x0a, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x18, 0x2b, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61,
	0x63, 0x6b, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x45, 0x6e, 0x63, 0x6f,
	0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x65, 0x62, 0x75, 0x67, 0x4d,
	0x6f, 0x64, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x44, 0x65, 0x62, 0x75, 0x67,
	0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x44,
	0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x4c, 0x6f,
	0x67, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x11,
	0x48, 0x63, 0x63, 0x61, 0x70, 0x78, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x69,
	0x72, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x48, 0x63, 0x63, 0x61, 0x70, 0x78, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x34, 0x0a, 0x15, 0x4e, 0x6f,
	0x6e, 0x63, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x4e, 0x6f, 0x6e, 0x63, 0x65,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x34, 0x0a, 0x15, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x61, 0x79, 0x6f,
	0x75, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x15, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x4d,
	0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d,
	0x61, 0x72, 0x6b, 0x18, 0x38, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x42, 0x65, 0x6e, 0x63, 0x68,
	0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
	0x6b, 0x41, 0x6c, 0x6c, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x42, 0x65, 0x6e, 0x63,
	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x41, 0x6c, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, 0x65, 0x65,
	0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x53, 0x70, 0x65,
	0x65, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65,
	0x73, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x50, 0x72,
	0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x65,
	0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x0b, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09,
	0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x4d, 0x69, 0x6e, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x09, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x4d, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69,
	0x74, 0x6d, 0x61, 0x70, 0x4d, 0x61, 0x78, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x42,
	0x69, 0x74, 0x6d, 0x61, 0x70, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x50, 0x55, 0x41,
	0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x43,
	0x50, 0x55, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x48, 0x6f,
	0x6f, 0x6b, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x0b, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08,
	0x48, 0x61, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x41, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
	0x48, 0x61, 0x73, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x11, 0x42, 0x61, 0x63, 0x6b,
	0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x55, 0x44, 0x41, 0x18, 0x43, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x11, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f,
	0x72, 0x65, 0x43, 0x55, 0x44, 0x41, 0x12, 0x2a, 0x0a, 0x10, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e,
	0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x70, 0x18, 0x44, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x10, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x48,
	0x69, 0x70, 0x12, 0x2e, 0x0a, 0x12, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e,
	0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x6c, 0x18, 0x45, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
	0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74,
	0x61, 0x6c, 0x12, 0x30, 0x0a, 0x13, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e,
	0x6f, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x18, 0x46, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x13, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f, 0x70,
	0x65, 0x6e, 0x43, 0x4c, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x49,
	0x6e, 0x66, 0x6f, 0x18, 0x47, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x65,
	0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e,
	0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e,
	0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2c,
	0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x4c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79,
	0x70, 0x65, 0x73, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x4f, 0x70, 0x65, 0x6e, 0x43,
	0x4c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x15,
	0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x45,
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x4f, 0x70, 0x74,
	0x69, 0x6d, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x61, 0x62,
	0x6c, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x41, 0x63,
	0x63, 0x65, 0x6c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x4b, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x41, 0x63, 0x63, 0x65, 0x6c,
	0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b,
	0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x4c, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x1e, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61,
	0x63, 0x6b, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
	0x65, 0x52, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69,
	0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x41, 0x63, 0x63, 0x65,
	0x6c, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x41,
	0x63, 0x63, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4c, 0x6f,
	0x6f, 0x70, 0x73, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x4b, 0x65, 0x72, 0x6e, 0x65,
	0x6c, 0x4c, 0x6f, 0x6f, 0x70, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
	0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x4b,
	0x65, 0x72, 0x6e, 0x65, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x12,
	0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x64,
	0x74, 0x68, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e,
	0x64, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08,
	0x53, 0x70, 0x69, 0x6e, 0x44, 0x61, 0x6d, 0x70, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08,
	0x53, 0x70, 0x69, 0x6e, 0x44, 0x61, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x48, 0x77, 0x6d, 0x6f,
	0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
	0x48, 0x77, 0x6d, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0e,
	0x48, 0x77, 0x6d, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x53,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x48, 0x77, 0x6d, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x41,
	0x62, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x63, 0x72, 0x79, 0x70, 0x74, 0x54, 0x4d,
	0x54, 0x4f, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x53, 0x63, 0x72, 0x79, 0x70, 0x74,
	0x54, 0x4d, 0x54, 0x4f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x55, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69,
	0x74, 0x18, 0x56, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a,
	0x0a, 0x08, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x57, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x08, 0x4b, 0x65, 0x79, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x75,
	0x6c, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x52,
	0x75, 0x6c, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x47, 0x65, 0x6e, 0x65,
	0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x0d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x30,
	0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x46,
	0x75, 0x6e, 0x4d, 0x69, 0x6e, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x47, 0x65, 0x6e,
	0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x46, 0x75, 0x6e, 0x4d, 0x69, 0x6e,
	0x12, 0x30, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65,
	0x73, 0x46, 0x75, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x47,
	0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x46, 0x75, 0x6e, 0x4d,
	0x61, 0x78, 0x12, 0x32, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75,
	0x6c, 0x65, 0x73, 0x46, 0x75, 0x6e, 0x63, 0x53, 0x65, 0x6c, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x46,
	0x75, 0x6e, 0x63, 0x53, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
	0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x53, 0x65, 0x65, 0x64, 0x18, 0x5f, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73,
	0x53, 0x65, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68,
	0x61, 0x72, 0x73, 0x65, 0x74, 0x31, 0x18, 0x60, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x43, 0x75,
	0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x31, 0x12, 0x26, 0x0a, 0x0e,
	0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x32, 0x18, 0x61,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x72,
	0x73, 0x65, 0x74, 0x32, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68,
	0x61, 0x72, 0x73, 0x65, 0x74, 0x33, 0x18, 0x62, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x43, 0x75,
	0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x33, 0x12, 0x26, 0x0a, 0x0e,
	0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x34, 0x18, 0x63,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x72,
	0x73, 0x65, 0x74, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79,
	0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79,
	0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x65, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x09, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22,
	0x0a, 0x0c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x66,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d,
	0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d,
	0x61, 0x78, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6c, 0x6f, 0x77, 0x43, 0x61,
	0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x68, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e,
	0x53, 0x6c, 0x6f, 0x77, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x20,
	0x0a, 0x0b, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x69, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0b, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x12, 0x2a, 0x0a, 0x10, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54,
	0x69, 0x6d, 0x65, 0x72, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x42, 0x72, 0x61, 0x69,
	0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b,
	0x42, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x6b, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0b, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x30,
	0x0a, 0x13, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x46, 0x65, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x42, 0x72, 0x61,
	0x69, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73,
	0x12, 0x1c, 0x0a, 0x09, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x6d, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1c,
	0x0a, 0x09, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x09, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0d,
	0x42, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x6f, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
	0x72, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x70, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x53,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x53,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18,
	0x71, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x42, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x8d, 0x01, 0x0a,
	0x0b, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08,
	0x41, 0x75, 0x74, 0x6f, 0x46, 0x69, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
	0x41, 0x75, 0x74, 0x6f, 0x46, 0x69, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x78, 0x46,
	0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4d,
	0x61, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68,
	0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43,
	0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x44,
	0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c,
	0x4d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x22, 0x87, 0x01, 0x0a,
	0x0a, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x46,
	0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x52,
	0x05, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e,
	0x74, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x10, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61,
	0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x73,
	0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x22, 0xfb, 0x02, 0x0a, 0x09, 0x43, 0x72, 0x61, 0x63, 0x6b,
	0x46, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
	0x41, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69,
	0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f,
	0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x55, 0x6e,
	0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x55, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73,
	0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x53, 0x68, 0x61, 0x32, 0x5f, 0x32,
	0x35, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x68, 0x61, 0x32, 0x32, 0x35,
	0x36, 0x12, 0x2b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x17, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x61, 0x63, 0x6b,
	0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22,
	0x0a, 0x0c, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73,
	0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a,
	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4d, 0x61, 0x78, 0x46, 0x69, 0x6c, 0x65,
	0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a,
	0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69,
	0x7a, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x64, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x72,
	0x61, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x06, 0x43, 0x68,
	0x75, 0x6e, 0x6b, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x46, 0x69, 0x6c,
	0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x46,
	0x69, 0x6c, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x43, 0x72, 0x61,
	0x63, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x44, 0x12, 0x0c, 0x0a, 0x01, 0x4e, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x01, 0x4e, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x51, 0x0a, 0x13, 0x4d, 0x6f,
	0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
	0x73, 0x12, 0x3a, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2e,
	0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
	0x65, 0x72, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x72, 0x0a,
	0x12, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69,
	0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x50, 0x49, 0x4b, 0x65,
	0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12,
	0x20, 0x0a, 0x0b, 0x41, 0x50, 0x49, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x41, 0x50, 0x49, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
	0x64, 0x22, 0x5a, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x44, 0x12,
	0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12,
	0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4b, 0x0a,
	0x0f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71,
	0x12, 0x28, 0x0a, 0x0f, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x43, 0x61, 0x74, 0x65, 0x67,
	0x6f, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x43, 0x4e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x43, 0x4e, 0x22, 0xdb, 0x01, 0x0a, 0x0f, 0x43,
	0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e,
	0x0a, 0x02, 0x43, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x43, 0x4e, 0x12, 0x22,
	0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x74,
	0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x69, 0x74, 0x79, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79,
	0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72,
	0x69, 0x74, 0x68, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x4b, 0x65, 0x79, 0x41,
	0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x22, 0x40, 0x0a, 0x0f, 0x43, 0x65, 0x72, 0x74,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2d, 0x0a, 0x04, 0x69,
	0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x70, 0x62, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x2a, 0x5b, 0x0a, 0x0c, 0x4f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48,
	0x41, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x42, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x48,
	0x45, 0x4c, 0x4c, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x58, 0x45,
	0x43, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x52,
	0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x44, 0x5f,
	0x50, 0x41, 0x52, 0x54, 0x59, 0x10, 0x04, 0x2a, 0x2d, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x67, 0x65,
	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10,
	0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x48,
	0x54, 0x54, 0x50, 0x53, 0x10, 0x02, 0x2a, 0x2d, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12,
	0x0a, 0x0a, 0x06, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54,
	0x45, 0x58, 0x54, 0x10, 0x02, 0x2a, 0x30, 0x0a, 0x10, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x63, 0x6f,
	0x64, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
	0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x48, 0x49, 0x4b, 0x41, 0x54, 0x41, 0x5f, 0x47,
	0x41, 0x5f, 0x4e, 0x41, 0x49, 0x10, 0x01, 0x2a, 0x35, 0x0a, 0x11, 0x48, 0x54, 0x54, 0x50, 0x43,
	0x32, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04,
	0x50, 0x4f, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f,
	0x4e, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x02, 0x2a, 0x98,
	0x13, 0x0a, 0x08, 0x48, 0x61, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x4d,
	0x44, 0x35, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x03, 0x4d, 0x44, 0x34, 0x10, 0x84, 0x07, 0x12, 0x08,
	0x0a, 0x04, 0x53, 0x48, 0x41, 0x31, 0x10, 0x64, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x32,
	0x5f, 0x32, 0x32, 0x34, 0x10, 0x94, 0x0a, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x32, 0x5f,
	0x32, 0x35, 0x36, 0x10, 0xf8, 0x0a, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x32, 0x5f, 0x33,
	0x38, 0x34, 0x10, 0xb0, 0x54, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x32, 0x5f, 0x35, 0x31,
	0x32, 0x10, 0xa4, 0x0d, 0x12, 0x0e, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x33, 0x5f, 0x32, 0x32, 0x34,
	0x10, 0x94, 0x87, 0x01, 0x12, 0x0e, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x33, 0x5f, 0x32, 0x35, 0x36,
	0x10, 0xf8, 0x87, 0x01, 0x12, 0x0e, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x33, 0x5f, 0x33, 0x38, 0x34,
	0x10, 0xdc, 0x88, 0x01, 0x12, 0x0e, 0x0a, 0x08, 0x53, 0x48, 0x41, 0x33, 0x5f, 0x35, 0x31, 0x32,
	0x10, 0xc0, 0x89, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x52, 0x49, 0x50, 0x45, 0x4d, 0x44, 0x5f, 0x31,
	0x36, 0x30, 0x10, 0xf0, 0x2e, 0x12, 0x10, 0x0a, 0x0b, 0x42, 0x4c, 0x41, 0x4b, 0x45, 0x32, 0x42,
	0x5f, 0x32, 0x35, 0x36, 0x10, 0xd8, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x47, 0x4f, 0x53, 0x54, 0x5f,
	0x52, 0x5f, 0x33, 0x32, 0x5f, 0x31, 0x31, 0x5f, 0x32, 0x30, 0x31, 0x32, 0x5f, 0x32, 0x35, 0x36,
	0x10, 0xb4, 0x5b, 0x12, 0x1a, 0x0a, 0x15, 0x47, 0x4f, 0x53, 0x54, 0x5f, 0x52, 0x5f, 0x33, 0x32,
	0x5f, 0x31, 0x31, 0x5f, 0x32, 0x30, 0x31, 0x32, 0x5f, 0x35, 0x31, 0x32, 0x10, 0x98, 0x5c, 0x12,
	0x14, 0x0a, 0x0f, 0x47, 0x4f, 0x53, 0x54, 0x5f, 0x52, 0x5f, 0x33, 0x34, 0x5f, 0x31, 0x31, 0x5f,
	0x39, 0x34, 0x10, 0xf4, 0x35, 0x12, 0x09, 0x0a, 0x03, 0x47, 0x50, 0x47, 0x10, 0xf2, 0x84, 0x01,
	0x12, 0x0d, 0x0a, 0x08, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x4d, 0x44, 0x35, 0x10, 0xec, 0x27, 0x12,
	0x10, 0x0a, 0x0a, 0x4b, 0x45, 0x43, 0x43, 0x41, 0x4b, 0x5f, 0x32, 0x32, 0x34, 0x10, 0xa4, 0x8a,
	0x01, 0x12, 0x10, 0x0a, 0x0a, 0x4b, 0x45, 0x43, 0x43, 0x41, 0x4b, 0x5f, 0x32, 0x35, 0x36, 0x10,
	0x88, 0x8b, 0x01, 0x12, 0x10, 0x0a, 0x0a, 0x4b, 0x45, 0x43, 0x43, 0x41, 0x4b, 0x5f, 0x33, 0x38,
	0x34, 0x10, 0xec, 0x8b, 0x01, 0x12, 0x10, 0x0a, 0x0a, 0x4b, 0x45, 0x43, 0x43, 0x41, 0x4b, 0x5f,
	0x35, 0x31, 0x32, 0x10, 0xd0, 0x8c, 0x01, 0x12, 0x0e, 0x0a, 0x09, 0x57, 0x48, 0x49, 0x52, 0x4c,
	0x50, 0x4f, 0x4f, 0x4c, 0x10, 0xd4, 0x2f, 0x12, 0x0c, 0x0a, 0x07, 0x53, 0x49, 0x50, 0x48, 0x41,
	0x53, 0x48, 0x10, 0xf4, 0x4e, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x44, 0x35, 0x5f, 0x55, 0x54, 0x46,
	0x31, 0x36, 0x4c, 0x45, 0x10, 0x46, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x48, 0x41, 0x31, 0x5f, 0x55,
	0x54, 0x46, 0x31, 0x36, 0x4c, 0x45, 0x10, 0xaa, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x48, 0x41,
	0x32, 0x35, 0x36, 0x5f, 0x55, 0x54, 0x46, 0x31, 0x36, 0x4c, 0x45, 0x10, 0xbe, 0x0b, 0x12, 0x13,
	0x0a, 0x0e, 0x53, 0x48, 0x41, 0x33, 0x38, 0x34, 0x5f, 0x55, 0x54, 0x46, 0x31, 0x36, 0x4c, 0x45,
	0x10, 0xf6, 0x54, 0x12, 0x13, 0x0a, 0x0e, 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x5f, 0x55, 0x54,
	0x46, 0x31, 0x36, 0x4c, 0x45, 0x10, 0xea, 0x0d, 0x12, 0x18, 0x0a, 0x13, 0x42, 0x4c, 0x41, 0x4b,
	0x45, 0x32, 0x42, 0x5f, 0x35, 0x31, 0x32, 0x5f, 0x50, 0x57, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x10,
	0xe2, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x42, 0x4c, 0x41, 0x4b, 0x45, 0x32, 0x42, 0x5f, 0x35, 0x31,
	0x32, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x5f, 0x50, 0x57, 0x10, 0xec, 0x04, 0x12, 0x0f, 0x0a, 0x0b,
	0x4d, 0x44, 0x35, 0x5f, 0x50, 0x57, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x10, 0x0a, 0x12, 0x0f, 0x0a,
	0x0b, 0x4d, 0x44, 0x35, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x5f, 0x50, 0x57, 0x10, 0x14, 0x12, 0x15,
	0x0a, 0x10, 0x4d, 0x44, 0x35, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x5f, 0x50, 0x57, 0x5f, 0x53, 0x41,
	0x4c, 0x54, 0x10, 0xd8, 0x1d, 0x12, 0x14, 0x0a, 0x0f, 0x4d, 0x44, 0x35, 0x5f, 0x53, 0x41, 0x4c,
	0x54, 0x5f, 0x4d, 0x44, 0x35, 0x5f, 0x50, 0x57, 0x10, 0xfe, 0x1c, 0x12, 0x0a, 0x0a, 0x05, 0x43,
	0x52, 0x43, 0x33, 0x32, 0x10, 0xec, 0x59, 0x12, 0x0c, 0x0a, 0x06, 0x43, 0x52, 0x43, 0x33, 0x32,
	0x43, 0x10, 0xfc, 0xd9, 0x01, 0x12, 0x10, 0x0a, 0x0a, 0x43, 0x52, 0x43, 0x36, 0x34, 0x4a, 0x6f,
	0x6e, 0x65, 0x73, 0x10, 0xe0, 0xda, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x4a, 0x41, 0x56, 0x41, 0x5f,
	0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x8c, 0x92, 0x01, 0x12, 0x0c, 0x0a, 0x06, 0x4d, 0x55,
	0x52, 0x4d, 0x55, 0x52, 0x10, 0xe4, 0xc8, 0x01, 0x12, 0x0d, 0x0a, 0x07, 0x4d, 0x55, 0x52, 0x4d,
	0x55, 0x52, 0x33, 0x10, 0x98, 0xd9, 0x01, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x48, 0x52, 0x45, 0x45,
	0x5f, 0x44, 0x45, 0x53, 0x10, 0x94, 0x6e, 0x12, 0x08, 0x0a, 0x03, 0x44, 0x45, 0x53, 0x10, 0xb0,
	0x6d, 0x12, 0x11, 0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x45, 0x43, 0x42,
	0x10, 0xa1, 0xce, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x39, 0x32, 0x5f,
	0x45, 0x43, 0x42, 0x10, 0xa2, 0xce, 0x01, 0x12, 0x11, 0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x32,
	0x35, 0x36, 0x5f, 0x45, 0x43, 0x42, 0x10, 0xa3, 0xce, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x43, 0x48,
	0x41, 0x5f, 0x43, 0x48, 0x41, 0x5f, 0x32, 0x30, 0x10, 0xa8, 0x78, 0x12, 0x1f, 0x0a, 0x1a, 0x4c,
	0x49, 0x4e, 0x55, 0x58, 0x5f, 0x4b, 0x45, 0x52, 0x4e, 0x45, 0x4c, 0x5f, 0x43, 0x52, 0x59, 0x50,
	0x54, 0x4f, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x32, 0x34, 0x10, 0xa4, 0x71, 0x12, 0x0c, 0x0a, 0x07,
	0x53, 0x4b, 0x49, 0x50, 0x5f, 0x33, 0x32, 0x10, 0xb4, 0x74, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x42,
	0x4b, 0x44, 0x46, 0x32, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x4d, 0x44, 0x35, 0x10, 0xfc, 0x5c,
	0x12, 0x15, 0x0a, 0x10, 0x50, 0x42, 0x4b, 0x44, 0x46, 0x32, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f,
	0x53, 0x48, 0x41, 0x31, 0x10, 0xe0, 0x5d, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x42, 0x4b, 0x44, 0x46,
	0x32, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10, 0x94, 0x55,
	0x12, 0x17, 0x0a, 0x12, 0x50, 0x42, 0x4b, 0x44, 0x46, 0x32, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f,
	0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x10, 0xc4, 0x5e, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x43, 0x52,
	0x59, 0x50, 0x54, 0x10, 0xc4, 0x45, 0x12, 0x0b, 0x0a, 0x06, 0x50, 0x48, 0x50, 0x41, 0x53, 0x53,
	0x10, 0x90, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x54, 0x41, 0x43, 0x41, 0x43, 0x53, 0x5f, 0x50, 0x4c,
	0x55, 0x53, 0x10, 0xe4, 0x7d, 0x12, 0x0f, 0x0a, 0x0a, 0x53, 0x49, 0x50, 0x5f, 0x44, 0x49, 0x47,
	0x45, 0x53, 0x54, 0x10, 0x88, 0x59, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4b, 0x45, 0x5f, 0x4d, 0x44,
	0x35, 0x10, 0xb4, 0x29, 0x12, 0x0d, 0x0a, 0x08, 0x49, 0x4b, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x31,
	0x10, 0x98, 0x2a, 0x12, 0x19, 0x0a, 0x13, 0x53, 0x4e, 0x4d, 0x50, 0x5f, 0x56, 0x33, 0x5f, 0x48,
	0x4d, 0x41, 0x43, 0x5f, 0x4d, 0x44, 0x35, 0x5f, 0x39, 0x36, 0x10, 0x8c, 0xc4, 0x01, 0x12, 0x22,
	0x0a, 0x1c, 0x53, 0x4e, 0x4d, 0x50, 0x5f, 0x56, 0x33, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x4d,
	0x44, 0x35, 0x5f, 0x39, 0x36, 0x5f, 0x5f, 0x53, 0x48, 0x41, 0x31, 0x5f, 0x39, 0x36, 0x10, 0xa8,
	0xc3, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x53, 0x4e, 0x4d, 0x50, 0x5f, 0x56, 0x33, 0x5f, 0x48, 0x4d,
	0x41, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x31, 0x5f, 0x39, 0x36, 0x10, 0xf0, 0xc4, 0x01, 0x12, 0x1d,
	0x0a, 0x17, 0x53, 0x4e, 0x4d, 0x50, 0x5f, 0x56, 0x33, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x53,
	0x48, 0x41, 0x32, 0x32, 0x34, 0x5f, 0x31, 0x32, 0x38, 0x10, 0xcc, 0xd0, 0x01, 0x12, 0x1d, 0x0a,
	0x17, 0x53, 0x4e, 0x4d, 0x50, 0x5f, 0x56, 0x33, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x53, 0x48,
	0x41, 0x32, 0x35, 0x36, 0x5f, 0x31, 0x39, 0x32, 0x10, 0xb0, 0xd1, 0x01, 0x12, 0x1d, 0x0a, 0x17,
	0x53, 0x4e, 0x4d, 0x50, 0x5f, 0x56, 0x33, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x53, 0x48, 0x41,
	0x33, 0x38, 0x34, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x94, 0xd2, 0x01, 0x12, 0x1d, 0x0a, 0x17, 0x53,
	0x4e, 0x4d, 0x50, 0x5f, 0x56, 0x33, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x53, 0x48, 0x41, 0x35,
	0x31, 0x32, 0x5f, 0x33, 0x38, 0x34, 0x10, 0xa4, 0xd5, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x57, 0x50,
	0x41, 0x5f, 0x45, 0x41, 0x50, 0x4f, 0x4c, 0x5f, 0x50, 0x42, 0x4b, 0x44, 0x46, 0x32, 0x10, 0xc4,
	0x13, 0x12, 0x12, 0x0a, 0x0d, 0x57, 0x50, 0x41, 0x5f, 0x45, 0x41, 0x50, 0x4f, 0x4c, 0x5f, 0x50,
	0x4d, 0x4b, 0x10, 0xc5, 0x13, 0x12, 0x1c, 0x0a, 0x16, 0x57, 0x50, 0x41, 0x5f, 0x50, 0x42, 0x4b,
	0x44, 0x46, 0x32, 0x5f, 0x50, 0x4d, 0x4b, 0x49, 0x44, 0x5f, 0x45, 0x41, 0x50, 0x4f, 0x4c, 0x10,
	0xf0, 0xab, 0x01, 0x12, 0x19, 0x0a, 0x13, 0x57, 0x50, 0x41, 0x5f, 0x50, 0x4d, 0x4b, 0x5f, 0x50,
	0x4d, 0x4b, 0x49, 0x44, 0x5f, 0x45, 0x41, 0x50, 0x4f, 0x4c, 0x10, 0xf1, 0xab, 0x01, 0x12, 0x16,
	0x0a, 0x10, 0x57, 0x50, 0x41, 0x5f, 0x50, 0x4d, 0x4b, 0x49, 0x44, 0x5f, 0x50, 0x42, 0x4b, 0x44,
	0x46, 0x32, 0x10, 0xa0, 0x83, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x57, 0x50, 0x41, 0x5f, 0x50, 0x4d,
	0x4b, 0x49, 0x44, 0x5f, 0x50, 0x4d, 0x4b, 0x10, 0xa1, 0x83, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x49,
	0x50, 0x4d, 0x49, 0x32, 0x5f, 0x50, 0x41, 0x4b, 0x50, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x5f, 0x53,
	0x48, 0x41, 0x31, 0x10, 0x84, 0x39, 0x12, 0x0d, 0x0a, 0x08, 0x43, 0x52, 0x41, 0x4d, 0x5f, 0x4d,
	0x44, 0x35, 0x10, 0xd8, 0x4f, 0x12, 0x09, 0x0a, 0x03, 0x4a, 0x57, 0x54, 0x10, 0xf4, 0x80, 0x01,
	0x12, 0x0e, 0x0a, 0x08, 0x52, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x33, 0x10, 0x90, 0xe4, 0x01,
	0x12, 0x19, 0x0a, 0x13, 0x4b, 0x45, 0x52, 0x42, 0x45, 0x52, 0x4f, 0x53, 0x5f, 0x31, 0x37, 0x5f,
	0x54, 0x47, 0x53, 0x5f, 0x52, 0x45, 0x50, 0x10, 0x90, 0x99, 0x01, 0x12, 0x19, 0x0a, 0x13, 0x4b,
	0x45, 0x52, 0x42, 0x45, 0x52, 0x4f, 0x53, 0x5f, 0x31, 0x37, 0x5f, 0x50, 0x52, 0x45, 0x41, 0x55,
	0x54, 0x48, 0x10, 0xd8, 0x9a, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x4b, 0x45, 0x52, 0x42, 0x45, 0x52,
	0x4f, 0x53, 0x5f, 0x31, 0x37, 0x5f, 0x44, 0x42, 0x10, 0x80, 0xe1, 0x01, 0x12, 0x19, 0x0a, 0x13,
	0x4b, 0x45, 0x52, 0x42, 0x45, 0x52, 0x4f, 0x53, 0x5f, 0x31, 0x38, 0x5f, 0x54, 0x47, 0x53, 0x5f,
	0x52, 0x45, 0x50, 0x10, 0xf4, 0x99, 0x01, 0x12, 0x19, 0x0a, 0x13, 0x4b, 0x45, 0x52, 0x42, 0x45,
	0x52, 0x4f, 0x53, 0x5f, 0x31, 0x38, 0x5f, 0x50, 0x52, 0x45, 0x41, 0x55, 0x54, 0x48, 0x10, 0xbc,
	0x9b, 0x01, 0x12, 0x14, 0x0a, 0x0e, 0x4b, 0x45, 0x52, 0x42, 0x45, 0x52, 0x4f, 0x53, 0x5f, 0x31,
	0x38, 0x5f, 0x44, 0x42, 0x10, 0xe4, 0xe1, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x4b, 0x45, 0x52, 0x42,
	0x45, 0x52, 0x4f, 0x53, 0x5f, 0x32, 0x33, 0x5f, 0x53, 0x41, 0x5f, 0x52, 0x45, 0x51, 0x5f, 0x50,
	0x52, 0x45, 0x41, 0x55, 0x54, 0x48, 0x10, 0xcc, 0x3a, 0x12, 0x18, 0x0a, 0x13, 0x4b, 0x45, 0x52,
	0x42, 0x45, 0x52, 0x4f, 0x53, 0x5f, 0x32, 0x33, 0x5f, 0x54, 0x47, 0x53, 0x5f, 0x52, 0x45, 0x50,
	0x10, 0xac, 0x66, 0x12, 0x18, 0x0a, 0x12, 0x4b, 0x45, 0x52, 0x42, 0x45, 0x52, 0x4f, 0x53, 0x5f,
	0x32, 0x33, 0x5f, 0x41, 0x53, 0x5f, 0x52, 0x45, 0x50, 0x10, 0x98, 0x8e, 0x01, 0x12, 0x10, 0x0a,
	0x0b, 0x4e, 0x45, 0x54, 0x5f, 0x4e, 0x54, 0x4c, 0x4d, 0x5f, 0x56, 0x31, 0x10, 0xfc, 0x2a, 0x12,
	0x14, 0x0a, 0x0e, 0x4e, 0x45, 0x54, 0x5f, 0x4e, 0x54, 0x4c, 0x4d, 0x5f, 0x56, 0x31, 0x5f, 0x4e,
	0x54, 0x10, 0xf8, 0xd2, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x4e, 0x45, 0x54, 0x5f, 0x4e, 0x54, 0x4c,
	0x4d, 0x5f, 0x56, 0x32, 0x10, 0xe0, 0x2b, 0x12, 0x14, 0x0a, 0x0e, 0x4e, 0x45, 0x54, 0x5f, 0x4e,
	0x54, 0x4c, 0x4d, 0x5f, 0x56, 0x32, 0x5f, 0x4e, 0x54, 0x10, 0xdc, 0xd3, 0x01, 0x12, 0x0b, 0x0a,
	0x05, 0x46, 0x4c, 0x41, 0x53, 0x4b, 0x10, 0xac, 0xe3, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x49, 0x53,
	0x43, 0x53, 0x49, 0x5f, 0x43, 0x48, 0x41, 0x50, 0x10, 0xc0, 0x25, 0x12, 0x09, 0x0a, 0x04, 0x52,
	0x41, 0x43, 0x46, 0x10, 0xb4, 0x42, 0x12, 0x0d, 0x0a, 0x08, 0x41, 0x49, 0x58, 0x5f, 0x53, 0x4d,
	0x44, 0x35, 0x10, 0x9c, 0x31, 0x12, 0x0e, 0x0a, 0x09, 0x41, 0x49, 0x58, 0x5f, 0x53, 0x53, 0x48,
	0x41, 0x31, 0x10, 0xac, 0x34, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x49, 0x58, 0x5f, 0x53, 0x53, 0x48,
	0x41, 0x32, 0x35, 0x36, 0x10, 0x80, 0x32, 0x12, 0x10, 0x0a, 0x0b, 0x41, 0x49, 0x58, 0x5f, 0x53,
	0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x10, 0xe4, 0x32, 0x12, 0x07, 0x0a, 0x02, 0x4c, 0x4d, 0x10,
	0xb8, 0x17, 0x12, 0x0d, 0x0a, 0x07, 0x51, 0x4e, 0x58, 0x5f, 0x4d, 0x44, 0x35, 0x10, 0xb8, 0x94,
	0x01, 0x12, 0x10, 0x0a, 0x0a, 0x51, 0x4e, 0x58, 0x5f, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x10,
	0x9c, 0x95, 0x01, 0x12, 0x10, 0x0a, 0x0a, 0x51, 0x4e, 0x58, 0x5f, 0x53, 0x48, 0x41, 0x35, 0x31,
	0x32, 0x10, 0x80, 0x96, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x50, 0x41, 0x50, 0x49, 0x5f, 0x56,
	0x31, 0x5f, 0x43, 0x54, 0x58, 0x5f, 0x31, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x32, 0x10, 0xc4, 0x77,
	0x12, 0x13, 0x0a, 0x0e, 0x44, 0x50, 0x41, 0x50, 0x49, 0x5f, 0x56, 0x31, 0x5f, 0x43, 0x54, 0x58,
	0x5f, 0x33, 0x10, 0xce, 0x77, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x50, 0x41, 0x50, 0x49, 0x5f, 0x56,
	0x32, 0x5f, 0x43, 0x54, 0x58, 0x5f, 0x31, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x32, 0x10, 0x9c, 0x7c,
	0x12, 0x13, 0x0a, 0x0e, 0x44, 0x50, 0x41, 0x50, 0x49, 0x5f, 0x56, 0x32, 0x5f, 0x43, 0x54, 0x58,
	0x5f, 0x33, 0x10, 0xa6, 0x7c, 0x12, 0x0b, 0x0a, 0x06, 0x47, 0x52, 0x55, 0x42, 0x5f, 0x32, 0x10,
	0xa0, 0x38, 0x12, 0x12, 0x0a, 0x0d, 0x4d, 0x53, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x53,
	0x59, 0x4e, 0x43, 0x10, 0x80, 0x64, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x53, 0x44, 0x49, 0x5f, 0x43,
	0x52, 0x59, 0x50, 0x54, 0x10, 0xf0, 0x60, 0x12, 0x09, 0x0a, 0x04, 0x4e, 0x54, 0x4c, 0x4d, 0x10,
	0xe8, 0x07, 0x12, 0x0c, 0x0a, 0x07, 0x52, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x32, 0x10, 0xac, 0x4d,
	0x12, 0x14, 0x0a, 0x0f, 0x53, 0x41, 0x4d, 0x53, 0x55, 0x4e, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x52,
	0x4f, 0x49, 0x44, 0x10, 0xa8, 0x2d, 0x12, 0x17, 0x0a, 0x11, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57,
	0x53, 0x5f, 0x48, 0x45, 0x4c, 0x4c, 0x4f, 0x5f, 0x50, 0x49, 0x4e, 0x10, 0xc4, 0xdb, 0x01, 0x12,
	0x12, 0x0a, 0x0d, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x53, 0x5f, 0x50, 0x48, 0x4f, 0x4e, 0x45,
	0x10, 0xe8, 0x6b, 0x12, 0x12, 0x0a, 0x0d, 0x43, 0x49, 0x53, 0x43, 0x4f, 0x5f, 0x41, 0x53, 0x41,
	0x5f, 0x4d, 0x44, 0x35, 0x10, 0xea, 0x12, 0x12, 0x1c, 0x0a, 0x17, 0x43, 0x49, 0x53, 0x43, 0x4f,
	0x5f, 0x49, 0x4f, 0x53, 0x5f, 0x50, 0x42, 0x4b, 0x44, 0x46, 0x32, 0x5f, 0x53, 0x48, 0x41, 0x32,
	0x35, 0x36, 0x10, 0xf0, 0x47, 0x12, 0x15, 0x0a, 0x10, 0x43, 0x49, 0x53, 0x43, 0x4f, 0x5f, 0x49,
	0x4f, 0x53, 0x5f, 0x53, 0x43, 0x52, 0x59, 0x50, 0x54, 0x10, 0xd4, 0x48, 0x12, 0x12, 0x0a, 0x0d,
	0x43, 0x49, 0x53, 0x43, 0x4f, 0x5f, 0x50, 0x49, 0x58, 0x5f, 0x4d, 0x44, 0x35, 0x10, 0xe0, 0x12,
	0x12, 0x1a, 0x0a, 0x15, 0x43, 0x49, 0x54, 0x52, 0x49, 0x58, 0x5f, 0x4e, 0x45, 0x54, 0x53, 0x43,
	0x41, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x31, 0x10, 0xa4, 0x3f, 0x12, 0x1d, 0x0a, 0x17,
	0x43, 0x49, 0x54, 0x52, 0x49, 0x58, 0x5f, 0x4e, 0x45, 0x54, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x52,
	0x5f, 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x10, 0xb8, 0xad, 0x01, 0x12, 0x08, 0x0a, 0x03, 0x44,
	0x43, 0x43, 0x10, 0xcc, 0x08, 0x12, 0x09, 0x0a, 0x04, 0x44, 0x43, 0x43, 0x32, 0x10, 0xb4, 0x10,
	0x12, 0x0f, 0x0a, 0x0a, 0x4d, 0x41, 0x43, 0x4f, 0x53, 0x5f, 0x31, 0x30, 0x5f, 0x38, 0x10, 0xbc,
	0x37, 0x12, 0x0c, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x8f, 0x4e, 0x12,
	0x10, 0x0a, 0x0b, 0x42, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x80,
	0x19, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x48, 0x41, 0x35, 0x31, 0x32, 0x5f, 0x43, 0x52, 0x59, 0x50,
	0x54, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x88, 0x0e, 0x2a, 0x32, 0x0a, 0x06, 0x53, 0x74, 0x61,
	0x74, 0x65, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a,
	0x08, 0x43, 0x52, 0x41, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x49,
	0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x2a, 0x3c, 0x0a,
	0x0e, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x00,
	0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12,
	0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x94, 0x01, 0x0a, 0x0f,
	0x43, 0x72, 0x61, 0x63, 0x6b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12,
	0x0c, 0x0a, 0x08, 0x53, 0x54, 0x52, 0x41, 0x49, 0x47, 0x48, 0x54, 0x10, 0x00, 0x12, 0x0f, 0x0a,
	0x0b, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0e,
	0x0a, 0x0a, 0x42, 0x52, 0x55, 0x54, 0x45, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x10, 0x03, 0x12, 0x18,
	0x0a, 0x14, 0x48, 0x59, 0x42, 0x52, 0x49, 0x44, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x4c, 0x49, 0x53,
	0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x59, 0x42, 0x52,
	0x49, 0x44, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x5f, 0x57, 0x4f, 0x52, 0x44, 0x4c, 0x49, 0x53, 0x54,
	0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x4b,
	0x10, 0x0a, 0x2a, 0x44, 0x0a, 0x0d, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x63, 0x6f, 0x64,
	0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x45,
	0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x53, 0x4f,
	0x5f, 0x38, 0x38, 0x35, 0x39, 0x5f, 0x31, 0x35, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x54,
	0x46, 0x5f, 0x33, 0x32, 0x4c, 0x45, 0x10, 0x02, 0x2a, 0x90, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x61,
	0x63, 0x6b, 0x4f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12,
	0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41,
	0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x53, 0x41, 0x4c, 0x54,
	0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x0d, 0x0a,
	0x09, 0x48, 0x45, 0x58, 0x5f, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09,
	0x43, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x4f, 0x53, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x54,
	0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x41, 0x42, 0x53, 0x4f, 0x4c, 0x55, 0x54,
	0x45, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50,
	0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x06, 0x2a, 0x63, 0x0a, 0x14, 0x43,
	0x72, 0x61, 0x63, 0x6b, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x66,
	0x69, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x57,
	0x4f, 0x52, 0x4b, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10,
	0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45,
	0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10,
	0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x49, 0x47, 0x48, 0x54, 0x4d, 0x41, 0x52, 0x45, 0x10, 0x04,
	0x2a, 0x4e, 0x0a, 0x0d, 0x43, 0x72, 0x61, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x57, 0x4f, 0x52, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x10,
	0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e,
	0x4d, 0x41, 0x52, 0x4b, 0x4f, 0x56, 0x5f, 0x48, 0x43, 0x53, 0x54, 0x41, 0x54, 0x32, 0x10, 0x03,
	0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62,
	0x69, 0x73, 0x68, 0x6f, 0x70, 0x66, 0x6f, 0x78, 0x2f, 0x73, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x70,
	0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_clientpb_client_proto_rawDescOnce sync.Once
	file_clientpb_client_proto_rawDescData = file_clientpb_client_proto_rawDesc
)

func file_clientpb_client_proto_rawDescGZIP() []byte {
	file_clientpb_client_proto_rawDescOnce.Do(func() {
		file_clientpb_client_proto_rawDescData = protoimpl.X.CompressGZIP(file_clientpb_client_proto_rawDescData)
	})
	return file_clientpb_client_proto_rawDescData
}

var file_clientpb_client_proto_enumTypes = make([]protoimpl.EnumInfo, 13)
var file_clientpb_client_proto_msgTypes = make([]protoimpl.MessageInfo, 132)
var file_clientpb_client_proto_goTypes = []any{
	(OutputFormat)(0),              // 0: clientpb.OutputFormat
	(StageProtocol)(0),             // 1: clientpb.StageProtocol
	(FileType)(0),                  // 2: clientpb.FileType
	(ShellcodeEncoder)(0),          // 3: clientpb.ShellcodeEncoder
	(HTTPC2SegmentType)(0),         // 4: clientpb.HTTPC2SegmentType
	(HashType)(0),                  // 5: clientpb.HashType
	(States)(0),                    // 6: clientpb.States
	(CrackJobStatus)(0),            // 7: clientpb.CrackJobStatus
	(CrackAttackMode)(0),           // 8: clientpb.CrackAttackMode
	(CrackEncoding)(0),             // 9: clientpb.CrackEncoding
	(CrackOutfileFormat)(0),        // 10: clientpb.CrackOutfileFormat
	(CrackWorkloadProfile)(0),      // 11: clientpb.CrackWorkloadProfile
	(CrackFileType)(0),             // 12: clientpb.CrackFileType
	(*Version)(nil),                // 13: clientpb.Version
	(*ClientLogData)(nil),          // 14: clientpb.ClientLogData
	(*Session)(nil),                // 15: clientpb.Session
	(*Beacon)(nil),                 // 16: clientpb.Beacon
	(*Beacons)(nil),                // 17: clientpb.Beacons
	(*BeaconTask)(nil),             // 18: clientpb.BeaconTask
	(*BeaconTasks)(nil),            // 19: clientpb.BeaconTasks
	(*BeaconIntegrity)(nil),        // 20: clientpb.BeaconIntegrity
	(*ImplantC2)(nil),              // 21: clientpb.ImplantC2
	(*ImplantConfig)(nil),          // 22: clientpb.ImplantConfig
	(*TrafficEncoder)(nil),         // 23: clientpb.TrafficEncoder
	(*TrafficEncoderMap)(nil),      // 24: clientpb.TrafficEncoderMap
	(*TrafficEncoderTest)(nil),     // 25: clientpb.TrafficEncoderTest
	(*TrafficEncoderTests)(nil),    // 26: clientpb.TrafficEncoderTests
	(*ExternalImplantConfig)(nil),  // 27: clientpb.ExternalImplantConfig
	(*ExternalImplantBinary)(nil),  // 28: clientpb.ExternalImplantBinary
	(*ImplantBuilds)(nil),          // 29: clientpb.ImplantBuilds
	(*ImplantStageReq)(nil),        // 30: clientpb.ImplantStageReq
	(*ImplantBuild)(nil),           // 31: clientpb.ImplantBuild
	(*CompilerTarget)(nil),         // 32: clientpb.CompilerTarget
	(*CrossCompiler)(nil),          // 33: clientpb.CrossCompiler
	(*Compiler)(nil),               // 34: clientpb.Compiler
	(*DeleteReq)(nil),              // 35: clientpb.DeleteReq
	(*DNSCanary)(nil),              // 36: clientpb.DNSCanary
	(*Canaries)(nil),               // 37: clientpb.Canaries
	(*UniqueWGIP)(nil),             // 38: clientpb.UniqueWGIP
	(*ImplantProfile)(nil),         // 39: clientpb.ImplantProfile
	(*ImplantProfiles)(nil),        // 40: clientpb.ImplantProfiles
	(*RegenerateReq)(nil),          // 41: clientpb.RegenerateReq
	(*Job)(nil),                    // 42: clientpb.Job
	(*Jobs)(nil),                   // 43: clientpb.Jobs
	(*KillJobReq)(nil),             // 44: clientpb.KillJobReq
	(*RestartJobReq)(nil),          // 45: clientpb.RestartJobReq
	(*KillJob)(nil),                // 46: clientpb.KillJob
	(*ListenerJob)(nil),            // 47: clientpb.ListenerJob
	(*MultiplayerListenerReq)(nil), // 48: clientpb.MultiplayerListenerReq
	(*MTLSListenerReq)(nil),        // 49: clientpb.MTLSListenerReq
	(*WGListenerReq)(nil),          // 50: clientpb.WGListenerReq
	(*DNSListenerReq)(nil),         // 51: clientpb.DNSListenerReq
	(*HTTPListenerReq)(nil),        // 52: clientpb.HTTPListenerReq
	(*NamedPipesReq)(nil),          // 53: clientpb.NamedPipesReq
	(*NamedPipes)(nil),             // 54: clientpb.NamedPipes
	(*TCPPivotReq)(nil),            // 55: clientpb.TCPPivotReq
	(*TCPPivot)(nil),               // 56: clientpb.TCPPivot
	(*Sessions)(nil),               // 57: clientpb.Sessions
	(*RenameReq)(nil),              // 58: clientpb.RenameReq
	(*GenerateReq)(nil),            // 59: clientpb.GenerateReq
	(*GenerateStageReq)(nil),       // 60: clientpb.GenerateStageReq
	(*Generate)(nil),               // 61: clientpb.Generate
	(*MSFReq)(nil),                 // 62: clientpb.MSFReq
	(*MSFRemoteReq)(nil),           // 63: clientpb.MSFRemoteReq
	(*StagerListenerReq)(nil),      // 64: clientpb.StagerListenerReq
	(*StagerListener)(nil),         // 65: clientpb.StagerListener
	(*ShellcodeRDIReq)(nil),        // 66: clientpb.ShellcodeRDIReq
	(*ShellcodeRDI)(nil),           // 67: clientpb.ShellcodeRDI
	(*GetSystemReq)(nil),           // 68: clientpb.GetSystemReq
	(*MigrateReq)(nil),             // 69: clientpb.MigrateReq
	(*CreateTunnelReq)(nil),        // 70: clientpb.CreateTunnelReq
	(*CreateTunnel)(nil),           // 71: clientpb.CreateTunnel
	(*CloseTunnelReq)(nil),         // 72: clientpb.CloseTunnelReq
	(*PivotGraphEntry)(nil),        // 73: clientpb.PivotGraphEntry
	(*PivotGraph)(nil),             // 74: clientpb.PivotGraph
	(*Client)(nil),                 // 75: clientpb.Client
	(*Event)(nil),                  // 76: clientpb.Event
	(*Operators)(nil),              // 77: clientpb.Operators
	(*Operator)(nil),               // 78: clientpb.Operator
	(*WebContent)(nil),             // 79: clientpb.WebContent
	(*WebsiteAddContent)(nil),      // 80: clientpb.WebsiteAddContent
	(*WebsiteRemoveContent)(nil),   // 81: clientpb.WebsiteRemoveContent
	(*Website)(nil),                // 82: clientpb.Website
	(*Websites)(nil),               // 83: clientpb.Websites
	(*WGClientConfig)(nil),         // 84: clientpb.WGClientConfig
	(*Loot)(nil),                   // 85: clientpb.Loot
	(*AllLoot)(nil),                // 86: clientpb.AllLoot
	(*IOC)(nil),                    // 87: clientpb.IOC
	(*ExtensionData)(nil),          // 88: clientpb.ExtensionData
	(*Host)(nil),                   // 89: clientpb.Host
	(*AllHosts)(nil),               // 90: clientpb.AllHosts
	(*DllHijackReq)(nil),           // 91: clientpb.DllHijackReq
	(*DllHijack)(nil),              // 92: clientpb.DllHijack
	(*BackdoorReq)(nil),            // 93: clientpb.BackdoorReq
	(*Backdoor)(nil),               // 94: clientpb.Backdoor
	(*ShellcodeEncodeReq)(nil),     // 95: clientpb.ShellcodeEncodeReq
	(*ShellcodeEncode)(nil),        // 96: clientpb.ShellcodeEncode
	(*ShellcodeEncoderMap)(nil),    // 97: clientpb.ShellcodeEncoderMap
	(*ExternalGenerateReq)(nil),    // 98: clientpb.ExternalGenerateReq
	(*Builders)(nil),               // 99: clientpb.Builders
	(*Builder)(nil),                // 100: clientpb.Builder
	(*HTTPC2Configs)(nil),          // 101: clientpb.HTTPC2Configs
	(*C2ProfileReq)(nil),           // 102: clientpb.C2ProfileReq
	(*HTTPC2ConfigReq)(nil),        // 103: clientpb.HTTPC2ConfigReq
	(*HTTPC2Config)(nil),           // 104: clientpb.HTTPC2Config
	(*HTTPC2ServerConfig)(nil),     // 105: clientpb.HTTPC2ServerConfig
	(*HTTPC2ImplantConfig)(nil),    // 106: clientpb.HTTPC2ImplantConfig
	(*HTTPC2Cookie)(nil),           // 107: clientpb.HTTPC2Cookie
	(*HTTPC2Header)(nil),           // 108: clientpb.HTTPC2Header
	(*HTTPC2URLParameter)(nil),     // 109: clientpb.HTTPC2URLParameter
	(*HTTPC2PathSegment)(nil),      // 110: clientpb.HTTPC2PathSegment
	(*Credential)(nil),             // 111: clientpb.Credential
	(*Credentials)(nil),            // 112: clientpb.Credentials
	(*Crackstations)(nil),          // 113: clientpb.Crackstations
	(*CrackstationStatus)(nil),     // 114: clientpb.CrackstationStatus
	(*CrackSyncStatus)(nil),        // 115: clientpb.CrackSyncStatus
	(*CrackBenchmark)(nil),         // 116: clientpb.CrackBenchmark
	(*CrackTask)(nil),              // 117: clientpb.CrackTask
	(*Crackstation)(nil),           // 118: clientpb.Crackstation
	(*CUDABackendInfo)(nil),        // 119: clientpb.CUDABackendInfo
	(*OpenCLBackendInfo)(nil),      // 120: clientpb.OpenCLBackendInfo
	(*MetalBackendInfo)(nil),       // 121: clientpb.MetalBackendInfo
	(*CrackCommand)(nil),           // 122: clientpb.CrackCommand
	(*CrackConfig)(nil),            // 123: clientpb.CrackConfig
	(*CrackFiles)(nil),             // 124: clientpb.CrackFiles
	(*CrackFile)(nil),              // 125: clientpb.CrackFile
	(*CrackFileChunk)(nil),         // 126: clientpb.CrackFileChunk
	(*MonitoringProviders)(nil),    // 127: clientpb.MonitoringProviders
	(*MonitoringProvider)(nil),     // 128: clientpb.MonitoringProvider
	(*ResourceID)(nil),             // 129: clientpb.ResourceID
	(*CertificatesReq)(nil),        // 130: clientpb.CertificatesReq
	(*CertificateData)(nil),        // 131: clientpb.CertificateData
	(*CertificateInfo)(nil),        // 132: clientpb.CertificateInfo
	nil,                            // 133: clientpb.TrafficEncoderMap.EncodersEntry
	nil,                            // 134: clientpb.ExternalImplantConfig.EncodersEntry
	nil,                            // 135: clientpb.ImplantBuilds.ConfigsEntry
	nil,                            // 136: clientpb.ImplantBuilds.ResourceIDsEntry
	nil,                            // 137: clientpb.ImplantBuilds.StagedEntry
	nil,                            // 138: clientpb.WebsiteAddContent.ContentsEntry
	nil,                            // 139: clientpb.Website.ContentsEntry
	nil,                            // 140: clientpb.Host.ExtensionDataEntry
	nil,                            // 141: clientpb.ShellcodeEncoderMap.EncodersEntry
	nil,                            // 142: clientpb.CrackSyncStatus.ProgressEntry
	nil,                            // 143: clientpb.CrackBenchmark.BenchmarksEntry
	nil,                            // 144: clientpb.Crackstation.BenchmarksEntry
	(*commonpb.File)(nil),          // 145: commonpb.File
	(*commonpb.Request)(nil),       // 146: commonpb.Request
	(*commonpb.Response)(nil),      // 147: commonpb.Response
}
var file_clientpb_client_proto_depIdxs = []int32{
	16,  // 0: clientpb.Beacons.Beacons:type_name -> clientpb.Beacon
	18,  // 1: clientpb.BeaconTasks.Tasks:type_name -> clientpb.BeaconTask
	31,  // 2: clientpb.ImplantConfig.ImplantBuilds:type_name -> clientpb.ImplantBuild
	21,  // 3: clientpb.ImplantConfig.C2:type_name -> clientpb.ImplantC2
	0,   // 4: clientpb.ImplantConfig.Format:type_name -> clientpb.OutputFormat
	145, // 5: clientpb.ImplantConfig.Assets:type_name -> commonpb.File
	145, // 6: clientpb.TrafficEncoder.Wasm:type_name -> commonpb.File
	133, // 7: clientpb.TrafficEncoderMap.Encoders:type_name -> clientpb.TrafficEncoderMap.EncodersEntry
	23,  // 8: clientpb.TrafficEncoderTests.Encoder:type_name -> clientpb.TrafficEncoder
	25,  // 9: clientpb.TrafficEncoderTests.Tests:type_name -> clientpb.TrafficEncoderTest
	22,  // 10: clientpb.ExternalImplantConfig.Config:type_name -> clientpb.ImplantConfig
	31,  // 11: clientpb.ExternalImplantConfig.Build:type_name -> clientpb.ImplantBuild
	104, // 12: clientpb.ExternalImplantConfig.HTTPC2:type_name -> clientpb.HTTPC2Config
	134, // 13: clientpb.ExternalImplantConfig.encoders:type_name -> clientpb.ExternalImplantConfig.EncodersEntry
	145, // 14: clientpb.ExternalImplantBinary.File:type_name -> commonpb.File
	135, // 15: clientpb.ImplantBuilds.Configs:type_name -> clientpb.ImplantBuilds.ConfigsEntry
	136, // 16: clientpb.ImplantBuilds.ResourceIDs:type_name -> clientpb.ImplantBuilds.ResourceIDsEntry
	137, // 17: clientpb.ImplantBuilds.staged:type_name -> clientpb.ImplantBuilds.StagedEntry
	0,   // 18: clientpb.CompilerTarget.Format:type_name -> clientpb.OutputFormat
	32,  // 19: clientpb.Compiler.Targets:type_name -> clientpb.CompilerTarget
	33,  // 20: clientpb.Compiler.CrossCompilers:type_name -> clientpb.CrossCompiler
	32,  // 21: clientpb.Compiler.UnsupportedTargets:type_name -> clientpb.CompilerTarget
	36,  // 22: clientpb.Canaries.Canaries:type_name -> clientpb.DNSCanary
	22,  // 23: clientpb.ImplantProfile.Config:type_name -> clientpb.ImplantConfig
	39,  // 24: clientpb.ImplantProfiles.Profiles:type_name -> clientpb.ImplantProfile
	42,  // 25: clientpb.Jobs.Active:type_name -> clientpb.Job
	49,  // 26: clientpb.ListenerJob.MTLSConf:type_name -> clientpb.MTLSListenerReq
	50,  // 27: clientpb.ListenerJob.WGConf:type_name -> clientpb.WGListenerReq
	51,  // 28: clientpb.ListenerJob.DNSConf:type_name -> clientpb.DNSListenerReq
	52,  // 29: clientpb.ListenerJob.HTTPConf:type_name -> clientpb.HTTPListenerReq
	48,  // 30: clientpb.ListenerJob.MultiConf:type_name -> clientpb.MultiplayerListenerReq
	64,  // 31: clientpb.ListenerJob.TCPConf:type_name -> clientpb.StagerListenerReq
	146, // 32: clientpb.NamedPipesReq.Request:type_name -> commonpb.Request
	147, // 33: clientpb.NamedPipes.Response:type_name -> commonpb.Response
	146, // 34: clientpb.TCPPivotReq.Request:type_name -> commonpb.Request
	147, // 35: clientpb.TCPPivot.Response:type_name -> commonpb.Response
	15,  // 36: clientpb.Sessions.Sessions:type_name -> clientpb.Session
	22,  // 37: clientpb.GenerateReq.Config:type_name -> clientpb.ImplantConfig
	145, // 38: clientpb.Generate.File:type_name -> commonpb.File
	146, // 39: clientpb.MSFReq.Request:type_name -> commonpb.Request
	146, // 40: clientpb.MSFRemoteReq.Request:type_name -> commonpb.Request
	1,   // 41: clientpb.StagerListenerReq.Protocol:type_name -> clientpb.StageProtocol
	22,  // 42: clientpb.GetSystemReq.Config:type_name -> clientpb.ImplantConfig
	146, // 43: clientpb.GetSystemReq.Request:type_name -> commonpb.Request
	22,  // 44: clientpb.MigrateReq.Config:type_name -> clientpb.ImplantConfig
	3,   // 45: clientpb.MigrateReq.Encoder:type_name -> clientpb.ShellcodeEncoder
	146, // 46: clientpb.MigrateReq.Request:type_name -> commonpb.Request
	146, // 47: clientpb.CreateTunnelReq.Request:type_name -> commonpb.Request
	146, // 48: clientpb.CloseTunnelReq.Request:type_name -> commonpb.Request
	15,  // 49: clientpb.PivotGraphEntry.Session:type_name -> clientpb.Session
	73,  // 50: clientpb.PivotGraphEntry.Children:type_name -> clientpb.PivotGraphEntry
	73,  // 51: clientpb.PivotGraph.Children:type_name -> clientpb.PivotGraphEntry
	78,  // 52: clientpb.Client.Operator:type_name -> clientpb.Operator
	15,  // 53: clientpb.Event.Session:type_name -> clientpb.Session
	42,  // 54: clientpb.Event.Job:type_name -> clientpb.Job
	75,  // 55: clientpb.Event.Client:type_name -> clientpb.Client
	78,  // 56: clientpb.Operators.Operators:type_name -> clientpb.Operator
	138, // 57: clientpb.WebsiteAddContent.Contents:type_name -> clientpb.WebsiteAddContent.ContentsEntry
	139, // 58: clientpb.Website.Contents:type_name -> clientpb.Website.ContentsEntry
	82,  // 59: clientpb.Websites.Websites:type_name -> clientpb.Website
	2,   // 60: clientpb.Loot.FileType:type_name -> clientpb.FileType
	145, // 61: clientpb.Loot.File:type_name -> commonpb.File
	85,  // 62: clientpb.AllLoot.Loot:type_name -> clientpb.Loot
	87,  // 63: clientpb.Host.IOCs:type_name -> clientpb.IOC
	140, // 64: clientpb.Host.ExtensionData:type_name -> clientpb.Host.ExtensionDataEntry
	89,  // 65: clientpb.AllHosts.Hosts:type_name -> clientpb.Host
	146, // 66: clientpb.DllHijackReq.Request:type_name -> commonpb.Request
	147, // 67: clientpb.DllHijack.Response:type_name -> commonpb.Response
	146, // 68: clientpb.BackdoorReq.Request:type_name -> commonpb.Request
	147, // 69: clientpb.Backdoor.Response:type_name -> commonpb.Response
	3,   // 70: clientpb.ShellcodeEncodeReq.Encoder:type_name -> clientpb.ShellcodeEncoder
	146, // 71: clientpb.ShellcodeEncodeReq.Request:type_name -> commonpb.Request
	147, // 72: clientpb.ShellcodeEncode.Response:type_name -> commonpb.Response
	141, // 73: clientpb.ShellcodeEncoderMap.Encoders:type_name -> clientpb.ShellcodeEncoderMap.EncodersEntry
	22,  // 74: clientpb.ExternalGenerateReq.Config:type_name -> clientpb.ImplantConfig
	100, // 75: clientpb.Builders.Builders:type_name -> clientpb.Builder
	32,  // 76: clientpb.Builder.Targets:type_name -> clientpb.CompilerTarget
	33,  // 77: clientpb.Builder.CrossCompilers:type_name -> clientpb.CrossCompiler
	104, // 78: clientpb.HTTPC2Configs.configs:type_name -> clientpb.HTTPC2Config
	104, // 79: clientpb.HTTPC2ConfigReq.C2Config:type_name -> clientpb.HTTPC2Config
	105, // 80: clientpb.HTTPC2Config.ServerConfig:type_name -> clientpb.HTTPC2ServerConfig
	106, // 81: clientpb.HTTPC2Config.ImplantConfig:type_name -> clientpb.HTTPC2ImplantConfig
	108, // 82: clientpb.HTTPC2ServerConfig.Headers:type_name -> clientpb.HTTPC2Header
	107, // 83: clientpb.HTTPC2ServerConfig.Cookies:type_name -> clientpb.HTTPC2Cookie
	109, // 84: clientpb.HTTPC2ImplantConfig.ExtraURLParameters:type_name -> clientpb.HTTPC2URLParameter
	108, // 85: clientpb.HTTPC2ImplantConfig.Headers:type_name -> clientpb.HTTPC2Header
	110, // 86: clientpb.HTTPC2ImplantConfig.PathSegments:type_name -> clientpb.HTTPC2PathSegment
	5,   // 87: clientpb.Credential.HashType:type_name -> clientpb.HashType
	111, // 88: clientpb.Credentials.Credentials:type_name -> clientpb.Credential
	118, // 89: clientpb.Crackstations.Crackstations:type_name -> clientpb.Crackstation
	6,   // 90: clientpb.CrackstationStatus.State:type_name -> clientpb.States
	115, // 91: clientpb.CrackstationStatus.Syncing:type_name -> clientpb.CrackSyncStatus
	142, // 92: clientpb.CrackSyncStatus.Progress:type_name -> clientpb.CrackSyncStatus.ProgressEntry
	143, // 93: clientpb.CrackBenchmark.Benchmarks:type_name -> clientpb.CrackBenchmark.BenchmarksEntry
	122, // 94: clientpb.CrackTask.Command:type_name -> clientpb.CrackCommand
	144, // 95: clientpb.Crackstation.Benchmarks:type_name -> clientpb.Crackstation.BenchmarksEntry
	119, // 96: clientpb.Crackstation.CUDA:type_name -> clientpb.CUDABackendInfo
	121, // 97: clientpb.Crackstation.Metal:type_name -> clientpb.MetalBackendInfo
	120, // 98: clientpb.Crackstation.OpenCL:type_name -> clientpb.OpenCLBackendInfo
	8,   // 99: clientpb.CrackCommand.AttackMode:type_name -> clientpb.CrackAttackMode
	5,   // 100: clientpb.CrackCommand.HashType:type_name -> clientpb.HashType
	10,  // 101: clientpb.CrackCommand.OutfileFormat:type_name -> clientpb.CrackOutfileFormat
	9,   // 102: clientpb.CrackCommand.EncodingFrom:type_name -> clientpb.CrackEncoding
	9,   // 103: clientpb.CrackCommand.EncodingTo:type_name -> clientpb.CrackEncoding
	11,  // 104: clientpb.CrackCommand.WorkloadProfile:type_name -> clientpb.CrackWorkloadProfile
	125, // 105: clientpb.CrackFiles.Files:type_name -> clientpb.CrackFile
	12,  // 106: clientpb.CrackFile.Type:type_name -> clientpb.CrackFileType
	126, // 107: clientpb.CrackFile.Chunks:type_name -> clientpb.CrackFileChunk
	128, // 108: clientpb.MonitoringProviders.providers:type_name -> clientpb.MonitoringProvider
	131, // 109: clientpb.CertificateInfo.info:type_name -> clientpb.CertificateData
	23,  // 110: clientpb.TrafficEncoderMap.EncodersEntry.value:type_name -> clientpb.TrafficEncoder
	22,  // 111: clientpb.ImplantBuilds.ConfigsEntry.value:type_name -> clientpb.ImplantConfig
	129, // 112: clientpb.ImplantBuilds.ResourceIDsEntry.value:type_name -> clientpb.ResourceID
	79,  // 113: clientpb.WebsiteAddContent.ContentsEntry.value:type_name -> clientpb.WebContent
	79,  // 114: clientpb.Website.ContentsEntry.value:type_name -> clientpb.WebContent
	88,  // 115: clientpb.Host.ExtensionDataEntry.value:type_name -> clientpb.ExtensionData
	3,   // 116: clientpb.ShellcodeEncoderMap.EncodersEntry.value:type_name -> clientpb.ShellcodeEncoder
	117, // [117:117] is the sub-list for method output_type
	117, // [117:117] is the sub-list for method input_type
	117, // [117:117] is the sub-list for extension type_name
	117, // [117:117] is the sub-list for extension extendee
	0,   // [0:117] is the sub-list for field type_name
}

func init() { file_clientpb_client_proto_init() }
func file_clientpb_client_proto_init() {
	if File_clientpb_client_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_clientpb_client_proto_rawDesc,
			NumEnums:      13,
			NumMessages:   132,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_clientpb_client_proto_goTypes,
		DependencyIndexes: file_clientpb_client_proto_depIdxs,
		EnumInfos:         file_clientpb_client_proto_enumTypes,
		MessageInfos:      file_clientpb_client_proto_msgTypes,
	}.Build()
	File_clientpb_client_proto = out.File
	file_clientpb_client_proto_rawDesc = nil
	file_clientpb_client_proto_goTypes = nil
	file_clientpb_client_proto_depIdxs = nil
}
