github.com/inklabsfoundation/inkchain@v0.17.1-0.20181025012015-c3cef8062f19/protos/peer/transaction.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // source: peer/transaction.proto
     3  
     4  package peer
     5  
     6  import proto "github.com/golang/protobuf/proto"
     7  import fmt "fmt"
     8  import math "math"
     9  import _ "github.com/golang/protobuf/ptypes/timestamp"
    10  import common "github.com/inklabsfoundation/inkchain/protos/common"
    11  
    12  // Reference imports to suppress errors if they are not otherwise used.
    13  var _ = proto.Marshal
    14  var _ = fmt.Errorf
    15  var _ = math.Inf
    16  
    17  type TxValidationCode int32
    18  
    19  const (
    20  	TxValidationCode_VALID                        TxValidationCode = 0
    21  	TxValidationCode_NIL_ENVELOPE                 TxValidationCode = 1
    22  	TxValidationCode_BAD_PAYLOAD                  TxValidationCode = 2
    23  	TxValidationCode_BAD_COMMON_HEADER            TxValidationCode = 3
    24  	TxValidationCode_BAD_CREATOR_SIGNATURE        TxValidationCode = 4
    25  	TxValidationCode_INVALID_ENDORSER_TRANSACTION TxValidationCode = 5
    26  	TxValidationCode_INVALID_CONFIG_TRANSACTION   TxValidationCode = 6
    27  	TxValidationCode_UNSUPPORTED_TX_PAYLOAD       TxValidationCode = 7
    28  	TxValidationCode_BAD_PROPOSAL_TXID            TxValidationCode = 8
    29  	TxValidationCode_DUPLICATE_TXID               TxValidationCode = 9
    30  	TxValidationCode_ENDORSEMENT_POLICY_FAILURE   TxValidationCode = 10
    31  	TxValidationCode_MVCC_READ_CONFLICT           TxValidationCode = 11
    32  	TxValidationCode_PHANTOM_READ_CONFLICT        TxValidationCode = 12
    33  	TxValidationCode_UNKNOWN_TX_TYPE              TxValidationCode = 13
    34  	TxValidationCode_TARGET_CHAIN_NOT_FOUND       TxValidationCode = 14
    35  	TxValidationCode_MARSHAL_TX_ERROR             TxValidationCode = 15
    36  	TxValidationCode_NIL_TXACTION                 TxValidationCode = 16
    37  	TxValidationCode_EXPIRED_CHAINCODE            TxValidationCode = 17
    38  	TxValidationCode_CHAINCODE_VERSION_CONFLICT   TxValidationCode = 18
    39  	TxValidationCode_BAD_HEADER_EXTENSION         TxValidationCode = 19
    40  	TxValidationCode_BAD_CHANNEL_HEADER           TxValidationCode = 20
    41  	TxValidationCode_BAD_RESPONSE_PAYLOAD         TxValidationCode = 21
    42  	TxValidationCode_BAD_RWSET                    TxValidationCode = 22
    43  	TxValidationCode_ILLEGAL_WRITESET             TxValidationCode = 23
    44  	TxValidationCode_TRANSFER_CONFLICT            TxValidationCode = 100
    45  	TxValidationCode_BAD_COUNTER                  TxValidationCode = 101
    46  	TxValidationCode_BAD_SIGNATURE                TxValidationCode = 102
    47  	TxValidationCode_BAD_BALANCE                  TxValidationCode = 103
    48  	TxValidationCode_EXCEED_BALANCE               TxValidationCode = 104
    49  	TxValidationCode_INVALID_OTHER_REASON         TxValidationCode = 255
    50  	TxValidationCode_BAD_TOKEN_TYPE               TxValidationCode = 355
    51  	TxValidationCode_BAD_TOKEN_ADDR               TxValidationCode = 356
    52  )
    53  
    54  var TxValidationCode_name = map[int32]string{
    55  	0:   "VALID",
    56  	1:   "NIL_ENVELOPE",
    57  	2:   "BAD_PAYLOAD",
    58  	3:   "BAD_COMMON_HEADER",
    59  	4:   "BAD_CREATOR_SIGNATURE",
    60  	5:   "INVALID_ENDORSER_TRANSACTION",
    61  	6:   "INVALID_CONFIG_TRANSACTION",
    62  	7:   "UNSUPPORTED_TX_PAYLOAD",
    63  	8:   "BAD_PROPOSAL_TXID",
    64  	9:   "DUPLICATE_TXID",
    65  	10:  "ENDORSEMENT_POLICY_FAILURE",
    66  	11:  "MVCC_READ_CONFLICT",
    67  	12:  "PHANTOM_READ_CONFLICT",
    68  	13:  "UNKNOWN_TX_TYPE",
    69  	14:  "TARGET_CHAIN_NOT_FOUND",
    70  	15:  "MARSHAL_TX_ERROR",
    71  	16:  "NIL_TXACTION",
    72  	17:  "EXPIRED_CHAINCODE",
    73  	18:  "CHAINCODE_VERSION_CONFLICT",
    74  	19:  "BAD_HEADER_EXTENSION",
    75  	20:  "BAD_CHANNEL_HEADER",
    76  	21:  "BAD_RESPONSE_PAYLOAD",
    77  	22:  "BAD_RWSET",
    78  	23:  "ILLEGAL_WRITESET",
    79  	100: "TRANSFER_CONFLICT",
    80  	101: "BAD_COUNTER",
    81  	102: "BAD_SIGNATURE",
    82  	103: "BAD_BALANCE",
    83  	104: "EXCEED_BALANCE",
    84  	255: "INVALID_OTHER_REASON",
    85  	355: "BAD_TOKEN_TYPE",
    86  	356: "BAD_TOKEN_ADDR",
    87  }
    88  var TxValidationCode_value = map[string]int32{
    89  	"VALID":                        0,
    90  	"NIL_ENVELOPE":                 1,
    91  	"BAD_PAYLOAD":                  2,
    92  	"BAD_COMMON_HEADER":            3,
    93  	"BAD_CREATOR_SIGNATURE":        4,
    94  	"INVALID_ENDORSER_TRANSACTION": 5,
    95  	"INVALID_CONFIG_TRANSACTION":   6,
    96  	"UNSUPPORTED_TX_PAYLOAD":       7,
    97  	"BAD_PROPOSAL_TXID":            8,
    98  	"DUPLICATE_TXID":               9,
    99  	"ENDORSEMENT_POLICY_FAILURE":   10,
   100  	"MVCC_READ_CONFLICT":           11,
   101  	"PHANTOM_READ_CONFLICT":        12,
   102  	"UNKNOWN_TX_TYPE":              13,
   103  	"TARGET_CHAIN_NOT_FOUND":       14,
   104  	"MARSHAL_TX_ERROR":             15,
   105  	"NIL_TXACTION":                 16,
   106  	"EXPIRED_CHAINCODE":            17,
   107  	"CHAINCODE_VERSION_CONFLICT":   18,
   108  	"BAD_HEADER_EXTENSION":         19,
   109  	"BAD_CHANNEL_HEADER":           20,
   110  	"BAD_RESPONSE_PAYLOAD":         21,
   111  	"BAD_RWSET":                    22,
   112  	"ILLEGAL_WRITESET":             23,
   113  	"TRANSFER_CONFLICT":            100,
   114  	"BAD_COUNTER":                  101,
   115  	"BAD_SIGNATURE":                102,
   116  	"BAD_BALANCE":                  103,
   117  	"EXCEED_BALANCE":               104,
   118  	"INVALID_OTHER_REASON":         255,
   119  	"BAD_TOKEN_TYPE":               355,
   120  	"BAD_TOKEN_ADDR":               356,
   121  }
   122  
   123  func (x TxValidationCode) String() string {
   124  	return proto.EnumName(TxValidationCode_name, int32(x))
   125  }
   126  func (TxValidationCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor11, []int{0} }
   127  
   128  // This message is necessary to facilitate the verification of the signature
   129  // (in the signature field) over the bytes of the transaction (in the
   130  // transactionBytes field).
   131  type SignedTransaction struct {
   132  	// The bytes of the Transaction. NDD
   133  	TransactionBytes []byte `protobuf:"bytes,1,opt,name=transaction_bytes,json=transactionBytes,proto3" json:"transaction_bytes,omitempty"`
   134  	// Signature of the transactionBytes The public key of the signature is in
   135  	// the header field of TransactionAction There might be multiple
   136  	// TransactionAction, so multiple headers, but there should be same
   137  	// transactor identity (cert) in all headers
   138  	Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
   139  }
   140  
   141  func (m *SignedTransaction) Reset()                    { *m = SignedTransaction{} }
   142  func (m *SignedTransaction) String() string            { return proto.CompactTextString(m) }
   143  func (*SignedTransaction) ProtoMessage()               {}
   144  func (*SignedTransaction) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{0} }
   145  
   146  func (m *SignedTransaction) GetTransactionBytes() []byte {
   147  	if m != nil {
   148  		return m.TransactionBytes
   149  	}
   150  	return nil
   151  }
   152  
   153  func (m *SignedTransaction) GetSignature() []byte {
   154  	if m != nil {
   155  		return m.Signature
   156  	}
   157  	return nil
   158  }
   159  
   160  // ProcessedTransaction wraps an Envelope that includes a transaction along with an indication
   161  // of whether the transaction was validated or invalidated by committing peer.
   162  // The use case is that GetTransactionByID API needs to retrieve the transaction Envelope
   163  // from block storage, and return it to a client, and indicate whether the transaction
   164  // was validated or invalidated by committing peer. So that the originally submitted
   165  // transaction Envelope is not modified, the ProcessedTransaction wrapper is returned.
   166  type ProcessedTransaction struct {
   167  	// An Envelope which includes a processed transaction
   168  	TransactionEnvelope *common.Envelope `protobuf:"bytes,1,opt,name=transactionEnvelope" json:"transactionEnvelope,omitempty"`
   169  	// An indication of whether the transaction was validated or invalidated by committing peer
   170  	ValidationCode int32  `protobuf:"varint,2,opt,name=validationCode" json:"validationCode,omitempty"`
   171  	BlockHash      []byte `protobuf:"bytes,3,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"`
   172  	Fee            int64  `protobuf:"varint,4,opt,name=fee" json:"fee,omitempty"`
   173  }
   174  
   175  func (m *ProcessedTransaction) Reset()                    { *m = ProcessedTransaction{} }
   176  func (m *ProcessedTransaction) String() string            { return proto.CompactTextString(m) }
   177  func (*ProcessedTransaction) ProtoMessage()               {}
   178  func (*ProcessedTransaction) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{1} }
   179  
   180  func (m *ProcessedTransaction) GetTransactionEnvelope() *common.Envelope {
   181  	if m != nil {
   182  		return m.TransactionEnvelope
   183  	}
   184  	return nil
   185  }
   186  
   187  func (m *ProcessedTransaction) GetValidationCode() int32 {
   188  	if m != nil {
   189  		return m.ValidationCode
   190  	}
   191  	return 0
   192  }
   193  
   194  func (m *ProcessedTransaction) GetBlockHash() []byte {
   195  	if m != nil {
   196  		return m.BlockHash
   197  	}
   198  	return nil
   199  }
   200  
   201  func (m *ProcessedTransaction) GetFee() int64 {
   202  	if m != nil {
   203  		return m.Fee
   204  	}
   205  	return 0
   206  }
   207  
   208  // The transaction to be sent to the ordering service. A transaction contains
   209  // one or more TransactionAction. Each TransactionAction binds a proposal to
   210  // potentially multiple actions. The transaction is atomic meaning that either
   211  // all actions in the transaction will be committed or none will.  Note that
   212  // while a Transaction might include more than one Header, the Header.creator
   213  // field must be the same in each.
   214  // A single client is free to issue a number of independent Proposal, each with
   215  // their header (Header) and request payload (ChaincodeProposalPayload).  Each
   216  // proposal is independently endorsed generating an action
   217  // (ProposalResponsePayload) with one signature per Endorser. Any number of
   218  // independent proposals (and their action) might be included in a transaction
   219  // to ensure that they are treated atomically.
   220  type Transaction struct {
   221  	// The payload is an array of TransactionAction. An array is necessary to
   222  	// accommodate multiple actions per transaction
   223  	Actions []*TransactionAction `protobuf:"bytes,1,rep,name=actions" json:"actions,omitempty"`
   224  }
   225  
   226  func (m *Transaction) Reset()                    { *m = Transaction{} }
   227  func (m *Transaction) String() string            { return proto.CompactTextString(m) }
   228  func (*Transaction) ProtoMessage()               {}
   229  func (*Transaction) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{2} }
   230  
   231  func (m *Transaction) GetActions() []*TransactionAction {
   232  	if m != nil {
   233  		return m.Actions
   234  	}
   235  	return nil
   236  }
   237  
   238  // TransactionAction binds a proposal to its action.  The type field in the
   239  // header dictates the type of action to be applied to the ledger.
   240  type TransactionAction struct {
   241  	// The header of the proposal action, which is the proposal header
   242  	Header []byte `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
   243  	// The payload of the action as defined by the type in the header For
   244  	// chaincode, it's the bytes of ChaincodeActionPayload
   245  	Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
   246  }
   247  
   248  func (m *TransactionAction) Reset()                    { *m = TransactionAction{} }
   249  func (m *TransactionAction) String() string            { return proto.CompactTextString(m) }
   250  func (*TransactionAction) ProtoMessage()               {}
   251  func (*TransactionAction) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{3} }
   252  
   253  func (m *TransactionAction) GetHeader() []byte {
   254  	if m != nil {
   255  		return m.Header
   256  	}
   257  	return nil
   258  }
   259  
   260  func (m *TransactionAction) GetPayload() []byte {
   261  	if m != nil {
   262  		return m.Payload
   263  	}
   264  	return nil
   265  }
   266  
   267  // ChaincodeActionPayload is the message to be used for the TransactionAction's
   268  // payload when the Header's type is set to CHAINCODE.  It carries the
   269  // chaincodeProposalPayload and an endorsed action to apply to the ledger.
   270  type ChaincodeActionPayload struct {
   271  	// This field contains the bytes of the ChaincodeProposalPayload message from
   272  	// the original invocation (essentially the arguments) after the application
   273  	// of the visibility function. The main visibility modes are "full" (the
   274  	// entire ChaincodeProposalPayload message is included here), "hash" (only
   275  	// the hash of the ChaincodeProposalPayload message is included) or
   276  	// "nothing".  This field will be used to check the consistency of
   277  	// ProposalResponsePayload.proposalHash.  For the CHAINCODE type,
   278  	// ProposalResponsePayload.proposalHash is supposed to be H(ProposalHeader ||
   279  	// f(ChaincodeProposalPayload)) where f is the visibility function.
   280  	ChaincodeProposalPayload []byte `protobuf:"bytes,1,opt,name=chaincode_proposal_payload,json=chaincodeProposalPayload,proto3" json:"chaincode_proposal_payload,omitempty"`
   281  	// The list of actions to apply to the ledger
   282  	Action *ChaincodeEndorsedAction `protobuf:"bytes,2,opt,name=action" json:"action,omitempty"`
   283  }
   284  
   285  func (m *ChaincodeActionPayload) Reset()                    { *m = ChaincodeActionPayload{} }
   286  func (m *ChaincodeActionPayload) String() string            { return proto.CompactTextString(m) }
   287  func (*ChaincodeActionPayload) ProtoMessage()               {}
   288  func (*ChaincodeActionPayload) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{4} }
   289  
   290  func (m *ChaincodeActionPayload) GetChaincodeProposalPayload() []byte {
   291  	if m != nil {
   292  		return m.ChaincodeProposalPayload
   293  	}
   294  	return nil
   295  }
   296  
   297  func (m *ChaincodeActionPayload) GetAction() *ChaincodeEndorsedAction {
   298  	if m != nil {
   299  		return m.Action
   300  	}
   301  	return nil
   302  }
   303  
   304  // ChaincodeEndorsedAction carries information about the endorsement of a
   305  // specific proposal
   306  type ChaincodeEndorsedAction struct {
   307  	// This is the bytes of the ProposalResponsePayload message signed by the
   308  	// endorsers.  Recall that for the CHAINCODE type, the
   309  	// ProposalResponsePayload's extenstion field carries a ChaincodeAction
   310  	ProposalResponsePayload []byte `protobuf:"bytes,1,opt,name=proposal_response_payload,json=proposalResponsePayload,proto3" json:"proposal_response_payload,omitempty"`
   311  	// The endorsement of the proposal, basically the endorser's signature over
   312  	// proposalResponsePayload
   313  	Endorsements []*Endorsement `protobuf:"bytes,2,rep,name=endorsements" json:"endorsements,omitempty"`
   314  }
   315  
   316  func (m *ChaincodeEndorsedAction) Reset()                    { *m = ChaincodeEndorsedAction{} }
   317  func (m *ChaincodeEndorsedAction) String() string            { return proto.CompactTextString(m) }
   318  func (*ChaincodeEndorsedAction) ProtoMessage()               {}
   319  func (*ChaincodeEndorsedAction) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{5} }
   320  
   321  func (m *ChaincodeEndorsedAction) GetProposalResponsePayload() []byte {
   322  	if m != nil {
   323  		return m.ProposalResponsePayload
   324  	}
   325  	return nil
   326  }
   327  
   328  func (m *ChaincodeEndorsedAction) GetEndorsements() []*Endorsement {
   329  	if m != nil {
   330  		return m.Endorsements
   331  	}
   332  	return nil
   333  }
   334  
   335  func init() {
   336  	proto.RegisterType((*SignedTransaction)(nil), "protos.SignedTransaction")
   337  	proto.RegisterType((*ProcessedTransaction)(nil), "protos.ProcessedTransaction")
   338  	proto.RegisterType((*Transaction)(nil), "protos.Transaction")
   339  	proto.RegisterType((*TransactionAction)(nil), "protos.TransactionAction")
   340  	proto.RegisterType((*ChaincodeActionPayload)(nil), "protos.ChaincodeActionPayload")
   341  	proto.RegisterType((*ChaincodeEndorsedAction)(nil), "protos.ChaincodeEndorsedAction")
   342  	proto.RegisterEnum("protos.TxValidationCode", TxValidationCode_name, TxValidationCode_value)
   343  }
   344  
   345  func init() { proto.RegisterFile("peer/transaction.proto", fileDescriptor11) }
   346  
   347  var fileDescriptor11 = []byte{
   348  	// 934 bytes of a gzipped FileDescriptorProto
   349  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x55, 0xdd, 0x4e, 0xeb, 0x46,
   350  	0x17, 0xfd, 0x02, 0x07, 0xf8, 0x98, 0xf0, 0x33, 0x99, 0x40, 0x08, 0x88, 0xf6, 0xa0, 0x5c, 0x54,
   351  	0xe8, 0x54, 0x22, 0x2a, 0xe7, 0xa2, 0x52, 0xd5, 0x9b, 0x89, 0xbd, 0x21, 0xd6, 0x71, 0x66, 0xac,
   352  	0xf1, 0x04, 0x42, 0x2f, 0x3a, 0x72, 0x92, 0x21, 0x89, 0x08, 0x76, 0x64, 0x87, 0xa3, 0x9e, 0x97,
   353  	0x68, 0x1f, 0xa6, 0x8f, 0xd4, 0x3e, 0x42, 0xef, 0x5b, 0x8d, 0x7f, 0xf2, 0x03, 0xed, 0x4d, 0xe2,
   354  	0x59, 0x6b, 0xcd, 0xde, 0x6b, 0xef, 0x3d, 0xf6, 0xa0, 0xda, 0x4c, 0xeb, 0xb8, 0x39, 0x8f, 0x83,
   355  	0x30, 0x09, 0x06, 0xf3, 0x49, 0x14, 0x5e, 0xcd, 0xe2, 0x68, 0x1e, 0x91, 0xed, 0xf4, 0x2f, 0x39,
   356  	0x7b, 0x3f, 0x8a, 0xa2, 0xd1, 0x54, 0x37, 0xd3, 0x65, 0xff, 0xe5, 0xb1, 0x39, 0x9f, 0x3c, 0xeb,
   357  	0x64, 0x1e, 0x3c, 0xcf, 0x32, 0xe1, 0xd9, 0x79, 0x1a, 0x60, 0x16, 0x47, 0xb3, 0x28, 0x09, 0xa6,
   358  	0x2a, 0xd6, 0xc9, 0x2c, 0x0a, 0x13, 0x9d, 0xb3, 0xd5, 0x41, 0xf4, 0xfc, 0x1c, 0x85, 0xcd, 0xec,
   359  	0x2f, 0x03, 0x1b, 0x3f, 0xa3, 0x8a, 0x3f, 0x19, 0x85, 0x7a, 0x28, 0x97, 0x69, 0xc9, 0xb7, 0xa8,
   360  	0xb2, 0xe2, 0x42, 0xf5, 0xbf, 0xcc, 0x75, 0x52, 0x2f, 0x5d, 0x94, 0x2e, 0xf7, 0x04, 0x5e, 0x21,
   361  	0x5a, 0x06, 0x27, 0xe7, 0x68, 0x37, 0x99, 0x8c, 0xc2, 0x60, 0xfe, 0x12, 0xeb, 0xfa, 0x46, 0x2a,
   362  	0x5a, 0x02, 0x8d, 0xdf, 0x4b, 0xe8, 0xc8, 0x8b, 0xa3, 0x81, 0x4e, 0x92, 0xf5, 0x1c, 0x2d, 0x54,
   363  	0x5d, 0x09, 0x05, 0xe1, 0x67, 0x3d, 0x8d, 0x66, 0x3a, 0xcd, 0x52, 0xbe, 0xc6, 0x57, 0xb9, 0xc9,
   364  	0x02, 0x17, 0xff, 0x26, 0x26, 0xdf, 0xa0, 0x83, 0xcf, 0xc1, 0x74, 0x32, 0x0c, 0x0c, 0x6a, 0x45,
   365  	0xc3, 0x2c, 0xff, 0x96, 0x78, 0x85, 0x92, 0xaf, 0x10, 0xea, 0x4f, 0xa3, 0xc1, 0x93, 0x1a, 0x07,
   366  	0xc9, 0xb8, 0xbe, 0x99, 0x79, 0x4c, 0x91, 0x76, 0x90, 0x8c, 0x09, 0x46, 0x9b, 0x8f, 0x5a, 0xd7,
   367  	0xdf, 0x5d, 0x94, 0x2e, 0x37, 0x85, 0x79, 0x6c, 0xb4, 0x50, 0x79, 0xd5, 0xeb, 0x47, 0xb4, 0x93,
   368  	0x3d, 0x99, 0x2e, 0x6c, 0x5e, 0x96, 0xaf, 0x4f, 0xb3, 0xee, 0x25, 0x57, 0x2b, 0x2a, 0x9a, 0xfe,
   369  	0x8a, 0x42, 0xd9, 0x00, 0x54, 0x79, 0xc3, 0x92, 0x1a, 0xda, 0x1e, 0xeb, 0x60, 0xa8, 0xe3, 0xbc,
   370  	0x9d, 0xf9, 0x8a, 0xd4, 0xd1, 0xce, 0x2c, 0xf8, 0x32, 0x8d, 0x82, 0x61, 0xde, 0xc2, 0x62, 0xd9,
   371  	0xf8, 0xad, 0x84, 0x6a, 0xd6, 0x38, 0x98, 0x84, 0x83, 0x68, 0xa8, 0xb3, 0x28, 0x5e, 0x46, 0x91,
   372  	0x1f, 0xd1, 0xd9, 0xa0, 0x60, 0xd4, 0x62, 0xea, 0x45, 0x9c, 0x2c, 0x41, 0x7d, 0xa1, 0xf0, 0x72,
   373  	0x41, 0xb1, 0xfb, 0x7b, 0xb4, 0x9d, 0x59, 0x4b, 0x33, 0x96, 0xaf, 0xdf, 0x17, 0x35, 0x2d, 0xb2,
   374  	0x41, 0x38, 0x8c, 0xe2, 0x44, 0x0f, 0xf3, 0xca, 0x72, 0x79, 0xe3, 0xd7, 0x12, 0x3a, 0xf9, 0x0f,
   375  	0x0d, 0xf9, 0x01, 0x9d, 0xbe, 0x39, 0x7e, 0xaf, 0x1c, 0x9d, 0x14, 0x02, 0x91, 0xf3, 0x4b, 0x43,
   376  	0x7b, 0x3a, 0x8b, 0xf6, 0xac, 0xc3, 0x79, 0x52, 0xdf, 0x48, 0x5b, 0x5d, 0x2d, 0x6c, 0xc1, 0x92,
   377  	0x13, 0x6b, 0xc2, 0x0f, 0x7f, 0x6d, 0x21, 0x2c, 0x7f, 0xb9, 0x5b, 0x9f, 0xf9, 0x2e, 0xda, 0xba,
   378  	0xa3, 0xae, 0x63, 0xe3, 0xff, 0x11, 0x8c, 0xf6, 0x98, 0xe3, 0x2a, 0x60, 0x77, 0xe0, 0x72, 0x0f,
   379  	0x70, 0x89, 0x1c, 0xa2, 0x72, 0x8b, 0xda, 0xca, 0xa3, 0x0f, 0x2e, 0xa7, 0x36, 0xde, 0x20, 0xc7,
   380  	0xa8, 0x62, 0x00, 0x8b, 0x77, 0x3a, 0x9c, 0xa9, 0x36, 0x50, 0x1b, 0x04, 0xde, 0x24, 0xa7, 0xe8,
   381  	0x38, 0x85, 0x05, 0x50, 0xc9, 0x85, 0xf2, 0x9d, 0x5b, 0x46, 0x65, 0x57, 0x00, 0x7e, 0x47, 0x2e,
   382  	0xd0, 0xb9, 0xc3, 0xd2, 0x0c, 0x0a, 0x98, 0xcd, 0x85, 0x0f, 0x42, 0x49, 0x41, 0x99, 0x4f, 0x2d,
   383  	0xe9, 0x70, 0x86, 0xb7, 0xc8, 0xd7, 0xe8, 0xac, 0x50, 0x58, 0x9c, 0xdd, 0x38, 0xb7, 0x6b, 0xfc,
   384  	0x36, 0x39, 0x43, 0xb5, 0x2e, 0xf3, 0xbb, 0x9e, 0xc7, 0x85, 0x04, 0x5b, 0xc9, 0xde, 0xc2, 0xcf,
   385  	0x4e, 0xe1, 0xc7, 0x13, 0xdc, 0xe3, 0x3e, 0x75, 0x95, 0xec, 0x39, 0x36, 0xfe, 0x3f, 0x21, 0xe8,
   386  	0xc0, 0xee, 0x7a, 0xae, 0x63, 0x51, 0x09, 0x19, 0xb6, 0x6b, 0xd2, 0xe4, 0x06, 0x3a, 0xc0, 0xa4,
   387  	0xf2, 0xb8, 0xeb, 0x58, 0x0f, 0xea, 0x86, 0x3a, 0xae, 0x31, 0x8a, 0x48, 0x0d, 0x91, 0xce, 0x9d,
   388  	0x65, 0x29, 0x01, 0x34, 0x33, 0xe2, 0x3a, 0x96, 0xc4, 0x65, 0x53, 0x9b, 0xd7, 0xa6, 0x4c, 0xf2,
   389  	0xce, 0x2b, 0x6a, 0x8f, 0x54, 0xd1, 0x61, 0x97, 0x7d, 0x62, 0xfc, 0x9e, 0x19, 0x57, 0xf2, 0xc1,
   390  	0x03, 0xbc, 0x6f, 0xec, 0x4a, 0x2a, 0x6e, 0x41, 0x2a, 0xab, 0x4d, 0x1d, 0xa6, 0x18, 0x97, 0xea,
   391  	0x86, 0x77, 0x99, 0x8d, 0x0f, 0xc8, 0x11, 0xc2, 0x1d, 0x2a, 0xfc, 0x76, 0xea, 0x54, 0x81, 0x10,
   392  	0x5c, 0xe0, 0xc3, 0xa2, 0xef, 0xb2, 0x97, 0x97, 0x8c, 0x4d, 0x59, 0xd0, 0xf3, 0x1c, 0x01, 0x76,
   393  	0x16, 0xc4, 0xe2, 0x36, 0xe0, 0x8a, 0x29, 0x61, 0xb1, 0x54, 0x77, 0x20, 0x7c, 0x87, 0xb3, 0xa5,
   394  	0x1f, 0x42, 0xea, 0xe8, 0xc8, 0x74, 0x23, 0x1b, 0x8b, 0x82, 0x9e, 0x04, 0x66, 0x24, 0xb8, 0x6a,
   395  	0x8a, 0x4b, 0x07, 0xd4, 0xa6, 0x8c, 0x81, 0x5b, 0x0c, 0xee, 0xa8, 0xd8, 0x21, 0xc0, 0xf7, 0x38,
   396  	0xf3, 0x61, 0xd1, 0xd9, 0x63, 0xb2, 0x8f, 0x76, 0x53, 0xe6, 0xde, 0x07, 0x89, 0x6b, 0xc6, 0xb9,
   397  	0xe3, 0xba, 0x70, 0x4b, 0x5d, 0x75, 0x2f, 0x1c, 0x09, 0x06, 0x3d, 0x31, 0x3e, 0xd3, 0x59, 0xdd,
   398  	0x80, 0x58, 0xfa, 0x18, 0x16, 0xc7, 0xc6, 0xe2, 0x5d, 0x26, 0x41, 0x60, 0x4d, 0x2a, 0x68, 0xdf,
   399  	0x00, 0xcb, 0x73, 0xf1, 0x58, 0x68, 0x5a, 0xd4, 0xa5, 0xcc, 0x02, 0x3c, 0x32, 0x33, 0x83, 0x9e,
   400  	0x05, 0xb0, 0xc4, 0xc6, 0xe4, 0x14, 0x1d, 0x15, 0x47, 0x83, 0xcb, 0x36, 0x08, 0x33, 0x01, 0x9f,
   401  	0x33, 0xfc, 0x77, 0x89, 0x54, 0xd1, 0x81, 0xd9, 0x2f, 0xf9, 0x27, 0x60, 0x59, 0xeb, 0xff, 0xd8,
   402  	0x58, 0x07, 0xa9, 0x6d, 0x0b, 0xfc, 0xe7, 0x46, 0x2b, 0x41, 0x1f, 0xa2, 0x78, 0x74, 0x35, 0x09,
   403  	0x9f, 0xa6, 0x41, 0x3f, 0x79, 0x8c, 0x5e, 0xc2, 0xec, 0xf8, 0x1b, 0x24, 0x7d, 0xeb, 0x8b, 0x37,
   404  	0xc7, 0xdc, 0x0a, 0x2d, 0xb2, 0xf2, 0x31, 0xf2, 0x82, 0xc1, 0x53, 0x30, 0xd2, 0x3f, 0x7d, 0x37,
   405  	0x9a, 0xcc, 0xc7, 0x2f, 0x7d, 0xf3, 0xb1, 0x6d, 0xbe, 0x09, 0xd3, 0x2c, 0xc2, 0x64, 0xf7, 0x4d,
   406  	0xd2, 0x34, 0x61, 0xfa, 0xd9, 0x5d, 0xf4, 0xf1, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x56, 0x74,
   407  	0xe4, 0x63, 0xac, 0x06, 0x00, 0x00,
   408  }