diff --git a/scripts/test/encrypt.sh b/scripts/test/encrypt.sh index 6db084e2..3562a68e 100755 --- a/scripts/test/encrypt.sh +++ b/scripts/test/encrypt.sh @@ -46,7 +46,7 @@ diff "$infile" "$infile.forig" echo "- decrypt (file, unrecognized ext)" mv "$infile.enc" "$infile.dat" $keycmd decrypt -in "$infile.dat" -diff "$infile.dat.dec" "$infile" +diff "$infile-2.dat" "$infile" echo "- encrypt/decrypt (signcrypt, piped)" echo "testing" > $infile diff --git a/service/cmd_encrypt.go b/service/cmd_encrypt.go index c0c62a7c..eee72c09 100644 --- a/service/cmd_encrypt.go +++ b/service/cmd_encrypt.go @@ -20,25 +20,32 @@ func encryptCommands(client *Client) []cli.Command { Usage: "Encrypt", Flags: []cli.Flag{ cli.StringSliceFlag{Name: "recipient, r", Usage: "recipients"}, - cli.StringFlag{Name: "sender, signer, s", Usage: "signer (or anonymous if not specified)"}, + cli.StringFlag{Name: "sender, signer, s", Usage: "signer (or anonymous)"}, cli.BoolFlag{Name: "armor, a", Usage: "armored"}, cli.StringFlag{Name: "in, i", Usage: "file to read"}, cli.StringFlag{Name: "out, o", Usage: "file to write, defaults to .enc"}, - cli.StringFlag{Name: "mode, m", Usage: "encryption mode: encrypt (default) or signcrypt"}, + cli.StringFlag{Name: "mode, m", Usage: "encryption mode: signcrypt, encrypt or default (signcrypt if signing, encrypt otherwise)"}, + cli.BoolFlag{Hidden: true, Name: "no-signer-recipient", Usage: "don't add signer to recipients"}, }, Action: func(c *cli.Context) error { if c.String("in") == "" && c.String("out") != "" { return errors.Errorf("-out option is unsupported without -in") } - if c.String("in") != "" { - return encryptFileForCLI(c, client) - } - mode, err := encryptModeFromString(c.String("mode")) if err != nil { return err } + options := &EncryptOptions{ + Mode: mode, + Armored: c.Bool("armor"), + NoSenderRecipient: c.Bool("no-sender-recipient"), + } + + if c.String("in") != "" { + return encryptFileForCLI(c, client, options) + } + reader := bufio.NewReader(os.Stdin) writer := os.Stdout @@ -50,8 +57,7 @@ func encryptCommands(client *Client) []cli.Command { if err := encryptClient.Send(&EncryptInput{ Recipients: c.StringSlice("recipient"), Sender: c.String("sender"), - Mode: mode, - Armored: c.Bool("armor"), + Options: options, }); err != nil { return err } @@ -175,15 +181,11 @@ func encryptCommands(client *Client) []cli.Command { } } -func encryptFileForCLI(c *cli.Context, client *Client) error { - mode, err := encryptModeFromString(c.String("mode")) - if err != nil { - return err - } - return encryptFile(client, c.StringSlice("recipient"), c.String("sender"), mode, c.Bool("armor"), c.String("in"), c.String("out")) +func encryptFileForCLI(c *cli.Context, client *Client, options *EncryptOptions) error { + return encryptFile(client, c.String("in"), c.String("out"), c.StringSlice("recipient"), c.String("sender"), options) } -func encryptFile(client *Client, recipients []string, sender string, mode EncryptMode, armored bool, in string, out string) error { +func encryptFile(client *Client, in string, out string, recipients []string, sender string, options *EncryptOptions) error { in, err := filepath.Abs(in) if err != nil { return err @@ -201,12 +203,11 @@ func encryptFile(client *Client, recipients []string, sender string, mode Encryp } if err := encryptClient.Send(&EncryptFileInput{ - Recipients: recipients, - Sender: sender, - Mode: mode, - Armored: armored, In: in, Out: out, + Recipients: recipients, + Sender: sender, + Options: options, }); err != nil { return err } @@ -272,7 +273,9 @@ func decryptFile(client *Client, in string, out string) (*DecryptFileOutput, err func encryptModeFromString(s string) (EncryptMode, error) { switch s { - case "", "encrypt": + case "", "default": + return DefaultEncrypt, nil + case "encrypt": return SaltpackEncrypt, nil case "signcrypt": return SaltpackSigncrypt, nil diff --git a/service/encrypt.go b/service/encrypt.go index ff6e43d3..6ee01e95 100644 --- a/service/encrypt.go +++ b/service/encrypt.go @@ -19,9 +19,18 @@ type encrypt struct { armored bool } -func (s *service) newEncrypt(ctx context.Context, recipients []string, sender string, mode EncryptMode, armored bool) (*encrypt, error) { - if len(recipients) == 0 { - return nil, errors.Errorf("no recipients specified") +func (s *service) newEncrypt(ctx context.Context, recipients []string, sender string, options *EncryptOptions) (*encrypt, error) { + if options == nil { + options = &EncryptOptions{} + } + + var skid keys.ID + if sender != "" { + s, err := s.lookup(ctx, sender, &LookupOpts{Verify: true}) + if err != nil { + return nil, err + } + skid = s } recs, err := s.lookupAll(ctx, recipients, &LookupOpts{Verify: true}) @@ -29,30 +38,45 @@ func (s *service) newEncrypt(ctx context.Context, recipients []string, sender st return nil, err } - if mode == DefaultEncrypt { - mode = SaltpackEncrypt + // Add sender as a recipient (unless options.NoSenderRecipient). + recsSet := keys.NewIDSet(recs...) + if !options.NoSenderRecipient && skid != "" { + recsSet.Add(skid) } - var kid keys.ID - if sender != "" { - s, err := s.lookup(ctx, sender, &LookupOpts{Verify: true}) - if err != nil { - return nil, err + if recsSet.Size() == 0 { + return nil, errors.Errorf("no recipients specified") + } + + if skid != "" && options.NoSign && options.NoSenderRecipient { + return nil, errors.Errorf("sender specified without signing or adding as a recipient") + } + + if options.NoSign { + skid = "" + } + + // For default mode, if signing, use signcrypt, otherwise use encrypt. + mode := options.Mode + if mode == DefaultEncrypt { + if skid != "" { + mode = SaltpackSigncrypt + } else { + mode = SaltpackEncrypt } - kid = s } return &encrypt{ - recipients: recs, - sender: kid, + recipients: recsSet.IDs(), + sender: skid, mode: mode, - armored: armored, + armored: options.Armored, }, nil } // Encrypt (RPC) data. func (s *service) Encrypt(ctx context.Context, req *EncryptRequest) (*EncryptResponse, error) { - enc, err := s.newEncrypt(ctx, req.Recipients, req.Sender, req.Mode, req.Armored) + enc, err := s.newEncrypt(ctx, req.Recipients, req.Sender, req.Options) if err != nil { return nil, err } @@ -64,22 +88,16 @@ func (s *service) Encrypt(ctx context.Context, req *EncryptRequest) (*EncryptRes if err != nil { return nil, err } - out, err = saltpack.Encrypt(req.Data, req.Armored, sbk, enc.recipients...) + out, err = saltpack.Encrypt(req.Data, enc.armored, sbk, enc.recipients...) if err != nil { return nil, err } case SaltpackSigncrypt: - if enc.sender == "" { - return nil, errors.Errorf("no sender specified: sender is required for signcrypt mode") - } sk, err := s.vault.EdX25519Key(enc.sender) if err != nil { return nil, err } - if sk == nil { - return nil, keys.NewErrNotFound(enc.sender.String()) - } - out, err = saltpack.Signcrypt(req.Data, req.Armored, sk, enc.recipients...) + out, err = saltpack.Signcrypt(req.Data, enc.armored, sk, enc.recipients...) if err != nil { return nil, err } @@ -192,7 +210,7 @@ func (s *service) EncryptFile(srv Keys_EncryptFileServer) error { out = in + ".enc" } - enc, err := s.newEncrypt(srv.Context(), req.Recipients, req.Sender, req.Mode, req.Armored) + enc, err := s.newEncrypt(srv.Context(), req.Recipients, req.Sender, req.Options) if err != nil { return err } @@ -239,7 +257,7 @@ func (s *service) EncryptStream(srv Keys_EncryptStreamServer) error { return errors.Errorf("stream already initialized") } - enc, err := s.newEncrypt(ctx, req.Recipients, req.Sender, req.Mode, req.Armored) + enc, err := s.newEncrypt(ctx, req.Recipients, req.Sender, req.Options) if err != nil { return err } @@ -252,7 +270,7 @@ func (s *service) EncryptStream(srv Keys_EncryptStreamServer) error { } else { // Make sure request only sends data after init - if len(req.Recipients) != 0 || req.Sender != "" { + if len(req.Recipients) != 0 || req.Sender != "" || req.Options != nil { return errors.Errorf("after stream is initalized, only data should be sent") } } diff --git a/service/encrypt_test.go b/service/encrypt_test.go index 39dc0405..feba46ca 100644 --- a/service/encrypt_test.go +++ b/service/encrypt_test.go @@ -54,9 +54,11 @@ func testEncryptDecrypt(t *testing.T, aliceService *service, bobService *service // Encrypt encryptResp, err := aliceService.Encrypt(context.TODO(), &EncryptRequest{ Data: []byte(message), + Recipients: []string{recipient}, Sender: sender, - Recipients: []string{recipient, sender}, - Mode: mode, + Options: &EncryptOptions{ + Mode: mode, + }, }) require.NoError(t, err) require.NotEmpty(t, encryptResp.Data) @@ -83,24 +85,25 @@ func testEncryptDecryptErrors(t *testing.T, aliceService *service, bobService *s encryptResp, err := aliceService.Encrypt(context.TODO(), &EncryptRequest{ Data: []byte(message), - Sender: alice.ID().String(), Recipients: []string{bob.ID().String()}, - Mode: mode, - Armored: armored, + Sender: alice.ID().String(), + Options: &EncryptOptions{ + Mode: mode, + Armored: armored, + NoSenderRecipient: true, + }, }) require.NoError(t, err) require.NotEmpty(t, encryptResp.Data) // Alice try to decrypt her own message - // TODO: Include alice by default? _, err = aliceService.Decrypt(context.TODO(), &DecryptRequest{ Data: encryptResp.Data, }) require.EqualError(t, err, "no decryption key found for message") _, err = aliceService.Encrypt(context.TODO(), &EncryptRequest{ - Data: []byte(message), - Sender: alice.ID().String(), + Data: []byte(message), }) require.EqualError(t, err, "no recipients specified") @@ -135,8 +138,11 @@ func TestEncryptAnonymous(t *testing.T) { // Encrypt encryptResp, err := aliceService.Encrypt(context.TODO(), &EncryptRequest{ Data: []byte(message), - Sender: "", Recipients: []string{bob.ID().String()}, + Sender: "", + Options: &EncryptOptions{ + Mode: SaltpackEncrypt, + }, }) require.NoError(t, err) require.NotEmpty(t, encryptResp.Data) @@ -147,15 +153,44 @@ func TestEncryptAnonymous(t *testing.T) { }) require.NoError(t, err) require.Equal(t, message, string(decryptResp.Data)) + require.Nil(t, decryptResp.Sender) - // Encrypt - _, err = aliceService.Encrypt(context.TODO(), &EncryptRequest{ + // Encrypt (signcrypt) + encryptResp, err = aliceService.Encrypt(context.TODO(), &EncryptRequest{ Data: []byte(message), + Recipients: []string{bob.ID().String()}, Sender: "", + Options: &EncryptOptions{ + Mode: SaltpackSigncrypt, + }, + }) + require.NoError(t, err) + // Decrypt + decryptResp, err = bobService.Decrypt(context.TODO(), &DecryptRequest{ + Data: encryptResp.Data, + }) + require.NoError(t, err) + require.Equal(t, message, string(decryptResp.Data)) + require.Nil(t, decryptResp.Sender) + + // Encrypt (no sign) + encryptResp, err = aliceService.Encrypt(context.TODO(), &EncryptRequest{ + Data: []byte(message), Recipients: []string{bob.ID().String()}, - Mode: SaltpackSigncrypt, + Sender: alice.ID().String(), + Options: &EncryptOptions{ + NoSign: true, + }, + }) + require.NoError(t, err) + + // Decrypt + decryptResp, err = bobService.Decrypt(context.TODO(), &DecryptRequest{ + Data: encryptResp.Data, }) - require.EqualError(t, err, "no sender specified: sender is required for signcrypt mode") + require.NoError(t, err) + require.Equal(t, message, string(decryptResp.Data)) + require.Nil(t, decryptResp.Sender) } func TestEncryptDecryptStream(t *testing.T) { @@ -198,7 +233,7 @@ func testEncryptDecryptStream(t *testing.T, env *testEnv, require.NoError(t, err) require.Equal(t, plaintext, out) if mode == DefaultEncrypt { - require.Equal(t, SaltpackEncrypt, outMode) + require.Equal(t, SaltpackSigncrypt, outMode) } else { require.Equal(t, mode, outMode) } @@ -223,7 +258,9 @@ func testEncryptStream(t *testing.T, env *testEnv, service *service, plaintext [ err := streamClient.Send(&EncryptInput{ Recipients: recipients, Sender: sender, - Mode: mode, + Options: &EncryptOptions{ + Mode: mode, + }, }) require.NoError(t, err) for chunk := 0; true; chunk++ { @@ -392,7 +429,8 @@ func TestEncryptDecryptFile(t *testing.T) { aliceClient, aliceClientCloseFn := newTestRPCClient(t, aliceService, env, "", nil) defer aliceClientCloseFn() - err := encryptFile(aliceClient, []string{bob.ID().String()}, alice.ID().String(), SaltpackEncrypt, false, inPath, encPath) + options := &EncryptOptions{} + err := encryptFile(aliceClient, inPath, encPath, []string{bob.ID().String()}, alice.ID().String(), options) require.NoError(t, err) // encrypted, err := ioutil.ReadFile(outPath) @@ -448,9 +486,8 @@ func TestEncryptUnverified(t *testing.T) { // Encrypt (not found) _, err := aliceService.Encrypt(context.TODO(), &EncryptRequest{ Data: []byte("hi"), - Sender: "alice@github", Recipients: []string{"bob@github"}, - Mode: SaltpackEncrypt, + Sender: "alice@github", }) require.EqualError(t, err, "not found bob@github") @@ -464,9 +501,8 @@ func TestEncryptUnverified(t *testing.T) { // Encrypt (bob, error) _, err = aliceService.Encrypt(context.TODO(), &EncryptRequest{ Data: []byte("hi"), - Sender: "alice@github", Recipients: []string{"bob@github"}, - Mode: SaltpackEncrypt, + Sender: "alice@github", }) require.EqualError(t, err, "user bob@github has failed status connection-fail") } diff --git a/service/go.mod b/service/go.mod index a6f4acb4..2b3e0477 100644 --- a/service/go.mod +++ b/service/go.mod @@ -6,12 +6,12 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/gogo/protobuf v1.3.1 github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 - github.com/keys-pub/keys v0.1.4-0.20200824002606-35fcd5447248 + github.com/keys-pub/keys v0.1.5-0.20200902232619-dbce0fb698a8 github.com/keys-pub/keys-ext/auth/fido2 v0.0.0-20200618211325-4c2d562cade7 github.com/keys-pub/keys-ext/auth/mock v0.0.0-20200618212723-bf12ba4cbdc4 github.com/keys-pub/keys-ext/http/api v0.0.0-20200730003632-c95092bc23ed github.com/keys-pub/keys-ext/http/client v0.0.0-20200803194707-448c69038c86 - github.com/keys-pub/keys-ext/http/server v0.0.0-20200806191006-c5b2599598fc + github.com/keys-pub/keys-ext/http/server v0.0.0-20200825192458-6059b7a9e721 github.com/keys-pub/keys-ext/sdb v0.0.0-20200825192511-6a7266ee1a89 github.com/keys-pub/keys-ext/vault v0.0.0-20200808005108-46c67a19e234 github.com/keys-pub/keys-ext/wormhole v0.0.0-20200720193342-95c460ab609c diff --git a/service/go.sum b/service/go.sum index cc376f37..4f4eae97 100644 --- a/service/go.sum +++ b/service/go.sum @@ -164,6 +164,9 @@ github.com/keys-pub/keys v0.1.3-0.20200821040616-88d20ddbfb85 h1:zl4H1K6M4Slrg8N github.com/keys-pub/keys v0.1.3-0.20200821040616-88d20ddbfb85/go.mod h1:fp0YtOeEUxacxWJHipDOiPJygETVbNRkrKvnF82O2CM= github.com/keys-pub/keys v0.1.4-0.20200824002606-35fcd5447248 h1:3Jtq3456BjLdv7n8VZdZ51+Uy65a54oJegKH5Kb840k= github.com/keys-pub/keys v0.1.4-0.20200824002606-35fcd5447248/go.mod h1:fp0YtOeEUxacxWJHipDOiPJygETVbNRkrKvnF82O2CM= +github.com/keys-pub/keys v0.1.4-0.20200824221332-83e82adbf39d/go.mod h1:fp0YtOeEUxacxWJHipDOiPJygETVbNRkrKvnF82O2CM= +github.com/keys-pub/keys v0.1.5-0.20200902232619-dbce0fb698a8 h1:beb0+lAtBP6KYMNeCR1caW/w/Agk0J1liyQK/unN1Gg= +github.com/keys-pub/keys v0.1.5-0.20200902232619-dbce0fb698a8/go.mod h1:fp0YtOeEUxacxWJHipDOiPJygETVbNRkrKvnF82O2CM= github.com/keys-pub/keys-ext/auth/fido2 v0.0.0-20200613203701-f9bf15538783/go.mod h1:x/G3gwUe4ZbszY+qWXzvsy4nAun2b/ENISACWfwAB04= github.com/keys-pub/keys-ext/auth/fido2 v0.0.0-20200618211325-4c2d562cade7 h1:TuGKplA4KiBtjDBwa/Qi/H3Om0JhhK1cwSMD1917JsU= github.com/keys-pub/keys-ext/auth/fido2 v0.0.0-20200618211325-4c2d562cade7/go.mod h1:zCsXre409myb7Knish8aVBPYWSK96/KazhqYCumI+VA= @@ -198,6 +201,8 @@ github.com/keys-pub/keys-ext/http/server v0.0.0-20200803193934-036dcb4c6007 h1:a github.com/keys-pub/keys-ext/http/server v0.0.0-20200803193934-036dcb4c6007/go.mod h1:cIciTZPtDgl7zYKJ2ea/KE1/A6ulB5sQ+jEaTwZl60E= github.com/keys-pub/keys-ext/http/server v0.0.0-20200806191006-c5b2599598fc h1:ozuJsiAhIcbANa9SMKGT21DwwVJH4dJyWqHcP3toBbo= github.com/keys-pub/keys-ext/http/server v0.0.0-20200806191006-c5b2599598fc/go.mod h1:gyT2511hiCStGmbnKNLwbPTy3wr5l5bEs0nwvrB/yOw= +github.com/keys-pub/keys-ext/http/server v0.0.0-20200825192458-6059b7a9e721 h1:/eJoNKBpJgkdqvOZ5DftnBPopJuMF0Bd6dBqdqhwRBI= +github.com/keys-pub/keys-ext/http/server v0.0.0-20200825192458-6059b7a9e721/go.mod h1:KeIrnZAW+St1mOFWRz+U1gtSv6Ig7GaPfjvLaZdUsEs= github.com/keys-pub/keys-ext/sdb v0.0.0-20200720205921-e5e4095869e2 h1:eN02aSGivgQMrc+F0aa01SugHiMJWNik92c8NFN3SPg= github.com/keys-pub/keys-ext/sdb v0.0.0-20200720205921-e5e4095869e2/go.mod h1:a2kdlrU3Q860hDBlcpzqEzXMSQPh6C1rXdXmyVP8MGo= github.com/keys-pub/keys-ext/sdb v0.0.0-20200825192511-6a7266ee1a89 h1:lqDjjRzzfedN5io40va3Eto2c2n9MDV7uyhi/JCgF2g= diff --git a/service/keys.pb.go b/service/keys.pb.go index 7fc582e8..5c50db50 100644 --- a/service/keys.pb.go +++ b/service/keys.pb.go @@ -1495,27 +1495,72 @@ func (m *SignOutput) XXX_DiscardUnknown() { var xxx_messageInfo_SignOutput proto.InternalMessageInfo +type EncryptOptions struct { + // Armored, if true will return armored string output. + Armored bool `protobuf:"varint,1,opt,name=armored,proto3" json:"armored,omitempty"` + // Mode is the encryption mode. + Mode EncryptMode `protobuf:"varint,2,opt,name=mode,proto3,enum=service.EncryptMode" json:"mode,omitempty"` + // NoSenderRecipient if true, won't add sender to recipients list. + NoSenderRecipient bool `protobuf:"varint,3,opt,name=noSenderRecipient,proto3" json:"noSenderRecipient,omitempty"` + // NoSign if true, won't sign with sender. + NoSign bool `protobuf:"varint,4,opt,name=noSign,proto3" json:"noSign,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EncryptOptions) Reset() { *m = EncryptOptions{} } +func (m *EncryptOptions) String() string { return proto.CompactTextString(m) } +func (*EncryptOptions) ProtoMessage() {} +func (*EncryptOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_9084e97af2346a26, []int{25} +} +func (m *EncryptOptions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EncryptOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EncryptOptions.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EncryptOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_EncryptOptions.Merge(m, src) +} +func (m *EncryptOptions) XXX_Size() int { + return m.Size() +} +func (m *EncryptOptions) XXX_DiscardUnknown() { + xxx_messageInfo_EncryptOptions.DiscardUnknown(m) +} + +var xxx_messageInfo_EncryptOptions proto.InternalMessageInfo + type EncryptRequest struct { // Data to encrypt. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - // Armored, if true will return armored string output. - Armored bool `protobuf:"varint,10,opt,name=armored,proto3" json:"armored,omitempty"` // Recipients to encrypt to. - Recipients []string `protobuf:"bytes,11,rep,name=recipients,proto3" json:"recipients,omitempty"` - // Sender, or empty, if anonymous. - Sender string `protobuf:"bytes,12,opt,name=sender,proto3" json:"sender,omitempty"` - // Mode is the encryption mode. - Mode EncryptMode `protobuf:"varint,13,opt,name=mode,proto3,enum=service.EncryptMode" json:"mode,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Recipients []string `protobuf:"bytes,3,rep,name=recipients,proto3" json:"recipients,omitempty"` + // Sender, or anonymous. + Sender string `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"` + // Options for encrypt. + Options *EncryptOptions `protobuf:"bytes,10,opt,name=options,proto3" json:"options,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *EncryptRequest) Reset() { *m = EncryptRequest{} } func (m *EncryptRequest) String() string { return proto.CompactTextString(m) } func (*EncryptRequest) ProtoMessage() {} func (*EncryptRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{25} + return fileDescriptor_9084e97af2346a26, []int{26} } func (m *EncryptRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1546,6 +1591,7 @@ var xxx_messageInfo_EncryptRequest proto.InternalMessageInfo type EncryptResponse struct { Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Info string `protobuf:"bytes,2,opt,name=info,proto3" json:"info,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1555,7 +1601,7 @@ func (m *EncryptResponse) Reset() { *m = EncryptResponse{} } func (m *EncryptResponse) String() string { return proto.CompactTextString(m) } func (*EncryptResponse) ProtoMessage() {} func (*EncryptResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{26} + return fileDescriptor_9084e97af2346a26, []int{27} } func (m *EncryptResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1589,24 +1635,22 @@ type EncryptFileInput struct { In string `protobuf:"bytes,1,opt,name=in,proto3" json:"in,omitempty"` // Out is output file path. Out string `protobuf:"bytes,2,opt,name=out,proto3" json:"out,omitempty"` - // Armored, if true will return armored string output. - Armored bool `protobuf:"varint,10,opt,name=armored,proto3" json:"armored,omitempty"` // Recipients to encrypt to. - Recipients []string `protobuf:"bytes,11,rep,name=recipients,proto3" json:"recipients,omitempty"` - // Sender, or empty, if anonymous. - Sender string `protobuf:"bytes,12,opt,name=sender,proto3" json:"sender,omitempty"` - // Mode is the encryption mode. - Mode EncryptMode `protobuf:"varint,13,opt,name=mode,proto3,enum=service.EncryptMode" json:"mode,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Recipients []string `protobuf:"bytes,3,rep,name=recipients,proto3" json:"recipients,omitempty"` + // Sender, or anonymous. + Sender string `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"` + // Options for encrypt. + Options *EncryptOptions `protobuf:"bytes,10,opt,name=options,proto3" json:"options,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *EncryptFileInput) Reset() { *m = EncryptFileInput{} } func (m *EncryptFileInput) String() string { return proto.CompactTextString(m) } func (*EncryptFileInput) ProtoMessage() {} func (*EncryptFileInput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{27} + return fileDescriptor_9084e97af2346a26, []int{28} } func (m *EncryptFileInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1649,7 +1693,7 @@ func (m *EncryptFileOutput) Reset() { *m = EncryptFileOutput{} } func (m *EncryptFileOutput) String() string { return proto.CompactTextString(m) } func (*EncryptFileOutput) ProtoMessage() {} func (*EncryptFileOutput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{28} + return fileDescriptor_9084e97af2346a26, []int{29} } func (m *EncryptFileOutput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1681,24 +1725,22 @@ var xxx_messageInfo_EncryptFileOutput proto.InternalMessageInfo type EncryptInput struct { // Data to encrypt. Send empty byte slice as last message. Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - // Armored, if true will return armored string output. - Armored bool `protobuf:"varint,2,opt,name=armored,proto3" json:"armored,omitempty"` // Recipients to encrypt to. Recipients []string `protobuf:"bytes,3,rep,name=recipients,proto3" json:"recipients,omitempty"` - // Sender, or empty, if anonymous. + // Sender, or anonymous. Sender string `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"` - // Mode is the encryption mode. - Mode EncryptMode `protobuf:"varint,5,opt,name=mode,proto3,enum=service.EncryptMode" json:"mode,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // Options for encrypt. + Options *EncryptOptions `protobuf:"bytes,10,opt,name=options,proto3" json:"options,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *EncryptInput) Reset() { *m = EncryptInput{} } func (m *EncryptInput) String() string { return proto.CompactTextString(m) } func (*EncryptInput) ProtoMessage() {} func (*EncryptInput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{29} + return fileDescriptor_9084e97af2346a26, []int{30} } func (m *EncryptInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1739,7 +1781,7 @@ func (m *EncryptOutput) Reset() { *m = EncryptOutput{} } func (m *EncryptOutput) String() string { return proto.CompactTextString(m) } func (*EncryptOutput) ProtoMessage() {} func (*EncryptOutput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{30} + return fileDescriptor_9084e97af2346a26, []int{31} } func (m *EncryptOutput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1780,7 +1822,7 @@ func (m *DecryptRequest) Reset() { *m = DecryptRequest{} } func (m *DecryptRequest) String() string { return proto.CompactTextString(m) } func (*DecryptRequest) ProtoMessage() {} func (*DecryptRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{31} + return fileDescriptor_9084e97af2346a26, []int{32} } func (m *DecryptRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1825,7 +1867,7 @@ func (m *DecryptResponse) Reset() { *m = DecryptResponse{} } func (m *DecryptResponse) String() string { return proto.CompactTextString(m) } func (*DecryptResponse) ProtoMessage() {} func (*DecryptResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{32} + return fileDescriptor_9084e97af2346a26, []int{33} } func (m *DecryptResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1868,7 +1910,7 @@ func (m *DecryptFileInput) Reset() { *m = DecryptFileInput{} } func (m *DecryptFileInput) String() string { return proto.CompactTextString(m) } func (*DecryptFileInput) ProtoMessage() {} func (*DecryptFileInput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{33} + return fileDescriptor_9084e97af2346a26, []int{34} } func (m *DecryptFileInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1914,7 +1956,7 @@ func (m *DecryptFileOutput) Reset() { *m = DecryptFileOutput{} } func (m *DecryptFileOutput) String() string { return proto.CompactTextString(m) } func (*DecryptFileOutput) ProtoMessage() {} func (*DecryptFileOutput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{34} + return fileDescriptor_9084e97af2346a26, []int{35} } func (m *DecryptFileOutput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1955,7 +1997,7 @@ func (m *DecryptInput) Reset() { *m = DecryptInput{} } func (m *DecryptInput) String() string { return proto.CompactTextString(m) } func (*DecryptInput) ProtoMessage() {} func (*DecryptInput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{35} + return fileDescriptor_9084e97af2346a26, []int{36} } func (m *DecryptInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2000,7 +2042,7 @@ func (m *DecryptOutput) Reset() { *m = DecryptOutput{} } func (m *DecryptOutput) String() string { return proto.CompactTextString(m) } func (*DecryptOutput) ProtoMessage() {} func (*DecryptOutput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{36} + return fileDescriptor_9084e97af2346a26, []int{37} } func (m *DecryptOutput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2039,7 +2081,7 @@ func (m *RuntimeStatusRequest) Reset() { *m = RuntimeStatusRequest{} } func (m *RuntimeStatusRequest) String() string { return proto.CompactTextString(m) } func (*RuntimeStatusRequest) ProtoMessage() {} func (*RuntimeStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{37} + return fileDescriptor_9084e97af2346a26, []int{38} } func (m *RuntimeStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2090,7 +2132,7 @@ func (m *RuntimeStatusResponse) Reset() { *m = RuntimeStatusResponse{} } func (m *RuntimeStatusResponse) String() string { return proto.CompactTextString(m) } func (*RuntimeStatusResponse) ProtoMessage() {} func (*RuntimeStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{38} + return fileDescriptor_9084e97af2346a26, []int{39} } func (m *RuntimeStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2133,7 +2175,7 @@ func (m *AuthSetupRequest) Reset() { *m = AuthSetupRequest{} } func (m *AuthSetupRequest) String() string { return proto.CompactTextString(m) } func (*AuthSetupRequest) ProtoMessage() {} func (*AuthSetupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{39} + return fileDescriptor_9084e97af2346a26, []int{40} } func (m *AuthSetupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2172,7 +2214,7 @@ func (m *AuthSetupResponse) Reset() { *m = AuthSetupResponse{} } func (m *AuthSetupResponse) String() string { return proto.CompactTextString(m) } func (*AuthSetupResponse) ProtoMessage() {} func (*AuthSetupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{40} + return fileDescriptor_9084e97af2346a26, []int{41} } func (m *AuthSetupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2212,7 +2254,7 @@ func (m *AuthVaultRequest) Reset() { *m = AuthVaultRequest{} } func (m *AuthVaultRequest) String() string { return proto.CompactTextString(m) } func (*AuthVaultRequest) ProtoMessage() {} func (*AuthVaultRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{41} + return fileDescriptor_9084e97af2346a26, []int{42} } func (m *AuthVaultRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2251,7 +2293,7 @@ func (m *AuthVaultResponse) Reset() { *m = AuthVaultResponse{} } func (m *AuthVaultResponse) String() string { return proto.CompactTextString(m) } func (*AuthVaultResponse) ProtoMessage() {} func (*AuthVaultResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{42} + return fileDescriptor_9084e97af2346a26, []int{43} } func (m *AuthVaultResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2296,7 +2338,7 @@ func (m *AuthUnlockRequest) Reset() { *m = AuthUnlockRequest{} } func (m *AuthUnlockRequest) String() string { return proto.CompactTextString(m) } func (*AuthUnlockRequest) ProtoMessage() {} func (*AuthUnlockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{43} + return fileDescriptor_9084e97af2346a26, []int{44} } func (m *AuthUnlockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2337,7 +2379,7 @@ func (m *AuthUnlockResponse) Reset() { *m = AuthUnlockResponse{} } func (m *AuthUnlockResponse) String() string { return proto.CompactTextString(m) } func (*AuthUnlockResponse) ProtoMessage() {} func (*AuthUnlockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{44} + return fileDescriptor_9084e97af2346a26, []int{45} } func (m *AuthUnlockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2382,7 +2424,7 @@ func (m *AuthProvisionRequest) Reset() { *m = AuthProvisionRequest{} } func (m *AuthProvisionRequest) String() string { return proto.CompactTextString(m) } func (*AuthProvisionRequest) ProtoMessage() {} func (*AuthProvisionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{45} + return fileDescriptor_9084e97af2346a26, []int{46} } func (m *AuthProvisionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2422,7 +2464,7 @@ func (m *AuthProvisionResponse) Reset() { *m = AuthProvisionResponse{} } func (m *AuthProvisionResponse) String() string { return proto.CompactTextString(m) } func (*AuthProvisionResponse) ProtoMessage() {} func (*AuthProvisionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{46} + return fileDescriptor_9084e97af2346a26, []int{47} } func (m *AuthProvisionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2462,7 +2504,7 @@ func (m *AuthDeprovisionRequest) Reset() { *m = AuthDeprovisionRequest{} func (m *AuthDeprovisionRequest) String() string { return proto.CompactTextString(m) } func (*AuthDeprovisionRequest) ProtoMessage() {} func (*AuthDeprovisionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{47} + return fileDescriptor_9084e97af2346a26, []int{48} } func (m *AuthDeprovisionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2501,7 +2543,7 @@ func (m *AuthDeprovisionResponse) Reset() { *m = AuthDeprovisionResponse func (m *AuthDeprovisionResponse) String() string { return proto.CompactTextString(m) } func (*AuthDeprovisionResponse) ProtoMessage() {} func (*AuthDeprovisionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{48} + return fileDescriptor_9084e97af2346a26, []int{49} } func (m *AuthDeprovisionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2542,7 +2584,7 @@ func (m *PasswordChangeRequest) Reset() { *m = PasswordChangeRequest{} } func (m *PasswordChangeRequest) String() string { return proto.CompactTextString(m) } func (*PasswordChangeRequest) ProtoMessage() {} func (*PasswordChangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{49} + return fileDescriptor_9084e97af2346a26, []int{50} } func (m *PasswordChangeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2581,7 +2623,7 @@ func (m *PasswordChangeResponse) Reset() { *m = PasswordChangeResponse{} func (m *PasswordChangeResponse) String() string { return proto.CompactTextString(m) } func (*PasswordChangeResponse) ProtoMessage() {} func (*PasswordChangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{50} + return fileDescriptor_9084e97af2346a26, []int{51} } func (m *PasswordChangeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2627,7 +2669,7 @@ func (m *AuthProvision) Reset() { *m = AuthProvision{} } func (m *AuthProvision) String() string { return proto.CompactTextString(m) } func (*AuthProvision) ProtoMessage() {} func (*AuthProvision) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{51} + return fileDescriptor_9084e97af2346a26, []int{52} } func (m *AuthProvision) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2666,7 +2708,7 @@ func (m *AuthProvisionsRequest) Reset() { *m = AuthProvisionsRequest{} } func (m *AuthProvisionsRequest) String() string { return proto.CompactTextString(m) } func (*AuthProvisionsRequest) ProtoMessage() {} func (*AuthProvisionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{52} + return fileDescriptor_9084e97af2346a26, []int{53} } func (m *AuthProvisionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2706,7 +2748,7 @@ func (m *AuthProvisionsResponse) Reset() { *m = AuthProvisionsResponse{} func (m *AuthProvisionsResponse) String() string { return proto.CompactTextString(m) } func (*AuthProvisionsResponse) ProtoMessage() {} func (*AuthProvisionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{53} + return fileDescriptor_9084e97af2346a26, []int{54} } func (m *AuthProvisionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2745,7 +2787,7 @@ func (m *AuthLockRequest) Reset() { *m = AuthLockRequest{} } func (m *AuthLockRequest) String() string { return proto.CompactTextString(m) } func (*AuthLockRequest) ProtoMessage() {} func (*AuthLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{54} + return fileDescriptor_9084e97af2346a26, []int{55} } func (m *AuthLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2784,7 +2826,7 @@ func (m *AuthLockResponse) Reset() { *m = AuthLockResponse{} } func (m *AuthLockResponse) String() string { return proto.CompactTextString(m) } func (*AuthLockResponse) ProtoMessage() {} func (*AuthLockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{55} + return fileDescriptor_9084e97af2346a26, []int{56} } func (m *AuthLockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2824,7 +2866,7 @@ func (m *KeyGenerateRequest) Reset() { *m = KeyGenerateRequest{} } func (m *KeyGenerateRequest) String() string { return proto.CompactTextString(m) } func (*KeyGenerateRequest) ProtoMessage() {} func (*KeyGenerateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{56} + return fileDescriptor_9084e97af2346a26, []int{57} } func (m *KeyGenerateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2864,7 +2906,7 @@ func (m *KeyGenerateResponse) Reset() { *m = KeyGenerateResponse{} } func (m *KeyGenerateResponse) String() string { return proto.CompactTextString(m) } func (*KeyGenerateResponse) ProtoMessage() {} func (*KeyGenerateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{57} + return fileDescriptor_9084e97af2346a26, []int{58} } func (m *KeyGenerateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2907,7 +2949,7 @@ func (m *UserServiceRequest) Reset() { *m = UserServiceRequest{} } func (m *UserServiceRequest) String() string { return proto.CompactTextString(m) } func (*UserServiceRequest) ProtoMessage() {} func (*UserServiceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{58} + return fileDescriptor_9084e97af2346a26, []int{59} } func (m *UserServiceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2948,7 +2990,7 @@ func (m *UserServiceResponse) Reset() { *m = UserServiceResponse{} } func (m *UserServiceResponse) String() string { return proto.CompactTextString(m) } func (*UserServiceResponse) ProtoMessage() {} func (*UserServiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{59} + return fileDescriptor_9084e97af2346a26, []int{60} } func (m *UserServiceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2993,7 +3035,7 @@ func (m *UserSignRequest) Reset() { *m = UserSignRequest{} } func (m *UserSignRequest) String() string { return proto.CompactTextString(m) } func (*UserSignRequest) ProtoMessage() {} func (*UserSignRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{60} + return fileDescriptor_9084e97af2346a26, []int{61} } func (m *UserSignRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3036,7 +3078,7 @@ func (m *UserSignResponse) Reset() { *m = UserSignResponse{} } func (m *UserSignResponse) String() string { return proto.CompactTextString(m) } func (*UserSignResponse) ProtoMessage() {} func (*UserSignResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{61} + return fileDescriptor_9084e97af2346a26, []int{62} } func (m *UserSignResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3085,7 +3127,7 @@ func (m *UserAddRequest) Reset() { *m = UserAddRequest{} } func (m *UserAddRequest) String() string { return proto.CompactTextString(m) } func (*UserAddRequest) ProtoMessage() {} func (*UserAddRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{62} + return fileDescriptor_9084e97af2346a26, []int{63} } func (m *UserAddRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3126,7 +3168,7 @@ func (m *UserAddResponse) Reset() { *m = UserAddResponse{} } func (m *UserAddResponse) String() string { return proto.CompactTextString(m) } func (*UserAddResponse) ProtoMessage() {} func (*UserAddResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{63} + return fileDescriptor_9084e97af2346a26, []int{64} } func (m *UserAddResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3170,7 +3212,7 @@ func (m *KeyExportRequest) Reset() { *m = KeyExportRequest{} } func (m *KeyExportRequest) String() string { return proto.CompactTextString(m) } func (*KeyExportRequest) ProtoMessage() {} func (*KeyExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{64} + return fileDescriptor_9084e97af2346a26, []int{65} } func (m *KeyExportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3210,7 +3252,7 @@ func (m *KeyExportResponse) Reset() { *m = KeyExportResponse{} } func (m *KeyExportResponse) String() string { return proto.CompactTextString(m) } func (*KeyExportResponse) ProtoMessage() {} func (*KeyExportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{65} + return fileDescriptor_9084e97af2346a26, []int{66} } func (m *KeyExportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3251,7 +3293,7 @@ func (m *KeyImportRequest) Reset() { *m = KeyImportRequest{} } func (m *KeyImportRequest) String() string { return proto.CompactTextString(m) } func (*KeyImportRequest) ProtoMessage() {} func (*KeyImportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{66} + return fileDescriptor_9084e97af2346a26, []int{67} } func (m *KeyImportRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3291,7 +3333,7 @@ func (m *KeyImportResponse) Reset() { *m = KeyImportResponse{} } func (m *KeyImportResponse) String() string { return proto.CompactTextString(m) } func (*KeyImportResponse) ProtoMessage() {} func (*KeyImportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{67} + return fileDescriptor_9084e97af2346a26, []int{68} } func (m *KeyImportResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3332,7 +3374,7 @@ func (m *KeyRemoveRequest) Reset() { *m = KeyRemoveRequest{} } func (m *KeyRemoveRequest) String() string { return proto.CompactTextString(m) } func (*KeyRemoveRequest) ProtoMessage() {} func (*KeyRemoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{68} + return fileDescriptor_9084e97af2346a26, []int{69} } func (m *KeyRemoveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3371,7 +3413,7 @@ func (m *KeyRemoveResponse) Reset() { *m = KeyRemoveResponse{} } func (m *KeyRemoveResponse) String() string { return proto.CompactTextString(m) } func (*KeyRemoveResponse) ProtoMessage() {} func (*KeyRemoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{69} + return fileDescriptor_9084e97af2346a26, []int{70} } func (m *KeyRemoveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3421,7 +3463,7 @@ func (m *Key) Reset() { *m = Key{} } func (m *Key) String() string { return proto.CompactTextString(m) } func (*Key) ProtoMessage() {} func (*Key) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{70} + return fileDescriptor_9084e97af2346a26, []int{71} } func (m *Key) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3466,7 +3508,7 @@ func (m *KeyRequest) Reset() { *m = KeyRequest{} } func (m *KeyRequest) String() string { return proto.CompactTextString(m) } func (*KeyRequest) ProtoMessage() {} func (*KeyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{71} + return fileDescriptor_9084e97af2346a26, []int{72} } func (m *KeyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3506,7 +3548,7 @@ func (m *KeyResponse) Reset() { *m = KeyResponse{} } func (m *KeyResponse) String() string { return proto.CompactTextString(m) } func (*KeyResponse) ProtoMessage() {} func (*KeyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{72} + return fileDescriptor_9084e97af2346a26, []int{73} } func (m *KeyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3549,7 +3591,7 @@ func (m *KeysRequest) Reset() { *m = KeysRequest{} } func (m *KeysRequest) String() string { return proto.CompactTextString(m) } func (*KeysRequest) ProtoMessage() {} func (*KeysRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{73} + return fileDescriptor_9084e97af2346a26, []int{74} } func (m *KeysRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3591,7 +3633,7 @@ func (m *KeysResponse) Reset() { *m = KeysResponse{} } func (m *KeysResponse) String() string { return proto.CompactTextString(m) } func (*KeysResponse) ProtoMessage() {} func (*KeysResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{74} + return fileDescriptor_9084e97af2346a26, []int{75} } func (m *KeysResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3639,7 +3681,7 @@ func (m *Secret) Reset() { *m = Secret{} } func (m *Secret) String() string { return proto.CompactTextString(m) } func (*Secret) ProtoMessage() {} func (*Secret) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{75} + return fileDescriptor_9084e97af2346a26, []int{76} } func (m *Secret) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3679,7 +3721,7 @@ func (m *SecretRequest) Reset() { *m = SecretRequest{} } func (m *SecretRequest) String() string { return proto.CompactTextString(m) } func (*SecretRequest) ProtoMessage() {} func (*SecretRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{76} + return fileDescriptor_9084e97af2346a26, []int{77} } func (m *SecretRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3719,7 +3761,7 @@ func (m *SecretResponse) Reset() { *m = SecretResponse{} } func (m *SecretResponse) String() string { return proto.CompactTextString(m) } func (*SecretResponse) ProtoMessage() {} func (*SecretResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{77} + return fileDescriptor_9084e97af2346a26, []int{78} } func (m *SecretResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3759,7 +3801,7 @@ func (m *SecretSaveRequest) Reset() { *m = SecretSaveRequest{} } func (m *SecretSaveRequest) String() string { return proto.CompactTextString(m) } func (*SecretSaveRequest) ProtoMessage() {} func (*SecretSaveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{78} + return fileDescriptor_9084e97af2346a26, []int{79} } func (m *SecretSaveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3799,7 +3841,7 @@ func (m *SecretSaveResponse) Reset() { *m = SecretSaveResponse{} } func (m *SecretSaveResponse) String() string { return proto.CompactTextString(m) } func (*SecretSaveResponse) ProtoMessage() {} func (*SecretSaveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{79} + return fileDescriptor_9084e97af2346a26, []int{80} } func (m *SecretSaveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3839,7 +3881,7 @@ func (m *SecretRemoveRequest) Reset() { *m = SecretRemoveRequest{} } func (m *SecretRemoveRequest) String() string { return proto.CompactTextString(m) } func (*SecretRemoveRequest) ProtoMessage() {} func (*SecretRemoveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{80} + return fileDescriptor_9084e97af2346a26, []int{81} } func (m *SecretRemoveRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3878,7 +3920,7 @@ func (m *SecretRemoveResponse) Reset() { *m = SecretRemoveResponse{} } func (m *SecretRemoveResponse) String() string { return proto.CompactTextString(m) } func (*SecretRemoveResponse) ProtoMessage() {} func (*SecretRemoveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{81} + return fileDescriptor_9084e97af2346a26, []int{82} } func (m *SecretRemoveResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3920,7 +3962,7 @@ func (m *SecretsRequest) Reset() { *m = SecretsRequest{} } func (m *SecretsRequest) String() string { return proto.CompactTextString(m) } func (*SecretsRequest) ProtoMessage() {} func (*SecretsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{82} + return fileDescriptor_9084e97af2346a26, []int{83} } func (m *SecretsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3962,7 +4004,7 @@ func (m *SecretsResponse) Reset() { *m = SecretsResponse{} } func (m *SecretsResponse) String() string { return proto.CompactTextString(m) } func (*SecretsResponse) ProtoMessage() {} func (*SecretsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{83} + return fileDescriptor_9084e97af2346a26, []int{84} } func (m *SecretsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4002,7 +4044,7 @@ func (m *ItemRequest) Reset() { *m = ItemRequest{} } func (m *ItemRequest) String() string { return proto.CompactTextString(m) } func (*ItemRequest) ProtoMessage() {} func (*ItemRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{84} + return fileDescriptor_9084e97af2346a26, []int{85} } func (m *ItemRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4042,7 +4084,7 @@ func (m *ItemResponse) Reset() { *m = ItemResponse{} } func (m *ItemResponse) String() string { return proto.CompactTextString(m) } func (*ItemResponse) ProtoMessage() {} func (*ItemResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{85} + return fileDescriptor_9084e97af2346a26, []int{86} } func (m *ItemResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4082,7 +4124,7 @@ func (m *ItemsRequest) Reset() { *m = ItemsRequest{} } func (m *ItemsRequest) String() string { return proto.CompactTextString(m) } func (*ItemsRequest) ProtoMessage() {} func (*ItemsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{86} + return fileDescriptor_9084e97af2346a26, []int{87} } func (m *ItemsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4122,7 +4164,7 @@ func (m *ItemsResponse) Reset() { *m = ItemsResponse{} } func (m *ItemsResponse) String() string { return proto.CompactTextString(m) } func (*ItemsResponse) ProtoMessage() {} func (*ItemsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{87} + return fileDescriptor_9084e97af2346a26, []int{88} } func (m *ItemsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4163,7 +4205,7 @@ func (m *Item) Reset() { *m = Item{} } func (m *Item) String() string { return proto.CompactTextString(m) } func (*Item) ProtoMessage() {} func (*Item) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{88} + return fileDescriptor_9084e97af2346a26, []int{89} } func (m *Item) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4206,7 +4248,7 @@ func (m *RandRequest) Reset() { *m = RandRequest{} } func (m *RandRequest) String() string { return proto.CompactTextString(m) } func (*RandRequest) ProtoMessage() {} func (*RandRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{89} + return fileDescriptor_9084e97af2346a26, []int{90} } func (m *RandRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4246,7 +4288,7 @@ func (m *RandResponse) Reset() { *m = RandResponse{} } func (m *RandResponse) String() string { return proto.CompactTextString(m) } func (*RandResponse) ProtoMessage() {} func (*RandResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{90} + return fileDescriptor_9084e97af2346a26, []int{91} } func (m *RandResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4286,7 +4328,7 @@ func (m *RandPasswordRequest) Reset() { *m = RandPasswordRequest{} } func (m *RandPasswordRequest) String() string { return proto.CompactTextString(m) } func (*RandPasswordRequest) ProtoMessage() {} func (*RandPasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{91} + return fileDescriptor_9084e97af2346a26, []int{92} } func (m *RandPasswordRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4326,7 +4368,7 @@ func (m *RandPasswordResponse) Reset() { *m = RandPasswordResponse{} } func (m *RandPasswordResponse) String() string { return proto.CompactTextString(m) } func (*RandPasswordResponse) ProtoMessage() {} func (*RandPasswordResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{92} + return fileDescriptor_9084e97af2346a26, []int{93} } func (m *RandPasswordResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4366,7 +4408,7 @@ func (m *PullRequest) Reset() { *m = PullRequest{} } func (m *PullRequest) String() string { return proto.CompactTextString(m) } func (*PullRequest) ProtoMessage() {} func (*PullRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{93} + return fileDescriptor_9084e97af2346a26, []int{94} } func (m *PullRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4406,7 +4448,7 @@ func (m *PullResponse) Reset() { *m = PullResponse{} } func (m *PullResponse) String() string { return proto.CompactTextString(m) } func (*PullResponse) ProtoMessage() {} func (*PullResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{94} + return fileDescriptor_9084e97af2346a26, []int{95} } func (m *PullResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4447,7 +4489,7 @@ func (m *PushRequest) Reset() { *m = PushRequest{} } func (m *PushRequest) String() string { return proto.CompactTextString(m) } func (*PushRequest) ProtoMessage() {} func (*PushRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{95} + return fileDescriptor_9084e97af2346a26, []int{96} } func (m *PushRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4488,7 +4530,7 @@ func (m *PushResponse) Reset() { *m = PushResponse{} } func (m *PushResponse) String() string { return proto.CompactTextString(m) } func (*PushResponse) ProtoMessage() {} func (*PushResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{96} + return fileDescriptor_9084e97af2346a26, []int{97} } func (m *PushResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4528,7 +4570,7 @@ func (m *Collection) Reset() { *m = Collection{} } func (m *Collection) String() string { return proto.CompactTextString(m) } func (*Collection) ProtoMessage() {} func (*Collection) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{97} + return fileDescriptor_9084e97af2346a26, []int{98} } func (m *Collection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4570,7 +4612,7 @@ func (m *CollectionsRequest) Reset() { *m = CollectionsRequest{} } func (m *CollectionsRequest) String() string { return proto.CompactTextString(m) } func (*CollectionsRequest) ProtoMessage() {} func (*CollectionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{98} + return fileDescriptor_9084e97af2346a26, []int{99} } func (m *CollectionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4610,7 +4652,7 @@ func (m *CollectionsResponse) Reset() { *m = CollectionsResponse{} } func (m *CollectionsResponse) String() string { return proto.CompactTextString(m) } func (*CollectionsResponse) ProtoMessage() {} func (*CollectionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{99} + return fileDescriptor_9084e97af2346a26, []int{100} } func (m *CollectionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4653,7 +4695,7 @@ func (m *Document) Reset() { *m = Document{} } func (m *Document) String() string { return proto.CompactTextString(m) } func (*Document) ProtoMessage() {} func (*Document) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{100} + return fileDescriptor_9084e97af2346a26, []int{101} } func (m *Document) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4695,7 +4737,7 @@ func (m *DocumentsRequest) Reset() { *m = DocumentsRequest{} } func (m *DocumentsRequest) String() string { return proto.CompactTextString(m) } func (*DocumentsRequest) ProtoMessage() {} func (*DocumentsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{101} + return fileDescriptor_9084e97af2346a26, []int{102} } func (m *DocumentsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4735,7 +4777,7 @@ func (m *DocumentsResponse) Reset() { *m = DocumentsResponse{} } func (m *DocumentsResponse) String() string { return proto.CompactTextString(m) } func (*DocumentsResponse) ProtoMessage() {} func (*DocumentsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{102} + return fileDescriptor_9084e97af2346a26, []int{103} } func (m *DocumentsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4776,7 +4818,7 @@ func (m *DocumentDeleteRequest) Reset() { *m = DocumentDeleteRequest{} } func (m *DocumentDeleteRequest) String() string { return proto.CompactTextString(m) } func (*DocumentDeleteRequest) ProtoMessage() {} func (*DocumentDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{103} + return fileDescriptor_9084e97af2346a26, []int{104} } func (m *DocumentDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4815,7 +4857,7 @@ func (m *DocumentDeleteResponse) Reset() { *m = DocumentDeleteResponse{} func (m *DocumentDeleteResponse) String() string { return proto.CompactTextString(m) } func (*DocumentDeleteResponse) ProtoMessage() {} func (*DocumentDeleteResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{104} + return fileDescriptor_9084e97af2346a26, []int{105} } func (m *DocumentDeleteResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4864,7 +4906,7 @@ func (m *User) Reset() { *m = User{} } func (m *User) String() string { return proto.CompactTextString(m) } func (*User) ProtoMessage() {} func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{105} + return fileDescriptor_9084e97af2346a26, []int{106} } func (m *User) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4905,7 +4947,7 @@ func (m *UserRequest) Reset() { *m = UserRequest{} } func (m *UserRequest) String() string { return proto.CompactTextString(m) } func (*UserRequest) ProtoMessage() {} func (*UserRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{106} + return fileDescriptor_9084e97af2346a26, []int{107} } func (m *UserRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4945,7 +4987,7 @@ func (m *UserResponse) Reset() { *m = UserResponse{} } func (m *UserResponse) String() string { return proto.CompactTextString(m) } func (*UserResponse) ProtoMessage() {} func (*UserResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{107} + return fileDescriptor_9084e97af2346a26, []int{108} } func (m *UserResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4987,7 +5029,7 @@ func (m *UserSearchRequest) Reset() { *m = UserSearchRequest{} } func (m *UserSearchRequest) String() string { return proto.CompactTextString(m) } func (*UserSearchRequest) ProtoMessage() {} func (*UserSearchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{108} + return fileDescriptor_9084e97af2346a26, []int{109} } func (m *UserSearchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5027,7 +5069,7 @@ func (m *UserSearchResponse) Reset() { *m = UserSearchResponse{} } func (m *UserSearchResponse) String() string { return proto.CompactTextString(m) } func (*UserSearchResponse) ProtoMessage() {} func (*UserSearchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{109} + return fileDescriptor_9084e97af2346a26, []int{110} } func (m *UserSearchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5067,7 +5109,7 @@ func (m *SearchRequest) Reset() { *m = SearchRequest{} } func (m *SearchRequest) String() string { return proto.CompactTextString(m) } func (*SearchRequest) ProtoMessage() {} func (*SearchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{110} + return fileDescriptor_9084e97af2346a26, []int{111} } func (m *SearchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5107,7 +5149,7 @@ func (m *SearchResponse) Reset() { *m = SearchResponse{} } func (m *SearchResponse) String() string { return proto.CompactTextString(m) } func (*SearchResponse) ProtoMessage() {} func (*SearchResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{111} + return fileDescriptor_9084e97af2346a26, []int{112} } func (m *SearchResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5146,7 +5188,7 @@ func (m *VaultSyncRequest) Reset() { *m = VaultSyncRequest{} } func (m *VaultSyncRequest) String() string { return proto.CompactTextString(m) } func (*VaultSyncRequest) ProtoMessage() {} func (*VaultSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{112} + return fileDescriptor_9084e97af2346a26, []int{113} } func (m *VaultSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5185,7 +5227,7 @@ func (m *VaultSyncResponse) Reset() { *m = VaultSyncResponse{} } func (m *VaultSyncResponse) String() string { return proto.CompactTextString(m) } func (*VaultSyncResponse) ProtoMessage() {} func (*VaultSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{113} + return fileDescriptor_9084e97af2346a26, []int{114} } func (m *VaultSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5224,7 +5266,7 @@ func (m *VaultUnsyncRequest) Reset() { *m = VaultUnsyncRequest{} } func (m *VaultUnsyncRequest) String() string { return proto.CompactTextString(m) } func (*VaultUnsyncRequest) ProtoMessage() {} func (*VaultUnsyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{114} + return fileDescriptor_9084e97af2346a26, []int{115} } func (m *VaultUnsyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5263,7 +5305,7 @@ func (m *VaultUnsyncResponse) Reset() { *m = VaultUnsyncResponse{} } func (m *VaultUnsyncResponse) String() string { return proto.CompactTextString(m) } func (*VaultUnsyncResponse) ProtoMessage() {} func (*VaultUnsyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{115} + return fileDescriptor_9084e97af2346a26, []int{116} } func (m *VaultUnsyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5302,7 +5344,7 @@ func (m *VaultAuthRequest) Reset() { *m = VaultAuthRequest{} } func (m *VaultAuthRequest) String() string { return proto.CompactTextString(m) } func (*VaultAuthRequest) ProtoMessage() {} func (*VaultAuthRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{116} + return fileDescriptor_9084e97af2346a26, []int{117} } func (m *VaultAuthRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5342,7 +5384,7 @@ func (m *VaultAuthResponse) Reset() { *m = VaultAuthResponse{} } func (m *VaultAuthResponse) String() string { return proto.CompactTextString(m) } func (*VaultAuthResponse) ProtoMessage() {} func (*VaultAuthResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{117} + return fileDescriptor_9084e97af2346a26, []int{118} } func (m *VaultAuthResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5381,7 +5423,7 @@ func (m *VaultStatusRequest) Reset() { *m = VaultStatusRequest{} } func (m *VaultStatusRequest) String() string { return proto.CompactTextString(m) } func (*VaultStatusRequest) ProtoMessage() {} func (*VaultStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{118} + return fileDescriptor_9084e97af2346a26, []int{119} } func (m *VaultStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5422,7 +5464,7 @@ func (m *VaultStatusResponse) Reset() { *m = VaultStatusResponse{} } func (m *VaultStatusResponse) String() string { return proto.CompactTextString(m) } func (*VaultStatusResponse) ProtoMessage() {} func (*VaultStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{119} + return fileDescriptor_9084e97af2346a26, []int{120} } func (m *VaultStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5461,7 +5503,7 @@ func (m *VaultUpdateRequest) Reset() { *m = VaultUpdateRequest{} } func (m *VaultUpdateRequest) String() string { return proto.CompactTextString(m) } func (*VaultUpdateRequest) ProtoMessage() {} func (*VaultUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{120} + return fileDescriptor_9084e97af2346a26, []int{121} } func (m *VaultUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5500,7 +5542,7 @@ func (m *VaultUpdateResponse) Reset() { *m = VaultUpdateResponse{} } func (m *VaultUpdateResponse) String() string { return proto.CompactTextString(m) } func (*VaultUpdateResponse) ProtoMessage() {} func (*VaultUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{121} + return fileDescriptor_9084e97af2346a26, []int{122} } func (m *VaultUpdateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5545,7 +5587,7 @@ func (m *WormholeInput) Reset() { *m = WormholeInput{} } func (m *WormholeInput) String() string { return proto.CompactTextString(m) } func (*WormholeInput) ProtoMessage() {} func (*WormholeInput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{122} + return fileDescriptor_9084e97af2346a26, []int{123} } func (m *WormholeInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5586,7 +5628,7 @@ func (m *WormholeOutput) Reset() { *m = WormholeOutput{} } func (m *WormholeOutput) String() string { return proto.CompactTextString(m) } func (*WormholeOutput) ProtoMessage() {} func (*WormholeOutput) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{123} + return fileDescriptor_9084e97af2346a26, []int{124} } func (m *WormholeOutput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5633,7 +5675,7 @@ func (m *Message) Reset() { *m = Message{} } func (m *Message) String() string { return proto.CompactTextString(m) } func (*Message) ProtoMessage() {} func (*Message) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{124} + return fileDescriptor_9084e97af2346a26, []int{125} } func (m *Message) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5674,7 +5716,7 @@ func (m *Content) Reset() { *m = Content{} } func (m *Content) String() string { return proto.CompactTextString(m) } func (*Content) ProtoMessage() {} func (*Content) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{125} + return fileDescriptor_9084e97af2346a26, []int{126} } func (m *Content) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5716,7 +5758,7 @@ func (m *MessagePrepareRequest) Reset() { *m = MessagePrepareRequest{} } func (m *MessagePrepareRequest) String() string { return proto.CompactTextString(m) } func (*MessagePrepareRequest) ProtoMessage() {} func (*MessagePrepareRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{126} + return fileDescriptor_9084e97af2346a26, []int{127} } func (m *MessagePrepareRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5756,7 +5798,7 @@ func (m *MessagePrepareResponse) Reset() { *m = MessagePrepareResponse{} func (m *MessagePrepareResponse) String() string { return proto.CompactTextString(m) } func (*MessagePrepareResponse) ProtoMessage() {} func (*MessagePrepareResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{127} + return fileDescriptor_9084e97af2346a26, []int{128} } func (m *MessagePrepareResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5798,7 +5840,7 @@ func (m *MessageCreateRequest) Reset() { *m = MessageCreateRequest{} } func (m *MessageCreateRequest) String() string { return proto.CompactTextString(m) } func (*MessageCreateRequest) ProtoMessage() {} func (*MessageCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{128} + return fileDescriptor_9084e97af2346a26, []int{129} } func (m *MessageCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5838,7 +5880,7 @@ func (m *MessageCreateResponse) Reset() { *m = MessageCreateResponse{} } func (m *MessageCreateResponse) String() string { return proto.CompactTextString(m) } func (*MessageCreateResponse) ProtoMessage() {} func (*MessageCreateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{129} + return fileDescriptor_9084e97af2346a26, []int{130} } func (m *MessageCreateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5879,7 +5921,7 @@ func (m *MessagesRequest) Reset() { *m = MessagesRequest{} } func (m *MessagesRequest) String() string { return proto.CompactTextString(m) } func (*MessagesRequest) ProtoMessage() {} func (*MessagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{130} + return fileDescriptor_9084e97af2346a26, []int{131} } func (m *MessagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5919,7 +5961,7 @@ func (m *MessagesResponse) Reset() { *m = MessagesResponse{} } func (m *MessagesResponse) String() string { return proto.CompactTextString(m) } func (*MessagesResponse) ProtoMessage() {} func (*MessagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{131} + return fileDescriptor_9084e97af2346a26, []int{132} } func (m *MessagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5961,7 +6003,7 @@ func (m *AdminSignURLRequest) Reset() { *m = AdminSignURLRequest{} } func (m *AdminSignURLRequest) String() string { return proto.CompactTextString(m) } func (*AdminSignURLRequest) ProtoMessage() {} func (*AdminSignURLRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{132} + return fileDescriptor_9084e97af2346a26, []int{133} } func (m *AdminSignURLRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6003,7 +6045,7 @@ func (m *AdminSignURLResponse) Reset() { *m = AdminSignURLResponse{} } func (m *AdminSignURLResponse) String() string { return proto.CompactTextString(m) } func (*AdminSignURLResponse) ProtoMessage() {} func (*AdminSignURLResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{133} + return fileDescriptor_9084e97af2346a26, []int{134} } func (m *AdminSignURLResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6044,7 +6086,7 @@ func (m *AdminCheckRequest) Reset() { *m = AdminCheckRequest{} } func (m *AdminCheckRequest) String() string { return proto.CompactTextString(m) } func (*AdminCheckRequest) ProtoMessage() {} func (*AdminCheckRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{134} + return fileDescriptor_9084e97af2346a26, []int{135} } func (m *AdminCheckRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6083,7 +6125,7 @@ func (m *AdminCheckResponse) Reset() { *m = AdminCheckResponse{} } func (m *AdminCheckResponse) String() string { return proto.CompactTextString(m) } func (*AdminCheckResponse) ProtoMessage() {} func (*AdminCheckResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9084e97af2346a26, []int{135} + return fileDescriptor_9084e97af2346a26, []int{136} } func (m *AdminCheckResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6150,6 +6192,7 @@ func init() { proto.RegisterType((*StatementRevokeResponse)(nil), "service.StatementRevokeResponse") proto.RegisterType((*SignInput)(nil), "service.SignInput") proto.RegisterType((*SignOutput)(nil), "service.SignOutput") + proto.RegisterType((*EncryptOptions)(nil), "service.EncryptOptions") proto.RegisterType((*EncryptRequest)(nil), "service.EncryptRequest") proto.RegisterType((*EncryptResponse)(nil), "service.EncryptResponse") proto.RegisterType((*EncryptFileInput)(nil), "service.EncryptFileInput") @@ -6266,323 +6309,326 @@ func init() { func init() { proto.RegisterFile("keys.proto", fileDescriptor_9084e97af2346a26) } var fileDescriptor_9084e97af2346a26 = []byte{ - // 5044 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3c, 0x4d, 0x6f, 0x23, 0xc7, - 0x72, 0x1a, 0x52, 0x5f, 0x2c, 0x52, 0xd2, 0x68, 0x44, 0x69, 0xb9, 0xf3, 0x64, 0x89, 0x6e, 0xdb, - 0x6f, 0x65, 0xd9, 0xeb, 0x0f, 0xad, 0x77, 0x61, 0x67, 0x9f, 0x9d, 0x47, 0x91, 0xd4, 0x4a, 0x96, - 0x56, 0xd2, 0x1b, 0x52, 0xfe, 0xc8, 0x43, 0xa0, 0x37, 0x4b, 0xf6, 0x4a, 0x13, 0x51, 0x33, 0xf4, - 0x0c, 0xa9, 0xb5, 0x4e, 0x01, 0xde, 0x29, 0x10, 0x02, 0x3c, 0x04, 0xc8, 0x21, 0x39, 0xe8, 0x21, - 0x41, 0x3e, 0x91, 0x5c, 0x02, 0xe4, 0x16, 0xe4, 0x9c, 0xf8, 0x18, 0xe4, 0xf4, 0x72, 0x59, 0xc4, - 0x8b, 0x1c, 0x72, 0x0c, 0x90, 0x3f, 0x10, 0xf4, 0xd7, 0x4c, 0xf7, 0xcc, 0x90, 0x92, 0xec, 0x35, - 0x72, 0x63, 0x57, 0x57, 0x57, 0x57, 0x55, 0x57, 0x57, 0x57, 0x77, 0xd5, 0x10, 0xe0, 0x04, 0x9f, - 0x07, 0xef, 0x74, 0x7d, 0xaf, 0xe7, 0x19, 0x13, 0x01, 0xf6, 0xcf, 0x9c, 0x16, 0x36, 0x8b, 0x47, - 0xde, 0x91, 0x47, 0x61, 0xef, 0x92, 0x5f, 0xac, 0x1b, 0x79, 0x90, 0x6f, 0x38, 0x47, 0xae, 0x85, - 0xbf, 0xea, 0xe3, 0xa0, 0x67, 0x18, 0x30, 0xda, 0xb6, 0x7b, 0x76, 0x49, 0x2b, 0x6b, 0x2b, 0x05, - 0x8b, 0xfe, 0x36, 0x16, 0x60, 0x3c, 0x70, 0x8e, 0x5c, 0xec, 0x97, 0xc6, 0xca, 0xda, 0x4a, 0xce, - 0xe2, 0x2d, 0xa3, 0x04, 0x13, 0xb6, 0x7f, 0xea, 0xf9, 0xb8, 0x5d, 0x82, 0xb2, 0xb6, 0x32, 0x69, - 0x89, 0xa6, 0x61, 0xc2, 0x64, 0x1b, 0xf7, 0xec, 0xd6, 0x31, 0x6e, 0x97, 0xf2, 0xb4, 0x2b, 0x6c, - 0xa3, 0x8f, 0xa1, 0xc0, 0x26, 0x0c, 0xba, 0x9e, 0x1b, 0xe0, 0xd4, 0x19, 0x6f, 0x43, 0xf6, 0xc4, - 0x69, 0x97, 0x32, 0x64, 0xba, 0xf5, 0x89, 0x17, 0xcf, 0x97, 0xb3, 0xdb, 0x5b, 0x35, 0x8b, 0xc0, - 0xd0, 0xef, 0xc3, 0x14, 0x19, 0xbe, 0xe1, 0x74, 0xf0, 0x96, 0xdb, 0xed, 0xf7, 0x8c, 0x69, 0xc8, - 0x38, 0x2e, 0x1d, 0x9d, 0xb3, 0x32, 0x8e, 0x6b, 0xe8, 0x90, 0xf5, 0xfa, 0x3d, 0x36, 0xd6, 0x22, - 0x3f, 0x5f, 0x32, 0xff, 0x0e, 0x4c, 0x0b, 0x06, 0xf6, 0xfa, 0x3d, 0xc2, 0x01, 0xe7, 0x56, 0x4b, - 0x72, 0x9b, 0xc2, 0x4c, 0x11, 0xc6, 0x9e, 0x9c, 0xf7, 0x70, 0x40, 0xa7, 0x1c, 0xb3, 0x58, 0x83, - 0x40, 0x7b, 0x5e, 0xcf, 0xee, 0xd0, 0xd9, 0xc6, 0x2c, 0xd6, 0x40, 0xaf, 0xc1, 0xd4, 0x67, 0xd8, - 0x77, 0x9e, 0x9e, 0x0f, 0x59, 0x1d, 0xf4, 0x29, 0x4c, 0x0b, 0xa4, 0x21, 0x1a, 0x7d, 0x3d, 0xd4, - 0x01, 0xe1, 0x25, 0xbf, 0x56, 0x78, 0x87, 0x9b, 0xc5, 0x3b, 0xdb, 0xf8, 0x5c, 0x68, 0x04, 0x7d, - 0x0c, 0xf3, 0x8c, 0x56, 0x8d, 0x4b, 0x3b, 0xcc, 0x2c, 0x74, 0xc8, 0x06, 0xce, 0x11, 0xa5, 0x57, - 0xb0, 0xc8, 0x4f, 0xf4, 0x09, 0x2c, 0xc4, 0x87, 0x73, 0x96, 0xa2, 0xe9, 0xb5, 0x21, 0xd3, 0xbf, - 0x0a, 0x79, 0x36, 0x9e, 0xad, 0x6c, 0x9a, 0xb4, 0x9b, 0x50, 0x60, 0x28, 0x5c, 0xf7, 0xdf, 0x5d, - 0xd6, 0x7b, 0x30, 0xc3, 0x28, 0xdd, 0xc0, 0x94, 0xd0, 0xa7, 0xa0, 0x47, 0x83, 0x38, 0x0b, 0xd7, - 0x92, 0x2d, 0x85, 0xd6, 0x43, 0xb8, 0xa5, 0x6a, 0x6b, 0x28, 0x23, 0x31, 0x55, 0x3f, 0x84, 0x39, - 0x75, 0xf0, 0x40, 0x95, 0xa5, 0x0c, 0xfe, 0x67, 0x0d, 0x72, 0x8d, 0x9e, 0xdd, 0xc3, 0xa7, 0xd8, - 0xed, 0x89, 0x7e, 0x2d, 0xec, 0x0f, 0xa9, 0x64, 0x92, 0x5b, 0x32, 0x9b, 0x6e, 0xe4, 0x01, 0xfe, - 0xaa, 0x34, 0x4a, 0x4d, 0x97, 0xfc, 0x24, 0x04, 0xba, 0x3e, 0x3e, 0xa3, 0xfb, 0xad, 0x60, 0xd1, - 0xdf, 0x64, 0x17, 0xfa, 0xf8, 0xcc, 0x3b, 0xc1, 0xa5, 0x71, 0x8a, 0xc8, 0x5b, 0xc6, 0x22, 0xe4, - 0x7a, 0xce, 0x29, 0x0e, 0x7a, 0xf6, 0x69, 0xb7, 0x34, 0x51, 0xd6, 0x56, 0xb2, 0x56, 0x04, 0x20, - 0x94, 0x7a, 0xe7, 0x5d, 0x5c, 0x9a, 0xa4, 0xba, 0xa0, 0xbf, 0xd1, 0xdb, 0x30, 0xd3, 0x70, 0x8e, - 0x5a, 0xc7, 0xb6, 0x13, 0xba, 0xad, 0xc1, 0x5b, 0x10, 0x3d, 0x05, 0x3d, 0xc2, 0xe6, 0xe6, 0xb8, - 0x04, 0xd9, 0x13, 0x7c, 0x9e, 0xba, 0x5e, 0xa4, 0xc3, 0x58, 0x03, 0x08, 0x84, 0x7e, 0x82, 0x52, - 0xa6, 0x9c, 0x5d, 0xc9, 0xaf, 0x19, 0x21, 0x5a, 0xa8, 0x3a, 0x4b, 0xc2, 0x42, 0xbf, 0x0d, 0x7a, - 0xd4, 0x71, 0x25, 0x5b, 0x42, 0x69, 0x99, 0x50, 0x69, 0xa8, 0x0e, 0xb3, 0x12, 0x01, 0xce, 0xe9, - 0x7b, 0x90, 0x0b, 0xe7, 0xe0, 0xfc, 0xa6, 0x31, 0x12, 0x21, 0xa1, 0xdf, 0x85, 0x85, 0x10, 0x5e, - 0xf5, 0xb1, 0xdd, 0xc3, 0xc3, 0x36, 0xf1, 0x60, 0x4f, 0x4b, 0x7c, 0x52, 0xc7, 0x6b, 0xd9, 0x1d, - 0xba, 0x8a, 0x93, 0x16, 0x6b, 0xa0, 0x6d, 0xb8, 0x95, 0x20, 0xff, 0x9d, 0x79, 0xfd, 0xb9, 0xc4, - 0xab, 0x45, 0xcd, 0x41, 0xf0, 0xca, 0xd5, 0xa3, 0x45, 0x36, 0xf5, 0xbd, 0x38, 0x15, 0xc4, 0xbf, - 0x33, 0xa7, 0xbf, 0x22, 0x5b, 0xc6, 0x39, 0x72, 0x07, 0x6f, 0x33, 0xb6, 0x67, 0x33, 0x71, 0xe7, - 0x91, 0xfd, 0xa1, 0xce, 0xa1, 0x87, 0x00, 0x84, 0xa1, 0x21, 0x7e, 0x70, 0xc8, 0x29, 0xfa, 0x67, - 0x1a, 0x4c, 0xd7, 0xdd, 0x96, 0x7f, 0xde, 0xed, 0x0d, 0xb3, 0x8e, 0xc1, 0x9c, 0x2d, 0x01, 0xf8, - 0xb8, 0xe5, 0x74, 0x1d, 0xba, 0x43, 0xf2, 0xe5, 0xec, 0x4a, 0xce, 0x92, 0x20, 0x54, 0x56, 0xec, - 0xb6, 0xb1, 0x5f, 0x2a, 0x70, 0x59, 0x69, 0xcb, 0x58, 0x81, 0xd1, 0x53, 0xaf, 0x8d, 0x4b, 0x53, - 0x65, 0x6d, 0x65, 0x7a, 0xad, 0x18, 0x2a, 0x9d, 0x33, 0xf3, 0xd8, 0x6b, 0x63, 0x8b, 0x62, 0xa0, - 0x37, 0x60, 0x26, 0xe4, 0x70, 0xf0, 0xc1, 0x86, 0xfe, 0x41, 0x03, 0x9d, 0xe3, 0xdd, 0x24, 0x26, - 0xf8, 0xff, 0x94, 0xec, 0x67, 0x30, 0x2b, 0x71, 0xcc, 0x17, 0xf0, 0xfb, 0x45, 0x0a, 0xbf, 0xd6, - 0xa0, 0xc0, 0x69, 0x0e, 0xb6, 0x50, 0x49, 0xe6, 0xcc, 0x30, 0x99, 0xb3, 0x43, 0x64, 0x1e, 0x4d, - 0x95, 0x79, 0xec, 0x4a, 0x99, 0x5f, 0x83, 0x29, 0x0e, 0x1c, 0x6c, 0xb0, 0xe8, 0x75, 0x98, 0xae, - 0xe1, 0xab, 0x8c, 0x12, 0xf5, 0x61, 0x26, 0xc4, 0xba, 0x22, 0xe2, 0x61, 0x3c, 0xa7, 0x47, 0x01, - 0x37, 0x95, 0xe0, 0x03, 0xd0, 0xf9, 0xb4, 0x37, 0x09, 0x18, 0xfe, 0x5c, 0x83, 0x59, 0x69, 0x98, - 0x14, 0x32, 0x30, 0xde, 0xb4, 0x21, 0xbc, 0x7d, 0x2f, 0x93, 0xb8, 0x81, 0x64, 0x08, 0x0a, 0x9c, - 0xc5, 0xc1, 0x71, 0x57, 0x00, 0x53, 0x1c, 0xe7, 0x8a, 0xc0, 0xeb, 0x65, 0xaa, 0x7c, 0x01, 0x8a, - 0x56, 0xdf, 0x25, 0xc1, 0x00, 0xf1, 0xc9, 0xfd, 0x80, 0x5b, 0x05, 0xfa, 0x57, 0x0d, 0xe6, 0x63, - 0x1d, 0xdc, 0x10, 0x4a, 0x30, 0x71, 0x86, 0xfd, 0xc0, 0xf1, 0xc4, 0xaa, 0x88, 0x26, 0x35, 0xfe, - 0x6e, 0x77, 0xd7, 0x3e, 0xc5, 0x5c, 0xa1, 0xa2, 0x49, 0xd4, 0x8c, 0xbf, 0xc6, 0xdc, 0xb2, 0xc9, - 0x4f, 0xe3, 0x1e, 0x80, 0xdd, 0xef, 0x1d, 0x33, 0xda, 0x9c, 0xcf, 0xb9, 0x90, 0xcf, 0x4a, 0xd8, - 0x65, 0x49, 0x68, 0x44, 0x21, 0xc1, 0xb9, 0xdb, 0xa2, 0xd1, 0xcd, 0xa4, 0x45, 0x7f, 0x1b, 0xcb, - 0x30, 0xf6, 0xd4, 0x69, 0x7b, 0x6b, 0xa5, 0x22, 0x01, 0xae, 0xe7, 0x5e, 0x3c, 0x5f, 0x1e, 0xdb, - 0xd8, 0xaa, 0xed, 0xad, 0x59, 0x0c, 0x8e, 0x7e, 0x06, 0x3a, 0x25, 0x87, 0x7b, 0xfd, 0xae, 0xb0, - 0x79, 0xba, 0xd9, 0x5a, 0x3e, 0xee, 0x71, 0x11, 0x78, 0xcb, 0x78, 0x83, 0x87, 0x42, 0x19, 0xca, - 0xcf, 0xac, 0xc2, 0x4f, 0xf3, 0xbc, 0x8b, 0x79, 0x74, 0x34, 0x07, 0xb3, 0x12, 0x49, 0xa6, 0x17, - 0xb4, 0xca, 0xe6, 0xf9, 0xcc, 0xee, 0x77, 0x7a, 0xd2, 0x3c, 0xdd, 0x63, 0xdf, 0x0e, 0xb0, 0x98, - 0x87, 0xb5, 0x04, 0x01, 0x8e, 0xcb, 0x09, 0xfc, 0x1e, 0x03, 0x1e, 0xb8, 0x1d, 0xaf, 0x75, 0xf2, - 0x72, 0x38, 0x25, 0xc3, 0x5b, 0x1d, 0xe2, 0x60, 0xa8, 0xce, 0x72, 0x16, 0x6f, 0xa1, 0x35, 0x30, - 0xe4, 0xb9, 0xf8, 0xd2, 0x2e, 0x42, 0x8e, 0x68, 0xbb, 0xe9, 0x9d, 0x60, 0xb1, 0xb8, 0x11, 0x00, - 0x9d, 0x40, 0x91, 0x8c, 0xd9, 0xf7, 0xbd, 0x33, 0x87, 0xac, 0xf7, 0x4b, 0x62, 0xb1, 0x08, 0x63, - 0x01, 0x51, 0x24, 0x0d, 0x4c, 0x27, 0x2d, 0xd6, 0x40, 0x8f, 0x61, 0x3e, 0x36, 0x19, 0xe7, 0xf1, - 0x03, 0xc8, 0x75, 0x05, 0x90, 0x6f, 0xed, 0x05, 0x85, 0x74, 0x34, 0x24, 0x42, 0x44, 0xef, 0xc1, - 0x02, 0xe9, 0xab, 0xe1, 0x6e, 0x92, 0xfb, 0x4c, 0x18, 0x3e, 0x8e, 0xbf, 0x78, 0xbe, 0x9c, 0xd9, - 0xaa, 0x59, 0x19, 0xa7, 0x8d, 0x6e, 0xc3, 0xad, 0xc4, 0x08, 0xbe, 0x50, 0x0f, 0x61, 0x7e, 0xdf, - 0x0e, 0x82, 0x67, 0x9e, 0xdf, 0xae, 0x1e, 0xdb, 0xee, 0x91, 0x1c, 0x51, 0x79, 0x1d, 0x4e, 0xcc, - 0x22, 0x3f, 0x09, 0xc4, 0xc5, 0xcf, 0x84, 0x7f, 0x71, 0xf1, 0x33, 0x54, 0x82, 0x85, 0xf8, 0x60, - 0x4e, 0xf6, 0xaf, 0x35, 0x98, 0x52, 0x04, 0x18, 0xc4, 0xdb, 0x75, 0x35, 0xbb, 0x08, 0xb9, 0x16, - 0x0d, 0x1f, 0xdb, 0x15, 0x16, 0x24, 0x65, 0xad, 0x08, 0x60, 0x20, 0x18, 0xb7, 0xed, 0xa3, 0xbe, - 0xd3, 0x2e, 0xb5, 0xe9, 0x04, 0xf0, 0xe2, 0xf9, 0xf2, 0x78, 0xa5, 0xf2, 0xe8, 0x60, 0xab, 0x66, - 0xf1, 0x1e, 0xb2, 0x36, 0xae, 0xb7, 0xef, 0xb8, 0x25, 0xcc, 0xd6, 0x86, 0x36, 0xd0, 0xad, 0xd8, - 0xda, 0x84, 0x4e, 0x63, 0x9f, 0x69, 0x59, 0xee, 0xe0, 0xab, 0xf6, 0x00, 0x20, 0xd4, 0x63, 0x50, - 0xd2, 0x68, 0xb4, 0x3f, 0x68, 0xd9, 0x24, 0x4c, 0x34, 0x0b, 0x33, 0xa4, 0x73, 0x27, 0xda, 0x11, - 0xc8, 0x60, 0xfb, 0x6c, 0x47, 0x32, 0x5c, 0xf4, 0x5b, 0x60, 0x6c, 0xe3, 0xf3, 0x47, 0xd8, 0xc5, - 0xbe, 0x14, 0x8c, 0xbf, 0xce, 0xd5, 0xa4, 0x51, 0x35, 0xe9, 0xb2, 0xa7, 0x94, 0x36, 0xf3, 0x7b, - 0x30, 0xa7, 0x8c, 0xe5, 0x1c, 0x0f, 0xb9, 0xee, 0x6c, 0x81, 0x71, 0x10, 0x60, 0xbf, 0xc1, 0xc8, - 0x5d, 0xe3, 0x22, 0x52, 0x02, 0xf1, 0x42, 0x24, 0x1c, 0x23, 0x6f, 0xa2, 0x77, 0x61, 0x4e, 0x21, - 0x15, 0xf9, 0x58, 0x31, 0x40, 0x53, 0x07, 0xfc, 0x0e, 0xcc, 0xd0, 0x01, 0xd2, 0x7b, 0xd2, 0x77, - 0x99, 0x98, 0xb8, 0x52, 0x97, 0x38, 0x6a, 0x16, 0x3b, 0xd3, 0xdf, 0xe8, 0xa7, 0xa0, 0x47, 0xb4, - 0x23, 0x4e, 0x4e, 0x71, 0x10, 0xd8, 0x47, 0x21, 0x27, 0xbc, 0x19, 0x52, 0xc8, 0x48, 0x14, 0x2e, - 0x34, 0x98, 0x26, 0x24, 0x2a, 0xed, 0xf6, 0xcb, 0xe6, 0x8e, 0x10, 0xea, 0xfb, 0x1d, 0x76, 0x86, - 0x30, 0x42, 0x07, 0xd6, 0x8e, 0x45, 0x60, 0x03, 0x2e, 0x27, 0x4f, 0x99, 0xaa, 0x28, 0x2f, 0x5c, - 0x9a, 0x57, 0x61, 0xb4, 0x1f, 0x84, 0x21, 0xc1, 0x54, 0x68, 0x11, 0x04, 0xcf, 0xa2, 0x5d, 0xea, - 0xbd, 0x25, 0x73, 0x9d, 0x7b, 0xcb, 0xdf, 0x69, 0xa0, 0x6f, 0xe3, 0xf3, 0xfa, 0xd7, 0x5d, 0xcf, - 0xbf, 0xce, 0xb5, 0xd4, 0x84, 0xc9, 0x2e, 0xf7, 0x00, 0x5c, 0xee, 0xb0, 0x6d, 0xdc, 0xe1, 0x26, - 0x9b, 0x8d, 0x1d, 0x88, 0x8c, 0xb8, 0xea, 0xd8, 0xbb, 0xfd, 0x27, 0x1d, 0xa7, 0x45, 0x15, 0x32, - 0x69, 0xf1, 0x16, 0x09, 0x33, 0x5d, 0x4f, 0x38, 0x18, 0xae, 0x0f, 0x09, 0x82, 0xde, 0x82, 0x59, - 0x89, 0x57, 0xae, 0x96, 0x05, 0x18, 0xc7, 0x14, 0xc2, 0x43, 0x0d, 0xde, 0x42, 0x9f, 0x50, 0xc1, - 0xb6, 0x4e, 0x65, 0xc1, 0xa2, 0x78, 0xac, 0x40, 0xe3, 0xb1, 0x21, 0xd2, 0xa0, 0x77, 0xe8, 0x64, - 0x62, 0xfc, 0xd5, 0x1b, 0xeb, 0x2e, 0x9d, 0xcf, 0xc2, 0xa7, 0xde, 0xd9, 0x35, 0xb6, 0x15, 0x39, - 0x45, 0x25, 0x74, 0xee, 0x0a, 0xfe, 0x5d, 0x83, 0xec, 0x36, 0x3e, 0x1f, 0xe8, 0x3b, 0x5f, 0x57, - 0x34, 0x3c, 0xc0, 0x29, 0x84, 0x86, 0x32, 0x3e, 0xd8, 0x50, 0xc8, 0xb9, 0x65, 0x9f, 0x85, 0x97, - 0x1b, 0xd6, 0x30, 0x7e, 0x0c, 0xd3, 0x01, 0x7f, 0x0a, 0xd9, 0xc1, 0xee, 0x51, 0xef, 0xb8, 0xb4, - 0x42, 0x23, 0xc6, 0x18, 0xd4, 0x78, 0x1b, 0x66, 0x05, 0xe4, 0xa0, 0xdb, 0xe6, 0x3e, 0xfa, 0x4d, - 0xea, 0xa3, 0x93, 0x1d, 0x68, 0x17, 0x80, 0x4a, 0x1a, 0x1e, 0x33, 0xe2, 0x69, 0x25, 0xc7, 0x1e, - 0x53, 0xe8, 0x11, 0x6c, 0xfb, 0xad, 0x63, 0x61, 0x0d, 0xac, 0x45, 0xe0, 0x7d, 0x4a, 0x84, 0x5b, - 0x02, 0x6f, 0xa1, 0xbb, 0x90, 0xa7, 0xf4, 0xae, 0xf7, 0x56, 0x83, 0xfe, 0x46, 0xa3, 0xf8, 0xc2, - 0xcf, 0x13, 0xd1, 0xbf, 0xea, 0x63, 0x5f, 0xb0, 0xc0, 0x1a, 0xc6, 0x8f, 0x61, 0x8c, 0xe8, 0x8e, - 0x3d, 0xe6, 0xa4, 0xa9, 0x96, 0x75, 0x93, 0x63, 0x29, 0xf0, 0xfc, 0xde, 0x86, 0x83, 0x3b, 0x4c, - 0x79, 0x39, 0x2b, 0x02, 0x18, 0x3f, 0x81, 0x29, 0xd2, 0xa8, 0x39, 0x3e, 0x6e, 0xf5, 0xc8, 0x19, - 0x9f, 0xa7, 0x0b, 0x15, 0x1d, 0x16, 0x0d, 0xb9, 0xd7, 0x52, 0x91, 0xd1, 0x1f, 0x6a, 0x50, 0x60, - 0x9c, 0x72, 0xd1, 0xca, 0x30, 0x7a, 0x82, 0xcf, 0xc5, 0x91, 0xa3, 0xca, 0x46, 0x7b, 0x7e, 0x50, - 0x76, 0x7e, 0x99, 0x81, 0xf1, 0x06, 0x8b, 0x86, 0x06, 0xd9, 0x63, 0x8a, 0x1b, 0x1d, 0xe8, 0x05, - 0x18, 0x29, 0xc9, 0x4c, 0x4d, 0x98, 0x24, 0xb6, 0x48, 0x09, 0x30, 0xd6, 0xc3, 0xb6, 0xb2, 0x31, - 0xf3, 0x31, 0x37, 0xc3, 0x7d, 0x69, 0x31, 0xdd, 0x97, 0xba, 0x1e, 0xb9, 0xff, 0x2c, 0xb1, 0xb5, - 0xa5, 0x0d, 0x35, 0x94, 0x68, 0xc7, 0x43, 0x89, 0x45, 0xc8, 0xf5, 0x43, 0x23, 0xc6, 0xac, 0x37, - 0x04, 0xa0, 0x3b, 0x30, 0xc5, 0x18, 0xbf, 0x2a, 0xe4, 0xfa, 0x08, 0xa6, 0x05, 0x22, 0x5f, 0xbd, - 0x3b, 0x4a, 0x68, 0x99, 0x5f, 0x9b, 0x89, 0xa9, 0x42, 0xc4, 0x9a, 0xe8, 0x27, 0x30, 0xcb, 0x20, - 0x0d, 0x3b, 0x72, 0x1d, 0xd7, 0x1e, 0xfd, 0x31, 0x18, 0xf2, 0xe8, 0x9b, 0x4e, 0x7e, 0x17, 0xe6, - 0x04, 0xdf, 0xb2, 0xe7, 0x1a, 0x24, 0xe6, 0x02, 0x14, 0x55, 0x74, 0xee, 0xb9, 0x7e, 0xa9, 0x09, - 0xf9, 0xaf, 0xd8, 0x68, 0x3f, 0xa4, 0xc5, 0xfe, 0x89, 0x06, 0x33, 0x21, 0x13, 0x5c, 0x11, 0x6f, - 0x92, 0x73, 0x9a, 0x82, 0xf8, 0x36, 0x4a, 0x68, 0x42, 0xf4, 0xff, 0xa0, 0xac, 0xbd, 0x01, 0xf9, - 0xad, 0x1e, 0x3e, 0xbd, 0x4a, 0xbd, 0xef, 0x43, 0x81, 0xa1, 0x45, 0x67, 0xbe, 0xd3, 0xc3, 0xa7, - 0x89, 0x33, 0x9f, 0x22, 0xd1, 0x2e, 0xf4, 0x3a, 0x1b, 0x32, 0x5c, 0xed, 0xe8, 0x03, 0x98, 0xe2, - 0x58, 0x9c, 0xf2, 0x6b, 0x30, 0x46, 0x86, 0x0b, 0xad, 0xc4, 0x48, 0xb3, 0x3e, 0xb4, 0x06, 0xa3, - 0xa4, 0x39, 0x6c, 0xff, 0x87, 0xb1, 0xbc, 0x78, 0x7d, 0xff, 0x63, 0x0d, 0xf2, 0x96, 0xed, 0x86, - 0x31, 0x94, 0x09, 0x93, 0x6e, 0xff, 0x74, 0x9d, 0x3e, 0x4b, 0xb0, 0xe7, 0xda, 0xb0, 0x6d, 0xdc, - 0x85, 0x49, 0xec, 0xb6, 0xbc, 0xb6, 0xe3, 0x1e, 0x25, 0xee, 0x03, 0x75, 0xde, 0x61, 0x85, 0x28, - 0x64, 0x81, 0x48, 0x34, 0xd0, 0xa6, 0xf8, 0xec, 0xe4, 0x8a, 0x00, 0xa4, 0xb7, 0xe3, 0x3d, 0xc3, - 0x7e, 0x8b, 0x5c, 0x59, 0xd9, 0x6b, 0x68, 0x04, 0x40, 0x08, 0x0a, 0x8c, 0xab, 0x94, 0x27, 0xa1, - 0x1c, 0x7f, 0xc4, 0xb8, 0x0b, 0x73, 0x04, 0x47, 0xc4, 0x1b, 0xd2, 0x1d, 0xb1, 0xc3, 0x8e, 0x43, - 0xc6, 0x3f, 0x6f, 0xa1, 0x35, 0x28, 0xaa, 0xe8, 0x9c, 0xb4, 0xec, 0xbc, 0xb4, 0x58, 0x54, 0xb1, - 0x0c, 0xf9, 0xfd, 0x7e, 0xa7, 0x33, 0xf0, 0x34, 0x44, 0x6f, 0x43, 0x81, 0x21, 0x84, 0xd7, 0xda, - 0xd1, 0x13, 0xa7, 0xcd, 0x96, 0x29, 0xb7, 0x3e, 0xf9, 0xe2, 0xf9, 0xf2, 0xe8, 0xf6, 0x56, 0x2d, - 0xb0, 0x28, 0x14, 0x55, 0x08, 0xb9, 0xe0, 0x78, 0xf0, 0xe1, 0x5a, 0x86, 0xbc, 0x8f, 0x4f, 0xbd, - 0x1e, 0xae, 0x1e, 0xe3, 0xd6, 0x09, 0x7f, 0xd7, 0x93, 0x41, 0xe8, 0x11, 0x99, 0x90, 0x90, 0xb8, - 0x32, 0xc4, 0x21, 0xbc, 0xf4, 0xfd, 0x0e, 0x3b, 0x23, 0x39, 0x2f, 0x07, 0xd6, 0x4e, 0x60, 0x51, - 0x28, 0x2a, 0x03, 0x54, 0xbd, 0x4e, 0x87, 0x19, 0x3c, 0x4d, 0xf1, 0xd8, 0x5c, 0x65, 0x39, 0x8b, - 0xfe, 0x46, 0x35, 0x30, 0x22, 0x8c, 0x40, 0x7e, 0x67, 0xb0, 0x7d, 0xf1, 0xd2, 0x9e, 0xb3, 0x78, - 0x8b, 0x18, 0x5d, 0xfb, 0x09, 0x7b, 0x0a, 0x67, 0x46, 0x57, 0x5b, 0xb7, 0x32, 0xed, 0x27, 0x68, - 0x07, 0xe6, 0x14, 0x2a, 0x9c, 0xef, 0xfb, 0x90, 0x6f, 0x45, 0x60, 0x6e, 0xd6, 0xd1, 0xf1, 0x13, - 0x0d, 0xb1, 0x64, 0x3c, 0xd4, 0x85, 0xc9, 0x9a, 0xd7, 0xea, 0xd3, 0x4c, 0x57, 0x0a, 0xcf, 0x64, - 0x3b, 0x9d, 0xd9, 0x9d, 0xbe, 0xb0, 0x71, 0xd6, 0x50, 0x8f, 0x14, 0x18, 0x7a, 0xa4, 0xe4, 0xe3, - 0x47, 0xca, 0x3a, 0xe8, 0x62, 0x46, 0x45, 0x07, 0x3e, 0x7e, 0xea, 0x7c, 0x1d, 0xea, 0x80, 0xb6, - 0x06, 0xea, 0xa0, 0x06, 0xb3, 0x12, 0x0d, 0xae, 0x81, 0x77, 0x21, 0xd7, 0x16, 0x40, 0x2e, 0x7f, - 0xb4, 0x9d, 0x04, 0xba, 0x15, 0xe1, 0xa0, 0x2a, 0xcc, 0x0b, 0x70, 0x0d, 0x77, 0xb0, 0x92, 0x09, - 0x4a, 0x28, 0x62, 0x10, 0x2b, 0x25, 0x58, 0x88, 0x13, 0xe1, 0x67, 0xc2, 0x1f, 0x65, 0x60, 0x94, - 0xc4, 0x9c, 0x37, 0x0a, 0x1f, 0x6e, 0x94, 0x47, 0x94, 0x2e, 0x61, 0x63, 0xea, 0x25, 0x8c, 0x07, - 0x09, 0xe3, 0x29, 0x41, 0xc2, 0x5b, 0x30, 0x1e, 0xb0, 0x97, 0x3b, 0x88, 0x85, 0x28, 0xf4, 0x02, - 0xc9, 0x5e, 0xee, 0x38, 0x0a, 0xb9, 0x92, 0x9c, 0x61, 0xdf, 0x79, 0xea, 0x48, 0x6b, 0x29, 0x41, - 0xd4, 0xec, 0x64, 0x21, 0x9e, 0x9d, 0xd4, 0x21, 0x8b, 0x7d, 0x9f, 0x85, 0x2a, 0x16, 0xf9, 0x89, - 0x3e, 0x81, 0x3c, 0x0d, 0xc3, 0xaf, 0xbe, 0x69, 0x85, 0xf7, 0xc2, 0x51, 0xf9, 0x5e, 0xf8, 0x3e, - 0x14, 0xd8, 0xf8, 0x6b, 0x5f, 0x0a, 0xd1, 0x01, 0xcc, 0xb2, 0x6b, 0x3a, 0x89, 0xaa, 0x87, 0x1f, - 0xce, 0x64, 0x4e, 0xe7, 0xd4, 0x61, 0x0f, 0x2e, 0x63, 0x16, 0x6b, 0x0c, 0xe0, 0xe4, 0x23, 0xf1, - 0x90, 0xc0, 0xc8, 0x46, 0xc7, 0x0a, 0x99, 0x34, 0x79, 0xac, 0x50, 0x86, 0x58, 0x1f, 0x7a, 0x83, - 0x04, 0x55, 0x57, 0x72, 0x83, 0xd6, 0x48, 0x48, 0xa1, 0x50, 0xbf, 0x32, 0x20, 0x46, 0x06, 0xe8, - 0xf4, 0x61, 0xb2, 0x71, 0xee, 0xb6, 0xc4, 0xa3, 0xcb, 0x1c, 0xcc, 0x4a, 0x30, 0x6e, 0x9c, 0x45, - 0x30, 0x28, 0xf0, 0xc0, 0x0d, 0x24, 0xd4, 0x79, 0x98, 0x53, 0xa0, 0x1c, 0x59, 0x50, 0xad, 0xf4, - 0x7b, 0x82, 0x67, 0x72, 0x19, 0x95, 0x60, 0xd1, 0x65, 0x34, 0xf5, 0xcd, 0x54, 0xcc, 0xa6, 0xbe, - 0x53, 0xef, 0xf0, 0xd9, 0x62, 0x8f, 0xd4, 0xc3, 0xaf, 0xdf, 0x84, 0x31, 0x6a, 0x8c, 0x19, 0x6a, - 0x6d, 0x61, 0x3b, 0x92, 0x88, 0x7a, 0x9a, 0x84, 0x44, 0x1c, 0xca, 0x25, 0xfa, 0x47, 0x0d, 0xa6, - 0x3e, 0xf7, 0xfc, 0xd3, 0x63, 0x4f, 0xe4, 0x2a, 0x16, 0x94, 0x9c, 0x43, 0x94, 0xc3, 0x59, 0x84, - 0x5c, 0x98, 0xe9, 0xe1, 0x3b, 0x35, 0x02, 0x90, 0x51, 0x8e, 0x7b, 0xe6, 0xf4, 0xc4, 0x73, 0x07, - 0x6f, 0xf1, 0x2d, 0x0f, 0x69, 0x5b, 0x9e, 0x1e, 0xbb, 0x79, 0x29, 0x2d, 0xb0, 0xc2, 0xa3, 0x88, - 0x42, 0xec, 0xc1, 0xbf, 0xea, 0xb9, 0x3d, 0xec, 0x4a, 0x57, 0x06, 0x74, 0x0a, 0xd3, 0x82, 0x69, - 0x9e, 0x66, 0x58, 0x55, 0x9f, 0x78, 0xf2, 0xd2, 0xcd, 0xed, 0x31, 0x83, 0x47, 0x8f, 0x3e, 0xef, - 0x86, 0x1b, 0x9f, 0xc5, 0x1a, 0xb7, 0x42, 0x54, 0x41, 0x54, 0xdd, 0xfc, 0xe8, 0xef, 0x33, 0x30, - 0xc1, 0xa9, 0x0c, 0xb9, 0x92, 0x5f, 0x27, 0xa7, 0xb1, 0x2a, 0x2b, 0x31, 0x9b, 0x82, 0x28, 0xa9, - 0x54, 0xa8, 0x23, 0x9e, 0xff, 0xe0, 0x9c, 0x48, 0x37, 0xa8, 0x55, 0x98, 0x68, 0x31, 0x1d, 0x51, - 0x4d, 0xcb, 0xc2, 0x73, 0xdd, 0x59, 0x02, 0x41, 0x3d, 0xb1, 0xe6, 0xe3, 0x27, 0x56, 0x19, 0xf2, - 0xc4, 0x6b, 0xd5, 0x9c, 0xa0, 0xdb, 0xb1, 0xcf, 0x4b, 0xcb, 0x74, 0x2d, 0x65, 0x10, 0xc1, 0x20, - 0x06, 0x24, 0x30, 0xca, 0x0c, 0x43, 0x02, 0xa1, 0x47, 0x30, 0xc1, 0x67, 0x4d, 0x4d, 0xfe, 0xac, - 0x28, 0xef, 0xbe, 0xc3, 0x56, 0xd9, 0x86, 0x79, 0x2e, 0xeb, 0xbe, 0x8f, 0x49, 0x30, 0xa0, 0x3c, - 0xd6, 0xdf, 0xd8, 0x44, 0x49, 0x90, 0x8a, 0xbf, 0xee, 0xf1, 0x7b, 0x24, 0xfd, 0x8d, 0x6a, 0xb0, - 0x10, 0x9f, 0x82, 0x6f, 0xbe, 0x1b, 0x18, 0x14, 0xfa, 0x05, 0x14, 0x39, 0x4c, 0x2d, 0xa4, 0x78, - 0x79, 0x7c, 0x56, 0x43, 0x55, 0xc4, 0x6a, 0x29, 0x6e, 0xc2, 0xe6, 0x23, 0x98, 0xe1, 0xb0, 0xe0, - 0x7b, 0x71, 0x88, 0x7e, 0x0a, 0x7a, 0x44, 0x88, 0x33, 0xf2, 0x36, 0x4c, 0xf2, 0x79, 0x84, 0x5b, - 0x4e, 0x72, 0x12, 0x62, 0xa0, 0x5f, 0xc0, 0x5c, 0xa5, 0x7d, 0xea, 0xb8, 0x0d, 0xe7, 0xc8, 0x25, - 0x07, 0xb2, 0xc4, 0x4e, 0x54, 0x22, 0x15, 0x55, 0x3e, 0x2c, 0xc0, 0xf8, 0x29, 0xee, 0x1d, 0x7b, - 0xe2, 0x75, 0x8e, 0xb7, 0xc4, 0xe9, 0x9e, 0x4d, 0x9e, 0xee, 0xa8, 0x05, 0x45, 0x75, 0x86, 0x28, - 0xde, 0xb7, 0xfb, 0x51, 0x48, 0x43, 0x7e, 0x0b, 0x32, 0x99, 0x94, 0x20, 0x61, 0x11, 0x46, 0x5b, - 0xd1, 0x14, 0x34, 0xd4, 0xad, 0x92, 0x4e, 0x0a, 0x45, 0x15, 0x98, 0xa5, 0x93, 0xd0, 0x08, 0xfa, - 0x2a, 0x21, 0x8a, 0x30, 0xd6, 0x0a, 0x83, 0xef, 0x9c, 0xc5, 0x1a, 0xc4, 0x5b, 0xcb, 0x24, 0x18, - 0x97, 0xab, 0x7f, 0xa5, 0x41, 0x5e, 0xca, 0x73, 0x1a, 0x77, 0x60, 0xa6, 0x56, 0xdf, 0xa8, 0x1c, - 0xec, 0x34, 0x0f, 0xeb, 0xbb, 0x55, 0xeb, 0xcb, 0xfd, 0xa6, 0x3e, 0x62, 0x1a, 0x17, 0x97, 0xe5, - 0xe9, 0x1a, 0x7e, 0x4a, 0xdc, 0x3a, 0x47, 0x36, 0xde, 0x04, 0xbd, 0x51, 0xd9, 0x69, 0xee, 0x57, - 0xaa, 0xdb, 0x21, 0xa6, 0x66, 0xce, 0x5d, 0x5c, 0x96, 0x67, 0x1a, 0x76, 0xa7, 0xd7, 0xb5, 0x5b, - 0x27, 0x02, 0xf5, 0x2e, 0x18, 0x21, 0x6a, 0x63, 0xeb, 0x11, 0x47, 0xce, 0x9a, 0xf3, 0x17, 0x97, - 0xe5, 0x59, 0x81, 0x4c, 0xd4, 0x47, 0xd1, 0xcd, 0xb9, 0x3f, 0xf8, 0x8b, 0xa5, 0x91, 0x7f, 0xfa, - 0xcb, 0x25, 0x99, 0xaf, 0xd5, 0xbf, 0xd5, 0x00, 0xa2, 0x3c, 0xa7, 0xf1, 0x2a, 0x14, 0x2a, 0x07, - 0xcd, 0xcd, 0xc3, 0x83, 0xdd, 0xed, 0xdd, 0xbd, 0xcf, 0x77, 0xf5, 0x11, 0x73, 0xe6, 0xe2, 0xb2, - 0x9c, 0x67, 0x59, 0xba, 0x13, 0xd7, 0x7b, 0xe6, 0x1a, 0xaf, 0x00, 0x50, 0x94, 0x46, 0xbd, 0x79, - 0xb0, 0xaf, 0x6b, 0xe6, 0xd4, 0xc5, 0x65, 0x39, 0x17, 0x26, 0x22, 0x8d, 0xd7, 0x60, 0x8a, 0x53, - 0xd8, 0xd9, 0xab, 0x6e, 0xd7, 0x6b, 0x7a, 0xc6, 0xd4, 0x2f, 0x2e, 0xcb, 0x85, 0x28, 0xd1, 0x87, - 0xdb, 0xc6, 0x32, 0xe4, 0x29, 0x12, 0x47, 0xc9, 0x9a, 0xd3, 0x17, 0x97, 0x65, 0x10, 0x09, 0x15, - 0xdc, 0x36, 0x0d, 0xce, 0xab, 0xc4, 0xdb, 0xea, 0x9f, 0x6a, 0x30, 0x29, 0x72, 0x4b, 0x84, 0x51, - 0xce, 0xe3, 0x21, 0xa1, 0x24, 0x18, 0xe5, 0x4c, 0x12, 0x34, 0xc2, 0xc9, 0x7e, 0xa5, 0xd1, 0xf8, - 0x7c, 0xcf, 0xaa, 0x31, 0x1c, 0x60, 0x9c, 0x88, 0x6b, 0x1e, 0x45, 0xba, 0x07, 0x0b, 0x34, 0x4f, - 0x7b, 0xb8, 0xf9, 0xb8, 0x52, 0x3d, 0x6c, 0xd4, 0xab, 0x56, 0xbd, 0xc9, 0xb0, 0x8b, 0xe6, 0xad, - 0x8b, 0xcb, 0xf2, 0x1c, 0xed, 0x25, 0x9d, 0xec, 0x91, 0x81, 0x0c, 0x32, 0x75, 0xce, 0x5d, 0xc8, - 0xce, 0xea, 0xaf, 0x35, 0x80, 0xe8, 0x75, 0xdc, 0x58, 0x85, 0xb9, 0x70, 0xb5, 0xbf, 0xd8, 0xdf, - 0xb3, 0x9a, 0x87, 0xcd, 0x2f, 0xf7, 0xeb, 0xfa, 0x88, 0x39, 0x7b, 0x71, 0x59, 0x9e, 0x12, 0x2b, - 0x4e, 0xf1, 0x8d, 0xb7, 0xa1, 0x18, 0x2d, 0xb8, 0x84, 0xac, 0x31, 0xf3, 0x08, 0x17, 0x9d, 0x61, - 0x23, 0x98, 0x69, 0x34, 0x36, 0x15, 0xc4, 0x0c, 0x5b, 0x82, 0x46, 0x63, 0x93, 0xe1, 0x44, 0xca, - 0x8b, 0x38, 0x5a, 0xfd, 0x17, 0x0d, 0x26, 0xf8, 0x0b, 0xa8, 0xb1, 0x02, 0xba, 0xd0, 0xdd, 0x76, - 0xfd, 0x4b, 0xc1, 0x1a, 0x9d, 0x8d, 0xeb, 0x4f, 0x60, 0x9a, 0x30, 0x59, 0xaf, 0x7d, 0xb1, 0x76, - 0xff, 0xfe, 0xfb, 0x1f, 0xe9, 0x60, 0x16, 0x2e, 0x2e, 0xcb, 0x93, 0xf5, 0x36, 0x6b, 0x13, 0x8b, - 0x16, 0x7d, 0x87, 0xfb, 0x07, 0xeb, 0x3b, 0x5b, 0x55, 0x3d, 0xcf, 0x88, 0x08, 0x94, 0x7d, 0x96, - 0x0c, 0x58, 0x80, 0x71, 0x4e, 0xa2, 0x68, 0xc2, 0xc5, 0x65, 0x99, 0xb7, 0xc8, 0xfa, 0xa8, 0xc3, - 0xe7, 0xd9, 0xfa, 0xc8, 0x83, 0xcd, 0x19, 0x2e, 0x8b, 0x60, 0x7e, 0xb5, 0x09, 0x53, 0xca, 0xfb, - 0x8c, 0x51, 0x84, 0x6c, 0xa5, 0x51, 0xd5, 0x47, 0xcc, 0xfc, 0xc5, 0x65, 0x79, 0x82, 0xf4, 0x55, - 0x02, 0x32, 0xe9, 0x68, 0xad, 0xde, 0xa8, 0xea, 0x1a, 0xe3, 0x9a, 0x0e, 0xc1, 0x41, 0xcb, 0x9c, - 0xe7, 0xf4, 0x54, 0x22, 0xab, 0xcf, 0x35, 0x80, 0xe8, 0x5d, 0x93, 0xac, 0x9f, 0xd0, 0x10, 0x37, - 0x09, 0x79, 0xfd, 0xb8, 0x92, 0xf8, 0x93, 0xea, 0x1d, 0x98, 0x09, 0xcd, 0x8c, 0x21, 0xeb, 0xc0, - 0xf4, 0x20, 0x0c, 0xad, 0x21, 0x32, 0xd1, 0xd3, 0xd5, 0xbd, 0xdd, 0x66, 0xa5, 0xda, 0x14, 0x78, - 0x79, 0x46, 0x8f, 0x1c, 0x9c, 0x76, 0xab, 0xc7, 0xd1, 0x96, 0x21, 0x5f, 0xad, 0x44, 0xb4, 0x0a, - 0x6c, 0x6f, 0x54, 0xed, 0x90, 0xce, 0x32, 0xe4, 0x77, 0xf7, 0x9a, 0x75, 0x81, 0x30, 0xc5, 0x10, - 0x76, 0xbd, 0x1e, 0x66, 0x08, 0xd1, 0xfa, 0x47, 0x12, 0xad, 0xfe, 0x46, 0x83, 0x49, 0xf1, 0x10, - 0x43, 0x6e, 0x33, 0x9b, 0xf5, 0x2f, 0xf4, 0x11, 0x73, 0xe2, 0xe2, 0xb2, 0x9c, 0xdd, 0xc4, 0xe4, - 0x7a, 0x3a, 0xbe, 0x5e, 0x69, 0xd4, 0x1f, 0xac, 0xe9, 0x1a, 0x5b, 0xa3, 0x75, 0x3b, 0xc0, 0x0f, - 0xd6, 0x04, 0xfc, 0xfe, 0x87, 0x7a, 0x26, 0x82, 0xdf, 0xff, 0x50, 0xc0, 0xef, 0xad, 0xe9, 0xd9, - 0x08, 0x7e, 0x2f, 0xc4, 0x7f, 0xff, 0x81, 0x3e, 0x1a, 0xc1, 0xdf, 0x7f, 0x10, 0xd2, 0xff, 0x40, - 0x1f, 0x93, 0xe8, 0x7f, 0x40, 0x0c, 0x4c, 0x18, 0xbf, 0x3e, 0xce, 0x97, 0x8a, 0x1b, 0x3c, 0x71, - 0xb7, 0xeb, 0x5b, 0xfb, 0xf7, 0x3e, 0xd2, 0x27, 0xcc, 0xdc, 0xc5, 0x65, 0x99, 0x35, 0xa2, 0xbd, - 0x27, 0xa4, 0x59, 0xfd, 0xdf, 0x0c, 0x40, 0x74, 0xe1, 0x33, 0xee, 0x40, 0xe1, 0xa0, 0x51, 0xb7, - 0x24, 0x17, 0x46, 0xfd, 0x61, 0x84, 0x11, 0x39, 0xb2, 0x09, 0x8a, 0xb8, 0xb7, 0xad, 0x6b, 0xcc, - 0xf2, 0x22, 0x9c, 0xbd, 0x6d, 0xe3, 0x21, 0xdc, 0xa2, 0xdd, 0x56, 0xbd, 0xb1, 0x77, 0x60, 0x55, - 0xeb, 0x87, 0xbb, 0x7b, 0xcd, 0xc3, 0x8d, 0xbd, 0x83, 0xdd, 0x9a, 0x5e, 0x34, 0x97, 0x2e, 0x2e, - 0xcb, 0xa6, 0x74, 0xcb, 0xc4, 0x81, 0xd7, 0xf7, 0x5b, 0x78, 0xd7, 0xeb, 0x6d, 0x78, 0x7d, 0xb7, - 0x6d, 0x7c, 0x04, 0x0b, 0x74, 0x30, 0x59, 0xf0, 0xfa, 0x6e, 0x53, 0x1a, 0xbb, 0x64, 0xbe, 0x72, - 0x71, 0x59, 0xbe, 0x1d, 0x8d, 0xe5, 0x61, 0x53, 0x38, 0xf4, 0x01, 0x14, 0x95, 0xa1, 0x5b, 0xbb, - 0x9f, 0x55, 0x76, 0xb6, 0x6a, 0xfa, 0xb2, 0xb9, 0x78, 0x71, 0x59, 0x2e, 0x25, 0x06, 0x6e, 0xb9, - 0x67, 0x76, 0xc7, 0x69, 0x1b, 0xef, 0xc1, 0xac, 0x18, 0xb7, 0x7b, 0xb8, 0x51, 0xd9, 0xda, 0x39, - 0xb0, 0xea, 0xfa, 0x8a, 0x79, 0xfb, 0xe2, 0xb2, 0x3c, 0xaf, 0x0c, 0x72, 0x37, 0x6c, 0xa7, 0xd3, - 0xf7, 0x71, 0xa8, 0x29, 0x81, 0xbc, 0x16, 0xd7, 0x14, 0x47, 0x8c, 0x0c, 0x2a, 0xea, 0x5a, 0xfd, - 0xaf, 0x4c, 0x14, 0xc2, 0x73, 0xcd, 0xbf, 0x09, 0xfa, 0xe7, 0x7b, 0xd6, 0xe3, 0xcd, 0xbd, 0x9d, - 0xfa, 0x21, 0x77, 0x7f, 0xfa, 0x08, 0x3b, 0xba, 0x04, 0x26, 0x77, 0x7d, 0xc6, 0x5b, 0x30, 0x1b, - 0xa2, 0x36, 0x9a, 0x15, 0xab, 0xb9, 0xb5, 0xfb, 0x48, 0x07, 0xb3, 0x78, 0x71, 0x59, 0xd6, 0x25, - 0xaa, 0x7e, 0x8f, 0x98, 0xab, 0x8c, 0xbc, 0xb7, 0xb1, 0x51, 0xb7, 0x08, 0x72, 0x51, 0x45, 0xde, - 0x7b, 0xfa, 0x14, 0xfb, 0x04, 0xf9, 0x2e, 0x18, 0x21, 0x72, 0x65, 0xb7, 0xf1, 0x39, 0xc3, 0x9e, - 0x67, 0xa2, 0x09, 0xec, 0x8a, 0x1b, 0x3c, 0x4b, 0xa2, 0x6f, 0x56, 0x76, 0x6b, 0x8d, 0xcd, 0xca, - 0x36, 0x51, 0x9b, 0x82, 0xbe, 0x69, 0xbb, 0xed, 0xe0, 0xd8, 0x3e, 0xc1, 0x0a, 0x3a, 0x51, 0x74, - 0xbd, 0xda, 0xac, 0xd7, 0xf4, 0xb6, 0x8a, 0x4e, 0x74, 0x8c, 0x5b, 0x3d, 0xdc, 0x36, 0x56, 0x60, - 0x26, 0x42, 0xdf, 0xd9, 0x6b, 0xd4, 0x6b, 0xfa, 0x37, 0xdc, 0xaf, 0x87, 0xc8, 0x1d, 0x2f, 0xc0, - 0x6d, 0x73, 0x81, 0xab, 0x38, 0xa6, 0xd3, 0xd5, 0x0e, 0xe4, 0xa5, 0xb8, 0x9a, 0xf8, 0x90, 0xf5, - 0xad, 0xdd, 0x8a, 0xf5, 0xa5, 0x30, 0x0f, 0xe1, 0x93, 0xd6, 0x1d, 0xd7, 0xf6, 0xcf, 0x45, 0xd8, - 0x4e, 0x4e, 0xc7, 0xe6, 0xc6, 0x87, 0x21, 0x92, 0xc6, 0x4f, 0xc7, 0xe6, 0xc6, 0x87, 0x1c, 0x25, - 0x8a, 0x06, 0x24, 0xf2, 0xab, 0xbf, 0xd2, 0x20, 0x2f, 0xdd, 0x4e, 0x08, 0x9d, 0xc7, 0xf5, 0x46, - 0xa3, 0xf2, 0x88, 0x78, 0x1b, 0x3a, 0x19, 0xa5, 0xc3, 0x51, 0x1a, 0x64, 0xaa, 0x3b, 0x30, 0x23, - 0x50, 0xf6, 0xeb, 0xbb, 0x35, 0xa2, 0x6c, 0x2e, 0xa1, 0x88, 0xcb, 0xb1, 0x4b, 0x9d, 0xce, 0x32, - 0xe4, 0x05, 0x22, 0xd9, 0xed, 0x19, 0xe6, 0xb6, 0x38, 0x52, 0xa5, 0x75, 0x12, 0x71, 0x24, 0x71, - 0xb0, 0xf6, 0x1f, 0xaf, 0xc1, 0xe8, 0x36, 0x3e, 0x0f, 0x8c, 0x4f, 0x69, 0xf2, 0x4f, 0x14, 0x48, - 0x18, 0x3f, 0x92, 0x2f, 0x5d, 0xb1, 0x92, 0x0b, 0x73, 0x31, 0xbd, 0x93, 0xdf, 0x98, 0x47, 0x8c, - 0xfb, 0x9c, 0x66, 0x51, 0xc6, 0x13, 0x21, 0xb5, 0x39, 0x1f, 0x83, 0x86, 0xc3, 0xd6, 0x58, 0x4e, - 0x77, 0x4e, 0xb9, 0xef, 0xf1, 0x41, 0x45, 0x15, 0x18, 0x8e, 0xa9, 0x41, 0x2e, 0x4c, 0x3e, 0x1b, - 0xb7, 0x65, 0x24, 0x25, 0xa1, 0x6d, 0x9a, 0x69, 0x5d, 0x31, 0x2a, 0x3c, 0x04, 0x50, 0xa8, 0x28, - 0xf9, 0x7e, 0x95, 0x8a, 0x9a, 0x5e, 0x0f, 0xa9, 0xb0, 0x7c, 0x8f, 0x4a, 0x45, 0x49, 0x19, 0xa9, - 0x54, 0x62, 0xe9, 0x21, 0xaa, 0x3c, 0x12, 0x53, 0x4a, 0xca, 0x93, 0xca, 0x40, 0x24, 0xe5, 0xc9, - 0x05, 0x1c, 0x68, 0xc4, 0xa8, 0xc0, 0xa4, 0xf8, 0x9a, 0xc6, 0x58, 0x50, 0x90, 0xc2, 0x2a, 0x4b, - 0xf3, 0x56, 0x02, 0xce, 0x1e, 0x07, 0xd0, 0xc8, 0x8a, 0xf6, 0x9e, 0x66, 0xf0, 0x42, 0xe8, 0x46, - 0xcf, 0xc7, 0xf6, 0xa9, 0x61, 0x28, 0xc8, 0x8c, 0xc0, 0x9c, 0x02, 0x8b, 0x0d, 0x1e, 0x67, 0xdf, - 0x51, 0x48, 0xb3, 0x2b, 0xdf, 0xdc, 0x48, 0xb3, 0xab, 0x9f, 0xd9, 0xa0, 0x11, 0xe3, 0x11, 0x40, - 0xf4, 0x35, 0x88, 0x51, 0x8a, 0x21, 0x46, 0x02, 0xdc, 0x4e, 0xe9, 0x51, 0xb8, 0xa8, 0x88, 0xaf, - 0x5a, 0xb8, 0x10, 0xc5, 0xd8, 0x00, 0x46, 0x66, 0x3e, 0x06, 0x55, 0x48, 0x34, 0xc4, 0x67, 0x40, - 0xe2, 0x83, 0x10, 0x63, 0x29, 0x86, 0x1e, 0xfb, 0xa6, 0xc7, 0x5c, 0x1e, 0xd8, 0x1f, 0x0a, 0xf8, - 0x73, 0x30, 0x92, 0x9f, 0xa8, 0x18, 0xe5, 0x01, 0x03, 0x23, 0x81, 0xaf, 0x26, 0xbd, 0xa2, 0x19, - 0x5f, 0x42, 0x51, 0xed, 0xe5, 0xc2, 0x2f, 0x0e, 0x18, 0x7c, 0x03, 0xd2, 0x9f, 0xc0, 0x84, 0xb8, - 0x0d, 0xdd, 0x8a, 0xd7, 0x97, 0x0a, 0xf1, 0x4b, 0xc9, 0x0e, 0x69, 0x4b, 0x88, 0x6a, 0x65, 0xce, - 0xd3, 0x7c, 0x1c, 0x99, 0x31, 0xb3, 0x10, 0x07, 0x2b, 0x4b, 0xf2, 0x69, 0x78, 0xd7, 0xa3, 0x6a, - 0xbb, 0x1d, 0x47, 0x8e, 0xf4, 0x65, 0xa6, 0x75, 0x29, 0xb4, 0x3e, 0x81, 0x09, 0x5e, 0x7f, 0x2b, - 0x49, 0xa4, 0x16, 0x4b, 0x4b, 0x12, 0xc5, 0xea, 0xa3, 0x99, 0x44, 0x1c, 0x98, 0x90, 0x48, 0xae, - 0xfd, 0x95, 0x24, 0x52, 0xca, 0x7d, 0x23, 0x89, 0xa4, 0x62, 0x66, 0x49, 0xa2, 0x78, 0x65, 0xb4, - 0x24, 0x51, 0xa2, 0xfa, 0x39, 0xb4, 0xf9, 0x49, 0xf1, 0x5d, 0x8e, 0xb4, 0x75, 0x62, 0x1f, 0xf6, - 0x48, 0x5b, 0x27, 0xfe, 0x11, 0x0f, 0xf3, 0x5c, 0xd1, 0x67, 0x4c, 0xb7, 0x53, 0x0a, 0xa1, 0x12, - 0x9e, 0x2b, 0xf1, 0x81, 0x0d, 0x1a, 0x31, 0x3e, 0x83, 0x99, 0xd8, 0x17, 0x2d, 0xc6, 0x72, 0x72, - 0x80, 0xf2, 0x02, 0x64, 0x96, 0x07, 0x23, 0xa4, 0xd2, 0x65, 0xdf, 0x9f, 0xa4, 0xd1, 0x55, 0x3e, - 0x7b, 0x49, 0xa3, 0xab, 0x7e, 0xba, 0xc2, 0x3c, 0x2d, 0xcd, 0xba, 0x14, 0xd5, 0xb7, 0xf7, 0x84, - 0xa7, 0x95, 0xf3, 0x08, 0xcc, 0x59, 0x45, 0xef, 0xf9, 0x86, 0xa9, 0x26, 0x45, 0xe4, 0xd7, 0x7a, - 0xf3, 0x47, 0xa9, 0x7d, 0x21, 0xa1, 0x4f, 0x59, 0x8a, 0x83, 0x97, 0x05, 0x1a, 0x71, 0x6c, 0xb9, - 0xee, 0x50, 0x3a, 0x72, 0x53, 0x2a, 0x09, 0x99, 0xfb, 0x17, 0x55, 0x7d, 0x92, 0x11, 0xc4, 0x8a, - 0x08, 0x25, 0x23, 0x88, 0x97, 0x00, 0xa2, 0x11, 0xb2, 0x33, 0x78, 0x25, 0x9d, 0xb4, 0x33, 0xd4, - 0x3a, 0x3f, 0xb3, 0x94, 0xec, 0x08, 0xc7, 0x3f, 0x84, 0x71, 0xae, 0x13, 0xe9, 0xfc, 0x51, 0xf4, - 0x71, 0x2b, 0x01, 0x57, 0x07, 0xb3, 0x12, 0x9a, 0x78, 0xd9, 0x41, 0xca, 0x60, 0xb9, 0x7c, 0x84, - 0xad, 0x48, 0x54, 0xd9, 0x21, 0xad, 0x48, 0xa2, 0x58, 0x44, 0x5a, 0x91, 0x64, 0x29, 0x08, 0x1a, - 0x31, 0x1e, 0x43, 0x41, 0x2e, 0xda, 0x90, 0x3c, 0x68, 0x4a, 0xe9, 0x87, 0xf9, 0xca, 0x80, 0x5e, - 0x59, 0xa3, 0xbc, 0xca, 0xc2, 0x88, 0x73, 0x1f, 0x24, 0x35, 0x1a, 0x2b, 0xc8, 0x60, 0x06, 0x4a, - 0xab, 0x0a, 0x8a, 0x6a, 0xcd, 0x41, 0xc2, 0x40, 0xe5, 0x4a, 0x08, 0x34, 0x62, 0x7c, 0x08, 0x63, - 0xb4, 0x84, 0xc1, 0x50, 0x31, 0xc2, 0x29, 0x17, 0xe2, 0x60, 0x79, 0xc2, 0xfd, 0x7e, 0xa7, 0x23, - 0x4d, 0x28, 0xe5, 0xe0, 0xa5, 0x09, 0xe5, 0xc4, 0xbb, 0x18, 0x16, 0x1c, 0x2b, 0xc3, 0xc2, 0x5c, - 0xbb, 0x32, 0x2c, 0x38, 0x56, 0x6d, 0x56, 0x44, 0xe3, 0xd2, 0xaa, 0x2b, 0xc9, 0x16, 0x33, 0x99, - 0x7a, 0x50, 0x7c, 0x5f, 0x0d, 0xa4, 0xa7, 0xb1, 0xdb, 0xea, 0x97, 0x05, 0xd2, 0xa7, 0x00, 0x92, - 0xe3, 0x4a, 0x96, 0xf4, 0x8f, 0x08, 0x2a, 0x34, 0xfd, 0x13, 0xa3, 0x22, 0x17, 0xfa, 0xc7, 0xa8, - 0xa8, 0x75, 0xfd, 0xd4, 0x0a, 0xa3, 0x47, 0x38, 0x43, 0xc5, 0x55, 0xca, 0xfd, 0x25, 0x2b, 0x4c, - 0x96, 0xe7, 0x33, 0xbd, 0x88, 0xa7, 0x3a, 0x69, 0x2f, 0xc7, 0x2a, 0xa4, 0xcd, 0xdb, 0x29, 0x3d, - 0x21, 0x89, 0x7d, 0x98, 0x52, 0xbe, 0xeb, 0x30, 0x22, 0x5b, 0x4d, 0xfb, 0x10, 0xc4, 0x5c, 0x1a, - 0xd4, 0x2d, 0xaf, 0xb1, 0x65, 0xbb, 0x6d, 0x69, 0x8d, 0xa5, 0xda, 0x15, 0x69, 0x8d, 0xe5, 0xda, - 0x11, 0xb6, 0xa3, 0xe4, 0xd2, 0x0f, 0x69, 0x47, 0xa5, 0x14, 0x90, 0x48, 0x3b, 0x2a, 0xad, 0x5e, - 0x84, 0xc9, 0xa5, 0x16, 0xcf, 0xbf, 0x32, 0xa0, 0xbc, 0x3c, 0x21, 0x57, 0xea, 0x77, 0x06, 0xec, - 0x70, 0x89, 0x7d, 0x01, 0x20, 0x1d, 0x2e, 0xe9, 0x5f, 0x13, 0x48, 0x87, 0xcb, 0xa0, 0x8f, 0x07, - 0x46, 0x48, 0x18, 0xa9, 0x56, 0xc9, 0x1b, 0x03, 0x78, 0x09, 0x92, 0x61, 0x64, 0x7a, 0x79, 0x3d, - 0x23, 0xaa, 0x7e, 0x56, 0x20, 0x11, 0x4d, 0xfd, 0x58, 0x41, 0x22, 0x3a, 0xe0, 0x7b, 0x04, 0x6a, - 0xfd, 0x61, 0x7e, 0x56, 0xb2, 0xfe, 0x78, 0x1e, 0x57, 0xb2, 0xfe, 0x44, 0x3a, 0x57, 0xa2, 0xd2, - 0x38, 0x77, 0x5b, 0x71, 0x2a, 0x52, 0x8e, 0x39, 0x4e, 0x45, 0x49, 0x35, 0xd3, 0x23, 0x51, 0x4a, - 0x2b, 0x4b, 0x47, 0x62, 0x32, 0x05, 0x2d, 0x1d, 0x89, 0x69, 0x99, 0xe8, 0x88, 0x16, 0xdf, 0x01, - 0x31, 0x5a, 0xaa, 0xfd, 0x2f, 0xa6, 0x77, 0x26, 0xf9, 0xa2, 0xc9, 0xe1, 0x04, 0x5f, 0x72, 0x22, - 0x39, 0xc1, 0x97, 0x9a, 0x4f, 0xa6, 0xb4, 0xa4, 0xb2, 0x1c, 0x89, 0x56, 0xb2, 0xe4, 0x47, 0xa2, - 0x95, 0x52, 0xc9, 0xc3, 0xb4, 0x1e, 0x96, 0xb7, 0xc8, 0x51, 0x64, 0xac, 0x6c, 0x46, 0x8e, 0x22, - 0xe3, 0xd5, 0x30, 0xcc, 0xac, 0xd4, 0xca, 0x14, 0xc9, 0xac, 0x52, 0xeb, 0x5e, 0x24, 0xb3, 0x1a, - 0x50, 0xd2, 0x42, 0x77, 0xbe, 0x9c, 0x5f, 0x92, 0x76, 0x7e, 0x4a, 0x62, 0x4b, 0xda, 0xf9, 0x69, - 0x49, 0x29, 0xee, 0x5d, 0xc3, 0x34, 0x90, 0xec, 0x5d, 0xe3, 0xe9, 0x25, 0xd9, 0xbb, 0x26, 0xf2, - 0x46, 0x4c, 0x58, 0x35, 0xa3, 0x29, 0x09, 0x9b, 0x9a, 0x4d, 0x95, 0x84, 0x4d, 0x4f, 0x85, 0x32, - 0xbf, 0xa4, 0xa4, 0x1f, 0x25, 0xbf, 0x94, 0x96, 0xf8, 0x34, 0x97, 0x06, 0x75, 0xcb, 0x87, 0x80, - 0x48, 0x21, 0x4a, 0x87, 0x40, 0x2c, 0x3d, 0x29, 0x1d, 0x02, 0xf1, 0x7c, 0x23, 0x1a, 0x59, 0x5f, - 0xfc, 0xe6, 0xdb, 0xa5, 0x91, 0xdf, 0x7c, 0xbb, 0xa4, 0xfd, 0xcf, 0xb7, 0x4b, 0xda, 0x37, 0x2f, - 0x96, 0xb4, 0x7f, 0x7b, 0xb1, 0xa4, 0xfd, 0xe7, 0x8b, 0x25, 0xed, 0xbf, 0x5f, 0x2c, 0x69, 0x4f, - 0xc6, 0xe9, 0xdf, 0x96, 0xdc, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x26, 0xa7, 0x03, - 0xe3, 0x44, 0x00, 0x00, + // 5098 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7c, 0xcd, 0x6f, 0x23, 0xc7, + 0x72, 0xb8, 0x86, 0xd4, 0x07, 0x59, 0xa4, 0xa4, 0xd1, 0x88, 0xd2, 0x72, 0xe7, 0xc9, 0x12, 0xdd, + 0xb6, 0xdf, 0xca, 0xb2, 0xd7, 0xf6, 0x6a, 0xbd, 0x0b, 0xef, 0x6f, 0x9f, 0xfd, 0x7b, 0x14, 0x49, + 0xad, 0x64, 0x69, 0x25, 0xbd, 0x21, 0xe5, 0x8f, 0x3c, 0x04, 0x7a, 0xb3, 0x64, 0xaf, 0x34, 0x11, + 0x35, 0x43, 0xcf, 0x90, 0x5a, 0xeb, 0x14, 0xe0, 0x9d, 0x02, 0x21, 0xc1, 0x43, 0x80, 0x1c, 0x92, + 0x00, 0x4a, 0x10, 0xe4, 0x13, 0xc9, 0x31, 0xb7, 0x20, 0xe7, 0xc4, 0xc7, 0x20, 0xa7, 0x97, 0xcb, + 0x22, 0x5e, 0xe4, 0x90, 0x63, 0x80, 0xfc, 0x03, 0x41, 0x7f, 0xcd, 0x74, 0xcf, 0x0c, 0xa5, 0x95, + 0xbd, 0x7e, 0x37, 0x76, 0x75, 0x75, 0x75, 0x55, 0x75, 0x75, 0x75, 0x75, 0x57, 0x0d, 0x01, 0x8e, + 0xf1, 0x59, 0xf0, 0x5e, 0xcf, 0xf7, 0xfa, 0x9e, 0x31, 0x11, 0x60, 0xff, 0xd4, 0x69, 0x63, 0xb3, + 0x74, 0xe8, 0x1d, 0x7a, 0x14, 0xf6, 0x3e, 0xf9, 0xc5, 0xba, 0x91, 0x07, 0x85, 0xa6, 0x73, 0xe8, + 0x5a, 0xf8, 0xab, 0x01, 0x0e, 0xfa, 0x86, 0x01, 0xa3, 0x1d, 0xbb, 0x6f, 0x97, 0xb5, 0x8a, 0xb6, + 0x5c, 0xb4, 0xe8, 0x6f, 0x63, 0x1e, 0xc6, 0x03, 0xe7, 0xd0, 0xc5, 0x7e, 0x79, 0xac, 0xa2, 0x2d, + 0xe7, 0x2d, 0xde, 0x32, 0xca, 0x30, 0x61, 0xfb, 0x27, 0x9e, 0x8f, 0x3b, 0x65, 0xa8, 0x68, 0xcb, + 0x39, 0x4b, 0x34, 0x0d, 0x13, 0x72, 0x1d, 0xdc, 0xb7, 0xdb, 0x47, 0xb8, 0x53, 0x2e, 0xd0, 0xae, + 0xb0, 0x8d, 0x3e, 0x86, 0x22, 0x9b, 0x30, 0xe8, 0x79, 0x6e, 0x80, 0x53, 0x67, 0xbc, 0x09, 0xd9, + 0x63, 0xa7, 0x53, 0xce, 0x90, 0xe9, 0xd6, 0x26, 0x5e, 0x3c, 0x5f, 0xca, 0x6e, 0x6d, 0xd6, 0x2d, + 0x02, 0x43, 0xbf, 0x0b, 0x93, 0x64, 0xf8, 0xba, 0xd3, 0xc5, 0x9b, 0x6e, 0x6f, 0xd0, 0x37, 0xa6, + 0x20, 0xe3, 0xb8, 0x74, 0x74, 0xde, 0xca, 0x38, 0xae, 0xa1, 0x43, 0xd6, 0x1b, 0xf4, 0xd9, 0x58, + 0x8b, 0xfc, 0x7c, 0xc5, 0xfc, 0x3b, 0x30, 0x25, 0x18, 0xd8, 0x1d, 0xf4, 0x09, 0x07, 0x9c, 0x5b, + 0x2d, 0xc9, 0x6d, 0x0a, 0x33, 0x25, 0x18, 0x7b, 0x72, 0xd6, 0xc7, 0x01, 0x9d, 0x72, 0xcc, 0x62, + 0x0d, 0x02, 0xed, 0x7b, 0x7d, 0xbb, 0x4b, 0x67, 0x1b, 0xb3, 0x58, 0x03, 0xbd, 0x01, 0x93, 0x9f, + 0x61, 0xdf, 0x79, 0x7a, 0x76, 0xc9, 0xea, 0xa0, 0x4f, 0x61, 0x4a, 0x20, 0x5d, 0xa2, 0xd1, 0x37, + 0x43, 0x1d, 0x10, 0x5e, 0x0a, 0xab, 0xc5, 0xf7, 0xb8, 0x59, 0xbc, 0xb7, 0x85, 0xcf, 0x84, 0x46, + 0xd0, 0xc7, 0x30, 0xc7, 0x68, 0xd5, 0xb9, 0xb4, 0x97, 0x99, 0x85, 0x0e, 0xd9, 0xc0, 0x39, 0xa4, + 0xf4, 0x8a, 0x16, 0xf9, 0x89, 0x3e, 0x81, 0xf9, 0xf8, 0x70, 0xce, 0x52, 0x34, 0xbd, 0x76, 0xc9, + 0xf4, 0xaf, 0x43, 0x81, 0x8d, 0x67, 0x2b, 0x9b, 0x26, 0xed, 0x06, 0x14, 0x19, 0x0a, 0xd7, 0xfd, + 0x77, 0x97, 0xf5, 0x2e, 0x4c, 0x33, 0x4a, 0xd7, 0x30, 0x25, 0xf4, 0x29, 0xe8, 0xd1, 0x20, 0xce, + 0xc2, 0x4b, 0xc9, 0x96, 0x42, 0xeb, 0x21, 0xdc, 0x50, 0xb5, 0x75, 0x29, 0x23, 0x31, 0x55, 0x3f, + 0x84, 0x59, 0x75, 0xf0, 0x50, 0x95, 0xa5, 0x0c, 0xfe, 0x67, 0x0d, 0xf2, 0xcd, 0xbe, 0xdd, 0xc7, + 0x27, 0xd8, 0xed, 0x8b, 0x7e, 0x2d, 0xec, 0x0f, 0xa9, 0x64, 0x92, 0x5b, 0x32, 0x9b, 0x6e, 0xe4, + 0x01, 0xfe, 0xaa, 0x3c, 0x4a, 0x4d, 0x97, 0xfc, 0x24, 0x04, 0x7a, 0x3e, 0x3e, 0xa5, 0xfb, 0xad, + 0x68, 0xd1, 0xdf, 0x64, 0x17, 0xfa, 0xf8, 0xd4, 0x3b, 0xc6, 0xe5, 0x71, 0x8a, 0xc8, 0x5b, 0xc6, + 0x02, 0xe4, 0xfb, 0xce, 0x09, 0x0e, 0xfa, 0xf6, 0x49, 0xaf, 0x3c, 0x51, 0xd1, 0x96, 0xb3, 0x56, + 0x04, 0x20, 0x94, 0xfa, 0x67, 0x3d, 0x5c, 0xce, 0x51, 0x5d, 0xd0, 0xdf, 0xe8, 0x5d, 0x98, 0x6e, + 0x3a, 0x87, 0xed, 0x23, 0xdb, 0x09, 0xdd, 0xd6, 0xf0, 0x2d, 0x88, 0x9e, 0x82, 0x1e, 0x61, 0x73, + 0x73, 0x5c, 0x84, 0xec, 0x31, 0x3e, 0x4b, 0x5d, 0x2f, 0xd2, 0x61, 0xac, 0x02, 0x04, 0x42, 0x3f, + 0x41, 0x39, 0x53, 0xc9, 0x2e, 0x17, 0x56, 0x8d, 0x10, 0x2d, 0x54, 0x9d, 0x25, 0x61, 0xa1, 0xff, + 0x0f, 0x7a, 0xd4, 0x71, 0x25, 0x5b, 0x42, 0x69, 0x99, 0x50, 0x69, 0xa8, 0x01, 0x33, 0x12, 0x01, + 0xce, 0xe9, 0x07, 0x90, 0x0f, 0xe7, 0xe0, 0xfc, 0xa6, 0x31, 0x12, 0x21, 0xa1, 0xdf, 0x86, 0xf9, + 0x10, 0x5e, 0xf3, 0xb1, 0xdd, 0xc7, 0x97, 0x6d, 0xe2, 0xe1, 0x9e, 0x96, 0xf8, 0xa4, 0xae, 0xd7, + 0xb6, 0xbb, 0x74, 0x15, 0x73, 0x16, 0x6b, 0xa0, 0x2d, 0xb8, 0x91, 0x20, 0xff, 0x9d, 0x79, 0xfd, + 0xb9, 0xc4, 0xab, 0x45, 0xcd, 0x41, 0xf0, 0xca, 0xd5, 0xa3, 0x45, 0x36, 0xf5, 0xbd, 0x38, 0x15, + 0xc4, 0xbf, 0x33, 0xa7, 0xbf, 0x22, 0x5b, 0xc6, 0x39, 0x74, 0x87, 0x6f, 0x33, 0xb6, 0x67, 0x33, + 0x71, 0xe7, 0x91, 0xfd, 0xa1, 0xce, 0xa1, 0x87, 0x00, 0x84, 0xa1, 0x4b, 0xfc, 0xe0, 0x25, 0xa7, + 0xe8, 0x9f, 0x6a, 0x30, 0xd5, 0x70, 0xdb, 0xfe, 0x59, 0xaf, 0xbf, 0xdb, 0xeb, 0x3b, 0x9e, 0x1b, + 0xc8, 0x5c, 0x68, 0x2a, 0x17, 0xcb, 0x30, 0x7a, 0xe2, 0x75, 0x30, 0x25, 0x34, 0xb5, 0x5a, 0x0a, + 0x15, 0xc5, 0x09, 0x3c, 0xf6, 0x3a, 0xd8, 0xa2, 0x18, 0xc6, 0xbb, 0x30, 0xe3, 0x7a, 0x4d, 0xec, + 0x76, 0xb0, 0x6f, 0xe1, 0xb6, 0xd3, 0x73, 0x88, 0x7e, 0xb3, 0x94, 0x5a, 0xb2, 0x83, 0xe8, 0xc3, + 0xf5, 0x88, 0x0c, 0xd4, 0x75, 0xe4, 0x2c, 0xde, 0x22, 0xba, 0x16, 0xcc, 0x5d, 0x66, 0xba, 0x8b, + 0x00, 0xbe, 0xa0, 0x15, 0x94, 0xb3, 0x95, 0xec, 0x72, 0xde, 0x92, 0x20, 0x54, 0xdd, 0x74, 0x46, + 0x4a, 0x9e, 0xa8, 0x9b, 0xb6, 0x8c, 0x3b, 0x30, 0xe1, 0x31, 0x99, 0xa9, 0xba, 0x0b, 0xab, 0x37, + 0xe2, 0x12, 0x71, 0x95, 0x58, 0x02, 0x0f, 0x3d, 0x80, 0xe9, 0x90, 0xa1, 0x4b, 0x0e, 0x59, 0x03, + 0x46, 0x1d, 0xf7, 0xa9, 0xc7, 0x8d, 0x80, 0xfe, 0x46, 0x7f, 0xae, 0x81, 0xce, 0xc7, 0x5e, 0x27, + 0x66, 0xf9, 0x0d, 0x0a, 0xf7, 0x33, 0x98, 0x91, 0x18, 0xe4, 0xf6, 0xf4, 0xfd, 0x02, 0x97, 0x3f, + 0xd0, 0xa0, 0xc8, 0x69, 0x0e, 0xdf, 0x30, 0xbf, 0x41, 0x11, 0xdf, 0x80, 0x49, 0xd1, 0x35, 0x74, + 0xbb, 0xa0, 0x37, 0x61, 0xaa, 0x8e, 0xaf, 0xb2, 0x3a, 0x34, 0x80, 0xe9, 0x10, 0xeb, 0x8a, 0x78, + 0x8b, 0x31, 0x9f, 0x1e, 0x83, 0x30, 0x51, 0xc4, 0xce, 0x1a, 0xbb, 0x6a, 0x67, 0xa1, 0x0f, 0x41, + 0xe7, 0xd3, 0x5e, 0x27, 0x5c, 0xf9, 0x0b, 0x0d, 0x66, 0xa4, 0x61, 0x52, 0xc0, 0xc2, 0x78, 0xd3, + 0x2e, 0xe1, 0xed, 0x7b, 0x59, 0xc0, 0x35, 0x24, 0x43, 0x50, 0xe4, 0x2c, 0x0e, 0x8f, 0xfa, 0x02, + 0x98, 0xe4, 0x38, 0x57, 0x84, 0x7d, 0xaf, 0x52, 0xe5, 0xf3, 0x50, 0xb2, 0x06, 0x2e, 0x09, 0x45, + 0xc8, 0x89, 0x30, 0x08, 0xb8, 0x55, 0xa0, 0x7f, 0xd5, 0x60, 0x2e, 0xd6, 0xc1, 0x0d, 0xa1, 0x0c, + 0x13, 0xa7, 0xd8, 0x0f, 0x1c, 0x4f, 0xac, 0x8a, 0x68, 0x52, 0xe7, 0xda, 0xeb, 0xed, 0xd8, 0x27, + 0x98, 0x2b, 0x54, 0x34, 0x89, 0x9a, 0xf1, 0xd7, 0x98, 0x9b, 0x38, 0xf9, 0x69, 0xdc, 0x05, 0xb0, + 0x07, 0xfd, 0x23, 0x46, 0x9b, 0xf3, 0x39, 0x1b, 0xf2, 0x59, 0x0d, 0xbb, 0x2c, 0x09, 0x8d, 0x28, + 0x24, 0x38, 0x73, 0xdb, 0x34, 0xb6, 0xca, 0x59, 0xf4, 0xb7, 0xb1, 0x04, 0x63, 0x4f, 0x9d, 0x8e, + 0xb7, 0x5a, 0x2e, 0x11, 0xe0, 0x5a, 0xfe, 0xc5, 0xf3, 0xa5, 0xb1, 0xf5, 0xcd, 0xfa, 0xee, 0xaa, + 0xc5, 0xe0, 0xe8, 0x67, 0xa0, 0x53, 0x72, 0xb8, 0x3f, 0xe8, 0x09, 0x9b, 0xa7, 0xbb, 0xae, 0xed, + 0xe3, 0x3e, 0x17, 0x81, 0xb7, 0x8c, 0xb7, 0x78, 0x20, 0xc6, 0x0e, 0x81, 0x19, 0x85, 0x9f, 0xd6, + 0x59, 0x0f, 0xf3, 0xd8, 0x6c, 0x16, 0x66, 0x24, 0x92, 0x4c, 0x2f, 0x68, 0x85, 0xcd, 0xf3, 0x99, + 0x3d, 0xe8, 0xf6, 0xa5, 0x79, 0x7a, 0x47, 0xbe, 0x1d, 0x60, 0x31, 0x0f, 0x6b, 0x09, 0x02, 0x1c, + 0x97, 0x13, 0xf8, 0x1d, 0x06, 0xdc, 0x77, 0xbb, 0x5e, 0xfb, 0xf8, 0xd5, 0x70, 0x4a, 0x86, 0xb7, + 0xbb, 0xf4, 0x80, 0x1a, 0x67, 0xc3, 0x59, 0x0b, 0xad, 0x82, 0x21, 0xcf, 0xc5, 0x97, 0x76, 0x01, + 0xf2, 0x44, 0xdb, 0x2d, 0xef, 0x18, 0x8b, 0xc5, 0x8d, 0x00, 0xe8, 0x18, 0x4a, 0x64, 0xcc, 0x9e, + 0xef, 0x9d, 0x3a, 0x64, 0xbd, 0x5f, 0x11, 0x8b, 0x25, 0x18, 0x0b, 0x88, 0x22, 0x69, 0x58, 0x9c, + 0xb3, 0x58, 0x03, 0x3d, 0x86, 0xb9, 0xd8, 0x64, 0x9c, 0xc7, 0x0f, 0x21, 0xdf, 0x13, 0x40, 0xbe, + 0xb5, 0xe7, 0x15, 0xd2, 0xd1, 0x90, 0x08, 0x11, 0x7d, 0x00, 0xf3, 0xa4, 0xaf, 0x8e, 0x7b, 0x49, + 0xee, 0x33, 0x61, 0xf0, 0x3a, 0xfe, 0xe2, 0xf9, 0x52, 0x66, 0xb3, 0x6e, 0x65, 0x9c, 0x0e, 0xba, + 0x09, 0x37, 0x12, 0x23, 0xf8, 0x42, 0x3d, 0x84, 0xb9, 0x3d, 0x3b, 0x08, 0x9e, 0x79, 0x7e, 0xa7, + 0x76, 0x64, 0xbb, 0x87, 0x72, 0x3c, 0xe7, 0x75, 0x39, 0x31, 0x8b, 0xfc, 0x24, 0x10, 0x17, 0x3f, + 0x13, 0xfe, 0xc5, 0xc5, 0xcf, 0x50, 0x19, 0xe6, 0xe3, 0x83, 0x39, 0xd9, 0xbf, 0xd1, 0x60, 0x52, + 0x11, 0x60, 0x18, 0x6f, 0x2f, 0xab, 0xd9, 0x05, 0xc8, 0xb7, 0x69, 0xf0, 0xda, 0xa9, 0xb2, 0x00, + 0x25, 0x6b, 0x45, 0x00, 0x03, 0xc1, 0xb8, 0x6d, 0x1f, 0x0e, 0x9c, 0x4e, 0xb9, 0x43, 0x27, 0x80, + 0x17, 0xcf, 0x97, 0xc6, 0xab, 0xd5, 0x47, 0xfb, 0x9b, 0x75, 0x8b, 0xf7, 0x90, 0xb5, 0x71, 0xbd, + 0x3d, 0xc7, 0x2d, 0x63, 0xb6, 0x36, 0xb4, 0x81, 0x6e, 0xc4, 0xd6, 0x26, 0x74, 0x1a, 0x7b, 0x4c, + 0xcb, 0x72, 0x07, 0x5f, 0xb5, 0xfb, 0x00, 0xa1, 0x1e, 0x83, 0xb2, 0x46, 0xef, 0x1a, 0xc3, 0x96, + 0x4d, 0xc2, 0x44, 0x33, 0x30, 0x4d, 0x3a, 0xb7, 0xa3, 0x1d, 0x81, 0x0c, 0xb6, 0xcf, 0xb6, 0x25, + 0xc3, 0x45, 0xff, 0x0f, 0x8c, 0x2d, 0x7c, 0xf6, 0x08, 0xbb, 0xd8, 0x97, 0xae, 0x02, 0x6f, 0x72, + 0x35, 0x69, 0x54, 0x4d, 0xba, 0xec, 0x29, 0xa5, 0xcd, 0xfc, 0x01, 0xcc, 0x2a, 0x63, 0x39, 0xc7, + 0x97, 0x5c, 0xb6, 0x36, 0xc1, 0xd8, 0x0f, 0xb0, 0xdf, 0x64, 0xe4, 0x5e, 0xe2, 0x1a, 0x54, 0x06, + 0xf1, 0x3e, 0x25, 0x1c, 0x23, 0x6f, 0xa2, 0xf7, 0x61, 0x56, 0x21, 0x15, 0xf9, 0x58, 0x31, 0x40, + 0x53, 0x07, 0xfc, 0x16, 0x4c, 0xd3, 0x01, 0xd2, 0x6b, 0xd6, 0x77, 0x99, 0x98, 0xb8, 0x52, 0x97, + 0x38, 0x6a, 0x16, 0xb9, 0xd3, 0xdf, 0xe8, 0xa7, 0xa0, 0x47, 0xb4, 0x23, 0x4e, 0x4e, 0x70, 0x10, + 0xd8, 0x87, 0x21, 0x27, 0xbc, 0x19, 0x52, 0xc8, 0x48, 0x14, 0xce, 0x35, 0x98, 0x22, 0x24, 0xaa, + 0x9d, 0xce, 0xab, 0xe6, 0x8e, 0x10, 0x1a, 0xf8, 0x5d, 0x76, 0x86, 0x30, 0x42, 0xfb, 0xd6, 0xb6, + 0x45, 0x60, 0x43, 0xae, 0x46, 0x4f, 0x99, 0xaa, 0x28, 0x2f, 0x5c, 0x9a, 0xd7, 0x61, 0x74, 0x10, + 0x84, 0x21, 0xc1, 0x64, 0x68, 0x11, 0x04, 0xcf, 0xa2, 0x5d, 0xea, 0xad, 0x29, 0xf3, 0x32, 0xb7, + 0xa6, 0xbf, 0xd7, 0x40, 0xdf, 0xc2, 0x67, 0x8d, 0xaf, 0x7b, 0x9e, 0xff, 0x32, 0x97, 0x62, 0x13, + 0x72, 0x3d, 0xee, 0x01, 0xb8, 0xdc, 0x61, 0xdb, 0xb8, 0xc5, 0x4d, 0x36, 0x1b, 0x3b, 0x10, 0x19, + 0x71, 0xd5, 0xb1, 0xf7, 0x06, 0x4f, 0xba, 0x4e, 0x5b, 0x5c, 0x2b, 0x58, 0x8b, 0xc4, 0x9b, 0xae, + 0x27, 0x1c, 0x0c, 0xd7, 0x87, 0x04, 0x41, 0xef, 0xc0, 0x8c, 0xc4, 0x2b, 0x57, 0xcb, 0x3c, 0x8c, + 0x63, 0x0a, 0xe1, 0xa1, 0x06, 0x6f, 0xa1, 0x4f, 0xa8, 0x60, 0x9b, 0x27, 0xb2, 0x60, 0x51, 0x3c, + 0x56, 0xa4, 0xf1, 0xd8, 0x25, 0xd2, 0xa0, 0xf7, 0xe8, 0x64, 0x62, 0xfc, 0xd5, 0x1b, 0xeb, 0x36, + 0x9d, 0xcf, 0xc2, 0x27, 0xde, 0xe9, 0x4b, 0x6c, 0x2b, 0x72, 0x8a, 0x4a, 0xe8, 0xdc, 0x15, 0xfc, + 0xbb, 0x06, 0xd9, 0x2d, 0x7c, 0x36, 0xd4, 0x77, 0xbe, 0xa9, 0x68, 0x78, 0x88, 0x53, 0x08, 0x0d, + 0x65, 0x7c, 0xb8, 0xa1, 0x90, 0x73, 0xcb, 0x3e, 0x0d, 0xaf, 0xb3, 0xac, 0x61, 0xfc, 0x18, 0xa6, + 0x02, 0xfe, 0x10, 0xb3, 0x8d, 0xdd, 0xc3, 0xfe, 0x51, 0x79, 0x99, 0x46, 0x8c, 0x31, 0x28, 0xb9, + 0x44, 0x0a, 0xc8, 0x7e, 0xaf, 0xc3, 0x7d, 0xf4, 0xdb, 0xd4, 0x47, 0x27, 0x3b, 0xd0, 0x0e, 0x00, + 0x95, 0x34, 0x3c, 0x66, 0xc4, 0xc3, 0x4e, 0x9e, 0x3d, 0xe5, 0xd0, 0x23, 0xd8, 0xf6, 0xdb, 0x47, + 0xc2, 0x1a, 0x58, 0x8b, 0xc0, 0x07, 0x94, 0x08, 0xb7, 0x04, 0xde, 0x42, 0xb7, 0xa1, 0x40, 0xe9, + 0xbd, 0xdc, 0x4b, 0x11, 0xfa, 0x5b, 0x8d, 0xe2, 0x0b, 0x3f, 0x4f, 0x44, 0xff, 0x6a, 0x80, 0x7d, + 0xc1, 0x02, 0x6b, 0x18, 0x3f, 0x86, 0x31, 0xa2, 0x3b, 0xf6, 0x94, 0x94, 0xa6, 0x5a, 0xd6, 0x4d, + 0x8e, 0xa5, 0xc0, 0xf3, 0xfb, 0xeb, 0x0e, 0xee, 0x32, 0xe5, 0xe5, 0xad, 0x08, 0x60, 0xfc, 0x04, + 0x26, 0x49, 0xa3, 0xee, 0xf8, 0xb8, 0x4d, 0xee, 0x35, 0x34, 0xe2, 0x9e, 0x92, 0x0e, 0x8b, 0xa6, + 0xdc, 0x6b, 0xa9, 0xc8, 0xe8, 0xf7, 0x35, 0x28, 0x32, 0x4e, 0xb9, 0x68, 0x15, 0x18, 0x3d, 0xc6, + 0x67, 0xe2, 0xc8, 0x51, 0x65, 0xa3, 0x3d, 0x3f, 0x28, 0x3b, 0xbf, 0xcc, 0xc0, 0x78, 0x93, 0x45, + 0x43, 0xc3, 0xec, 0x31, 0xc5, 0x8d, 0x0e, 0xf5, 0x02, 0x8c, 0x94, 0x64, 0xa6, 0x26, 0xe4, 0x88, + 0x2d, 0x52, 0x02, 0x8c, 0xf5, 0xb0, 0xad, 0x6c, 0xcc, 0x42, 0xcc, 0xcd, 0x70, 0x5f, 0x5a, 0x4a, + 0xf7, 0xa5, 0xae, 0x47, 0xee, 0x3f, 0x8b, 0x6c, 0x6d, 0x69, 0x43, 0x0d, 0x25, 0x3a, 0xf1, 0x50, + 0x62, 0x01, 0xf2, 0x83, 0xd0, 0x88, 0x31, 0xeb, 0x0d, 0x01, 0xe8, 0x16, 0x4c, 0x32, 0xc6, 0xaf, + 0x0a, 0xb9, 0x1e, 0xc0, 0x94, 0x40, 0xe4, 0xab, 0x77, 0x4b, 0x09, 0x2d, 0x0b, 0xab, 0xd3, 0x31, + 0x55, 0x88, 0x58, 0x13, 0xfd, 0x04, 0x66, 0x18, 0xa4, 0x69, 0x47, 0xae, 0xe3, 0xa5, 0x47, 0x7f, + 0x0c, 0x86, 0x3c, 0xfa, 0xba, 0x93, 0xdf, 0x86, 0x59, 0xc1, 0xb7, 0xec, 0xb9, 0x86, 0x89, 0x39, + 0x0f, 0x25, 0x15, 0x9d, 0x7b, 0xae, 0x5f, 0x6a, 0x42, 0xfe, 0x2b, 0x36, 0xda, 0x0f, 0x69, 0xb1, + 0x7f, 0xac, 0xc1, 0x74, 0xc8, 0x04, 0x57, 0xc4, 0xdb, 0xe4, 0x9c, 0xa6, 0x20, 0xbe, 0x8d, 0x12, + 0x9a, 0x10, 0xfd, 0x3f, 0x28, 0x6b, 0x6f, 0x41, 0x61, 0xb3, 0x8f, 0x4f, 0xae, 0x52, 0xef, 0x1d, + 0x28, 0x32, 0xb4, 0xe8, 0xcc, 0x77, 0xfa, 0xf8, 0x24, 0x71, 0xe6, 0x53, 0x24, 0xda, 0x85, 0xde, + 0x64, 0x43, 0x2e, 0x57, 0x3b, 0xfa, 0x10, 0x26, 0x39, 0x16, 0xa7, 0xfc, 0x06, 0x8c, 0x91, 0xe1, + 0x42, 0x2b, 0x31, 0xd2, 0xac, 0x0f, 0xad, 0xc2, 0x28, 0x69, 0x5e, 0xb6, 0xff, 0xc3, 0x58, 0x5e, + 0xbc, 0xfd, 0xff, 0x91, 0x06, 0x05, 0xcb, 0x76, 0xc3, 0x18, 0xca, 0x84, 0x9c, 0x3b, 0x38, 0x59, + 0xa3, 0xcf, 0x12, 0xec, 0xb1, 0x38, 0x6c, 0x1b, 0xb7, 0x21, 0x87, 0xdd, 0xb6, 0xd7, 0x71, 0xdc, + 0xc3, 0xc4, 0x7d, 0xa0, 0xc1, 0x3b, 0xac, 0x10, 0x85, 0x2c, 0x10, 0x89, 0x06, 0x3a, 0x14, 0x9f, + 0x9d, 0x5c, 0x11, 0x80, 0xf4, 0x76, 0xbd, 0x67, 0xd8, 0x6f, 0x93, 0x2b, 0x2b, 0x7b, 0x8b, 0x8d, + 0x00, 0x08, 0x41, 0x91, 0x71, 0x95, 0xf2, 0x24, 0x94, 0xe7, 0x8f, 0x18, 0xb7, 0x61, 0x96, 0xe0, + 0x88, 0x78, 0x43, 0xba, 0x23, 0x76, 0xd9, 0x71, 0xc8, 0xf8, 0xe7, 0x2d, 0xb4, 0x0a, 0x25, 0x15, + 0x9d, 0x93, 0x96, 0x9d, 0x97, 0x16, 0x8b, 0x2a, 0x96, 0xa0, 0xb0, 0x37, 0xe8, 0x76, 0x87, 0x9e, + 0x86, 0xe8, 0x5d, 0x28, 0x32, 0x84, 0xf0, 0x5a, 0x3b, 0x7a, 0xec, 0x74, 0xd8, 0x32, 0xe5, 0xd7, + 0x72, 0x2f, 0x9e, 0x2f, 0x8d, 0x6e, 0x6d, 0xd6, 0x03, 0x8b, 0x42, 0x51, 0x95, 0x90, 0x0b, 0x8e, + 0x86, 0x1f, 0xae, 0x15, 0x28, 0xf8, 0xf8, 0xc4, 0xeb, 0xe3, 0xda, 0x11, 0x6e, 0x1f, 0x53, 0x25, + 0xe7, 0x2c, 0x19, 0x84, 0x1e, 0x91, 0x09, 0x09, 0x89, 0x2b, 0x43, 0x1c, 0xc2, 0xcb, 0xc0, 0xef, + 0xb2, 0x33, 0x92, 0xf3, 0xb2, 0x6f, 0x6d, 0x07, 0x16, 0x85, 0xa2, 0x0a, 0x40, 0xcd, 0xeb, 0x76, + 0x99, 0xc1, 0xd3, 0x04, 0x93, 0xcd, 0x55, 0x96, 0xb7, 0xe8, 0x6f, 0x54, 0x07, 0x23, 0xc2, 0x08, + 0xe4, 0x77, 0x06, 0xdb, 0x17, 0xef, 0xfc, 0x79, 0x8b, 0xb7, 0x88, 0xd1, 0x75, 0x9e, 0xb0, 0x87, + 0x78, 0x66, 0x74, 0xf5, 0x35, 0x2b, 0xd3, 0x79, 0x82, 0xb6, 0x61, 0x56, 0xa1, 0xc2, 0xf9, 0xbe, + 0x07, 0x85, 0x76, 0x04, 0xe6, 0x66, 0x1d, 0x1d, 0x3f, 0xd1, 0x10, 0x4b, 0xc6, 0x43, 0x3d, 0xc8, + 0xd5, 0xbd, 0xf6, 0x80, 0xe6, 0xd9, 0x52, 0x78, 0x26, 0xdb, 0xe9, 0xd4, 0xee, 0x0e, 0x84, 0x8d, + 0xb3, 0x86, 0x7a, 0xa4, 0xc0, 0xa5, 0x47, 0x4a, 0x21, 0x7e, 0xa4, 0xac, 0x81, 0x2e, 0x66, 0x54, + 0x74, 0xe0, 0xe3, 0xa7, 0xce, 0xd7, 0xa1, 0x0e, 0x68, 0x6b, 0xa8, 0x0e, 0xea, 0x30, 0x23, 0xd1, + 0xe0, 0x1a, 0x78, 0x1f, 0xf2, 0x1d, 0x01, 0xe4, 0xf2, 0x47, 0xdb, 0x49, 0xa0, 0x5b, 0x11, 0x0e, + 0xaa, 0xc1, 0x9c, 0x00, 0xd7, 0x71, 0x17, 0x2b, 0x79, 0xa8, 0x84, 0x22, 0x86, 0xb1, 0x52, 0x86, + 0xf9, 0x38, 0x11, 0x7e, 0x26, 0xfc, 0x61, 0x06, 0x46, 0x49, 0xcc, 0x79, 0xad, 0xf0, 0xe1, 0x5a, + 0x59, 0x4c, 0xe9, 0x12, 0x36, 0xa6, 0x5e, 0xc2, 0x78, 0x90, 0x30, 0x9e, 0x12, 0x24, 0xbc, 0x03, + 0xe3, 0x01, 0x7b, 0xb9, 0x83, 0x58, 0x88, 0x42, 0x2f, 0x90, 0xec, 0xe5, 0x8e, 0xa3, 0x90, 0x2b, + 0xc9, 0x29, 0xf6, 0x9d, 0xa7, 0x8e, 0xb4, 0x96, 0x12, 0x44, 0xcd, 0x8d, 0x16, 0xe3, 0xb9, 0x51, + 0x1d, 0xb2, 0xd8, 0xf7, 0x59, 0xa8, 0x62, 0x91, 0x9f, 0xe8, 0x13, 0x28, 0xd0, 0x30, 0xfc, 0xea, + 0x9b, 0x56, 0x78, 0x2f, 0x1c, 0x95, 0xef, 0x85, 0x77, 0xa0, 0xc8, 0xc6, 0xbf, 0xf4, 0xa5, 0x10, + 0xed, 0xc3, 0x0c, 0xbb, 0xa6, 0x93, 0xa8, 0xfa, 0xf2, 0xc3, 0x99, 0xcc, 0xe9, 0x9c, 0x38, 0xec, + 0xc1, 0x65, 0xcc, 0x62, 0x8d, 0x21, 0x9c, 0x3c, 0x10, 0x0f, 0x09, 0x8c, 0x6c, 0x74, 0xac, 0x90, + 0x49, 0x93, 0xc7, 0x0a, 0x65, 0x88, 0xf5, 0xa1, 0xb7, 0x48, 0x50, 0x75, 0x25, 0x37, 0x68, 0x95, + 0x84, 0x14, 0x0a, 0xf5, 0x2b, 0x03, 0x62, 0x64, 0x80, 0x4e, 0x1f, 0x26, 0x9b, 0x67, 0x6e, 0x5b, + 0x3c, 0xba, 0xcc, 0xc2, 0x8c, 0x04, 0xe3, 0xc6, 0x59, 0x02, 0x83, 0x02, 0xf7, 0xdd, 0x40, 0x42, + 0x9d, 0x83, 0x59, 0x05, 0xca, 0x91, 0x05, 0xd5, 0xea, 0xa0, 0x2f, 0x78, 0x26, 0x97, 0x51, 0x09, + 0x16, 0x5d, 0x46, 0x53, 0xdf, 0x4c, 0xc5, 0x6c, 0xea, 0x3b, 0xf5, 0x36, 0x9f, 0x2d, 0xf6, 0x48, + 0x7d, 0xf9, 0xf5, 0x9b, 0x30, 0x46, 0x8d, 0x31, 0x43, 0xad, 0x2d, 0x6c, 0x47, 0x12, 0x51, 0x4f, + 0x93, 0x90, 0x88, 0x43, 0xb9, 0x44, 0xff, 0xa8, 0xc1, 0xe4, 0xe7, 0x9e, 0x7f, 0x72, 0xe4, 0x89, + 0x5c, 0xc5, 0xbc, 0x92, 0x73, 0x88, 0x92, 0x39, 0x0b, 0x90, 0x0f, 0x53, 0x3e, 0x7c, 0xa7, 0x46, + 0x00, 0x32, 0xca, 0x71, 0x4f, 0x9d, 0xbe, 0x78, 0xee, 0xe0, 0x2d, 0xbe, 0xe5, 0x21, 0x6d, 0xcb, + 0xd3, 0x63, 0xb7, 0x20, 0xa5, 0x05, 0x96, 0x79, 0x14, 0x51, 0x8c, 0x3d, 0xf8, 0xd7, 0x3c, 0xb7, + 0x8f, 0x5d, 0xe9, 0xca, 0x80, 0x4e, 0x60, 0x4a, 0x30, 0xcd, 0xd3, 0x0c, 0x2b, 0xea, 0x13, 0x4f, + 0x41, 0xba, 0xb9, 0x3d, 0x66, 0xf0, 0xe8, 0xd1, 0xe7, 0xfd, 0x70, 0xe3, 0xb3, 0x58, 0x23, 0xca, + 0x4a, 0x09, 0xa2, 0xea, 0xe6, 0x47, 0xff, 0x90, 0x81, 0x09, 0x4e, 0xe5, 0x92, 0x2b, 0xf9, 0xcb, + 0xe4, 0x34, 0x56, 0x64, 0x25, 0x66, 0x53, 0x10, 0x25, 0x95, 0x0a, 0x75, 0xc4, 0xf3, 0x1f, 0x9c, + 0x13, 0xe9, 0x06, 0xb5, 0x02, 0x13, 0x6d, 0xa6, 0x23, 0x9e, 0x67, 0xd3, 0xe3, 0xba, 0xb3, 0x04, + 0x82, 0x7a, 0x62, 0xcd, 0xc5, 0x4f, 0xac, 0x0a, 0x14, 0x88, 0xd7, 0xaa, 0x3b, 0x41, 0xaf, 0x6b, + 0x9f, 0x95, 0x97, 0xe8, 0x5a, 0xca, 0x20, 0x82, 0x41, 0x0c, 0x48, 0x60, 0x54, 0x18, 0x86, 0x04, + 0x42, 0x8f, 0x60, 0x82, 0xcf, 0x9a, 0x9a, 0xfc, 0x59, 0x56, 0xde, 0x7d, 0x2f, 0x5b, 0x65, 0x1b, + 0xe6, 0xb8, 0xac, 0x7b, 0x3e, 0x26, 0xc1, 0x80, 0xf2, 0x58, 0x7f, 0x6d, 0x13, 0x25, 0x41, 0x2a, + 0xfe, 0xba, 0xcf, 0xef, 0x91, 0xf4, 0x37, 0xaa, 0xc3, 0x7c, 0x7c, 0x0a, 0xbe, 0xf9, 0xae, 0x61, + 0x50, 0xe8, 0x17, 0x50, 0xe2, 0x30, 0xb5, 0x8c, 0xe3, 0xd5, 0xf1, 0x59, 0x0b, 0x55, 0x11, 0xab, + 0xe4, 0xb8, 0x0e, 0x9b, 0x8f, 0x60, 0x9a, 0xc3, 0x82, 0xef, 0xc5, 0x21, 0xfa, 0x29, 0xe8, 0x11, + 0x21, 0xce, 0xc8, 0xbb, 0x90, 0xe3, 0xf3, 0x08, 0xb7, 0x9c, 0xe4, 0x24, 0xc4, 0x40, 0xbf, 0x80, + 0xd9, 0x6a, 0xe7, 0xc4, 0x71, 0x9b, 0xce, 0xa1, 0x4b, 0x0e, 0x64, 0x89, 0x9d, 0xa8, 0x40, 0x2b, + 0xaa, 0xbb, 0x98, 0x87, 0xf1, 0x13, 0xdc, 0x3f, 0xf2, 0xc4, 0xeb, 0x1c, 0x6f, 0x89, 0xd3, 0x3d, + 0x9b, 0x3c, 0xdd, 0x51, 0x1b, 0x4a, 0xea, 0x0c, 0x51, 0xbc, 0x6f, 0x0f, 0xa2, 0x90, 0x86, 0xfc, + 0x16, 0x64, 0x32, 0x29, 0x41, 0xc2, 0x02, 0x8c, 0xb6, 0xa3, 0x29, 0x68, 0xa8, 0x5b, 0x23, 0x9d, + 0x14, 0x8a, 0xaa, 0x30, 0x43, 0x27, 0xa1, 0x11, 0xf4, 0x55, 0x42, 0x94, 0x60, 0xac, 0x1d, 0x06, + 0xdf, 0x79, 0x8b, 0x35, 0x88, 0xb7, 0x96, 0x49, 0x30, 0x2e, 0x57, 0xfe, 0x5a, 0x83, 0x82, 0x94, + 0xe7, 0x34, 0x6e, 0xc1, 0x74, 0xbd, 0xb1, 0x5e, 0xdd, 0xdf, 0x6e, 0x1d, 0x34, 0x76, 0x6a, 0xd6, + 0x97, 0x7b, 0x2d, 0x7d, 0xc4, 0x34, 0xce, 0x2f, 0x2a, 0x53, 0x75, 0xfc, 0x94, 0xb8, 0x75, 0x8e, + 0x6c, 0xbc, 0x0d, 0x7a, 0xb3, 0xba, 0xdd, 0xda, 0xab, 0xd6, 0xb6, 0x42, 0x4c, 0xcd, 0x9c, 0x3d, + 0xbf, 0xa8, 0x4c, 0x37, 0xed, 0x6e, 0xbf, 0x67, 0xb7, 0x8f, 0x05, 0xea, 0x6d, 0x30, 0x42, 0xd4, + 0xe6, 0xe6, 0x23, 0x8e, 0x9c, 0x35, 0xe7, 0xce, 0x2f, 0x2a, 0x33, 0x02, 0x99, 0xa8, 0x8f, 0xa2, + 0x9b, 0xb3, 0xbf, 0xf7, 0x97, 0x8b, 0x23, 0xff, 0xf4, 0x57, 0x8b, 0x32, 0x5f, 0x2b, 0x7f, 0xa7, + 0x01, 0x44, 0x79, 0x4e, 0xe3, 0x75, 0x28, 0x56, 0xf7, 0x5b, 0x1b, 0x07, 0xfb, 0x3b, 0x5b, 0x3b, + 0xbb, 0x9f, 0xef, 0xe8, 0x23, 0xe6, 0xf4, 0xf9, 0x45, 0xa5, 0xc0, 0xb2, 0x74, 0xc7, 0xae, 0xf7, + 0xcc, 0x35, 0x5e, 0x03, 0xa0, 0x28, 0xcd, 0x46, 0x6b, 0x7f, 0x4f, 0xd7, 0xcc, 0xc9, 0xf3, 0x8b, + 0x4a, 0x3e, 0x4c, 0x44, 0x1a, 0x6f, 0xc0, 0x24, 0xa7, 0xb0, 0xbd, 0x5b, 0xdb, 0x6a, 0xd4, 0xf5, + 0x8c, 0xa9, 0x9f, 0x5f, 0x54, 0x8a, 0x51, 0xa2, 0x0f, 0x77, 0x8c, 0x25, 0x28, 0x50, 0x24, 0x8e, + 0x92, 0x35, 0xa7, 0xce, 0x2f, 0x2a, 0x20, 0x12, 0x2a, 0xb8, 0x63, 0x1a, 0x9c, 0x57, 0x89, 0xb7, + 0x95, 0x3f, 0xd1, 0x20, 0x27, 0x72, 0x4b, 0x84, 0x51, 0xce, 0xe3, 0x01, 0xa1, 0x24, 0x18, 0xe5, + 0x4c, 0x12, 0x34, 0xc2, 0xc9, 0x5e, 0xb5, 0xd9, 0xfc, 0x7c, 0xd7, 0xaa, 0x33, 0x1c, 0x60, 0x9c, + 0x88, 0x6b, 0x1e, 0x45, 0xba, 0x0b, 0xf3, 0x34, 0x4f, 0x7b, 0xb0, 0xf1, 0xb8, 0x5a, 0x3b, 0x68, + 0x36, 0x6a, 0x56, 0xa3, 0xc5, 0xb0, 0x4b, 0xe6, 0x8d, 0xf3, 0x8b, 0xca, 0x2c, 0xed, 0x25, 0x9d, + 0xec, 0x91, 0x81, 0x0c, 0x32, 0x75, 0xce, 0x5d, 0xc8, 0xce, 0xca, 0x9f, 0x69, 0x00, 0xd1, 0xeb, + 0xb8, 0xb1, 0x02, 0xb3, 0xe1, 0x6a, 0x7f, 0xb1, 0xb7, 0x6b, 0xb5, 0x0e, 0x5a, 0x5f, 0xee, 0x35, + 0xf4, 0x11, 0x73, 0xe6, 0xfc, 0xa2, 0x32, 0x29, 0x56, 0x9c, 0xe2, 0x1b, 0xef, 0x42, 0x29, 0x5a, + 0x70, 0x09, 0x59, 0x63, 0xe6, 0x11, 0x2e, 0x3a, 0xc3, 0x46, 0x30, 0xdd, 0x6c, 0x6e, 0x28, 0x88, + 0x19, 0xb6, 0x04, 0xcd, 0xe6, 0x06, 0xc3, 0x89, 0x94, 0x17, 0x71, 0xb4, 0xf2, 0x2f, 0x1a, 0x4c, + 0xf0, 0x17, 0x50, 0x63, 0x19, 0x74, 0xa1, 0xbb, 0xad, 0xc6, 0x97, 0x82, 0x35, 0x3a, 0x1b, 0xd7, + 0x9f, 0xc0, 0x34, 0x21, 0xd7, 0xa8, 0x7f, 0xb1, 0x7a, 0xef, 0xde, 0x9d, 0x07, 0x3a, 0x98, 0xc5, + 0xf3, 0x8b, 0x4a, 0xae, 0xd1, 0x61, 0x6d, 0x62, 0xd1, 0xa2, 0xef, 0x60, 0x6f, 0x7f, 0x6d, 0x7b, + 0xb3, 0xa6, 0x17, 0x18, 0x11, 0x81, 0xb2, 0xc7, 0x92, 0x01, 0xf3, 0x30, 0xce, 0x49, 0x94, 0x4c, + 0x38, 0xbf, 0xa8, 0xf0, 0x16, 0x59, 0x1f, 0x75, 0xf8, 0x1c, 0x5b, 0x1f, 0x79, 0xb0, 0x39, 0xcd, + 0x65, 0x11, 0xcc, 0xaf, 0xb4, 0x60, 0x52, 0x79, 0x9f, 0x31, 0x4a, 0x90, 0xad, 0x36, 0x6b, 0xfa, + 0x88, 0x59, 0x38, 0xbf, 0xa8, 0x4c, 0x90, 0xbe, 0x6a, 0x40, 0x26, 0x1d, 0xad, 0x37, 0x9a, 0x35, + 0x5d, 0x63, 0x5c, 0xd3, 0x21, 0x38, 0x68, 0x9b, 0x73, 0x9c, 0x9e, 0x4a, 0x64, 0xe5, 0xb9, 0x06, + 0x10, 0xbd, 0x6b, 0x92, 0xf5, 0x13, 0x1a, 0xe2, 0x26, 0x21, 0xaf, 0x1f, 0x57, 0x12, 0x7f, 0x52, + 0xbd, 0x05, 0xd3, 0xa1, 0x99, 0x31, 0x64, 0x1d, 0x98, 0x1e, 0x84, 0xa1, 0x35, 0x45, 0x26, 0x7a, + 0xaa, 0xb6, 0xbb, 0xd3, 0xaa, 0xd6, 0x5a, 0x02, 0xaf, 0xc0, 0xe8, 0x91, 0x83, 0xd3, 0x6e, 0xf7, + 0x39, 0xda, 0x12, 0x14, 0x6a, 0xd5, 0x88, 0x56, 0x91, 0xed, 0x8d, 0x9a, 0x1d, 0xd2, 0x59, 0x82, + 0xc2, 0xce, 0x6e, 0xab, 0x21, 0x10, 0x26, 0x19, 0xc2, 0x8e, 0xd7, 0xc7, 0x0c, 0x21, 0x5a, 0xff, + 0x48, 0xa2, 0x95, 0x5f, 0x6b, 0x90, 0x13, 0x0f, 0x31, 0xe4, 0x36, 0xb3, 0xd1, 0xf8, 0x42, 0x1f, + 0x31, 0x27, 0xce, 0x2f, 0x2a, 0xd9, 0x0d, 0x4c, 0xae, 0xa7, 0xe3, 0x6b, 0xd5, 0x66, 0xe3, 0xfe, + 0xaa, 0xae, 0xb1, 0x35, 0x5a, 0xb3, 0x03, 0x7c, 0x7f, 0x55, 0xc0, 0xef, 0x7d, 0xa4, 0x67, 0x22, + 0xf8, 0xbd, 0x8f, 0x04, 0xfc, 0xee, 0xaa, 0x9e, 0x8d, 0xe0, 0x77, 0x43, 0xfc, 0x3b, 0xf7, 0xf5, + 0xd1, 0x08, 0x7e, 0xe7, 0x7e, 0x48, 0xff, 0x43, 0x7d, 0x4c, 0xa2, 0xff, 0x21, 0x31, 0x30, 0x61, + 0xfc, 0xfa, 0x38, 0x5f, 0x2a, 0x6e, 0xf0, 0xc4, 0xdd, 0xae, 0x6d, 0xee, 0xdd, 0x7d, 0xa0, 0x4f, + 0x98, 0xf9, 0xf3, 0x8b, 0x0a, 0x6b, 0x44, 0x7b, 0x4f, 0x48, 0xb3, 0xf2, 0xbf, 0x19, 0x80, 0xe8, + 0xc2, 0x67, 0xdc, 0x82, 0xe2, 0x7e, 0xb3, 0x61, 0x49, 0x2e, 0x8c, 0xfa, 0xc3, 0x08, 0x23, 0x72, + 0x64, 0x13, 0x14, 0x71, 0x77, 0x4b, 0xd7, 0x98, 0xe5, 0x45, 0x38, 0xbb, 0x5b, 0xc6, 0x43, 0xb8, + 0x41, 0xbb, 0xad, 0x46, 0x73, 0x77, 0xdf, 0xaa, 0x35, 0x0e, 0x76, 0x76, 0x5b, 0x07, 0xeb, 0xbb, + 0xfb, 0x3b, 0x75, 0xbd, 0x64, 0x2e, 0x9e, 0x5f, 0x54, 0x4c, 0xe9, 0x96, 0x89, 0x03, 0x6f, 0xe0, + 0xb7, 0xf1, 0x8e, 0xd7, 0x5f, 0xf7, 0x06, 0x6e, 0xc7, 0x78, 0x00, 0xf3, 0x74, 0x30, 0x59, 0xf0, + 0xc6, 0x4e, 0x4b, 0x1a, 0xbb, 0x68, 0xbe, 0x76, 0x7e, 0x51, 0xb9, 0x19, 0x8d, 0xe5, 0x61, 0x53, + 0x38, 0xf4, 0x3e, 0x94, 0x94, 0xa1, 0x9b, 0x3b, 0x9f, 0x55, 0xb7, 0x37, 0xeb, 0xfa, 0x92, 0xb9, + 0x70, 0x7e, 0x51, 0x29, 0x27, 0x06, 0x6e, 0xba, 0xa7, 0x76, 0xd7, 0xe9, 0x18, 0x1f, 0xc0, 0x8c, + 0x18, 0xb7, 0x73, 0xb0, 0x5e, 0xdd, 0xdc, 0xde, 0xb7, 0x1a, 0xfa, 0xb2, 0x79, 0xf3, 0xfc, 0xa2, + 0x32, 0xa7, 0x0c, 0x72, 0xd7, 0x6d, 0xa7, 0x3b, 0xf0, 0x71, 0xa8, 0x29, 0x81, 0xbc, 0x1a, 0xd7, + 0x14, 0x47, 0x8c, 0x0c, 0x2a, 0xea, 0x5a, 0xf9, 0xaf, 0x4c, 0x14, 0xc2, 0x73, 0xcd, 0xbf, 0x0d, + 0xfa, 0xe7, 0xbb, 0xd6, 0xe3, 0x8d, 0xdd, 0xed, 0xc6, 0x01, 0x77, 0x7f, 0xfa, 0x08, 0x3b, 0xba, + 0x04, 0x26, 0x77, 0x7d, 0xc6, 0x3b, 0x30, 0x13, 0xa2, 0x36, 0x5b, 0x55, 0xab, 0xb5, 0xb9, 0xf3, + 0x48, 0x07, 0xb3, 0x74, 0x7e, 0x51, 0xd1, 0x25, 0xaa, 0x7e, 0x9f, 0x98, 0xab, 0x8c, 0xbc, 0xbb, + 0xbe, 0xde, 0xb0, 0x08, 0x72, 0x49, 0x45, 0xde, 0x7d, 0xfa, 0x14, 0xfb, 0x04, 0xf9, 0x36, 0x18, + 0x21, 0x72, 0x75, 0xa7, 0xf9, 0x39, 0xc3, 0x9e, 0x63, 0xa2, 0x09, 0xec, 0xaa, 0x1b, 0x3c, 0x4b, + 0xa2, 0x6f, 0x54, 0x77, 0xea, 0xcd, 0x8d, 0xea, 0x16, 0x51, 0x9b, 0x82, 0xbe, 0x61, 0xbb, 0x9d, + 0xe0, 0xc8, 0x3e, 0xc6, 0x0a, 0x3a, 0x51, 0x74, 0xa3, 0xd6, 0x6a, 0xd4, 0xf5, 0x8e, 0x8a, 0x4e, + 0x74, 0x8c, 0xdb, 0x7d, 0x5a, 0xce, 0x39, 0x1d, 0xa1, 0x6f, 0xef, 0x36, 0x1b, 0x75, 0xfd, 0x1b, + 0xee, 0xd7, 0x43, 0xe4, 0xae, 0x17, 0xe0, 0x8e, 0x39, 0xcf, 0x55, 0x1c, 0xd3, 0xe9, 0x4a, 0x17, + 0x0a, 0x52, 0x5c, 0x4d, 0x7c, 0xc8, 0xda, 0xe6, 0x4e, 0xd5, 0xfa, 0x52, 0x98, 0x87, 0xf0, 0x49, + 0x6b, 0x8e, 0x6b, 0xfb, 0x67, 0x22, 0x6c, 0x27, 0xa7, 0x63, 0x6b, 0xfd, 0xa3, 0x10, 0x49, 0xe3, + 0xa7, 0x63, 0x6b, 0xfd, 0x23, 0x8e, 0x12, 0x45, 0x03, 0x12, 0xf9, 0x95, 0x5f, 0x69, 0x50, 0x90, + 0x6e, 0x27, 0x84, 0xce, 0xe3, 0x46, 0xb3, 0x59, 0x7d, 0x44, 0xbc, 0x0d, 0x9d, 0x8c, 0xd2, 0xe1, + 0x28, 0x4d, 0x32, 0xd5, 0x2d, 0x98, 0x16, 0x28, 0x7b, 0x8d, 0x9d, 0x3a, 0x51, 0x36, 0x97, 0x50, + 0xc4, 0xe5, 0xd8, 0xa5, 0x4e, 0x67, 0x09, 0x0a, 0x02, 0x91, 0xec, 0xf6, 0x0c, 0x73, 0x5b, 0x1c, + 0xa9, 0xda, 0x3e, 0x8e, 0x38, 0x92, 0x38, 0x58, 0xfd, 0x8f, 0x37, 0x60, 0x74, 0x0b, 0x9f, 0x05, + 0xc6, 0xa7, 0x34, 0xf9, 0x27, 0x0a, 0x24, 0x8c, 0x1f, 0xc9, 0x97, 0xae, 0x58, 0xc9, 0x85, 0xb9, + 0x90, 0xde, 0xc9, 0x6f, 0xcc, 0x23, 0xc6, 0x3d, 0x4e, 0xb3, 0x24, 0xe3, 0x89, 0x90, 0xda, 0x9c, + 0x8b, 0x41, 0xc3, 0x61, 0xab, 0x2c, 0xa7, 0x3b, 0xab, 0xdc, 0xf7, 0xf8, 0xa0, 0x92, 0x0a, 0x0c, + 0xc7, 0xd4, 0x21, 0x1f, 0x26, 0x9f, 0x8d, 0x9b, 0x32, 0x92, 0x92, 0xd0, 0x36, 0xcd, 0xb4, 0xae, + 0x18, 0x15, 0x1e, 0x02, 0x28, 0x54, 0x94, 0x7c, 0xbf, 0x4a, 0x45, 0x4d, 0xaf, 0x87, 0x54, 0x58, + 0xbe, 0x47, 0xa5, 0xa2, 0xa4, 0x8c, 0x54, 0x2a, 0xb1, 0xf4, 0x10, 0x55, 0x1e, 0x89, 0x29, 0x25, + 0xe5, 0x49, 0x65, 0x20, 0x92, 0xf2, 0xe4, 0x02, 0x0e, 0x34, 0x62, 0x54, 0x21, 0x27, 0xbe, 0xe5, + 0x31, 0xe6, 0x15, 0xa4, 0xb0, 0xca, 0xd2, 0xbc, 0x91, 0x80, 0xb3, 0xc7, 0x01, 0x34, 0xb2, 0xac, + 0x7d, 0xa0, 0x19, 0xbc, 0x0c, 0xbb, 0xd9, 0xf7, 0xb1, 0x7d, 0x62, 0x18, 0x0a, 0x32, 0x23, 0x30, + 0xab, 0xc0, 0x62, 0x83, 0xc7, 0xd9, 0x57, 0x1c, 0xd2, 0xec, 0xca, 0x17, 0x3f, 0xd2, 0xec, 0xea, + 0x47, 0x3e, 0x68, 0xc4, 0x78, 0x04, 0x10, 0x7d, 0x8b, 0x62, 0x94, 0x63, 0x88, 0x91, 0x00, 0x37, + 0x53, 0x7a, 0x14, 0x2e, 0xaa, 0xe2, 0x9b, 0x1a, 0x2e, 0x44, 0x29, 0x36, 0x80, 0x91, 0x99, 0x8b, + 0x41, 0x15, 0x12, 0x4d, 0xf1, 0x11, 0x92, 0xf8, 0x1c, 0xc5, 0x58, 0x8c, 0xa1, 0xc7, 0xbe, 0x28, + 0x32, 0x97, 0x86, 0xf6, 0x87, 0x02, 0xfe, 0x1c, 0x8c, 0xe4, 0x07, 0x32, 0x46, 0x65, 0xc8, 0xc0, + 0x48, 0xe0, 0xab, 0x49, 0x2f, 0x6b, 0xc6, 0x97, 0x50, 0x52, 0x7b, 0xb9, 0xf0, 0x0b, 0x43, 0x06, + 0x5f, 0x83, 0xf4, 0x27, 0x30, 0x21, 0x6e, 0x43, 0x89, 0xd2, 0x64, 0x21, 0x7e, 0x39, 0xd9, 0x21, + 0x6d, 0x09, 0x51, 0xad, 0xcc, 0x79, 0x9a, 0x8b, 0x23, 0x33, 0x66, 0xe6, 0x13, 0x75, 0xcf, 0xf2, + 0x92, 0x7c, 0x1a, 0xde, 0xf5, 0xa8, 0xda, 0x6e, 0xc6, 0x91, 0x23, 0x7d, 0x99, 0x69, 0x5d, 0x0a, + 0xad, 0x4f, 0x60, 0x82, 0xd7, 0xdf, 0x4a, 0x12, 0xa9, 0xc5, 0xd2, 0x92, 0x44, 0xb1, 0xfa, 0x68, + 0x26, 0x11, 0x07, 0x26, 0x24, 0x92, 0x6b, 0x7f, 0x25, 0x89, 0x94, 0x72, 0xdf, 0x48, 0x22, 0xa9, + 0x98, 0x59, 0x92, 0x28, 0x5e, 0x19, 0x2d, 0x49, 0x94, 0xa8, 0x7e, 0x0e, 0x6d, 0x3e, 0x27, 0xbe, + 0x0a, 0x92, 0xb6, 0x4e, 0xec, 0xb3, 0x22, 0x69, 0xeb, 0xc4, 0x3f, 0x21, 0x62, 0x9e, 0x2b, 0xfa, + 0x88, 0xea, 0x66, 0x4a, 0x21, 0x54, 0xc2, 0x73, 0x25, 0x3e, 0xef, 0x41, 0x23, 0xc6, 0x67, 0x30, + 0x1d, 0xfb, 0x9e, 0xc6, 0x58, 0x4a, 0x0e, 0x50, 0x5e, 0x80, 0xcc, 0xca, 0x70, 0x84, 0x54, 0xba, + 0xec, 0xeb, 0x97, 0x34, 0xba, 0xca, 0x47, 0x37, 0x69, 0x74, 0xd5, 0x0f, 0x67, 0x98, 0xa7, 0xa5, + 0x59, 0x97, 0x92, 0xfa, 0xf6, 0x9e, 0xf0, 0xb4, 0x72, 0x1e, 0x81, 0x39, 0xab, 0xe8, 0x3d, 0xdf, + 0x30, 0xd5, 0xa4, 0x88, 0xfc, 0x5a, 0x6f, 0xfe, 0x28, 0xb5, 0x2f, 0x24, 0xf4, 0x29, 0x4b, 0x71, + 0xf0, 0xb2, 0x40, 0x23, 0x8e, 0x2d, 0xd7, 0x1d, 0x4a, 0x47, 0x6e, 0x4a, 0x25, 0x21, 0x73, 0xff, + 0xa2, 0xaa, 0x4f, 0x32, 0x82, 0x58, 0x11, 0xa1, 0x64, 0x04, 0xf1, 0x12, 0x40, 0x34, 0x42, 0x76, + 0x06, 0xaf, 0xa4, 0x93, 0x76, 0x86, 0x5a, 0xe7, 0x67, 0x96, 0x93, 0x1d, 0xe1, 0xf8, 0x87, 0x30, + 0xce, 0x75, 0x22, 0x9d, 0x3f, 0x8a, 0x3e, 0x6e, 0x24, 0xe0, 0xea, 0x60, 0x56, 0x42, 0x13, 0x2f, + 0x3b, 0x48, 0x19, 0x2c, 0x97, 0x8f, 0xb0, 0x15, 0x89, 0x2a, 0x3b, 0xa4, 0x15, 0x49, 0x14, 0x8b, + 0x48, 0x2b, 0x92, 0x2c, 0x05, 0x41, 0x23, 0xc6, 0x63, 0x28, 0xca, 0x45, 0x1b, 0x92, 0x07, 0x4d, + 0x29, 0xfd, 0x30, 0x5f, 0x1b, 0xd2, 0x2b, 0x6b, 0x94, 0x57, 0x59, 0x18, 0x71, 0xee, 0x83, 0xa4, + 0x46, 0x63, 0x05, 0x19, 0xcc, 0x40, 0x69, 0x55, 0x41, 0x49, 0xad, 0x39, 0x48, 0x18, 0xa8, 0x5c, + 0x09, 0x81, 0x46, 0x8c, 0x8f, 0x60, 0x8c, 0x96, 0x30, 0x18, 0x2a, 0x46, 0x38, 0xe5, 0x7c, 0x1c, + 0x2c, 0x4f, 0xb8, 0x37, 0xe8, 0x76, 0xa5, 0x09, 0xa5, 0x1c, 0xbc, 0x34, 0xa1, 0x9c, 0x78, 0x17, + 0xc3, 0x82, 0x23, 0x65, 0x58, 0x98, 0x6b, 0x57, 0x86, 0x05, 0x47, 0xaa, 0xcd, 0x8a, 0x68, 0x5c, + 0x5a, 0x75, 0x25, 0xd9, 0x62, 0x26, 0x53, 0x0f, 0x8a, 0xef, 0xab, 0x83, 0xf4, 0x34, 0x76, 0x53, + 0xfd, 0xb2, 0x40, 0xfa, 0x14, 0x40, 0x72, 0x5c, 0xc9, 0x92, 0xfe, 0x11, 0x41, 0x85, 0xa6, 0x7f, + 0x62, 0x54, 0xe4, 0x42, 0xff, 0x18, 0x15, 0xb5, 0xae, 0x9f, 0x5a, 0x61, 0xf4, 0x08, 0x67, 0xa8, + 0xb8, 0x4a, 0xb9, 0xbf, 0x64, 0x85, 0xc9, 0xf2, 0x7c, 0xa6, 0x17, 0xf1, 0x54, 0x27, 0xed, 0xe5, + 0x58, 0x85, 0xb4, 0x79, 0x33, 0xa5, 0x27, 0x24, 0xb1, 0x07, 0x93, 0xca, 0x77, 0x1d, 0x46, 0x64, + 0xab, 0x69, 0x1f, 0x82, 0x98, 0x8b, 0xc3, 0xba, 0xe5, 0x35, 0xb6, 0x6c, 0xb7, 0x23, 0xad, 0xb1, + 0x54, 0xbb, 0x22, 0xad, 0xb1, 0x5c, 0x3b, 0xc2, 0x76, 0x94, 0x5c, 0xfa, 0x21, 0xed, 0xa8, 0x94, + 0x02, 0x12, 0x69, 0x47, 0xa5, 0xd5, 0x8b, 0x30, 0xb9, 0xd4, 0xe2, 0xf9, 0xd7, 0x86, 0x94, 0x97, + 0x27, 0xe4, 0x4a, 0xfd, 0xce, 0x80, 0x1d, 0x2e, 0xb1, 0x2f, 0x00, 0xa4, 0xc3, 0x25, 0xfd, 0x6b, + 0x02, 0xe9, 0x70, 0x19, 0xf6, 0xf1, 0xc0, 0x08, 0x09, 0x23, 0xd5, 0x2a, 0x79, 0x63, 0x08, 0x2f, + 0x41, 0x32, 0x8c, 0x4c, 0x2f, 0xaf, 0x67, 0x44, 0xd5, 0xcf, 0x0a, 0x24, 0xa2, 0xa9, 0x1f, 0x2b, + 0x48, 0x44, 0x87, 0x7c, 0x8f, 0x40, 0xad, 0x3f, 0xcc, 0xcf, 0x4a, 0xd6, 0x1f, 0xcf, 0xe3, 0x4a, + 0xd6, 0x9f, 0x48, 0xe7, 0x4a, 0x54, 0x9a, 0x67, 0x6e, 0x3b, 0x4e, 0x45, 0xca, 0x31, 0xc7, 0xa9, + 0x28, 0xa9, 0x66, 0x7a, 0x24, 0x4a, 0x69, 0x65, 0xe9, 0x48, 0x4c, 0xa6, 0xa0, 0xa5, 0x23, 0x31, + 0x2d, 0x13, 0x1d, 0xd1, 0xe2, 0x3b, 0x20, 0x46, 0x4b, 0xb5, 0xff, 0x85, 0xf4, 0xce, 0x24, 0x5f, + 0x34, 0x39, 0x9c, 0xe0, 0x4b, 0x4e, 0x24, 0x27, 0xf8, 0x52, 0xf3, 0xc9, 0x94, 0x96, 0x54, 0x96, + 0x23, 0xd1, 0x4a, 0x96, 0xfc, 0x48, 0xb4, 0x52, 0x2a, 0x79, 0x98, 0xd6, 0xc3, 0xf2, 0x16, 0x39, + 0x8a, 0x8c, 0x95, 0xcd, 0xc8, 0x51, 0x64, 0xbc, 0x1a, 0x86, 0x99, 0x95, 0x5a, 0x99, 0x22, 0x99, + 0x55, 0x6a, 0xdd, 0x8b, 0x64, 0x56, 0x43, 0x4a, 0x5a, 0xe8, 0xce, 0x97, 0xf3, 0x4b, 0xd2, 0xce, + 0x4f, 0x49, 0x6c, 0x49, 0x3b, 0x3f, 0x2d, 0x29, 0xc5, 0xbd, 0x6b, 0x98, 0x06, 0x92, 0xbd, 0x6b, + 0x3c, 0xbd, 0x24, 0x7b, 0xd7, 0x44, 0xde, 0x88, 0x09, 0xab, 0x66, 0x34, 0x25, 0x61, 0x53, 0xb3, + 0xa9, 0x92, 0xb0, 0xe9, 0xa9, 0x50, 0xe6, 0x97, 0x94, 0xf4, 0xa3, 0xe4, 0x97, 0xd2, 0x12, 0x9f, + 0xe6, 0xe2, 0xb0, 0x6e, 0xf9, 0x10, 0x10, 0x29, 0x44, 0xe9, 0x10, 0x88, 0xa5, 0x27, 0xa5, 0x43, + 0x20, 0x9e, 0x6f, 0x44, 0x23, 0x6b, 0x0b, 0xdf, 0x7c, 0xbb, 0x38, 0xf2, 0xeb, 0x6f, 0x17, 0xb5, + 0xff, 0xf9, 0x76, 0x51, 0xfb, 0xe6, 0xc5, 0xa2, 0xf6, 0x6f, 0x2f, 0x16, 0xb5, 0xff, 0x7c, 0xb1, + 0xa8, 0xfd, 0xf7, 0x8b, 0x45, 0xed, 0xc9, 0x38, 0xfd, 0xd3, 0x94, 0xbb, 0xff, 0x17, 0x00, 0x00, + 0xff, 0xff, 0x1a, 0xfc, 0xf4, 0x13, 0x61, 0x45, 0x00, 0x00, } func (this *SignRequest) GoString() string { @@ -6965,17 +7011,34 @@ func (this *SignOutput) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *EncryptOptions) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 8) + s = append(s, "&service.EncryptOptions{") + s = append(s, "Armored: "+fmt.Sprintf("%#v", this.Armored)+",\n") + s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") + s = append(s, "NoSenderRecipient: "+fmt.Sprintf("%#v", this.NoSenderRecipient)+",\n") + s = append(s, "NoSign: "+fmt.Sprintf("%#v", this.NoSign)+",\n") + if this.XXX_unrecognized != nil { + s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") + } + s = append(s, "}") + return strings.Join(s, "") +} func (this *EncryptRequest) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 9) + s := make([]string, 0, 8) s = append(s, "&service.EncryptRequest{") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") - s = append(s, "Armored: "+fmt.Sprintf("%#v", this.Armored)+",\n") s = append(s, "Recipients: "+fmt.Sprintf("%#v", this.Recipients)+",\n") s = append(s, "Sender: "+fmt.Sprintf("%#v", this.Sender)+",\n") - s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") + if this.Options != nil { + s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") + } if this.XXX_unrecognized != nil { s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") } @@ -6986,9 +7049,10 @@ func (this *EncryptResponse) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 5) + s := make([]string, 0, 6) s = append(s, "&service.EncryptResponse{") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") + s = append(s, "Info: "+fmt.Sprintf("%#v", this.Info)+",\n") if this.XXX_unrecognized != nil { s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") } @@ -6999,14 +7063,15 @@ func (this *EncryptFileInput) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 10) + s := make([]string, 0, 9) s = append(s, "&service.EncryptFileInput{") s = append(s, "In: "+fmt.Sprintf("%#v", this.In)+",\n") s = append(s, "Out: "+fmt.Sprintf("%#v", this.Out)+",\n") - s = append(s, "Armored: "+fmt.Sprintf("%#v", this.Armored)+",\n") s = append(s, "Recipients: "+fmt.Sprintf("%#v", this.Recipients)+",\n") s = append(s, "Sender: "+fmt.Sprintf("%#v", this.Sender)+",\n") - s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") + if this.Options != nil { + s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") + } if this.XXX_unrecognized != nil { s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") } @@ -7032,13 +7097,14 @@ func (this *EncryptInput) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 9) + s := make([]string, 0, 8) s = append(s, "&service.EncryptInput{") s = append(s, "Data: "+fmt.Sprintf("%#v", this.Data)+",\n") - s = append(s, "Armored: "+fmt.Sprintf("%#v", this.Armored)+",\n") s = append(s, "Recipients: "+fmt.Sprintf("%#v", this.Recipients)+",\n") s = append(s, "Sender: "+fmt.Sprintf("%#v", this.Sender)+",\n") - s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") + if this.Options != nil { + s = append(s, "Options: "+fmt.Sprintf("%#v", this.Options)+",\n") + } if this.XXX_unrecognized != nil { s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n") } @@ -12458,6 +12524,68 @@ func (m *SignOutput) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *EncryptOptions) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EncryptOptions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EncryptOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.NoSign { + i-- + if m.NoSign { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.NoSenderRecipient { + i-- + if m.NoSenderRecipient { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.Mode != 0 { + i = encodeVarintKeys(dAtA, i, uint64(m.Mode)) + i-- + dAtA[i] = 0x10 + } + if m.Armored { + i-- + if m.Armored { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *EncryptRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12482,17 +12610,24 @@ func (m *EncryptRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if m.Mode != 0 { - i = encodeVarintKeys(dAtA, i, uint64(m.Mode)) + if m.Options != nil { + { + size, err := m.Options.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintKeys(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x68 + dAtA[i] = 0x52 } if len(m.Sender) > 0 { i -= len(m.Sender) copy(dAtA[i:], m.Sender) i = encodeVarintKeys(dAtA, i, uint64(len(m.Sender))) i-- - dAtA[i] = 0x62 + dAtA[i] = 0x22 } if len(m.Recipients) > 0 { for iNdEx := len(m.Recipients) - 1; iNdEx >= 0; iNdEx-- { @@ -12500,18 +12635,8 @@ func (m *EncryptRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Recipients[iNdEx]) i = encodeVarintKeys(dAtA, i, uint64(len(m.Recipients[iNdEx]))) i-- - dAtA[i] = 0x5a - } - } - if m.Armored { - i-- - if m.Armored { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + dAtA[i] = 0x1a } - i-- - dAtA[i] = 0x50 } if len(m.Data) > 0 { i -= len(m.Data) @@ -12547,6 +12672,13 @@ func (m *EncryptResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.Info) > 0 { + i -= len(m.Info) + copy(dAtA[i:], m.Info) + i = encodeVarintKeys(dAtA, i, uint64(len(m.Info))) + i-- + dAtA[i] = 0x12 + } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -12581,17 +12713,24 @@ func (m *EncryptFileInput) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if m.Mode != 0 { - i = encodeVarintKeys(dAtA, i, uint64(m.Mode)) + if m.Options != nil { + { + size, err := m.Options.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintKeys(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x68 + dAtA[i] = 0x52 } if len(m.Sender) > 0 { i -= len(m.Sender) copy(dAtA[i:], m.Sender) i = encodeVarintKeys(dAtA, i, uint64(len(m.Sender))) i-- - dAtA[i] = 0x62 + dAtA[i] = 0x22 } if len(m.Recipients) > 0 { for iNdEx := len(m.Recipients) - 1; iNdEx >= 0; iNdEx-- { @@ -12599,18 +12738,8 @@ func (m *EncryptFileInput) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Recipients[iNdEx]) i = encodeVarintKeys(dAtA, i, uint64(len(m.Recipients[iNdEx]))) i-- - dAtA[i] = 0x5a - } - } - if m.Armored { - i-- - if m.Armored { - dAtA[i] = 1 - } else { - dAtA[i] = 0 + dAtA[i] = 0x1a } - i-- - dAtA[i] = 0x50 } if len(m.Out) > 0 { i -= len(m.Out) @@ -12697,10 +12826,17 @@ func (m *EncryptInput) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - if m.Mode != 0 { - i = encodeVarintKeys(dAtA, i, uint64(m.Mode)) + if m.Options != nil { + { + size, err := m.Options.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintKeys(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x28 + dAtA[i] = 0x52 } if len(m.Sender) > 0 { i -= len(m.Sender) @@ -12718,16 +12854,6 @@ func (m *EncryptInput) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x1a } } - if m.Armored { - i-- - if m.Armored { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x10 - } if len(m.Data) > 0 { i -= len(m.Data) copy(dAtA[i:], m.Data) @@ -14544,20 +14670,20 @@ func (m *KeysRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x52 } if len(m.Types) > 0 { - dAtA18 := make([]byte, len(m.Types)*10) - var j17 int + dAtA21 := make([]byte, len(m.Types)*10) + var j20 int for _, num := range m.Types { for num >= 1<<7 { - dAtA18[j17] = uint8(uint64(num)&0x7f | 0x80) + dAtA21[j20] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j17++ + j20++ } - dAtA18[j17] = uint8(num) - j17++ + dAtA21[j20] = uint8(num) + j20++ } - i -= j17 - copy(dAtA[i:], dAtA18[:j17]) - i = encodeVarintKeys(dAtA, i, uint64(j17)) + i -= j20 + copy(dAtA[i:], dAtA21[:j20]) + i = encodeVarintKeys(dAtA, i, uint64(j20)) i-- dAtA[i] = 0x12 } @@ -17691,6 +17817,30 @@ func (m *SignOutput) Size() (n int) { return n } +func (m *EncryptOptions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Armored { + n += 2 + } + if m.Mode != 0 { + n += 1 + sovKeys(uint64(m.Mode)) + } + if m.NoSenderRecipient { + n += 2 + } + if m.NoSign { + n += 2 + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *EncryptRequest) Size() (n int) { if m == nil { return 0 @@ -17701,9 +17851,6 @@ func (m *EncryptRequest) Size() (n int) { if l > 0 { n += 1 + l + sovKeys(uint64(l)) } - if m.Armored { - n += 2 - } if len(m.Recipients) > 0 { for _, s := range m.Recipients { l = len(s) @@ -17714,8 +17861,9 @@ func (m *EncryptRequest) Size() (n int) { if l > 0 { n += 1 + l + sovKeys(uint64(l)) } - if m.Mode != 0 { - n += 1 + sovKeys(uint64(m.Mode)) + if m.Options != nil { + l = m.Options.Size() + n += 1 + l + sovKeys(uint64(l)) } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) @@ -17733,6 +17881,10 @@ func (m *EncryptResponse) Size() (n int) { if l > 0 { n += 1 + l + sovKeys(uint64(l)) } + l = len(m.Info) + if l > 0 { + n += 1 + l + sovKeys(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -17753,9 +17905,6 @@ func (m *EncryptFileInput) Size() (n int) { if l > 0 { n += 1 + l + sovKeys(uint64(l)) } - if m.Armored { - n += 2 - } if len(m.Recipients) > 0 { for _, s := range m.Recipients { l = len(s) @@ -17766,8 +17915,9 @@ func (m *EncryptFileInput) Size() (n int) { if l > 0 { n += 1 + l + sovKeys(uint64(l)) } - if m.Mode != 0 { - n += 1 + sovKeys(uint64(m.Mode)) + if m.Options != nil { + l = m.Options.Size() + n += 1 + l + sovKeys(uint64(l)) } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) @@ -17807,9 +17957,6 @@ func (m *EncryptInput) Size() (n int) { if l > 0 { n += 1 + l + sovKeys(uint64(l)) } - if m.Armored { - n += 2 - } if len(m.Recipients) > 0 { for _, s := range m.Recipients { l = len(s) @@ -17820,8 +17967,9 @@ func (m *EncryptInput) Size() (n int) { if l > 0 { n += 1 + l + sovKeys(uint64(l)) } - if m.Mode != 0 { - n += 1 + sovKeys(uint64(m.Mode)) + if m.Options != nil { + l = m.Options.Size() + n += 1 + l + sovKeys(uint64(l)) } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) @@ -23081,6 +23229,139 @@ func (m *SignOutput) Unmarshal(dAtA []byte) error { } return nil } +func (m *EncryptOptions) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKeys + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EncryptOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EncryptOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Armored", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKeys + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Armored = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + } + m.Mode = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKeys + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Mode |= EncryptMode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NoSenderRecipient", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKeys + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.NoSenderRecipient = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NoSign", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKeys + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.NoSign = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipKeys(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthKeys + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthKeys + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *EncryptRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -23144,27 +23425,7 @@ func (m *EncryptRequest) Unmarshal(dAtA []byte) error { m.Data = []byte{} } iNdEx = postIndex - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Armored", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKeys - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Armored = bool(v != 0) - case 11: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Recipients", wireType) } @@ -23196,7 +23457,7 @@ func (m *EncryptRequest) Unmarshal(dAtA []byte) error { } m.Recipients = append(m.Recipients, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 12: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } @@ -23228,11 +23489,11 @@ func (m *EncryptRequest) Unmarshal(dAtA []byte) error { } m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 13: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) } - m.Mode = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowKeys @@ -23242,11 +23503,28 @@ func (m *EncryptRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Mode |= EncryptMode(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthKeys + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthKeys + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Options == nil { + m.Options = &EncryptOptions{} + } + if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKeys(dAtA[iNdEx:]) @@ -23335,6 +23613,38 @@ func (m *EncryptResponse) Unmarshal(dAtA []byte) error { m.Data = []byte{} } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowKeys + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthKeys + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthKeys + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Info = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKeys(dAtA[iNdEx:]) @@ -23453,27 +23763,7 @@ func (m *EncryptFileInput) Unmarshal(dAtA []byte) error { } m.Out = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Armored", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKeys - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Armored = bool(v != 0) - case 11: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Recipients", wireType) } @@ -23505,7 +23795,7 @@ func (m *EncryptFileInput) Unmarshal(dAtA []byte) error { } m.Recipients = append(m.Recipients, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 12: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) } @@ -23537,11 +23827,11 @@ func (m *EncryptFileInput) Unmarshal(dAtA []byte) error { } m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 13: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) } - m.Mode = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowKeys @@ -23551,11 +23841,28 @@ func (m *EncryptFileInput) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Mode |= EncryptMode(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthKeys + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthKeys + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Options == nil { + m.Options = &EncryptOptions{} + } + if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKeys(dAtA[iNdEx:]) @@ -23768,26 +24075,6 @@ func (m *EncryptInput) Unmarshal(dAtA []byte) error { m.Data = []byte{} } iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Armored", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowKeys - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Armored = bool(v != 0) case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Recipients", wireType) @@ -23852,11 +24139,11 @@ func (m *EncryptInput) Unmarshal(dAtA []byte) error { } m.Sender = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) } - m.Mode = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowKeys @@ -23866,11 +24153,28 @@ func (m *EncryptInput) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Mode |= EncryptMode(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthKeys + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthKeys + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Options == nil { + m.Options = &EncryptOptions{} + } + if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipKeys(dAtA[iNdEx:]) diff --git a/service/keys.proto b/service/keys.proto index ee5924ab..b5d82138 100644 --- a/service/keys.proto +++ b/service/keys.proto @@ -284,20 +284,31 @@ enum EncryptMode { SALTPACK_SIGNCRYPT = 3 [(gogoproto.enumvalue_customname) = "SaltpackSigncrypt"]; } +message EncryptOptions { + // Armored, if true will return armored string output. + bool armored = 1; + // Mode is the encryption mode. + EncryptMode mode = 2; + // NoSenderRecipient if true, won't add sender to recipients list. + bool noSenderRecipient = 3; + // NoSign if true, won't sign with sender. + bool noSign = 4; +} + message EncryptRequest { // Data to encrypt. bytes data = 1; - // Armored, if true will return armored string output. - bool armored = 10; // Recipients to encrypt to. - repeated string recipients = 11; - // Sender, or empty, if anonymous. - string sender = 12; - // Mode is the encryption mode. - EncryptMode mode = 13; + repeated string recipients = 3; + // Sender, or anonymous. + string sender = 4; + + // Options for encrypt. + EncryptOptions options = 10; } message EncryptResponse { bytes data = 1; + string info = 2; } message EncryptFileInput { @@ -305,15 +316,13 @@ message EncryptFileInput { string in = 1; // Out is output file path. string out = 2; - // Armored, if true will return armored string output. - bool armored = 10; - // Recipients to encrypt to. - repeated string recipients = 11; - // Sender, or empty, if anonymous. - string sender = 12; - // Mode is the encryption mode. - EncryptMode mode = 13; + repeated string recipients = 3; + // Sender, or anonymous. + string sender = 4; + + // Options for encrypt. + EncryptOptions options = 10; } message EncryptFileOutput { @@ -326,14 +335,13 @@ message EncryptFileOutput { message EncryptInput { // Data to encrypt. Send empty byte slice as last message. bytes data = 1; - // Armored, if true will return armored string output. - bool armored = 2; // Recipients to encrypt to. - repeated string recipients = 3; - // Sender, or empty, if anonymous. + repeated string recipients = 3; + // Sender, or anonymous. string sender = 4; - // Mode is the encryption mode. - EncryptMode mode = 5; + + // Options for encrypt. + EncryptOptions options = 10; } message EncryptOutput { @@ -599,10 +607,7 @@ message Key { // User associated with this key. User user = 6; // Saved if saved locally. - bool saved = 10; - - // TODO: Notes saved with the key. - // string notes = 30; + bool saved = 10; // SigchainLength is length of sigchain (if any). int32 sigchainLength = 40; diff --git a/service/service.go b/service/service.go index 61a28a87..28568659 100644 --- a/service/service.go +++ b/service/service.go @@ -55,7 +55,7 @@ func newService(cfg *Config, build Build, auth *auth, req request.Requestor, clo db := sdb.New() db.SetClock(clock) scs := keys.NewSigchains(db) - users := user.NewUsers(db, scs, req, clock) + users := user.NewUsers(db, scs, user.Requestor(req), user.Clock(clock)) return &service{ auth: auth, diff --git a/service/service_test.go b/service/service_test.go index 5aaf6170..017ef462 100644 --- a/service/service_test.go +++ b/service/service_test.go @@ -68,7 +68,7 @@ func newTestEnv(t *testing.T) *testEnv { clock := tsutil.NewTestClock() fi := testFire(t, clock) req := request.NewMockRequestor() - users := user.NewUsers(fi, keys.NewSigchains(fi), req, clock) + users := user.NewUsers(fi, keys.NewSigchains(fi), user.Requestor(req), user.Clock(clock)) return &testEnv{ clock: clock, fi: fi, diff --git a/service/user_test.go b/service/user_test.go index 2ad3e95f..9b3d4a7a 100644 --- a/service/user_test.go +++ b/service/user_test.go @@ -297,10 +297,10 @@ func TestUserAddEcho(t *testing.T) { require.NoError(t, err) require.Equal(t, "bob@echo", addResp.User.ID) + // user@echo should be hidden from search searchResp, err := service.UserSearch(context.TODO(), &UserSearchRequest{}) require.NoError(t, err) - require.Equal(t, 1, len(searchResp.Users)) - require.Equal(t, "bob@echo", searchResp.Users[0].ID) + require.Equal(t, 0, len(searchResp.Users)) kid, err := service.lookup(context.TODO(), "bob@echo", &LookupOpts{Verify: true}) require.NoError(t, err)