github.com/jlmucb/cloudproxy@v0.0.0-20170830161738-b5aa0b619bc4/go/tao/keys.pb.go (about)

     1  // Code generated by protoc-gen-go.
     2  // source: keys.proto
     3  // DO NOT EDIT!
     4  
     5  /*
     6  Package tao is a generated protocol buffer package.
     7  
     8  It is generated from these files:
     9  	keys.proto
    10  
    11  It has these top-level messages:
    12  	CryptoHeader
    13  	CryptoKey
    14  	CryptoKeyset
    15  	PBEData
    16  	ContextualizedData
    17  	SignaturePDU
    18  	SignedData
    19  	EncryptionIntegrityPDU
    20  	EncryptedData
    21  	KeyDerivationPDU
    22  */
    23  package tao
    24  
    25  import proto "github.com/golang/protobuf/proto"
    26  import fmt "fmt"
    27  import math "math"
    28  
    29  // Reference imports to suppress errors if they are not otherwise used.
    30  var _ = proto.Marshal
    31  var _ = fmt.Errorf
    32  var _ = math.Inf
    33  
    34  // This is a compile-time assertion to ensure that this generated file
    35  // is compatible with the proto package it is being compiled against.
    36  // A compilation error at this line likely means your copy of the
    37  // proto package needs to be updated.
    38  const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
    39  
    40  type CryptoVersion int32
    41  
    42  const (
    43  	CryptoVersion_CRYPTO_VERSION_1 CryptoVersion = 1
    44  	CryptoVersion_CRYPTO_VERSION_2 CryptoVersion = 2
    45  )
    46  
    47  var CryptoVersion_name = map[int32]string{
    48  	1: "CRYPTO_VERSION_1",
    49  	2: "CRYPTO_VERSION_2",
    50  }
    51  var CryptoVersion_value = map[string]int32{
    52  	"CRYPTO_VERSION_1": 1,
    53  	"CRYPTO_VERSION_2": 2,
    54  }
    55  
    56  func (x CryptoVersion) Enum() *CryptoVersion {
    57  	p := new(CryptoVersion)
    58  	*p = x
    59  	return p
    60  }
    61  func (x CryptoVersion) String() string {
    62  	return proto.EnumName(CryptoVersion_name, int32(x))
    63  }
    64  func (x *CryptoVersion) UnmarshalJSON(data []byte) error {
    65  	value, err := proto.UnmarshalJSONEnum(CryptoVersion_value, data, "CryptoVersion")
    66  	if err != nil {
    67  		return err
    68  	}
    69  	*x = CryptoVersion(value)
    70  	return nil
    71  }
    72  func (CryptoVersion) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
    73  
    74  // CryptoHeader has been changed to include:
    75  // key_name, key_epoch, key_type, key_purpose, key_status (all strings).
    76  // key_epoch is monotonically increasing integer
    77  // key_status: "primary," "pre-primary", "post-primary," "inactive," "revoked"
    78  // key_types:
    79  // 	"aes-128-raw", "aes-256-raw",
    80  // 	"aes128-ctr", "aes256-ctr",
    81  // 	"aes128-ctr-hmacsha256", "aes256-ctr-hmacsha256",
    82  // 	"hmacsha256", "hmacsha384", "hmacsha512",
    83  // 	"rsa1024", "rsa2048", "rsa3072"
    84  // 	"ecdsap256", "ecdsap384", "ecdsap384",
    85  // 	"rsa1024-public", "rsa2048-public", "rsa3072-public"
    86  // 	"ecdsap256-public", "ecdsap384-public"
    87  // 	"hdkf-sha256"
    88  // key_purpose: "verifying", "signing", "crypting", "deriving", "sealing"
    89  type CryptoHeader struct {
    90  	Version          *CryptoVersion `protobuf:"varint,1,req,name=version,enum=tao.CryptoVersion" json:"version,omitempty"`
    91  	KeyName          *string        `protobuf:"bytes,2,opt,name=key_name,json=keyName" json:"key_name,omitempty"`
    92  	KeyEpoch         *int32         `protobuf:"varint,3,opt,name=key_epoch,json=keyEpoch" json:"key_epoch,omitempty"`
    93  	KeyType          *string        `protobuf:"bytes,4,opt,name=key_type,json=keyType" json:"key_type,omitempty"`
    94  	KeyPurpose       *string        `protobuf:"bytes,5,opt,name=key_purpose,json=keyPurpose" json:"key_purpose,omitempty"`
    95  	KeyStatus        *string        `protobuf:"bytes,6,opt,name=key_status,json=keyStatus" json:"key_status,omitempty"`
    96  	XXX_unrecognized []byte         `json:"-"`
    97  }
    98  
    99  func (m *CryptoHeader) Reset()                    { *m = CryptoHeader{} }
   100  func (m *CryptoHeader) String() string            { return proto.CompactTextString(m) }
   101  func (*CryptoHeader) ProtoMessage()               {}
   102  func (*CryptoHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
   103  
   104  func (m *CryptoHeader) GetVersion() CryptoVersion {
   105  	if m != nil && m.Version != nil {
   106  		return *m.Version
   107  	}
   108  	return CryptoVersion_CRYPTO_VERSION_1
   109  }
   110  
   111  func (m *CryptoHeader) GetKeyName() string {
   112  	if m != nil && m.KeyName != nil {
   113  		return *m.KeyName
   114  	}
   115  	return ""
   116  }
   117  
   118  func (m *CryptoHeader) GetKeyEpoch() int32 {
   119  	if m != nil && m.KeyEpoch != nil {
   120  		return *m.KeyEpoch
   121  	}
   122  	return 0
   123  }
   124  
   125  func (m *CryptoHeader) GetKeyType() string {
   126  	if m != nil && m.KeyType != nil {
   127  		return *m.KeyType
   128  	}
   129  	return ""
   130  }
   131  
   132  func (m *CryptoHeader) GetKeyPurpose() string {
   133  	if m != nil && m.KeyPurpose != nil {
   134  		return *m.KeyPurpose
   135  	}
   136  	return ""
   137  }
   138  
   139  func (m *CryptoHeader) GetKeyStatus() string {
   140  	if m != nil && m.KeyStatus != nil {
   141  		return *m.KeyStatus
   142  	}
   143  	return ""
   144  }
   145  
   146  // CryptoKey
   147  type CryptoKey struct {
   148  	KeyHeader        *CryptoHeader `protobuf:"bytes,1,req,name=key_header,json=keyHeader" json:"key_header,omitempty"`
   149  	KeyComponents    [][]byte      `protobuf:"bytes,2,rep,name=key_components,json=keyComponents" json:"key_components,omitempty"`
   150  	XXX_unrecognized []byte        `json:"-"`
   151  }
   152  
   153  func (m *CryptoKey) Reset()                    { *m = CryptoKey{} }
   154  func (m *CryptoKey) String() string            { return proto.CompactTextString(m) }
   155  func (*CryptoKey) ProtoMessage()               {}
   156  func (*CryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
   157  
   158  func (m *CryptoKey) GetKeyHeader() *CryptoHeader {
   159  	if m != nil {
   160  		return m.KeyHeader
   161  	}
   162  	return nil
   163  }
   164  
   165  func (m *CryptoKey) GetKeyComponents() [][]byte {
   166  	if m != nil {
   167  		return m.KeyComponents
   168  	}
   169  	return nil
   170  }
   171  
   172  type CryptoKeyset struct {
   173  	Keys [][]byte `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"`
   174  	// Cert for Signing Key
   175  	Cert       []byte            `protobuf:"bytes,2,opt,name=cert" json:"cert,omitempty"`
   176  	Delegation *Attestation `protobuf:"bytes,3,opt,name=delegation" json:"delegation,omitempty"`
   177  	// certs supporting cert from cert signer to authority.
   178  	CertChain        [][]byte `protobuf:"bytes,4,rep,name=cert_chain,json=certChain" json:"cert_chain,omitempty"`
   179  	XXX_unrecognized []byte   `json:"-"`
   180  }
   181  
   182  func (m *CryptoKeyset) Reset()                    { *m = CryptoKeyset{} }
   183  func (m *CryptoKeyset) String() string            { return proto.CompactTextString(m) }
   184  func (*CryptoKeyset) ProtoMessage()               {}
   185  func (*CryptoKeyset) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
   186  
   187  func (m *CryptoKeyset) GetKeys() [][]byte {
   188  	if m != nil {
   189  		return m.Keys
   190  	}
   191  	return nil
   192  }
   193  
   194  func (m *CryptoKeyset) GetCert() []byte {
   195  	if m != nil {
   196  		return m.Cert
   197  	}
   198  	return nil
   199  }
   200  
   201  func (m *CryptoKeyset) GetDelegation() *Attestation {
   202  	if m != nil {
   203  		return m.Delegation
   204  	}
   205  	return nil
   206  }
   207  
   208  func (m *CryptoKeyset) GetCertChain() [][]byte {
   209  	if m != nil {
   210  		return m.CertChain
   211  	}
   212  	return nil
   213  }
   214  
   215  // TODO(jlm): Should cipher/hmac be replaced by CryptoHeader?
   216  type PBEData struct {
   217  	Version    *CryptoVersion `protobuf:"varint,1,req,name=version,enum=tao.CryptoVersion" json:"version,omitempty"`
   218  	Cipher     *string        `protobuf:"bytes,2,req,name=cipher" json:"cipher,omitempty"`
   219  	Hmac       *string        `protobuf:"bytes,3,req,name=hmac" json:"hmac,omitempty"`
   220  	Iterations *int32         `protobuf:"varint,4,req,name=iterations" json:"iterations,omitempty"`
   221  	Iv         []byte         `protobuf:"bytes,5,req,name=iv" json:"iv,omitempty"`
   222  	Ciphertext []byte         `protobuf:"bytes,6,req,name=ciphertext" json:"ciphertext,omitempty"`
   223  	// TODO(kwalsh) Should this not use a mac as well for integrity protection?
   224  	Salt             []byte `protobuf:"bytes,7,req,name=salt" json:"salt,omitempty"`
   225  	XXX_unrecognized []byte `json:"-"`
   226  }
   227  
   228  func (m *PBEData) Reset()                    { *m = PBEData{} }
   229  func (m *PBEData) String() string            { return proto.CompactTextString(m) }
   230  func (*PBEData) ProtoMessage()               {}
   231  func (*PBEData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
   232  
   233  func (m *PBEData) GetVersion() CryptoVersion {
   234  	if m != nil && m.Version != nil {
   235  		return *m.Version
   236  	}
   237  	return CryptoVersion_CRYPTO_VERSION_1
   238  }
   239  
   240  func (m *PBEData) GetCipher() string {
   241  	if m != nil && m.Cipher != nil {
   242  		return *m.Cipher
   243  	}
   244  	return ""
   245  }
   246  
   247  func (m *PBEData) GetHmac() string {
   248  	if m != nil && m.Hmac != nil {
   249  		return *m.Hmac
   250  	}
   251  	return ""
   252  }
   253  
   254  func (m *PBEData) GetIterations() int32 {
   255  	if m != nil && m.Iterations != nil {
   256  		return *m.Iterations
   257  	}
   258  	return 0
   259  }
   260  
   261  func (m *PBEData) GetIv() []byte {
   262  	if m != nil {
   263  		return m.Iv
   264  	}
   265  	return nil
   266  }
   267  
   268  func (m *PBEData) GetCiphertext() []byte {
   269  	if m != nil {
   270  		return m.Ciphertext
   271  	}
   272  	return nil
   273  }
   274  
   275  func (m *PBEData) GetSalt() []byte {
   276  	if m != nil {
   277  		return m.Salt
   278  	}
   279  	return nil
   280  }
   281  
   282  // Contextualized protobuf.
   283  // SECURITY WARNING: Always choose a unique context for each unique type of
   284  // message. One easy way to do this is to number the messages in a protocol
   285  // and make the context "ProtocolName Message Y: ProtobufName Version X"
   286  // Marshaled representation of this is the data that is signed.
   287  type ContextualizedData struct {
   288  	Context          *string `protobuf:"bytes,1,req,name=context" json:"context,omitempty"`
   289  	Data             []byte  `protobuf:"bytes,2,req,name=data" json:"data,omitempty"`
   290  	XXX_unrecognized []byte  `json:"-"`
   291  }
   292  
   293  func (m *ContextualizedData) Reset()                    { *m = ContextualizedData{} }
   294  func (m *ContextualizedData) String() string            { return proto.CompactTextString(m) }
   295  func (*ContextualizedData) ProtoMessage()               {}
   296  func (*ContextualizedData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
   297  
   298  func (m *ContextualizedData) GetContext() string {
   299  	if m != nil && m.Context != nil {
   300  		return *m.Context
   301  	}
   302  	return ""
   303  }
   304  
   305  func (m *ContextualizedData) GetData() []byte {
   306  	if m != nil {
   307  		return m.Data
   308  	}
   309  	return nil
   310  }
   311  
   312  // A PDU including metadata for representing data to be signed.  The data is
   313  // a serialized ContextualizedData message providing unique deserialization.
   314  type SignaturePDU struct {
   315  	Header  *CryptoHeader `protobuf:"bytes,1,req,name=header" json:"header,omitempty"`
   316  	Context *string       `protobuf:"bytes,2,req,name=context" json:"context,omitempty"`
   317  	// The serialized ContextualizedData that is to be signed.
   318  	Data             []byte `protobuf:"bytes,3,req,name=data" json:"data,omitempty"`
   319  	XXX_unrecognized []byte `json:"-"`
   320  }
   321  
   322  func (m *SignaturePDU) Reset()                    { *m = SignaturePDU{} }
   323  func (m *SignaturePDU) String() string            { return proto.CompactTextString(m) }
   324  func (*SignaturePDU) ProtoMessage()               {}
   325  func (*SignaturePDU) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
   326  
   327  func (m *SignaturePDU) GetHeader() *CryptoHeader {
   328  	if m != nil {
   329  		return m.Header
   330  	}
   331  	return nil
   332  }
   333  
   334  func (m *SignaturePDU) GetContext() string {
   335  	if m != nil && m.Context != nil {
   336  		return *m.Context
   337  	}
   338  	return ""
   339  }
   340  
   341  func (m *SignaturePDU) GetData() []byte {
   342  	if m != nil {
   343  		return m.Data
   344  	}
   345  	return nil
   346  }
   347  
   348  // The result of signing.
   349  type SignedData struct {
   350  	Header           *CryptoHeader `protobuf:"bytes,1,req,name=header" json:"header,omitempty"`
   351  	Signature        []byte        `protobuf:"bytes,2,req,name=signature" json:"signature,omitempty"`
   352  	XXX_unrecognized []byte        `json:"-"`
   353  }
   354  
   355  func (m *SignedData) Reset()                    { *m = SignedData{} }
   356  func (m *SignedData) String() string            { return proto.CompactTextString(m) }
   357  func (*SignedData) ProtoMessage()               {}
   358  func (*SignedData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
   359  
   360  func (m *SignedData) GetHeader() *CryptoHeader {
   361  	if m != nil {
   362  		return m.Header
   363  	}
   364  	return nil
   365  }
   366  
   367  func (m *SignedData) GetSignature() []byte {
   368  	if m != nil {
   369  		return m.Signature
   370  	}
   371  	return nil
   372  }
   373  
   374  // A PDU to be serialized and signed for integrity-protection when using
   375  // encryption modes (like AES CTR with HMAC-SHA) that require a separate MAC.
   376  // Note: We actually just hmac the partially serialized EncryptedData message
   377  // with all fields complete except the mac field.
   378  type EncryptionIntegrityPDU struct {
   379  	Header           *CryptoHeader `protobuf:"bytes,1,req,name=header" json:"header,omitempty"`
   380  	Iv               []byte        `protobuf:"bytes,2,req,name=iv" json:"iv,omitempty"`
   381  	Ciphertext       []byte        `protobuf:"bytes,3,req,name=ciphertext" json:"ciphertext,omitempty"`
   382  	XXX_unrecognized []byte        `json:"-"`
   383  }
   384  
   385  func (m *EncryptionIntegrityPDU) Reset()                    { *m = EncryptionIntegrityPDU{} }
   386  func (m *EncryptionIntegrityPDU) String() string            { return proto.CompactTextString(m) }
   387  func (*EncryptionIntegrityPDU) ProtoMessage()               {}
   388  func (*EncryptionIntegrityPDU) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
   389  
   390  func (m *EncryptionIntegrityPDU) GetHeader() *CryptoHeader {
   391  	if m != nil {
   392  		return m.Header
   393  	}
   394  	return nil
   395  }
   396  
   397  func (m *EncryptionIntegrityPDU) GetIv() []byte {
   398  	if m != nil {
   399  		return m.Iv
   400  	}
   401  	return nil
   402  }
   403  
   404  func (m *EncryptionIntegrityPDU) GetCiphertext() []byte {
   405  	if m != nil {
   406  		return m.Ciphertext
   407  	}
   408  	return nil
   409  }
   410  
   411  // The result of encrypting.
   412  type EncryptedData struct {
   413  	Header           *CryptoHeader `protobuf:"bytes,1,req,name=header" json:"header,omitempty"`
   414  	Iv               []byte        `protobuf:"bytes,2,req,name=iv" json:"iv,omitempty"`
   415  	Ciphertext       []byte        `protobuf:"bytes,3,req,name=ciphertext" json:"ciphertext,omitempty"`
   416  	Mac              []byte        `protobuf:"bytes,4,opt,name=mac" json:"mac,omitempty"`
   417  	XXX_unrecognized []byte        `json:"-"`
   418  }
   419  
   420  func (m *EncryptedData) Reset()                    { *m = EncryptedData{} }
   421  func (m *EncryptedData) String() string            { return proto.CompactTextString(m) }
   422  func (*EncryptedData) ProtoMessage()               {}
   423  func (*EncryptedData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
   424  
   425  func (m *EncryptedData) GetHeader() *CryptoHeader {
   426  	if m != nil {
   427  		return m.Header
   428  	}
   429  	return nil
   430  }
   431  
   432  func (m *EncryptedData) GetIv() []byte {
   433  	if m != nil {
   434  		return m.Iv
   435  	}
   436  	return nil
   437  }
   438  
   439  func (m *EncryptedData) GetCiphertext() []byte {
   440  	if m != nil {
   441  		return m.Ciphertext
   442  	}
   443  	return nil
   444  }
   445  
   446  func (m *EncryptedData) GetMac() []byte {
   447  	if m != nil {
   448  		return m.Mac
   449  	}
   450  	return nil
   451  }
   452  
   453  // A PDU to be serialized and fed to HKDF for derivation.
   454  type KeyDerivationPDU struct {
   455  	PreviousHash     []byte  `protobuf:"bytes,1,req,name=previous_hash,json=previousHash" json:"previous_hash,omitempty"`
   456  	Size             *uint32 `protobuf:"fixed32,2,req,name=size" json:"size,omitempty"`
   457  	Context          *string `protobuf:"bytes,3,req,name=context" json:"context,omitempty"`
   458  	Index            *uint32 `protobuf:"fixed32,4,req,name=index" json:"index,omitempty"`
   459  	XXX_unrecognized []byte  `json:"-"`
   460  }
   461  
   462  func (m *KeyDerivationPDU) Reset()                    { *m = KeyDerivationPDU{} }
   463  func (m *KeyDerivationPDU) String() string            { return proto.CompactTextString(m) }
   464  func (*KeyDerivationPDU) ProtoMessage()               {}
   465  func (*KeyDerivationPDU) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
   466  
   467  func (m *KeyDerivationPDU) GetPreviousHash() []byte {
   468  	if m != nil {
   469  		return m.PreviousHash
   470  	}
   471  	return nil
   472  }
   473  
   474  func (m *KeyDerivationPDU) GetSize() uint32 {
   475  	if m != nil && m.Size != nil {
   476  		return *m.Size
   477  	}
   478  	return 0
   479  }
   480  
   481  func (m *KeyDerivationPDU) GetContext() string {
   482  	if m != nil && m.Context != nil {
   483  		return *m.Context
   484  	}
   485  	return ""
   486  }
   487  
   488  func (m *KeyDerivationPDU) GetIndex() uint32 {
   489  	if m != nil && m.Index != nil {
   490  		return *m.Index
   491  	}
   492  	return 0
   493  }
   494  
   495  func init() {
   496  	proto.RegisterType((*CryptoHeader)(nil), "tao.CryptoHeader")
   497  	proto.RegisterType((*CryptoKey)(nil), "tao.CryptoKey")
   498  	proto.RegisterType((*CryptoKeyset)(nil), "tao.CryptoKeyset")
   499  	proto.RegisterType((*PBEData)(nil), "tao.PBEData")
   500  	proto.RegisterType((*ContextualizedData)(nil), "tao.ContextualizedData")
   501  	proto.RegisterType((*SignaturePDU)(nil), "tao.SignaturePDU")
   502  	proto.RegisterType((*SignedData)(nil), "tao.SignedData")
   503  	proto.RegisterType((*EncryptionIntegrityPDU)(nil), "tao.EncryptionIntegrityPDU")
   504  	proto.RegisterType((*EncryptedData)(nil), "tao.EncryptedData")
   505  	proto.RegisterType((*KeyDerivationPDU)(nil), "tao.KeyDerivationPDU")
   506  	proto.RegisterEnum("tao.CryptoVersion", CryptoVersion_name, CryptoVersion_value)
   507  }
   508  
   509  /*
   510  func init() { proto.RegisterFile("keys.proto", fileDescriptor0) }
   511  
   512  var fileDescriptor0 = []byte{
   513  	// 623 bytes of a gzipped FileDescriptorProto
   514  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x53, 0x5f, 0x6b, 0xdb, 0x5e,
   515  	0x0c, 0x25, 0x76, 0x5b, 0xff, 0xac, 0x26, 0xc5, 0xbd, 0xfc, 0x28, 0xde, 0xff, 0xe2, 0x31, 0xe8,
   516  	0xc6, 0x28, 0x5b, 0x5e, 0xf7, 0xb4, 0xa6, 0x81, 0x96, 0x41, 0x1b, 0x9c, 0xb6, 0xb0, 0x27, 0x73,
   517  	0xb1, 0x2f, 0xb1, 0x59, 0x62, 0x1b, 0xdf, 0x9b, 0xd0, 0x6c, 0x7b, 0xdf, 0x47, 0xdb, 0xe3, 0xbe,
   518  	0xd2, 0x24, 0xd9, 0x49, 0xdd, 0xd1, 0x31, 0xf2, 0x26, 0x1d, 0x49, 0xf7, 0xe8, 0x48, 0xba, 0x00,
   519  	0x5f, 0xd4, 0x52, 0x1f, 0x97, 0x55, 0x61, 0x0a, 0x61, 0x1b, 0x59, 0x3c, 0xde, 0x97, 0xc6, 0x28,
   520  	0x6d, 0xa4, 0xc9, 0x8a, 0xbc, 0xc6, 0x83, 0x5f, 0x1d, 0xe8, 0x0e, 0xaa, 0x65, 0x69, 0x8a, 0x33,
   521  	0x25, 0x13, 0x55, 0x89, 0xb7, 0xe0, 0x2c, 0x54, 0xa5, 0x31, 0xc3, 0xef, 0x1c, 0x5a, 0x47, 0x7b,
   522  	0x7d, 0x71, 0x8c, 0xa5, 0xc7, 0x75, 0xce, 0x4d, 0x1d, 0x09, 0x57, 0x29, 0xe2, 0x11, 0xfc, 0x87,
   523  	0x24, 0x51, 0x2e, 0x67, 0xca, 0xb7, 0x0e, 0x3b, 0x47, 0x6e, 0xe8, 0xa0, 0x7f, 0x81, 0xae, 0x78,
   524  	0x02, 0x2e, 0x85, 0x54, 0x59, 0xc4, 0xa9, 0x6f, 0x63, 0x6c, 0x3b, 0xa4, 0xdc, 0x21, 0xf9, 0xab,
   525  	0x3a, 0xb3, 0x2c, 0x95, 0xbf, 0xb5, 0xae, 0xbb, 0x42, 0x57, 0xbc, 0x80, 0x5d, 0x0a, 0x95, 0xf3,
   526  	0xaa, 0x2c, 0xb4, 0xf2, 0xb7, 0x39, 0x4a, 0x52, 0x46, 0x35, 0x22, 0x9e, 0xb1, 0xb0, 0x88, 0x74,
   527  	0xcc, 0xb5, 0xbf, 0xc3, 0x71, 0xa2, 0x1a, 0x33, 0x10, 0x24, 0xe0, 0xd6, 0xcd, 0x7e, 0x52, 0x4b,
   528  	0xf1, 0xae, 0xce, 0x4d, 0x59, 0x1b, 0x0b, 0xda, 0xed, 0xef, 0xb7, 0x04, 0xd5, 0xa2, 0xb9, 0xbc,
   529  	0xd1, 0xff, 0x0a, 0xf6, 0xa8, 0x22, 0x2e, 0x66, 0x65, 0x91, 0xab, 0xdc, 0x68, 0xd4, 0x65, 0x1f,
   530  	0x75, 0xc3, 0x1e, 0xa2, 0x83, 0x35, 0x18, 0xfc, 0x58, 0xcf, 0x0d, 0x69, 0xb4, 0x32, 0x42, 0xc0,
   531  	0x16, 0x8d, 0x1b, 0x39, 0x28, 0x9b, 0x6d, 0xc2, 0x62, 0x55, 0x19, 0x9e, 0x0c, 0x62, 0x64, 0x53,
   532  	0x47, 0x89, 0x9a, 0xaa, 0x09, 0x2f, 0x81, 0xe7, 0xb2, 0xdb, 0xf7, 0xb8, 0xa3, 0x8f, 0x77, 0xcb,
   533  	0x09, 0x5b, 0x39, 0xa4, 0x97, 0x2a, 0xa3, 0x38, 0x95, 0x59, 0x8e, 0xd3, 0xa2, 0xf7, 0x5d, 0x42,
   534  	0x06, 0x04, 0x04, 0x3f, 0x3b, 0xe0, 0x8c, 0x4e, 0x86, 0xa7, 0xd2, 0xc8, 0x0d, 0x97, 0x77, 0x00,
   535  	0x3b, 0x71, 0x56, 0xa6, 0x38, 0x18, 0x0b, 0x93, 0xdd, 0xb0, 0xf1, 0xa8, 0xed, 0x74, 0x26, 0x63,
   536  	0x6c, 0x8e, 0x50, 0xb6, 0xc5, 0x73, 0x80, 0xcc, 0xa8, 0x8a, 0x3b, 0xd2, 0xd8, 0x84, 0x85, 0xeb,
   537  	0x6c, 0x21, 0x62, 0x0f, 0xac, 0x6c, 0x81, 0xcb, 0xb2, 0xb0, 0x39, 0xb4, 0x28, 0xbf, 0x7e, 0xcd,
   538  	0xa8, 0x5b, 0x83, 0x4b, 0x22, 0xbc, 0x85, 0x10, 0x87, 0x96, 0x53, 0xe3, 0x3b, 0x1c, 0x61, 0x3b,
   539  	0x38, 0x01, 0x31, 0x28, 0x72, 0x0a, 0xcf, 0xe5, 0x34, 0xfb, 0xaa, 0x12, 0xd6, 0xe4, 0x83, 0x13,
   540  	0xd7, 0x28, 0x6b, 0xc2, 0x4b, 0x69, 0x5c, 0x7a, 0x23, 0xc1, 0x0c, 0xee, 0x1e, 0xdf, 0x20, 0x3b,
   541  	0x98, 0x40, 0x77, 0x9c, 0x4d, 0x72, 0xbc, 0x84, 0x4a, 0x8d, 0x4e, 0xaf, 0xc5, 0x6b, 0xd8, 0xf9,
   542  	0xd7, 0xf2, 0x9b, 0x84, 0x36, 0x91, 0xf5, 0x30, 0x91, 0xdd, 0x22, 0xba, 0x06, 0x20, 0xa2, 0xa6,
   543  	0xc9, 0x0d, 0x68, 0x9e, 0x82, 0xab, 0x57, 0x1d, 0x36, 0xad, 0xdf, 0x01, 0x81, 0x86, 0x83, 0x61,
   544  	0x1e, 0x53, 0x1d, 0x8e, 0xf5, 0x1c, 0xe9, 0x27, 0x55, 0x66, 0x96, 0x1b, 0x2a, 0xa9, 0x97, 0x61,
   545  	0xfd, 0x65, 0x19, 0xf6, 0x9f, 0xcb, 0x08, 0xbe, 0x43, 0xaf, 0x21, 0xdd, 0x5c, 0xce, 0x86, 0x5c,
   546  	0xc2, 0x03, 0x9b, 0x6e, 0x6b, 0x8b, 0xbf, 0x04, 0x99, 0xc1, 0x37, 0xf0, 0xf0, 0x0f, 0x9d, 0xaa,
   547  	0x2a, 0x5b, 0xf0, 0x31, 0x91, 0xd8, 0x97, 0xd0, 0x2b, 0x2b, 0xb5, 0xc8, 0x8a, 0xb9, 0x8e, 0x52,
   548  	0xa9, 0x53, 0xee, 0xa3, 0x1b, 0x76, 0x57, 0xe0, 0x19, 0x62, 0x7c, 0x43, 0x78, 0x26, 0x4c, 0xee,
   549  	0x84, 0x6c, 0xb7, 0x97, 0x68, 0xdf, 0x5f, 0xe2, 0xff, 0xb0, 0x9d, 0xe5, 0x89, 0xba, 0xe5, 0xe3,
   550  	0x75, 0xc2, 0xda, 0x79, 0xf3, 0x01, 0x7a, 0xf7, 0x7e, 0x07, 0xa6, 0x79, 0x83, 0xf0, 0xf3, 0xe8,
   551  	0xea, 0x32, 0xba, 0x19, 0x86, 0xe3, 0xf3, 0xcb, 0x8b, 0xe8, 0xbd, 0xd7, 0x79, 0x00, 0xed, 0x7b,
   552  	0xd6, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x77, 0x44, 0x80, 0x7b, 0x61, 0x05, 0x00, 0x00,
   553  }
   554  */