// Code generated by protoc-gen-go. DO NOT EDIT. // source: messages.proto package trezor import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf // * // Mapping between Trezor wire identifier (uint) and a protobuf message type MessageType int32 const ( MessageType_MessageType_Initialize MessageType = 0 MessageType_MessageType_Ping MessageType = 1 MessageType_MessageType_Success MessageType = 2 MessageType_MessageType_Failure MessageType = 3 MessageType_MessageType_ChangePin MessageType = 4 MessageType_MessageType_WipeDevice MessageType = 5 MessageType_MessageType_FirmwareErase MessageType = 6 MessageType_MessageType_FirmwareUpload MessageType = 7 MessageType_MessageType_FirmwareRequest MessageType = 8 MessageType_MessageType_GetEntropy MessageType = 9 MessageType_MessageType_Entropy MessageType = 10 MessageType_MessageType_GetPublicKey MessageType = 11 MessageType_MessageType_PublicKey MessageType = 12 MessageType_MessageType_LoadDevice MessageType = 13 MessageType_MessageType_ResetDevice MessageType = 14 MessageType_MessageType_SignTx MessageType = 15 MessageType_MessageType_SimpleSignTx MessageType = 16 MessageType_MessageType_Features MessageType = 17 MessageType_MessageType_PinMatrixRequest MessageType = 18 MessageType_MessageType_PinMatrixAck MessageType = 19 MessageType_MessageType_Cancel MessageType = 20 MessageType_MessageType_TxRequest MessageType = 21 MessageType_MessageType_TxAck MessageType = 22 MessageType_MessageType_CipherKeyValue MessageType = 23 MessageType_MessageType_ClearSession MessageType = 24 MessageType_MessageType_ApplySettings MessageType = 25 MessageType_MessageType_ButtonRequest MessageType = 26 MessageType_MessageType_ButtonAck MessageType = 27 MessageType_MessageType_ApplyFlags MessageType = 28 MessageType_MessageType_GetAddress MessageType = 29 MessageType_MessageType_Address MessageType = 30 MessageType_MessageType_SelfTest MessageType = 32 MessageType_MessageType_BackupDevice MessageType = 34 MessageType_MessageType_EntropyRequest MessageType = 35 MessageType_MessageType_EntropyAck MessageType = 36 MessageType_MessageType_SignMessage MessageType = 38 MessageType_MessageType_VerifyMessage MessageType = 39 MessageType_MessageType_MessageSignature MessageType = 40 MessageType_MessageType_PassphraseRequest MessageType = 41 MessageType_MessageType_PassphraseAck MessageType = 42 MessageType_MessageType_EstimateTxSize MessageType = 43 MessageType_MessageType_TxSize MessageType = 44 MessageType_MessageType_RecoveryDevice MessageType = 45 MessageType_MessageType_WordRequest MessageType = 46 MessageType_MessageType_WordAck MessageType = 47 MessageType_MessageType_CipheredKeyValue MessageType = 48 MessageType_MessageType_EncryptMessage MessageType = 49 MessageType_MessageType_EncryptedMessage MessageType = 50 MessageType_MessageType_DecryptMessage MessageType = 51 MessageType_MessageType_DecryptedMessage MessageType = 52 MessageType_MessageType_SignIdentity MessageType = 53 MessageType_MessageType_SignedIdentity MessageType = 54 MessageType_MessageType_GetFeatures MessageType = 55 MessageType_MessageType_EthereumGetAddress MessageType = 56 MessageType_MessageType_EthereumAddress MessageType = 57 MessageType_MessageType_EthereumSignTx MessageType = 58 MessageType_MessageType_EthereumTxRequest MessageType = 59 MessageType_MessageType_EthereumTxAck MessageType = 60 MessageType_MessageType_GetECDHSessionKey MessageType = 61 MessageType_MessageType_ECDHSessionKey MessageType = 62 MessageType_MessageType_SetU2FCounter MessageType = 63 MessageType_MessageType_EthereumSignMessage MessageType = 64 MessageType_MessageType_EthereumVerifyMessage MessageType = 65 MessageType_MessageType_EthereumMessageSignature MessageType = 66 MessageType_MessageType_DebugLinkDecision MessageType = 100 MessageType_MessageType_DebugLinkGetState MessageType = 101 MessageType_MessageType_DebugLinkState MessageType = 102 MessageType_MessageType_DebugLinkStop MessageType = 103 MessageType_MessageType_DebugLinkLog MessageType = 104 MessageType_MessageType_DebugLinkMemoryRead MessageType = 110 MessageType_MessageType_DebugLinkMemory MessageType = 111 MessageType_MessageType_DebugLinkMemoryWrite MessageType = 112 MessageType_MessageType_DebugLinkFlashErase MessageType = 113 ) var MessageType_name = map[int32]string{ 0: "MessageType_Initialize", 1: "MessageType_Ping", 2: "MessageType_Success", 3: "MessageType_Failure", 4: "MessageType_ChangePin", 5: "MessageType_WipeDevice", 6: "MessageType_FirmwareErase", 7: "MessageType_FirmwareUpload", 8: "MessageType_FirmwareRequest", 9: "MessageType_GetEntropy", 10: "MessageType_Entropy", 11: "MessageType_GetPublicKey", 12: "MessageType_PublicKey", 13: "MessageType_LoadDevice", 14: "MessageType_ResetDevice", 15: "MessageType_SignTx", 16: "MessageType_SimpleSignTx", 17: "MessageType_Features", 18: "MessageType_PinMatrixRequest", 19: "MessageType_PinMatrixAck", 20: "MessageType_Cancel", 21: "MessageType_TxRequest", 22: "MessageType_TxAck", 23: "MessageType_CipherKeyValue", 24: "MessageType_ClearSession", 25: "MessageType_ApplySettings", 26: "MessageType_ButtonRequest", 27: "MessageType_ButtonAck", 28: "MessageType_ApplyFlags", 29: "MessageType_GetAddress", 30: "MessageType_Address", 32: "MessageType_SelfTest", 34: "MessageType_BackupDevice", 35: "MessageType_EntropyRequest", 36: "MessageType_EntropyAck", 38: "MessageType_SignMessage", 39: "MessageType_VerifyMessage", 40: "MessageType_MessageSignature", 41: "MessageType_PassphraseRequest", 42: "MessageType_PassphraseAck", 43: "MessageType_EstimateTxSize", 44: "MessageType_TxSize", 45: "MessageType_RecoveryDevice", 46: "MessageType_WordRequest", 47: "MessageType_WordAck", 48: "MessageType_CipheredKeyValue", 49: "MessageType_EncryptMessage", 50: "MessageType_EncryptedMessage", 51: "MessageType_DecryptMessage", 52: "MessageType_DecryptedMessage", 53: "MessageType_SignIdentity", 54: "MessageType_SignedIdentity", 55: "MessageType_GetFeatures", 56: "MessageType_EthereumGetAddress", 57: "MessageType_EthereumAddress", 58: "MessageType_EthereumSignTx", 59: "MessageType_EthereumTxRequest", 60: "MessageType_EthereumTxAck", 61: "MessageType_GetECDHSessionKey", 62: "MessageType_ECDHSessionKey", 63: "MessageType_SetU2FCounter", 64: "MessageType_EthereumSignMessage", 65: "MessageType_EthereumVerifyMessage", 66: "MessageType_EthereumMessageSignature", 100: "MessageType_DebugLinkDecision", 101: "MessageType_DebugLinkGetState", 102: "MessageType_DebugLinkState", 103: "MessageType_DebugLinkStop", 104: "MessageType_DebugLinkLog", 110: "MessageType_DebugLinkMemoryRead", 111: "MessageType_DebugLinkMemory", 112: "MessageType_DebugLinkMemoryWrite", 113: "MessageType_DebugLinkFlashErase", } var MessageType_value = map[string]int32{ "MessageType_Initialize": 0, "MessageType_Ping": 1, "MessageType_Success": 2, "MessageType_Failure": 3, "MessageType_ChangePin": 4, "MessageType_WipeDevice": 5, "MessageType_FirmwareErase": 6, "MessageType_FirmwareUpload": 7, "MessageType_FirmwareRequest": 8, "MessageType_GetEntropy": 9, "MessageType_Entropy": 10, "MessageType_GetPublicKey": 11, "MessageType_PublicKey": 12, "MessageType_LoadDevice": 13, "MessageType_ResetDevice": 14, "MessageType_SignTx": 15, "MessageType_SimpleSignTx": 16, "MessageType_Features": 17, "MessageType_PinMatrixRequest": 18, "MessageType_PinMatrixAck": 19, "MessageType_Cancel": 20, "MessageType_TxRequest": 21, "MessageType_TxAck": 22, "MessageType_CipherKeyValue": 23, "MessageType_ClearSession": 24, "MessageType_ApplySettings": 25, "MessageType_ButtonRequest": 26, "MessageType_ButtonAck": 27, "MessageType_ApplyFlags": 28, "MessageType_GetAddress": 29, "MessageType_Address": 30, "MessageType_SelfTest": 32, "MessageType_BackupDevice": 34, "MessageType_EntropyRequest": 35, "MessageType_EntropyAck": 36, "MessageType_SignMessage": 38, "MessageType_VerifyMessage": 39, "MessageType_MessageSignature": 40, "MessageType_PassphraseRequest": 41, "MessageType_PassphraseAck": 42, "MessageType_EstimateTxSize": 43, "MessageType_TxSize": 44, "MessageType_RecoveryDevice": 45, "MessageType_WordRequest": 46, "MessageType_WordAck": 47, "MessageType_CipheredKeyValue": 48, "MessageType_EncryptMessage": 49, "MessageType_EncryptedMessage": 50, "MessageType_DecryptMessage": 51, "MessageType_DecryptedMessage": 52, "MessageType_SignIdentity": 53, "MessageType_SignedIdentity": 54, "MessageType_GetFeatures": 55, "MessageType_EthereumGetAddress": 56, "MessageType_EthereumAddress": 57, "MessageType_EthereumSignTx": 58, "MessageType_EthereumTxRequest": 59, "MessageType_EthereumTxAck": 60, "MessageType_GetECDHSessionKey": 61, "MessageType_ECDHSessionKey": 62, "MessageType_SetU2FCounter": 63, "MessageType_EthereumSignMessage": 64, "MessageType_EthereumVerifyMessage": 65, "MessageType_EthereumMessageSignature": 66, "MessageType_DebugLinkDecision": 100, "MessageType_DebugLinkGetState": 101, "MessageType_DebugLinkState": 102, "MessageType_DebugLinkStop": 103, "MessageType_DebugLinkLog": 104, "MessageType_DebugLinkMemoryRead": 110, "MessageType_DebugLinkMemory": 111, "MessageType_DebugLinkMemoryWrite": 112, "MessageType_DebugLinkFlashErase": 113, } func (x MessageType) Enum() *MessageType { p := new(MessageType) *p = x return p } func (x MessageType) String() string { return proto.EnumName(MessageType_name, int32(x)) } func (x *MessageType) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(MessageType_value, data, "MessageType") if err != nil { return err } *x = MessageType(value) return nil } func (MessageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } // * // Request: Reset device to default state and ask for device details // @next Features type Initialize struct { XXX_unrecognized []byte `json:"-"` } func (m *Initialize) Reset() { *m = Initialize{} } func (m *Initialize) String() string { return proto.CompactTextString(m) } func (*Initialize) ProtoMessage() {} func (*Initialize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } // * // Request: Ask for device details (no device reset) // @next Features type GetFeatures struct { XXX_unrecognized []byte `json:"-"` } func (m *GetFeatures) Reset() { *m = GetFeatures{} } func (m *GetFeatures) String() string { return proto.CompactTextString(m) } func (*GetFeatures) ProtoMessage() {} func (*GetFeatures) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } // * // Response: Reports various information about the device // @prev Initialize // @prev GetFeatures type Features struct { Vendor *string `protobuf:"bytes,1,opt,name=vendor" json:"vendor,omitempty"` MajorVersion *uint32 `protobuf:"varint,2,opt,name=major_version,json=majorVersion" json:"major_version,omitempty"` MinorVersion *uint32 `protobuf:"varint,3,opt,name=minor_version,json=minorVersion" json:"minor_version,omitempty"` PatchVersion *uint32 `protobuf:"varint,4,opt,name=patch_version,json=patchVersion" json:"patch_version,omitempty"` BootloaderMode *bool `protobuf:"varint,5,opt,name=bootloader_mode,json=bootloaderMode" json:"bootloader_mode,omitempty"` DeviceId *string `protobuf:"bytes,6,opt,name=device_id,json=deviceId" json:"device_id,omitempty"` PinProtection *bool `protobuf:"varint,7,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` PassphraseProtection *bool `protobuf:"varint,8,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` Language *string `protobuf:"bytes,9,opt,name=language" json:"language,omitempty"` Label *string `protobuf:"bytes,10,opt,name=label" json:"label,omitempty"` Coins []*CoinType `protobuf:"bytes,11,rep,name=coins" json:"coins,omitempty"` Initialized *bool `protobuf:"varint,12,opt,name=initialized" json:"initialized,omitempty"` Revision []byte `protobuf:"bytes,13,opt,name=revision" json:"revision,omitempty"` BootloaderHash []byte `protobuf:"bytes,14,opt,name=bootloader_hash,json=bootloaderHash" json:"bootloader_hash,omitempty"` Imported *bool `protobuf:"varint,15,opt,name=imported" json:"imported,omitempty"` PinCached *bool `protobuf:"varint,16,opt,name=pin_cached,json=pinCached" json:"pin_cached,omitempty"` PassphraseCached *bool `protobuf:"varint,17,opt,name=passphrase_cached,json=passphraseCached" json:"passphrase_cached,omitempty"` FirmwarePresent *bool `protobuf:"varint,18,opt,name=firmware_present,json=firmwarePresent" json:"firmware_present,omitempty"` NeedsBackup *bool `protobuf:"varint,19,opt,name=needs_backup,json=needsBackup" json:"needs_backup,omitempty"` Flags *uint32 `protobuf:"varint,20,opt,name=flags" json:"flags,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Features) Reset() { *m = Features{} } func (m *Features) String() string { return proto.CompactTextString(m) } func (*Features) ProtoMessage() {} func (*Features) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } func (m *Features) GetVendor() string { if m != nil && m.Vendor != nil { return *m.Vendor } return "" } func (m *Features) GetMajorVersion() uint32 { if m != nil && m.MajorVersion != nil { return *m.MajorVersion } return 0 } func (m *Features) GetMinorVersion() uint32 { if m != nil && m.MinorVersion != nil { return *m.MinorVersion } return 0 } func (m *Features) GetPatchVersion() uint32 { if m != nil && m.PatchVersion != nil { return *m.PatchVersion } return 0 } func (m *Features) GetBootloaderMode() bool { if m != nil && m.BootloaderMode != nil { return *m.BootloaderMode } return false } func (m *Features) GetDeviceId() string { if m != nil && m.DeviceId != nil { return *m.DeviceId } return "" } func (m *Features) GetPinProtection() bool { if m != nil && m.PinProtection != nil { return *m.PinProtection } return false } func (m *Features) GetPassphraseProtection() bool { if m != nil && m.PassphraseProtection != nil { return *m.PassphraseProtection } return false } func (m *Features) GetLanguage() string { if m != nil && m.Language != nil { return *m.Language } return "" } func (m *Features) GetLabel() string { if m != nil && m.Label != nil { return *m.Label } return "" } func (m *Features) GetCoins() []*CoinType { if m != nil { return m.Coins } return nil } func (m *Features) GetInitialized() bool { if m != nil && m.Initialized != nil { return *m.Initialized } return false } func (m *Features) GetRevision() []byte { if m != nil { return m.Revision } return nil } func (m *Features) GetBootloaderHash() []byte { if m != nil { return m.BootloaderHash } return nil } func (m *Features) GetImported() bool { if m != nil && m.Imported != nil { return *m.Imported } return false } func (m *Features) GetPinCached() bool { if m != nil && m.PinCached != nil { return *m.PinCached } return false } func (m *Features) GetPassphraseCached() bool { if m != nil && m.PassphraseCached != nil { return *m.PassphraseCached } return false } func (m *Features) GetFirmwarePresent() bool { if m != nil && m.FirmwarePresent != nil { return *m.FirmwarePresent } return false } func (m *Features) GetNeedsBackup() bool { if m != nil && m.NeedsBackup != nil { return *m.NeedsBackup } return false } func (m *Features) GetFlags() uint32 { if m != nil && m.Flags != nil { return *m.Flags } return 0 } // * // Request: clear session (removes cached PIN, passphrase, etc). // @next Success type ClearSession struct { XXX_unrecognized []byte `json:"-"` } func (m *ClearSession) Reset() { *m = ClearSession{} } func (m *ClearSession) String() string { return proto.CompactTextString(m) } func (*ClearSession) ProtoMessage() {} func (*ClearSession) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } // * // Request: change language and/or label of the device // @next Success // @next Failure // @next ButtonRequest // @next PinMatrixRequest type ApplySettings struct { Language *string `protobuf:"bytes,1,opt,name=language" json:"language,omitempty"` Label *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"` UsePassphrase *bool `protobuf:"varint,3,opt,name=use_passphrase,json=usePassphrase" json:"use_passphrase,omitempty"` Homescreen []byte `protobuf:"bytes,4,opt,name=homescreen" json:"homescreen,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *ApplySettings) Reset() { *m = ApplySettings{} } func (m *ApplySettings) String() string { return proto.CompactTextString(m) } func (*ApplySettings) ProtoMessage() {} func (*ApplySettings) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } func (m *ApplySettings) GetLanguage() string { if m != nil && m.Language != nil { return *m.Language } return "" } func (m *ApplySettings) GetLabel() string { if m != nil && m.Label != nil { return *m.Label } return "" } func (m *ApplySettings) GetUsePassphrase() bool { if m != nil && m.UsePassphrase != nil { return *m.UsePassphrase } return false } func (m *ApplySettings) GetHomescreen() []byte { if m != nil { return m.Homescreen } return nil } // * // Request: set flags of the device // @next Success // @next Failure type ApplyFlags struct { Flags *uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *ApplyFlags) Reset() { *m = ApplyFlags{} } func (m *ApplyFlags) String() string { return proto.CompactTextString(m) } func (*ApplyFlags) ProtoMessage() {} func (*ApplyFlags) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } func (m *ApplyFlags) GetFlags() uint32 { if m != nil && m.Flags != nil { return *m.Flags } return 0 } // * // Request: Starts workflow for setting/changing/removing the PIN // @next ButtonRequest // @next PinMatrixRequest type ChangePin struct { Remove *bool `protobuf:"varint,1,opt,name=remove" json:"remove,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *ChangePin) Reset() { *m = ChangePin{} } func (m *ChangePin) String() string { return proto.CompactTextString(m) } func (*ChangePin) ProtoMessage() {} func (*ChangePin) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } func (m *ChangePin) GetRemove() bool { if m != nil && m.Remove != nil { return *m.Remove } return false } // * // Request: Test if the device is alive, device sends back the message in Success response // @next Success type Ping struct { Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` ButtonProtection *bool `protobuf:"varint,2,opt,name=button_protection,json=buttonProtection" json:"button_protection,omitempty"` PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Ping) Reset() { *m = Ping{} } func (m *Ping) String() string { return proto.CompactTextString(m) } func (*Ping) ProtoMessage() {} func (*Ping) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } func (m *Ping) GetMessage() string { if m != nil && m.Message != nil { return *m.Message } return "" } func (m *Ping) GetButtonProtection() bool { if m != nil && m.ButtonProtection != nil { return *m.ButtonProtection } return false } func (m *Ping) GetPinProtection() bool { if m != nil && m.PinProtection != nil { return *m.PinProtection } return false } func (m *Ping) GetPassphraseProtection() bool { if m != nil && m.PassphraseProtection != nil { return *m.PassphraseProtection } return false } // * // Response: Success of the previous request type Success struct { Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Success) Reset() { *m = Success{} } func (m *Success) String() string { return proto.CompactTextString(m) } func (*Success) ProtoMessage() {} func (*Success) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } func (m *Success) GetMessage() string { if m != nil && m.Message != nil { return *m.Message } return "" } // * // Response: Failure of the previous request type Failure struct { Code *FailureType `protobuf:"varint,1,opt,name=code,enum=FailureType" json:"code,omitempty"` Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Failure) Reset() { *m = Failure{} } func (m *Failure) String() string { return proto.CompactTextString(m) } func (*Failure) ProtoMessage() {} func (*Failure) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } func (m *Failure) GetCode() FailureType { if m != nil && m.Code != nil { return *m.Code } return FailureType_Failure_UnexpectedMessage } func (m *Failure) GetMessage() string { if m != nil && m.Message != nil { return *m.Message } return "" } // * // Response: Device is waiting for HW button press. // @next ButtonAck // @next Cancel type ButtonRequest struct { Code *ButtonRequestType `protobuf:"varint,1,opt,name=code,enum=ButtonRequestType" json:"code,omitempty"` Data *string `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *ButtonRequest) Reset() { *m = ButtonRequest{} } func (m *ButtonRequest) String() string { return proto.CompactTextString(m) } func (*ButtonRequest) ProtoMessage() {} func (*ButtonRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } func (m *ButtonRequest) GetCode() ButtonRequestType { if m != nil && m.Code != nil { return *m.Code } return ButtonRequestType_ButtonRequest_Other } func (m *ButtonRequest) GetData() string { if m != nil && m.Data != nil { return *m.Data } return "" } // * // Request: Computer agrees to wait for HW button press // @prev ButtonRequest type ButtonAck struct { XXX_unrecognized []byte `json:"-"` } func (m *ButtonAck) Reset() { *m = ButtonAck{} } func (m *ButtonAck) String() string { return proto.CompactTextString(m) } func (*ButtonAck) ProtoMessage() {} func (*ButtonAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } // * // Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme // @next PinMatrixAck // @next Cancel type PinMatrixRequest struct { Type *PinMatrixRequestType `protobuf:"varint,1,opt,name=type,enum=PinMatrixRequestType" json:"type,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *PinMatrixRequest) Reset() { *m = PinMatrixRequest{} } func (m *PinMatrixRequest) String() string { return proto.CompactTextString(m) } func (*PinMatrixRequest) ProtoMessage() {} func (*PinMatrixRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } func (m *PinMatrixRequest) GetType() PinMatrixRequestType { if m != nil && m.Type != nil { return *m.Type } return PinMatrixRequestType_PinMatrixRequestType_Current } // * // Request: Computer responds with encoded PIN // @prev PinMatrixRequest type PinMatrixAck struct { Pin *string `protobuf:"bytes,1,req,name=pin" json:"pin,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *PinMatrixAck) Reset() { *m = PinMatrixAck{} } func (m *PinMatrixAck) String() string { return proto.CompactTextString(m) } func (*PinMatrixAck) ProtoMessage() {} func (*PinMatrixAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } func (m *PinMatrixAck) GetPin() string { if m != nil && m.Pin != nil { return *m.Pin } return "" } // * // Request: Abort last operation that required user interaction // @prev ButtonRequest // @prev PinMatrixRequest // @prev PassphraseRequest type Cancel struct { XXX_unrecognized []byte `json:"-"` } func (m *Cancel) Reset() { *m = Cancel{} } func (m *Cancel) String() string { return proto.CompactTextString(m) } func (*Cancel) ProtoMessage() {} func (*Cancel) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } // * // Response: Device awaits encryption passphrase // @next PassphraseAck // @next Cancel type PassphraseRequest struct { XXX_unrecognized []byte `json:"-"` } func (m *PassphraseRequest) Reset() { *m = PassphraseRequest{} } func (m *PassphraseRequest) String() string { return proto.CompactTextString(m) } func (*PassphraseRequest) ProtoMessage() {} func (*PassphraseRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } // * // Request: Send passphrase back // @prev PassphraseRequest type PassphraseAck struct { Passphrase *string `protobuf:"bytes,1,req,name=passphrase" json:"passphrase,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *PassphraseAck) Reset() { *m = PassphraseAck{} } func (m *PassphraseAck) String() string { return proto.CompactTextString(m) } func (*PassphraseAck) ProtoMessage() {} func (*PassphraseAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } func (m *PassphraseAck) GetPassphrase() string { if m != nil && m.Passphrase != nil { return *m.Passphrase } return "" } // * // Request: Request a sample of random data generated by hardware RNG. May be used for testing. // @next ButtonRequest // @next Entropy // @next Failure type GetEntropy struct { Size *uint32 `protobuf:"varint,1,req,name=size" json:"size,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *GetEntropy) Reset() { *m = GetEntropy{} } func (m *GetEntropy) String() string { return proto.CompactTextString(m) } func (*GetEntropy) ProtoMessage() {} func (*GetEntropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } func (m *GetEntropy) GetSize() uint32 { if m != nil && m.Size != nil { return *m.Size } return 0 } // * // Response: Reply with random data generated by internal RNG // @prev GetEntropy type Entropy struct { Entropy []byte `protobuf:"bytes,1,req,name=entropy" json:"entropy,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Entropy) Reset() { *m = Entropy{} } func (m *Entropy) String() string { return proto.CompactTextString(m) } func (*Entropy) ProtoMessage() {} func (*Entropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } func (m *Entropy) GetEntropy() []byte { if m != nil { return m.Entropy } return nil } // * // Request: Ask device for public key corresponding to address_n path // @next PassphraseRequest // @next PublicKey // @next Failure type GetPublicKey struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` EcdsaCurveName *string `protobuf:"bytes,2,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *GetPublicKey) Reset() { *m = GetPublicKey{} } func (m *GetPublicKey) String() string { return proto.CompactTextString(m) } func (*GetPublicKey) ProtoMessage() {} func (*GetPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } const Default_GetPublicKey_CoinName string = "Bitcoin" func (m *GetPublicKey) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *GetPublicKey) GetEcdsaCurveName() string { if m != nil && m.EcdsaCurveName != nil { return *m.EcdsaCurveName } return "" } func (m *GetPublicKey) GetShowDisplay() bool { if m != nil && m.ShowDisplay != nil { return *m.ShowDisplay } return false } func (m *GetPublicKey) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_GetPublicKey_CoinName } // * // Response: Contains public key derived from device private seed // @prev GetPublicKey type PublicKey struct { Node *HDNodeType `protobuf:"bytes,1,req,name=node" json:"node,omitempty"` Xpub *string `protobuf:"bytes,2,opt,name=xpub" json:"xpub,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *PublicKey) Reset() { *m = PublicKey{} } func (m *PublicKey) String() string { return proto.CompactTextString(m) } func (*PublicKey) ProtoMessage() {} func (*PublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } func (m *PublicKey) GetNode() *HDNodeType { if m != nil { return m.Node } return nil } func (m *PublicKey) GetXpub() string { if m != nil && m.Xpub != nil { return *m.Xpub } return "" } // * // Request: Ask device for address corresponding to address_n path // @next PassphraseRequest // @next Address // @next Failure type GetAddress struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` CoinName *string `protobuf:"bytes,2,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` Multisig *MultisigRedeemScriptType `protobuf:"bytes,4,opt,name=multisig" json:"multisig,omitempty"` ScriptType *InputScriptType `protobuf:"varint,5,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *GetAddress) Reset() { *m = GetAddress{} } func (m *GetAddress) String() string { return proto.CompactTextString(m) } func (*GetAddress) ProtoMessage() {} func (*GetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} } const Default_GetAddress_CoinName string = "Bitcoin" const Default_GetAddress_ScriptType InputScriptType = InputScriptType_SPENDADDRESS func (m *GetAddress) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *GetAddress) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_GetAddress_CoinName } func (m *GetAddress) GetShowDisplay() bool { if m != nil && m.ShowDisplay != nil { return *m.ShowDisplay } return false } func (m *GetAddress) GetMultisig() *MultisigRedeemScriptType { if m != nil { return m.Multisig } return nil } func (m *GetAddress) GetScriptType() InputScriptType { if m != nil && m.ScriptType != nil { return *m.ScriptType } return Default_GetAddress_ScriptType } // * // Request: Ask device for Ethereum address corresponding to address_n path // @next PassphraseRequest // @next EthereumAddress // @next Failure type EthereumGetAddress struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` ShowDisplay *bool `protobuf:"varint,2,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumGetAddress) Reset() { *m = EthereumGetAddress{} } func (m *EthereumGetAddress) String() string { return proto.CompactTextString(m) } func (*EthereumGetAddress) ProtoMessage() {} func (*EthereumGetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} } func (m *EthereumGetAddress) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *EthereumGetAddress) GetShowDisplay() bool { if m != nil && m.ShowDisplay != nil { return *m.ShowDisplay } return false } // * // Response: Contains address derived from device private seed // @prev GetAddress type Address struct { Address *string `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *Address) Reset() { *m = Address{} } func (m *Address) String() string { return proto.CompactTextString(m) } func (*Address) ProtoMessage() {} func (*Address) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{23} } func (m *Address) GetAddress() string { if m != nil && m.Address != nil { return *m.Address } return "" } // * // Response: Contains an Ethereum address derived from device private seed // @prev EthereumGetAddress type EthereumAddress struct { Address []byte `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumAddress) Reset() { *m = EthereumAddress{} } func (m *EthereumAddress) String() string { return proto.CompactTextString(m) } func (*EthereumAddress) ProtoMessage() {} func (*EthereumAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{24} } func (m *EthereumAddress) GetAddress() []byte { if m != nil { return m.Address } return nil } // * // Request: Request device to wipe all sensitive data and settings // @next ButtonRequest type WipeDevice struct { XXX_unrecognized []byte `json:"-"` } func (m *WipeDevice) Reset() { *m = WipeDevice{} } func (m *WipeDevice) String() string { return proto.CompactTextString(m) } func (*WipeDevice) ProtoMessage() {} func (*WipeDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{25} } // * // Request: Load seed and related internal settings from the computer // @next ButtonRequest // @next Success // @next Failure type LoadDevice struct { Mnemonic *string `protobuf:"bytes,1,opt,name=mnemonic" json:"mnemonic,omitempty"` Node *HDNodeType `protobuf:"bytes,2,opt,name=node" json:"node,omitempty"` Pin *string `protobuf:"bytes,3,opt,name=pin" json:"pin,omitempty"` PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` SkipChecksum *bool `protobuf:"varint,7,opt,name=skip_checksum,json=skipChecksum" json:"skip_checksum,omitempty"` U2FCounter *uint32 `protobuf:"varint,8,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *LoadDevice) Reset() { *m = LoadDevice{} } func (m *LoadDevice) String() string { return proto.CompactTextString(m) } func (*LoadDevice) ProtoMessage() {} func (*LoadDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{26} } const Default_LoadDevice_Language string = "english" func (m *LoadDevice) GetMnemonic() string { if m != nil && m.Mnemonic != nil { return *m.Mnemonic } return "" } func (m *LoadDevice) GetNode() *HDNodeType { if m != nil { return m.Node } return nil } func (m *LoadDevice) GetPin() string { if m != nil && m.Pin != nil { return *m.Pin } return "" } func (m *LoadDevice) GetPassphraseProtection() bool { if m != nil && m.PassphraseProtection != nil { return *m.PassphraseProtection } return false } func (m *LoadDevice) GetLanguage() string { if m != nil && m.Language != nil { return *m.Language } return Default_LoadDevice_Language } func (m *LoadDevice) GetLabel() string { if m != nil && m.Label != nil { return *m.Label } return "" } func (m *LoadDevice) GetSkipChecksum() bool { if m != nil && m.SkipChecksum != nil { return *m.SkipChecksum } return false } func (m *LoadDevice) GetU2FCounter() uint32 { if m != nil && m.U2FCounter != nil { return *m.U2FCounter } return 0 } // * // Request: Ask device to do initialization involving user interaction // @next EntropyRequest // @next Failure type ResetDevice struct { DisplayRandom *bool `protobuf:"varint,1,opt,name=display_random,json=displayRandom" json:"display_random,omitempty"` Strength *uint32 `protobuf:"varint,2,opt,name=strength,def=256" json:"strength,omitempty"` PassphraseProtection *bool `protobuf:"varint,3,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` PinProtection *bool `protobuf:"varint,4,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` U2FCounter *uint32 `protobuf:"varint,7,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` SkipBackup *bool `protobuf:"varint,8,opt,name=skip_backup,json=skipBackup" json:"skip_backup,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *ResetDevice) Reset() { *m = ResetDevice{} } func (m *ResetDevice) String() string { return proto.CompactTextString(m) } func (*ResetDevice) ProtoMessage() {} func (*ResetDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{27} } const Default_ResetDevice_Strength uint32 = 256 const Default_ResetDevice_Language string = "english" func (m *ResetDevice) GetDisplayRandom() bool { if m != nil && m.DisplayRandom != nil { return *m.DisplayRandom } return false } func (m *ResetDevice) GetStrength() uint32 { if m != nil && m.Strength != nil { return *m.Strength } return Default_ResetDevice_Strength } func (m *ResetDevice) GetPassphraseProtection() bool { if m != nil && m.PassphraseProtection != nil { return *m.PassphraseProtection } return false } func (m *ResetDevice) GetPinProtection() bool { if m != nil && m.PinProtection != nil { return *m.PinProtection } return false } func (m *ResetDevice) GetLanguage() string { if m != nil && m.Language != nil { return *m.Language } return Default_ResetDevice_Language } func (m *ResetDevice) GetLabel() string { if m != nil && m.Label != nil { return *m.Label } return "" } func (m *ResetDevice) GetU2FCounter() uint32 { if m != nil && m.U2FCounter != nil { return *m.U2FCounter } return 0 } func (m *ResetDevice) GetSkipBackup() bool { if m != nil && m.SkipBackup != nil { return *m.SkipBackup } return false } // * // Request: Perform backup of the device seed if not backed up using ResetDevice // @next ButtonRequest type BackupDevice struct { XXX_unrecognized []byte `json:"-"` } func (m *BackupDevice) Reset() { *m = BackupDevice{} } func (m *BackupDevice) String() string { return proto.CompactTextString(m) } func (*BackupDevice) ProtoMessage() {} func (*BackupDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{28} } // * // Response: Ask for additional entropy from host computer // @prev ResetDevice // @next EntropyAck type EntropyRequest struct { XXX_unrecognized []byte `json:"-"` } func (m *EntropyRequest) Reset() { *m = EntropyRequest{} } func (m *EntropyRequest) String() string { return proto.CompactTextString(m) } func (*EntropyRequest) ProtoMessage() {} func (*EntropyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{29} } // * // Request: Provide additional entropy for seed generation function // @prev EntropyRequest // @next ButtonRequest type EntropyAck struct { Entropy []byte `protobuf:"bytes,1,opt,name=entropy" json:"entropy,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EntropyAck) Reset() { *m = EntropyAck{} } func (m *EntropyAck) String() string { return proto.CompactTextString(m) } func (*EntropyAck) ProtoMessage() {} func (*EntropyAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{30} } func (m *EntropyAck) GetEntropy() []byte { if m != nil { return m.Entropy } return nil } // * // Request: Start recovery workflow asking user for specific words of mnemonic // Used to recovery device safely even on untrusted computer. // @next WordRequest type RecoveryDevice struct { WordCount *uint32 `protobuf:"varint,1,opt,name=word_count,json=wordCount" json:"word_count,omitempty"` PassphraseProtection *bool `protobuf:"varint,2,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` Language *string `protobuf:"bytes,4,opt,name=language,def=english" json:"language,omitempty"` Label *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"` EnforceWordlist *bool `protobuf:"varint,6,opt,name=enforce_wordlist,json=enforceWordlist" json:"enforce_wordlist,omitempty"` // 7 reserved for unused recovery method Type *uint32 `protobuf:"varint,8,opt,name=type" json:"type,omitempty"` U2FCounter *uint32 `protobuf:"varint,9,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` DryRun *bool `protobuf:"varint,10,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *RecoveryDevice) Reset() { *m = RecoveryDevice{} } func (m *RecoveryDevice) String() string { return proto.CompactTextString(m) } func (*RecoveryDevice) ProtoMessage() {} func (*RecoveryDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{31} } const Default_RecoveryDevice_Language string = "english" func (m *RecoveryDevice) GetWordCount() uint32 { if m != nil && m.WordCount != nil { return *m.WordCount } return 0 } func (m *RecoveryDevice) GetPassphraseProtection() bool { if m != nil && m.PassphraseProtection != nil { return *m.PassphraseProtection } return false } func (m *RecoveryDevice) GetPinProtection() bool { if m != nil && m.PinProtection != nil { return *m.PinProtection } return false } func (m *RecoveryDevice) GetLanguage() string { if m != nil && m.Language != nil { return *m.Language } return Default_RecoveryDevice_Language } func (m *RecoveryDevice) GetLabel() string { if m != nil && m.Label != nil { return *m.Label } return "" } func (m *RecoveryDevice) GetEnforceWordlist() bool { if m != nil && m.EnforceWordlist != nil { return *m.EnforceWordlist } return false } func (m *RecoveryDevice) GetType() uint32 { if m != nil && m.Type != nil { return *m.Type } return 0 } func (m *RecoveryDevice) GetU2FCounter() uint32 { if m != nil && m.U2FCounter != nil { return *m.U2FCounter } return 0 } func (m *RecoveryDevice) GetDryRun() bool { if m != nil && m.DryRun != nil { return *m.DryRun } return false } // * // Response: Device is waiting for user to enter word of the mnemonic // Its position is shown only on device's internal display. // @prev RecoveryDevice // @prev WordAck type WordRequest struct { Type *WordRequestType `protobuf:"varint,1,opt,name=type,enum=WordRequestType" json:"type,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *WordRequest) Reset() { *m = WordRequest{} } func (m *WordRequest) String() string { return proto.CompactTextString(m) } func (*WordRequest) ProtoMessage() {} func (*WordRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{32} } func (m *WordRequest) GetType() WordRequestType { if m != nil && m.Type != nil { return *m.Type } return WordRequestType_WordRequestType_Plain } // * // Request: Computer replies with word from the mnemonic // @prev WordRequest // @next WordRequest // @next Success // @next Failure type WordAck struct { Word *string `protobuf:"bytes,1,req,name=word" json:"word,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *WordAck) Reset() { *m = WordAck{} } func (m *WordAck) String() string { return proto.CompactTextString(m) } func (*WordAck) ProtoMessage() {} func (*WordAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{33} } func (m *WordAck) GetWord() string { if m != nil && m.Word != nil { return *m.Word } return "" } // * // Request: Ask device to sign message // @next MessageSignature // @next Failure type SignMessage struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` ScriptType *InputScriptType `protobuf:"varint,4,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *SignMessage) Reset() { *m = SignMessage{} } func (m *SignMessage) String() string { return proto.CompactTextString(m) } func (*SignMessage) ProtoMessage() {} func (*SignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{34} } const Default_SignMessage_CoinName string = "Bitcoin" const Default_SignMessage_ScriptType InputScriptType = InputScriptType_SPENDADDRESS func (m *SignMessage) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *SignMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } func (m *SignMessage) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_SignMessage_CoinName } func (m *SignMessage) GetScriptType() InputScriptType { if m != nil && m.ScriptType != nil { return *m.ScriptType } return Default_SignMessage_ScriptType } // * // Request: Ask device to verify message // @next Success // @next Failure type VerifyMessage struct { Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *VerifyMessage) Reset() { *m = VerifyMessage{} } func (m *VerifyMessage) String() string { return proto.CompactTextString(m) } func (*VerifyMessage) ProtoMessage() {} func (*VerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{35} } const Default_VerifyMessage_CoinName string = "Bitcoin" func (m *VerifyMessage) GetAddress() string { if m != nil && m.Address != nil { return *m.Address } return "" } func (m *VerifyMessage) GetSignature() []byte { if m != nil { return m.Signature } return nil } func (m *VerifyMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } func (m *VerifyMessage) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_VerifyMessage_CoinName } // * // Response: Signed message // @prev SignMessage type MessageSignature struct { Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *MessageSignature) Reset() { *m = MessageSignature{} } func (m *MessageSignature) String() string { return proto.CompactTextString(m) } func (*MessageSignature) ProtoMessage() {} func (*MessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{36} } func (m *MessageSignature) GetAddress() string { if m != nil && m.Address != nil { return *m.Address } return "" } func (m *MessageSignature) GetSignature() []byte { if m != nil { return m.Signature } return nil } // * // Request: Ask device to encrypt message // @next EncryptedMessage // @next Failure type EncryptMessage struct { Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"` Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` DisplayOnly *bool `protobuf:"varint,3,opt,name=display_only,json=displayOnly" json:"display_only,omitempty"` AddressN []uint32 `protobuf:"varint,4,rep,name=address_n,json=addressN" json:"address_n,omitempty"` CoinName *string `protobuf:"bytes,5,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EncryptMessage) Reset() { *m = EncryptMessage{} } func (m *EncryptMessage) String() string { return proto.CompactTextString(m) } func (*EncryptMessage) ProtoMessage() {} func (*EncryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{37} } const Default_EncryptMessage_CoinName string = "Bitcoin" func (m *EncryptMessage) GetPubkey() []byte { if m != nil { return m.Pubkey } return nil } func (m *EncryptMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } func (m *EncryptMessage) GetDisplayOnly() bool { if m != nil && m.DisplayOnly != nil { return *m.DisplayOnly } return false } func (m *EncryptMessage) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *EncryptMessage) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_EncryptMessage_CoinName } // * // Response: Encrypted message // @prev EncryptMessage type EncryptedMessage struct { Nonce []byte `protobuf:"bytes,1,opt,name=nonce" json:"nonce,omitempty"` Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` Hmac []byte `protobuf:"bytes,3,opt,name=hmac" json:"hmac,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EncryptedMessage) Reset() { *m = EncryptedMessage{} } func (m *EncryptedMessage) String() string { return proto.CompactTextString(m) } func (*EncryptedMessage) ProtoMessage() {} func (*EncryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{38} } func (m *EncryptedMessage) GetNonce() []byte { if m != nil { return m.Nonce } return nil } func (m *EncryptedMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } func (m *EncryptedMessage) GetHmac() []byte { if m != nil { return m.Hmac } return nil } // * // Request: Ask device to decrypt message // @next Success // @next Failure type DecryptMessage struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` Hmac []byte `protobuf:"bytes,4,opt,name=hmac" json:"hmac,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DecryptMessage) Reset() { *m = DecryptMessage{} } func (m *DecryptMessage) String() string { return proto.CompactTextString(m) } func (*DecryptMessage) ProtoMessage() {} func (*DecryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{39} } func (m *DecryptMessage) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *DecryptMessage) GetNonce() []byte { if m != nil { return m.Nonce } return nil } func (m *DecryptMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } func (m *DecryptMessage) GetHmac() []byte { if m != nil { return m.Hmac } return nil } // * // Response: Decrypted message // @prev DecryptedMessage type DecryptedMessage struct { Message []byte `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` Address *string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DecryptedMessage) Reset() { *m = DecryptedMessage{} } func (m *DecryptedMessage) String() string { return proto.CompactTextString(m) } func (*DecryptedMessage) ProtoMessage() {} func (*DecryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{40} } func (m *DecryptedMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } func (m *DecryptedMessage) GetAddress() string { if m != nil && m.Address != nil { return *m.Address } return "" } // * // Request: Ask device to encrypt or decrypt value of given key // @next CipheredKeyValue // @next Failure type CipherKeyValue struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` Key *string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"` Value []byte `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` Encrypt *bool `protobuf:"varint,4,opt,name=encrypt" json:"encrypt,omitempty"` AskOnEncrypt *bool `protobuf:"varint,5,opt,name=ask_on_encrypt,json=askOnEncrypt" json:"ask_on_encrypt,omitempty"` AskOnDecrypt *bool `protobuf:"varint,6,opt,name=ask_on_decrypt,json=askOnDecrypt" json:"ask_on_decrypt,omitempty"` Iv []byte `protobuf:"bytes,7,opt,name=iv" json:"iv,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *CipherKeyValue) Reset() { *m = CipherKeyValue{} } func (m *CipherKeyValue) String() string { return proto.CompactTextString(m) } func (*CipherKeyValue) ProtoMessage() {} func (*CipherKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{41} } func (m *CipherKeyValue) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *CipherKeyValue) GetKey() string { if m != nil && m.Key != nil { return *m.Key } return "" } func (m *CipherKeyValue) GetValue() []byte { if m != nil { return m.Value } return nil } func (m *CipherKeyValue) GetEncrypt() bool { if m != nil && m.Encrypt != nil { return *m.Encrypt } return false } func (m *CipherKeyValue) GetAskOnEncrypt() bool { if m != nil && m.AskOnEncrypt != nil { return *m.AskOnEncrypt } return false } func (m *CipherKeyValue) GetAskOnDecrypt() bool { if m != nil && m.AskOnDecrypt != nil { return *m.AskOnDecrypt } return false } func (m *CipherKeyValue) GetIv() []byte { if m != nil { return m.Iv } return nil } // * // Response: Return ciphered/deciphered value // @prev CipherKeyValue type CipheredKeyValue struct { Value []byte `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *CipheredKeyValue) Reset() { *m = CipheredKeyValue{} } func (m *CipheredKeyValue) String() string { return proto.CompactTextString(m) } func (*CipheredKeyValue) ProtoMessage() {} func (*CipheredKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{42} } func (m *CipheredKeyValue) GetValue() []byte { if m != nil { return m.Value } return nil } // * // Request: Estimated size of the transaction // This behaves exactly like SignTx, which means that it can ask using TxRequest // This call is non-blocking (except possible PassphraseRequest to unlock the seed) // @next TxSize // @next Failure type EstimateTxSize struct { OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EstimateTxSize) Reset() { *m = EstimateTxSize{} } func (m *EstimateTxSize) String() string { return proto.CompactTextString(m) } func (*EstimateTxSize) ProtoMessage() {} func (*EstimateTxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{43} } const Default_EstimateTxSize_CoinName string = "Bitcoin" func (m *EstimateTxSize) GetOutputsCount() uint32 { if m != nil && m.OutputsCount != nil { return *m.OutputsCount } return 0 } func (m *EstimateTxSize) GetInputsCount() uint32 { if m != nil && m.InputsCount != nil { return *m.InputsCount } return 0 } func (m *EstimateTxSize) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_EstimateTxSize_CoinName } // * // Response: Estimated size of the transaction // @prev EstimateTxSize type TxSize struct { TxSize *uint32 `protobuf:"varint,1,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *TxSize) Reset() { *m = TxSize{} } func (m *TxSize) String() string { return proto.CompactTextString(m) } func (*TxSize) ProtoMessage() {} func (*TxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{44} } func (m *TxSize) GetTxSize() uint32 { if m != nil && m.TxSize != nil { return *m.TxSize } return 0 } // * // Request: Ask device to sign transaction // @next PassphraseRequest // @next PinMatrixRequest // @next TxRequest // @next Failure type SignTx struct { OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` Version *uint32 `protobuf:"varint,4,opt,name=version,def=1" json:"version,omitempty"` LockTime *uint32 `protobuf:"varint,5,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *SignTx) Reset() { *m = SignTx{} } func (m *SignTx) String() string { return proto.CompactTextString(m) } func (*SignTx) ProtoMessage() {} func (*SignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{45} } const Default_SignTx_CoinName string = "Bitcoin" const Default_SignTx_Version uint32 = 1 const Default_SignTx_LockTime uint32 = 0 func (m *SignTx) GetOutputsCount() uint32 { if m != nil && m.OutputsCount != nil { return *m.OutputsCount } return 0 } func (m *SignTx) GetInputsCount() uint32 { if m != nil && m.InputsCount != nil { return *m.InputsCount } return 0 } func (m *SignTx) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_SignTx_CoinName } func (m *SignTx) GetVersion() uint32 { if m != nil && m.Version != nil { return *m.Version } return Default_SignTx_Version } func (m *SignTx) GetLockTime() uint32 { if m != nil && m.LockTime != nil { return *m.LockTime } return Default_SignTx_LockTime } // * // Request: Simplified transaction signing // This method doesn't support streaming, so there are hardware limits in number of inputs and outputs. // In case of success, the result is returned using TxRequest message. // @next PassphraseRequest // @next PinMatrixRequest // @next TxRequest // @next Failure type SimpleSignTx struct { Inputs []*TxInputType `protobuf:"bytes,1,rep,name=inputs" json:"inputs,omitempty"` Outputs []*TxOutputType `protobuf:"bytes,2,rep,name=outputs" json:"outputs,omitempty"` Transactions []*TransactionType `protobuf:"bytes,3,rep,name=transactions" json:"transactions,omitempty"` CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` Version *uint32 `protobuf:"varint,5,opt,name=version,def=1" json:"version,omitempty"` LockTime *uint32 `protobuf:"varint,6,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *SimpleSignTx) Reset() { *m = SimpleSignTx{} } func (m *SimpleSignTx) String() string { return proto.CompactTextString(m) } func (*SimpleSignTx) ProtoMessage() {} func (*SimpleSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{46} } const Default_SimpleSignTx_CoinName string = "Bitcoin" const Default_SimpleSignTx_Version uint32 = 1 const Default_SimpleSignTx_LockTime uint32 = 0 func (m *SimpleSignTx) GetInputs() []*TxInputType { if m != nil { return m.Inputs } return nil } func (m *SimpleSignTx) GetOutputs() []*TxOutputType { if m != nil { return m.Outputs } return nil } func (m *SimpleSignTx) GetTransactions() []*TransactionType { if m != nil { return m.Transactions } return nil } func (m *SimpleSignTx) GetCoinName() string { if m != nil && m.CoinName != nil { return *m.CoinName } return Default_SimpleSignTx_CoinName } func (m *SimpleSignTx) GetVersion() uint32 { if m != nil && m.Version != nil { return *m.Version } return Default_SimpleSignTx_Version } func (m *SimpleSignTx) GetLockTime() uint32 { if m != nil && m.LockTime != nil { return *m.LockTime } return Default_SimpleSignTx_LockTime } // * // Response: Device asks for information for signing transaction or returns the last result // If request_index is set, device awaits TxAck message (with fields filled in according to request_type) // If signature_index is set, 'signature' contains signed input of signature_index's input // @prev SignTx // @prev SimpleSignTx // @prev TxAck type TxRequest struct { RequestType *RequestType `protobuf:"varint,1,opt,name=request_type,json=requestType,enum=RequestType" json:"request_type,omitempty"` Details *TxRequestDetailsType `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` Serialized *TxRequestSerializedType `protobuf:"bytes,3,opt,name=serialized" json:"serialized,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *TxRequest) Reset() { *m = TxRequest{} } func (m *TxRequest) String() string { return proto.CompactTextString(m) } func (*TxRequest) ProtoMessage() {} func (*TxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{47} } func (m *TxRequest) GetRequestType() RequestType { if m != nil && m.RequestType != nil { return *m.RequestType } return RequestType_TXINPUT } func (m *TxRequest) GetDetails() *TxRequestDetailsType { if m != nil { return m.Details } return nil } func (m *TxRequest) GetSerialized() *TxRequestSerializedType { if m != nil { return m.Serialized } return nil } // * // Request: Reported transaction data // @prev TxRequest // @next TxRequest type TxAck struct { Tx *TransactionType `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *TxAck) Reset() { *m = TxAck{} } func (m *TxAck) String() string { return proto.CompactTextString(m) } func (*TxAck) ProtoMessage() {} func (*TxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{48} } func (m *TxAck) GetTx() *TransactionType { if m != nil { return m.Tx } return nil } // * // Request: Ask device to sign transaction // All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing. // Note: the first at most 1024 bytes of data MUST be transmitted as part of this message. // @next PassphraseRequest // @next PinMatrixRequest // @next EthereumTxRequest // @next Failure type EthereumSignTx struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` GasPrice []byte `protobuf:"bytes,3,opt,name=gas_price,json=gasPrice" json:"gas_price,omitempty"` GasLimit []byte `protobuf:"bytes,4,opt,name=gas_limit,json=gasLimit" json:"gas_limit,omitempty"` To []byte `protobuf:"bytes,5,opt,name=to" json:"to,omitempty"` Value []byte `protobuf:"bytes,6,opt,name=value" json:"value,omitempty"` DataInitialChunk []byte `protobuf:"bytes,7,opt,name=data_initial_chunk,json=dataInitialChunk" json:"data_initial_chunk,omitempty"` DataLength *uint32 `protobuf:"varint,8,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` ChainId *uint32 `protobuf:"varint,9,opt,name=chain_id,json=chainId" json:"chain_id,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumSignTx) Reset() { *m = EthereumSignTx{} } func (m *EthereumSignTx) String() string { return proto.CompactTextString(m) } func (*EthereumSignTx) ProtoMessage() {} func (*EthereumSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{49} } func (m *EthereumSignTx) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *EthereumSignTx) GetNonce() []byte { if m != nil { return m.Nonce } return nil } func (m *EthereumSignTx) GetGasPrice() []byte { if m != nil { return m.GasPrice } return nil } func (m *EthereumSignTx) GetGasLimit() []byte { if m != nil { return m.GasLimit } return nil } func (m *EthereumSignTx) GetTo() []byte { if m != nil { return m.To } return nil } func (m *EthereumSignTx) GetValue() []byte { if m != nil { return m.Value } return nil } func (m *EthereumSignTx) GetDataInitialChunk() []byte { if m != nil { return m.DataInitialChunk } return nil } func (m *EthereumSignTx) GetDataLength() uint32 { if m != nil && m.DataLength != nil { return *m.DataLength } return 0 } func (m *EthereumSignTx) GetChainId() uint32 { if m != nil && m.ChainId != nil { return *m.ChainId } return 0 } // * // Response: Device asks for more data from transaction payload, or returns the signature. // If data_length is set, device awaits that many more bytes of payload. // Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present. // @prev EthereumSignTx // @next EthereumTxAck type EthereumTxRequest struct { DataLength *uint32 `protobuf:"varint,1,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` SignatureV *uint32 `protobuf:"varint,2,opt,name=signature_v,json=signatureV" json:"signature_v,omitempty"` SignatureR []byte `protobuf:"bytes,3,opt,name=signature_r,json=signatureR" json:"signature_r,omitempty"` SignatureS []byte `protobuf:"bytes,4,opt,name=signature_s,json=signatureS" json:"signature_s,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumTxRequest) Reset() { *m = EthereumTxRequest{} } func (m *EthereumTxRequest) String() string { return proto.CompactTextString(m) } func (*EthereumTxRequest) ProtoMessage() {} func (*EthereumTxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{50} } func (m *EthereumTxRequest) GetDataLength() uint32 { if m != nil && m.DataLength != nil { return *m.DataLength } return 0 } func (m *EthereumTxRequest) GetSignatureV() uint32 { if m != nil && m.SignatureV != nil { return *m.SignatureV } return 0 } func (m *EthereumTxRequest) GetSignatureR() []byte { if m != nil { return m.SignatureR } return nil } func (m *EthereumTxRequest) GetSignatureS() []byte { if m != nil { return m.SignatureS } return nil } // * // Request: Transaction payload data. // @prev EthereumTxRequest // @next EthereumTxRequest type EthereumTxAck struct { DataChunk []byte `protobuf:"bytes,1,opt,name=data_chunk,json=dataChunk" json:"data_chunk,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumTxAck) Reset() { *m = EthereumTxAck{} } func (m *EthereumTxAck) String() string { return proto.CompactTextString(m) } func (*EthereumTxAck) ProtoMessage() {} func (*EthereumTxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{51} } func (m *EthereumTxAck) GetDataChunk() []byte { if m != nil { return m.DataChunk } return nil } // * // Request: Ask device to sign message // @next EthereumMessageSignature // @next Failure type EthereumSignMessage struct { AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumSignMessage) Reset() { *m = EthereumSignMessage{} } func (m *EthereumSignMessage) String() string { return proto.CompactTextString(m) } func (*EthereumSignMessage) ProtoMessage() {} func (*EthereumSignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{52} } func (m *EthereumSignMessage) GetAddressN() []uint32 { if m != nil { return m.AddressN } return nil } func (m *EthereumSignMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } // * // Request: Ask device to verify message // @next Success // @next Failure type EthereumVerifyMessage struct { Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumVerifyMessage) Reset() { *m = EthereumVerifyMessage{} } func (m *EthereumVerifyMessage) String() string { return proto.CompactTextString(m) } func (*EthereumVerifyMessage) ProtoMessage() {} func (*EthereumVerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{53} } func (m *EthereumVerifyMessage) GetAddress() []byte { if m != nil { return m.Address } return nil } func (m *EthereumVerifyMessage) GetSignature() []byte { if m != nil { return m.Signature } return nil } func (m *EthereumVerifyMessage) GetMessage() []byte { if m != nil { return m.Message } return nil } // * // Response: Signed message // @prev EthereumSignMessage type EthereumMessageSignature struct { Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *EthereumMessageSignature) Reset() { *m = EthereumMessageSignature{} } func (m *EthereumMessageSignature) String() string { return proto.CompactTextString(m) } func (*EthereumMessageSignature) ProtoMessage() {} func (*EthereumMessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{54} } func (m *EthereumMessageSignature) GetAddress() []byte { if m != nil { return m.Address } return nil } func (m *EthereumMessageSignature) GetSignature() []byte { if m != nil { return m.Signature } return nil } // * // Request: Ask device to sign identity // @next SignedIdentity // @next Failure type SignIdentity struct { Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` ChallengeHidden []byte `protobuf:"bytes,2,opt,name=challenge_hidden,json=challengeHidden" json:"challenge_hidden,omitempty"` ChallengeVisual *string `protobuf:"bytes,3,opt,name=challenge_visual,json=challengeVisual" json:"challenge_visual,omitempty"` EcdsaCurveName *string `protobuf:"bytes,4,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *SignIdentity) Reset() { *m = SignIdentity{} } func (m *SignIdentity) String() string { return proto.CompactTextString(m) } func (*SignIdentity) ProtoMessage() {} func (*SignIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{55} } func (m *SignIdentity) GetIdentity() *IdentityType { if m != nil { return m.Identity } return nil } func (m *SignIdentity) GetChallengeHidden() []byte { if m != nil { return m.ChallengeHidden } return nil } func (m *SignIdentity) GetChallengeVisual() string { if m != nil && m.ChallengeVisual != nil { return *m.ChallengeVisual } return "" } func (m *SignIdentity) GetEcdsaCurveName() string { if m != nil && m.EcdsaCurveName != nil { return *m.EcdsaCurveName } return "" } // * // Response: Device provides signed identity // @prev SignIdentity type SignedIdentity struct { Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` PublicKey []byte `protobuf:"bytes,2,opt,name=public_key,json=publicKey" json:"public_key,omitempty"` Signature []byte `protobuf:"bytes,3,opt,name=signature" json:"signature,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *SignedIdentity) Reset() { *m = SignedIdentity{} } func (m *SignedIdentity) String() string { return proto.CompactTextString(m) } func (*SignedIdentity) ProtoMessage() {} func (*SignedIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{56} } func (m *SignedIdentity) GetAddress() string { if m != nil && m.Address != nil { return *m.Address } return "" } func (m *SignedIdentity) GetPublicKey() []byte { if m != nil { return m.PublicKey } return nil } func (m *SignedIdentity) GetSignature() []byte { if m != nil { return m.Signature } return nil } // * // Request: Ask device to generate ECDH session key // @next ECDHSessionKey // @next Failure type GetECDHSessionKey struct { Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` PeerPublicKey []byte `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey" json:"peer_public_key,omitempty"` EcdsaCurveName *string `protobuf:"bytes,3,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *GetECDHSessionKey) Reset() { *m = GetECDHSessionKey{} } func (m *GetECDHSessionKey) String() string { return proto.CompactTextString(m) } func (*GetECDHSessionKey) ProtoMessage() {} func (*GetECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{57} } func (m *GetECDHSessionKey) GetIdentity() *IdentityType { if m != nil { return m.Identity } return nil } func (m *GetECDHSessionKey) GetPeerPublicKey() []byte { if m != nil { return m.PeerPublicKey } return nil } func (m *GetECDHSessionKey) GetEcdsaCurveName() string { if m != nil && m.EcdsaCurveName != nil { return *m.EcdsaCurveName } return "" } // * // Response: Device provides ECDH session key // @prev GetECDHSessionKey type ECDHSessionKey struct { SessionKey []byte `protobuf:"bytes,1,opt,name=session_key,json=sessionKey" json:"session_key,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *ECDHSessionKey) Reset() { *m = ECDHSessionKey{} } func (m *ECDHSessionKey) String() string { return proto.CompactTextString(m) } func (*ECDHSessionKey) ProtoMessage() {} func (*ECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{58} } func (m *ECDHSessionKey) GetSessionKey() []byte { if m != nil { return m.SessionKey } return nil } // * // Request: Set U2F counter // @next Success type SetU2FCounter struct { U2FCounter *uint32 `protobuf:"varint,1,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *SetU2FCounter) Reset() { *m = SetU2FCounter{} } func (m *SetU2FCounter) String() string { return proto.CompactTextString(m) } func (*SetU2FCounter) ProtoMessage() {} func (*SetU2FCounter) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{59} } func (m *SetU2FCounter) GetU2FCounter() uint32 { if m != nil && m.U2FCounter != nil { return *m.U2FCounter } return 0 } // * // Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload) // @next Success // @next FirmwareRequest // @next Failure type FirmwareErase struct { Length *uint32 `protobuf:"varint,1,opt,name=length" json:"length,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *FirmwareErase) Reset() { *m = FirmwareErase{} } func (m *FirmwareErase) String() string { return proto.CompactTextString(m) } func (*FirmwareErase) ProtoMessage() {} func (*FirmwareErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{60} } func (m *FirmwareErase) GetLength() uint32 { if m != nil && m.Length != nil { return *m.Length } return 0 } // * // Response: Ask for firmware chunk // @next FirmwareUpload type FirmwareRequest struct { Offset *uint32 `protobuf:"varint,1,opt,name=offset" json:"offset,omitempty"` Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *FirmwareRequest) Reset() { *m = FirmwareRequest{} } func (m *FirmwareRequest) String() string { return proto.CompactTextString(m) } func (*FirmwareRequest) ProtoMessage() {} func (*FirmwareRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{61} } func (m *FirmwareRequest) GetOffset() uint32 { if m != nil && m.Offset != nil { return *m.Offset } return 0 } func (m *FirmwareRequest) GetLength() uint32 { if m != nil && m.Length != nil { return *m.Length } return 0 } // * // Request: Send firmware in binary form to the device // @next Success // @next Failure type FirmwareUpload struct { Payload []byte `protobuf:"bytes,1,req,name=payload" json:"payload,omitempty"` Hash []byte `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *FirmwareUpload) Reset() { *m = FirmwareUpload{} } func (m *FirmwareUpload) String() string { return proto.CompactTextString(m) } func (*FirmwareUpload) ProtoMessage() {} func (*FirmwareUpload) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{62} } func (m *FirmwareUpload) GetPayload() []byte { if m != nil { return m.Payload } return nil } func (m *FirmwareUpload) GetHash() []byte { if m != nil { return m.Hash } return nil } // * // Request: Perform a device self-test // @next Success // @next Failure type SelfTest struct { Payload []byte `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *SelfTest) Reset() { *m = SelfTest{} } func (m *SelfTest) String() string { return proto.CompactTextString(m) } func (*SelfTest) ProtoMessage() {} func (*SelfTest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{63} } func (m *SelfTest) GetPayload() []byte { if m != nil { return m.Payload } return nil } // * // Request: "Press" the button on the device // @next Success type DebugLinkDecision struct { YesNo *bool `protobuf:"varint,1,req,name=yes_no,json=yesNo" json:"yes_no,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkDecision) Reset() { *m = DebugLinkDecision{} } func (m *DebugLinkDecision) String() string { return proto.CompactTextString(m) } func (*DebugLinkDecision) ProtoMessage() {} func (*DebugLinkDecision) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{64} } func (m *DebugLinkDecision) GetYesNo() bool { if m != nil && m.YesNo != nil { return *m.YesNo } return false } // * // Request: Computer asks for device state // @next DebugLinkState type DebugLinkGetState struct { XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkGetState) Reset() { *m = DebugLinkGetState{} } func (m *DebugLinkGetState) String() string { return proto.CompactTextString(m) } func (*DebugLinkGetState) ProtoMessage() {} func (*DebugLinkGetState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{65} } // * // Response: Device current state // @prev DebugLinkGetState type DebugLinkState struct { Layout []byte `protobuf:"bytes,1,opt,name=layout" json:"layout,omitempty"` Pin *string `protobuf:"bytes,2,opt,name=pin" json:"pin,omitempty"` Matrix *string `protobuf:"bytes,3,opt,name=matrix" json:"matrix,omitempty"` Mnemonic *string `protobuf:"bytes,4,opt,name=mnemonic" json:"mnemonic,omitempty"` Node *HDNodeType `protobuf:"bytes,5,opt,name=node" json:"node,omitempty"` PassphraseProtection *bool `protobuf:"varint,6,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` ResetWord *string `protobuf:"bytes,7,opt,name=reset_word,json=resetWord" json:"reset_word,omitempty"` ResetEntropy []byte `protobuf:"bytes,8,opt,name=reset_entropy,json=resetEntropy" json:"reset_entropy,omitempty"` RecoveryFakeWord *string `protobuf:"bytes,9,opt,name=recovery_fake_word,json=recoveryFakeWord" json:"recovery_fake_word,omitempty"` RecoveryWordPos *uint32 `protobuf:"varint,10,opt,name=recovery_word_pos,json=recoveryWordPos" json:"recovery_word_pos,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkState) Reset() { *m = DebugLinkState{} } func (m *DebugLinkState) String() string { return proto.CompactTextString(m) } func (*DebugLinkState) ProtoMessage() {} func (*DebugLinkState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{66} } func (m *DebugLinkState) GetLayout() []byte { if m != nil { return m.Layout } return nil } func (m *DebugLinkState) GetPin() string { if m != nil && m.Pin != nil { return *m.Pin } return "" } func (m *DebugLinkState) GetMatrix() string { if m != nil && m.Matrix != nil { return *m.Matrix } return "" } func (m *DebugLinkState) GetMnemonic() string { if m != nil && m.Mnemonic != nil { return *m.Mnemonic } return "" } func (m *DebugLinkState) GetNode() *HDNodeType { if m != nil { return m.Node } return nil } func (m *DebugLinkState) GetPassphraseProtection() bool { if m != nil && m.PassphraseProtection != nil { return *m.PassphraseProtection } return false } func (m *DebugLinkState) GetResetWord() string { if m != nil && m.ResetWord != nil { return *m.ResetWord } return "" } func (m *DebugLinkState) GetResetEntropy() []byte { if m != nil { return m.ResetEntropy } return nil } func (m *DebugLinkState) GetRecoveryFakeWord() string { if m != nil && m.RecoveryFakeWord != nil { return *m.RecoveryFakeWord } return "" } func (m *DebugLinkState) GetRecoveryWordPos() uint32 { if m != nil && m.RecoveryWordPos != nil { return *m.RecoveryWordPos } return 0 } // * // Request: Ask device to restart type DebugLinkStop struct { XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkStop) Reset() { *m = DebugLinkStop{} } func (m *DebugLinkStop) String() string { return proto.CompactTextString(m) } func (*DebugLinkStop) ProtoMessage() {} func (*DebugLinkStop) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{67} } // * // Response: Device wants host to log event type DebugLinkLog struct { Level *uint32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"` Bucket *string `protobuf:"bytes,2,opt,name=bucket" json:"bucket,omitempty"` Text *string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkLog) Reset() { *m = DebugLinkLog{} } func (m *DebugLinkLog) String() string { return proto.CompactTextString(m) } func (*DebugLinkLog) ProtoMessage() {} func (*DebugLinkLog) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{68} } func (m *DebugLinkLog) GetLevel() uint32 { if m != nil && m.Level != nil { return *m.Level } return 0 } func (m *DebugLinkLog) GetBucket() string { if m != nil && m.Bucket != nil { return *m.Bucket } return "" } func (m *DebugLinkLog) GetText() string { if m != nil && m.Text != nil { return *m.Text } return "" } // * // Request: Read memory from device // @next DebugLinkMemory type DebugLinkMemoryRead struct { Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkMemoryRead) Reset() { *m = DebugLinkMemoryRead{} } func (m *DebugLinkMemoryRead) String() string { return proto.CompactTextString(m) } func (*DebugLinkMemoryRead) ProtoMessage() {} func (*DebugLinkMemoryRead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{69} } func (m *DebugLinkMemoryRead) GetAddress() uint32 { if m != nil && m.Address != nil { return *m.Address } return 0 } func (m *DebugLinkMemoryRead) GetLength() uint32 { if m != nil && m.Length != nil { return *m.Length } return 0 } // * // Response: Device sends memory back // @prev DebugLinkMemoryRead type DebugLinkMemory struct { Memory []byte `protobuf:"bytes,1,opt,name=memory" json:"memory,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkMemory) Reset() { *m = DebugLinkMemory{} } func (m *DebugLinkMemory) String() string { return proto.CompactTextString(m) } func (*DebugLinkMemory) ProtoMessage() {} func (*DebugLinkMemory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{70} } func (m *DebugLinkMemory) GetMemory() []byte { if m != nil { return m.Memory } return nil } // * // Request: Write memory to device. // WARNING: Writing to the wrong location can irreparably break the device. type DebugLinkMemoryWrite struct { Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` Memory []byte `protobuf:"bytes,2,opt,name=memory" json:"memory,omitempty"` Flash *bool `protobuf:"varint,3,opt,name=flash" json:"flash,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkMemoryWrite) Reset() { *m = DebugLinkMemoryWrite{} } func (m *DebugLinkMemoryWrite) String() string { return proto.CompactTextString(m) } func (*DebugLinkMemoryWrite) ProtoMessage() {} func (*DebugLinkMemoryWrite) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{71} } func (m *DebugLinkMemoryWrite) GetAddress() uint32 { if m != nil && m.Address != nil { return *m.Address } return 0 } func (m *DebugLinkMemoryWrite) GetMemory() []byte { if m != nil { return m.Memory } return nil } func (m *DebugLinkMemoryWrite) GetFlash() bool { if m != nil && m.Flash != nil { return *m.Flash } return false } // * // Request: Erase block of flash on device // WARNING: Writing to the wrong location can irreparably break the device. type DebugLinkFlashErase struct { Sector *uint32 `protobuf:"varint,1,opt,name=sector" json:"sector,omitempty"` XXX_unrecognized []byte `json:"-"` } func (m *DebugLinkFlashErase) Reset() { *m = DebugLinkFlashErase{} } func (m *DebugLinkFlashErase) String() string { return proto.CompactTextString(m) } func (*DebugLinkFlashErase) ProtoMessage() {} func (*DebugLinkFlashErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{72} } func (m *DebugLinkFlashErase) GetSector() uint32 { if m != nil && m.Sector != nil { return *m.Sector } return 0 } func init() { proto.RegisterType((*Initialize)(nil), "Initialize") proto.RegisterType((*GetFeatures)(nil), "GetFeatures") proto.RegisterType((*Features)(nil), "Features") proto.RegisterType((*ClearSession)(nil), "ClearSession") proto.RegisterType((*ApplySettings)(nil), "ApplySettings") proto.RegisterType((*ApplyFlags)(nil), "ApplyFlags") proto.RegisterType((*ChangePin)(nil), "ChangePin") proto.RegisterType((*Ping)(nil), "Ping") proto.RegisterType((*Success)(nil), "Success") proto.RegisterType((*Failure)(nil), "Failure") proto.RegisterType((*ButtonRequest)(nil), "ButtonRequest") proto.RegisterType((*ButtonAck)(nil), "ButtonAck") proto.RegisterType((*PinMatrixRequest)(nil), "PinMatrixRequest") proto.RegisterType((*PinMatrixAck)(nil), "PinMatrixAck") proto.RegisterType((*Cancel)(nil), "Cancel") proto.RegisterType((*PassphraseRequest)(nil), "PassphraseRequest") proto.RegisterType((*PassphraseAck)(nil), "PassphraseAck") proto.RegisterType((*GetEntropy)(nil), "GetEntropy") proto.RegisterType((*Entropy)(nil), "Entropy") proto.RegisterType((*GetPublicKey)(nil), "GetPublicKey") proto.RegisterType((*PublicKey)(nil), "PublicKey") proto.RegisterType((*GetAddress)(nil), "GetAddress") proto.RegisterType((*EthereumGetAddress)(nil), "EthereumGetAddress") proto.RegisterType((*Address)(nil), "Address") proto.RegisterType((*EthereumAddress)(nil), "EthereumAddress") proto.RegisterType((*WipeDevice)(nil), "WipeDevice") proto.RegisterType((*LoadDevice)(nil), "LoadDevice") proto.RegisterType((*ResetDevice)(nil), "ResetDevice") proto.RegisterType((*BackupDevice)(nil), "BackupDevice") proto.RegisterType((*EntropyRequest)(nil), "EntropyRequest") proto.RegisterType((*EntropyAck)(nil), "EntropyAck") proto.RegisterType((*RecoveryDevice)(nil), "RecoveryDevice") proto.RegisterType((*WordRequest)(nil), "WordRequest") proto.RegisterType((*WordAck)(nil), "WordAck") proto.RegisterType((*SignMessage)(nil), "SignMessage") proto.RegisterType((*VerifyMessage)(nil), "VerifyMessage") proto.RegisterType((*MessageSignature)(nil), "MessageSignature") proto.RegisterType((*EncryptMessage)(nil), "EncryptMessage") proto.RegisterType((*EncryptedMessage)(nil), "EncryptedMessage") proto.RegisterType((*DecryptMessage)(nil), "DecryptMessage") proto.RegisterType((*DecryptedMessage)(nil), "DecryptedMessage") proto.RegisterType((*CipherKeyValue)(nil), "CipherKeyValue") proto.RegisterType((*CipheredKeyValue)(nil), "CipheredKeyValue") proto.RegisterType((*EstimateTxSize)(nil), "EstimateTxSize") proto.RegisterType((*TxSize)(nil), "TxSize") proto.RegisterType((*SignTx)(nil), "SignTx") proto.RegisterType((*SimpleSignTx)(nil), "SimpleSignTx") proto.RegisterType((*TxRequest)(nil), "TxRequest") proto.RegisterType((*TxAck)(nil), "TxAck") proto.RegisterType((*EthereumSignTx)(nil), "EthereumSignTx") proto.RegisterType((*EthereumTxRequest)(nil), "EthereumTxRequest") proto.RegisterType((*EthereumTxAck)(nil), "EthereumTxAck") proto.RegisterType((*EthereumSignMessage)(nil), "EthereumSignMessage") proto.RegisterType((*EthereumVerifyMessage)(nil), "EthereumVerifyMessage") proto.RegisterType((*EthereumMessageSignature)(nil), "EthereumMessageSignature") proto.RegisterType((*SignIdentity)(nil), "SignIdentity") proto.RegisterType((*SignedIdentity)(nil), "SignedIdentity") proto.RegisterType((*GetECDHSessionKey)(nil), "GetECDHSessionKey") proto.RegisterType((*ECDHSessionKey)(nil), "ECDHSessionKey") proto.RegisterType((*SetU2FCounter)(nil), "SetU2FCounter") proto.RegisterType((*FirmwareErase)(nil), "FirmwareErase") proto.RegisterType((*FirmwareRequest)(nil), "FirmwareRequest") proto.RegisterType((*FirmwareUpload)(nil), "FirmwareUpload") proto.RegisterType((*SelfTest)(nil), "SelfTest") proto.RegisterType((*DebugLinkDecision)(nil), "DebugLinkDecision") proto.RegisterType((*DebugLinkGetState)(nil), "DebugLinkGetState") proto.RegisterType((*DebugLinkState)(nil), "DebugLinkState") proto.RegisterType((*DebugLinkStop)(nil), "DebugLinkStop") proto.RegisterType((*DebugLinkLog)(nil), "DebugLinkLog") proto.RegisterType((*DebugLinkMemoryRead)(nil), "DebugLinkMemoryRead") proto.RegisterType((*DebugLinkMemory)(nil), "DebugLinkMemory") proto.RegisterType((*DebugLinkMemoryWrite)(nil), "DebugLinkMemoryWrite") proto.RegisterType((*DebugLinkFlashErase)(nil), "DebugLinkFlashErase") proto.RegisterEnum("MessageType", MessageType_name, MessageType_value) } func init() { proto.RegisterFile("messages.proto", fileDescriptor1) } var fileDescriptor1 = []byte{ // 3424 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xcb, 0x6f, 0xdc, 0x46, 0x9a, 0x5f, 0x76, 0xb7, 0xfa, 0xf1, 0x35, 0xbb, 0x55, 0xa2, 0x2d, 0xbb, 0x2d, 0x5b, 0xb6, 0x4c, 0xc9, 0xb6, 0x64, 0x27, 0xed, 0x44, 0x79, 0x6c, 0xd6, 0xbb, 0x79, 0xc8, 0x7a, 0xd8, 0xde, 0xd8, 0x8e, 0xc0, 0x56, 0x9c, 0xdb, 0x12, 0x14, 0x59, 0xea, 0xae, 0x55, 0x37, 0xc9, 0xf0, 0xa1, 0xa8, 0x7d, 0xd8, 0xeb, 0xee, 0x65, 0x81, 0xec, 0x69, 0x73, 0x1a, 0xe4, 0x36, 0x19, 0x04, 0x18, 0x0c, 0x30, 0x18, 0x60, 0x72, 0x9a, 0x3f, 0x60, 0xfe, 0x8b, 0x39, 0xce, 0x1f, 0x30, 0xe7, 0x41, 0x3d, 0x48, 0x16, 0x29, 0xb6, 0x6c, 0x27, 0xc0, 0x5c, 0x04, 0xd6, 0x57, 0xbf, 0xfe, 0xea, 0x7b, 0xd5, 0x57, 0x5f, 0x7d, 0x25, 0xe8, 0x4e, 0x70, 0x18, 0x5a, 0x43, 0x1c, 0xf6, 0xfd, 0xc0, 0x8b, 0xbc, 0xa5, 0x76, 0x34, 0xf5, 0x93, 0x81, 0xae, 0x02, 0x3c, 0x71, 0x49, 0x44, 0xac, 0x31, 0x79, 0x89, 0xf5, 0x0e, 0xb4, 0x1f, 0xe1, 0x68, 0x0f, 0x5b, 0x51, 0x1c, 0xe0, 0x50, 0xff, 0x69, 0x0e, 0x9a, 0xc9, 0x40, 0xbb, 0x04, 0xf5, 0x13, 0xec, 0x3a, 0x5e, 0xd0, 0x53, 0x56, 0x94, 0xf5, 0x96, 0x21, 0x46, 0xda, 0x2a, 0x74, 0x26, 0xd6, 0x7f, 0x7a, 0x81, 0x79, 0x82, 0x83, 0x90, 0x78, 0x6e, 0xaf, 0xb2, 0xa2, 0xac, 0x77, 0x0c, 0x95, 0x11, 0x5f, 0x70, 0x1a, 0x03, 0x11, 0x57, 0x02, 0x55, 0x05, 0x88, 0x12, 0x25, 0x90, 0x6f, 0x45, 0xf6, 0x28, 0x05, 0xd5, 0x38, 0x88, 0x11, 0x13, 0xd0, 0x1d, 0x98, 0x3f, 0xf4, 0xbc, 0x68, 0xec, 0x59, 0x0e, 0x0e, 0xcc, 0x89, 0xe7, 0xe0, 0xde, 0xdc, 0x8a, 0xb2, 0xde, 0x34, 0xba, 0x19, 0xf9, 0x99, 0xe7, 0x60, 0xed, 0x2a, 0xb4, 0x1c, 0x7c, 0x42, 0x6c, 0x6c, 0x12, 0xa7, 0x57, 0x67, 0x22, 0x37, 0x39, 0xe1, 0x89, 0xa3, 0xdd, 0x82, 0xae, 0x4f, 0x5c, 0x93, 0xda, 0x00, 0xdb, 0x11, 0x5d, 0xab, 0xc1, 0x98, 0x74, 0x7c, 0xe2, 0xee, 0xa7, 0x44, 0xed, 0x3d, 0x58, 0xf4, 0xad, 0x30, 0xf4, 0x47, 0x81, 0x15, 0x62, 0x19, 0xdd, 0x64, 0xe8, 0x8b, 0xd9, 0xa4, 0xf4, 0xa3, 0x25, 0x68, 0x8e, 0x2d, 0x77, 0x18, 0x5b, 0x43, 0xdc, 0x6b, 0xf1, 0x75, 0x93, 0xb1, 0x76, 0x11, 0xe6, 0xc6, 0xd6, 0x21, 0x1e, 0xf7, 0x80, 0x4d, 0xf0, 0x81, 0x76, 0x03, 0xe6, 0x6c, 0x8f, 0xb8, 0x61, 0xaf, 0xbd, 0x52, 0x5d, 0x6f, 0x6f, 0xb6, 0xfa, 0xdb, 0x1e, 0x71, 0x0f, 0xa6, 0x3e, 0x36, 0x38, 0x5d, 0x5b, 0x81, 0x36, 0x49, 0xbd, 0xe4, 0xf4, 0x54, 0xb6, 0xba, 0x4c, 0xa2, 0x8b, 0x06, 0xf8, 0x84, 0x30, 0xb3, 0x75, 0x56, 0x94, 0x75, 0xd5, 0x48, 0xc7, 0x05, 0x93, 0x8d, 0xac, 0x70, 0xd4, 0xeb, 0x32, 0x88, 0x64, 0xb2, 0xc7, 0x56, 0x38, 0xa2, 0x4c, 0xc8, 0xc4, 0xf7, 0x82, 0x08, 0x3b, 0xbd, 0x79, 0xb6, 0x46, 0x3a, 0xd6, 0x96, 0x01, 0xa8, 0xc5, 0x6c, 0xcb, 0x1e, 0x61, 0xa7, 0x87, 0xd8, 0x6c, 0xcb, 0x27, 0xee, 0x36, 0x23, 0x68, 0xf7, 0x60, 0x41, 0xb2, 0x94, 0x40, 0x2d, 0x30, 0x14, 0xca, 0x26, 0x04, 0x78, 0x03, 0xd0, 0x11, 0x09, 0x26, 0xdf, 0x58, 0x01, 0x35, 0x2a, 0x0e, 0xb1, 0x1b, 0xf5, 0x34, 0x86, 0x9d, 0x4f, 0xe8, 0xfb, 0x9c, 0xac, 0xdd, 0x04, 0xd5, 0xc5, 0xd8, 0x09, 0xcd, 0x43, 0xcb, 0x3e, 0x8e, 0xfd, 0xde, 0x05, 0xae, 0x3a, 0xa3, 0x3d, 0x64, 0x24, 0x6a, 0xd3, 0xa3, 0xb1, 0x35, 0x0c, 0x7b, 0x17, 0x59, 0xb8, 0xf0, 0x81, 0xde, 0x05, 0x75, 0x7b, 0x8c, 0xad, 0x60, 0x80, 0x43, 0x6a, 0x04, 0xfd, 0x7f, 0x14, 0xe8, 0x6c, 0xf9, 0xfe, 0x78, 0x3a, 0xc0, 0x51, 0x44, 0xdc, 0x61, 0x98, 0xf3, 0x93, 0x32, 0xcb, 0x4f, 0x15, 0xd9, 0x4f, 0xb7, 0xa0, 0x1b, 0xd3, 0x38, 0x48, 0xf5, 0x61, 0x61, 0xdc, 0x34, 0x3a, 0x71, 0x88, 0xf7, 0x53, 0xa2, 0x76, 0x1d, 0x60, 0xe4, 0x4d, 0x70, 0x68, 0x07, 0x18, 0xf3, 0x20, 0x56, 0x0d, 0x89, 0xa2, 0xeb, 0x00, 0x4c, 0x92, 0x3d, 0x2a, 0x68, 0x26, 0xbe, 0x22, 0x8b, 0xbf, 0x0a, 0xad, 0xed, 0x91, 0xe5, 0x0e, 0xf1, 0x3e, 0x71, 0xe9, 0xd6, 0x0b, 0xf0, 0xc4, 0x3b, 0xe1, 0x72, 0x36, 0x0d, 0x31, 0xd2, 0x7f, 0xa3, 0x40, 0x6d, 0x9f, 0xb8, 0x43, 0xad, 0x07, 0x0d, 0xb1, 0xc9, 0x85, 0x26, 0xc9, 0x90, 0xfa, 0xe5, 0x30, 0x8e, 0x22, 0x2f, 0x17, 0xeb, 0x15, 0xee, 0x17, 0x3e, 0x21, 0x45, 0xee, 0xd9, 0x5d, 0x51, 0x7d, 0xa3, 0x5d, 0x51, 0x9b, 0xbd, 0x2b, 0xf4, 0x55, 0x68, 0x0c, 0x62, 0xdb, 0xc6, 0x61, 0x38, 0x5b, 0x5a, 0x7d, 0x17, 0x1a, 0x7b, 0x16, 0x19, 0xc7, 0x01, 0xd6, 0x56, 0xa0, 0x66, 0xd3, 0xcd, 0x4d, 0x11, 0xdd, 0x4d, 0xb5, 0x2f, 0xe8, 0x6c, 0x57, 0xb0, 0x19, 0x99, 0x4d, 0x25, 0xcf, 0xe6, 0x73, 0xe8, 0x3c, 0x64, 0xba, 0x19, 0xf8, 0xeb, 0x18, 0x87, 0x91, 0x76, 0x3b, 0xc7, 0x4c, 0xeb, 0xe7, 0x66, 0x25, 0x96, 0x1a, 0xd4, 0x1c, 0x2b, 0xb2, 0x04, 0x3f, 0xf6, 0xad, 0xb7, 0xa1, 0xc5, 0xe1, 0x5b, 0xf6, 0xb1, 0xfe, 0x31, 0xa0, 0x7d, 0xe2, 0x3e, 0xb3, 0xa2, 0x80, 0x9c, 0x26, 0xcc, 0x37, 0xa0, 0x46, 0x33, 0xaa, 0x60, 0xbe, 0xd8, 0x2f, 0x02, 0x38, 0x7f, 0x0a, 0xd1, 0x57, 0x40, 0x4d, 0x67, 0xb7, 0xec, 0x63, 0x0d, 0x41, 0xd5, 0x27, 0x6e, 0x4f, 0x59, 0xa9, 0xac, 0xb7, 0x0c, 0xfa, 0xa9, 0x37, 0xa1, 0xbe, 0x6d, 0xb9, 0x36, 0x1e, 0xeb, 0x17, 0x60, 0x21, 0x8b, 0x29, 0xc1, 0x4a, 0xbf, 0x0f, 0x9d, 0x8c, 0x48, 0x39, 0x5c, 0x07, 0x90, 0xc2, 0x91, 0x33, 0x92, 0x28, 0xfa, 0x0a, 0xc0, 0x23, 0x1c, 0xed, 0xba, 0x51, 0xe0, 0xf9, 0x53, 0xaa, 0x5f, 0x48, 0x5e, 0x72, 0x5c, 0xc7, 0x60, 0xdf, 0xd4, 0x31, 0xc9, 0x74, 0x0f, 0x1a, 0x98, 0x7f, 0x32, 0x84, 0x6a, 0x24, 0x43, 0xfd, 0x57, 0x0a, 0xa8, 0x8f, 0x70, 0xb4, 0x1f, 0x1f, 0x8e, 0x89, 0xfd, 0x39, 0x9e, 0xd2, 0xec, 0x6a, 0x39, 0x4e, 0x80, 0xc3, 0xd0, 0xa4, 0xf2, 0x57, 0xd7, 0x3b, 0x46, 0x53, 0x10, 0x9e, 0x6b, 0xeb, 0x80, 0xb0, 0xed, 0x84, 0x96, 0x69, 0xc7, 0xc1, 0x09, 0x36, 0x5d, 0x6b, 0x92, 0xb8, 0xa8, 0xcb, 0xe8, 0xdb, 0x94, 0xfc, 0xdc, 0x9a, 0x60, 0xba, 0xbd, 0xc3, 0x91, 0xf7, 0x8d, 0xe9, 0x90, 0xd0, 0x1f, 0x5b, 0x53, 0x11, 0x6f, 0x6d, 0x4a, 0xdb, 0xe1, 0x24, 0x6d, 0x0d, 0x5a, 0x34, 0x09, 0x72, 0x2e, 0x34, 0xc2, 0x5a, 0x0f, 0x1a, 0x0f, 0x49, 0x44, 0x69, 0x46, 0x93, 0xfe, 0xa5, 0x8c, 0xf4, 0xcf, 0xa0, 0x95, 0x09, 0x77, 0x03, 0x6a, 0x2e, 0x77, 0x77, 0x65, 0xbd, 0xbd, 0xd9, 0xee, 0x3f, 0xde, 0x79, 0xee, 0x39, 0x22, 0x74, 0x5c, 0xe1, 0xe7, 0x53, 0x3f, 0x3e, 0x4c, 0xfc, 0x4c, 0xbf, 0xf5, 0xbf, 0x2a, 0xcc, 0x54, 0x5b, 0x5c, 0x89, 0xf3, 0x15, 0xcc, 0xc9, 0x54, 0x99, 0x21, 0xd3, 0xeb, 0x28, 0xf7, 0x01, 0x34, 0x27, 0xf1, 0x38, 0x22, 0x21, 0x19, 0x32, 0xdd, 0xda, 0x9b, 0x57, 0xfa, 0xcf, 0x04, 0xc1, 0xc0, 0x0e, 0xc6, 0x93, 0x81, 0x1d, 0x10, 0x9f, 0xc7, 0x50, 0x0a, 0xd5, 0x3e, 0x85, 0x76, 0xc8, 0xe8, 0x26, 0x8b, 0xbc, 0x39, 0x16, 0x79, 0xa8, 0xff, 0xc4, 0xf5, 0xe3, 0x28, 0xfb, 0xc1, 0x03, 0x75, 0xb0, 0xbf, 0xfb, 0x7c, 0x67, 0x6b, 0x67, 0xc7, 0xd8, 0x1d, 0x0c, 0x0c, 0x08, 0xd3, 0x19, 0xfd, 0x00, 0xb4, 0xdd, 0x68, 0x84, 0x03, 0x1c, 0x4f, 0x5e, 0x57, 0xe7, 0xa2, 0x36, 0x95, 0x33, 0xda, 0xd0, 0x50, 0x4a, 0x58, 0xf5, 0xa0, 0x21, 0x7e, 0x29, 0x82, 0x32, 0x19, 0xea, 0xf7, 0x60, 0x3e, 0x59, 0x7a, 0x06, 0x58, 0xcd, 0xc0, 0x2a, 0xc0, 0x57, 0xc4, 0xc7, 0x3b, 0xec, 0xdc, 0xd6, 0xff, 0xaf, 0x02, 0xf0, 0xd4, 0xb3, 0x1c, 0x3e, 0xa4, 0x09, 0x7c, 0xe2, 0xe2, 0x89, 0xe7, 0x12, 0x3b, 0x49, 0xe0, 0xc9, 0x38, 0x0d, 0x81, 0x0a, 0x33, 0x6a, 0x49, 0x08, 0x88, 0xad, 0x57, 0x65, 0xbf, 0xa3, 0x9f, 0x3f, 0x2b, 0xad, 0x69, 0xab, 0xd2, 0x21, 0x32, 0xc7, 0x03, 0x01, 0xbb, 0xc3, 0x31, 0x09, 0x47, 0x65, 0xa7, 0x49, 0x5d, 0x3e, 0x4d, 0x56, 0xa1, 0x13, 0x1e, 0x13, 0xdf, 0xb4, 0x47, 0xd8, 0x3e, 0x0e, 0xe3, 0x89, 0x28, 0x41, 0x54, 0x4a, 0xdc, 0x16, 0x34, 0xed, 0x06, 0xb4, 0xe3, 0xcd, 0x23, 0xd3, 0xf6, 0x62, 0x37, 0xc2, 0x01, 0xab, 0x3b, 0x3a, 0x06, 0xc4, 0x9b, 0x47, 0xdb, 0x9c, 0xa2, 0xff, 0xb6, 0x02, 0x6d, 0x03, 0x87, 0x38, 0x12, 0x46, 0xb9, 0x05, 0x5d, 0xe1, 0x21, 0x33, 0xb0, 0x5c, 0xc7, 0x9b, 0x88, 0x33, 0xa3, 0x23, 0xa8, 0x06, 0x23, 0x6a, 0x37, 0xa0, 0x19, 0x46, 0x01, 0x76, 0x87, 0xd1, 0x88, 0x17, 0x6c, 0x0f, 0xaa, 0x9b, 0x1f, 0x7c, 0x68, 0xa4, 0xc4, 0xd9, 0xd6, 0xa8, 0x9e, 0x63, 0x8d, 0xb3, 0x07, 0x48, 0xad, 0xec, 0x00, 0xf9, 0x05, 0x46, 0x2b, 0xd8, 0xa3, 0x51, 0xb4, 0x07, 0x05, 0x30, 0xab, 0x8a, 0x7a, 0x81, 0x17, 0x6a, 0x40, 0x49, 0xbc, 0x5c, 0xa0, 0x85, 0x01, 0xff, 0x12, 0x41, 0x85, 0xa0, 0x2b, 0xf2, 0x5f, 0x92, 0x64, 0x6f, 0x03, 0x08, 0x0a, 0xcd, 0xb0, 0xb9, 0xa4, 0xa8, 0xc8, 0x49, 0xf1, 0x4f, 0x15, 0xe8, 0x1a, 0xd8, 0xf6, 0x4e, 0x70, 0x30, 0x15, 0xd6, 0x5f, 0x06, 0xf8, 0xc6, 0x0b, 0x1c, 0x2e, 0x9f, 0x38, 0xd1, 0x5b, 0x94, 0xc2, 0xc4, 0x9b, 0x6d, 0xd4, 0xca, 0x1b, 0x19, 0xb5, 0xfa, 0x2a, 0xa3, 0xd6, 0x5e, 0x69, 0xd4, 0x39, 0xd9, 0xa8, 0x1b, 0x80, 0xb0, 0x7b, 0xe4, 0x05, 0x36, 0x36, 0xa9, 0xac, 0x63, 0x12, 0x46, 0xcc, 0xea, 0x4d, 0x63, 0x5e, 0xd0, 0xbf, 0x12, 0x64, 0x9a, 0x39, 0x59, 0xca, 0xe1, 0x81, 0xc8, 0xbe, 0x8b, 0x3e, 0x69, 0x9d, 0xf1, 0xc9, 0x65, 0x68, 0x38, 0xc1, 0xd4, 0x0c, 0x62, 0x97, 0xd5, 0xbd, 0x4d, 0xa3, 0xee, 0x04, 0x53, 0x23, 0x76, 0xf5, 0xf7, 0xa0, 0x4d, 0x39, 0x27, 0x27, 0xe9, 0x5a, 0xee, 0x24, 0x45, 0x7d, 0x69, 0x4e, 0x3a, 0x44, 0x97, 0xa1, 0x41, 0x27, 0xa8, 0x6f, 0x34, 0xa8, 0x51, 0x81, 0x45, 0x8a, 0x61, 0xdf, 0xfa, 0x8f, 0x0a, 0xb4, 0x07, 0x64, 0xe8, 0x3e, 0x13, 0x15, 0xd0, 0xb9, 0x49, 0x2d, 0x57, 0x43, 0xb0, 0xcc, 0x93, 0x14, 0x4e, 0xb9, 0x14, 0x5f, 0x9d, 0x95, 0xe2, 0x0b, 0x89, 0xb8, 0xf6, 0xc6, 0x89, 0xf8, 0xbf, 0x15, 0xe8, 0xbc, 0xc0, 0x01, 0x39, 0x9a, 0x26, 0xf2, 0xe6, 0x92, 0xa1, 0x22, 0x65, 0x4e, 0xed, 0x1a, 0xb4, 0x42, 0x32, 0x74, 0xd9, 0x7d, 0x8c, 0x45, 0x8c, 0x6a, 0x64, 0x04, 0x59, 0x95, 0x2a, 0x8f, 0xd3, 0x52, 0x55, 0x66, 0x9e, 0xa0, 0xff, 0x0e, 0x48, 0x88, 0x30, 0x90, 0x79, 0xfe, 0x1c, 0x59, 0xf4, 0x1f, 0x14, 0xba, 0xa9, 0xec, 0x60, 0xea, 0x47, 0x89, 0x5a, 0x97, 0xa0, 0xee, 0xc7, 0x87, 0xc7, 0x38, 0xd9, 0x45, 0x62, 0x54, 0xac, 0xe2, 0x24, 0xb1, 0x6f, 0x82, 0x9a, 0x64, 0x32, 0xcf, 0x1d, 0xa7, 0xc7, 0xa7, 0xa0, 0x7d, 0xe1, 0x8e, 0x0b, 0x55, 0x48, 0xed, 0xbc, 0x43, 0x7a, 0x6e, 0x96, 0xda, 0x2f, 0x00, 0x09, 0x49, 0xb1, 0x93, 0xc8, 0x7a, 0x11, 0xe6, 0x5c, 0xcf, 0xb5, 0xb1, 0x10, 0x95, 0x0f, 0xce, 0x91, 0x54, 0x83, 0xda, 0x68, 0x62, 0xd9, 0xc2, 0xee, 0xec, 0x5b, 0xff, 0x1a, 0xba, 0x3b, 0x38, 0x67, 0x81, 0x73, 0x03, 0x31, 0x5d, 0xb2, 0x32, 0x63, 0xc9, 0x6a, 0xf9, 0x92, 0x35, 0x69, 0xc9, 0x3d, 0x40, 0x62, 0xc9, 0x4c, 0x95, 0x42, 0xad, 0x2d, 0x71, 0x90, 0x7c, 0x5b, 0xc9, 0xf9, 0x56, 0xff, 0xb3, 0x02, 0xdd, 0x6d, 0xe2, 0x8f, 0x70, 0xf0, 0x39, 0x9e, 0xbe, 0xb0, 0xc6, 0xf1, 0x2b, 0x64, 0x47, 0x50, 0xa5, 0x7e, 0xe5, 0x5c, 0xe8, 0x27, 0xd5, 0xe6, 0x84, 0xfe, 0x4e, 0x48, 0xcd, 0x07, 0x3c, 0x93, 0x32, 0xf9, 0xc4, 0xb1, 0x90, 0x0c, 0xb5, 0x35, 0xe8, 0x5a, 0xe1, 0xb1, 0xe9, 0xb9, 0x66, 0x02, 0xe0, 0x77, 0x7a, 0xd5, 0x0a, 0x8f, 0xbf, 0x70, 0x77, 0xcf, 0xa0, 0x1c, 0xae, 0xa6, 0x48, 0x52, 0x1c, 0x25, 0x54, 0xd7, 0xba, 0x50, 0x21, 0x27, 0xec, 0x60, 0x50, 0x8d, 0x0a, 0x39, 0xd1, 0xd7, 0x01, 0x71, 0x65, 0xb0, 0x93, 0xaa, 0x93, 0xca, 0xa7, 0x48, 0xf2, 0xe9, 0xff, 0x05, 0xdd, 0xdd, 0x30, 0x22, 0x13, 0x2b, 0xc2, 0x07, 0xa7, 0x03, 0xf2, 0x12, 0xd3, 0x23, 0xda, 0x8b, 0x23, 0x3f, 0x8e, 0xc2, 0x34, 0xa3, 0xd3, 0xc2, 0x59, 0x15, 0x44, 0x9e, 0xd4, 0x6f, 0x82, 0x4a, 0x5c, 0x09, 0x53, 0x61, 0x98, 0x36, 0xa7, 0x71, 0xc8, 0x6b, 0x25, 0x13, 0xfd, 0x26, 0xd4, 0xc5, 0xba, 0x97, 0xa1, 0x11, 0x9d, 0x9a, 0xa2, 0x54, 0xa7, 0xd9, 0xb4, 0x1e, 0xb1, 0x09, 0xfd, 0xf7, 0x0a, 0xd4, 0xe9, 0xf6, 0x3c, 0x38, 0xfd, 0xc7, 0xca, 0xa6, 0x5d, 0x85, 0x46, 0xae, 0x2b, 0xf3, 0x40, 0x79, 0xd7, 0x48, 0x28, 0xda, 0x75, 0x68, 0x8d, 0x3d, 0xfb, 0xd8, 0x8c, 0x88, 0xd8, 0x69, 0x9d, 0x07, 0xca, 0x3b, 0x46, 0x93, 0xd2, 0x0e, 0xc8, 0x04, 0xeb, 0x7f, 0x53, 0x40, 0x1d, 0x90, 0x89, 0x3f, 0xc6, 0x42, 0xf6, 0x35, 0xa8, 0x73, 0x11, 0x58, 0x2c, 0xb5, 0x37, 0xd5, 0xfe, 0xc1, 0x29, 0xcb, 0x99, 0x2c, 0xcd, 0x8b, 0x39, 0xed, 0x0e, 0x34, 0x84, 0x32, 0xbd, 0x0a, 0x83, 0x75, 0xfa, 0x07, 0xa7, 0x5f, 0x30, 0x0a, 0xc3, 0x25, 0xb3, 0xda, 0xfb, 0xa0, 0x46, 0x81, 0xe5, 0x86, 0x16, 0x3b, 0x09, 0xc3, 0x5e, 0x95, 0xa1, 0x51, 0xff, 0x20, 0x23, 0xb2, 0x1f, 0xe4, 0x50, 0xaf, 0x97, 0x16, 0x65, 0xc5, 0xe7, 0xce, 0x57, 0xbc, 0x7e, 0x56, 0xf1, 0x5f, 0x2b, 0xd0, 0x3a, 0x48, 0x2f, 0x8a, 0xf7, 0x41, 0x0d, 0xf8, 0xa7, 0x29, 0x1d, 0x73, 0x6a, 0x5f, 0x3e, 0xe2, 0xda, 0x41, 0x36, 0xd0, 0xee, 0x43, 0xc3, 0xc1, 0x91, 0x45, 0xc6, 0xa1, 0xa8, 0x63, 0x17, 0xfb, 0x29, 0xb7, 0x1d, 0x3e, 0xc1, 0x0d, 0x21, 0x50, 0xda, 0x47, 0x00, 0x21, 0x0e, 0x92, 0x36, 0x51, 0x95, 0xfd, 0xa6, 0x97, 0xfd, 0x66, 0x90, 0xce, 0xb1, 0x9f, 0x49, 0x58, 0x7d, 0x03, 0xe6, 0x0e, 0xd8, 0x95, 0x74, 0x05, 0x2a, 0xd1, 0x29, 0x13, 0xad, 0xcc, 0x82, 0x95, 0xe8, 0x54, 0xff, 0xdf, 0x0a, 0x74, 0x93, 0x0a, 0x5e, 0xf8, 0xf3, 0x67, 0xa4, 0xb6, 0xab, 0xd0, 0x1a, 0x5a, 0xa1, 0xe9, 0x07, 0xc4, 0x4e, 0xd2, 0x44, 0x73, 0x68, 0x85, 0xfb, 0x74, 0x9c, 0x4c, 0x8e, 0xc9, 0x84, 0x44, 0x22, 0xc5, 0xd1, 0xc9, 0xa7, 0x74, 0x4c, 0x37, 0x78, 0xe4, 0x31, 0x67, 0xa8, 0x46, 0x25, 0xf2, 0xb2, 0xcd, 0x5c, 0x97, 0x93, 0xcd, 0x5b, 0xa0, 0xd1, 0xeb, 0xbb, 0x29, 0x9a, 0x64, 0xa6, 0x3d, 0x8a, 0xdd, 0x63, 0x91, 0x16, 0x10, 0x9d, 0x11, 0x6d, 0xcf, 0x6d, 0x4a, 0xa7, 0x25, 0x0c, 0x43, 0x8f, 0x79, 0x45, 0x2c, 0xca, 0x6c, 0x4a, 0x7a, 0xca, 0xcb, 0xe1, 0x2b, 0xd0, 0xb4, 0x47, 0x16, 0x71, 0x4d, 0xe2, 0x88, 0x02, 0xa7, 0xc1, 0xc6, 0x4f, 0x1c, 0xfd, 0xff, 0x15, 0x58, 0x48, 0xec, 0x91, 0x39, 0xbb, 0xc0, 0x51, 0x39, 0xc3, 0x91, 0x16, 0xaa, 0xc9, 0x81, 0x69, 0x9e, 0x88, 0xae, 0x29, 0xa4, 0xa4, 0x17, 0x79, 0x40, 0x20, 0x6c, 0x94, 0x01, 0x8c, 0x3c, 0x20, 0x4c, 0x1a, 0x4d, 0x29, 0x69, 0xa0, 0xf7, 0xa1, 0x93, 0x09, 0x46, 0x9d, 0xbb, 0x0c, 0x4c, 0x02, 0x61, 0x0c, 0x9e, 0xfc, 0x5a, 0x94, 0xc2, 0xac, 0xa0, 0x3f, 0x85, 0x0b, 0xb2, 0x63, 0x7f, 0x59, 0x05, 0xa5, 0x13, 0x58, 0x4c, 0xb8, 0x9d, 0x5b, 0xe1, 0xa8, 0xbf, 0xb8, 0xc2, 0xd1, 0x0d, 0xe8, 0x25, 0x4b, 0xbd, 0xaa, 0x86, 0x79, 0xdd, 0xd5, 0xf4, 0x9f, 0x58, 0xd2, 0x1a, 0xba, 0x4f, 0x1c, 0xec, 0x46, 0x24, 0x9a, 0x6a, 0x1b, 0xd0, 0x24, 0xe2, 0x5b, 0xec, 0x8f, 0x4e, 0x3f, 0x99, 0xe4, 0xf7, 0x73, 0x92, 0x41, 0x91, 0x3d, 0xb2, 0xc6, 0xd4, 0xf7, 0xd8, 0x1c, 0x11, 0xc7, 0xc1, 0xae, 0x58, 0x60, 0x3e, 0xa5, 0x3f, 0x66, 0xe4, 0x3c, 0xf4, 0x84, 0x84, 0xb1, 0x35, 0x16, 0x97, 0xd2, 0x0c, 0xfa, 0x82, 0x91, 0x4b, 0xdb, 0x2a, 0xb5, 0xb2, 0xb6, 0x8a, 0x3e, 0x84, 0x2e, 0x15, 0x1d, 0x3b, 0xa9, 0xf0, 0xb3, 0x2b, 0xb9, 0x65, 0x00, 0x9f, 0x75, 0x4e, 0xcc, 0xe4, 0x10, 0x57, 0x8d, 0x96, 0x9f, 0xf6, 0x52, 0x72, 0x46, 0xaa, 0x16, 0x8d, 0xf4, 0xad, 0x02, 0x0b, 0x8f, 0x70, 0xb4, 0xbb, 0xbd, 0xf3, 0x58, 0x34, 0x5a, 0xe9, 0x6f, 0xde, 0xc0, 0x52, 0xb7, 0x61, 0xde, 0xc7, 0x38, 0x30, 0xcf, 0x88, 0xd0, 0xa1, 0xe4, 0xac, 0xa5, 0x53, 0xa6, 0x7b, 0xb5, 0x54, 0xf7, 0x77, 0xa1, 0x5b, 0x10, 0x87, 0xee, 0x13, 0x3e, 0x32, 0xb3, 0xfa, 0x13, 0xc2, 0x14, 0xa0, 0xbf, 0x03, 0x9d, 0x01, 0x8e, 0xbe, 0xdc, 0xdc, 0x93, 0x2e, 0x91, 0xf2, 0x8d, 0x46, 0x39, 0x73, 0xeb, 0xbe, 0x03, 0x9d, 0x3d, 0xd1, 0xa9, 0xde, 0x65, 0x3d, 0xdf, 0x4b, 0x50, 0xcf, 0xed, 0x74, 0x31, 0xd2, 0xb7, 0x60, 0x3e, 0x01, 0x26, 0x99, 0xe1, 0x12, 0xd4, 0xbd, 0xa3, 0xa3, 0x10, 0x27, 0xf7, 0x43, 0x31, 0x92, 0x58, 0x54, 0x72, 0x2c, 0x3e, 0x81, 0x6e, 0xc2, 0xe2, 0x4b, 0x7f, 0xec, 0x59, 0x0e, 0x75, 0xa6, 0x6f, 0x4d, 0xe9, 0x67, 0xd2, 0x2f, 0x11, 0x43, 0x56, 0x16, 0x5a, 0xe1, 0x48, 0xd8, 0x90, 0x7d, 0xeb, 0x6b, 0xd0, 0x1c, 0xe0, 0xf1, 0xd1, 0x01, 0x5d, 0x3b, 0xf7, 0x4b, 0x45, 0xfa, 0xa5, 0x7e, 0x17, 0x16, 0x76, 0xf0, 0x61, 0x3c, 0x7c, 0x4a, 0xdc, 0xe3, 0x1d, 0x6c, 0xf3, 0x97, 0x83, 0x45, 0xa8, 0x4f, 0x71, 0x68, 0xba, 0x1e, 0x5b, 0xa7, 0x69, 0xcc, 0x4d, 0x71, 0xf8, 0xdc, 0xd3, 0x2f, 0x48, 0xd8, 0x47, 0x38, 0x1a, 0x44, 0x56, 0x84, 0xf5, 0xbf, 0x54, 0x68, 0xc5, 0x2b, 0xa8, 0x8c, 0xc4, 0x34, 0xb2, 0xa6, 0x5e, 0x1c, 0x25, 0x35, 0x3f, 0x1f, 0x25, 0xbd, 0x97, 0x4a, 0xd6, 0x7b, 0xb9, 0x04, 0xf5, 0x09, 0xeb, 0x8a, 0x0a, 0xa7, 0x8a, 0x51, 0xae, 0xc5, 0x53, 0x9b, 0xd1, 0xe2, 0x99, 0x9b, 0xd5, 0xe2, 0x99, 0x79, 0xdb, 0xae, 0x9f, 0x73, 0xdb, 0x5e, 0x06, 0x08, 0x70, 0x88, 0x23, 0x76, 0x13, 0x66, 0xe7, 0x45, 0xcb, 0x68, 0x31, 0x0a, 0xbd, 0x74, 0xd2, 0xaa, 0x8b, 0x4f, 0x27, 0x3d, 0x81, 0x26, 0xd3, 0x4c, 0x65, 0xc4, 0xa4, 0x8f, 0xfa, 0x16, 0x68, 0x81, 0xe8, 0x0b, 0x98, 0x47, 0xd6, 0x31, 0xbf, 0x55, 0x8b, 0xb7, 0x20, 0x94, 0xcc, 0xec, 0x59, 0xc7, 0xec, 0x5a, 0xad, 0xdd, 0x85, 0x85, 0x14, 0xcd, 0x9a, 0x07, 0xbe, 0x17, 0xb2, 0x7b, 0x72, 0xc7, 0x98, 0x4f, 0x26, 0x28, 0x70, 0xdf, 0x0b, 0xf5, 0x79, 0xe8, 0x48, 0x36, 0xf6, 0x7c, 0x7d, 0x1f, 0xd4, 0x94, 0xf0, 0xd4, 0x1b, 0xb2, 0x0b, 0x3e, 0x3e, 0xc1, 0xe3, 0xe4, 0x35, 0x81, 0x0d, 0xa8, 0x79, 0x0f, 0x63, 0xfb, 0x18, 0x47, 0xc2, 0xe6, 0x62, 0xc4, 0x6e, 0xf3, 0xf8, 0x34, 0x12, 0x46, 0x67, 0xdf, 0xfa, 0x23, 0xb8, 0x90, 0x72, 0x7c, 0x86, 0x27, 0x5e, 0x30, 0x35, 0x30, 0x8f, 0x39, 0x39, 0x81, 0x74, 0xb2, 0x04, 0x32, 0x2b, 0x6e, 0x37, 0x60, 0xbe, 0xc0, 0x88, 0xb9, 0x99, 0x7d, 0x25, 0x01, 0xc1, 0x47, 0xfa, 0x7f, 0xc0, 0xc5, 0x02, 0xf4, 0xab, 0x80, 0x44, 0xf8, 0xfc, 0x45, 0x05, 0xa7, 0x8a, 0xcc, 0x49, 0xbc, 0xa6, 0x84, 0x23, 0x71, 0x5b, 0xe4, 0x03, 0xfd, 0x6d, 0x49, 0xa7, 0x3d, 0x4a, 0x49, 0x37, 0x6d, 0x88, 0xed, 0xc8, 0x4b, 0x76, 0xb8, 0x18, 0xdd, 0xfd, 0x71, 0x11, 0xda, 0xe2, 0x1c, 0x61, 0x75, 0xd8, 0x0a, 0x5c, 0x92, 0x86, 0x66, 0xf6, 0x60, 0x8a, 0xfe, 0x69, 0xa9, 0xf6, 0xed, 0x1f, 0x7a, 0x8a, 0xb6, 0x94, 0x5e, 0x9e, 0x19, 0x62, 0x9f, 0xb8, 0x43, 0xa4, 0x88, 0xb9, 0x65, 0xb8, 0x20, 0xcf, 0x89, 0x57, 0x10, 0x54, 0x59, 0xaa, 0x7d, 0x57, 0x32, 0x2d, 0xde, 0x39, 0x50, 0x55, 0x4c, 0xdf, 0x80, 0x45, 0x79, 0x3a, 0x7d, 0x14, 0x42, 0x35, 0xc1, 0xbe, 0x20, 0x5c, 0xd6, 0x2e, 0x45, 0x73, 0x02, 0x71, 0x07, 0xae, 0xe4, 0x56, 0x90, 0x13, 0x17, 0xaa, 0x2f, 0x35, 0x29, 0xe8, 0x8f, 0x14, 0xb8, 0x0e, 0x4b, 0x65, 0x40, 0x9e, 0x75, 0x50, 0x43, 0x42, 0x6e, 0xc0, 0xd5, 0x32, 0xa4, 0x48, 0x71, 0xa8, 0xb9, 0xd4, 0xfc, 0x2e, 0x81, 0x16, 0xe4, 0xcb, 0x5e, 0x23, 0x50, 0xab, 0xdc, 0x40, 0xc9, 0x34, 0x08, 0x0b, 0xe8, 0xd0, 0x2b, 0x30, 0x48, 0x8f, 0x05, 0xd4, 0x16, 0x2c, 0x0a, 0x56, 0xca, 0x00, 0xaa, 0x60, 0x52, 0x90, 0x22, 0xeb, 0x22, 0xa3, 0x8e, 0x60, 0x71, 0x13, 0x2e, 0xcb, 0x08, 0xa9, 0xa7, 0x8a, 0xba, 0x02, 0x72, 0x0d, 0xb4, 0x9c, 0x27, 0x59, 0xf1, 0x8b, 0xe6, 0xc5, 0xec, 0x5a, 0x5e, 0x4e, 0xf9, 0xc2, 0x83, 0xd0, 0x52, 0x9d, 0x62, 0x9a, 0x8a, 0x76, 0x1d, 0x2e, 0xe6, 0x2c, 0x27, 0x9e, 0xd7, 0xd1, 0x82, 0x10, 0xf4, 0x36, 0x5c, 0x2b, 0x44, 0x52, 0xee, 0x31, 0x09, 0x69, 0x29, 0xae, 0x57, 0x8a, 0xdb, 0xb2, 0x8f, 0xd1, 0x05, 0xee, 0xa9, 0xdf, 0x95, 0xc8, 0xcc, 0x1f, 0x97, 0xd0, 0xc5, 0x72, 0xbb, 0xa5, 0xe5, 0x2b, 0x5a, 0x14, 0xcb, 0x5c, 0x85, 0x85, 0x3c, 0x80, 0xf2, 0xbf, 0x94, 0x6a, 0x9c, 0x8b, 0x97, 0x7c, 0xcf, 0x00, 0x5d, 0x16, 0xa8, 0x82, 0xff, 0xe4, 0x57, 0x59, 0xd4, 0x13, 0x98, 0xd5, 0x7c, 0x88, 0xe6, 0x1e, 0x6a, 0xd1, 0x95, 0x72, 0x50, 0xee, 0x11, 0x0f, 0x2d, 0x09, 0x81, 0x57, 0xf3, 0x1a, 0xa5, 0x4f, 0x77, 0xe8, 0xaa, 0x64, 0x94, 0x42, 0x34, 0x64, 0xaf, 0xb1, 0xe8, 0x5a, 0xf9, 0xae, 0xca, 0x1e, 0x49, 0xd0, 0x72, 0x79, 0xd4, 0x26, 0xd3, 0xd7, 0xd3, 0xa8, 0xcd, 0xf9, 0x39, 0x39, 0x81, 0xd1, 0x8a, 0xb4, 0x8b, 0x0a, 0x96, 0x91, 0xdb, 0xd2, 0x48, 0x2f, 0xb7, 0x71, 0xbe, 0x55, 0x8d, 0x56, 0xcb, 0xc3, 0x3b, 0x6b, 0x5f, 0xa3, 0xb5, 0xf2, 0xf0, 0x96, 0xea, 0x7b, 0x74, 0xbb, 0xdc, 0xbe, 0xb9, 0xa2, 0x1d, 0xdd, 0x11, 0xa0, 0x42, 0x7c, 0x16, 0xcb, 0x6d, 0xb4, 0x2e, 0x24, 0xba, 0x03, 0xcb, 0xb9, 0xf8, 0x2c, 0x3e, 0x65, 0xa2, 0x8d, 0x14, 0x78, 0xa5, 0x1c, 0x48, 0xa5, 0xbf, 0x2b, 0x39, 0xed, 0x76, 0xc1, 0x12, 0xb9, 0x56, 0x0d, 0xba, 0x27, 0xed, 0x30, 0x2d, 0x1f, 0xb2, 0x6c, 0xfe, 0xad, 0xa5, 0xfa, 0x77, 0x7c, 0xbe, 0x60, 0xd1, 0x7c, 0x07, 0x1f, 0xbd, 0x5d, 0x6e, 0x2f, 0xa9, 0x15, 0x8d, 0xfa, 0xe5, 0x99, 0x5b, 0x34, 0xa5, 0xd1, 0xfd, 0x72, 0x4b, 0x15, 0x9b, 0x50, 0xe8, 0x9d, 0x74, 0x27, 0x17, 0x3c, 0x2c, 0x77, 0x0d, 0xd1, 0xbb, 0xa9, 0x5e, 0xeb, 0x79, 0x7e, 0xc5, 0xae, 0x25, 0xda, 0x4c, 0x35, 0x2c, 0x70, 0xcc, 0xf7, 0x21, 0xd1, 0x7b, 0xb3, 0x38, 0x16, 0x9b, 0x87, 0xe8, 0xfd, 0x94, 0xa3, 0x5e, 0xcc, 0x6d, 0xd9, 0xbd, 0x08, 0x7d, 0x50, 0x1e, 0xa9, 0xf9, 0x0b, 0x08, 0xfa, 0x50, 0x68, 0x5b, 0xb0, 0xab, 0xf4, 0xef, 0x46, 0xe8, 0x9f, 0x05, 0xa3, 0x75, 0xb8, 0x9e, 0x53, 0xf4, 0xcc, 0x43, 0x25, 0xfa, 0x48, 0x20, 0x6f, 0xe5, 0x8f, 0xa1, 0xc2, 0xbb, 0x22, 0xfa, 0x17, 0xb1, 0x66, 0x71, 0x0f, 0xe5, 0x9a, 0x17, 0xe8, 0x41, 0x7a, 0x4c, 0x2e, 0x97, 0xa1, 0xb2, 0x9c, 0xf8, 0xaf, 0x69, 0x8a, 0xb9, 0x52, 0x0e, 0xa4, 0xde, 0xff, 0xb7, 0x72, 0x6e, 0x67, 0x2e, 0x49, 0xe8, 0xe3, 0x19, 0x1b, 0x3c, 0x8f, 0xfa, 0xa4, 0x7c, 0xcd, 0xdc, 0x75, 0x05, 0x7d, 0x2a, 0x58, 0x6d, 0xc0, 0x8d, 0x59, 0x7a, 0x26, 0x2e, 0xfd, 0x4c, 0x40, 0xef, 0xc1, 0xcd, 0x32, 0x68, 0x7e, 0xcf, 0x6f, 0x09, 0x70, 0x1f, 0xd6, 0xca, 0xc0, 0x67, 0xf6, 0xfe, 0x43, 0x21, 0xec, 0xbd, 0xbc, 0xee, 0x67, 0xee, 0x15, 0xc8, 0x59, 0x6a, 0x7e, 0x9f, 0x6c, 0xeb, 0x3b, 0x33, 0xc0, 0xc9, 0xc5, 0x02, 0xe1, 0xa5, 0xda, 0xf7, 0x25, 0x86, 0xca, 0xdf, 0x35, 0xd0, 0xd1, 0x52, 0xed, 0x87, 0x12, 0x43, 0xe5, 0xaa, 0x65, 0x34, 0x14, 0xac, 0x0a, 0xe1, 0x2c, 0x57, 0xd0, 0x68, 0x24, 0x18, 0x15, 0x8c, 0x59, 0x52, 0x13, 0x23, 0x57, 0xb0, 0x2b, 0x84, 0x61, 0x01, 0x8a, 0x3c, 0xc1, 0xf1, 0x2e, 0xac, 0x9c, 0x03, 0x63, 0x15, 0x2f, 0xf2, 0x05, 0xcb, 0x59, 0xab, 0x67, 0xd5, 0x2b, 0xfa, 0x9a, 0x43, 0x1f, 0xbe, 0x0f, 0xab, 0xb6, 0x37, 0xe9, 0x87, 0x56, 0xe4, 0x85, 0x23, 0x32, 0xb6, 0x0e, 0xc3, 0x7e, 0x14, 0xe0, 0x97, 0x5e, 0xd0, 0x1f, 0x93, 0x43, 0xfe, 0x6f, 0x7e, 0x87, 0xf1, 0xd1, 0xc3, 0xce, 0x01, 0x23, 0x0a, 0xae, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xe4, 0xc0, 0x85, 0x16, 0x28, 0x00, 0x00, }