github.com/pslzym/go-ethereum@v1.8.17-0.20180926104442-4b6824e07b1b/accounts/usbwallet/internal/trezor/types.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // source: types.proto 3 4 /* 5 Package trezor is a generated protocol buffer package. 6 7 It is generated from these files: 8 types.proto 9 messages.proto 10 11 It has these top-level messages: 12 HDNodeType 13 HDNodePathType 14 CoinType 15 MultisigRedeemScriptType 16 TxInputType 17 TxOutputType 18 TxOutputBinType 19 TransactionType 20 TxRequestDetailsType 21 TxRequestSerializedType 22 IdentityType 23 Initialize 24 GetFeatures 25 Features 26 ClearSession 27 ApplySettings 28 ApplyFlags 29 ChangePin 30 Ping 31 Success 32 Failure 33 ButtonRequest 34 ButtonAck 35 PinMatrixRequest 36 PinMatrixAck 37 Cancel 38 PassphraseRequest 39 PassphraseAck 40 GetEntropy 41 Entropy 42 GetPublicKey 43 PublicKey 44 GetAddress 45 EthereumGetAddress 46 Address 47 EthereumAddress 48 WipeDevice 49 LoadDevice 50 ResetDevice 51 BackupDevice 52 EntropyRequest 53 EntropyAck 54 RecoveryDevice 55 WordRequest 56 WordAck 57 SignMessage 58 VerifyMessage 59 MessageSignature 60 EncryptMessage 61 EncryptedMessage 62 DecryptMessage 63 DecryptedMessage 64 CipherKeyValue 65 CipheredKeyValue 66 EstimateTxSize 67 TxSize 68 SignTx 69 SimpleSignTx 70 TxRequest 71 TxAck 72 EthereumSignTx 73 EthereumTxRequest 74 EthereumTxAck 75 EthereumSignMessage 76 EthereumVerifyMessage 77 EthereumMessageSignature 78 SignIdentity 79 SignedIdentity 80 GetECDHSessionKey 81 ECDHSessionKey 82 SetU2FCounter 83 FirmwareErase 84 FirmwareRequest 85 FirmwareUpload 86 SelfTest 87 DebugLinkDecision 88 DebugLinkGetState 89 DebugLinkState 90 DebugLinkStop 91 DebugLinkLog 92 DebugLinkMemoryRead 93 DebugLinkMemory 94 DebugLinkMemoryWrite 95 DebugLinkFlashErase 96 */ 97 package trezor 98 99 import proto "github.com/golang/protobuf/proto" 100 import fmt "fmt" 101 import math "math" 102 import google_protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" 103 104 // Reference imports to suppress errors if they are not otherwise used. 105 var _ = proto.Marshal 106 var _ = fmt.Errorf 107 var _ = math.Inf 108 109 // This is a compile-time assertion to ensure that this generated file 110 // is compatible with the proto package it is being compiled against. 111 // A compilation error at this line likely means your copy of the 112 // proto package needs to be updated. 113 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package 114 115 // * 116 // Type of failures returned by Failure message 117 // @used_in Failure 118 type FailureType int32 119 120 const ( 121 FailureType_Failure_UnexpectedMessage FailureType = 1 122 FailureType_Failure_ButtonExpected FailureType = 2 123 FailureType_Failure_DataError FailureType = 3 124 FailureType_Failure_ActionCancelled FailureType = 4 125 FailureType_Failure_PinExpected FailureType = 5 126 FailureType_Failure_PinCancelled FailureType = 6 127 FailureType_Failure_PinInvalid FailureType = 7 128 FailureType_Failure_InvalidSignature FailureType = 8 129 FailureType_Failure_ProcessError FailureType = 9 130 FailureType_Failure_NotEnoughFunds FailureType = 10 131 FailureType_Failure_NotInitialized FailureType = 11 132 FailureType_Failure_FirmwareError FailureType = 99 133 ) 134 135 var FailureType_name = map[int32]string{ 136 1: "Failure_UnexpectedMessage", 137 2: "Failure_ButtonExpected", 138 3: "Failure_DataError", 139 4: "Failure_ActionCancelled", 140 5: "Failure_PinExpected", 141 6: "Failure_PinCancelled", 142 7: "Failure_PinInvalid", 143 8: "Failure_InvalidSignature", 144 9: "Failure_ProcessError", 145 10: "Failure_NotEnoughFunds", 146 11: "Failure_NotInitialized", 147 99: "Failure_FirmwareError", 148 } 149 var FailureType_value = map[string]int32{ 150 "Failure_UnexpectedMessage": 1, 151 "Failure_ButtonExpected": 2, 152 "Failure_DataError": 3, 153 "Failure_ActionCancelled": 4, 154 "Failure_PinExpected": 5, 155 "Failure_PinCancelled": 6, 156 "Failure_PinInvalid": 7, 157 "Failure_InvalidSignature": 8, 158 "Failure_ProcessError": 9, 159 "Failure_NotEnoughFunds": 10, 160 "Failure_NotInitialized": 11, 161 "Failure_FirmwareError": 99, 162 } 163 164 func (x FailureType) Enum() *FailureType { 165 p := new(FailureType) 166 *p = x 167 return p 168 } 169 func (x FailureType) String() string { 170 return proto.EnumName(FailureType_name, int32(x)) 171 } 172 func (x *FailureType) UnmarshalJSON(data []byte) error { 173 value, err := proto.UnmarshalJSONEnum(FailureType_value, data, "FailureType") 174 if err != nil { 175 return err 176 } 177 *x = FailureType(value) 178 return nil 179 } 180 func (FailureType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 181 182 // * 183 // Type of script which will be used for transaction output 184 // @used_in TxOutputType 185 type OutputScriptType int32 186 187 const ( 188 OutputScriptType_PAYTOADDRESS OutputScriptType = 0 189 OutputScriptType_PAYTOSCRIPTHASH OutputScriptType = 1 190 OutputScriptType_PAYTOMULTISIG OutputScriptType = 2 191 OutputScriptType_PAYTOOPRETURN OutputScriptType = 3 192 OutputScriptType_PAYTOWITNESS OutputScriptType = 4 193 OutputScriptType_PAYTOP2SHWITNESS OutputScriptType = 5 194 ) 195 196 var OutputScriptType_name = map[int32]string{ 197 0: "PAYTOADDRESS", 198 1: "PAYTOSCRIPTHASH", 199 2: "PAYTOMULTISIG", 200 3: "PAYTOOPRETURN", 201 4: "PAYTOWITNESS", 202 5: "PAYTOP2SHWITNESS", 203 } 204 var OutputScriptType_value = map[string]int32{ 205 "PAYTOADDRESS": 0, 206 "PAYTOSCRIPTHASH": 1, 207 "PAYTOMULTISIG": 2, 208 "PAYTOOPRETURN": 3, 209 "PAYTOWITNESS": 4, 210 "PAYTOP2SHWITNESS": 5, 211 } 212 213 func (x OutputScriptType) Enum() *OutputScriptType { 214 p := new(OutputScriptType) 215 *p = x 216 return p 217 } 218 func (x OutputScriptType) String() string { 219 return proto.EnumName(OutputScriptType_name, int32(x)) 220 } 221 func (x *OutputScriptType) UnmarshalJSON(data []byte) error { 222 value, err := proto.UnmarshalJSONEnum(OutputScriptType_value, data, "OutputScriptType") 223 if err != nil { 224 return err 225 } 226 *x = OutputScriptType(value) 227 return nil 228 } 229 func (OutputScriptType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 230 231 // * 232 // Type of script which will be used for transaction output 233 // @used_in TxInputType 234 type InputScriptType int32 235 236 const ( 237 InputScriptType_SPENDADDRESS InputScriptType = 0 238 InputScriptType_SPENDMULTISIG InputScriptType = 1 239 InputScriptType_EXTERNAL InputScriptType = 2 240 InputScriptType_SPENDWITNESS InputScriptType = 3 241 InputScriptType_SPENDP2SHWITNESS InputScriptType = 4 242 ) 243 244 var InputScriptType_name = map[int32]string{ 245 0: "SPENDADDRESS", 246 1: "SPENDMULTISIG", 247 2: "EXTERNAL", 248 3: "SPENDWITNESS", 249 4: "SPENDP2SHWITNESS", 250 } 251 var InputScriptType_value = map[string]int32{ 252 "SPENDADDRESS": 0, 253 "SPENDMULTISIG": 1, 254 "EXTERNAL": 2, 255 "SPENDWITNESS": 3, 256 "SPENDP2SHWITNESS": 4, 257 } 258 259 func (x InputScriptType) Enum() *InputScriptType { 260 p := new(InputScriptType) 261 *p = x 262 return p 263 } 264 func (x InputScriptType) String() string { 265 return proto.EnumName(InputScriptType_name, int32(x)) 266 } 267 func (x *InputScriptType) UnmarshalJSON(data []byte) error { 268 value, err := proto.UnmarshalJSONEnum(InputScriptType_value, data, "InputScriptType") 269 if err != nil { 270 return err 271 } 272 *x = InputScriptType(value) 273 return nil 274 } 275 func (InputScriptType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 276 277 // * 278 // Type of information required by transaction signing process 279 // @used_in TxRequest 280 type RequestType int32 281 282 const ( 283 RequestType_TXINPUT RequestType = 0 284 RequestType_TXOUTPUT RequestType = 1 285 RequestType_TXMETA RequestType = 2 286 RequestType_TXFINISHED RequestType = 3 287 RequestType_TXEXTRADATA RequestType = 4 288 ) 289 290 var RequestType_name = map[int32]string{ 291 0: "TXINPUT", 292 1: "TXOUTPUT", 293 2: "TXMETA", 294 3: "TXFINISHED", 295 4: "TXEXTRADATA", 296 } 297 var RequestType_value = map[string]int32{ 298 "TXINPUT": 0, 299 "TXOUTPUT": 1, 300 "TXMETA": 2, 301 "TXFINISHED": 3, 302 "TXEXTRADATA": 4, 303 } 304 305 func (x RequestType) Enum() *RequestType { 306 p := new(RequestType) 307 *p = x 308 return p 309 } 310 func (x RequestType) String() string { 311 return proto.EnumName(RequestType_name, int32(x)) 312 } 313 func (x *RequestType) UnmarshalJSON(data []byte) error { 314 value, err := proto.UnmarshalJSONEnum(RequestType_value, data, "RequestType") 315 if err != nil { 316 return err 317 } 318 *x = RequestType(value) 319 return nil 320 } 321 func (RequestType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } 322 323 // * 324 // Type of button request 325 // @used_in ButtonRequest 326 type ButtonRequestType int32 327 328 const ( 329 ButtonRequestType_ButtonRequest_Other ButtonRequestType = 1 330 ButtonRequestType_ButtonRequest_FeeOverThreshold ButtonRequestType = 2 331 ButtonRequestType_ButtonRequest_ConfirmOutput ButtonRequestType = 3 332 ButtonRequestType_ButtonRequest_ResetDevice ButtonRequestType = 4 333 ButtonRequestType_ButtonRequest_ConfirmWord ButtonRequestType = 5 334 ButtonRequestType_ButtonRequest_WipeDevice ButtonRequestType = 6 335 ButtonRequestType_ButtonRequest_ProtectCall ButtonRequestType = 7 336 ButtonRequestType_ButtonRequest_SignTx ButtonRequestType = 8 337 ButtonRequestType_ButtonRequest_FirmwareCheck ButtonRequestType = 9 338 ButtonRequestType_ButtonRequest_Address ButtonRequestType = 10 339 ButtonRequestType_ButtonRequest_PublicKey ButtonRequestType = 11 340 ) 341 342 var ButtonRequestType_name = map[int32]string{ 343 1: "ButtonRequest_Other", 344 2: "ButtonRequest_FeeOverThreshold", 345 3: "ButtonRequest_ConfirmOutput", 346 4: "ButtonRequest_ResetDevice", 347 5: "ButtonRequest_ConfirmWord", 348 6: "ButtonRequest_WipeDevice", 349 7: "ButtonRequest_ProtectCall", 350 8: "ButtonRequest_SignTx", 351 9: "ButtonRequest_FirmwareCheck", 352 10: "ButtonRequest_Address", 353 11: "ButtonRequest_PublicKey", 354 } 355 var ButtonRequestType_value = map[string]int32{ 356 "ButtonRequest_Other": 1, 357 "ButtonRequest_FeeOverThreshold": 2, 358 "ButtonRequest_ConfirmOutput": 3, 359 "ButtonRequest_ResetDevice": 4, 360 "ButtonRequest_ConfirmWord": 5, 361 "ButtonRequest_WipeDevice": 6, 362 "ButtonRequest_ProtectCall": 7, 363 "ButtonRequest_SignTx": 8, 364 "ButtonRequest_FirmwareCheck": 9, 365 "ButtonRequest_Address": 10, 366 "ButtonRequest_PublicKey": 11, 367 } 368 369 func (x ButtonRequestType) Enum() *ButtonRequestType { 370 p := new(ButtonRequestType) 371 *p = x 372 return p 373 } 374 func (x ButtonRequestType) String() string { 375 return proto.EnumName(ButtonRequestType_name, int32(x)) 376 } 377 func (x *ButtonRequestType) UnmarshalJSON(data []byte) error { 378 value, err := proto.UnmarshalJSONEnum(ButtonRequestType_value, data, "ButtonRequestType") 379 if err != nil { 380 return err 381 } 382 *x = ButtonRequestType(value) 383 return nil 384 } 385 func (ButtonRequestType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } 386 387 // * 388 // Type of PIN request 389 // @used_in PinMatrixRequest 390 type PinMatrixRequestType int32 391 392 const ( 393 PinMatrixRequestType_PinMatrixRequestType_Current PinMatrixRequestType = 1 394 PinMatrixRequestType_PinMatrixRequestType_NewFirst PinMatrixRequestType = 2 395 PinMatrixRequestType_PinMatrixRequestType_NewSecond PinMatrixRequestType = 3 396 ) 397 398 var PinMatrixRequestType_name = map[int32]string{ 399 1: "PinMatrixRequestType_Current", 400 2: "PinMatrixRequestType_NewFirst", 401 3: "PinMatrixRequestType_NewSecond", 402 } 403 var PinMatrixRequestType_value = map[string]int32{ 404 "PinMatrixRequestType_Current": 1, 405 "PinMatrixRequestType_NewFirst": 2, 406 "PinMatrixRequestType_NewSecond": 3, 407 } 408 409 func (x PinMatrixRequestType) Enum() *PinMatrixRequestType { 410 p := new(PinMatrixRequestType) 411 *p = x 412 return p 413 } 414 func (x PinMatrixRequestType) String() string { 415 return proto.EnumName(PinMatrixRequestType_name, int32(x)) 416 } 417 func (x *PinMatrixRequestType) UnmarshalJSON(data []byte) error { 418 value, err := proto.UnmarshalJSONEnum(PinMatrixRequestType_value, data, "PinMatrixRequestType") 419 if err != nil { 420 return err 421 } 422 *x = PinMatrixRequestType(value) 423 return nil 424 } 425 func (PinMatrixRequestType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } 426 427 // * 428 // Type of recovery procedure. These should be used as bitmask, e.g., 429 // `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` 430 // listing every method supported by the host computer. 431 // 432 // Note that ScrambledWords must be supported by every implementation 433 // for backward compatibility; there is no way to not support it. 434 // 435 // @used_in RecoveryDevice 436 type RecoveryDeviceType int32 437 438 const ( 439 // use powers of two when extending this field 440 RecoveryDeviceType_RecoveryDeviceType_ScrambledWords RecoveryDeviceType = 0 441 RecoveryDeviceType_RecoveryDeviceType_Matrix RecoveryDeviceType = 1 442 ) 443 444 var RecoveryDeviceType_name = map[int32]string{ 445 0: "RecoveryDeviceType_ScrambledWords", 446 1: "RecoveryDeviceType_Matrix", 447 } 448 var RecoveryDeviceType_value = map[string]int32{ 449 "RecoveryDeviceType_ScrambledWords": 0, 450 "RecoveryDeviceType_Matrix": 1, 451 } 452 453 func (x RecoveryDeviceType) Enum() *RecoveryDeviceType { 454 p := new(RecoveryDeviceType) 455 *p = x 456 return p 457 } 458 func (x RecoveryDeviceType) String() string { 459 return proto.EnumName(RecoveryDeviceType_name, int32(x)) 460 } 461 func (x *RecoveryDeviceType) UnmarshalJSON(data []byte) error { 462 value, err := proto.UnmarshalJSONEnum(RecoveryDeviceType_value, data, "RecoveryDeviceType") 463 if err != nil { 464 return err 465 } 466 *x = RecoveryDeviceType(value) 467 return nil 468 } 469 func (RecoveryDeviceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } 470 471 // * 472 // Type of Recovery Word request 473 // @used_in WordRequest 474 type WordRequestType int32 475 476 const ( 477 WordRequestType_WordRequestType_Plain WordRequestType = 0 478 WordRequestType_WordRequestType_Matrix9 WordRequestType = 1 479 WordRequestType_WordRequestType_Matrix6 WordRequestType = 2 480 ) 481 482 var WordRequestType_name = map[int32]string{ 483 0: "WordRequestType_Plain", 484 1: "WordRequestType_Matrix9", 485 2: "WordRequestType_Matrix6", 486 } 487 var WordRequestType_value = map[string]int32{ 488 "WordRequestType_Plain": 0, 489 "WordRequestType_Matrix9": 1, 490 "WordRequestType_Matrix6": 2, 491 } 492 493 func (x WordRequestType) Enum() *WordRequestType { 494 p := new(WordRequestType) 495 *p = x 496 return p 497 } 498 func (x WordRequestType) String() string { 499 return proto.EnumName(WordRequestType_name, int32(x)) 500 } 501 func (x *WordRequestType) UnmarshalJSON(data []byte) error { 502 value, err := proto.UnmarshalJSONEnum(WordRequestType_value, data, "WordRequestType") 503 if err != nil { 504 return err 505 } 506 *x = WordRequestType(value) 507 return nil 508 } 509 func (WordRequestType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } 510 511 // * 512 // Structure representing BIP32 (hierarchical deterministic) node 513 // Used for imports of private key into the device and exporting public key out of device 514 // @used_in PublicKey 515 // @used_in LoadDevice 516 // @used_in DebugLinkState 517 // @used_in Storage 518 type HDNodeType struct { 519 Depth *uint32 `protobuf:"varint,1,req,name=depth" json:"depth,omitempty"` 520 Fingerprint *uint32 `protobuf:"varint,2,req,name=fingerprint" json:"fingerprint,omitempty"` 521 ChildNum *uint32 `protobuf:"varint,3,req,name=child_num,json=childNum" json:"child_num,omitempty"` 522 ChainCode []byte `protobuf:"bytes,4,req,name=chain_code,json=chainCode" json:"chain_code,omitempty"` 523 PrivateKey []byte `protobuf:"bytes,5,opt,name=private_key,json=privateKey" json:"private_key,omitempty"` 524 PublicKey []byte `protobuf:"bytes,6,opt,name=public_key,json=publicKey" json:"public_key,omitempty"` 525 XXX_unrecognized []byte `json:"-"` 526 } 527 528 func (m *HDNodeType) Reset() { *m = HDNodeType{} } 529 func (m *HDNodeType) String() string { return proto.CompactTextString(m) } 530 func (*HDNodeType) ProtoMessage() {} 531 func (*HDNodeType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } 532 533 func (m *HDNodeType) GetDepth() uint32 { 534 if m != nil && m.Depth != nil { 535 return *m.Depth 536 } 537 return 0 538 } 539 540 func (m *HDNodeType) GetFingerprint() uint32 { 541 if m != nil && m.Fingerprint != nil { 542 return *m.Fingerprint 543 } 544 return 0 545 } 546 547 func (m *HDNodeType) GetChildNum() uint32 { 548 if m != nil && m.ChildNum != nil { 549 return *m.ChildNum 550 } 551 return 0 552 } 553 554 func (m *HDNodeType) GetChainCode() []byte { 555 if m != nil { 556 return m.ChainCode 557 } 558 return nil 559 } 560 561 func (m *HDNodeType) GetPrivateKey() []byte { 562 if m != nil { 563 return m.PrivateKey 564 } 565 return nil 566 } 567 568 func (m *HDNodeType) GetPublicKey() []byte { 569 if m != nil { 570 return m.PublicKey 571 } 572 return nil 573 } 574 575 type HDNodePathType struct { 576 Node *HDNodeType `protobuf:"bytes,1,req,name=node" json:"node,omitempty"` 577 AddressN []uint32 `protobuf:"varint,2,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 578 XXX_unrecognized []byte `json:"-"` 579 } 580 581 func (m *HDNodePathType) Reset() { *m = HDNodePathType{} } 582 func (m *HDNodePathType) String() string { return proto.CompactTextString(m) } 583 func (*HDNodePathType) ProtoMessage() {} 584 func (*HDNodePathType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } 585 586 func (m *HDNodePathType) GetNode() *HDNodeType { 587 if m != nil { 588 return m.Node 589 } 590 return nil 591 } 592 593 func (m *HDNodePathType) GetAddressN() []uint32 { 594 if m != nil { 595 return m.AddressN 596 } 597 return nil 598 } 599 600 // * 601 // Structure representing Coin 602 // @used_in Features 603 type CoinType struct { 604 CoinName *string `protobuf:"bytes,1,opt,name=coin_name,json=coinName" json:"coin_name,omitempty"` 605 CoinShortcut *string `protobuf:"bytes,2,opt,name=coin_shortcut,json=coinShortcut" json:"coin_shortcut,omitempty"` 606 AddressType *uint32 `protobuf:"varint,3,opt,name=address_type,json=addressType,def=0" json:"address_type,omitempty"` 607 MaxfeeKb *uint64 `protobuf:"varint,4,opt,name=maxfee_kb,json=maxfeeKb" json:"maxfee_kb,omitempty"` 608 AddressTypeP2Sh *uint32 `protobuf:"varint,5,opt,name=address_type_p2sh,json=addressTypeP2sh,def=5" json:"address_type_p2sh,omitempty"` 609 SignedMessageHeader *string `protobuf:"bytes,8,opt,name=signed_message_header,json=signedMessageHeader" json:"signed_message_header,omitempty"` 610 XpubMagic *uint32 `protobuf:"varint,9,opt,name=xpub_magic,json=xpubMagic,def=76067358" json:"xpub_magic,omitempty"` 611 XprvMagic *uint32 `protobuf:"varint,10,opt,name=xprv_magic,json=xprvMagic,def=76066276" json:"xprv_magic,omitempty"` 612 Segwit *bool `protobuf:"varint,11,opt,name=segwit" json:"segwit,omitempty"` 613 Forkid *uint32 `protobuf:"varint,12,opt,name=forkid" json:"forkid,omitempty"` 614 XXX_unrecognized []byte `json:"-"` 615 } 616 617 func (m *CoinType) Reset() { *m = CoinType{} } 618 func (m *CoinType) String() string { return proto.CompactTextString(m) } 619 func (*CoinType) ProtoMessage() {} 620 func (*CoinType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } 621 622 const Default_CoinType_AddressType uint32 = 0 623 const Default_CoinType_AddressTypeP2Sh uint32 = 5 624 const Default_CoinType_XpubMagic uint32 = 76067358 625 const Default_CoinType_XprvMagic uint32 = 76066276 626 627 func (m *CoinType) GetCoinName() string { 628 if m != nil && m.CoinName != nil { 629 return *m.CoinName 630 } 631 return "" 632 } 633 634 func (m *CoinType) GetCoinShortcut() string { 635 if m != nil && m.CoinShortcut != nil { 636 return *m.CoinShortcut 637 } 638 return "" 639 } 640 641 func (m *CoinType) GetAddressType() uint32 { 642 if m != nil && m.AddressType != nil { 643 return *m.AddressType 644 } 645 return Default_CoinType_AddressType 646 } 647 648 func (m *CoinType) GetMaxfeeKb() uint64 { 649 if m != nil && m.MaxfeeKb != nil { 650 return *m.MaxfeeKb 651 } 652 return 0 653 } 654 655 func (m *CoinType) GetAddressTypeP2Sh() uint32 { 656 if m != nil && m.AddressTypeP2Sh != nil { 657 return *m.AddressTypeP2Sh 658 } 659 return Default_CoinType_AddressTypeP2Sh 660 } 661 662 func (m *CoinType) GetSignedMessageHeader() string { 663 if m != nil && m.SignedMessageHeader != nil { 664 return *m.SignedMessageHeader 665 } 666 return "" 667 } 668 669 func (m *CoinType) GetXpubMagic() uint32 { 670 if m != nil && m.XpubMagic != nil { 671 return *m.XpubMagic 672 } 673 return Default_CoinType_XpubMagic 674 } 675 676 func (m *CoinType) GetXprvMagic() uint32 { 677 if m != nil && m.XprvMagic != nil { 678 return *m.XprvMagic 679 } 680 return Default_CoinType_XprvMagic 681 } 682 683 func (m *CoinType) GetSegwit() bool { 684 if m != nil && m.Segwit != nil { 685 return *m.Segwit 686 } 687 return false 688 } 689 690 func (m *CoinType) GetForkid() uint32 { 691 if m != nil && m.Forkid != nil { 692 return *m.Forkid 693 } 694 return 0 695 } 696 697 // * 698 // Type of redeem script used in input 699 // @used_in TxInputType 700 type MultisigRedeemScriptType struct { 701 Pubkeys []*HDNodePathType `protobuf:"bytes,1,rep,name=pubkeys" json:"pubkeys,omitempty"` 702 Signatures [][]byte `protobuf:"bytes,2,rep,name=signatures" json:"signatures,omitempty"` 703 M *uint32 `protobuf:"varint,3,opt,name=m" json:"m,omitempty"` 704 XXX_unrecognized []byte `json:"-"` 705 } 706 707 func (m *MultisigRedeemScriptType) Reset() { *m = MultisigRedeemScriptType{} } 708 func (m *MultisigRedeemScriptType) String() string { return proto.CompactTextString(m) } 709 func (*MultisigRedeemScriptType) ProtoMessage() {} 710 func (*MultisigRedeemScriptType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } 711 712 func (m *MultisigRedeemScriptType) GetPubkeys() []*HDNodePathType { 713 if m != nil { 714 return m.Pubkeys 715 } 716 return nil 717 } 718 719 func (m *MultisigRedeemScriptType) GetSignatures() [][]byte { 720 if m != nil { 721 return m.Signatures 722 } 723 return nil 724 } 725 726 func (m *MultisigRedeemScriptType) GetM() uint32 { 727 if m != nil && m.M != nil { 728 return *m.M 729 } 730 return 0 731 } 732 733 // * 734 // Structure representing transaction input 735 // @used_in SimpleSignTx 736 // @used_in TransactionType 737 type TxInputType struct { 738 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 739 PrevHash []byte `protobuf:"bytes,2,req,name=prev_hash,json=prevHash" json:"prev_hash,omitempty"` 740 PrevIndex *uint32 `protobuf:"varint,3,req,name=prev_index,json=prevIndex" json:"prev_index,omitempty"` 741 ScriptSig []byte `protobuf:"bytes,4,opt,name=script_sig,json=scriptSig" json:"script_sig,omitempty"` 742 Sequence *uint32 `protobuf:"varint,5,opt,name=sequence,def=4294967295" json:"sequence,omitempty"` 743 ScriptType *InputScriptType `protobuf:"varint,6,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` 744 Multisig *MultisigRedeemScriptType `protobuf:"bytes,7,opt,name=multisig" json:"multisig,omitempty"` 745 Amount *uint64 `protobuf:"varint,8,opt,name=amount" json:"amount,omitempty"` 746 XXX_unrecognized []byte `json:"-"` 747 } 748 749 func (m *TxInputType) Reset() { *m = TxInputType{} } 750 func (m *TxInputType) String() string { return proto.CompactTextString(m) } 751 func (*TxInputType) ProtoMessage() {} 752 func (*TxInputType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } 753 754 const Default_TxInputType_Sequence uint32 = 4294967295 755 const Default_TxInputType_ScriptType InputScriptType = InputScriptType_SPENDADDRESS 756 757 func (m *TxInputType) GetAddressN() []uint32 { 758 if m != nil { 759 return m.AddressN 760 } 761 return nil 762 } 763 764 func (m *TxInputType) GetPrevHash() []byte { 765 if m != nil { 766 return m.PrevHash 767 } 768 return nil 769 } 770 771 func (m *TxInputType) GetPrevIndex() uint32 { 772 if m != nil && m.PrevIndex != nil { 773 return *m.PrevIndex 774 } 775 return 0 776 } 777 778 func (m *TxInputType) GetScriptSig() []byte { 779 if m != nil { 780 return m.ScriptSig 781 } 782 return nil 783 } 784 785 func (m *TxInputType) GetSequence() uint32 { 786 if m != nil && m.Sequence != nil { 787 return *m.Sequence 788 } 789 return Default_TxInputType_Sequence 790 } 791 792 func (m *TxInputType) GetScriptType() InputScriptType { 793 if m != nil && m.ScriptType != nil { 794 return *m.ScriptType 795 } 796 return Default_TxInputType_ScriptType 797 } 798 799 func (m *TxInputType) GetMultisig() *MultisigRedeemScriptType { 800 if m != nil { 801 return m.Multisig 802 } 803 return nil 804 } 805 806 func (m *TxInputType) GetAmount() uint64 { 807 if m != nil && m.Amount != nil { 808 return *m.Amount 809 } 810 return 0 811 } 812 813 // * 814 // Structure representing transaction output 815 // @used_in SimpleSignTx 816 // @used_in TransactionType 817 type TxOutputType struct { 818 Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 819 AddressN []uint32 `protobuf:"varint,2,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 820 Amount *uint64 `protobuf:"varint,3,req,name=amount" json:"amount,omitempty"` 821 ScriptType *OutputScriptType `protobuf:"varint,4,req,name=script_type,json=scriptType,enum=OutputScriptType" json:"script_type,omitempty"` 822 Multisig *MultisigRedeemScriptType `protobuf:"bytes,5,opt,name=multisig" json:"multisig,omitempty"` 823 OpReturnData []byte `protobuf:"bytes,6,opt,name=op_return_data,json=opReturnData" json:"op_return_data,omitempty"` 824 XXX_unrecognized []byte `json:"-"` 825 } 826 827 func (m *TxOutputType) Reset() { *m = TxOutputType{} } 828 func (m *TxOutputType) String() string { return proto.CompactTextString(m) } 829 func (*TxOutputType) ProtoMessage() {} 830 func (*TxOutputType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } 831 832 func (m *TxOutputType) GetAddress() string { 833 if m != nil && m.Address != nil { 834 return *m.Address 835 } 836 return "" 837 } 838 839 func (m *TxOutputType) GetAddressN() []uint32 { 840 if m != nil { 841 return m.AddressN 842 } 843 return nil 844 } 845 846 func (m *TxOutputType) GetAmount() uint64 { 847 if m != nil && m.Amount != nil { 848 return *m.Amount 849 } 850 return 0 851 } 852 853 func (m *TxOutputType) GetScriptType() OutputScriptType { 854 if m != nil && m.ScriptType != nil { 855 return *m.ScriptType 856 } 857 return OutputScriptType_PAYTOADDRESS 858 } 859 860 func (m *TxOutputType) GetMultisig() *MultisigRedeemScriptType { 861 if m != nil { 862 return m.Multisig 863 } 864 return nil 865 } 866 867 func (m *TxOutputType) GetOpReturnData() []byte { 868 if m != nil { 869 return m.OpReturnData 870 } 871 return nil 872 } 873 874 // * 875 // Structure representing compiled transaction output 876 // @used_in TransactionType 877 type TxOutputBinType struct { 878 Amount *uint64 `protobuf:"varint,1,req,name=amount" json:"amount,omitempty"` 879 ScriptPubkey []byte `protobuf:"bytes,2,req,name=script_pubkey,json=scriptPubkey" json:"script_pubkey,omitempty"` 880 XXX_unrecognized []byte `json:"-"` 881 } 882 883 func (m *TxOutputBinType) Reset() { *m = TxOutputBinType{} } 884 func (m *TxOutputBinType) String() string { return proto.CompactTextString(m) } 885 func (*TxOutputBinType) ProtoMessage() {} 886 func (*TxOutputBinType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } 887 888 func (m *TxOutputBinType) GetAmount() uint64 { 889 if m != nil && m.Amount != nil { 890 return *m.Amount 891 } 892 return 0 893 } 894 895 func (m *TxOutputBinType) GetScriptPubkey() []byte { 896 if m != nil { 897 return m.ScriptPubkey 898 } 899 return nil 900 } 901 902 // * 903 // Structure representing transaction 904 // @used_in SimpleSignTx 905 type TransactionType struct { 906 Version *uint32 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"` 907 Inputs []*TxInputType `protobuf:"bytes,2,rep,name=inputs" json:"inputs,omitempty"` 908 BinOutputs []*TxOutputBinType `protobuf:"bytes,3,rep,name=bin_outputs,json=binOutputs" json:"bin_outputs,omitempty"` 909 Outputs []*TxOutputType `protobuf:"bytes,5,rep,name=outputs" json:"outputs,omitempty"` 910 LockTime *uint32 `protobuf:"varint,4,opt,name=lock_time,json=lockTime" json:"lock_time,omitempty"` 911 InputsCnt *uint32 `protobuf:"varint,6,opt,name=inputs_cnt,json=inputsCnt" json:"inputs_cnt,omitempty"` 912 OutputsCnt *uint32 `protobuf:"varint,7,opt,name=outputs_cnt,json=outputsCnt" json:"outputs_cnt,omitempty"` 913 ExtraData []byte `protobuf:"bytes,8,opt,name=extra_data,json=extraData" json:"extra_data,omitempty"` 914 ExtraDataLen *uint32 `protobuf:"varint,9,opt,name=extra_data_len,json=extraDataLen" json:"extra_data_len,omitempty"` 915 XXX_unrecognized []byte `json:"-"` 916 } 917 918 func (m *TransactionType) Reset() { *m = TransactionType{} } 919 func (m *TransactionType) String() string { return proto.CompactTextString(m) } 920 func (*TransactionType) ProtoMessage() {} 921 func (*TransactionType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } 922 923 func (m *TransactionType) GetVersion() uint32 { 924 if m != nil && m.Version != nil { 925 return *m.Version 926 } 927 return 0 928 } 929 930 func (m *TransactionType) GetInputs() []*TxInputType { 931 if m != nil { 932 return m.Inputs 933 } 934 return nil 935 } 936 937 func (m *TransactionType) GetBinOutputs() []*TxOutputBinType { 938 if m != nil { 939 return m.BinOutputs 940 } 941 return nil 942 } 943 944 func (m *TransactionType) GetOutputs() []*TxOutputType { 945 if m != nil { 946 return m.Outputs 947 } 948 return nil 949 } 950 951 func (m *TransactionType) GetLockTime() uint32 { 952 if m != nil && m.LockTime != nil { 953 return *m.LockTime 954 } 955 return 0 956 } 957 958 func (m *TransactionType) GetInputsCnt() uint32 { 959 if m != nil && m.InputsCnt != nil { 960 return *m.InputsCnt 961 } 962 return 0 963 } 964 965 func (m *TransactionType) GetOutputsCnt() uint32 { 966 if m != nil && m.OutputsCnt != nil { 967 return *m.OutputsCnt 968 } 969 return 0 970 } 971 972 func (m *TransactionType) GetExtraData() []byte { 973 if m != nil { 974 return m.ExtraData 975 } 976 return nil 977 } 978 979 func (m *TransactionType) GetExtraDataLen() uint32 { 980 if m != nil && m.ExtraDataLen != nil { 981 return *m.ExtraDataLen 982 } 983 return 0 984 } 985 986 // * 987 // Structure representing request details 988 // @used_in TxRequest 989 type TxRequestDetailsType struct { 990 RequestIndex *uint32 `protobuf:"varint,1,opt,name=request_index,json=requestIndex" json:"request_index,omitempty"` 991 TxHash []byte `protobuf:"bytes,2,opt,name=tx_hash,json=txHash" json:"tx_hash,omitempty"` 992 ExtraDataLen *uint32 `protobuf:"varint,3,opt,name=extra_data_len,json=extraDataLen" json:"extra_data_len,omitempty"` 993 ExtraDataOffset *uint32 `protobuf:"varint,4,opt,name=extra_data_offset,json=extraDataOffset" json:"extra_data_offset,omitempty"` 994 XXX_unrecognized []byte `json:"-"` 995 } 996 997 func (m *TxRequestDetailsType) Reset() { *m = TxRequestDetailsType{} } 998 func (m *TxRequestDetailsType) String() string { return proto.CompactTextString(m) } 999 func (*TxRequestDetailsType) ProtoMessage() {} 1000 func (*TxRequestDetailsType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } 1001 1002 func (m *TxRequestDetailsType) GetRequestIndex() uint32 { 1003 if m != nil && m.RequestIndex != nil { 1004 return *m.RequestIndex 1005 } 1006 return 0 1007 } 1008 1009 func (m *TxRequestDetailsType) GetTxHash() []byte { 1010 if m != nil { 1011 return m.TxHash 1012 } 1013 return nil 1014 } 1015 1016 func (m *TxRequestDetailsType) GetExtraDataLen() uint32 { 1017 if m != nil && m.ExtraDataLen != nil { 1018 return *m.ExtraDataLen 1019 } 1020 return 0 1021 } 1022 1023 func (m *TxRequestDetailsType) GetExtraDataOffset() uint32 { 1024 if m != nil && m.ExtraDataOffset != nil { 1025 return *m.ExtraDataOffset 1026 } 1027 return 0 1028 } 1029 1030 // * 1031 // Structure representing serialized data 1032 // @used_in TxRequest 1033 type TxRequestSerializedType struct { 1034 SignatureIndex *uint32 `protobuf:"varint,1,opt,name=signature_index,json=signatureIndex" json:"signature_index,omitempty"` 1035 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 1036 SerializedTx []byte `protobuf:"bytes,3,opt,name=serialized_tx,json=serializedTx" json:"serialized_tx,omitempty"` 1037 XXX_unrecognized []byte `json:"-"` 1038 } 1039 1040 func (m *TxRequestSerializedType) Reset() { *m = TxRequestSerializedType{} } 1041 func (m *TxRequestSerializedType) String() string { return proto.CompactTextString(m) } 1042 func (*TxRequestSerializedType) ProtoMessage() {} 1043 func (*TxRequestSerializedType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } 1044 1045 func (m *TxRequestSerializedType) GetSignatureIndex() uint32 { 1046 if m != nil && m.SignatureIndex != nil { 1047 return *m.SignatureIndex 1048 } 1049 return 0 1050 } 1051 1052 func (m *TxRequestSerializedType) GetSignature() []byte { 1053 if m != nil { 1054 return m.Signature 1055 } 1056 return nil 1057 } 1058 1059 func (m *TxRequestSerializedType) GetSerializedTx() []byte { 1060 if m != nil { 1061 return m.SerializedTx 1062 } 1063 return nil 1064 } 1065 1066 // * 1067 // Structure representing identity data 1068 // @used_in IdentityType 1069 type IdentityType struct { 1070 Proto *string `protobuf:"bytes,1,opt,name=proto" json:"proto,omitempty"` 1071 User *string `protobuf:"bytes,2,opt,name=user" json:"user,omitempty"` 1072 Host *string `protobuf:"bytes,3,opt,name=host" json:"host,omitempty"` 1073 Port *string `protobuf:"bytes,4,opt,name=port" json:"port,omitempty"` 1074 Path *string `protobuf:"bytes,5,opt,name=path" json:"path,omitempty"` 1075 Index *uint32 `protobuf:"varint,6,opt,name=index,def=0" json:"index,omitempty"` 1076 XXX_unrecognized []byte `json:"-"` 1077 } 1078 1079 func (m *IdentityType) Reset() { *m = IdentityType{} } 1080 func (m *IdentityType) String() string { return proto.CompactTextString(m) } 1081 func (*IdentityType) ProtoMessage() {} 1082 func (*IdentityType) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } 1083 1084 const Default_IdentityType_Index uint32 = 0 1085 1086 func (m *IdentityType) GetProto() string { 1087 if m != nil && m.Proto != nil { 1088 return *m.Proto 1089 } 1090 return "" 1091 } 1092 1093 func (m *IdentityType) GetUser() string { 1094 if m != nil && m.User != nil { 1095 return *m.User 1096 } 1097 return "" 1098 } 1099 1100 func (m *IdentityType) GetHost() string { 1101 if m != nil && m.Host != nil { 1102 return *m.Host 1103 } 1104 return "" 1105 } 1106 1107 func (m *IdentityType) GetPort() string { 1108 if m != nil && m.Port != nil { 1109 return *m.Port 1110 } 1111 return "" 1112 } 1113 1114 func (m *IdentityType) GetPath() string { 1115 if m != nil && m.Path != nil { 1116 return *m.Path 1117 } 1118 return "" 1119 } 1120 1121 func (m *IdentityType) GetIndex() uint32 { 1122 if m != nil && m.Index != nil { 1123 return *m.Index 1124 } 1125 return Default_IdentityType_Index 1126 } 1127 1128 var E_WireIn = &proto.ExtensionDesc{ 1129 ExtendedType: (*google_protobuf.EnumValueOptions)(nil), 1130 ExtensionType: (*bool)(nil), 1131 Field: 50002, 1132 Name: "wire_in", 1133 Tag: "varint,50002,opt,name=wire_in,json=wireIn", 1134 Filename: "types.proto", 1135 } 1136 1137 var E_WireOut = &proto.ExtensionDesc{ 1138 ExtendedType: (*google_protobuf.EnumValueOptions)(nil), 1139 ExtensionType: (*bool)(nil), 1140 Field: 50003, 1141 Name: "wire_out", 1142 Tag: "varint,50003,opt,name=wire_out,json=wireOut", 1143 Filename: "types.proto", 1144 } 1145 1146 var E_WireDebugIn = &proto.ExtensionDesc{ 1147 ExtendedType: (*google_protobuf.EnumValueOptions)(nil), 1148 ExtensionType: (*bool)(nil), 1149 Field: 50004, 1150 Name: "wire_debug_in", 1151 Tag: "varint,50004,opt,name=wire_debug_in,json=wireDebugIn", 1152 Filename: "types.proto", 1153 } 1154 1155 var E_WireDebugOut = &proto.ExtensionDesc{ 1156 ExtendedType: (*google_protobuf.EnumValueOptions)(nil), 1157 ExtensionType: (*bool)(nil), 1158 Field: 50005, 1159 Name: "wire_debug_out", 1160 Tag: "varint,50005,opt,name=wire_debug_out,json=wireDebugOut", 1161 Filename: "types.proto", 1162 } 1163 1164 var E_WireTiny = &proto.ExtensionDesc{ 1165 ExtendedType: (*google_protobuf.EnumValueOptions)(nil), 1166 ExtensionType: (*bool)(nil), 1167 Field: 50006, 1168 Name: "wire_tiny", 1169 Tag: "varint,50006,opt,name=wire_tiny,json=wireTiny", 1170 Filename: "types.proto", 1171 } 1172 1173 var E_WireBootloader = &proto.ExtensionDesc{ 1174 ExtendedType: (*google_protobuf.EnumValueOptions)(nil), 1175 ExtensionType: (*bool)(nil), 1176 Field: 50007, 1177 Name: "wire_bootloader", 1178 Tag: "varint,50007,opt,name=wire_bootloader,json=wireBootloader", 1179 Filename: "types.proto", 1180 } 1181 1182 func init() { 1183 proto.RegisterType((*HDNodeType)(nil), "HDNodeType") 1184 proto.RegisterType((*HDNodePathType)(nil), "HDNodePathType") 1185 proto.RegisterType((*CoinType)(nil), "CoinType") 1186 proto.RegisterType((*MultisigRedeemScriptType)(nil), "MultisigRedeemScriptType") 1187 proto.RegisterType((*TxInputType)(nil), "TxInputType") 1188 proto.RegisterType((*TxOutputType)(nil), "TxOutputType") 1189 proto.RegisterType((*TxOutputBinType)(nil), "TxOutputBinType") 1190 proto.RegisterType((*TransactionType)(nil), "TransactionType") 1191 proto.RegisterType((*TxRequestDetailsType)(nil), "TxRequestDetailsType") 1192 proto.RegisterType((*TxRequestSerializedType)(nil), "TxRequestSerializedType") 1193 proto.RegisterType((*IdentityType)(nil), "IdentityType") 1194 proto.RegisterEnum("FailureType", FailureType_name, FailureType_value) 1195 proto.RegisterEnum("OutputScriptType", OutputScriptType_name, OutputScriptType_value) 1196 proto.RegisterEnum("InputScriptType", InputScriptType_name, InputScriptType_value) 1197 proto.RegisterEnum("RequestType", RequestType_name, RequestType_value) 1198 proto.RegisterEnum("ButtonRequestType", ButtonRequestType_name, ButtonRequestType_value) 1199 proto.RegisterEnum("PinMatrixRequestType", PinMatrixRequestType_name, PinMatrixRequestType_value) 1200 proto.RegisterEnum("RecoveryDeviceType", RecoveryDeviceType_name, RecoveryDeviceType_value) 1201 proto.RegisterEnum("WordRequestType", WordRequestType_name, WordRequestType_value) 1202 proto.RegisterExtension(E_WireIn) 1203 proto.RegisterExtension(E_WireOut) 1204 proto.RegisterExtension(E_WireDebugIn) 1205 proto.RegisterExtension(E_WireDebugOut) 1206 proto.RegisterExtension(E_WireTiny) 1207 proto.RegisterExtension(E_WireBootloader) 1208 } 1209 1210 func init() { proto.RegisterFile("types.proto", fileDescriptor0) } 1211 1212 var fileDescriptor0 = []byte{ 1213 // 1899 bytes of a gzipped FileDescriptorProto 1214 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x57, 0xdb, 0x72, 0x1a, 0xc9, 1215 0x19, 0xf6, 0x00, 0x92, 0xe0, 0x07, 0xc4, 0xa8, 0x7d, 0xd0, 0x78, 0x6d, 0xaf, 0x31, 0x76, 0x62, 1216 0x45, 0x55, 0x61, 0x77, 0xc9, 0x5a, 0x8e, 0x55, 0xa9, 0x24, 0x3a, 0xa0, 0x15, 0x65, 0x0b, 0x51, 1217 0xc3, 0x28, 0x56, 0x72, 0x33, 0x35, 0xcc, 0xb4, 0xa0, 0x4b, 0x43, 0x37, 0xe9, 0xe9, 0x91, 0xd1, 1218 0xde, 0xe4, 0x2a, 0xc9, 0x55, 0x5e, 0x23, 0x6f, 0x91, 0xaa, 0xbc, 0x41, 0xaa, 0x36, 0xa7, 0xcb, 1219 0xbc, 0x41, 0xae, 0xf2, 0x00, 0xa9, 0x3e, 0x0c, 0x02, 0xc9, 0xde, 0xd2, 0x1d, 0xfd, 0x7d, 0xff, 1220 0xf9, 0xd0, 0x3d, 0x40, 0x59, 0x5c, 0x4e, 0x70, 0xd2, 0x9c, 0x70, 0x26, 0xd8, 0x67, 0xf5, 0x21, 1221 0x63, 0xc3, 0x18, 0x7f, 0xa1, 0x4e, 0x83, 0xf4, 0xec, 0x8b, 0x08, 0x27, 0x21, 0x27, 0x13, 0xc1, 1222 0xb8, 0x96, 0x68, 0xfc, 0xd5, 0x02, 0x38, 0xdc, 0xef, 0xb2, 0x08, 0x7b, 0x97, 0x13, 0x8c, 0xee, 1223 0xc1, 0x52, 0x84, 0x27, 0x62, 0xe4, 0x58, 0xf5, 0xdc, 0x46, 0xd5, 0xd5, 0x07, 0x54, 0x87, 0xf2, 1224 0x19, 0xa1, 0x43, 0xcc, 0x27, 0x9c, 0x50, 0xe1, 0xe4, 0x14, 0x37, 0x0f, 0xa1, 0x47, 0x50, 0x0a, 1225 0x47, 0x24, 0x8e, 0x7c, 0x9a, 0x8e, 0x9d, 0xbc, 0xe2, 0x8b, 0x0a, 0xe8, 0xa6, 0x63, 0xf4, 0x04, 1226 0x20, 0x1c, 0x05, 0x84, 0xfa, 0x21, 0x8b, 0xb0, 0x53, 0xa8, 0xe7, 0x36, 0x2a, 0x6e, 0x49, 0x21, 1227 0x7b, 0x2c, 0xc2, 0xe8, 0x29, 0x94, 0x27, 0x9c, 0x5c, 0x04, 0x02, 0xfb, 0xe7, 0xf8, 0xd2, 0x59, 1228 0xaa, 0x5b, 0x1b, 0x15, 0x17, 0x0c, 0xf4, 0x16, 0x5f, 0x4a, 0xfd, 0x49, 0x3a, 0x88, 0x49, 0xa8, 1229 0xf8, 0x65, 0xc5, 0x97, 0x34, 0xf2, 0x16, 0x5f, 0x36, 0xba, 0xb0, 0xaa, 0x33, 0xe8, 0x05, 0x62, 1230 0xa4, 0xb2, 0x78, 0x0a, 0x05, 0x2a, 0x5d, 0xc9, 0x24, 0xca, 0xad, 0x72, 0xf3, 0x2a, 0x41, 0x57, 1231 0x11, 0x32, 0xdc, 0x20, 0x8a, 0x38, 0x4e, 0x12, 0x9f, 0x3a, 0xb9, 0x7a, 0x5e, 0x86, 0x6b, 0x80, 1232 0x6e, 0xe3, 0x7f, 0x39, 0x28, 0xee, 0x31, 0x42, 0x95, 0x29, 0x99, 0x18, 0x23, 0xd4, 0xa7, 0xc1, 1233 0x58, 0xda, 0xb3, 0x36, 0x4a, 0x6e, 0x51, 0x02, 0xdd, 0x60, 0x8c, 0xd1, 0x73, 0xa8, 0x2a, 0x32, 1234 0x19, 0x31, 0x2e, 0xc2, 0x54, 0x56, 0x46, 0x0a, 0x54, 0x24, 0xd8, 0x37, 0x18, 0x7a, 0x01, 0x95, 1235 0xcc, 0x97, 0x6c, 0x8d, 0x93, 0xaf, 0x5b, 0x1b, 0xd5, 0x6d, 0xeb, 0x4b, 0xb7, 0x6c, 0xe0, 0xcc, 1236 0xcf, 0x38, 0x98, 0x9e, 0x61, 0xec, 0x9f, 0x0f, 0x9c, 0x42, 0xdd, 0xda, 0x28, 0xb8, 0x45, 0x0d, 1237 0xbc, 0x1d, 0xa0, 0x1f, 0xc3, 0xda, 0xbc, 0x09, 0x7f, 0xd2, 0x4a, 0x46, 0xaa, 0x4e, 0xd5, 0x6d, 1238 0xeb, 0x95, 0x5b, 0x9b, 0xb3, 0xd3, 0x6b, 0x25, 0x23, 0xd4, 0x82, 0xfb, 0x09, 0x19, 0x52, 0x1c, 1239 0xf9, 0x63, 0x9c, 0x24, 0xc1, 0x10, 0xfb, 0x23, 0x1c, 0x44, 0x98, 0x3b, 0x45, 0x15, 0xde, 0x5d, 1240 0x4d, 0x1e, 0x69, 0xee, 0x50, 0x51, 0xe8, 0x25, 0xc0, 0x74, 0x92, 0x0e, 0xfc, 0x71, 0x30, 0x24, 1241 0xa1, 0x53, 0x52, 0xb6, 0x8b, 0xaf, 0xb7, 0xbe, 0xdc, 0x7a, 0xfd, 0x93, 0x57, 0x3f, 0x75, 0x4b, 1242 0x92, 0x3b, 0x92, 0x94, 0x16, 0xe4, 0x17, 0x46, 0x10, 0xae, 0x04, 0xb7, 0x5a, 0xaf, 0xb7, 0xa4, 1243 0x20, 0xbf, 0xd0, 0x82, 0x0f, 0x60, 0x39, 0xc1, 0xc3, 0x0f, 0x44, 0x38, 0xe5, 0xba, 0xb5, 0x51, 1244 0x74, 0xcd, 0x49, 0xe2, 0x67, 0x8c, 0x9f, 0x93, 0xc8, 0xa9, 0x48, 0x65, 0xd7, 0x9c, 0x1a, 0x09, 1245 0x38, 0x47, 0x69, 0x2c, 0x48, 0x42, 0x86, 0x2e, 0x8e, 0x30, 0x1e, 0xf7, 0xd5, 0xa4, 0xaa, 0xea, 1246 0xfc, 0x08, 0x56, 0x26, 0xe9, 0xe0, 0x1c, 0x5f, 0x26, 0x8e, 0x55, 0xcf, 0x6f, 0x94, 0x5b, 0xb5, 1247 0xe6, 0x62, 0xcb, 0xdd, 0x8c, 0x47, 0x9f, 0x03, 0xc8, 0xfc, 0x02, 0x91, 0x72, 0x9c, 0xa8, 0xde, 1248 0x56, 0xdc, 0x39, 0x04, 0x55, 0xc0, 0x1a, 0xeb, 0x1e, 0xb8, 0xd6, 0xb8, 0xf1, 0x97, 0x1c, 0x94, 1249 0xbd, 0x69, 0x87, 0x4e, 0x52, 0x91, 0xb5, 0xe1, 0x6a, 0x30, 0xac, 0xc5, 0xc1, 0x90, 0xe4, 0x84, 1250 0xe3, 0x0b, 0x7f, 0x14, 0x24, 0x23, 0xb5, 0x04, 0x15, 0xb7, 0x28, 0x81, 0xc3, 0x20, 0x19, 0xa9, 1251 0x21, 0x95, 0x24, 0xa1, 0x11, 0x9e, 0x9a, 0x15, 0x50, 0xe2, 0x1d, 0x09, 0x48, 0x5a, 0x6f, 0x9e, 1252 0x9f, 0x90, 0xa1, 0x6a, 0x70, 0xc5, 0x2d, 0x69, 0xa4, 0x4f, 0x86, 0xe8, 0x87, 0x50, 0x4c, 0xf0, 1253 0x6f, 0x53, 0x4c, 0x43, 0x6c, 0x1a, 0x0b, 0x5f, 0xb7, 0xde, 0x7c, 0xfd, 0x66, 0xeb, 0x75, 0xeb, 1254 0xcd, 0x2b, 0x77, 0xc6, 0xa1, 0x5f, 0x40, 0xd9, 0x98, 0x51, 0xb3, 0x24, 0x77, 0x61, 0xb5, 0x65, 1255 0x37, 0x55, 0x02, 0x57, 0xf5, 0xda, 0xae, 0xf4, 0x7b, 0xed, 0xee, 0xfe, 0xce, 0xfe, 0xbe, 0xdb, 1256 0xee, 0xf7, 0x5d, 0xe3, 0x59, 0x25, 0xf8, 0x0a, 0x8a, 0x63, 0x53, 0x65, 0x67, 0xa5, 0x6e, 0x6d, 1257 0x94, 0x5b, 0x0f, 0x9b, 0x9f, 0x2a, 0xbb, 0x3b, 0x13, 0x95, 0x4d, 0x0b, 0xc6, 0x2c, 0xa5, 0x42, 1258 0xcd, 0x50, 0xc1, 0x35, 0xa7, 0xc6, 0x7f, 0x2d, 0xa8, 0x78, 0xd3, 0xe3, 0x54, 0x64, 0x05, 0x74, 1259 0x60, 0xc5, 0xd4, 0xcb, 0x6c, 0x4b, 0x76, 0xfc, 0xde, 0x9d, 0x9b, 0xb3, 0x2f, 0x2b, 0x37, 0xb3, 1260 0x8f, 0x5a, 0x8b, 0xf9, 0xca, 0xbb, 0x63, 0xb5, 0xb5, 0xd6, 0xd4, 0x0e, 0xe7, 0x22, 0xfd, 0x54, 1261 0x8a, 0x4b, 0xb7, 0x4f, 0xf1, 0x05, 0xac, 0xb2, 0x89, 0xcf, 0xb1, 0x48, 0x39, 0xf5, 0xa3, 0x40, 1262 0x04, 0xe6, 0xa6, 0xa9, 0xb0, 0x89, 0xab, 0xc0, 0xfd, 0x40, 0x04, 0x8d, 0x2e, 0xd4, 0xb2, 0x7c, 1263 0x77, 0xcd, 0x15, 0x71, 0x15, 0xbb, 0xb5, 0x10, 0xfb, 0x73, 0xa8, 0x9a, 0xd8, 0xf5, 0x6c, 0x9a, 1264 0x91, 0xa9, 0x68, 0xb0, 0xa7, 0xb0, 0xc6, 0xdf, 0x72, 0x50, 0xf3, 0x78, 0x40, 0x93, 0x20, 0x14, 1265 0x84, 0xd1, 0xac, 0x86, 0x17, 0x98, 0x27, 0x84, 0x51, 0x55, 0xc3, 0xaa, 0x9b, 0x1d, 0xd1, 0x0b, 1266 0x58, 0x26, 0xb2, 0xd5, 0x7a, 0xb0, 0xcb, 0xad, 0x4a, 0x73, 0x6e, 0x78, 0x5d, 0xc3, 0xa1, 0xaf, 1267 0xa0, 0x3c, 0x20, 0xd4, 0x67, 0x2a, 0xca, 0xc4, 0xc9, 0x2b, 0x51, 0xbb, 0x79, 0x2d, 0x6e, 0x17, 1268 0x06, 0x84, 0x6a, 0x24, 0x41, 0x2f, 0x61, 0x25, 0x13, 0x5f, 0x52, 0xe2, 0xd5, 0xe6, 0x7c, 0x5b, 1269 0xdd, 0x8c, 0x95, 0x5d, 0x8c, 0x59, 0x78, 0xee, 0x0b, 0x32, 0xc6, 0x6a, 0x8c, 0xab, 0x6e, 0x51, 1270 0x02, 0x1e, 0x19, 0x63, 0x39, 0xe4, 0x3a, 0x04, 0x3f, 0xa4, 0x42, 0x95, 0xaf, 0xea, 0x96, 0x34, 1271 0xb2, 0x47, 0x85, 0xbc, 0xe8, 0x8d, 0x19, 0xc5, 0xaf, 0x28, 0x1e, 0x0c, 0x24, 0x05, 0x9e, 0x00, 1272 0xe0, 0xa9, 0xe0, 0x81, 0x2e, 0x7f, 0x51, 0x2f, 0x89, 0x42, 0x64, 0xed, 0x65, 0x87, 0xae, 0x68, 1273 0x3f, 0xc6, 0x54, 0xdf, 0x53, 0x6e, 0x65, 0x26, 0xf2, 0x0e, 0xd3, 0xc6, 0x9f, 0x2d, 0xb8, 0xe7, 1274 0x4d, 0x5d, 0xb9, 0x31, 0x89, 0xd8, 0xc7, 0x22, 0x20, 0xb1, 0xbe, 0x62, 0x9f, 0x43, 0x95, 0x6b, 1275 0xd4, 0x2c, 0xa9, 0x2e, 0x6e, 0xc5, 0x80, 0x7a, 0x4f, 0xd7, 0x61, 0x45, 0x4c, 0xb3, 0x0d, 0x97, 1276 0xfe, 0x97, 0xc5, 0x54, 0xed, 0xf7, 0x4d, 0xe7, 0xf9, 0x9b, 0xce, 0xd1, 0x26, 0xac, 0xcd, 0x49, 1277 0xb1, 0xb3, 0xb3, 0x04, 0x0b, 0x53, 0xa6, 0xda, 0x4c, 0xf0, 0x58, 0xc1, 0x8d, 0xdf, 0x5b, 0xb0, 1278 0x3e, 0x0b, 0xb4, 0x8f, 0x39, 0x09, 0x62, 0xf2, 0x2d, 0x8e, 0x54, 0xac, 0x2f, 0xa1, 0x36, 0xbb, 1279 0xb3, 0x16, 0xa2, 0x5d, 0x9d, 0xc1, 0x3a, 0xde, 0xc7, 0x50, 0x9a, 0x21, 0x26, 0xe2, 0x2b, 0x40, 1280 0x8d, 0xe0, 0xcc, 0xb0, 0x2f, 0xa6, 0x2a, 0x66, 0x39, 0x82, 0x57, 0xde, 0xa6, 0x8d, 0x3f, 0x59, 1281 0x50, 0xe9, 0x44, 0x98, 0x0a, 0x22, 0x2e, 0xb3, 0x8f, 0x00, 0xf5, 0x71, 0x60, 0x36, 0x58, 0x1f, 1282 0x10, 0x82, 0x42, 0x9a, 0x60, 0x6e, 0xde, 0x38, 0xf5, 0x5b, 0x62, 0x23, 0x96, 0x08, 0x65, 0xb6, 1283 0xe4, 0xaa, 0xdf, 0x12, 0x9b, 0x30, 0xae, 0xb3, 0x2e, 0xb9, 0xea, 0xb7, 0xc2, 0x02, 0xa1, 0xdf, 1284 0x2c, 0x89, 0x05, 0x62, 0x84, 0xd6, 0x61, 0x49, 0x27, 0xb6, 0x9c, 0x3d, 0x88, 0xfa, 0xbc, 0xf9, 1285 0x5d, 0x0e, 0xca, 0x07, 0x01, 0x89, 0x53, 0xae, 0xbf, 0x49, 0x9e, 0xc0, 0x43, 0x73, 0xf4, 0x4f, 1286 0x28, 0x9e, 0x4e, 0x70, 0x28, 0x66, 0xaf, 0x97, 0x6d, 0xa1, 0xcf, 0xe0, 0x41, 0x46, 0xef, 0xa6, 1287 0x42, 0x30, 0xda, 0x36, 0x22, 0x76, 0x0e, 0xdd, 0x87, 0xb5, 0x8c, 0x93, 0x85, 0x6f, 0x73, 0xce, 1288 0xb8, 0x9d, 0x47, 0x8f, 0x60, 0x3d, 0x83, 0x77, 0xd4, 0xda, 0xed, 0x05, 0x34, 0xc4, 0x71, 0x8c, 1289 0x23, 0xbb, 0x80, 0xd6, 0xe1, 0x6e, 0x46, 0xf6, 0xc8, 0x95, 0xb1, 0x25, 0xe4, 0xc0, 0xbd, 0x39, 1290 0xe2, 0x4a, 0x65, 0x19, 0x3d, 0x00, 0x34, 0xc7, 0x74, 0xe8, 0x45, 0x10, 0x93, 0xc8, 0x5e, 0x41, 1291 0x8f, 0xc1, 0xc9, 0x70, 0x03, 0xf6, 0xb3, 0xd6, 0xd8, 0xc5, 0x05, 0x7b, 0x9c, 0x85, 0x38, 0x49, 1292 0x74, 0x7c, 0xa5, 0xf9, 0x94, 0xba, 0x4c, 0xb4, 0x29, 0x4b, 0x87, 0xa3, 0x83, 0x94, 0x46, 0x89, 1293 0x0d, 0xd7, 0xb8, 0x0e, 0x25, 0xc2, 0x74, 0xd2, 0x2e, 0xa3, 0x87, 0x70, 0x3f, 0xe3, 0x0e, 0x08, 1294 0x1f, 0x7f, 0x08, 0x38, 0xd6, 0x26, 0xc3, 0xcd, 0x3f, 0x5a, 0x60, 0x5f, 0xbf, 0x35, 0x91, 0x0d, 1295 0x95, 0xde, 0xce, 0xaf, 0xbd, 0x63, 0xf3, 0x50, 0xd8, 0x77, 0xd0, 0x5d, 0xa8, 0x29, 0xa4, 0xbf, 1296 0xe7, 0x76, 0x7a, 0xde, 0xe1, 0x4e, 0xff, 0xd0, 0xb6, 0xd0, 0x1a, 0x54, 0x15, 0x78, 0x74, 0xf2, 1297 0xce, 0xeb, 0xf4, 0x3b, 0xdf, 0xd8, 0xb9, 0x19, 0x74, 0xdc, 0x73, 0xdb, 0xde, 0x89, 0xdb, 0xb5, 1298 0xf3, 0x33, 0x63, 0xef, 0x3b, 0x5e, 0x57, 0x1a, 0x2b, 0xa0, 0x7b, 0x60, 0x2b, 0xa4, 0xd7, 0xea, 1299 0x1f, 0x66, 0xe8, 0xd2, 0x66, 0x0c, 0xb5, 0x6b, 0xcf, 0x95, 0x54, 0x9d, 0x7f, 0xb0, 0xec, 0x3b, 1300 0xd2, 0xbe, 0x42, 0x66, 0x2e, 0x2d, 0x54, 0x81, 0x62, 0xfb, 0xd4, 0x6b, 0xbb, 0xdd, 0x9d, 0x77, 1301 0x76, 0x6e, 0xa6, 0x92, 0xd9, 0xcd, 0x4b, 0x6f, 0x0a, 0x99, 0xf7, 0x56, 0xd8, 0x3c, 0x81, 0xb2, 1302 0xd9, 0x30, 0xe5, 0xa9, 0x0c, 0x2b, 0xde, 0x69, 0xa7, 0xdb, 0x3b, 0xf1, 0xec, 0x3b, 0xd2, 0xa2, 1303 0x77, 0x7a, 0x7c, 0xe2, 0xc9, 0x93, 0x85, 0x00, 0x96, 0xbd, 0xd3, 0xa3, 0xb6, 0xb7, 0x63, 0xe7, 1304 0xd0, 0x2a, 0x80, 0x77, 0x7a, 0xd0, 0xe9, 0x76, 0xfa, 0x87, 0xed, 0x7d, 0x3b, 0x8f, 0x6a, 0x50, 1305 0xf6, 0x4e, 0xdb, 0xa7, 0x9e, 0xbb, 0xb3, 0xbf, 0xe3, 0xed, 0xd8, 0x85, 0xcd, 0xff, 0xe4, 0x60, 1306 0x4d, 0x4f, 0xdb, 0xbc, 0xf5, 0x75, 0xb8, 0xbb, 0x00, 0xfa, 0xc7, 0x62, 0x84, 0xb9, 0x6d, 0xa1, 1307 0x06, 0x7c, 0xbe, 0x48, 0x1c, 0x60, 0x7c, 0x7c, 0x81, 0xb9, 0x37, 0xe2, 0x38, 0x19, 0xb1, 0x58, 1308 0xce, 0xea, 0x53, 0x78, 0xb4, 0x28, 0xb3, 0xc7, 0xe8, 0x19, 0xe1, 0x63, 0xdd, 0x35, 0x3b, 0x2f, 1309 0xf7, 0x60, 0x51, 0xc0, 0xc5, 0x09, 0x16, 0xfb, 0xf8, 0x82, 0x84, 0xd8, 0x2e, 0xdc, 0xa4, 0x8d, 1310 0xfe, 0x7b, 0xc6, 0xe5, 0xf4, 0x3e, 0x06, 0x67, 0x91, 0x7e, 0x4f, 0x26, 0xd8, 0x28, 0x2f, 0xdf, 1311 0x54, 0xee, 0x71, 0x26, 0x70, 0x28, 0xf6, 0x82, 0x38, 0xb6, 0x57, 0xe4, 0xa8, 0x2e, 0xd2, 0x72, 1312 0x8e, 0xbd, 0xa9, 0x5d, 0xbc, 0x19, 0x75, 0x36, 0x78, 0x7b, 0x23, 0x1c, 0x9e, 0xdb, 0x25, 0x39, 1313 0x93, 0x8b, 0x02, 0x3b, 0xfa, 0xcd, 0xb7, 0x41, 0xae, 0xe1, 0x35, 0xa7, 0xd9, 0x37, 0xbd, 0x5d, 1314 0xde, 0xfc, 0x1d, 0xdc, 0xeb, 0x11, 0x7a, 0x14, 0x08, 0x4e, 0xa6, 0xf3, 0x35, 0xae, 0xc3, 0xe3, 1315 0x8f, 0xe1, 0xfe, 0x5e, 0xca, 0x39, 0xa6, 0xc2, 0xb6, 0xd0, 0x33, 0x78, 0xf2, 0x51, 0x89, 0x2e, 1316 0xfe, 0x70, 0x40, 0x78, 0x22, 0xec, 0x9c, 0xec, 0xc7, 0xa7, 0x44, 0xfa, 0x38, 0x64, 0x34, 0xb2, 1317 0xf3, 0x9b, 0xbf, 0x01, 0xe4, 0xe2, 0x90, 0x5d, 0x60, 0x7e, 0xa9, 0xcb, 0xa4, 0xdc, 0xff, 0x00, 1318 0x9e, 0xdd, 0x44, 0xfd, 0x7e, 0xc8, 0x83, 0xf1, 0x20, 0xc6, 0x91, 0x2c, 0x76, 0x62, 0xdf, 0x91, 1319 0xf5, 0xfc, 0x88, 0x98, 0x76, 0x68, 0x5b, 0x9b, 0x67, 0x50, 0x93, 0x92, 0xf3, 0x79, 0x3d, 0x84, 1320 0xfb, 0xd7, 0x20, 0xbf, 0x17, 0x07, 0x84, 0xda, 0x77, 0x64, 0x9d, 0xae, 0x53, 0xda, 0xd2, 0x1b, 1321 0xdb, 0xfa, 0x34, 0xb9, 0x65, 0xe7, 0xb6, 0x7f, 0x06, 0x2b, 0x1f, 0x88, 0x7a, 0x41, 0xd0, 0xb3, 1322 0xa6, 0xfe, 0x2f, 0xd8, 0xcc, 0xfe, 0x0b, 0x36, 0xdb, 0x34, 0x1d, 0xff, 0x2a, 0x88, 0x53, 0x7c, 1323 0x3c, 0x91, 0x77, 0x60, 0xe2, 0x7c, 0xf7, 0x87, 0xbc, 0xfe, 0x52, 0x97, 0x3a, 0x1d, 0xba, 0xfd, 1324 0x73, 0x28, 0x2a, 0x6d, 0x96, 0x8a, 0xdb, 0xa8, 0xff, 0xdd, 0xa8, 0x2b, 0x97, 0xc7, 0xa9, 0xd8, 1325 0xfe, 0x06, 0xaa, 0x4a, 0x3f, 0xc2, 0x83, 0x74, 0x78, 0xcb, 0x18, 0xfe, 0x61, 0x8c, 0x94, 0xa5, 1326 0xe6, 0xbe, 0x54, 0xec, 0xd0, 0xed, 0x0e, 0xac, 0xce, 0x19, 0xba, 0x65, 0x38, 0xff, 0x34, 0x96, 1327 0x2a, 0x33, 0x4b, 0x32, 0xa6, 0x5f, 0x42, 0x49, 0x99, 0x12, 0x84, 0x5e, 0xde, 0xc6, 0xca, 0xbf, 1328 0x8c, 0x15, 0x55, 0x09, 0x8f, 0xd0, 0xcb, 0xed, 0x77, 0x50, 0x53, 0x16, 0x06, 0x8c, 0x89, 0x98, 1329 0xa9, 0x3f, 0x4f, 0xb7, 0xb0, 0xf3, 0x6f, 0x63, 0x47, 0x25, 0xb2, 0x3b, 0x53, 0xdd, 0xfd, 0x0a, 1330 0x9e, 0x87, 0x6c, 0xdc, 0x4c, 0x02, 0xc1, 0x92, 0x11, 0x89, 0x83, 0x41, 0xd2, 0x14, 0x1c, 0x7f, 1331 0xcb, 0x78, 0x33, 0x26, 0x83, 0x99, 0xbd, 0x5d, 0xf0, 0x14, 0x28, 0xdb, 0xfb, 0xff, 0x00, 0x00, 1332 0x00, 0xff, 0xff, 0x70, 0x88, 0xcd, 0x71, 0xe2, 0x0f, 0x00, 0x00, 1333 }