From b1af560b0435305bcaa1200bb9704c2f227c2f78 Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Tue, 27 Feb 2024 20:14:15 +0800 Subject: [PATCH 01/10] enable delegated agent to create object --- app/upgrade.go | 4 + e2e/tests/permission_test.go | 6 +- e2e/tests/storage_test.go | 152 +++ proto/greenfield/storage/tx.proto | 51 + proto/greenfield/storage/types.proto | 2 + x/storage/keeper/keeper.go | 119 ++ x/storage/keeper/msg_server.go | 53 + x/storage/types/codec.go | 7 +- x/storage/types/message.go | 177 ++- x/storage/types/message_test.go | 16 + x/storage/types/tx.pb.go | 1655 ++++++++++++++++++++++---- x/storage/types/types.pb.go | 230 ++-- 12 files changed, 2170 insertions(+), 302 deletions(-) diff --git a/app/upgrade.go b/app/upgrade.go index cc12f1a5f..436c6218d 100644 --- a/app/upgrade.go +++ b/app/upgrade.go @@ -205,6 +205,10 @@ func (app *App) registerPawneeUpgradeHandler() { app.Logger().Info("upgrade to ", plan.Name) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgUpdateObjectContent{}), 1.2e3)) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgCancelUpdateObjectContent{}), 1.2e3)) + + // todo + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgUpdateDelegatedAgent{}), 1.2e3)) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateCreateObject{}), 1.2e3)) return app.mm.RunMigrations(ctx, app.configurator, fromVM) }) diff --git a/e2e/tests/permission_test.go b/e2e/tests/permission_test.go index 4f2a3f7d2..e6b6f5a07 100644 --- a/e2e/tests/permission_test.go +++ b/e2e/tests/permission_test.go @@ -1115,7 +1115,8 @@ func (s *StorageTestSuite) TestStalePermissionForAccountGC() { // bucket and object dont exist after deletion headObjectReq := storagetypes.QueryHeadObjectRequest{ - BucketName: objectName, + BucketName: bucketName, + ObjectName: objectName, } _, err = s.Client.HeadObject(ctx, &headObjectReq) s.Require().Error(err) @@ -1331,7 +1332,8 @@ func (s *StorageTestSuite) TestStalePermissionForGroupGC() { // bucket and object dont exist after deletion headObjectReq := storagetypes.QueryHeadObjectRequest{ - BucketName: objectName, + BucketName: bucketName, + ObjectName: objectName, } _, err = s.Client.HeadObject(ctx, &headObjectReq) s.Require().Error(err) diff --git a/e2e/tests/storage_test.go b/e2e/tests/storage_test.go index 02dff6ec9..58d89bddf 100644 --- a/e2e/tests/storage_test.go +++ b/e2e/tests/storage_test.go @@ -4,6 +4,8 @@ import ( "bytes" "context" "fmt" + "github.com/bnb-chain/greenfield/testutil/sample" + permissiontypes "github.com/bnb-chain/greenfield/x/permission/types" "math" "reflect" "strconv" @@ -2407,3 +2409,153 @@ func (s *StorageTestSuite) TestDeleteCreateObject_InCreatedStatus() { _, err = s.Client.HeadObject(ctx, &queryHeadObjectRequest) s.Require().EqualError(err, "rpc error: code = Unknown desc = No such object: unknown request") } + +func (s *StorageTestSuite) TestUpdateBucketDelegatedAgents() { + var err error + // CreateBucket + sp := s.BaseSuite.PickStorageProvider() + gvg, found := sp.GetFirstGlobalVirtualGroup() + s.Require().True(found) + user := s.GenAndChargeAccounts(1, 1000000)[0] + bucketName := storageutils.GenRandomBucketName() + msgCreateBucket := storagetypes.NewMsgCreateBucket( + user.GetAddr(), bucketName, storagetypes.VISIBILITY_TYPE_PRIVATE, sp.OperatorKey.GetAddr(), + nil, math.MaxUint, nil, 0) + msgCreateBucket.PrimarySpApproval.GlobalVirtualGroupFamilyId = gvg.FamilyId + msgCreateBucket.PrimarySpApproval.Sig, err = sp.ApprovalKey.Sign(msgCreateBucket.GetApprovalBytes()) + s.Require().NoError(err) + s.SendTxBlock(user, msgCreateBucket) + + queryHeadBucketRequest := storagetypes.QueryHeadBucketRequest{ + BucketName: bucketName, + } + ctx := context.Background() + queryHeadBucketResponse, err := s.Client.HeadBucket(ctx, &queryHeadBucketRequest) + s.Require().NoError(err) + s.Require().Equal(0, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) + + var agentToAdd []sdk.AccAddress + agentToAdd = append(agentToAdd, sp.OperatorKey.GetAddr()) + agentAccount := sample.RandAccAddress() + agentToAdd = append(agentToAdd, agentAccount) + + msgUpdateDelegatedAgent := storagetypes.NewMsgUpdateDelegatedAgent( + user.GetAddr(), + bucketName, + agentToAdd, + nil) + s.SendTxBlock(user, msgUpdateDelegatedAgent) + + // HeadBucket + queryHeadBucketResponse, err = s.Client.HeadBucket(ctx, &queryHeadBucketRequest) + s.Require().NoError(err) + s.Require().Equal(2, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) + + var agentToRemove []sdk.AccAddress + agentToRemove = append(agentToRemove, sp.OperatorKey.GetAddr()) + msgUpdateDelegatedAgent = storagetypes.NewMsgUpdateDelegatedAgent( + user.GetAddr(), + bucketName, + nil, + agentToRemove) + s.SendTxBlock(user, msgUpdateDelegatedAgent) + + queryHeadBucketResponse, err = s.Client.HeadBucket(ctx, &queryHeadBucketRequest) + s.Require().NoError(err) + s.Require().Equal(1, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) + + agentToRemove = []sdk.AccAddress{agentAccount} + msgUpdateDelegatedAgent = storagetypes.NewMsgUpdateDelegatedAgent( + user.GetAddr(), + bucketName, + nil, + agentToRemove) + s.SendTxBlock(user, msgUpdateDelegatedAgent) + + queryHeadBucketResponse, err = s.Client.HeadBucket(ctx, &queryHeadBucketRequest) + s.Require().NoError(err) + s.Require().Equal(0, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) +} + +func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { + var err error + ctx := context.Background() + + // CreateBucket + sp := s.BaseSuite.PickStorageProvider() + gvg, found := sp.GetFirstGlobalVirtualGroup() + s.Require().True(found) + + bucketOwner := s.GenAndChargeAccounts(1, 1000000)[0] + user := s.GenAndChargeAccounts(1, 100)[0] + + bucketName := storageutils.GenRandomBucketName() + objectName := storageutils.GenRandomObjectName() + + msgCreateBucket := storagetypes.NewMsgCreateBucket( + bucketOwner.GetAddr(), bucketName, storagetypes.VISIBILITY_TYPE_PRIVATE, sp.OperatorKey.GetAddr(), + nil, math.MaxUint, nil, 0) + msgCreateBucket.PrimarySpApproval.GlobalVirtualGroupFamilyId = gvg.FamilyId + msgCreateBucket.PrimarySpApproval.Sig, err = sp.ApprovalKey.Sign(msgCreateBucket.GetApprovalBytes()) + s.Require().NoError(err) + + var agentToAdd []sdk.AccAddress + agentToAdd = append(agentToAdd, sp.OperatorKey.GetAddr()) + msgUpdateDelegatedAgent := storagetypes.NewMsgUpdateDelegatedAgent( + bucketOwner.GetAddr(), + bucketName, + agentToAdd, + nil) + s.SendTxBlock(bucketOwner, msgCreateBucket, msgUpdateDelegatedAgent) + + // HeadBucket + queryHeadBucketRequest := storagetypes.QueryHeadBucketRequest{ + BucketName: bucketName, + } + queryHeadBucketResponse, err := s.Client.HeadBucket(ctx, &queryHeadBucketRequest) + s.Require().NoError(err) + s.Require().Equal(sp.OperatorKey.GetAddr().String(), queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses[0]) + + // DelegateCreate for user2, who does not have permission + var buffer bytes.Buffer + // Create 1MiB content where each line contains 1024 characters. + for i := 0; i < 1024; i++ { + buffer.WriteString(fmt.Sprintf("[%05d] %s\n", i, line)) + } + payloadSize := buffer.Len() + contextType := "text/event-stream" + msgDelegateCreateObject := storagetypes.NewMsgDelegateCreateObject( + sp.OperatorKey.GetAddr(), + user.GetAddr(), + bucketName, + objectName, + uint64(payloadSize), + storagetypes.VISIBILITY_TYPE_PRIVATE, + nil, + contextType, + storagetypes.REDUNDANCY_EC_TYPE) + s.SendTxBlockWithExpectErrorString(msgDelegateCreateObject, sp.OperatorKey, "has no CreateObject permission of the bucket") + + statement := &permissiontypes.Statement{ + Actions: []permissiontypes.ActionType{permissiontypes.ACTION_CREATE_OBJECT}, + Effect: permissiontypes.EFFECT_ALLOW, + } + principal := permissiontypes.NewPrincipalWithAccount(user.GetAddr()) + msgPutPolicy := storagetypes.NewMsgPutPolicy(bucketOwner.GetAddr(), types2.NewBucketGRN(bucketName).String(), + principal, []*permissiontypes.Statement{statement}, nil) + s.SendTxBlock(bucketOwner, msgPutPolicy) + + s.SendTxBlock(sp.OperatorKey, msgDelegateCreateObject) + + headObjectReq := storagetypes.QueryHeadObjectRequest{ + BucketName: bucketName, + ObjectName: objectName, + } + headObjectResp, err := s.Client.HeadObject(ctx, &headObjectReq) + s.Require().NoError(err) + s.Require().Equal(objectName, headObjectResp.ObjectInfo.ObjectName) + s.Require().Equal(user.GetAddr().String(), headObjectResp.ObjectInfo.Creator) + s.Require().Equal(bucketOwner.GetAddr().String(), headObjectResp.ObjectInfo.Owner) + s.Require().Equal(0, len(headObjectResp.ObjectInfo.Checksums)) + +} diff --git a/proto/greenfield/storage/tx.proto b/proto/greenfield/storage/tx.proto index ade3e22c6..5373b1c6c 100644 --- a/proto/greenfield/storage/tx.proto +++ b/proto/greenfield/storage/tx.proto @@ -23,6 +23,7 @@ service Msg { rpc UpdateBucketInfo(MsgUpdateBucketInfo) returns (MsgUpdateBucketInfoResponse); rpc MirrorBucket(MsgMirrorBucket) returns (MsgMirrorBucketResponse); rpc DiscontinueBucket(MsgDiscontinueBucket) returns (MsgDiscontinueBucketResponse); + rpc UpdateDelegatedAgent(MsgUpdateDelegatedAgent) returns (MsgUpdateDelegatedAgentResponse); // basic operation of object rpc CreateObject(MsgCreateObject) returns (MsgCreateObjectResponse); @@ -36,6 +37,7 @@ service Msg { rpc UpdateObjectInfo(MsgUpdateObjectInfo) returns (MsgUpdateObjectInfoResponse); rpc UpdateObjectContent(MsgUpdateObjectContent) returns (MsgUpdateObjectContentResponse); rpc CancelUpdateObjectContent(MsgCancelUpdateObjectContent) returns (MsgCancelUpdateObjectContentResponse); + rpc DelegateCreateObject(MsgDelegateCreateObject) returns (MsgDelegateCreateObjectResponse); // basic operation of group rpc CreateGroup(MsgCreateGroup) returns (MsgCreateGroupResponse); @@ -679,3 +681,52 @@ message MsgCancelUpdateObjectContent { } message MsgCancelUpdateObjectContentResponse {} + + +message MsgDelegateCreateObject { + option (cosmos.msg.v1.signer) = "operator"; + // operator defines the account address of the operator, it is the delegated agent that allows to creat object under bucket. + string operator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // creator defines the account address of the object creator. + string creator = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // bucket_name defines the name of the bucket where the object is stored. + string bucket_name = 3; + // object_name defines the name of object + string object_name = 4; + // payload_size defines size of the object's payload + uint64 payload_size = 5; + // content_type define the format of the object which should be a standard MIME type. + string content_type = 6; + // visibility means the object is private or public. if private, only object owner or grantee can access it, + // otherwise every greenfield user can access it. + VisibilityType visibility = 7; + // expect_checksums defines a list of hashes which was generate by redundancy algorithm. + repeated bytes expect_checksums = 8; + // redundancy_type can be ec or replica + RedundancyType redundancy_type = 9; +} + +message MsgDelegateCreateObjectResponse { + string object_id = 1 [ + (cosmos_proto.scalar) = "cosmos.Uint", + (gogoproto.customtype) = "Uint", + (gogoproto.nullable) = false + ]; +} + + +message MsgUpdateDelegatedAgent { + option (cosmos.msg.v1.signer) = "operator"; + + // operator defines the account address of the operator, only the bucket owner can update the delegated agent. + string operator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // bucket_name defines the name of the bucket. + string bucket_name = 2; + // agents_to_add defines the delegated agent addresses to be added + repeated string agents_to_add = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // agents_to_remove defines the delegated agent addresses to be removed + repeated string agents_to_remove = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; +} + +message MsgUpdateDelegatedAgentResponse { +} \ No newline at end of file diff --git a/proto/greenfield/storage/types.proto b/proto/greenfield/storage/types.proto index 17b248a80..0322e8984 100644 --- a/proto/greenfield/storage/types.proto +++ b/proto/greenfield/storage/types.proto @@ -39,6 +39,8 @@ message BucketInfo { BucketStatus bucket_status = 10; // tags defines a list of tags the bucket has ResourceTags tags = 11; + // delegated_agent_addresses + repeated string delegated_agent_addresses = 12 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } message InternalBucketInfo { diff --git a/x/storage/keeper/keeper.go b/x/storage/keeper/keeper.go index 2c4927b51..e73cb09e6 100644 --- a/x/storage/keeper/keeper.go +++ b/x/storage/keeper/keeper.go @@ -669,6 +669,125 @@ func (k Keeper) CreateObject( return objectInfo.Id, nil } +func (k Keeper) DelegateCreateObject( + ctx sdk.Context, delegatee, creator sdk.AccAddress, bucketName, objectName string, payloadSize uint64, + opts types.CreateObjectOptions, +) (sdkmath.Uint, error) { + store := ctx.KVStore(k.storeKey) + + // check payload size + if payloadSize > k.MaxPayloadSize(ctx) { + return sdkmath.ZeroUint(), types.ErrTooLargeObject + } + + // check bucket + bucketInfo, found := k.GetBucketInfo(ctx, bucketName) + if !found { + return sdkmath.ZeroUint(), types.ErrNoSuchBucket + } + err := bucketInfo.CheckBucketStatus() + if err != nil { + return sdkmath.ZeroUint(), err + } + + // primary sp + sp := k.MustGetPrimarySPForBucket(ctx, bucketInfo) + + allowed := false + _ = false + // check if the delegated agent is the primary SP. + for _, delegatedAgent := range bucketInfo.DelegatedAgentAddresses { + if delegatee.String() == delegatedAgent { + allowed = true + if delegatee.String() == sp.OperatorAddress { + _ = true + } + } + } + if !allowed { + return sdkmath.ZeroUint(), fmt.Errorf("the delegatee address is not allowed to create object") + } + + // verify permission of creator + verifyOpts := &permtypes.VerifyOptions{ + WantedSize: &payloadSize, + } + effect := k.VerifyBucketPermission(ctx, bucketInfo, creator, permtypes.ACTION_CREATE_OBJECT, verifyOpts) + if effect != permtypes.EFFECT_ALLOW { + return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrapf("The creator(%s) has no CreateObject permission of the bucket(%s)", + creator.String(), bucketName) + } + objectKey := types.GetObjectKey(bucketName, objectName) + if store.Has(objectKey) { + return sdkmath.ZeroUint(), types.ErrObjectAlreadyExists + } + // check payload size, the empty object doesn't need sealed + var objectStatus types.ObjectStatus + if payloadSize == 0 { + // empty object does not interact with sp + objectStatus = types.OBJECT_STATUS_SEALED + } else { + objectStatus = types.OBJECT_STATUS_CREATED + } + // construct objectInfo + objectInfo := types.ObjectInfo{ + Owner: bucketInfo.Owner, + Creator: creator.String(), + BucketName: bucketName, + ObjectName: objectName, + PayloadSize: payloadSize, + Visibility: opts.Visibility, + ContentType: opts.ContentType, + Id: k.GenNextObjectID(ctx), + CreateAt: ctx.BlockTime().Unix(), + ObjectStatus: objectStatus, + RedundancyType: opts.RedundancyType, + SourceType: opts.SourceType, + Checksums: opts.Checksums, + } + if objectInfo.PayloadSize == 0 { + _, err := k.SealEmptyObjectOnVirtualGroup(ctx, bucketInfo, &objectInfo) + if err != nil { + return sdkmath.ZeroUint(), err + } + } else { + // Lock Fee + err = k.LockObjectStoreFee(ctx, bucketInfo, &objectInfo) + if err != nil { + return sdkmath.ZeroUint(), err + } + } + + bbz := k.cdc.MustMarshal(bucketInfo) + store.Set(types.GetBucketByIDKey(bucketInfo.Id), bbz) + + obz := k.cdc.MustMarshal(&objectInfo) + store.Set(objectKey, k.objectSeq.EncodeSequence(objectInfo.Id)) + store.Set(types.GetObjectByIDKey(objectInfo.Id), obz) + + if err = ctx.EventManager().EmitTypedEvents(&types.EventCreateObject{ + Creator: creator.String(), + Owner: objectInfo.Owner, + BucketName: bucketInfo.BucketName, + ObjectName: objectInfo.ObjectName, + BucketId: bucketInfo.Id, + ObjectId: objectInfo.Id, + CreateAt: objectInfo.CreateAt, + PayloadSize: objectInfo.PayloadSize, + Visibility: objectInfo.Visibility, + PrimarySpId: sp.Id, + ContentType: objectInfo.ContentType, + Status: objectInfo.ObjectStatus, + RedundancyType: objectInfo.RedundancyType, + SourceType: objectInfo.SourceType, + Checksums: objectInfo.Checksums, + LocalVirtualGroupId: objectInfo.LocalVirtualGroupId, + }); err != nil { + return objectInfo.Id, err + } + return objectInfo.Id, nil +} + // StoreObjectInfo stores object related keys to KVStore, // it's designed to be used in tests func (k Keeper) StoreObjectInfo(ctx sdk.Context, objectInfo *types.ObjectInfo) { diff --git a/x/storage/keeper/msg_server.go b/x/storage/keeper/msg_server.go index 2ddcfa17f..f49406011 100644 --- a/x/storage/keeper/msg_server.go +++ b/x/storage/keeper/msg_server.go @@ -102,6 +102,33 @@ func (k msgServer) DiscontinueBucket(goCtx context.Context, msg *storagetypes.Ms return &types.MsgDiscontinueBucketResponse{}, nil } +func (k msgServer) UpdateDelegatedAgent(goCtx context.Context, msg *storagetypes.MsgUpdateDelegatedAgent) (*storagetypes.MsgUpdateDelegatedAgentResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + bucketInfo, found := k.GetBucketInfo(ctx, msg.BucketName) + if !found { + return nil, types.ErrNoSuchBucket + } + if msg.Operator != bucketInfo.Owner { + return nil, types.ErrAccessDenied.Wrapf("Only the bucket owner(%s) can update delegated agents", bucketInfo.Owner) + } + + agents := bucketInfo.DelegatedAgentAddresses + for _, agent := range msg.AgentsToAdd { + agents = append(agents, agent) + } + + for _, agentToRemove := range msg.AgentsToRemove { + for i, agent := range agents { + if agentToRemove == agent { + agents = append(agents[:i], agents[i+1:]...) + } + } + } + bucketInfo.DelegatedAgentAddresses = agents + k.SetBucketInfo(ctx, bucketInfo) + return &types.MsgUpdateDelegatedAgentResponse{}, nil +} + func (k msgServer) CreateObject(goCtx context.Context, msg *types.MsgCreateObject) (*types.MsgCreateObjectResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) @@ -739,6 +766,32 @@ func (k msgServer) CancelUpdateObjectContent(goCtx context.Context, msg *storage return &types.MsgCancelUpdateObjectContentResponse{}, nil } +func (k msgServer) DelegateCreateObject(goCtx context.Context, msg *storagetypes.MsgDelegateCreateObject) (*storagetypes.MsgDelegateCreateObjectResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + delegatedAddr := sdk.MustAccAddressFromHex(msg.Operator) + creatorAddr := sdk.MustAccAddressFromHex(msg.Creator) + if msg.ExpectChecksums != nil { + if len(msg.ExpectChecksums) != int(1+k.GetExpectSecondarySPNumForECObject(ctx, ctx.BlockTime().Unix())) { + return nil, gnfderrors.ErrInvalidChecksum.Wrapf("ExpectChecksums missing, expect: %d, actual: %d", + 1+k.Keeper.RedundantParityChunkNum(ctx)+k.Keeper.RedundantDataChunkNum(ctx), + len(msg.ExpectChecksums)) + } + } + id, err := k.Keeper.DelegateCreateObject(ctx, delegatedAddr, creatorAddr, msg.BucketName, msg.ObjectName, msg.PayloadSize, storagetypes.CreateObjectOptions{ + SourceType: types.SOURCE_TYPE_ORIGIN, + Visibility: msg.Visibility, + ContentType: msg.ContentType, + RedundancyType: msg.RedundancyType, + Checksums: msg.ExpectChecksums, + }) + if err != nil { + return nil, err + } + return &types.MsgDelegateCreateObjectResponse{ + ObjectId: id, + }, nil +} + func (k Keeper) verifyGVGSignatures(ctx sdk.Context, bucketID math.Uint, dstSP *sptypes.StorageProvider, gvgMappings []*storagetypes.GVGMapping) error { // verify secondary sp signature for _, newLvg2gvg := range gvgMappings { diff --git a/x/storage/types/codec.go b/x/storage/types/codec.go index 0e96ca58e..1eee98226 100644 --- a/x/storage/types/codec.go +++ b/x/storage/types/codec.go @@ -121,7 +121,12 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgCancelUpdateObjectContent{}, ) - + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgDelegateCreateObject{}, + ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgUpdateDelegatedAgent{}, + ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/storage/types/message.go b/x/storage/types/message.go index ab6957e85..3f39025eb 100644 --- a/x/storage/types/message.go +++ b/x/storage/types/message.go @@ -21,10 +21,11 @@ import ( const ( // For bucket - TypeMsgCreateBucket = "create_bucket" - TypeMsgDeleteBucket = "delete_bucket" - TypeMsgUpdateBucketInfo = "update_bucket_info" - TypeMsgMirrorBucket = "mirror_bucket" + TypeMsgCreateBucket = "create_bucket" + TypeMsgDeleteBucket = "delete_bucket" + TypeMsgUpdateBucketInfo = "update_bucket_info" + TypeMsgMirrorBucket = "mirror_bucket" + TypeMsgUpdateDelegatedAgents = "update_delegated_agents" // For object TypeMsgCopyObject = "copy_object" @@ -39,6 +40,7 @@ const ( TypeMsgUpdateObjectInfo = "update_object_info" TypeMsgUpdateObjectContent = "update_object_content" TypeMsgCancelUpdateObjectContent = "cancel_update_object_content" + TypeMsgDelegateCreateObject = "delegate_create_object" // For group TypeMsgCreateGroup = "create_group" @@ -57,10 +59,11 @@ const ( TypeMsgSetTag = "set_tag" - MaxGroupMemberLimitOnce = 20 - MaxTagCount = 4 - MaxTagKeyLength = 32 - MaxTagValueLength = 64 + MaxGroupMemberLimitOnce = 20 + MaxTagCount = 4 + MaxTagKeyLength = 32 + MaxTagValueLength = 64 + MaxBucketDelegatedAgentLimitOnce = 5 // For discontinue MaxDiscontinueReasonLen = 128 @@ -295,6 +298,83 @@ func (msg *MsgUpdateBucketInfo) ValidateBasic() error { return nil } +func NewMsgUpdateDelegatedAgent( + operator sdk.AccAddress, bucketName string, agentsToAdd, + agentsToRemove []sdk.AccAddress, +) *MsgUpdateDelegatedAgent { + var agentsAddrToAdd []string + for _, agent := range agentsToAdd { + agentsAddrToAdd = append(agentsAddrToAdd, agent.String()) + } + var agentsAddrToDelete []string + for _, agent := range agentsToRemove { + agentsAddrToDelete = append(agentsAddrToDelete, agent.String()) + } + return &MsgUpdateDelegatedAgent{ + Operator: operator.String(), + BucketName: bucketName, + AgentsToAdd: agentsAddrToAdd, + AgentsToRemove: agentsAddrToDelete, + } +} + +// Route implements the sdk.Msg interface. +func (msg *MsgUpdateDelegatedAgent) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg *MsgUpdateDelegatedAgent) Type() string { + return TypeMsgUpdateDelegatedAgents +} + +// GetSigners implements the sdk.Msg interface. +func (msg *MsgUpdateDelegatedAgent) GetSigners() []sdk.AccAddress { + operator, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{operator} +} + +// GetSignBytes returns the message bytes to sign over. +func (msg *MsgUpdateDelegatedAgent) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +// ValidateBasic implements the sdk.Msg interface. +func (msg *MsgUpdateDelegatedAgent) ValidateBasic() error { + _, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid operator address (%s)", err) + } + + err = s3util.CheckValidBucketName(msg.BucketName) + if err != nil { + return err + } + if len(msg.AgentsToAdd) == 0 && len(msg.AgentsToRemove) == 0 { + return gnfderrors.ErrInvalidParameter.Wrapf("Need to provide agents to be added/removed") + } + if len(msg.AgentsToAdd)+len(msg.AgentsToRemove) > MaxBucketDelegatedAgentLimitOnce { + return gnfderrors.ErrInvalidParameter.Wrapf("Once update bucket delegated agents limit exceeded") + } + for _, agent := range msg.AgentsToAdd { + _, err = sdk.AccAddressFromHexUnsafe(agent) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid address (%s)", err) + } + } + for _, agent := range msg.AgentsToRemove { + _, err = sdk.AccAddressFromHexUnsafe(agent) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid address (%s)", err) + } + } + return nil +} + // NewMsgCreateObject creates a new MsgCreateObject instance. func NewMsgCreateObject( creator sdk.AccAddress, bucketName, objectName string, payloadSize uint64, Visibility VisibilityType, @@ -1720,3 +1800,84 @@ func (msg *MsgCancelUpdateObjectContent) ValidateBasic() error { } return nil } + +// NewMsgDelegateCreateObject creates a new MsgDelegateCreateObject instance. +func NewMsgDelegateCreateObject( + operator, creator sdk.AccAddress, + bucketName, objectName string, + payloadSize uint64, + Visibility VisibilityType, + expectChecksums [][]byte, + contentType string, + redundancyType RedundancyType) *MsgDelegateCreateObject { + + return &MsgDelegateCreateObject{ + Operator: operator.String(), + Creator: creator.String(), + BucketName: bucketName, + ObjectName: objectName, + PayloadSize: payloadSize, + Visibility: Visibility, + ContentType: contentType, + ExpectChecksums: expectChecksums, + RedundancyType: redundancyType, + } +} + +// Route implements the sdk.Msg interface. +func (msg *MsgDelegateCreateObject) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg *MsgDelegateCreateObject) Type() string { + return TypeMsgDelegateCreateObject +} + +// GetSigners implements the sdk.Msg interface. +func (msg *MsgDelegateCreateObject) GetSigners() []sdk.AccAddress { + Operator, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{Operator} +} + +// GetSignBytes returns the message bytes to sign over. +func (msg *MsgDelegateCreateObject) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +// ValidateBasic implements the sdk.Msg interface. +func (msg *MsgDelegateCreateObject) ValidateBasic() error { + _, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid operator address (%s)", err) + } + _, err = sdk.AccAddressFromHexUnsafe(msg.Creator) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + err = s3util.CheckValidBucketName(msg.BucketName) + if err != nil { + return err + } + err = s3util.CheckValidObjectName(msg.ObjectName) + if err != nil { + return err + } + if msg.ExpectChecksums != nil { + if err = s3util.CheckValidExpectChecksums(msg.ExpectChecksums); err != nil { + return err + } + } + err = s3util.CheckValidContentType(msg.ContentType) + if err != nil { + return err + } + if msg.Visibility == VISIBILITY_TYPE_UNSPECIFIED { + return errors.Wrapf(ErrInvalidVisibility, "Unspecified visibility is not allowed.") + } + return nil +} diff --git a/x/storage/types/message_test.go b/x/storage/types/message_test.go index 9c1fef405..d316dc0ae 100644 --- a/x/storage/types/message_test.go +++ b/x/storage/types/message_test.go @@ -1,6 +1,8 @@ package types import ( + "encoding/hex" + "fmt" "strings" "testing" @@ -470,3 +472,17 @@ func TestMsgRenewGroupMember_ValidateBasic(t *testing.T) { }) } } + +func TestMsgSealObjetbytes(t *testing.T) { + object := MsgSealObject{ + Operator: "abc", + BucketName: "abc", + ObjectName: "O", + GlobalVirtualGroupId: 32, + SecondarySpBlsAggSignatures: []byte{'a'}, + } + fmt.Println(hex.EncodeToString(object.GetSignBytes())) + //7b226275636b65745f6e616d65223a22616263222c22676c6f62616c5f7669727475616c5f67726f75705f6964223a33322c226f626a6563745f6e616d65223a224f222c226f70657261746f72223a22616263222c227365636f6e646172795f73705f626c735f6167675f7369676e617475726573223a2259513d3d227d + //7b226275636b65745f6e616d65223a22616263222c226578706563745f636865636b73756d73223a5b5d2c22676c6f62616c5f7669727475616c5f67726f75705f6964223a33322c226f626a6563745f6e616d65223a224f222c226f70657261746f72223a22616263222c227365636f6e646172795f73705f626c735f6167675f7369676e617475726573223a2259513d3d227d + //7b226275636b65745f6e616d65223a22616263222c226578706563745f636865636b73756d73223a5b5d2c22676c6f62616c5f7669727475616c5f67726f75705f6964223a33322c226f626a6563745f6e616d65223a224f222c226f70657261746f72223a22616263222c227365636f6e646172795f73705f626c735f6167675f7369676e617475726573223a2259513d3d227d +} diff --git a/x/storage/types/tx.pb.go b/x/storage/types/tx.pb.go index 716a90b09..11378150d 100644 --- a/x/storage/types/tx.pb.go +++ b/x/storage/types/tx.pb.go @@ -3414,6 +3414,269 @@ func (m *MsgCancelUpdateObjectContentResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCancelUpdateObjectContentResponse proto.InternalMessageInfo +type MsgDelegateCreateObject struct { + // operator defines the account address of the operator, it is the delegated agent that allows to creat object under bucket. + Operator string `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` + // creator defines the account address of the object creator. + Creator string `protobuf:"bytes,2,opt,name=creator,proto3" json:"creator,omitempty"` + // bucket_name defines the name of the bucket where the object is stored. + BucketName string `protobuf:"bytes,3,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + // object_name defines the name of object + ObjectName string `protobuf:"bytes,4,opt,name=object_name,json=objectName,proto3" json:"object_name,omitempty"` + // payload_size defines size of the object's payload + PayloadSize uint64 `protobuf:"varint,5,opt,name=payload_size,json=payloadSize,proto3" json:"payload_size,omitempty"` + // content_type define the format of the object which should be a standard MIME type. + ContentType string `protobuf:"bytes,6,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` + // visibility means the object is private or public. if private, only object owner or grantee can access it, + // otherwise every greenfield user can access it. + Visibility VisibilityType `protobuf:"varint,7,opt,name=visibility,proto3,enum=greenfield.storage.VisibilityType" json:"visibility,omitempty"` + // expect_checksums defines a list of hashes which was generate by redundancy algorithm. + ExpectChecksums [][]byte `protobuf:"bytes,8,rep,name=expect_checksums,json=expectChecksums,proto3" json:"expect_checksums,omitempty"` + // redundancy_type can be ec or replica + RedundancyType RedundancyType `protobuf:"varint,9,opt,name=redundancy_type,json=redundancyType,proto3,enum=greenfield.storage.RedundancyType" json:"redundancy_type,omitempty"` +} + +func (m *MsgDelegateCreateObject) Reset() { *m = MsgDelegateCreateObject{} } +func (m *MsgDelegateCreateObject) String() string { return proto.CompactTextString(m) } +func (*MsgDelegateCreateObject) ProtoMessage() {} +func (*MsgDelegateCreateObject) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{63} +} +func (m *MsgDelegateCreateObject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDelegateCreateObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDelegateCreateObject.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 *MsgDelegateCreateObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDelegateCreateObject.Merge(m, src) +} +func (m *MsgDelegateCreateObject) XXX_Size() int { + return m.Size() +} +func (m *MsgDelegateCreateObject) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDelegateCreateObject.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDelegateCreateObject proto.InternalMessageInfo + +func (m *MsgDelegateCreateObject) GetOperator() string { + if m != nil { + return m.Operator + } + return "" +} + +func (m *MsgDelegateCreateObject) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgDelegateCreateObject) GetBucketName() string { + if m != nil { + return m.BucketName + } + return "" +} + +func (m *MsgDelegateCreateObject) GetObjectName() string { + if m != nil { + return m.ObjectName + } + return "" +} + +func (m *MsgDelegateCreateObject) GetPayloadSize() uint64 { + if m != nil { + return m.PayloadSize + } + return 0 +} + +func (m *MsgDelegateCreateObject) GetContentType() string { + if m != nil { + return m.ContentType + } + return "" +} + +func (m *MsgDelegateCreateObject) GetVisibility() VisibilityType { + if m != nil { + return m.Visibility + } + return VISIBILITY_TYPE_UNSPECIFIED +} + +func (m *MsgDelegateCreateObject) GetExpectChecksums() [][]byte { + if m != nil { + return m.ExpectChecksums + } + return nil +} + +func (m *MsgDelegateCreateObject) GetRedundancyType() RedundancyType { + if m != nil { + return m.RedundancyType + } + return REDUNDANCY_EC_TYPE +} + +type MsgDelegateCreateObjectResponse struct { + ObjectId Uint `protobuf:"bytes,1,opt,name=object_id,json=objectId,proto3,customtype=Uint" json:"object_id"` +} + +func (m *MsgDelegateCreateObjectResponse) Reset() { *m = MsgDelegateCreateObjectResponse{} } +func (m *MsgDelegateCreateObjectResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDelegateCreateObjectResponse) ProtoMessage() {} +func (*MsgDelegateCreateObjectResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{64} +} +func (m *MsgDelegateCreateObjectResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDelegateCreateObjectResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDelegateCreateObjectResponse.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 *MsgDelegateCreateObjectResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDelegateCreateObjectResponse.Merge(m, src) +} +func (m *MsgDelegateCreateObjectResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDelegateCreateObjectResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDelegateCreateObjectResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDelegateCreateObjectResponse proto.InternalMessageInfo + +type MsgUpdateDelegatedAgent struct { + // operator defines the account address of the operator, only the bucket owner can update the delegated agent. + Operator string `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` + // bucket_name defines the name of the bucket. + BucketName string `protobuf:"bytes,2,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + // agents_to_add defines the delegated agent addresses to be added + AgentsToAdd []string `protobuf:"bytes,3,rep,name=agents_to_add,json=agentsToAdd,proto3" json:"agents_to_add,omitempty"` + // agents_to_remove defines the delegated agent addresses to be removed + AgentsToRemove []string `protobuf:"bytes,4,rep,name=agents_to_remove,json=agentsToRemove,proto3" json:"agents_to_remove,omitempty"` +} + +func (m *MsgUpdateDelegatedAgent) Reset() { *m = MsgUpdateDelegatedAgent{} } +func (m *MsgUpdateDelegatedAgent) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateDelegatedAgent) ProtoMessage() {} +func (*MsgUpdateDelegatedAgent) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{65} +} +func (m *MsgUpdateDelegatedAgent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateDelegatedAgent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateDelegatedAgent.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 *MsgUpdateDelegatedAgent) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateDelegatedAgent.Merge(m, src) +} +func (m *MsgUpdateDelegatedAgent) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateDelegatedAgent) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateDelegatedAgent.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateDelegatedAgent proto.InternalMessageInfo + +func (m *MsgUpdateDelegatedAgent) GetOperator() string { + if m != nil { + return m.Operator + } + return "" +} + +func (m *MsgUpdateDelegatedAgent) GetBucketName() string { + if m != nil { + return m.BucketName + } + return "" +} + +func (m *MsgUpdateDelegatedAgent) GetAgentsToAdd() []string { + if m != nil { + return m.AgentsToAdd + } + return nil +} + +func (m *MsgUpdateDelegatedAgent) GetAgentsToRemove() []string { + if m != nil { + return m.AgentsToRemove + } + return nil +} + +type MsgUpdateDelegatedAgentResponse struct { +} + +func (m *MsgUpdateDelegatedAgentResponse) Reset() { *m = MsgUpdateDelegatedAgentResponse{} } +func (m *MsgUpdateDelegatedAgentResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateDelegatedAgentResponse) ProtoMessage() {} +func (*MsgUpdateDelegatedAgentResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{66} +} +func (m *MsgUpdateDelegatedAgentResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateDelegatedAgentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateDelegatedAgentResponse.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 *MsgUpdateDelegatedAgentResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateDelegatedAgentResponse.Merge(m, src) +} +func (m *MsgUpdateDelegatedAgentResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateDelegatedAgentResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateDelegatedAgentResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateDelegatedAgentResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgCreateBucket)(nil), "greenfield.storage.MsgCreateBucket") proto.RegisterType((*MsgCreateBucketResponse)(nil), "greenfield.storage.MsgCreateBucketResponse") @@ -3478,164 +3741,177 @@ func init() { proto.RegisterType((*MsgUpdateObjectContentResponse)(nil), "greenfield.storage.MsgUpdateObjectContentResponse") proto.RegisterType((*MsgCancelUpdateObjectContent)(nil), "greenfield.storage.MsgCancelUpdateObjectContent") proto.RegisterType((*MsgCancelUpdateObjectContentResponse)(nil), "greenfield.storage.MsgCancelUpdateObjectContentResponse") + proto.RegisterType((*MsgDelegateCreateObject)(nil), "greenfield.storage.MsgDelegateCreateObject") + proto.RegisterType((*MsgDelegateCreateObjectResponse)(nil), "greenfield.storage.MsgDelegateCreateObjectResponse") + proto.RegisterType((*MsgUpdateDelegatedAgent)(nil), "greenfield.storage.MsgUpdateDelegatedAgent") + proto.RegisterType((*MsgUpdateDelegatedAgentResponse)(nil), "greenfield.storage.MsgUpdateDelegatedAgentResponse") } func init() { proto.RegisterFile("greenfield/storage/tx.proto", fileDescriptor_ddb71b028305a3cc) } var fileDescriptor_ddb71b028305a3cc = []byte{ - // 2431 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x6c, 0x1b, 0xc7, - 0x19, 0x36, 0x25, 0x4a, 0x32, 0x7f, 0xea, 0x61, 0xaf, 0x95, 0x98, 0xa6, 0x6b, 0x8a, 0x66, 0x52, - 0x47, 0x7e, 0x89, 0x8e, 0xea, 0x1a, 0xae, 0x51, 0x14, 0x95, 0x94, 0xc6, 0x25, 0x12, 0xc5, 0xca, - 0xca, 0x76, 0x81, 0x00, 0x05, 0x33, 0xe4, 0x8e, 0xd7, 0xdb, 0x90, 0xbb, 0xdb, 0x9d, 0xa5, 0x6c, - 0xa6, 0x40, 0x0f, 0xbd, 0xe4, 0x54, 0xc0, 0x40, 0x7a, 0xe8, 0xa1, 0xe8, 0xa1, 0x40, 0x81, 0x5e, - 0x5a, 0x14, 0x45, 0xce, 0x45, 0x2f, 0x01, 0x8c, 0x9e, 0x8c, 0x9c, 0x8a, 0x1e, 0xdc, 0xc0, 0x2e, - 0x50, 0xf4, 0xda, 0x4b, 0xaf, 0xc1, 0x3c, 0x76, 0x76, 0xb8, 0x4f, 0x4a, 0x96, 0x62, 0x9d, 0xa4, - 0x9d, 0xf9, 0x66, 0xe6, 0x7f, 0xcf, 0x3f, 0xff, 0x4f, 0x38, 0x6d, 0x7a, 0x18, 0xdb, 0xf7, 0x2c, - 0xdc, 0x33, 0x9a, 0xc4, 0x77, 0x3c, 0x64, 0xe2, 0xa6, 0xff, 0x70, 0xc5, 0xf5, 0x1c, 0xdf, 0xd1, - 0xb4, 0x70, 0x72, 0x45, 0x4c, 0x56, 0x4f, 0x76, 0x1d, 0xd2, 0x77, 0x48, 0xb3, 0x4f, 0xcc, 0xe6, - 0xce, 0x9b, 0xf4, 0x0f, 0x07, 0x57, 0x4f, 0xf1, 0x89, 0x36, 0xfb, 0x6a, 0xf2, 0x0f, 0x31, 0xb5, - 0x68, 0x3a, 0xa6, 0xc3, 0xc7, 0xe9, 0x7f, 0x62, 0x74, 0xc9, 0x74, 0x1c, 0xb3, 0x87, 0x9b, 0xec, - 0xab, 0x33, 0xb8, 0xd7, 0xf4, 0xad, 0x3e, 0x26, 0x3e, 0xea, 0xbb, 0x02, 0x50, 0x57, 0x68, 0xeb, - 0x3a, 0xfd, 0xbe, 0x63, 0x37, 0x91, 0xeb, 0x7a, 0xce, 0x0e, 0xea, 0xc9, 0x2d, 0x62, 0x88, 0x07, - 0x1e, 0x72, 0x5d, 0xec, 0x09, 0x40, 0x43, 0x01, 0xb8, 0xd8, 0xeb, 0x5b, 0x84, 0x58, 0x8e, 0x2d, - 0xb0, 0x09, 0x9b, 0x04, 0x22, 0xc8, 0x05, 0xb8, 0xc8, 0x43, 0xfd, 0x80, 0xbf, 0x5a, 0x92, 0x10, - 0x87, 0x2e, 0x16, 0xf3, 0x8d, 0xbf, 0x4e, 0xc2, 0xc2, 0x26, 0x31, 0x37, 0x3c, 0x8c, 0x7c, 0xbc, - 0x3e, 0xe8, 0x7e, 0x84, 0x7d, 0x6d, 0x15, 0x66, 0xba, 0xf4, 0xdb, 0xf1, 0x2a, 0x85, 0x7a, 0x61, - 0xb9, 0xb4, 0x5e, 0xf9, 0xe2, 0xb3, 0xcb, 0x8b, 0x42, 0x6c, 0x6b, 0x86, 0xe1, 0x61, 0x42, 0xb6, - 0x7d, 0xcf, 0xb2, 0x4d, 0x3d, 0x00, 0x6a, 0x4b, 0x50, 0xee, 0xb0, 0xd5, 0x6d, 0x1b, 0xf5, 0x71, - 0x65, 0x82, 0xae, 0xd3, 0x81, 0x0f, 0xbd, 0x87, 0xfa, 0x58, 0x5b, 0x07, 0xd8, 0xb1, 0x88, 0xd5, - 0xb1, 0x7a, 0x96, 0x3f, 0xac, 0x4c, 0xd6, 0x0b, 0xcb, 0xf3, 0xab, 0x8d, 0x95, 0xb8, 0x16, 0x57, - 0xee, 0x4a, 0xd4, 0xed, 0xa1, 0x8b, 0x75, 0x65, 0x95, 0xb6, 0x06, 0x0b, 0x2e, 0x1a, 0xf6, 0xb1, - 0xed, 0xb7, 0x11, 0x27, 0xa3, 0x52, 0xcc, 0x21, 0x70, 0x5e, 0x2c, 0x10, 0xa3, 0xda, 0xdb, 0xa0, - 0xb9, 0x9e, 0xd5, 0x47, 0xde, 0xb0, 0x4d, 0x5c, 0xb9, 0xcb, 0x54, 0xce, 0x2e, 0xc7, 0xc4, 0x9a, - 0x6d, 0x37, 0xd8, 0xe7, 0x1d, 0x38, 0xa1, 0xee, 0x23, 0x74, 0x5f, 0x99, 0xae, 0x17, 0x96, 0xcb, - 0xab, 0xa7, 0x55, 0xbe, 0x84, 0xbe, 0xd6, 0x04, 0x44, 0x3f, 0x1e, 0xee, 0x25, 0x86, 0xb4, 0x4b, - 0xa0, 0x75, 0xef, 0x23, 0xcf, 0xc4, 0x46, 0xdb, 0xc3, 0xc8, 0x68, 0xff, 0x74, 0xe0, 0xf8, 0xa8, - 0x32, 0x53, 0x2f, 0x2c, 0x17, 0xf5, 0x63, 0x62, 0x46, 0xc7, 0xc8, 0x78, 0x9f, 0x8e, 0xdf, 0x98, - 0xfd, 0xc5, 0x7f, 0xfe, 0x7c, 0x21, 0x10, 0x7c, 0x63, 0x1b, 0x4e, 0x46, 0xf4, 0xa7, 0x63, 0xe2, - 0x3a, 0x36, 0xc1, 0xda, 0x75, 0x28, 0x09, 0x9d, 0x58, 0x86, 0xd0, 0xe4, 0xe9, 0xc7, 0x4f, 0x97, - 0x8e, 0xfc, 0xf3, 0xe9, 0x52, 0xf1, 0x8e, 0x65, 0xfb, 0x5f, 0x7c, 0x76, 0xb9, 0x2c, 0xd8, 0xa5, - 0x9f, 0xfa, 0x51, 0x8e, 0x6e, 0x19, 0x8d, 0x07, 0xcc, 0x28, 0xde, 0xc2, 0x3d, 0x2c, 0x8d, 0xe2, - 0x2a, 0x1c, 0x75, 0x5c, 0xec, 0x8d, 0x65, 0x15, 0x12, 0x99, 0x6b, 0x16, 0x37, 0xe6, 0x28, 0x33, - 0x12, 0xdf, 0x38, 0xc5, 0xb8, 0x51, 0x0f, 0x0e, 0xb8, 0x69, 0xfc, 0xaa, 0x00, 0x8b, 0x74, 0xce, - 0x22, 0x5d, 0xc7, 0xf6, 0x2d, 0x7b, 0x70, 0xb0, 0x94, 0x69, 0xaf, 0xc2, 0xb4, 0x87, 0x11, 0x71, - 0x6c, 0x66, 0xac, 0x25, 0x5d, 0x7c, 0x45, 0x29, 0xae, 0xc1, 0x37, 0x92, 0xa8, 0x92, 0x64, 0xff, - 0x5b, 0x75, 0xb0, 0x5b, 0x9d, 0x9f, 0xe0, 0xee, 0x01, 0x39, 0xd8, 0x12, 0x94, 0x1d, 0xb6, 0x3d, - 0x07, 0x70, 0xa2, 0x81, 0x0f, 0x31, 0xc0, 0x59, 0x98, 0x75, 0xd1, 0xb0, 0xe7, 0x20, 0xa3, 0x4d, - 0xac, 0x8f, 0x31, 0x73, 0x9d, 0xa2, 0x5e, 0x16, 0x63, 0xdb, 0xd6, 0xc7, 0x51, 0x27, 0x9d, 0xda, - 0x93, 0x93, 0x9e, 0x85, 0x59, 0x2a, 0x0a, 0xea, 0xa4, 0x34, 0xd0, 0x30, 0x97, 0x28, 0xe9, 0x65, - 0x31, 0x46, 0xe1, 0x69, 0xce, 0x33, 0xb3, 0x27, 0xe7, 0x39, 0x0f, 0xc7, 0xf0, 0x43, 0x97, 0xf2, - 0xdd, 0xbd, 0x8f, 0xbb, 0x1f, 0x91, 0x41, 0x9f, 0x54, 0x8e, 0xd6, 0x27, 0x97, 0x67, 0xf5, 0x05, - 0x3e, 0xbe, 0x11, 0x0c, 0x6b, 0xef, 0xc0, 0x82, 0x87, 0x8d, 0x81, 0x6d, 0x20, 0xbb, 0x3b, 0xe4, - 0xd4, 0x95, 0xd2, 0x79, 0xd4, 0x25, 0x94, 0xf1, 0x38, 0xef, 0x8d, 0x7c, 0x67, 0xb8, 0x21, 0xd7, - 0xb2, 0xea, 0x86, 0x42, 0x31, 0x63, 0xba, 0x21, 0x47, 0xb7, 0x8c, 0xc6, 0xa7, 0x13, 0x30, 0xb7, - 0x49, 0xcc, 0x6d, 0x8c, 0x7a, 0xc2, 0x72, 0x0e, 0xc8, 0xd6, 0x73, 0x6d, 0xe7, 0xdb, 0x70, 0xd2, - 0xec, 0x39, 0x1d, 0xd4, 0x6b, 0xef, 0x58, 0x9e, 0x3f, 0x40, 0xbd, 0xb6, 0xe9, 0x39, 0x03, 0x97, - 0x72, 0x44, 0xcd, 0x68, 0x4e, 0x5f, 0xe4, 0xd3, 0x77, 0xf9, 0xec, 0x4d, 0x3a, 0xd9, 0x32, 0xb4, - 0xb7, 0x60, 0x89, 0xe0, 0xae, 0x63, 0x1b, 0x42, 0xd5, 0x9d, 0x1e, 0x69, 0x23, 0xd3, 0x6c, 0x13, - 0xcb, 0xb4, 0x91, 0x3f, 0xf0, 0x30, 0x0f, 0xbd, 0xb3, 0xfa, 0x69, 0x09, 0xdb, 0x76, 0xd7, 0x7b, - 0x64, 0xcd, 0x34, 0xb7, 0x25, 0x24, 0xea, 0x71, 0x27, 0xe1, 0x95, 0x11, 0xa1, 0x48, 0x57, 0xfb, - 0x4d, 0x01, 0x4e, 0x6c, 0x12, 0x53, 0xc7, 0x74, 0xf4, 0xe5, 0x0b, 0x2d, 0x4a, 0xf7, 0x19, 0x38, - 0x9d, 0x40, 0x9d, 0xa4, 0xfe, 0x4f, 0x5c, 0xd9, 0x1b, 0x8e, 0x3b, 0x14, 0x74, 0x57, 0xa3, 0x74, - 0x2b, 0xd4, 0x9d, 0x83, 0x05, 0xe2, 0x75, 0xdb, 0x71, 0x0a, 0xe7, 0x88, 0xd7, 0x5d, 0x0f, 0x89, - 0x3c, 0x07, 0x0b, 0x06, 0xf1, 0x47, 0x70, 0x9c, 0xd0, 0x39, 0x83, 0xf8, 0xa3, 0x38, 0xba, 0x9f, - 0xca, 0x50, 0x51, 0xee, 0x77, 0x2b, 0x34, 0x04, 0xb1, 0x9f, 0x8a, 0x9b, 0x92, 0xfb, 0x29, 0x38, - 0x1d, 0x4e, 0x52, 0xdc, 0x1e, 0xef, 0xc8, 0x45, 0x83, 0xf8, 0x5b, 0x51, 0x4f, 0x8f, 0xca, 0xf3, - 0x7d, 0x66, 0x07, 0xa1, 0xbc, 0xf6, 0xc1, 0xe1, 0x7e, 0x5d, 0x50, 0x2e, 0xbe, 0xc3, 0x65, 0x3d, - 0xea, 0xcd, 0x18, 0xb1, 0x9c, 0x27, 0xb1, 0x9b, 0xf1, 0x60, 0x49, 0xbf, 0x01, 0x20, 0xe5, 0x4b, - 0x2a, 0x93, 0xf5, 0xc9, 0x3c, 0x01, 0x97, 0x02, 0x01, 0x13, 0xe5, 0x56, 0x2d, 0xee, 0xea, 0x56, - 0x8d, 0xb0, 0xfc, 0x49, 0x01, 0xe6, 0x65, 0xbc, 0x65, 0xd1, 0x66, 0x4f, 0x97, 0xea, 0x19, 0x00, - 0x1e, 0xc7, 0x14, 0x4e, 0x4b, 0x6c, 0x84, 0x31, 0xba, 0x08, 0x53, 0xf8, 0xa1, 0xef, 0x21, 0xa1, - 0x1d, 0xfe, 0x11, 0x09, 0xfc, 0x5b, 0xf0, 0xea, 0x28, 0x21, 0xd2, 0x0c, 0xaf, 0xc1, 0x51, 0x19, - 0x24, 0xc7, 0xb0, 0xc2, 0x19, 0x93, 0x07, 0xcd, 0x86, 0xcf, 0x58, 0xe3, 0x9a, 0xe6, 0xac, 0xed, - 0x4d, 0x8f, 0xd9, 0xcc, 0x45, 0x25, 0x5e, 0x61, 0x7c, 0x28, 0xa7, 0x4a, 0x59, 0x7f, 0x3e, 0xc1, - 0xcc, 0xeb, 0x8e, 0x6b, 0x04, 0x2c, 0x6e, 0xe2, 0x7e, 0x07, 0x7b, 0x7b, 0x24, 0xeb, 0x3b, 0x50, - 0xe6, 0x64, 0x39, 0x0f, 0x6c, 0xec, 0x71, 0xba, 0x32, 0x16, 0x72, 0x1e, 0x6e, 0x51, 0x6c, 0x84, - 0xa3, 0xc9, 0xa8, 0xba, 0x7e, 0x08, 0xf3, 0x7d, 0x46, 0x19, 0x69, 0xfb, 0x0e, 0xcd, 0xed, 0x2b, - 0xc5, 0xfa, 0xe4, 0x72, 0x39, 0xf9, 0x76, 0xdf, 0x24, 0xa6, 0xc2, 0x8b, 0x3e, 0x2b, 0x56, 0xde, - 0x76, 0xd6, 0x0c, 0x7a, 0x6f, 0x1d, 0x57, 0x76, 0x32, 0x98, 0x50, 0x2a, 0x53, 0xcc, 0xd0, 0xd3, - 0x29, 0x5d, 0x90, 0x5b, 0x70, 0x29, 0x26, 0xdb, 0x74, 0x4c, 0x8c, 0x52, 0xce, 0xff, 0x0b, 0xae, - 0x2f, 0x1b, 0x3f, 0x38, 0xcc, 0x62, 0xfe, 0x2e, 0xcc, 0x08, 0x4e, 0x77, 0x21, 0xdf, 0x60, 0x49, - 0xda, 0xa5, 0x38, 0xca, 0xb3, 0x94, 0xc9, 0x2f, 0xb9, 0x9f, 0xab, 0xe2, 0xb8, 0x02, 0xd3, 0x7c, - 0xaf, 0x5c, 0x61, 0x08, 0x9c, 0xd6, 0x02, 0x9a, 0x09, 0x5a, 0x1e, 0xf2, 0x2d, 0xc7, 0x6e, 0xd3, - 0xa7, 0x3c, 0x13, 0x47, 0x79, 0xb5, 0xba, 0xc2, 0xdf, 0xf9, 0x2b, 0xc1, 0x3b, 0x7f, 0xe5, 0x76, - 0xf0, 0xce, 0x5f, 0x2f, 0x3e, 0xfa, 0xd7, 0x52, 0x41, 0x9f, 0x0f, 0x17, 0xd2, 0xa9, 0xc6, 0xdf, - 0xb9, 0x8e, 0x14, 0x25, 0xfe, 0x80, 0xc6, 0x84, 0x43, 0xa7, 0x23, 0x19, 0xb9, 0x8a, 0x6a, 0xe4, - 0x4a, 0x94, 0x7d, 0x94, 0x17, 0x29, 0xfb, 0x3f, 0x14, 0x58, 0x42, 0xf2, 0x2e, 0x46, 0x3b, 0x22, - 0x0e, 0xed, 0x5e, 0xf4, 0x07, 0xc6, 0xe1, 0x8d, 0x32, 0xe5, 0x45, 0x1c, 0x23, 0x52, 0xc2, 0x90, - 0xd2, 0xf0, 0x6a, 0x9c, 0x50, 0xf4, 0xc5, 0xd3, 0x9d, 0x96, 0x7d, 0xcf, 0x39, 0xa8, 0x9b, 0xf1, - 0xdd, 0xc4, 0x87, 0xfc, 0x24, 0x33, 0xb6, 0x5a, 0x42, 0xc2, 0x73, 0xa7, 0x65, 0xfb, 0xd7, 0xae, - 0xde, 0x45, 0xbd, 0x01, 0x8e, 0x3f, 0xf4, 0xf7, 0xa3, 0xdc, 0xb1, 0x0f, 0x0f, 0xba, 0x2c, 0xab, - 0x09, 0x25, 0x2a, 0x25, 0xfe, 0xdb, 0x02, 0x4f, 0xcb, 0x90, 0xdd, 0xc5, 0xbd, 0x91, 0x57, 0xef, - 0x21, 0x49, 0xa4, 0x96, 0xe0, 0x4c, 0x22, 0x7d, 0x92, 0x83, 0xbf, 0x4d, 0xc0, 0xec, 0x26, 0x31, - 0xb7, 0x06, 0xfe, 0x96, 0xd3, 0xb3, 0xba, 0xc3, 0x3d, 0x12, 0xfe, 0x3d, 0x28, 0xb9, 0x9e, 0x65, - 0x77, 0x2d, 0x17, 0xf5, 0x44, 0xbc, 0xa9, 0xab, 0x92, 0x0f, 0x6b, 0x7e, 0x2b, 0x5b, 0x01, 0x4e, - 0x0f, 0x97, 0xd0, 0xec, 0xdf, 0xc3, 0xc4, 0x19, 0x78, 0xdd, 0x80, 0x29, 0xf9, 0xad, 0x7d, 0x1f, - 0x80, 0xf8, 0xc8, 0xc7, 0x54, 0xd5, 0x41, 0x14, 0x4e, 0xdb, 0x7c, 0x3b, 0x00, 0xea, 0xca, 0x1a, - 0x6d, 0x33, 0x1e, 0x13, 0x67, 0x72, 0x63, 0xe2, 0xd1, 0xc7, 0x4f, 0x97, 0x0a, 0x49, 0x71, 0x31, - 0x2a, 0xe3, 0x2d, 0x96, 0x31, 0x48, 0x09, 0xaa, 0x99, 0xb9, 0xcb, 0x46, 0x82, 0x87, 0x63, 0x5e, - 0x66, 0xce, 0xd1, 0x2d, 0xa3, 0xf1, 0x17, 0x35, 0x33, 0x3f, 0xac, 0x7a, 0x89, 0x8a, 0x61, 0x5b, - 0xc9, 0xd9, 0xf7, 0x4d, 0x12, 0xff, 0xe5, 0x92, 0xd8, 0xb4, 0x3c, 0xcf, 0xf1, 0x5e, 0xc8, 0xb5, - 0x2e, 0xc2, 0x84, 0x65, 0x88, 0x98, 0x9c, 0x79, 0xf8, 0x84, 0x65, 0x44, 0xfd, 0x70, 0x32, 0xcf, - 0x0f, 0x8b, 0xb1, 0x1a, 0x42, 0x03, 0xe6, 0x0c, 0x4c, 0xfc, 0x76, 0xf7, 0x3e, 0xb2, 0x6c, 0xca, - 0xf6, 0x14, 0xab, 0x1c, 0x94, 0xe9, 0xe0, 0x06, 0x1d, 0x6b, 0x19, 0xc9, 0x8f, 0x1e, 0x95, 0x55, - 0xe9, 0xa5, 0x8f, 0x55, 0x31, 0xbc, 0x50, 0x25, 0x70, 0x7f, 0xc5, 0x10, 0xe3, 0xb2, 0x98, 0xcb, - 0xa5, 0x1a, 0x51, 0x39, 0x97, 0x23, 0x11, 0xf5, 0x4b, 0x35, 0xe7, 0x08, 0xe7, 0x5f, 0x5a, 0x2d, - 0x68, 0xf4, 0x4e, 0x29, 0xee, 0xc7, 0x9d, 0xa2, 0xea, 0x39, 0x52, 0x3f, 0xfd, 0x9c, 0x67, 0x80, - 0x7c, 0xee, 0x45, 0x9e, 0x43, 0xbb, 0x52, 0x73, 0x4e, 0x7a, 0xb5, 0x07, 0x25, 0xf3, 0xf7, 0x95, - 0xc2, 0x86, 0xe4, 0xf0, 0x53, 0x6e, 0xc9, 0x5c, 0xbf, 0x5b, 0xac, 0x79, 0xa3, 0x5d, 0x83, 0x12, - 0x1a, 0xf8, 0xf7, 0x1d, 0x8f, 0x8a, 0x38, 0x8f, 0xc7, 0x10, 0xaa, 0x5d, 0x87, 0x69, 0xde, 0xfe, - 0x09, 0x33, 0xdc, 0xb8, 0x5e, 0xf8, 0x19, 0xeb, 0x45, 0x2a, 0x04, 0x5d, 0xe0, 0x6f, 0xcc, 0x53, - 0x72, 0xc3, 0x9d, 0x84, 0x4a, 0x54, 0xa2, 0x24, 0xc1, 0xff, 0x2f, 0xc0, 0x31, 0xc6, 0x8b, 0xe9, - 0xa1, 0x03, 0xee, 0x0f, 0x68, 0xe7, 0xe1, 0x78, 0xa4, 0x8e, 0x64, 0x19, 0x4c, 0x1f, 0x73, 0xfa, - 0xbc, 0x5a, 0x24, 0x6a, 0x19, 0x59, 0x25, 0xa7, 0xe2, 0x3e, 0x95, 0x9c, 0xaa, 0x50, 0x89, 0x32, - 0x1e, 0x96, 0x24, 0x26, 0xd8, 0xe4, 0x86, 0xd3, 0x77, 0x69, 0xbc, 0xff, 0x5a, 0xa4, 0xb3, 0x0e, - 0xb5, 0xc4, 0xb2, 0xec, 0x3d, 0xd4, 0xb7, 0x7a, 0xc3, 0x50, 0x54, 0xd5, 0x78, 0x75, 0xf6, 0x6d, - 0x06, 0x69, 0x19, 0xda, 0x1a, 0xcc, 0x9a, 0x3b, 0x66, 0xbb, 0x8f, 0x5c, 0xd7, 0xb2, 0xcd, 0x20, - 0x9b, 0xa8, 0x25, 0x19, 0xce, 0xcd, 0xbb, 0x37, 0x37, 0x39, 0x4c, 0x2f, 0x9b, 0x3b, 0xa6, 0xf8, - 0x3f, 0xf6, 0xa6, 0x6b, 0x40, 0x3d, 0x4d, 0x10, 0x52, 0x5a, 0x3f, 0xe7, 0x65, 0x13, 0x96, 0x85, - 0x7d, 0x1d, 0xa2, 0x8a, 0xd2, 0x58, 0x87, 0x5a, 0xf2, 0xf9, 0x11, 0x0a, 0x79, 0xb9, 0xf6, 0xe5, - 0x51, 0x98, 0x70, 0xbe, 0xa4, 0xf0, 0x77, 0x05, 0x28, 0xb1, 0x4a, 0xb8, 0x7f, 0x1b, 0x99, 0x7b, - 0xa4, 0x4a, 0xcd, 0x66, 0x26, 0x22, 0x59, 0xe6, 0x55, 0x28, 0xfa, 0xc8, 0x24, 0xe2, 0xfd, 0x52, - 0x4f, 0xee, 0x91, 0x70, 0xec, 0x6d, 0x64, 0x12, 0x9d, 0xa1, 0xa3, 0x6c, 0x9c, 0x80, 0xe3, 0x92, - 0x46, 0x49, 0xf9, 0xa3, 0x09, 0x26, 0x5c, 0xf5, 0x4a, 0xdb, 0xe0, 0xfd, 0xa1, 0x97, 0x76, 0xab, - 0x8d, 0xd1, 0x1d, 0x8b, 0x76, 0xb6, 0xa6, 0xe2, 0x9d, 0xad, 0xa4, 0x66, 0xd4, 0x74, 0x62, 0x33, - 0x2a, 0x59, 0xdd, 0x09, 0x12, 0x91, 0x42, 0xfb, 0x7d, 0x81, 0x15, 0x90, 0xb8, 0xcd, 0x1e, 0x22, - 0xd1, 0x45, 0x39, 0x39, 0x07, 0xaf, 0x67, 0x91, 0x19, 0xf0, 0xb3, 0xfa, 0xc7, 0x53, 0x30, 0xb9, - 0x49, 0x4c, 0xed, 0x43, 0x98, 0x1d, 0xf9, 0xf9, 0xc1, 0x6b, 0x29, 0xe5, 0x24, 0x15, 0x54, 0xbd, - 0x38, 0x06, 0x48, 0x26, 0xdb, 0x1f, 0xc2, 0xec, 0x48, 0x2f, 0x3b, 0xed, 0x04, 0x15, 0x94, 0x7a, - 0x42, 0x52, 0x73, 0x5a, 0xeb, 0xc1, 0xb1, 0x58, 0x8d, 0xe1, 0x8d, 0x94, 0x0d, 0xa2, 0xc0, 0x6a, - 0x73, 0x4c, 0xa0, 0xca, 0xcf, 0x48, 0xde, 0x9b, 0xc6, 0x8f, 0x0a, 0x4a, 0xe5, 0x27, 0x29, 0xeb, - 0xd2, 0x1c, 0x38, 0x1e, 0x6f, 0xb4, 0x2f, 0xa7, 0x49, 0x24, 0x8a, 0xac, 0x5e, 0x19, 0x17, 0xa9, - 0xb2, 0x34, 0x52, 0x2c, 0xc8, 0x36, 0x02, 0x0e, 0xca, 0x31, 0x82, 0x48, 0x57, 0xe8, 0x03, 0x00, - 0xa5, 0x27, 0x78, 0x36, 0x65, 0x69, 0x08, 0xa9, 0x9e, 0xcf, 0x85, 0xa8, 0xea, 0x8f, 0x75, 0x1d, - 0xd3, 0xd4, 0x1f, 0x05, 0xa6, 0xaa, 0x3f, 0xad, 0x53, 0x48, 0x39, 0x51, 0xba, 0x84, 0x69, 0x9c, - 0x84, 0x90, 0x54, 0x4e, 0x12, 0x7a, 0x67, 0xd2, 0x55, 0x72, 0xf4, 0xa0, 0x82, 0x72, 0x5c, 0x25, - 0x72, 0x82, 0x07, 0x5a, 0x42, 0x71, 0x28, 0x95, 0xc4, 0x18, 0xb4, 0xfa, 0xe6, 0xd8, 0xd0, 0xb8, - 0xc3, 0xe4, 0x70, 0xa5, 0x82, 0x72, 0x1c, 0x26, 0x72, 0xc2, 0xa8, 0xc3, 0x88, 0x63, 0xc6, 0x70, - 0x18, 0x71, 0xd6, 0x95, 0x71, 0x91, 0xf1, 0x88, 0xa3, 0xbc, 0x08, 0xb3, 0x23, 0x4e, 0x08, 0xcc, - 0x89, 0x38, 0xf1, 0x37, 0xa8, 0x36, 0x80, 0x13, 0x49, 0x37, 0xce, 0x85, 0x31, 0xf6, 0x11, 0xd8, - 0xea, 0xea, 0xf8, 0x58, 0x79, 0xec, 0x27, 0x05, 0x38, 0x95, 0x7e, 0xdf, 0x5d, 0xc9, 0x34, 0x84, - 0x24, 0x1a, 0xae, 0xef, 0x76, 0x85, 0xa4, 0xe4, 0xc7, 0x50, 0x56, 0x9b, 0x8d, 0x8d, 0xcc, 0xc8, - 0xc3, 0x30, 0xd5, 0x0b, 0xf9, 0x18, 0x75, 0x7b, 0xb5, 0xe1, 0xd7, 0xc8, 0x74, 0xa8, 0xec, 0xed, - 0x13, 0x5a, 0x78, 0xd4, 0x3a, 0xe3, 0xed, 0xbb, 0xe5, 0x4c, 0x85, 0x28, 0xc8, 0x54, 0xeb, 0x4c, - 0xed, 0x65, 0x85, 0xd6, 0xa9, 0xf4, 0x48, 0xde, 0xc8, 0xdf, 0x85, 0x01, 0x73, 0xac, 0x33, 0xde, - 0xa9, 0xa0, 0x01, 0x51, 0xe9, 0x52, 0xa4, 0x05, 0xc4, 0x10, 0x92, 0x1a, 0x10, 0xe3, 0x1d, 0x04, - 0xaa, 0x19, 0xb5, 0xf6, 0xd0, 0xc8, 0x0c, 0x0a, 0xd9, 0x9a, 0x49, 0x78, 0xfc, 0xf3, 0x9b, 0x23, - 0xd2, 0xf0, 0x4b, 0xbf, 0x39, 0x46, 0x81, 0x19, 0x37, 0x47, 0x72, 0x3b, 0x4d, 0xfb, 0x11, 0x94, - 0xc2, 0xb2, 0x76, 0x3d, 0x65, 0xb5, 0x44, 0x54, 0x97, 0xf3, 0x10, 0xf1, 0x6b, 0x43, 0xec, 0x9d, - 0x7d, 0x6d, 0x88, 0xed, 0x2f, 0x8e, 0x01, 0x52, 0x4f, 0x18, 0xa9, 0x90, 0xbc, 0x96, 0x69, 0x24, - 0x1c, 0x94, 0x7a, 0x42, 0x52, 0x59, 0x43, 0xeb, 0xc2, 0xdc, 0xe8, 0x3b, 0xef, 0xf5, 0x54, 0x3d, - 0x2a, 0xa8, 0xea, 0xa5, 0x71, 0x50, 0xf2, 0x90, 0x9f, 0xc1, 0x2b, 0xc9, 0x15, 0x82, 0x4b, 0xa9, - 0x77, 0x74, 0x02, 0xba, 0x7a, 0x75, 0x37, 0x68, 0x35, 0x8a, 0x27, 0xbd, 0xb8, 0x2f, 0x64, 0x46, - 0xc5, 0xd1, 0x83, 0x57, 0xc7, 0xc7, 0xaa, 0xc7, 0x26, 0x3d, 0xa3, 0x2f, 0x64, 0xe6, 0x3d, 0xe3, - 0x1d, 0x9b, 0xf1, 0x3c, 0xd6, 0xde, 0x83, 0x69, 0xf1, 0x34, 0x3e, 0x93, 0x9a, 0xc9, 0xd1, 0xe9, - 0xea, 0x37, 0x33, 0xa7, 0x83, 0xfd, 0xd6, 0x5b, 0x8f, 0x9f, 0xd5, 0x0a, 0x4f, 0x9e, 0xd5, 0x0a, - 0x5f, 0x3e, 0xab, 0x15, 0x1e, 0x3d, 0xaf, 0x1d, 0x79, 0xf2, 0xbc, 0x76, 0xe4, 0x1f, 0xcf, 0x6b, - 0x47, 0x3e, 0x68, 0x9a, 0x96, 0x7f, 0x7f, 0xd0, 0x59, 0xe9, 0x3a, 0xfd, 0x66, 0xc7, 0xee, 0x5c, - 0x66, 0x65, 0xc1, 0xa6, 0xf2, 0xcb, 0xeb, 0x87, 0xa3, 0xbf, 0xbd, 0xee, 0x4c, 0xb3, 0xe6, 0xca, - 0xb7, 0xbe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xcb, 0x74, 0x8a, 0xe3, 0x2e, 0x00, 0x00, + // 2575 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5b, 0x4b, 0x6c, 0x1b, 0xc7, + 0x19, 0x36, 0x1f, 0x92, 0xcc, 0x9f, 0x7a, 0x79, 0xad, 0xc4, 0x34, 0x55, 0x53, 0x34, 0x93, 0x3a, + 0xf2, 0x4b, 0x74, 0x14, 0xd7, 0x70, 0x8d, 0xa0, 0xa8, 0xa4, 0x34, 0x2e, 0x91, 0x28, 0x56, 0x56, + 0xb6, 0x0b, 0xa4, 0x28, 0x98, 0x21, 0x77, 0xbc, 0xde, 0x86, 0xdc, 0xdd, 0xee, 0x2e, 0x65, 0x2b, + 0x05, 0x0a, 0xb4, 0x97, 0x9c, 0x0a, 0x18, 0x48, 0x0f, 0x3d, 0x14, 0x05, 0x5a, 0xa0, 0x40, 0x4f, + 0x45, 0x51, 0xe4, 0x5c, 0xf4, 0x12, 0xc0, 0xe8, 0xc9, 0xc8, 0xa1, 0x28, 0x7a, 0x70, 0x03, 0xbb, + 0x40, 0xd1, 0x6b, 0x2f, 0xbd, 0x16, 0xf3, 0xd8, 0xd9, 0xe1, 0x3e, 0x29, 0x5a, 0x8a, 0x74, 0xb2, + 0x39, 0xf3, 0xcd, 0xcc, 0xff, 0x9e, 0x7f, 0xfe, 0x7f, 0x05, 0x8b, 0xba, 0x83, 0xb1, 0x79, 0xcf, + 0xc0, 0x3d, 0xad, 0xe9, 0x7a, 0x96, 0x83, 0x74, 0xdc, 0xf4, 0x1e, 0xae, 0xd8, 0x8e, 0xe5, 0x59, + 0x8a, 0x12, 0x4c, 0xae, 0xf0, 0xc9, 0xea, 0xa9, 0xae, 0xe5, 0xf6, 0x2d, 0xb7, 0xd9, 0x77, 0xf5, + 0xe6, 0xce, 0xeb, 0xe4, 0x1f, 0x06, 0xae, 0x9e, 0x66, 0x13, 0x6d, 0xfa, 0xab, 0xc9, 0x7e, 0xf0, + 0xa9, 0x05, 0xdd, 0xd2, 0x2d, 0x36, 0x4e, 0xfe, 0xc7, 0x47, 0x97, 0x74, 0xcb, 0xd2, 0x7b, 0xb8, + 0x49, 0x7f, 0x75, 0x06, 0xf7, 0x9a, 0x9e, 0xd1, 0xc7, 0xae, 0x87, 0xfa, 0x36, 0x07, 0xd4, 0x25, + 0xda, 0xba, 0x56, 0xbf, 0x6f, 0x99, 0x4d, 0x64, 0xdb, 0x8e, 0xb5, 0x83, 0x7a, 0x62, 0x8b, 0x08, + 0xe2, 0x81, 0x83, 0x6c, 0x1b, 0x3b, 0x1c, 0xd0, 0x90, 0x00, 0x36, 0x76, 0xfa, 0x86, 0xeb, 0x1a, + 0x96, 0xc9, 0xb1, 0x31, 0x9b, 0xf8, 0x22, 0xc8, 0x04, 0xd8, 0xc8, 0x41, 0x7d, 0x9f, 0xbf, 0x5a, + 0x9c, 0x10, 0x77, 0x6d, 0xcc, 0xe7, 0x1b, 0x7f, 0x2e, 0xc0, 0xdc, 0xa6, 0xab, 0x6f, 0x38, 0x18, + 0x79, 0x78, 0x7d, 0xd0, 0xfd, 0x08, 0x7b, 0xca, 0x2a, 0x4c, 0x75, 0xc9, 0x6f, 0xcb, 0xa9, 0xe4, + 0xea, 0xb9, 0xe5, 0xd2, 0x7a, 0xe5, 0x8b, 0xcf, 0x2e, 0x2f, 0x70, 0xb1, 0xad, 0x69, 0x9a, 0x83, + 0x5d, 0x77, 0xdb, 0x73, 0x0c, 0x53, 0x57, 0x7d, 0xa0, 0xb2, 0x04, 0xe5, 0x0e, 0x5d, 0xdd, 0x36, + 0x51, 0x1f, 0x57, 0xf2, 0x64, 0x9d, 0x0a, 0x6c, 0xe8, 0x3d, 0xd4, 0xc7, 0xca, 0x3a, 0xc0, 0x8e, + 0xe1, 0x1a, 0x1d, 0xa3, 0x67, 0x78, 0xbb, 0x95, 0x42, 0x3d, 0xb7, 0x3c, 0xbb, 0xda, 0x58, 0x89, + 0x6a, 0x71, 0xe5, 0xae, 0x40, 0xdd, 0xde, 0xb5, 0xb1, 0x2a, 0xad, 0x52, 0xd6, 0x60, 0xce, 0x46, + 0xbb, 0x7d, 0x6c, 0x7a, 0x6d, 0xc4, 0xc8, 0xa8, 0x14, 0x33, 0x08, 0x9c, 0xe5, 0x0b, 0xf8, 0xa8, + 0xf2, 0x36, 0x28, 0xb6, 0x63, 0xf4, 0x91, 0xb3, 0xdb, 0x76, 0x6d, 0xb1, 0xcb, 0x44, 0xc6, 0x2e, + 0xf3, 0x7c, 0xcd, 0xb6, 0xed, 0xef, 0xf3, 0x0e, 0x9c, 0x94, 0xf7, 0xe1, 0xba, 0xaf, 0x4c, 0xd6, + 0x73, 0xcb, 0xe5, 0xd5, 0x45, 0x99, 0x2f, 0xae, 0xaf, 0x35, 0x0e, 0x51, 0x4f, 0x04, 0x7b, 0xf1, + 0x21, 0xe5, 0x12, 0x28, 0xdd, 0xfb, 0xc8, 0xd1, 0xb1, 0xd6, 0x76, 0x30, 0xd2, 0xda, 0x3f, 0x1a, + 0x58, 0x1e, 0xaa, 0x4c, 0xd5, 0x73, 0xcb, 0x45, 0x75, 0x9e, 0xcf, 0xa8, 0x18, 0x69, 0xef, 0x93, + 0xf1, 0x1b, 0xd3, 0x3f, 0xfb, 0xf7, 0x1f, 0x2f, 0xf8, 0x82, 0x6f, 0x6c, 0xc3, 0xa9, 0x90, 0xfe, + 0x54, 0xec, 0xda, 0x96, 0xe9, 0x62, 0xe5, 0x3a, 0x94, 0xb8, 0x4e, 0x0c, 0x8d, 0x6b, 0x72, 0xf1, + 0xf1, 0xd3, 0xa5, 0x63, 0xff, 0x78, 0xba, 0x54, 0xbc, 0x63, 0x98, 0xde, 0x17, 0x9f, 0x5d, 0x2e, + 0x73, 0x76, 0xc9, 0x4f, 0xf5, 0x38, 0x43, 0xb7, 0xb4, 0xc6, 0x03, 0x6a, 0x14, 0x6f, 0xe1, 0x1e, + 0x16, 0x46, 0x71, 0x15, 0x8e, 0x5b, 0x36, 0x76, 0x46, 0xb2, 0x0a, 0x81, 0xcc, 0x34, 0x8b, 0x1b, + 0x33, 0x84, 0x19, 0x81, 0x6f, 0x9c, 0xa6, 0xdc, 0xc8, 0x07, 0xfb, 0xdc, 0x34, 0x7e, 0x91, 0x83, + 0x05, 0x32, 0x67, 0xb8, 0x5d, 0xcb, 0xf4, 0x0c, 0x73, 0x70, 0xb0, 0x94, 0x29, 0x2f, 0xc3, 0xa4, + 0x83, 0x91, 0x6b, 0x99, 0xd4, 0x58, 0x4b, 0x2a, 0xff, 0x15, 0xa6, 0xb8, 0x06, 0x5f, 0x8b, 0xa3, + 0x4a, 0x90, 0xfd, 0x2f, 0xd9, 0xc1, 0x6e, 0x75, 0x7e, 0x88, 0xbb, 0x07, 0xe4, 0x60, 0x4b, 0x50, + 0xb6, 0xe8, 0xf6, 0x0c, 0xc0, 0x88, 0x06, 0x36, 0x44, 0x01, 0x67, 0x61, 0xda, 0x46, 0xbb, 0x3d, + 0x0b, 0x69, 0x6d, 0xd7, 0xf8, 0x18, 0x53, 0xd7, 0x29, 0xaa, 0x65, 0x3e, 0xb6, 0x6d, 0x7c, 0x1c, + 0x76, 0xd2, 0x89, 0xb1, 0x9c, 0xf4, 0x2c, 0x4c, 0x13, 0x51, 0x10, 0x27, 0x25, 0x81, 0x86, 0xba, + 0x44, 0x49, 0x2d, 0xf3, 0x31, 0x02, 0x4f, 0x72, 0x9e, 0xa9, 0xb1, 0x9c, 0xe7, 0x3c, 0xcc, 0xe3, + 0x87, 0x36, 0xe1, 0xbb, 0x7b, 0x1f, 0x77, 0x3f, 0x72, 0x07, 0x7d, 0xb7, 0x72, 0xbc, 0x5e, 0x58, + 0x9e, 0x56, 0xe7, 0xd8, 0xf8, 0x86, 0x3f, 0xac, 0xbc, 0x03, 0x73, 0x0e, 0xd6, 0x06, 0xa6, 0x86, + 0xcc, 0xee, 0x2e, 0xa3, 0xae, 0x94, 0xcc, 0xa3, 0x2a, 0xa0, 0x94, 0xc7, 0x59, 0x67, 0xe8, 0x77, + 0x8a, 0x1b, 0x32, 0x2d, 0xcb, 0x6e, 0xc8, 0x15, 0x33, 0xa2, 0x1b, 0x32, 0x74, 0x4b, 0x6b, 0x7c, + 0x9a, 0x87, 0x99, 0x4d, 0x57, 0xdf, 0xc6, 0xa8, 0xc7, 0x2d, 0xe7, 0x80, 0x6c, 0x3d, 0xd3, 0x76, + 0xbe, 0x01, 0xa7, 0xf4, 0x9e, 0xd5, 0x41, 0xbd, 0xf6, 0x8e, 0xe1, 0x78, 0x03, 0xd4, 0x6b, 0xeb, + 0x8e, 0x35, 0xb0, 0x09, 0x47, 0xc4, 0x8c, 0x66, 0xd4, 0x05, 0x36, 0x7d, 0x97, 0xcd, 0xde, 0x24, + 0x93, 0x2d, 0x4d, 0x79, 0x0b, 0x96, 0x5c, 0xdc, 0xb5, 0x4c, 0x8d, 0xab, 0xba, 0xd3, 0x73, 0xdb, + 0x48, 0xd7, 0xdb, 0xae, 0xa1, 0x9b, 0xc8, 0x1b, 0x38, 0x98, 0x85, 0xde, 0x69, 0x75, 0x51, 0xc0, + 0xb6, 0xed, 0xf5, 0x9e, 0xbb, 0xa6, 0xeb, 0xdb, 0x02, 0x12, 0xf6, 0xb8, 0x53, 0xf0, 0xd2, 0x90, + 0x50, 0x84, 0xab, 0xfd, 0x2a, 0x07, 0x27, 0x37, 0x5d, 0x5d, 0xc5, 0x64, 0xf4, 0xf0, 0x85, 0x16, + 0xa6, 0xfb, 0x0c, 0x2c, 0xc6, 0x50, 0x27, 0xa8, 0xff, 0x03, 0x53, 0xf6, 0x86, 0x65, 0xef, 0x72, + 0xba, 0xab, 0x61, 0xba, 0x25, 0xea, 0xce, 0xc1, 0x9c, 0xeb, 0x74, 0xdb, 0x51, 0x0a, 0x67, 0x5c, + 0xa7, 0xbb, 0x1e, 0x10, 0x79, 0x0e, 0xe6, 0x34, 0xd7, 0x1b, 0xc2, 0x31, 0x42, 0x67, 0x34, 0xd7, + 0x1b, 0xc6, 0x91, 0xfd, 0x64, 0x86, 0x8a, 0x62, 0xbf, 0x5b, 0x81, 0x21, 0xf0, 0xfd, 0x64, 0xdc, + 0x84, 0xd8, 0x4f, 0xc2, 0xa9, 0x70, 0x8a, 0xe0, 0xc6, 0xbc, 0x23, 0x17, 0x34, 0xd7, 0xdb, 0x0a, + 0x7b, 0x7a, 0x58, 0x9e, 0xef, 0x53, 0x3b, 0x08, 0xe4, 0xb5, 0x0f, 0x0e, 0xf7, 0xcb, 0x9c, 0x74, + 0xf1, 0x1d, 0x2d, 0xeb, 0x91, 0x6f, 0xc6, 0x90, 0xe5, 0x3c, 0x89, 0xdc, 0x8c, 0x07, 0x4b, 0xfa, + 0x0d, 0x00, 0x21, 0x5f, 0xb7, 0x52, 0xa8, 0x17, 0xb2, 0x04, 0x5c, 0xf2, 0x05, 0xec, 0x4a, 0xb7, + 0x6a, 0x71, 0x4f, 0xb7, 0x6a, 0x88, 0xe5, 0x4f, 0x72, 0x30, 0x2b, 0xe2, 0x2d, 0x8d, 0x36, 0x63, + 0x5d, 0xaa, 0x67, 0x00, 0x58, 0x1c, 0x93, 0x38, 0x2d, 0xd1, 0x11, 0xca, 0xe8, 0x02, 0x4c, 0xe0, + 0x87, 0x9e, 0x83, 0xb8, 0x76, 0xd8, 0x8f, 0x50, 0xe0, 0xdf, 0x82, 0x97, 0x87, 0x09, 0x11, 0x66, + 0x78, 0x0d, 0x8e, 0x8b, 0x20, 0x39, 0x82, 0x15, 0x4e, 0xe9, 0x2c, 0x68, 0x36, 0x3c, 0xca, 0x1a, + 0xd3, 0x34, 0x63, 0x6d, 0x3c, 0x3d, 0xa6, 0x33, 0x17, 0x96, 0x78, 0x85, 0xf2, 0x21, 0x9d, 0x2a, + 0x64, 0xfd, 0x79, 0x9e, 0x9a, 0xd7, 0x1d, 0x5b, 0xf3, 0x59, 0xdc, 0xc4, 0xfd, 0x0e, 0x76, 0xc6, + 0x24, 0xeb, 0x9b, 0x50, 0x66, 0x64, 0x59, 0x0f, 0x4c, 0xec, 0x30, 0xba, 0x52, 0x16, 0x32, 0x1e, + 0x6e, 0x11, 0x6c, 0x88, 0xa3, 0x42, 0x58, 0x5d, 0xdf, 0x85, 0xd9, 0x3e, 0xa5, 0xcc, 0x6d, 0x7b, + 0x16, 0xc9, 0xed, 0x2b, 0xc5, 0x7a, 0x61, 0xb9, 0x1c, 0x7f, 0xbb, 0x6f, 0xba, 0xba, 0xc4, 0x8b, + 0x3a, 0xcd, 0x57, 0xde, 0xb6, 0xd6, 0x34, 0x72, 0x6f, 0x9d, 0x90, 0x76, 0xd2, 0xa8, 0x50, 0x2a, + 0x13, 0xd4, 0xd0, 0x93, 0x29, 0x9d, 0x13, 0x5b, 0x30, 0x29, 0xc6, 0xdb, 0x74, 0x44, 0x8c, 0x42, + 0xce, 0xff, 0xf5, 0xaf, 0x2f, 0x13, 0x3f, 0x38, 0xca, 0x62, 0x7e, 0x13, 0xa6, 0x38, 0xa7, 0x7b, + 0x90, 0xaf, 0xbf, 0x24, 0xe9, 0x52, 0x1c, 0xe6, 0x59, 0xc8, 0xe4, 0xe7, 0xcc, 0xcf, 0x65, 0x71, + 0x5c, 0x81, 0x49, 0xb6, 0x57, 0xa6, 0x30, 0x38, 0x4e, 0x69, 0x01, 0xc9, 0x04, 0x0d, 0x07, 0x79, + 0x86, 0x65, 0xb6, 0xc9, 0x53, 0x9e, 0x8a, 0xa3, 0xbc, 0x5a, 0x5d, 0x61, 0xef, 0xfc, 0x15, 0xff, + 0x9d, 0xbf, 0x72, 0xdb, 0x7f, 0xe7, 0xaf, 0x17, 0x1f, 0xfd, 0x73, 0x29, 0xa7, 0xce, 0x06, 0x0b, + 0xc9, 0x54, 0xe3, 0xaf, 0x4c, 0x47, 0x92, 0x12, 0xbf, 0x43, 0x62, 0xc2, 0x91, 0xd3, 0x91, 0x88, + 0x5c, 0x45, 0x39, 0x72, 0xc5, 0xca, 0x3e, 0xcc, 0x8b, 0x90, 0xfd, 0xef, 0x73, 0x34, 0x21, 0x79, + 0x17, 0xa3, 0x1d, 0x1e, 0x87, 0xf6, 0x2e, 0xfa, 0x03, 0xe3, 0xf0, 0x46, 0x99, 0xf0, 0xc2, 0x8f, + 0xe1, 0x29, 0x61, 0x40, 0x69, 0x70, 0x35, 0xe6, 0x25, 0x7d, 0xb1, 0x74, 0xa7, 0x65, 0xde, 0xb3, + 0x0e, 0xea, 0x66, 0x7c, 0x37, 0xf6, 0x21, 0x5f, 0xa0, 0xc6, 0x56, 0x8b, 0x49, 0x78, 0xee, 0xb4, + 0x4c, 0xef, 0xda, 0xd5, 0xbb, 0xa8, 0x37, 0xc0, 0xd1, 0x87, 0xfe, 0x7e, 0x94, 0x3b, 0xf6, 0xe1, + 0x41, 0x97, 0x66, 0x35, 0x81, 0x44, 0x85, 0xc4, 0x7f, 0x9d, 0x63, 0x69, 0x19, 0x32, 0xbb, 0xb8, + 0x37, 0xf4, 0xea, 0x3d, 0x22, 0x89, 0xd4, 0x12, 0x9c, 0x89, 0xa5, 0x4f, 0x70, 0xf0, 0x97, 0x3c, + 0x4c, 0x6f, 0xba, 0xfa, 0xd6, 0xc0, 0xdb, 0xb2, 0x7a, 0x46, 0x77, 0x77, 0x4c, 0xc2, 0xbf, 0x05, + 0x25, 0xdb, 0x31, 0xcc, 0xae, 0x61, 0xa3, 0x1e, 0x8f, 0x37, 0x75, 0x59, 0xf2, 0x41, 0xcd, 0x6f, + 0x65, 0xcb, 0xc7, 0xa9, 0xc1, 0x12, 0x92, 0xfd, 0x3b, 0xd8, 0xb5, 0x06, 0x4e, 0xd7, 0x67, 0x4a, + 0xfc, 0x56, 0xbe, 0x0d, 0xe0, 0x7a, 0xc8, 0xc3, 0x44, 0xd5, 0x7e, 0x14, 0x4e, 0xda, 0x7c, 0xdb, + 0x07, 0xaa, 0xd2, 0x1a, 0x65, 0x33, 0x1a, 0x13, 0xa7, 0x32, 0x63, 0xe2, 0xf1, 0xc7, 0x4f, 0x97, + 0x72, 0x71, 0x71, 0x31, 0x2c, 0xe3, 0x2d, 0x9a, 0x31, 0x08, 0x09, 0xca, 0x99, 0xb9, 0x4d, 0x47, + 0xfc, 0x87, 0x63, 0x56, 0x66, 0xce, 0xd0, 0x2d, 0xad, 0xf1, 0x27, 0x39, 0x33, 0x3f, 0xaa, 0x7a, + 0x09, 0x8b, 0x61, 0x5b, 0xca, 0xd9, 0xf7, 0x4d, 0x12, 0xff, 0x61, 0x92, 0xd8, 0x34, 0x1c, 0xc7, + 0x72, 0x5e, 0xc8, 0xb5, 0x2e, 0x42, 0xde, 0xd0, 0x78, 0x4c, 0x4e, 0x3d, 0x3c, 0x6f, 0x68, 0x61, + 0x3f, 0x2c, 0x64, 0xf9, 0x61, 0x31, 0x52, 0x43, 0x68, 0xc0, 0x8c, 0x86, 0x5d, 0xaf, 0xdd, 0xbd, + 0x8f, 0x0c, 0x93, 0xb0, 0x3d, 0x41, 0x2b, 0x07, 0x65, 0x32, 0xb8, 0x41, 0xc6, 0x5a, 0x5a, 0xfc, + 0xa3, 0x47, 0x66, 0x55, 0x78, 0xe9, 0x63, 0x59, 0x0c, 0x2f, 0x54, 0x09, 0xdc, 0x5f, 0x31, 0x44, + 0xb8, 0x2c, 0x66, 0x72, 0x29, 0x47, 0x54, 0xc6, 0xe5, 0x50, 0x44, 0xfd, 0x52, 0xce, 0x39, 0x82, + 0xf9, 0x43, 0xab, 0x05, 0x0d, 0xdf, 0x29, 0xc5, 0xfd, 0xb8, 0x53, 0x64, 0x3d, 0x87, 0xea, 0xa7, + 0x9f, 0xb3, 0x0c, 0x90, 0xcd, 0xbd, 0xc8, 0x73, 0x68, 0x4f, 0x6a, 0xce, 0x48, 0xaf, 0xc6, 0x50, + 0x32, 0x7b, 0x5f, 0x49, 0x6c, 0x08, 0x0e, 0x3f, 0x65, 0x96, 0xcc, 0xf4, 0xbb, 0x45, 0x9b, 0x37, + 0xca, 0x35, 0x28, 0xa1, 0x81, 0x77, 0xdf, 0x72, 0x88, 0x88, 0xb3, 0x78, 0x0c, 0xa0, 0xca, 0x75, + 0x98, 0x64, 0xed, 0x9f, 0x20, 0xc3, 0x8d, 0xea, 0x85, 0x9d, 0xb1, 0x5e, 0x24, 0x42, 0x50, 0x39, + 0xfe, 0xc6, 0x2c, 0x21, 0x37, 0xd8, 0x89, 0xab, 0x44, 0x26, 0x4a, 0x10, 0xfc, 0xbf, 0x1c, 0xcc, + 0x53, 0x5e, 0x74, 0x07, 0x1d, 0x70, 0x7f, 0x40, 0x39, 0x0f, 0x27, 0x42, 0x75, 0x24, 0x43, 0xa3, + 0xfa, 0x98, 0x51, 0x67, 0xe5, 0x22, 0x51, 0x4b, 0x4b, 0x2b, 0x39, 0x15, 0xf7, 0xa9, 0xe4, 0x54, + 0x85, 0x4a, 0x98, 0xf1, 0xa0, 0x24, 0x91, 0xa7, 0x93, 0x1b, 0x56, 0xdf, 0x26, 0xf1, 0xfe, 0x2b, + 0x91, 0xce, 0x3a, 0xd4, 0x62, 0xcb, 0xb2, 0xf7, 0x50, 0xdf, 0xe8, 0xed, 0x06, 0xa2, 0xaa, 0x46, + 0xab, 0xb3, 0x6f, 0x53, 0x48, 0x4b, 0x53, 0xd6, 0x60, 0x5a, 0xdf, 0xd1, 0xdb, 0x7d, 0x64, 0xdb, + 0x86, 0xa9, 0xfb, 0xd9, 0x44, 0x2d, 0xce, 0x70, 0x6e, 0xde, 0xbd, 0xb9, 0xc9, 0x60, 0x6a, 0x59, + 0xdf, 0xd1, 0xf9, 0xff, 0x23, 0x6f, 0xba, 0x06, 0xd4, 0x93, 0x04, 0x21, 0xa4, 0xf5, 0x13, 0x56, + 0x36, 0xa1, 0x59, 0xd8, 0x57, 0x21, 0xaa, 0x30, 0x8d, 0x75, 0xa8, 0xc5, 0x9f, 0x1f, 0xa2, 0x90, + 0x95, 0x6b, 0x0f, 0x8f, 0xc2, 0x98, 0xf3, 0x05, 0x85, 0xbf, 0xcd, 0x41, 0x89, 0x56, 0xc2, 0xbd, + 0xdb, 0x48, 0x1f, 0x93, 0x2a, 0x39, 0x9b, 0xc9, 0x87, 0xb2, 0xcc, 0xab, 0x50, 0xf4, 0x90, 0xee, + 0xf2, 0xf7, 0x4b, 0x3d, 0xbe, 0x47, 0xc2, 0xb0, 0xb7, 0x91, 0xee, 0xaa, 0x14, 0x1d, 0x66, 0xe3, + 0x24, 0x9c, 0x10, 0x34, 0x0a, 0xca, 0x1f, 0xe5, 0xa9, 0x70, 0xe5, 0x2b, 0x6d, 0x83, 0xf5, 0x87, + 0x0e, 0xed, 0x56, 0x1b, 0xa1, 0x3b, 0x16, 0xee, 0x6c, 0x4d, 0x44, 0x3b, 0x5b, 0x71, 0xcd, 0xa8, + 0xc9, 0xd8, 0x66, 0x54, 0xbc, 0xba, 0x63, 0x24, 0x22, 0x84, 0xf6, 0xbb, 0x1c, 0x2d, 0x20, 0x31, + 0x9b, 0x3d, 0x42, 0xa2, 0x0b, 0x73, 0x72, 0x0e, 0x5e, 0x4d, 0x23, 0x53, 0xf0, 0xf3, 0xb7, 0x82, + 0x48, 0x8f, 0x75, 0xe4, 0xe1, 0x7d, 0x78, 0x2b, 0x4a, 0x25, 0xe0, 0xfc, 0x98, 0x7d, 0xd5, 0x31, + 0xf2, 0xda, 0xb0, 0xe5, 0x4c, 0x64, 0x5b, 0x4e, 0x4c, 0x4f, 0x74, 0x38, 0xab, 0x9a, 0x1a, 0xab, + 0xf5, 0x7a, 0x58, 0xad, 0xd0, 0x90, 0x01, 0x7c, 0x1f, 0x96, 0x12, 0xf4, 0xba, 0x0f, 0x2d, 0x9a, + 0x9f, 0xe6, 0xa5, 0xc4, 0xc4, 0x3f, 0x43, 0x5b, 0xd3, 0x0f, 0xd0, 0x01, 0xde, 0x84, 0x19, 0x44, + 0xf6, 0x17, 0x65, 0xe5, 0x42, 0x46, 0x25, 0xb8, 0xcc, 0xe0, 0xac, 0x96, 0xbc, 0x0e, 0xf3, 0xc1, + 0x6a, 0x07, 0xf7, 0xad, 0x1d, 0x4c, 0xef, 0xd8, 0xd4, 0x32, 0x8e, 0xbf, 0x81, 0x4a, 0xf1, 0x61, + 0x01, 0x9f, 0xa5, 0x02, 0x8e, 0x13, 0x81, 0x2f, 0xe0, 0xd5, 0xdf, 0x2c, 0x42, 0x61, 0xd3, 0xd5, + 0x95, 0x0f, 0x61, 0x7a, 0xe8, 0xdb, 0x9e, 0x57, 0x12, 0x6a, 0xb5, 0x32, 0xa8, 0x7a, 0x71, 0x04, + 0x90, 0x50, 0xe5, 0x87, 0x30, 0x3d, 0xf4, 0xa1, 0x48, 0xd2, 0x09, 0x32, 0x28, 0xf1, 0x84, 0xb8, + 0x2f, 0x3f, 0x94, 0x1e, 0xcc, 0x47, 0x0a, 0x78, 0xaf, 0x25, 0x6c, 0x10, 0x06, 0x56, 0x9b, 0x23, + 0x02, 0x65, 0x7e, 0x86, 0x1e, 0x95, 0x49, 0xfc, 0xc8, 0xa0, 0x44, 0x7e, 0xe2, 0x9e, 0x34, 0x8a, + 0x05, 0x27, 0xa2, 0x5f, 0xb1, 0x2c, 0x27, 0x49, 0x24, 0x8c, 0xac, 0x5e, 0x19, 0x15, 0x29, 0x0e, + 0x7c, 0x08, 0x0b, 0xb1, 0xfe, 0x72, 0x31, 0x55, 0x36, 0xc3, 0xe0, 0xea, 0x1b, 0x7b, 0x00, 0xcb, + 0xc2, 0x1c, 0x8a, 0xeb, 0xe9, 0xe6, 0xc7, 0x40, 0x19, 0xe6, 0x17, 0x8a, 0x24, 0x1f, 0x00, 0x48, + 0xad, 0xfe, 0xb3, 0x09, 0x4b, 0x03, 0x48, 0xf5, 0x7c, 0x26, 0x44, 0x36, 0xbc, 0xc8, 0xc7, 0x04, + 0x49, 0x86, 0x17, 0x06, 0x26, 0x1a, 0x5e, 0xd2, 0x07, 0x00, 0x84, 0x13, 0xa9, 0xf9, 0x9f, 0xc4, + 0x49, 0x00, 0x49, 0xe4, 0x24, 0xa6, 0x25, 0x2e, 0x9c, 0x34, 0x43, 0x0f, 0x32, 0x28, 0xc3, 0x49, + 0x43, 0x27, 0x38, 0xa0, 0xc4, 0xd4, 0x7c, 0x13, 0x49, 0x8c, 0x40, 0xab, 0xaf, 0x8f, 0x0c, 0x8d, + 0xba, 0x6a, 0x06, 0x57, 0x32, 0x28, 0xc3, 0x55, 0x43, 0x27, 0x0c, 0xbb, 0x2a, 0x3f, 0x66, 0x04, + 0x57, 0xe5, 0x67, 0x5d, 0x19, 0x15, 0x19, 0x8d, 0x75, 0x52, 0xa1, 0x27, 0x3d, 0xd6, 0x05, 0xc0, + 0x8c, 0x58, 0x17, 0x2d, 0x2d, 0x29, 0x03, 0x38, 0x19, 0x97, 0x48, 0x5e, 0x18, 0x61, 0x1f, 0x8e, + 0xad, 0xae, 0x8e, 0x8e, 0x15, 0xc7, 0x7e, 0x92, 0x83, 0xd3, 0xc9, 0x69, 0xec, 0x95, 0x54, 0x43, + 0x88, 0xa3, 0xe1, 0xfa, 0x5e, 0x57, 0xc8, 0x91, 0x31, 0x36, 0xff, 0x4c, 0x33, 0xfd, 0x30, 0x38, + 0x31, 0x32, 0xa6, 0x66, 0x40, 0x3f, 0x80, 0xb2, 0xfc, 0xf5, 0x42, 0x23, 0x35, 0xe6, 0x51, 0x4c, + 0xf5, 0x42, 0x36, 0x46, 0xde, 0x5e, 0xfe, 0x82, 0xa0, 0x91, 0xea, 0xca, 0xe9, 0xdb, 0xc7, 0x7c, + 0x13, 0x40, 0xfc, 0x22, 0xfa, 0x3d, 0xc0, 0x72, 0xaa, 0x29, 0x48, 0xc8, 0x44, 0xbf, 0x48, 0x6c, + 0x8e, 0x07, 0x7e, 0x21, 0x35, 0x5d, 0x5f, 0xcb, 0xde, 0x85, 0x02, 0x33, 0xfc, 0x22, 0xda, 0xfa, + 0x24, 0xa1, 0x58, 0x6a, 0x7b, 0x26, 0x85, 0xe2, 0x00, 0x92, 0x18, 0x8a, 0xa3, 0x2d, 0x49, 0xa2, + 0x19, 0xb9, 0x98, 0xd9, 0x48, 0x0d, 0x47, 0xe9, 0x9a, 0x89, 0xa9, 0x26, 0xb2, 0x3b, 0x2b, 0xf4, + 0x05, 0x41, 0xf2, 0x9d, 0x35, 0x0c, 0x4c, 0xb9, 0xb3, 0xe2, 0xfb, 0xf3, 0xca, 0xf7, 0xa0, 0x14, + 0xf4, 0xc9, 0xea, 0x09, 0xab, 0x05, 0xa2, 0xba, 0x9c, 0x85, 0x88, 0x5e, 0x58, 0x7c, 0xef, 0xf4, + 0x0b, 0x8b, 0x6f, 0x7f, 0x71, 0x04, 0x90, 0x7c, 0xc2, 0x50, 0xc9, 0xf5, 0x95, 0x54, 0x23, 0x61, + 0xa0, 0xea, 0xc5, 0x11, 0x40, 0xe2, 0x84, 0x2e, 0xcc, 0x0c, 0x17, 0x8e, 0x5e, 0x4d, 0xd4, 0xa3, + 0x84, 0xaa, 0x5e, 0x1a, 0x05, 0x25, 0x0e, 0xf9, 0x31, 0xbc, 0x14, 0x5f, 0x72, 0xbc, 0x94, 0x98, + 0x1d, 0xc4, 0xa0, 0xab, 0x57, 0xf7, 0x82, 0x96, 0xef, 0x8f, 0xb8, 0x12, 0xde, 0x85, 0xd4, 0x78, + 0x3c, 0x7c, 0xf0, 0xea, 0xe8, 0x58, 0xf9, 0xd8, 0xb8, 0xba, 0xdc, 0x85, 0xd4, 0x8c, 0x6b, 0xb4, + 0x63, 0x53, 0xea, 0x6d, 0xca, 0x7b, 0x30, 0xc9, 0x6b, 0x6d, 0x67, 0x12, 0x73, 0x48, 0x32, 0x5d, + 0xfd, 0x7a, 0xea, 0xb4, 0xbf, 0xdf, 0x7a, 0xeb, 0xf1, 0xb3, 0x5a, 0xee, 0xc9, 0xb3, 0x5a, 0xee, + 0xcb, 0x67, 0xb5, 0xdc, 0xa3, 0xe7, 0xb5, 0x63, 0x4f, 0x9e, 0xd7, 0x8e, 0xfd, 0xfd, 0x79, 0xed, + 0xd8, 0x07, 0x4d, 0xdd, 0xf0, 0xee, 0x0f, 0x3a, 0x2b, 0x5d, 0xab, 0xdf, 0xec, 0x98, 0x9d, 0xcb, + 0xb4, 0xcf, 0xd0, 0x94, 0xfe, 0x94, 0xe3, 0xe1, 0xf0, 0x1f, 0x73, 0x74, 0x26, 0x69, 0xb7, 0xf6, + 0x8d, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x08, 0xdf, 0xf6, 0x87, 0x34, 0x33, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3656,6 +3932,7 @@ type MsgClient interface { UpdateBucketInfo(ctx context.Context, in *MsgUpdateBucketInfo, opts ...grpc.CallOption) (*MsgUpdateBucketInfoResponse, error) MirrorBucket(ctx context.Context, in *MsgMirrorBucket, opts ...grpc.CallOption) (*MsgMirrorBucketResponse, error) DiscontinueBucket(ctx context.Context, in *MsgDiscontinueBucket, opts ...grpc.CallOption) (*MsgDiscontinueBucketResponse, error) + UpdateDelegatedAgent(ctx context.Context, in *MsgUpdateDelegatedAgent, opts ...grpc.CallOption) (*MsgUpdateDelegatedAgentResponse, error) // basic operation of object CreateObject(ctx context.Context, in *MsgCreateObject, opts ...grpc.CallOption) (*MsgCreateObjectResponse, error) SealObject(ctx context.Context, in *MsgSealObject, opts ...grpc.CallOption) (*MsgSealObjectResponse, error) @@ -3668,6 +3945,7 @@ type MsgClient interface { UpdateObjectInfo(ctx context.Context, in *MsgUpdateObjectInfo, opts ...grpc.CallOption) (*MsgUpdateObjectInfoResponse, error) UpdateObjectContent(ctx context.Context, in *MsgUpdateObjectContent, opts ...grpc.CallOption) (*MsgUpdateObjectContentResponse, error) CancelUpdateObjectContent(ctx context.Context, in *MsgCancelUpdateObjectContent, opts ...grpc.CallOption) (*MsgCancelUpdateObjectContentResponse, error) + DelegateCreateObject(ctx context.Context, in *MsgDelegateCreateObject, opts ...grpc.CallOption) (*MsgDelegateCreateObjectResponse, error) // basic operation of group CreateGroup(ctx context.Context, in *MsgCreateGroup, opts ...grpc.CallOption) (*MsgCreateGroupResponse, error) DeleteGroup(ctx context.Context, in *MsgDeleteGroup, opts ...grpc.CallOption) (*MsgDeleteGroupResponse, error) @@ -3742,6 +4020,15 @@ func (c *msgClient) DiscontinueBucket(ctx context.Context, in *MsgDiscontinueBuc return out, nil } +func (c *msgClient) UpdateDelegatedAgent(ctx context.Context, in *MsgUpdateDelegatedAgent, opts ...grpc.CallOption) (*MsgUpdateDelegatedAgentResponse, error) { + out := new(MsgUpdateDelegatedAgentResponse) + err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/UpdateDelegatedAgent", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) CreateObject(ctx context.Context, in *MsgCreateObject, opts ...grpc.CallOption) (*MsgCreateObjectResponse, error) { out := new(MsgCreateObjectResponse) err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/CreateObject", in, out, opts...) @@ -3841,6 +4128,15 @@ func (c *msgClient) CancelUpdateObjectContent(ctx context.Context, in *MsgCancel return out, nil } +func (c *msgClient) DelegateCreateObject(ctx context.Context, in *MsgDelegateCreateObject, opts ...grpc.CallOption) (*MsgDelegateCreateObjectResponse, error) { + out := new(MsgDelegateCreateObjectResponse) + err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/DelegateCreateObject", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) CreateGroup(ctx context.Context, in *MsgCreateGroup, opts ...grpc.CallOption) (*MsgCreateGroupResponse, error) { out := new(MsgCreateGroupResponse) err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/CreateGroup", in, out, opts...) @@ -3984,6 +4280,7 @@ type MsgServer interface { UpdateBucketInfo(context.Context, *MsgUpdateBucketInfo) (*MsgUpdateBucketInfoResponse, error) MirrorBucket(context.Context, *MsgMirrorBucket) (*MsgMirrorBucketResponse, error) DiscontinueBucket(context.Context, *MsgDiscontinueBucket) (*MsgDiscontinueBucketResponse, error) + UpdateDelegatedAgent(context.Context, *MsgUpdateDelegatedAgent) (*MsgUpdateDelegatedAgentResponse, error) // basic operation of object CreateObject(context.Context, *MsgCreateObject) (*MsgCreateObjectResponse, error) SealObject(context.Context, *MsgSealObject) (*MsgSealObjectResponse, error) @@ -3996,6 +4293,7 @@ type MsgServer interface { UpdateObjectInfo(context.Context, *MsgUpdateObjectInfo) (*MsgUpdateObjectInfoResponse, error) UpdateObjectContent(context.Context, *MsgUpdateObjectContent) (*MsgUpdateObjectContentResponse, error) CancelUpdateObjectContent(context.Context, *MsgCancelUpdateObjectContent) (*MsgCancelUpdateObjectContentResponse, error) + DelegateCreateObject(context.Context, *MsgDelegateCreateObject) (*MsgDelegateCreateObjectResponse, error) // basic operation of group CreateGroup(context.Context, *MsgCreateGroup) (*MsgCreateGroupResponse, error) DeleteGroup(context.Context, *MsgDeleteGroup) (*MsgDeleteGroupResponse, error) @@ -4036,6 +4334,9 @@ func (*UnimplementedMsgServer) MirrorBucket(ctx context.Context, req *MsgMirrorB func (*UnimplementedMsgServer) DiscontinueBucket(ctx context.Context, req *MsgDiscontinueBucket) (*MsgDiscontinueBucketResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DiscontinueBucket not implemented") } +func (*UnimplementedMsgServer) UpdateDelegatedAgent(ctx context.Context, req *MsgUpdateDelegatedAgent) (*MsgUpdateDelegatedAgentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateDelegatedAgent not implemented") +} func (*UnimplementedMsgServer) CreateObject(ctx context.Context, req *MsgCreateObject) (*MsgCreateObjectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateObject not implemented") } @@ -4069,6 +4370,9 @@ func (*UnimplementedMsgServer) UpdateObjectContent(ctx context.Context, req *Msg func (*UnimplementedMsgServer) CancelUpdateObjectContent(ctx context.Context, req *MsgCancelUpdateObjectContent) (*MsgCancelUpdateObjectContentResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CancelUpdateObjectContent not implemented") } +func (*UnimplementedMsgServer) DelegateCreateObject(ctx context.Context, req *MsgDelegateCreateObject) (*MsgDelegateCreateObjectResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelegateCreateObject not implemented") +} func (*UnimplementedMsgServer) CreateGroup(ctx context.Context, req *MsgCreateGroup) (*MsgCreateGroupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateGroup not implemented") } @@ -4209,6 +4513,24 @@ func _Msg_DiscontinueBucket_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _Msg_UpdateDelegatedAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateDelegatedAgent) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateDelegatedAgent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/greenfield.storage.Msg/UpdateDelegatedAgent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateDelegatedAgent(ctx, req.(*MsgUpdateDelegatedAgent)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_CreateObject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgCreateObject) if err := dec(in); err != nil { @@ -4407,6 +4729,24 @@ func _Msg_CancelUpdateObjectContent_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Msg_DelegateCreateObject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDelegateCreateObject) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DelegateCreateObject(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/greenfield.storage.Msg/DelegateCreateObject", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DelegateCreateObject(ctx, req.(*MsgDelegateCreateObject)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_CreateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgCreateGroup) if err := dec(in); err != nil { @@ -4701,6 +5041,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "DiscontinueBucket", Handler: _Msg_DiscontinueBucket_Handler, }, + { + MethodName: "UpdateDelegatedAgent", + Handler: _Msg_UpdateDelegatedAgent_Handler, + }, { MethodName: "CreateObject", Handler: _Msg_CreateObject_Handler, @@ -4745,6 +5089,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CancelUpdateObjectContent", Handler: _Msg_CancelUpdateObjectContent_Handler, }, + { + MethodName: "DelegateCreateObject", + Handler: _Msg_DelegateCreateObject_Handler, + }, { MethodName: "CreateGroup", Handler: _Msg_CreateGroup_Handler, @@ -7258,30 +7606,223 @@ func (m *MsgCancelUpdateObjectContentResponse) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *MsgDelegateCreateObject) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *MsgCreateBucket) Size() (n int) { - if m == nil { - return 0 - } + +func (m *MsgDelegateCreateObject) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDelegateCreateObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Creator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if m.RedundancyType != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.RedundancyType)) + i-- + dAtA[i] = 0x48 } - l = len(m.BucketName) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if len(m.ExpectChecksums) > 0 { + for iNdEx := len(m.ExpectChecksums) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ExpectChecksums[iNdEx]) + copy(dAtA[i:], m.ExpectChecksums[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ExpectChecksums[iNdEx]))) + i-- + dAtA[i] = 0x42 + } + } + if m.Visibility != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Visibility)) + i-- + dAtA[i] = 0x38 + } + if len(m.ContentType) > 0 { + i -= len(m.ContentType) + copy(dAtA[i:], m.ContentType) + i = encodeVarintTx(dAtA, i, uint64(len(m.ContentType))) + i-- + dAtA[i] = 0x32 + } + if m.PayloadSize != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.PayloadSize)) + i-- + dAtA[i] = 0x28 + } + if len(m.ObjectName) > 0 { + i -= len(m.ObjectName) + copy(dAtA[i:], m.ObjectName) + i = encodeVarintTx(dAtA, i, uint64(len(m.ObjectName))) + i-- + dAtA[i] = 0x22 + } + if len(m.BucketName) > 0 { + i -= len(m.BucketName) + copy(dAtA[i:], m.BucketName) + i = encodeVarintTx(dAtA, i, uint64(len(m.BucketName))) + i-- + dAtA[i] = 0x1a + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0x12 + } + if len(m.Operator) > 0 { + i -= len(m.Operator) + copy(dAtA[i:], m.Operator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Operator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDelegateCreateObjectResponse) 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 *MsgDelegateCreateObjectResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDelegateCreateObjectResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.ObjectId.Size() + i -= size + if _, err := m.ObjectId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgUpdateDelegatedAgent) 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 *MsgUpdateDelegatedAgent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateDelegatedAgent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AgentsToRemove) > 0 { + for iNdEx := len(m.AgentsToRemove) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AgentsToRemove[iNdEx]) + copy(dAtA[i:], m.AgentsToRemove[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToRemove[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if len(m.AgentsToAdd) > 0 { + for iNdEx := len(m.AgentsToAdd) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AgentsToAdd[iNdEx]) + copy(dAtA[i:], m.AgentsToAdd[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToAdd[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.BucketName) > 0 { + i -= len(m.BucketName) + copy(dAtA[i:], m.BucketName) + i = encodeVarintTx(dAtA, i, uint64(len(m.BucketName))) + i-- + dAtA[i] = 0x12 + } + if len(m.Operator) > 0 { + i -= len(m.Operator) + copy(dAtA[i:], m.Operator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Operator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateDelegatedAgentResponse) 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 *MsgUpdateDelegatedAgentResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateDelegatedAgentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgCreateBucket) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.BucketName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) } if m.Visibility != 0 { n += 1 + sovTx(uint64(m.Visibility)) @@ -8338,41 +8879,134 @@ func (m *MsgCancelUpdateObjectContentResponse) Size() (n int) { return n } -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +func (m *MsgDelegateCreateObject) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Operator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.BucketName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ObjectName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.PayloadSize != 0 { + n += 1 + sovTx(uint64(m.PayloadSize)) + } + l = len(m.ContentType) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Visibility != 0 { + n += 1 + sovTx(uint64(m.Visibility)) + } + if len(m.ExpectChecksums) > 0 { + for _, b := range m.ExpectChecksums { + l = len(b) + n += 1 + l + sovTx(uint64(l)) + } + } + if m.RedundancyType != 0 { + n += 1 + sovTx(uint64(m.RedundancyType)) + } + return n } -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + +func (m *MsgDelegateCreateObjectResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ObjectId.Size() + n += 1 + l + sovTx(uint64(l)) + return n } -func (m *MsgCreateBucket) 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 ErrIntOverflowTx - } - 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: MsgCreateBucket: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCreateBucket: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { + +func (m *MsgUpdateDelegatedAgent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Operator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.BucketName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.AgentsToAdd) > 0 { + for _, s := range m.AgentsToAdd { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.AgentsToRemove) > 0 { + for _, s := range m.AgentsToRemove { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgUpdateDelegatedAgentResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgCreateBucket) 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 ErrIntOverflowTx + } + 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: MsgCreateBucket: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateBucket: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { case 1: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) @@ -15545,6 +16179,617 @@ func (m *MsgCancelUpdateObjectContentResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgDelegateCreateObject) 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 ErrIntOverflowTx + } + 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: MsgDelegateCreateObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDelegateCreateObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BucketName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BucketName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ObjectName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PayloadSize", wireType) + } + m.PayloadSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PayloadSize |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContentType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContentType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Visibility", wireType) + } + m.Visibility = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Visibility |= VisibilityType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpectChecksums", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpectChecksums = append(m.ExpectChecksums, make([]byte, postIndex-iNdEx)) + copy(m.ExpectChecksums[len(m.ExpectChecksums)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RedundancyType", wireType) + } + m.RedundancyType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RedundancyType |= RedundancyType(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDelegateCreateObjectResponse) 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 ErrIntOverflowTx + } + 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: MsgDelegateCreateObjectResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDelegateCreateObjectResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateDelegatedAgent) 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 ErrIntOverflowTx + } + 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: MsgUpdateDelegatedAgent: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateDelegatedAgent: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BucketName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BucketName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AgentsToAdd", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AgentsToAdd = append(m.AgentsToAdd, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AgentsToRemove", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AgentsToRemove = append(m.AgentsToRemove, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateDelegatedAgentResponse) 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 ErrIntOverflowTx + } + 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: MsgUpdateDelegatedAgentResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateDelegatedAgentResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/storage/types/types.pb.go b/x/storage/types/types.pb.go index 85c398f04..610ae1283 100644 --- a/x/storage/types/types.pb.go +++ b/x/storage/types/types.pb.go @@ -51,6 +51,8 @@ type BucketInfo struct { BucketStatus BucketStatus `protobuf:"varint,10,opt,name=bucket_status,json=bucketStatus,proto3,enum=greenfield.storage.BucketStatus" json:"bucket_status,omitempty"` // tags defines a list of tags the bucket has Tags *ResourceTags `protobuf:"bytes,11,opt,name=tags,proto3" json:"tags,omitempty"` + // delegated_agent_addresses + DelegatedAgentAddresses []string `protobuf:"bytes,12,rep,name=delegated_agent_addresses,json=delegatedAgentAddresses,proto3" json:"delegated_agent_addresses,omitempty"` } func (m *BucketInfo) Reset() { *m = BucketInfo{} } @@ -156,6 +158,13 @@ func (m *BucketInfo) GetTags() *ResourceTags { return nil } +func (m *BucketInfo) GetDelegatedAgentAddresses() []string { + if m != nil { + return m.DelegatedAgentAddresses + } + return nil +} + type InternalBucketInfo struct { // the time of the payment price, used to calculate the charge rate of the bucket PriceTime int64 `protobuf:"varint,1,opt,name=price_time,json=priceTime,proto3" json:"price_time,omitempty"` @@ -1175,93 +1184,95 @@ func init() { func init() { proto.RegisterFile("greenfield/storage/types.proto", fileDescriptor_bf95fa2efdc74d97) } var fileDescriptor_bf95fa2efdc74d97 = []byte{ - // 1370 bytes of a gzipped FileDescriptorProto + // 1403 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdf, 0x6e, 0x13, 0x47, - 0x17, 0xcf, 0x7a, 0xed, 0x24, 0x3e, 0xce, 0x3f, 0x86, 0xe8, 0x63, 0x09, 0xc2, 0x31, 0xd6, 0xf7, - 0x7d, 0xb2, 0xda, 0xc6, 0x16, 0x01, 0xd1, 0xaa, 0x42, 0x45, 0x71, 0xa1, 0xc8, 0x6a, 0x69, 0xd5, - 0x4d, 0xa0, 0x52, 0x6f, 0x56, 0xe3, 0xdd, 0xc9, 0x66, 0xca, 0xee, 0x8e, 0x3b, 0x33, 0x1b, 0x62, - 0xa4, 0xbe, 0x40, 0xaf, 0x7a, 0xd1, 0x57, 0xe8, 0x0b, 0x54, 0x3c, 0x04, 0xaa, 0x54, 0x09, 0x71, - 0x55, 0xf5, 0x22, 0xaa, 0xe0, 0x0d, 0x7a, 0xd1, 0xeb, 0x6a, 0x67, 0xc6, 0x66, 0xfd, 0x27, 0x38, - 0x41, 0x70, 0xb7, 0x73, 0xe6, 0x77, 0x66, 0xce, 0xbf, 0xdf, 0x39, 0xb3, 0x50, 0x0d, 0x39, 0x21, - 0xc9, 0x3e, 0x25, 0x51, 0xd0, 0x12, 0x92, 0x71, 0x1c, 0x92, 0x96, 0xec, 0xf7, 0x88, 0x68, 0xf6, - 0x38, 0x93, 0x0c, 0xa1, 0x57, 0xfb, 0x4d, 0xb3, 0xbf, 0x51, 0xf5, 0x99, 0x88, 0x99, 0x68, 0x75, - 0xb1, 0x20, 0xad, 0xc3, 0xab, 0x5d, 0x22, 0xf1, 0xd5, 0x96, 0xcf, 0x68, 0xa2, 0x75, 0x36, 0x2e, - 0xea, 0x7d, 0x4f, 0xad, 0x5a, 0x7a, 0x61, 0xb6, 0xd6, 0x43, 0x16, 0x32, 0x2d, 0xcf, 0xbe, 0x8c, - 0xf4, 0x4a, 0xce, 0x88, 0x1e, 0xee, 0xc7, 0x24, 0x91, 0x2d, 0x96, 0x4a, 0x6f, 0x3f, 0x62, 0x8f, - 0x0c, 0xe4, 0xff, 0x53, 0x20, 0x42, 0x72, 0x82, 0x63, 0x8f, 0x13, 0x9f, 0xf1, 0xc0, 0xe0, 0x36, - 0xa7, 0xf8, 0xe3, 0xb3, 0x38, 0x66, 0xc6, 0xb8, 0xfa, 0x71, 0x11, 0xa0, 0x9d, 0xfa, 0x0f, 0x89, - 0xec, 0x24, 0xfb, 0x0c, 0x35, 0xa1, 0xc4, 0x1e, 0x25, 0x84, 0x3b, 0x56, 0xcd, 0x6a, 0x94, 0xdb, - 0xce, 0xf3, 0x27, 0x5b, 0xeb, 0xc6, 0xe2, 0x9d, 0x20, 0xe0, 0x44, 0x88, 0x5d, 0xc9, 0x69, 0x12, - 0xba, 0x1a, 0x86, 0x36, 0xa1, 0xd2, 0x55, 0xda, 0x5e, 0x82, 0x63, 0xe2, 0x14, 0x32, 0x2d, 0x17, - 0xb4, 0xe8, 0x4b, 0x1c, 0x13, 0xd4, 0x06, 0x38, 0xa4, 0x82, 0x76, 0x69, 0x44, 0x65, 0xdf, 0xb1, - 0x6b, 0x56, 0x63, 0x65, 0xbb, 0xde, 0x9c, 0x8c, 0x62, 0xf3, 0xc1, 0x10, 0xb5, 0xd7, 0xef, 0x11, - 0x37, 0xa7, 0x85, 0xde, 0x87, 0x02, 0x0d, 0x9c, 0xa2, 0xb2, 0xe8, 0xd2, 0xd3, 0xe3, 0xcd, 0xb9, - 0x3f, 0x8f, 0x37, 0x8b, 0xf7, 0x69, 0x22, 0x9f, 0x3f, 0xd9, 0xaa, 0x18, 0xeb, 0xb2, 0xa5, 0x5b, - 0xa0, 0x01, 0xba, 0x05, 0x15, 0xc1, 0x52, 0xee, 0x13, 0x2f, 0xcb, 0x9b, 0x53, 0x52, 0x37, 0x56, - 0xa7, 0xdd, 0xb8, 0xab, 0x60, 0xfa, 0x36, 0x31, 0xfc, 0x46, 0x97, 0xa0, 0xec, 0x73, 0x82, 0x25, - 0xf1, 0xb0, 0x74, 0xe6, 0x6b, 0x56, 0xc3, 0x76, 0x17, 0xb5, 0x60, 0x47, 0xa2, 0x1d, 0x58, 0x35, - 0xe1, 0xf6, 0xb0, 0x8e, 0x87, 0xb3, 0x30, 0x23, 0x52, 0x2b, 0x46, 0xc1, 0x48, 0x51, 0x1b, 0xaa, - 0x61, 0xc4, 0xba, 0x38, 0xf2, 0x0e, 0x29, 0x97, 0x29, 0x8e, 0xbc, 0x90, 0xb3, 0xb4, 0xe7, 0xed, - 0xe3, 0x98, 0x46, 0x7d, 0x8f, 0x06, 0xce, 0x62, 0xcd, 0x6a, 0x2c, 0xbb, 0x1b, 0x1a, 0xf5, 0x40, - 0x83, 0xee, 0x66, 0x98, 0xcf, 0x14, 0xa4, 0x13, 0xa0, 0x0f, 0x00, 0xf9, 0x07, 0x98, 0x87, 0x24, - 0xf0, 0x38, 0xc1, 0x81, 0xf7, 0x7d, 0xca, 0x24, 0x76, 0xca, 0x35, 0xab, 0x51, 0x74, 0xd7, 0xcc, - 0x8e, 0x4b, 0x70, 0xf0, 0x75, 0x26, 0x47, 0x77, 0x60, 0xd9, 0x24, 0x49, 0x48, 0x2c, 0x53, 0xe1, - 0x80, 0x0a, 0x4a, 0x6d, 0x5a, 0x50, 0x74, 0x2d, 0xec, 0x2a, 0x9c, 0xbb, 0xd4, 0xcd, 0xad, 0xd0, - 0x75, 0x28, 0x4a, 0x1c, 0x0a, 0xa7, 0x52, 0xb3, 0x1a, 0x95, 0xe9, 0xda, 0x2e, 0x31, 0x81, 0xc4, - 0xa1, 0x70, 0x15, 0xba, 0xfe, 0x8f, 0x05, 0xa8, 0x93, 0x48, 0xc2, 0x13, 0x1c, 0xe5, 0x0a, 0xed, - 0x32, 0x40, 0x8f, 0xd3, 0x2c, 0x4b, 0x34, 0x26, 0xaa, 0xda, 0x6c, 0xb7, 0xac, 0x24, 0x7b, 0x34, - 0x26, 0xe8, 0x3d, 0x38, 0x27, 0x99, 0xc4, 0x91, 0xa7, 0x9d, 0xf1, 0x04, 0x7d, 0xac, 0xab, 0xab, - 0xe8, 0xae, 0xaa, 0x8d, 0x4f, 0x95, 0x7c, 0x97, 0x3e, 0x26, 0xe8, 0x1b, 0x58, 0x8f, 0x98, 0x3f, - 0x1e, 0x4f, 0xe1, 0xd8, 0x35, 0xbb, 0x51, 0xd9, 0xfe, 0xdf, 0x34, 0x3b, 0xbf, 0xc8, 0xf0, 0xf9, - 0xc8, 0xba, 0x28, 0x1a, 0x17, 0x09, 0x74, 0x13, 0x2e, 0x25, 0xe4, 0x48, 0x7a, 0x53, 0x4e, 0xf7, - 0x4c, 0x41, 0x2e, 0xbb, 0x17, 0x32, 0xc8, 0xc4, 0x79, 0x9d, 0xa0, 0xfe, 0xe3, 0x02, 0xc0, 0x57, - 0xdd, 0xef, 0x88, 0xff, 0x66, 0xcc, 0xda, 0x86, 0x05, 0x55, 0x75, 0x8c, 0x6b, 0x56, 0xbd, 0x46, - 0x63, 0x00, 0x1c, 0x67, 0xa3, 0x3d, 0xc1, 0xc6, 0x4d, 0xa8, 0x30, 0x65, 0x92, 0x06, 0x14, 0x35, - 0x40, 0x8b, 0x14, 0x40, 0x53, 0xad, 0x74, 0x3a, 0xaa, 0x5d, 0x83, 0xff, 0x9c, 0x10, 0x9a, 0x79, - 0x15, 0x9a, 0xf3, 0xd1, 0x64, 0x58, 0xd0, 0x15, 0x58, 0xea, 0xe1, 0x7e, 0xc4, 0x70, 0xa0, 0x93, - 0xba, 0xa0, 0x92, 0x5a, 0x31, 0x32, 0x95, 0xd0, 0xd1, 0x9e, 0xb1, 0xf8, 0x46, 0x3d, 0xe3, 0x0a, - 0x2c, 0xf9, 0x2c, 0x91, 0x19, 0x51, 0x55, 0x1f, 0x28, 0x2b, 0x57, 0x2b, 0x46, 0x36, 0x49, 0x74, - 0x18, 0x23, 0xfa, 0x1d, 0x58, 0x36, 0x91, 0x32, 0x9c, 0xa9, 0x9c, 0xcc, 0x19, 0x9d, 0xe5, 0x01, - 0x67, 0x58, 0x6e, 0x85, 0x3e, 0x87, 0x55, 0x4e, 0x82, 0x34, 0x09, 0x70, 0xe2, 0xf7, 0xb5, 0x25, - 0x4b, 0x27, 0xfb, 0xe3, 0x0e, 0xa1, 0xca, 0x9f, 0x15, 0x3e, 0xb2, 0x1e, 0x6f, 0x6d, 0xcb, 0x67, - 0x6e, 0x6d, 0x2d, 0x28, 0xfb, 0x07, 0xc4, 0x7f, 0x28, 0xd2, 0x58, 0x38, 0x2b, 0x35, 0xbb, 0xb1, - 0xd4, 0x3e, 0xf7, 0xf7, 0xf1, 0xe6, 0xb2, 0xe4, 0x98, 0x4a, 0xf1, 0x71, 0x9d, 0xc5, 0x54, 0xd6, - 0xdd, 0x57, 0x98, 0x21, 0xe5, 0x57, 0xcf, 0x42, 0xf9, 0xac, 0xca, 0xa8, 0xf0, 0xd2, 0x5e, 0x80, - 0x25, 0x4d, 0x42, 0x67, 0xad, 0x66, 0x35, 0x16, 0x5d, 0xa0, 0xe2, 0xbe, 0x91, 0x64, 0xe4, 0x57, - 0xbb, 0x24, 0xc8, 0x42, 0x7f, 0x4e, 0x93, 0xdf, 0x48, 0x76, 0x24, 0xfa, 0xf0, 0xd5, 0x76, 0xb7, - 0xef, 0xa0, 0x19, 0xd5, 0x3f, 0x50, 0x6c, 0xf7, 0x91, 0x03, 0x0b, 0x87, 0x84, 0x0b, 0xca, 0x12, - 0xe7, 0xbc, 0x3a, 0x74, 0xb0, 0xac, 0xff, 0x5c, 0x80, 0xb2, 0xae, 0xc0, 0x37, 0xe1, 0xe2, 0x65, - 0x00, 0x5d, 0xda, 0xb9, 0x21, 0x57, 0x56, 0x12, 0x45, 0x9a, 0xb1, 0xbc, 0xd8, 0x67, 0xce, 0xcb, - 0x99, 0x06, 0xdc, 0x3a, 0x94, 0xc8, 0x91, 0xe4, 0x58, 0xb3, 0xd4, 0xd5, 0x8b, 0x61, 0xa6, 0xe6, - 0xcf, 0xd4, 0x9c, 0x6f, 0x42, 0x69, 0x2f, 0xcb, 0x7d, 0xe6, 0xa1, 0x2a, 0x02, 0xed, 0x81, 0xa5, - 0x3d, 0x54, 0x12, 0x65, 0xe0, 0x3a, 0x94, 0x0e, 0x71, 0x94, 0x0e, 0x7c, 0xd7, 0x8b, 0xfa, 0xef, - 0x16, 0xac, 0xe8, 0x96, 0x7e, 0x8f, 0x48, 0x7c, 0x1b, 0x4b, 0x8c, 0x6a, 0x50, 0x09, 0x88, 0xf0, - 0x39, 0xed, 0xc9, 0x2c, 0x0b, 0xfa, 0xa0, 0xbc, 0x28, 0x23, 0x26, 0x39, 0xd2, 0xe3, 0xc0, 0x4b, - 0x79, 0x64, 0x4e, 0xac, 0x0c, 0x64, 0xf7, 0x79, 0x34, 0xbb, 0x8d, 0xad, 0x43, 0x89, 0xc6, 0x38, - 0x1c, 0x34, 0x30, 0xbd, 0x40, 0xb7, 0x00, 0xb0, 0x94, 0x9c, 0x76, 0x53, 0x49, 0x84, 0x53, 0x52, - 0xdd, 0xff, 0xe2, 0xb4, 0x40, 0x28, 0x97, 0xdb, 0xc5, 0x2c, 0xd0, 0x6e, 0x4e, 0x45, 0xf9, 0xa3, - 0xb9, 0xfc, 0xd6, 0xfd, 0xc9, 0x77, 0x5d, 0x7b, 0xa2, 0xeb, 0xbe, 0x23, 0x7f, 0x7e, 0xb3, 0x60, - 0x59, 0x15, 0xfd, 0xdb, 0x75, 0x67, 0x94, 0x0d, 0xf6, 0x38, 0x1b, 0xde, 0x91, 0x33, 0xdb, 0x60, - 0x77, 0x02, 0x61, 0xa8, 0x62, 0xd5, 0xec, 0x53, 0x50, 0xa5, 0xfe, 0xab, 0x05, 0x70, 0x9b, 0x44, - 0x44, 0x12, 0x45, 0xfb, 0x1b, 0x60, 0x8a, 0xc8, 0xa3, 0x81, 0x50, 0xce, 0x57, 0xb6, 0x2f, 0x4c, - 0xb3, 0xa1, 0x13, 0x08, 0xb7, 0xac, 0xa1, 0xd9, 0x9d, 0x37, 0xc0, 0x24, 0x4b, 0xe9, 0x15, 0x66, - 0xe8, 0x69, 0x68, 0xa6, 0x77, 0x1d, 0xca, 0x83, 0x89, 0x28, 0x54, 0x9c, 0x5e, 0xa3, 0xb6, 0x18, - 0xea, 0xf9, 0x28, 0xea, 0xcf, 0x2d, 0x38, 0x7f, 0x8f, 0x86, 0x1c, 0x67, 0xf9, 0xc8, 0xbd, 0x98, - 0x36, 0xa0, 0x2c, 0xb8, 0xef, 0x09, 0x35, 0x60, 0x2d, 0x35, 0x60, 0x17, 0x04, 0xf7, 0x77, 0xb3, - 0xa1, 0xda, 0x81, 0x7a, 0xb6, 0x37, 0xe3, 0x5d, 0x59, 0x50, 0x4a, 0x97, 0x05, 0xf7, 0xef, 0x9e, - 0xfc, 0xb4, 0xdc, 0x80, 0x72, 0x20, 0xa4, 0xb9, 0xc6, 0xd6, 0xd7, 0x04, 0x42, 0xaa, 0x6b, 0x3e, - 0x82, 0xf2, 0x30, 0x80, 0xa7, 0x69, 0x57, 0x8b, 0x83, 0x18, 0xd6, 0x7f, 0x80, 0xa5, 0x7c, 0xfb, - 0x41, 0x9f, 0x98, 0x76, 0x65, 0xa9, 0x42, 0xf8, 0xef, 0xac, 0x76, 0xd5, 0xdc, 0xc3, 0xa1, 0xa9, - 0x09, 0xa5, 0xb7, 0xb1, 0x05, 0xf6, 0x1e, 0x0e, 0xd1, 0x1a, 0xd8, 0x0f, 0x49, 0xdf, 0xd4, 0x71, - 0xf6, 0x79, 0x42, 0xa7, 0xfa, 0xa5, 0x00, 0x6b, 0xbb, 0x07, 0x38, 0x60, 0x8f, 0x72, 0x2f, 0xb2, - 0xeb, 0xb0, 0xc8, 0x7a, 0x84, 0xab, 0x27, 0xd6, 0xac, 0x41, 0x30, 0x44, 0x9a, 0x02, 0x2c, 0x9c, - 0xae, 0x57, 0x8f, 0xbf, 0x42, 0xec, 0xc9, 0x57, 0xc8, 0xf8, 0x7b, 0xa8, 0x38, 0xf9, 0x1e, 0x1a, - 0x19, 0xdb, 0xa5, 0x53, 0x8c, 0xed, 0xd1, 0xf9, 0x3a, 0x3f, 0x3e, 0x5f, 0x73, 0x63, 0x72, 0x61, - 0x64, 0x4c, 0xb6, 0x3b, 0x4f, 0x5f, 0x54, 0xad, 0x67, 0x2f, 0xaa, 0xd6, 0x5f, 0x2f, 0xaa, 0xd6, - 0x4f, 0x2f, 0xab, 0x73, 0xcf, 0x5e, 0x56, 0xe7, 0xfe, 0x78, 0x59, 0x9d, 0xfb, 0xb6, 0x15, 0x52, - 0x79, 0x90, 0x76, 0x9b, 0x3e, 0x8b, 0x5b, 0xdd, 0xa4, 0xbb, 0xe5, 0x1f, 0x60, 0x9a, 0xb4, 0x72, - 0x7f, 0x97, 0x47, 0xa3, 0xff, 0xcb, 0xdd, 0x79, 0xf5, 0x7f, 0x79, 0xed, 0xdf, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x69, 0x04, 0x1f, 0x0c, 0x52, 0x0f, 0x00, 0x00, + 0x17, 0xcf, 0x7a, 0xed, 0x24, 0x3e, 0x9b, 0x7f, 0x0c, 0xd1, 0xc7, 0x12, 0x84, 0x63, 0xac, 0xef, + 0xfb, 0x64, 0xb5, 0x4d, 0x2c, 0x02, 0xa2, 0x55, 0x85, 0x8a, 0xe2, 0x42, 0x91, 0xd5, 0xd2, 0xaa, + 0x9b, 0x40, 0xa5, 0xde, 0xac, 0xc6, 0xbb, 0x93, 0xcd, 0x94, 0xdd, 0x1d, 0x77, 0x66, 0x36, 0xc4, + 0x48, 0x7d, 0x81, 0x5e, 0xf5, 0xa2, 0xaf, 0xd0, 0x17, 0xa8, 0x78, 0x08, 0x54, 0xa9, 0x12, 0xe2, + 0xaa, 0xea, 0x05, 0xaa, 0xe0, 0x0d, 0x7a, 0xd1, 0xeb, 0x6a, 0x67, 0xc6, 0xce, 0xc6, 0x76, 0x70, + 0x82, 0xe0, 0xce, 0x73, 0xe6, 0x77, 0x76, 0xe6, 0xfc, 0xf9, 0xfd, 0xce, 0x18, 0x6a, 0x11, 0x27, + 0x24, 0xdd, 0xa3, 0x24, 0x0e, 0x5b, 0x42, 0x32, 0x8e, 0x23, 0xd2, 0x92, 0xfd, 0x1e, 0x11, 0x9b, + 0x3d, 0xce, 0x24, 0x43, 0xe8, 0x68, 0x7f, 0xd3, 0xec, 0xaf, 0xd5, 0x02, 0x26, 0x12, 0x26, 0x5a, + 0x5d, 0x2c, 0x48, 0xeb, 0xe0, 0x6a, 0x97, 0x48, 0x7c, 0xb5, 0x15, 0x30, 0x9a, 0x6a, 0x9f, 0xb5, + 0x8b, 0x7a, 0xdf, 0x57, 0xab, 0x96, 0x5e, 0x98, 0xad, 0xd5, 0x88, 0x45, 0x4c, 0xdb, 0xf3, 0x5f, + 0xc6, 0x7a, 0xa5, 0x70, 0x89, 0x1e, 0xee, 0x27, 0x24, 0x95, 0x2d, 0x96, 0x49, 0x7f, 0x2f, 0x66, + 0x8f, 0x0c, 0xe4, 0xff, 0x13, 0x20, 0x42, 0x72, 0x82, 0x13, 0x9f, 0x93, 0x80, 0xf1, 0xd0, 0xe0, + 0xd6, 0x27, 0xc4, 0x13, 0xb0, 0x24, 0x61, 0xe6, 0x72, 0x8d, 0x27, 0x15, 0x80, 0x76, 0x16, 0x3c, + 0x24, 0xb2, 0x93, 0xee, 0x31, 0xb4, 0x09, 0x15, 0xf6, 0x28, 0x25, 0xdc, 0xb5, 0xea, 0x56, 0xb3, + 0xda, 0x76, 0x9f, 0x3f, 0xd9, 0x58, 0x35, 0x37, 0xde, 0x0e, 0x43, 0x4e, 0x84, 0xd8, 0x91, 0x9c, + 0xa6, 0x91, 0xa7, 0x61, 0x68, 0x1d, 0x9c, 0xae, 0xf2, 0xf6, 0x53, 0x9c, 0x10, 0xb7, 0x94, 0x7b, + 0x79, 0xa0, 0x4d, 0x5f, 0xe2, 0x84, 0xa0, 0x36, 0xc0, 0x01, 0x15, 0xb4, 0x4b, 0x63, 0x2a, 0xfb, + 0xae, 0x5d, 0xb7, 0x9a, 0x4b, 0x5b, 0x8d, 0xcd, 0xf1, 0x2c, 0x6e, 0x3e, 0x18, 0xa2, 0x76, 0xfb, + 0x3d, 0xe2, 0x15, 0xbc, 0xd0, 0xfb, 0x50, 0xa2, 0xa1, 0x5b, 0x56, 0x37, 0xba, 0xf4, 0xf4, 0xc5, + 0xfa, 0xcc, 0x9f, 0x2f, 0xd6, 0xcb, 0xf7, 0x69, 0x2a, 0x9f, 0x3f, 0xd9, 0x70, 0xcc, 0xed, 0xf2, + 0xa5, 0x57, 0xa2, 0x21, 0xba, 0x05, 0x8e, 0x60, 0x19, 0x0f, 0x88, 0x9f, 0xd7, 0xcd, 0xad, 0xa8, + 0x13, 0x6b, 0x93, 0x4e, 0xdc, 0x51, 0x30, 0x7d, 0x9a, 0x18, 0xfe, 0x46, 0x97, 0xa0, 0x1a, 0x70, + 0x82, 0x25, 0xf1, 0xb1, 0x74, 0x67, 0xeb, 0x56, 0xd3, 0xf6, 0xe6, 0xb5, 0x61, 0x5b, 0xa2, 0x6d, + 0x58, 0x36, 0xe9, 0xf6, 0xb1, 0xce, 0x87, 0x3b, 0x37, 0x25, 0x53, 0x4b, 0xc6, 0xc1, 0x58, 0x51, + 0x1b, 0x6a, 0x51, 0xcc, 0xba, 0x38, 0xf6, 0x0f, 0x28, 0x97, 0x19, 0x8e, 0xfd, 0x88, 0xb3, 0xac, + 0xe7, 0xef, 0xe1, 0x84, 0xc6, 0x7d, 0x9f, 0x86, 0xee, 0x7c, 0xdd, 0x6a, 0x2e, 0x7a, 0x6b, 0x1a, + 0xf5, 0x40, 0x83, 0xee, 0xe6, 0x98, 0xcf, 0x14, 0xa4, 0x13, 0xa2, 0x0f, 0x00, 0x05, 0xfb, 0x98, + 0x47, 0x24, 0xf4, 0x39, 0xc1, 0xa1, 0xff, 0x7d, 0xc6, 0x24, 0x76, 0xab, 0x75, 0xab, 0x59, 0xf6, + 0x56, 0xcc, 0x8e, 0x47, 0x70, 0xf8, 0x75, 0x6e, 0x47, 0x77, 0x60, 0xd1, 0x14, 0x49, 0x48, 0x2c, + 0x33, 0xe1, 0x82, 0x4a, 0x4a, 0x7d, 0x52, 0x52, 0x74, 0x2f, 0xec, 0x28, 0x9c, 0xb7, 0xd0, 0x2d, + 0xac, 0xd0, 0x75, 0x28, 0x4b, 0x1c, 0x09, 0xd7, 0xa9, 0x5b, 0x4d, 0x67, 0xb2, 0xb7, 0x47, 0x4c, + 0x22, 0x71, 0x24, 0x3c, 0x85, 0x46, 0xbb, 0x70, 0x31, 0x24, 0x31, 0x89, 0xb0, 0x24, 0xa1, 0x8f, + 0xa3, 0x42, 0xe6, 0x88, 0x70, 0x17, 0xea, 0xf6, 0x6b, 0x73, 0x77, 0x61, 0xe8, 0xba, 0x1d, 0x1d, + 0xa5, 0x90, 0x88, 0xc6, 0x3f, 0x16, 0xa0, 0x4e, 0x2a, 0x09, 0x4f, 0x71, 0x5c, 0x68, 0xdf, 0xcb, + 0x00, 0x3d, 0x4e, 0xf3, 0xda, 0xd3, 0x84, 0xa8, 0x1e, 0xb6, 0xbd, 0xaa, 0xb2, 0xec, 0xd2, 0x84, + 0xa0, 0xf7, 0xe0, 0x9c, 0x64, 0x12, 0xc7, 0xbe, 0x4e, 0x91, 0x2f, 0xe8, 0x63, 0xdd, 0xb3, 0x65, + 0x6f, 0x59, 0x6d, 0x7c, 0xaa, 0xec, 0x3b, 0xf4, 0x31, 0x41, 0xdf, 0xc0, 0x6a, 0xcc, 0x82, 0xd1, + 0x2a, 0x09, 0xd7, 0xae, 0xdb, 0x4d, 0x67, 0xeb, 0x7f, 0x93, 0xa2, 0xff, 0x22, 0xc7, 0x17, 0xeb, + 0xe5, 0xa1, 0x78, 0xd4, 0x24, 0xd0, 0x4d, 0xb8, 0x94, 0x92, 0x43, 0xe9, 0x4f, 0xf8, 0xba, 0x6f, + 0xda, 0x7c, 0xd1, 0xbb, 0x90, 0x43, 0xc6, 0xbe, 0xd7, 0x09, 0x1b, 0x3f, 0xce, 0x01, 0x7c, 0xd5, + 0xfd, 0x8e, 0x04, 0x6f, 0xc6, 0xd7, 0x2d, 0x98, 0x53, 0xbd, 0xcc, 0xb8, 0xe6, 0xea, 0x6b, 0x3c, + 0x06, 0xc0, 0x51, 0x8e, 0xdb, 0x63, 0x1c, 0x5f, 0x07, 0x87, 0xa9, 0x2b, 0x69, 0x40, 0x59, 0x03, + 0xb4, 0x49, 0x01, 0x34, 0x81, 0x2b, 0xa7, 0x23, 0xf0, 0x35, 0xf8, 0xcf, 0x09, 0xa9, 0x99, 0x55, + 0xa9, 0x39, 0x1f, 0x8f, 0xa7, 0x05, 0x5d, 0x81, 0x85, 0x1e, 0xee, 0xc7, 0x0c, 0x87, 0xba, 0xa8, + 0x73, 0xaa, 0xa8, 0x8e, 0xb1, 0xa9, 0x82, 0x1e, 0x57, 0xa2, 0xf9, 0x37, 0x52, 0xa2, 0x2b, 0xb0, + 0x10, 0xb0, 0x54, 0xe6, 0x4d, 0xac, 0xd4, 0xa5, 0xaa, 0x42, 0x75, 0x8c, 0x6d, 0x5c, 0x3e, 0x60, + 0x44, 0x3e, 0xee, 0xc0, 0xa2, 0xc9, 0x94, 0x61, 0xa2, 0x73, 0x32, 0x13, 0x75, 0x95, 0x07, 0x4c, + 0x64, 0x85, 0x15, 0xfa, 0x1c, 0x96, 0x39, 0x09, 0xb3, 0x34, 0xc4, 0x69, 0xd0, 0xd7, 0x37, 0x59, + 0x38, 0x39, 0x1e, 0x6f, 0x08, 0x55, 0xf1, 0x2c, 0xf1, 0x63, 0xeb, 0x51, 0xc1, 0x5c, 0x3c, 0xb3, + 0x60, 0xb6, 0xa0, 0x1a, 0xec, 0x93, 0xe0, 0xa1, 0xc8, 0x12, 0xe1, 0x2e, 0xd5, 0xed, 0xe6, 0x42, + 0xfb, 0xdc, 0xdf, 0x2f, 0xd6, 0x17, 0x25, 0xc7, 0x54, 0x8a, 0x8f, 0x1b, 0x2c, 0xa1, 0xb2, 0xe1, + 0x1d, 0x61, 0x86, 0x42, 0xb2, 0x7c, 0x26, 0x21, 0x59, 0x07, 0x87, 0x0a, 0x3f, 0xeb, 0x85, 0x58, + 0xd2, 0x34, 0x72, 0x57, 0xea, 0x56, 0x73, 0xde, 0x03, 0x2a, 0xee, 0x1b, 0x4b, 0x4e, 0x7e, 0xb5, + 0x9b, 0xeb, 0x8c, 0x74, 0xcf, 0x69, 0xf2, 0x1b, 0xcb, 0xb6, 0x44, 0x1f, 0x1e, 0x6d, 0x77, 0xfb, + 0x2e, 0x9a, 0xd2, 0xfd, 0x03, 0xc7, 0x76, 0x1f, 0xb9, 0x30, 0x77, 0x40, 0xb8, 0xa0, 0x2c, 0x75, + 0xcf, 0xab, 0x8f, 0x0e, 0x96, 0x8d, 0x9f, 0x4b, 0x50, 0xd5, 0x1d, 0xf8, 0x26, 0x5c, 0xbc, 0x0c, + 0xa0, 0x5b, 0xbb, 0x30, 0x3a, 0xab, 0xca, 0xa2, 0x48, 0x33, 0x52, 0x17, 0xfb, 0xcc, 0x75, 0x39, + 0xd3, 0xd8, 0x5c, 0x85, 0x0a, 0x39, 0x94, 0x1c, 0x6b, 0x96, 0x7a, 0x7a, 0x31, 0xac, 0xd4, 0xec, + 0x59, 0x2a, 0xd5, 0xb8, 0x09, 0x95, 0xdd, 0xbc, 0xf6, 0x79, 0x84, 0xaa, 0x09, 0x74, 0x04, 0x96, + 0x8e, 0x50, 0x59, 0xd4, 0x05, 0x57, 0xa1, 0x72, 0x80, 0xe3, 0x6c, 0x10, 0xbb, 0x5e, 0x34, 0x7e, + 0xb7, 0x60, 0x49, 0x4b, 0xfa, 0x3d, 0x22, 0xf1, 0x6d, 0x2c, 0x31, 0xaa, 0x83, 0x13, 0x12, 0x11, + 0x70, 0xda, 0x93, 0x79, 0x15, 0xf4, 0x87, 0x8a, 0xa6, 0x9c, 0x98, 0xe4, 0x50, 0x8f, 0x03, 0x3f, + 0xe3, 0xb1, 0xf9, 0xa2, 0x33, 0xb0, 0xdd, 0xe7, 0xf1, 0x74, 0x19, 0x5b, 0x85, 0x0a, 0x4d, 0x70, + 0x34, 0x10, 0x30, 0xbd, 0x40, 0xb7, 0x00, 0xb0, 0x94, 0x9c, 0x76, 0x33, 0x49, 0x84, 0x5b, 0x51, + 0xea, 0x7f, 0x71, 0x52, 0x22, 0x54, 0xc8, 0xed, 0x72, 0x9e, 0x68, 0xaf, 0xe0, 0xa2, 0xe2, 0xd1, + 0x5c, 0x7e, 0xeb, 0xf1, 0x14, 0x55, 0xd7, 0x1e, 0x53, 0xdd, 0x77, 0x14, 0xcf, 0x6f, 0x16, 0x2c, + 0xaa, 0xa6, 0x7f, 0xbb, 0xe1, 0x1c, 0x67, 0x83, 0x3d, 0xca, 0x86, 0x77, 0x14, 0xcc, 0x16, 0xd8, + 0x9d, 0x50, 0x18, 0xaa, 0x58, 0xea, 0x35, 0x32, 0x8d, 0x2a, 0x8d, 0x5f, 0x2d, 0x80, 0xdb, 0x24, + 0x26, 0x92, 0x28, 0xda, 0xdf, 0x00, 0xd3, 0x44, 0x3e, 0x0d, 0x85, 0x0a, 0xde, 0xd9, 0xba, 0x30, + 0xe9, 0x0e, 0x9d, 0x50, 0x78, 0x55, 0x0d, 0xcd, 0xcf, 0xbc, 0x01, 0xa6, 0x58, 0xca, 0xaf, 0x34, + 0xc5, 0x4f, 0x43, 0x73, 0xbf, 0xeb, 0x50, 0x1d, 0x4c, 0x44, 0xa1, 0xf2, 0xf4, 0x1a, 0xb7, 0xf9, + 0x48, 0xcf, 0x47, 0xd1, 0x78, 0x6e, 0xc1, 0xf9, 0x7b, 0x34, 0xe2, 0x38, 0xaf, 0x47, 0xe1, 0xc5, + 0xb4, 0x06, 0x55, 0xc1, 0x03, 0x5f, 0xa8, 0x01, 0x6b, 0xa9, 0x01, 0x3b, 0x27, 0x78, 0xb0, 0x93, + 0x0f, 0xd5, 0x0e, 0x34, 0xf2, 0xbd, 0x29, 0xaf, 0xd5, 0x92, 0x72, 0xba, 0x2c, 0x78, 0x70, 0xf7, + 0xe4, 0x07, 0xeb, 0x1a, 0x54, 0x43, 0x21, 0xcd, 0x31, 0xb6, 0x3e, 0x26, 0x14, 0x52, 0x1d, 0xf3, + 0x11, 0x54, 0x87, 0x09, 0x3c, 0x8d, 0x5c, 0xcd, 0x0f, 0x72, 0xd8, 0xf8, 0x01, 0x16, 0x8a, 0xf2, + 0x83, 0x3e, 0x31, 0x72, 0x65, 0xa9, 0x46, 0xf8, 0xef, 0x34, 0xb9, 0xda, 0xdc, 0xc5, 0x91, 0xe9, + 0x09, 0xe5, 0xb7, 0xb6, 0x01, 0xf6, 0x2e, 0x8e, 0xd0, 0x0a, 0xd8, 0x0f, 0x49, 0xdf, 0xf4, 0x71, + 0xfe, 0xf3, 0x04, 0xa5, 0xfa, 0xa5, 0x04, 0x2b, 0x3b, 0xfb, 0x38, 0x64, 0x8f, 0x0a, 0x2f, 0xb2, + 0xeb, 0x30, 0xcf, 0x7a, 0x84, 0xab, 0x27, 0xd6, 0xb4, 0x41, 0x30, 0x44, 0x9a, 0x06, 0x2c, 0x9d, + 0x4e, 0xab, 0x47, 0x5f, 0x21, 0xf6, 0xf8, 0x2b, 0x64, 0xf4, 0x3d, 0x54, 0x1e, 0x7f, 0x0f, 0x1d, + 0x1b, 0xdb, 0x95, 0x53, 0x8c, 0xed, 0xe3, 0xf3, 0x75, 0x76, 0x74, 0xbe, 0x16, 0xc6, 0xe4, 0xdc, + 0xb1, 0x31, 0xd9, 0xee, 0x3c, 0x7d, 0x59, 0xb3, 0x9e, 0xbd, 0xac, 0x59, 0x7f, 0xbd, 0xac, 0x59, + 0x3f, 0xbd, 0xaa, 0xcd, 0x3c, 0x7b, 0x55, 0x9b, 0xf9, 0xe3, 0x55, 0x6d, 0xe6, 0xdb, 0x56, 0x44, + 0xe5, 0x7e, 0xd6, 0xdd, 0x0c, 0x58, 0xd2, 0xea, 0xa6, 0xdd, 0x8d, 0x60, 0x1f, 0xd3, 0xb4, 0x55, + 0xf8, 0xcf, 0x7a, 0x78, 0xfc, 0x5f, 0x78, 0x77, 0x56, 0xfd, 0x6b, 0xbd, 0xf6, 0x6f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x0a, 0xa4, 0xad, 0x31, 0xa8, 0x0f, 0x00, 0x00, } func (m *BucketInfo) Marshal() (dAtA []byte, err error) { @@ -1284,6 +1295,15 @@ func (m *BucketInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.DelegatedAgentAddresses) > 0 { + for iNdEx := len(m.DelegatedAgentAddresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.DelegatedAgentAddresses[iNdEx]) + copy(dAtA[i:], m.DelegatedAgentAddresses[iNdEx]) + i = encodeVarintTypes(dAtA, i, uint64(len(m.DelegatedAgentAddresses[iNdEx]))) + i-- + dAtA[i] = 0x62 + } + } if m.Tags != nil { { size, err := m.Tags.MarshalToSizedBuffer(dAtA[:i]) @@ -2216,6 +2236,12 @@ func (m *BucketInfo) Size() (n int) { l = m.Tags.Size() n += 1 + l + sovTypes(uint64(l)) } + if len(m.DelegatedAgentAddresses) > 0 { + for _, s := range m.DelegatedAgentAddresses { + l = len(s) + n += 1 + l + sovTypes(uint64(l)) + } + } return n } @@ -2895,6 +2921,38 @@ func (m *BucketInfo) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatedAgentAddresses", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DelegatedAgentAddresses = append(m.DelegatedAgentAddresses, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) From d753e9edf4af66f9266993d198e3dd306528eb4e Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Thu, 29 Feb 2024 15:40:02 +0800 Subject: [PATCH 02/10] enable delegated agent to update object --- app/upgrade.go | 3 + e2e/tests/storage_test.go | 67 +- proto/greenfield/storage/events.proto | 4 + proto/greenfield/storage/tx.proto | 51 +- x/permission/types/types.go | 43 +- x/storage/keeper/keeper.go | 237 ++- x/storage/keeper/msg_server.go | 45 +- x/storage/types/codec.go | 6 + x/storage/types/errors.go | 2 + x/storage/types/events.pb.go | 298 ++-- x/storage/types/message.go | 166 +- x/storage/types/options.go | 5 + x/storage/types/tx.pb.go | 1997 ++++++++++++++++++++----- 13 files changed, 2217 insertions(+), 707 deletions(-) diff --git a/app/upgrade.go b/app/upgrade.go index 436c6218d..3d9b296d9 100644 --- a/app/upgrade.go +++ b/app/upgrade.go @@ -209,6 +209,9 @@ func (app *App) registerPawneeUpgradeHandler() { // todo app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgUpdateDelegatedAgent{}), 1.2e3)) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateCreateObject{}), 1.2e3)) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateUpdateObjectContent{}), 1.2e3)) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgSealObjectV2{}), 1.2e3)) + return app.mm.RunMigrations(ctx, app.configurator, fromVM) }) diff --git a/e2e/tests/storage_test.go b/e2e/tests/storage_test.go index 58d89bddf..aaeddef62 100644 --- a/e2e/tests/storage_test.go +++ b/e2e/tests/storage_test.go @@ -2537,12 +2537,16 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { s.SendTxBlockWithExpectErrorString(msgDelegateCreateObject, sp.OperatorKey, "has no CreateObject permission of the bucket") statement := &permissiontypes.Statement{ - Actions: []permissiontypes.ActionType{permissiontypes.ACTION_CREATE_OBJECT}, - Effect: permissiontypes.EFFECT_ALLOW, + Actions: []permissiontypes.ActionType{permissiontypes.ACTION_CREATE_OBJECT, permissiontypes.ACTION_UPDATE_OBJECT_CONTENT}, + Effect: permissiontypes.EFFECT_ALLOW, + Resources: []string{fmt.Sprintf("grn:o::%s/*", bucketName)}, } + principal := permissiontypes.NewPrincipalWithAccount(user.GetAddr()) msgPutPolicy := storagetypes.NewMsgPutPolicy(bucketOwner.GetAddr(), types2.NewBucketGRN(bucketName).String(), principal, []*permissiontypes.Statement{statement}, nil) + fmt.Println(types2.NewBucketGRN(bucketName).String()) + s.SendTxBlock(bucketOwner, msgPutPolicy) s.SendTxBlock(sp.OperatorKey, msgDelegateCreateObject) @@ -2558,4 +2562,63 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { s.Require().Equal(bucketOwner.GetAddr().String(), headObjectResp.ObjectInfo.Owner) s.Require().Equal(0, len(headObjectResp.ObjectInfo.Checksums)) + // SP seal object, and update the object checksum + checksum := sdk.Keccak256(buffer.Bytes()) + expectChecksum := [][]byte{checksum, checksum, checksum, checksum, checksum, checksum, checksum} + + gvgId := gvg.Id + msgSealObject := storagetypes.NewMsgSealObjectV2(sp.SealKey.GetAddr(), bucketName, objectName, gvg.Id, nil, expectChecksum) + secondarySigs := make([][]byte, 0) + secondarySPBlsPubKeys := make([]bls.PublicKey, 0) + blsSignHash := storagetypes.NewSecondarySpSealObjectSignDoc(s.GetChainID(), gvgId, headObjectResp.ObjectInfo.Id, storagetypes.GenerateHash(expectChecksum[:])).GetBlsSignHash() + // every secondary sp signs the checksums + for _, spID := range gvg.SecondarySpIds { + sig, err := core.BlsSignAndVerify(s.StorageProviders[spID], blsSignHash) + s.Require().NoError(err) + secondarySigs = append(secondarySigs, sig) + pk, err := bls.PublicKeyFromBytes(s.StorageProviders[spID].BlsKey.PubKey().Bytes()) + s.Require().NoError(err) + secondarySPBlsPubKeys = append(secondarySPBlsPubKeys, pk) + } + aggBlsSig, err := core.BlsAggregateAndVerify(secondarySPBlsPubKeys, blsSignHash, secondarySigs) + s.Require().NoError(err) + msgSealObject.SecondarySpBlsAggSignatures = aggBlsSig + s.T().Logf("msg %s", msgSealObject.String()) + s.SendTxBlock(sp.SealKey, msgSealObject) + + headObjectResp, err = s.Client.HeadObject(ctx, &headObjectReq) + s.Require().NoError(err) + s.Require().Equal(objectName, headObjectResp.ObjectInfo.ObjectName) + s.Require().Equal(user.GetAddr().String(), headObjectResp.ObjectInfo.Creator) + s.Require().Equal(bucketOwner.GetAddr().String(), headObjectResp.ObjectInfo.Owner) + s.Require().Equal(expectChecksum, headObjectResp.ObjectInfo.Checksums) + + // delegate update + var newBuffer bytes.Buffer + for i := 0; i < 2048; i++ { + newBuffer.WriteString(fmt.Sprintf("[%05d] %s\n", i, line)) + } + newPayloadSize := uint64(newBuffer.Len()) + newChecksum := sdk.Keccak256(newBuffer.Bytes()) + newExpectChecksum := [][]byte{newChecksum, newChecksum, newChecksum, newChecksum, newChecksum, newChecksum, newChecksum} + + msgUpdateObject := storagetypes.NewMsgDelegateUpdateObjectContent(sp.OperatorKey.GetAddr(), + user.GetAddr(), bucketName, objectName, newPayloadSize, nil) + s.SendTxBlock(sp.OperatorKey, msgUpdateObject) + s.T().Logf("msgUpdateObject %s", msgUpdateObject.String()) + + // every secondary sp signs the checksums + newSecondarySigs := make([][]byte, 0) + newBlsSignHash := storagetypes.NewSecondarySpSealObjectSignDoc(s.GetChainID(), gvgId, headObjectResp.ObjectInfo.Id, storagetypes.GenerateHash(newExpectChecksum[:])).GetBlsSignHash() + for _, spID := range gvg.SecondarySpIds { + sig, err := core.BlsSignAndVerify(s.StorageProviders[spID], newBlsSignHash) + s.Require().NoError(err) + newSecondarySigs = append(newSecondarySigs, sig) + } + aggBlsSig, err = core.BlsAggregateAndVerify(secondarySPBlsPubKeys, newBlsSignHash, newSecondarySigs) + s.Require().NoError(err) + msgSealObject = storagetypes.NewMsgSealObjectV2(sp.SealKey.GetAddr(), bucketName, objectName, gvg.Id, nil, newExpectChecksum) + msgSealObject.SecondarySpBlsAggSignatures = aggBlsSig + s.T().Logf("msgSealObject %s", msgSealObject.String()) + s.SendTxBlock(sp.SealKey, msgSealObject) } diff --git a/proto/greenfield/storage/events.proto b/proto/greenfield/storage/events.proto index 306744127..58e8b1562 100644 --- a/proto/greenfield/storage/events.proto +++ b/proto/greenfield/storage/events.proto @@ -178,6 +178,10 @@ message EventSealObject { uint32 global_virtual_group_id = 7; // local_virtual_group_id defines the unique id of lvg which the object stored uint32 local_virtual_group_id = 8; + // checksums define the total checksums of the object which generated by redundancy + // SP might set the checksum of object if it was delegated created by SP, which checksum + // will not be available until sealing object. + repeated bytes checksums = 9; } // EventCopyObject is emitted on MsgCopyObject diff --git a/proto/greenfield/storage/tx.proto b/proto/greenfield/storage/tx.proto index 5373b1c6c..c7b760f78 100644 --- a/proto/greenfield/storage/tx.proto +++ b/proto/greenfield/storage/tx.proto @@ -28,6 +28,7 @@ service Msg { // basic operation of object rpc CreateObject(MsgCreateObject) returns (MsgCreateObjectResponse); rpc SealObject(MsgSealObject) returns (MsgSealObjectResponse); + rpc SealObjectV2(MsgSealObjectV2) returns (MsgSealObjectV2Response); rpc RejectSealObject(MsgRejectSealObject) returns (MsgRejectSealObjectResponse); rpc CopyObject(MsgCopyObject) returns (MsgCopyObjectResponse); rpc DeleteObject(MsgDeleteObject) returns (MsgDeleteObjectResponse); @@ -38,6 +39,7 @@ service Msg { rpc UpdateObjectContent(MsgUpdateObjectContent) returns (MsgUpdateObjectContentResponse); rpc CancelUpdateObjectContent(MsgCancelUpdateObjectContent) returns (MsgCancelUpdateObjectContentResponse); rpc DelegateCreateObject(MsgDelegateCreateObject) returns (MsgDelegateCreateObjectResponse); + rpc DelegateUpdateObjectContent(MsgDelegateUpdateObjectContent) returns (MsgDelegateUpdateObjectContentResponse); // basic operation of group rpc CreateGroup(MsgCreateGroup) returns (MsgCreateGroupResponse); @@ -192,6 +194,33 @@ message MsgSealObject { message MsgSealObjectResponse {} +message MsgSealObjectV2 { + option (cosmos.msg.v1.signer) = "operator"; + + // operator defines the account address of primary SP + string operator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // bucket_name defines the name of the bucket where the object is stored. + string bucket_name = 2; + + // object_name defines the name of object to be sealed. + string object_name = 3; + + // global_virtual_group_id defines the id of global virtual group + uint32 global_virtual_group_id = 4; + + // secondary_sp_bls_agg_signatures defines the aggregate bls signature of the secondary sp that can + // acknowledge that the payload data has received and stored. + bytes secondary_sp_bls_agg_signatures = 5; + + // (optional) checksums define the total checksums of the object which generated by redundancy + // SP might set the checksum of object if it was delegated created by SP, which checksum + // will not be available until sealing object. + repeated bytes expect_checksums = 6; +} + +message MsgSealObjectV2Response {} + message MsgRejectSealObject { option (cosmos.msg.v1.signer) = "operator"; @@ -714,6 +743,25 @@ message MsgDelegateCreateObjectResponse { ]; } +message MsgDelegateUpdateObjectContent { + option (cosmos.msg.v1.signer) = "operator"; + // operator defines the account address of the operator, it is the delegated agent that allows to creat object under bucket. + string operator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // updater defines the account address of the object updater. + string updater = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // bucket_name defines the name of the bucket where the object is stored. + string bucket_name = 3; + // object_name defines the name of object + string object_name = 4; + // payload_size defines size of the object's payload + uint64 payload_size = 5; + // content_type define the format of the object which should be a standard MIME type. + string content_type = 6; + // expect_checksums defines a list of hashes which was generate by redundancy algorithm. + repeated bytes expect_checksums = 7; +} + +message MsgDelegateUpdateObjectContentResponse {} message MsgUpdateDelegatedAgent { option (cosmos.msg.v1.signer) = "operator"; @@ -728,5 +776,4 @@ message MsgUpdateDelegatedAgent { repeated string agents_to_remove = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } -message MsgUpdateDelegatedAgentResponse { -} \ No newline at end of file +message MsgUpdateDelegatedAgentResponse {} \ No newline at end of file diff --git a/x/permission/types/types.go b/x/permission/types/types.go index a4852aaf6..ae16f3734 100644 --- a/x/permission/types/types.go +++ b/x/permission/types/types.go @@ -28,12 +28,13 @@ var ( ACTION_UPDATE_BUCKET_INFO: true, ACTION_DELETE_BUCKET: true, - ACTION_CREATE_OBJECT: true, - ACTION_DELETE_OBJECT: true, - ACTION_GET_OBJECT: true, - ACTION_COPY_OBJECT: true, - ACTION_EXECUTE_OBJECT: true, - ACTION_LIST_OBJECT: true, + ACTION_CREATE_OBJECT: true, + ACTION_DELETE_OBJECT: true, + ACTION_GET_OBJECT: true, + ACTION_COPY_OBJECT: true, + ACTION_EXECUTE_OBJECT: true, + ACTION_LIST_OBJECT: true, + ACTION_UPDATE_OBJECT_CONTENT: true, ACTION_TYPE_ALL: true, } @@ -41,24 +42,26 @@ var ( ACTION_UPDATE_BUCKET_INFO: true, ACTION_DELETE_BUCKET: true, - ACTION_CREATE_OBJECT: true, - ACTION_DELETE_OBJECT: true, - ACTION_GET_OBJECT: true, - ACTION_COPY_OBJECT: true, - ACTION_EXECUTE_OBJECT: true, - ACTION_LIST_OBJECT: true, - ACTION_UPDATE_OBJECT_INFO: true, + ACTION_CREATE_OBJECT: true, + ACTION_DELETE_OBJECT: true, + ACTION_GET_OBJECT: true, + ACTION_COPY_OBJECT: true, + ACTION_EXECUTE_OBJECT: true, + ACTION_LIST_OBJECT: true, + ACTION_UPDATE_OBJECT_INFO: true, + ACTION_UPDATE_OBJECT_CONTENT: true, ACTION_TYPE_ALL: true, } ObjectAllowedActions = map[ActionType]bool{ - ACTION_UPDATE_OBJECT_INFO: true, - ACTION_CREATE_OBJECT: true, - ACTION_DELETE_OBJECT: true, - ACTION_GET_OBJECT: true, - ACTION_COPY_OBJECT: true, - ACTION_EXECUTE_OBJECT: true, - ACTION_LIST_OBJECT: true, + ACTION_UPDATE_OBJECT_INFO: true, + ACTION_CREATE_OBJECT: true, + ACTION_DELETE_OBJECT: true, + ACTION_GET_OBJECT: true, + ACTION_COPY_OBJECT: true, + ACTION_EXECUTE_OBJECT: true, + ACTION_LIST_OBJECT: true, + ACTION_UPDATE_OBJECT_CONTENT: true, ACTION_TYPE_ALL: true, } diff --git a/x/storage/keeper/keeper.go b/x/storage/keeper/keeper.go index e73cb09e6..184decb2b 100644 --- a/x/storage/keeper/keeper.go +++ b/x/storage/keeper/keeper.go @@ -569,31 +569,57 @@ func (k Keeper) CreateObject( // primary sp sp := k.MustGetPrimarySPForBucket(ctx, bucketInfo) + creator := operator + if opts.Delegated { + creator = opts.Creator + if operator.String() != sp.OperatorAddress { + // 3rd party must provide checksums + if opts.Checksums == nil { + return sdkmath.ZeroUint(), types.ErrObjectChecksumsMissing + } else { + if len(opts.Checksums) != int(1+k.GetExpectSecondarySPNumForECObject(ctx, ctx.BlockTime().Unix())) { + return sdkmath.ZeroUint(), gnfderrors.ErrInvalidChecksum.Wrapf("ExpectChecksums missing, expect: %d, actual: %d", + 1+k.RedundantParityChunkNum(ctx)+k.RedundantDataChunkNum(ctx), + len(opts.Checksums)) + } + } + } + allowed := false + for _, delegatedAgent := range bucketInfo.DelegatedAgentAddresses { + if operator.String() == delegatedAgent { + allowed = true + } + } + if !allowed { + return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrap("the delegatee address is not allowed to create object") + } + } // verify permission verifyOpts := &permtypes.VerifyOptions{ WantedSize: &payloadSize, } - effect := k.VerifyBucketPermission(ctx, bucketInfo, operator, permtypes.ACTION_CREATE_OBJECT, verifyOpts) + effect := k.VerifyBucketPermission(ctx, bucketInfo, creator, permtypes.ACTION_CREATE_OBJECT, verifyOpts) if effect != permtypes.EFFECT_ALLOW { - return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrapf("The operator(%s) has no CreateObject permission of the bucket(%s)", + return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrapf("The creator(%s) has no CreateObject permission of the bucket(%s)", operator.String(), bucketName) } - var creator sdk.AccAddress - if !operator.Equals(sdk.MustAccAddressFromHex(bucketInfo.Owner)) { - creator = operator + // set objectInfo creator to empty if same as owner + objectInfoCreator := creator + if objectInfoCreator.Equals(sdk.MustAccAddressFromHex(bucketInfo.Owner)) { + objectInfoCreator = sdk.AccAddress{} } - // check approval - if opts.PrimarySpApproval.ExpiredHeight < uint64(ctx.BlockHeight()) { - return sdkmath.ZeroUint(), errors.Wrapf(types.ErrInvalidApproval, "The approval of sp is expired.") - } - - err = k.VerifySPAndSignature(ctx, sp, opts.ApprovalMsgBytes, opts.PrimarySpApproval.Sig, operator) - if err != nil { - return sdkmath.ZeroUint(), err - } + //// check approval + //if opts.PrimarySpApproval.ExpiredHeight < uint64(ctx.BlockHeight()) { + // return sdkmath.ZeroUint(), errors.Wrapf(types.ErrInvalidApproval, "The approval of sp is expired.") + //} + // + //err = k.VerifySPAndSignature(ctx, sp, opts.ApprovalMsgBytes, opts.PrimarySpApproval.Sig, operator) + //if err != nil { + // return sdkmath.ZeroUint(), err + //} objectKey := types.GetObjectKey(bucketName, objectName) if store.Has(objectKey) { @@ -612,7 +638,7 @@ func (k Keeper) CreateObject( // construct objectInfo objectInfo := types.ObjectInfo{ Owner: bucketInfo.Owner, - Creator: creator.String(), + Creator: objectInfoCreator.String(), BucketName: bucketName, ObjectName: objectName, PayloadSize: payloadSize, @@ -646,125 +672,6 @@ func (k Keeper) CreateObject( store.Set(objectKey, k.objectSeq.EncodeSequence(objectInfo.Id)) store.Set(types.GetObjectByIDKey(objectInfo.Id), obz) - if err = ctx.EventManager().EmitTypedEvents(&types.EventCreateObject{ - Creator: operator.String(), - Owner: objectInfo.Owner, - BucketName: bucketInfo.BucketName, - ObjectName: objectInfo.ObjectName, - BucketId: bucketInfo.Id, - ObjectId: objectInfo.Id, - CreateAt: objectInfo.CreateAt, - PayloadSize: objectInfo.PayloadSize, - Visibility: objectInfo.Visibility, - PrimarySpId: sp.Id, - ContentType: objectInfo.ContentType, - Status: objectInfo.ObjectStatus, - RedundancyType: objectInfo.RedundancyType, - SourceType: objectInfo.SourceType, - Checksums: objectInfo.Checksums, - LocalVirtualGroupId: objectInfo.LocalVirtualGroupId, - }); err != nil { - return objectInfo.Id, err - } - return objectInfo.Id, nil -} - -func (k Keeper) DelegateCreateObject( - ctx sdk.Context, delegatee, creator sdk.AccAddress, bucketName, objectName string, payloadSize uint64, - opts types.CreateObjectOptions, -) (sdkmath.Uint, error) { - store := ctx.KVStore(k.storeKey) - - // check payload size - if payloadSize > k.MaxPayloadSize(ctx) { - return sdkmath.ZeroUint(), types.ErrTooLargeObject - } - - // check bucket - bucketInfo, found := k.GetBucketInfo(ctx, bucketName) - if !found { - return sdkmath.ZeroUint(), types.ErrNoSuchBucket - } - err := bucketInfo.CheckBucketStatus() - if err != nil { - return sdkmath.ZeroUint(), err - } - - // primary sp - sp := k.MustGetPrimarySPForBucket(ctx, bucketInfo) - - allowed := false - _ = false - // check if the delegated agent is the primary SP. - for _, delegatedAgent := range bucketInfo.DelegatedAgentAddresses { - if delegatee.String() == delegatedAgent { - allowed = true - if delegatee.String() == sp.OperatorAddress { - _ = true - } - } - } - if !allowed { - return sdkmath.ZeroUint(), fmt.Errorf("the delegatee address is not allowed to create object") - } - - // verify permission of creator - verifyOpts := &permtypes.VerifyOptions{ - WantedSize: &payloadSize, - } - effect := k.VerifyBucketPermission(ctx, bucketInfo, creator, permtypes.ACTION_CREATE_OBJECT, verifyOpts) - if effect != permtypes.EFFECT_ALLOW { - return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrapf("The creator(%s) has no CreateObject permission of the bucket(%s)", - creator.String(), bucketName) - } - objectKey := types.GetObjectKey(bucketName, objectName) - if store.Has(objectKey) { - return sdkmath.ZeroUint(), types.ErrObjectAlreadyExists - } - // check payload size, the empty object doesn't need sealed - var objectStatus types.ObjectStatus - if payloadSize == 0 { - // empty object does not interact with sp - objectStatus = types.OBJECT_STATUS_SEALED - } else { - objectStatus = types.OBJECT_STATUS_CREATED - } - // construct objectInfo - objectInfo := types.ObjectInfo{ - Owner: bucketInfo.Owner, - Creator: creator.String(), - BucketName: bucketName, - ObjectName: objectName, - PayloadSize: payloadSize, - Visibility: opts.Visibility, - ContentType: opts.ContentType, - Id: k.GenNextObjectID(ctx), - CreateAt: ctx.BlockTime().Unix(), - ObjectStatus: objectStatus, - RedundancyType: opts.RedundancyType, - SourceType: opts.SourceType, - Checksums: opts.Checksums, - } - if objectInfo.PayloadSize == 0 { - _, err := k.SealEmptyObjectOnVirtualGroup(ctx, bucketInfo, &objectInfo) - if err != nil { - return sdkmath.ZeroUint(), err - } - } else { - // Lock Fee - err = k.LockObjectStoreFee(ctx, bucketInfo, &objectInfo) - if err != nil { - return sdkmath.ZeroUint(), err - } - } - - bbz := k.cdc.MustMarshal(bucketInfo) - store.Set(types.GetBucketByIDKey(bucketInfo.Id), bbz) - - obz := k.cdc.MustMarshal(&objectInfo) - store.Set(objectKey, k.objectSeq.EncodeSequence(objectInfo.Id)) - store.Set(types.GetObjectByIDKey(objectInfo.Id), obz) - if err = ctx.EventManager().EmitTypedEvents(&types.EventCreateObject{ Creator: creator.String(), Owner: objectInfo.Owner, @@ -873,6 +780,7 @@ func (k Keeper) MustGetShadowObjectInfo(ctx sdk.Context, bucketName, objectName type SealObjectOptions struct { GlobalVirtualGroupId uint32 SecondarySpBlsSignatures []byte + Checksums [][]byte } func (k Keeper) SealObject( @@ -899,6 +807,13 @@ func (k Keeper) SealObject( if !found { return types.ErrNoSuchObject } + + if objectInfo.Checksums == nil { + if opts.Checksums == nil { + return types.ErrObjectChecksumsMissing + } + objectInfo.Checksums = opts.Checksums + } store := ctx.KVStore(k.storeKey) prevPayloadSize := objectInfo.PayloadSize @@ -920,6 +835,12 @@ func (k Keeper) SealObject( shadowObjectInfo := k.MustGetShadowObjectInfo(ctx, bucketName, objectName) objectInfo.UpdatedAt = shadowObjectInfo.UpdatedAt // the updated_at in objetInfo will not be visible until the object is sealed. objectInfo.Version = shadowObjectInfo.Version + if shadowObjectInfo.Checksums == nil { + if opts.Checksums == nil { + return types.ErrObjectChecksumsMissing + } + shadowObjectInfo.Checksums = opts.Checksums + } objectInfo.Checksums = shadowObjectInfo.Checksums objectInfo.PayloadSize = shadowObjectInfo.PayloadSize objectInfo.UpdatedBy = shadowObjectInfo.Operator @@ -989,6 +910,7 @@ func (k Keeper) SealObject( Status: objectInfo.ObjectStatus, GlobalVirtualGroupId: opts.GlobalVirtualGroupId, LocalVirtualGroupId: objectInfo.LocalVirtualGroupId, + Checksums: objectInfo.Checksums, }); err != nil { return err } @@ -2549,27 +2471,52 @@ func (k Keeper) UpdateObjectContent( return types.ErrObjectIsUpdating.Wrapf("The object is already being updated") } // check permission - effect := k.VerifyObjectPermission(ctx, bucketInfo, objectInfo, operator, permtypes.ACTION_UPDATE_OBJECT_CONTENT) + var updater sdk.AccAddress + if opts.Delegated { + updater = opts.Updater + } else { + updater = operator + } + effect := k.VerifyObjectPermission(ctx, bucketInfo, objectInfo, updater, permtypes.ACTION_UPDATE_OBJECT_CONTENT) if effect != permtypes.EFFECT_ALLOW { return types.ErrAccessDenied.Wrapf( - "The operator(%s) has no updateObjectContent permission of the bucket(%s), object(%s)", - operator.String(), bucketName, objectName) + "The updater(%s) has no updateObjectContent permission of the bucket(%s), object(%s)", + updater.String(), bucketName, objectName) } - // check payload size if payloadSize > k.MaxPayloadSize(ctx) { return types.ErrTooLargeObject } - // primary sp sp := k.MustGetPrimarySPForBucket(ctx, bucketInfo) // a sp is not in service, neither in maintenance if sp.Status != sptypes.STATUS_IN_SERVICE && !k.fromSpMaintenanceAcct(sp, operator) { return errors.Wrap(types.ErrNoSuchStorageProvider, "the storage provider is not in service") } - + if opts.Delegated { + if operator.String() != sp.OperatorAddress { + // 3rd party must provide checksums + if opts.Checksums == nil { + return types.ErrObjectChecksumsMissing + } else { + if len(opts.Checksums) != int(1+k.GetExpectSecondarySPNumForECObject(ctx, ctx.BlockTime().Unix())) { + return gnfderrors.ErrInvalidChecksum.Wrapf("ExpectChecksums missing, expect: %d, actual: %d", + 1+k.RedundantParityChunkNum(ctx)+k.RedundantDataChunkNum(ctx), + len(opts.Checksums)) + } + } + } + allowed := false + for _, delegatedAgent := range bucketInfo.DelegatedAgentAddresses { + if operator.String() == delegatedAgent { + allowed = true + } + } + if !allowed { + return types.ErrAccessDenied.Wrap("the delegatee's address is not allowed to create object") + } + } nextVersion := objectInfo.Version + 1 - if payloadSize == 0 { internalBucketInfo := k.MustGetInternalBucketInfo(ctx, bucketInfo.Id) err := k.UnChargeObjectStoreFee(ctx, bucketInfo, k.MustGetInternalBucketInfo(ctx, bucketInfo.Id), objectInfo) @@ -2581,12 +2528,11 @@ func (k Keeper) UpdateObjectContent( if err != nil { return err } - objectInfo.UpdatedAt = ctx.BlockTime().Unix() objectInfo.Version = nextVersion objectInfo.PayloadSize = 0 objectInfo.Checksums = opts.Checksums - objectInfo.UpdatedBy = operator.String() + objectInfo.UpdatedBy = updater.String() objectInfo.ContentType = opts.ContentType _, err = k.SealEmptyObjectOnVirtualGroup(ctx, bucketInfo, objectInfo) @@ -2596,7 +2542,7 @@ func (k Keeper) UpdateObjectContent( } else { objectInfo.IsUpdating = true shadowObjectInfo := &types.ShadowObjectInfo{ - Operator: operator.String(), + Operator: updater.String(), Id: objectInfo.Id, PayloadSize: payloadSize, Checksums: opts.Checksums, @@ -2614,9 +2560,8 @@ func (k Keeper) UpdateObjectContent( obz := k.cdc.MustMarshal(objectInfo) store.Set(types.GetObjectKey(bucketName, objectName), k.objectSeq.EncodeSequence(objectInfo.Id)) store.Set(types.GetObjectByIDKey(objectInfo.Id), obz) - if err = ctx.EventManager().EmitTypedEvents(&types.EventUpdateObjectContent{ - Operator: operator.String(), + Operator: updater.String(), ObjectId: objectInfo.Id, PayloadSize: payloadSize, Checksums: opts.Checksums, diff --git a/x/storage/keeper/msg_server.go b/x/storage/keeper/msg_server.go index f49406011..a8b720701 100644 --- a/x/storage/keeper/msg_server.go +++ b/x/storage/keeper/msg_server.go @@ -768,21 +768,16 @@ func (k msgServer) CancelUpdateObjectContent(goCtx context.Context, msg *storage func (k msgServer) DelegateCreateObject(goCtx context.Context, msg *storagetypes.MsgDelegateCreateObject) (*storagetypes.MsgDelegateCreateObjectResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - delegatedAddr := sdk.MustAccAddressFromHex(msg.Operator) + operatorAddr := sdk.MustAccAddressFromHex(msg.Operator) creatorAddr := sdk.MustAccAddressFromHex(msg.Creator) - if msg.ExpectChecksums != nil { - if len(msg.ExpectChecksums) != int(1+k.GetExpectSecondarySPNumForECObject(ctx, ctx.BlockTime().Unix())) { - return nil, gnfderrors.ErrInvalidChecksum.Wrapf("ExpectChecksums missing, expect: %d, actual: %d", - 1+k.Keeper.RedundantParityChunkNum(ctx)+k.Keeper.RedundantDataChunkNum(ctx), - len(msg.ExpectChecksums)) - } - } - id, err := k.Keeper.DelegateCreateObject(ctx, delegatedAddr, creatorAddr, msg.BucketName, msg.ObjectName, msg.PayloadSize, storagetypes.CreateObjectOptions{ + id, err := k.Keeper.CreateObject(ctx, operatorAddr, msg.BucketName, msg.ObjectName, msg.PayloadSize, storagetypes.CreateObjectOptions{ SourceType: types.SOURCE_TYPE_ORIGIN, Visibility: msg.Visibility, ContentType: msg.ContentType, RedundancyType: msg.RedundancyType, Checksums: msg.ExpectChecksums, + Delegated: true, + Creator: creatorAddr, }) if err != nil { return nil, err @@ -792,6 +787,38 @@ func (k msgServer) DelegateCreateObject(goCtx context.Context, msg *storagetypes }, nil } +func (k msgServer) DelegateUpdateObjectContent(goCtx context.Context, msg *storagetypes.MsgDelegateUpdateObjectContent) (*storagetypes.MsgDelegateUpdateObjectContentResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + operatorAddr := sdk.MustAccAddressFromHex(msg.Operator) + updaterAddr := sdk.MustAccAddressFromHex(msg.Updater) + err := k.Keeper.UpdateObjectContent(ctx, operatorAddr, msg.BucketName, msg.ObjectName, msg.PayloadSize, storagetypes.UpdateObjectOptions{ + ContentType: msg.ContentType, + Checksums: msg.ExpectChecksums, + Delegated: true, + Updater: updaterAddr, + }) + if err != nil { + return nil, err + } + return &types.MsgDelegateUpdateObjectContentResponse{}, nil +} + +func (k msgServer) SealObjectV2(goCtx context.Context, msg *storagetypes.MsgSealObjectV2) (*storagetypes.MsgSealObjectV2Response, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + spSealAcc := sdk.MustAccAddressFromHex(msg.Operator) + + err := k.Keeper.SealObject(ctx, spSealAcc, msg.BucketName, msg.ObjectName, SealObjectOptions{ + GlobalVirtualGroupId: msg.GlobalVirtualGroupId, + SecondarySpBlsSignatures: msg.SecondarySpBlsAggSignatures, + Checksums: msg.ExpectChecksums, + }) + if err != nil { + return nil, err + } + return &types.MsgSealObjectV2Response{}, nil +} + func (k Keeper) verifyGVGSignatures(ctx sdk.Context, bucketID math.Uint, dstSP *sptypes.StorageProvider, gvgMappings []*storagetypes.GVGMapping) error { // verify secondary sp signature for _, newLvg2gvg := range gvgMappings { diff --git a/x/storage/types/codec.go b/x/storage/types/codec.go index 1eee98226..1a26b1a1d 100644 --- a/x/storage/types/codec.go +++ b/x/storage/types/codec.go @@ -127,6 +127,12 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*sdk.Msg)(nil), &MsgUpdateDelegatedAgent{}, ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgSealObjectV2{}, + ) + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgDelegateUpdateObjectContent{}, + ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/storage/types/errors.go b/x/storage/types/errors.go index 32509e1c7..fb1a1fab3 100644 --- a/x/storage/types/errors.go +++ b/x/storage/types/errors.go @@ -34,6 +34,8 @@ var ( ErrUpdateObjectNotAllowed = errors.Register(ModuleName, 1126, "Object is not allowed to update") ErrObjectIsUpdating = errors.Register(ModuleName, 1127, "Object is being updated") ErrObjectIsNotUpdating = errors.Register(ModuleName, 1128, "Object is not being updated") + ErrObjectChecksumsPresent = errors.Register(ModuleName, 1129, "Object checksums is present") + ErrObjectChecksumsMissing = errors.Register(ModuleName, 1130, "Object checksums is missing") ErrInvalidCrossChainPackage = errors.Register(ModuleName, 3000, "invalid cross chain package") ErrAlreadyMirrored = errors.Register(ModuleName, 3001, "resource is already mirrored") diff --git a/x/storage/types/events.pb.go b/x/storage/types/events.pb.go index faddbb2b3..42d16a15a 100644 --- a/x/storage/types/events.pb.go +++ b/x/storage/types/events.pb.go @@ -650,6 +650,10 @@ type EventSealObject struct { GlobalVirtualGroupId uint32 `protobuf:"varint,7,opt,name=global_virtual_group_id,json=globalVirtualGroupId,proto3" json:"global_virtual_group_id,omitempty"` // local_virtual_group_id defines the unique id of lvg which the object stored LocalVirtualGroupId uint32 `protobuf:"varint,8,opt,name=local_virtual_group_id,json=localVirtualGroupId,proto3" json:"local_virtual_group_id,omitempty"` + // checksums define the total checksums of the object which generated by redundancy + // SP might set the checksum of object if it was delegated created by SP, which checksum + // will not be available until sealing object. + Checksums [][]byte `protobuf:"bytes,9,rep,name=checksums,proto3" json:"checksums,omitempty"` } func (m *EventSealObject) Reset() { *m = EventSealObject{} } @@ -727,6 +731,13 @@ func (m *EventSealObject) GetLocalVirtualGroupId() uint32 { return 0 } +func (m *EventSealObject) GetChecksums() [][]byte { + if m != nil { + return m.Checksums + } + return nil +} + // EventCopyObject is emitted on MsgCopyObject type EventCopyObject struct { // operator define the account address of operator who copy the object @@ -2706,126 +2717,126 @@ func init() { func init() { proto.RegisterFile("greenfield/storage/events.proto", fileDescriptor_946dcba4f763ddc4) } var fileDescriptor_946dcba4f763ddc4 = []byte{ - // 1891 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xcb, 0x8f, 0xdb, 0xc6, - 0x19, 0x37, 0xf5, 0x5a, 0xe9, 0xd3, 0x4a, 0xf2, 0xb2, 0x5b, 0x47, 0xdd, 0x24, 0x5a, 0x85, 0x45, - 0xd3, 0x4d, 0x50, 0x4b, 0x85, 0x93, 0x16, 0xbe, 0x19, 0xbb, 0xeb, 0xb4, 0x10, 0xda, 0x24, 0x2e, - 0xe5, 0xe4, 0xd0, 0x0b, 0x31, 0x22, 0x67, 0x65, 0xd6, 0x14, 0x87, 0x9d, 0x19, 0xed, 0x5a, 0xf9, - 0x07, 0x7a, 0x2a, 0x10, 0xa0, 0x28, 0xd0, 0x5e, 0x72, 0x6d, 0x81, 0xa2, 0x40, 0x0f, 0xb9, 0xf6, - 0xee, 0x63, 0xe2, 0x5e, 0xfa, 0x00, 0xd2, 0xc2, 0xbe, 0x34, 0x05, 0x8a, 0xf6, 0xdc, 0x53, 0xc1, - 0x99, 0x21, 0x45, 0x8a, 0x5a, 0x6b, 0x29, 0xc7, 0xde, 0x75, 0x6e, 0xe2, 0xe8, 0xc7, 0xd1, 0xf7, - 0xf8, 0x7d, 0x8f, 0xf9, 0x46, 0xb0, 0x3b, 0xa6, 0x18, 0xfb, 0x47, 0x2e, 0xf6, 0x9c, 0x3e, 0xe3, - 0x84, 0xa2, 0x31, 0xee, 0xe3, 0x63, 0xec, 0x73, 0xd6, 0x0b, 0x28, 0xe1, 0x44, 0xd7, 0xe7, 0x80, - 0x9e, 0x02, 0xec, 0x7c, 0xcd, 0x26, 0x6c, 0x42, 0x98, 0x25, 0x10, 0x7d, 0xf9, 0x20, 0xe1, 0x3b, - 0xdb, 0x63, 0x32, 0x26, 0x72, 0x3d, 0xfc, 0xa4, 0x56, 0x77, 0xc7, 0x84, 0x8c, 0x3d, 0xdc, 0x17, - 0x4f, 0xa3, 0xe9, 0x51, 0x9f, 0xbb, 0x13, 0xcc, 0x38, 0x9a, 0x04, 0x31, 0x60, 0x2e, 0x06, 0xc5, - 0x8c, 0x4c, 0xa9, 0x8d, 0xfb, 0x7c, 0x16, 0x60, 0xb6, 0x04, 0x10, 0xc9, 0x69, 0x93, 0xc9, 0x84, - 0xf8, 0x0a, 0xd0, 0x59, 0x02, 0x48, 0x6c, 0x60, 0xfc, 0xa9, 0x04, 0x5b, 0x6f, 0x85, 0x8a, 0x1d, - 0x52, 0x8c, 0x38, 0x3e, 0x98, 0xda, 0x77, 0x31, 0xd7, 0x7b, 0x50, 0x26, 0x27, 0x3e, 0xa6, 0x6d, - 0xad, 0xab, 0xed, 0xd5, 0x0e, 0xda, 0x0f, 0x3e, 0xbe, 0xba, 0xad, 0xf4, 0xd9, 0x77, 0x1c, 0x8a, - 0x19, 0x1b, 0x72, 0xea, 0xfa, 0x63, 0x53, 0xc2, 0xf4, 0x5d, 0xa8, 0x8f, 0xc4, 0x9b, 0x96, 0x8f, - 0x26, 0xb8, 0x5d, 0x08, 0xdf, 0x32, 0x41, 0x2e, 0xbd, 0x83, 0x26, 0x58, 0x3f, 0x00, 0x38, 0x76, - 0x99, 0x3b, 0x72, 0x3d, 0x97, 0xcf, 0xda, 0xc5, 0xae, 0xb6, 0xd7, 0xbc, 0x66, 0xf4, 0xb2, 0x36, - 0xec, 0xbd, 0x1f, 0xa3, 0x6e, 0xcf, 0x02, 0x6c, 0x26, 0xde, 0xd2, 0x5f, 0x84, 0x9a, 0x2d, 0x84, - 0xb4, 0x10, 0x6f, 0x97, 0xba, 0xda, 0x5e, 0xd1, 0xac, 0xca, 0x85, 0x7d, 0xae, 0x5f, 0x87, 0x9a, - 0x92, 0xc0, 0x75, 0xda, 0x65, 0x21, 0xf5, 0x8b, 0xf7, 0x3f, 0xdb, 0xbd, 0xf4, 0xd7, 0xcf, 0x76, - 0x4b, 0xef, 0xb9, 0x3e, 0x7f, 0xf0, 0xf1, 0xd5, 0xba, 0xd2, 0x20, 0x7c, 0x34, 0xab, 0x12, 0x3d, - 0x70, 0xf4, 0x1b, 0x50, 0x97, 0x86, 0xb5, 0x42, 0xbb, 0xb4, 0x2b, 0x42, 0xb6, 0xce, 0x32, 0xd9, - 0x86, 0x02, 0x26, 0xe5, 0x62, 0xf1, 0x67, 0xfd, 0x5b, 0xa0, 0xdb, 0x77, 0x10, 0x1d, 0x63, 0xc7, - 0xa2, 0x18, 0x39, 0xd6, 0x4f, 0xa7, 0x84, 0xa3, 0xf6, 0x46, 0x57, 0xdb, 0x2b, 0x99, 0x97, 0xd5, - 0x37, 0x26, 0x46, 0xce, 0x8f, 0xc2, 0x75, 0x7d, 0x1f, 0x5a, 0x01, 0x9a, 0x4d, 0xb0, 0xcf, 0x2d, - 0x24, 0x4d, 0xd9, 0xae, 0xae, 0x30, 0x72, 0x53, 0xbd, 0xa0, 0x56, 0x75, 0x03, 0x1a, 0x01, 0x75, - 0x27, 0x88, 0xce, 0x2c, 0x16, 0x84, 0xfa, 0xd6, 0xba, 0xda, 0x5e, 0xc3, 0xac, 0xab, 0xc5, 0x61, - 0x30, 0x70, 0xf4, 0x03, 0xe8, 0x8c, 0x3d, 0x32, 0x42, 0x9e, 0x75, 0xec, 0x52, 0x3e, 0x45, 0x9e, - 0x35, 0xa6, 0x64, 0x1a, 0x58, 0x47, 0x68, 0xe2, 0x7a, 0xb3, 0xf0, 0x25, 0x10, 0x2f, 0xed, 0x48, - 0xd4, 0xfb, 0x12, 0xf4, 0xfd, 0x10, 0xf3, 0x3d, 0x01, 0x19, 0x38, 0xfa, 0x75, 0xa8, 0x30, 0x8e, - 0xf8, 0x94, 0xb5, 0xeb, 0xc2, 0x28, 0xdd, 0x65, 0x46, 0x91, 0x8c, 0x19, 0x0a, 0x9c, 0xa9, 0xf0, - 0xc6, 0xaf, 0x0a, 0x8a, 0x55, 0x37, 0xb1, 0x87, 0x63, 0x56, 0xbd, 0x09, 0x55, 0x12, 0x60, 0x8a, - 0x38, 0x59, 0x4d, 0xac, 0x18, 0x39, 0xe7, 0x62, 0x61, 0x2d, 0x2e, 0x16, 0x33, 0x5c, 0x4c, 0x51, - 0xa5, 0x94, 0x87, 0x2a, 0xab, 0x8d, 0x5a, 0x5e, 0x65, 0x54, 0xe3, 0x67, 0x45, 0xf8, 0xaa, 0x30, - 0xcd, 0x7b, 0x81, 0x13, 0x07, 0xdc, 0xc0, 0x3f, 0x22, 0x6b, 0x9a, 0x67, 0x65, 0xe8, 0xa5, 0xd4, - 0x2d, 0xe6, 0x51, 0x77, 0x39, 0xb1, 0x4b, 0xa7, 0x10, 0xfb, 0x9b, 0x59, 0x62, 0x8b, 0x38, 0xcc, - 0xd0, 0x37, 0x9d, 0x0b, 0x2a, 0x6b, 0xe5, 0x82, 0xd5, 0x9e, 0xd8, 0x58, 0xe9, 0x89, 0xdf, 0x6a, - 0x70, 0x45, 0x92, 0xd4, 0x65, 0x36, 0xf1, 0xb9, 0xeb, 0x4f, 0x23, 0xa6, 0xa6, 0x6c, 0xa6, 0xe5, - 0xb1, 0xd9, 0x4a, 0x77, 0x5c, 0x81, 0x0a, 0xc5, 0x88, 0x11, 0x5f, 0x31, 0x53, 0x3d, 0x85, 0xd9, - 0xcd, 0x11, 0xc1, 0x92, 0xc8, 0x6e, 0x72, 0x61, 0x9f, 0x1b, 0xbf, 0xa8, 0xa4, 0xb2, 0xf4, 0xbb, - 0xa3, 0x9f, 0x60, 0x9b, 0xeb, 0xd7, 0x60, 0x43, 0xe4, 0xbf, 0x33, 0xf0, 0x25, 0x02, 0x7e, 0xf1, - 0xd1, 0xb4, 0x0b, 0x75, 0x22, 0xc4, 0x91, 0x80, 0x92, 0x04, 0xc8, 0xa5, 0x2c, 0xff, 0x2a, 0x79, - 0x6c, 0x79, 0x1d, 0x6a, 0x6a, 0x6b, 0xe5, 0xcf, 0x55, 0x6f, 0x4a, 0xf4, 0xc0, 0xc9, 0x66, 0xc8, - 0x6a, 0x36, 0x43, 0xbe, 0x02, 0x9b, 0x01, 0x9a, 0x79, 0x04, 0x39, 0x16, 0x73, 0x3f, 0xc0, 0x22, - 0x89, 0x96, 0xcc, 0xba, 0x5a, 0x1b, 0xba, 0x1f, 0x2c, 0x56, 0x2d, 0x58, 0x8b, 0xa9, 0xaf, 0xc0, - 0x66, 0x48, 0xae, 0x30, 0x2c, 0x44, 0x7d, 0xa9, 0x0b, 0x03, 0xd5, 0xd5, 0x9a, 0x28, 0x20, 0xa9, - 0xc2, 0xb6, 0x99, 0x29, 0x6c, 0x51, 0x12, 0x6e, 0x9c, 0x9e, 0x84, 0x25, 0x21, 0xd2, 0x49, 0x58, - 0xff, 0x01, 0xb4, 0x28, 0x76, 0xa6, 0xbe, 0x83, 0x7c, 0x7b, 0x26, 0x7f, 0xbc, 0x79, 0xba, 0x0a, - 0x66, 0x0c, 0x15, 0x2a, 0x34, 0x69, 0xea, 0x79, 0xb1, 0x4a, 0xb6, 0x72, 0x57, 0xc9, 0x97, 0xa0, - 0x66, 0xdf, 0xc1, 0xf6, 0x5d, 0x36, 0x9d, 0xb0, 0xf6, 0xe5, 0x6e, 0x71, 0x6f, 0xd3, 0x9c, 0x2f, - 0xe8, 0x6f, 0xc0, 0x15, 0x8f, 0xd8, 0x99, 0x70, 0x76, 0x9d, 0xf6, 0x96, 0xf0, 0xdc, 0x57, 0xc4, - 0xb7, 0xc9, 0x30, 0x1e, 0x38, 0xc6, 0x7f, 0x34, 0x78, 0x41, 0x46, 0x05, 0xf2, 0x6d, 0xec, 0xa5, - 0x62, 0xe3, 0x29, 0x25, 0xd3, 0x05, 0xb6, 0x17, 0x33, 0x6c, 0xcf, 0x30, 0xaf, 0x94, 0x65, 0x5e, - 0x8a, 0xd7, 0x95, 0x1c, 0xbc, 0x36, 0x3e, 0x2f, 0x40, 0x4b, 0x68, 0x3c, 0xc4, 0xc8, 0x3b, 0x67, - 0x4d, 0x53, 0x5a, 0x94, 0xf3, 0x44, 0xe7, 0x9c, 0xd2, 0x95, 0x9c, 0x94, 0xfe, 0x0e, 0xbc, 0xb0, - 0x34, 0xed, 0xc7, 0xf9, 0x7e, 0x3b, 0x9b, 0xef, 0x07, 0xce, 0x63, 0xd8, 0x55, 0x3d, 0x9d, 0x5d, - 0x1f, 0x15, 0x95, 0xad, 0x0f, 0x49, 0x30, 0x7b, 0x22, 0x5b, 0xbf, 0x0a, 0x2d, 0x46, 0x6d, 0x2b, - 0x6b, 0xef, 0x06, 0xa3, 0xf6, 0xc1, 0xdc, 0xe4, 0x0a, 0x97, 0x35, 0x7b, 0x88, 0x7b, 0x77, 0x6e, - 0xf9, 0x57, 0xa1, 0xe5, 0x30, 0x9e, 0xda, 0x4f, 0xa6, 0xdd, 0x86, 0xc3, 0x78, 0x7a, 0xbf, 0x10, - 0x97, 0xdc, 0xaf, 0x1c, 0xe3, 0x12, 0xfb, 0xdd, 0x80, 0x46, 0xe2, 0x77, 0xcf, 0xc6, 0xc9, 0x7a, - 0x2c, 0x92, 0x68, 0xa1, 0x1b, 0x89, 0x1f, 0x3a, 0x5b, 0xb2, 0xae, 0xc7, 0x32, 0xac, 0xeb, 0xa0, - 0xff, 0x69, 0xa9, 0x26, 0xf3, 0x22, 0x85, 0x43, 0x29, 0x4f, 0x38, 0x9c, 0xae, 0x7c, 0xf9, 0x74, - 0xe5, 0xff, 0xa9, 0xa9, 0x36, 0xd2, 0xc4, 0x22, 0x4e, 0x2e, 0x58, 0x3e, 0xc8, 0x65, 0x80, 0x97, - 0x01, 0x8e, 0x08, 0xb5, 0xa6, 0xa2, 0x21, 0x16, 0x4a, 0x57, 0xcd, 0xda, 0x11, 0xa1, 0xb2, 0x43, - 0x5e, 0xda, 0xa7, 0x29, 0x5d, 0x17, 0xa4, 0xd6, 0x96, 0x35, 0xbf, 0x73, 0xa1, 0x0a, 0x79, 0x84, - 0x5a, 0xab, 0x4f, 0xfb, 0x79, 0x21, 0xd5, 0xdc, 0x2b, 0x7e, 0x3f, 0xc5, 0xe6, 0xfe, 0x29, 0x7a, - 0x25, 0xdd, 0xfc, 0x94, 0xd7, 0x69, 0x7e, 0x8c, 0xff, 0x6a, 0x70, 0x39, 0xd1, 0xb7, 0x0a, 0xf2, - 0xe6, 0x1e, 0x2e, 0xbc, 0x0c, 0x20, 0x23, 0x22, 0x61, 0x83, 0x9a, 0x58, 0x11, 0x1a, 0x7e, 0x17, - 0xaa, 0x71, 0xc0, 0x9c, 0xe1, 0x78, 0xb3, 0x31, 0x56, 0x45, 0x61, 0xa1, 0xa3, 0x29, 0xe5, 0xee, - 0x68, 0xb6, 0xa1, 0x8c, 0xef, 0x71, 0x8a, 0x54, 0x52, 0x95, 0x0f, 0xc6, 0xaf, 0x23, 0x95, 0x65, - 0x56, 0x5a, 0x50, 0xb9, 0xb0, 0x8e, 0xca, 0xc5, 0xc7, 0xa9, 0x5c, 0x3a, 0xbb, 0xca, 0xc6, 0x5f, - 0x34, 0x55, 0xd2, 0x7e, 0x88, 0xd1, 0xb1, 0x12, 0xed, 0x06, 0x34, 0x27, 0x78, 0x32, 0xc2, 0x34, - 0x3e, 0xb5, 0xad, 0x72, 0x4b, 0x43, 0xe2, 0xa3, 0xe3, 0xdc, 0x05, 0xd1, 0xed, 0xdf, 0x05, 0x95, - 0x25, 0x64, 0xe8, 0x09, 0xe5, 0xde, 0x16, 0x82, 0x3e, 0xa3, 0xb9, 0xc3, 0xd3, 0xd1, 0x4b, 0xbf, - 0x15, 0xf9, 0x87, 0x59, 0x9c, 0x84, 0x3e, 0x6a, 0x97, 0xbb, 0xc5, 0xbd, 0xfa, 0xb5, 0xd7, 0x97, - 0x31, 0x55, 0x18, 0x20, 0xa1, 0xfa, 0x4d, 0xcc, 0x91, 0xeb, 0x99, 0x9b, 0x6a, 0x87, 0xdb, 0x64, - 0xdf, 0x71, 0xf4, 0x9b, 0xb0, 0x95, 0xd8, 0x51, 0xe6, 0xae, 0x76, 0xa5, 0x5b, 0x7c, 0xac, 0x92, - 0xad, 0x78, 0x0b, 0xc9, 0x6b, 0xe3, 0x6f, 0x85, 0xb8, 0x00, 0xf9, 0xf8, 0xe4, 0x4b, 0x63, 0xee, - 0x85, 0xac, 0x50, 0xce, 0x9d, 0x15, 0x6e, 0xc2, 0x86, 0x32, 0x95, 0xb0, 0x69, 0x3e, 0x47, 0x45, - 0xaf, 0x1a, 0xbf, 0x8c, 0x6a, 0x5e, 0x06, 0xa3, 0x7f, 0x1b, 0x2a, 0x12, 0xb5, 0xd2, 0xb8, 0x0a, - 0xa7, 0x0f, 0xa0, 0x85, 0xef, 0x05, 0x2e, 0x45, 0xdc, 0x25, 0xbe, 0xc5, 0x5d, 0x95, 0x45, 0xeb, - 0xd7, 0x76, 0x7a, 0x72, 0x00, 0xdd, 0x8b, 0x06, 0xd0, 0xbd, 0xdb, 0xd1, 0x00, 0xfa, 0xa0, 0xf4, - 0xe1, 0xdf, 0x77, 0x35, 0xb3, 0x39, 0x7f, 0x31, 0xfc, 0xca, 0xf8, 0x97, 0x96, 0x2a, 0x70, 0x42, - 0xba, 0xb7, 0xc2, 0xbc, 0xf7, 0x7c, 0x7b, 0x7d, 0x79, 0x2a, 0xbf, 0x1f, 0x35, 0x98, 0x6f, 0xbb, - 0x94, 0x12, 0xfa, 0x44, 0x53, 0xcc, 0x7c, 0x63, 0xba, 0x5c, 0x53, 0x49, 0x03, 0x1a, 0x0e, 0x66, - 0xdc, 0xb2, 0xef, 0x20, 0xd7, 0x9f, 0xb7, 0x8d, 0xf5, 0x70, 0xf1, 0x30, 0x5c, 0x1b, 0x38, 0xc6, - 0x1f, 0xa2, 0xa3, 0x72, 0x52, 0x15, 0x13, 0xb3, 0xa9, 0xc7, 0xc3, 0x4e, 0x47, 0x1d, 0xc7, 0x34, - 0xf1, 0x62, 0x74, 0xd8, 0x3a, 0x67, 0x91, 0x3f, 0x4f, 0x5b, 0xff, 0xb9, 0xed, 0x6e, 0xcf, 0xa2, - 0xeb, 0xa7, 0x69, 0xf7, 0x48, 0x5d, 0x9f, 0xd4, 0x3d, 0xe7, 0xac, 0xd3, 0x1f, 0xa3, 0x46, 0x48, - 0xea, 0x74, 0xa1, 0x7a, 0xbf, 0x8c, 0xfc, 0xa5, 0xac, 0xfc, 0xbf, 0x8b, 0x52, 0x70, 0x42, 0xfe, - 0x15, 0x2e, 0x39, 0x47, 0x69, 0x8f, 0x15, 0x81, 0x86, 0x1c, 0x79, 0xf8, 0x16, 0xf1, 0x5c, 0x7b, - 0x76, 0xe8, 0x61, 0xe4, 0x4f, 0x03, 0x7d, 0x07, 0xaa, 0x23, 0x8f, 0xd8, 0x77, 0xdf, 0x99, 0x4e, - 0x84, 0xbc, 0x45, 0x33, 0x7e, 0x0e, 0xcb, 0x9d, 0x3a, 0xcd, 0xb8, 0xfe, 0x11, 0x51, 0x65, 0x61, - 0x69, 0xb9, 0x93, 0x65, 0x3f, 0x3c, 0xcb, 0x98, 0xe0, 0xc4, 0x9f, 0x8d, 0x07, 0x1a, 0x6c, 0x2b, - 0x2b, 0x8d, 0x65, 0x9d, 0x78, 0x86, 0x69, 0x32, 0xd7, 0x6d, 0xc6, 0x6b, 0xb0, 0xe5, 0x30, 0x6e, - 0x2d, 0x9b, 0xce, 0x35, 0x1d, 0xc6, 0x6f, 0xcd, 0x07, 0x74, 0xc6, 0xef, 0x35, 0xd8, 0x49, 0x0c, - 0x16, 0x2f, 0xba, 0x6a, 0x21, 0x55, 0xdb, 0x89, 0x61, 0x80, 0x94, 0x17, 0x5f, 0x54, 0x69, 0x3f, - 0x2a, 0xc0, 0x4b, 0x6a, 0xb0, 0x36, 0x09, 0x42, 0x22, 0x5d, 0x78, 0xea, 0xac, 0xbe, 0x6d, 0x2a, - 0xad, 0xbc, 0x4c, 0x7d, 0x0d, 0xb6, 0x18, 0xb5, 0x17, 0xe8, 0x27, 0xd3, 0x66, 0x93, 0x51, 0x3b, - 0x49, 0x3f, 0x0b, 0xea, 0x6a, 0xc8, 0xcb, 0x6f, 0xa3, 0x71, 0x18, 0xbf, 0xd1, 0xdd, 0xbf, 0x9a, - 0x70, 0xc4, 0xcf, 0xfa, 0x9b, 0x50, 0xe2, 0x68, 0xcc, 0x54, 0xe0, 0x76, 0x97, 0x0f, 0xf6, 0x55, - 0x77, 0x8a, 0xc6, 0xcc, 0x14, 0x68, 0xe3, 0x37, 0x05, 0xc5, 0x97, 0xe4, 0x98, 0xe2, 0x50, 0xde, - 0x48, 0xac, 0x69, 0xfd, 0xf5, 0x07, 0x2d, 0x4f, 0x7e, 0xc3, 0xb4, 0x78, 0x93, 0x53, 0xce, 0xde, - 0xe4, 0xa4, 0x6e, 0x1f, 0x2a, 0x8b, 0xb7, 0x0f, 0x6d, 0xd8, 0x38, 0xc6, 0x94, 0xb9, 0xc4, 0x17, - 0x93, 0xcb, 0xa2, 0x19, 0x3d, 0x1a, 0x9f, 0x16, 0x61, 0xf7, 0x34, 0x4b, 0x0d, 0xa7, 0xb6, 0x1d, - 0x1e, 0x80, 0x9f, 0x4b, 0x83, 0xa5, 0xee, 0xa4, 0xca, 0xd9, 0x3b, 0xa9, 0xd7, 0x61, 0x2b, 0xa0, - 0xf8, 0xd8, 0x4a, 0x19, 0xb6, 0x22, 0x0c, 0xdb, 0x0a, 0xbf, 0xb8, 0x95, 0x30, 0xee, 0x1e, 0x5c, - 0xf6, 0xf1, 0x49, 0x1a, 0x2a, 0xff, 0xfe, 0xd0, 0xf4, 0xf1, 0x49, 0x12, 0xf9, 0x0d, 0x68, 0x8a, - 0x5d, 0xe7, 0xbe, 0xa8, 0x0a, 0x5f, 0x34, 0xc2, 0xd5, 0xc3, 0xd8, 0x1f, 0x5f, 0x87, 0x46, 0xb8, - 0xe1, 0x1c, 0x55, 0x13, 0xa8, 0x4d, 0x1f, 0x9f, 0x1c, 0x2e, 0x73, 0x1a, 0xa4, 0x9c, 0x16, 0x96, - 0x61, 0x39, 0x4b, 0x74, 0x2c, 0xc4, 0xc5, 0x85, 0x5b, 0xd1, 0xac, 0xa9, 0x95, 0x7d, 0x1e, 0x96, - 0xac, 0x4e, 0x22, 0xbb, 0x7f, 0x71, 0x31, 0x70, 0x8e, 0x1d, 0xd9, 0xc1, 0xe0, 0xfe, 0xc3, 0x8e, - 0xf6, 0xc9, 0xc3, 0x8e, 0xf6, 0x8f, 0x87, 0x1d, 0xed, 0xc3, 0x47, 0x9d, 0x4b, 0x9f, 0x3c, 0xea, - 0x5c, 0xfa, 0xf3, 0xa3, 0xce, 0xa5, 0x1f, 0xf7, 0xc7, 0x2e, 0xbf, 0x33, 0x1d, 0xf5, 0x6c, 0x32, - 0xe9, 0x8f, 0xfc, 0xd1, 0x55, 0xd1, 0x45, 0xf4, 0x13, 0x7f, 0x0b, 0xba, 0x97, 0xfe, 0x63, 0xd0, - 0xa8, 0x22, 0x4e, 0x83, 0x6f, 0xfc, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x67, 0x5e, 0xc0, 0x04, - 0x25, 0x00, 0x00, + // 1895 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xcb, 0x8f, 0x23, 0x47, + 0x19, 0xdf, 0xf6, 0x6b, 0xec, 0xf2, 0xd8, 0xde, 0x69, 0x86, 0x8d, 0x99, 0x24, 0x1e, 0xa7, 0x11, + 0x61, 0x12, 0xb1, 0x36, 0xda, 0x04, 0xb4, 0xb7, 0xd5, 0xcc, 0x6c, 0x40, 0x16, 0x24, 0x59, 0xda, + 0x9b, 0x1c, 0xb8, 0xb4, 0xca, 0xdd, 0x35, 0xde, 0x66, 0xbb, 0xbb, 0x9a, 0xaa, 0xea, 0x99, 0x75, + 0xfe, 0x01, 0x4e, 0x48, 0x91, 0x10, 0x12, 0x5c, 0x72, 0x05, 0x09, 0x21, 0x71, 0xc8, 0x95, 0xfb, + 0x1e, 0x93, 0xe5, 0xc2, 0x43, 0x0a, 0x68, 0xf7, 0x02, 0x48, 0x08, 0xce, 0x9c, 0x50, 0x3d, 0xba, + 0xdd, 0xed, 0xf6, 0xac, 0xa7, 0xbd, 0x99, 0xcc, 0x2c, 0x37, 0xd7, 0xe7, 0xaf, 0xca, 0xdf, 0xe3, + 0xf7, 0x3d, 0xea, 0x2b, 0x83, 0xdd, 0x29, 0x41, 0x28, 0x38, 0x72, 0x91, 0xe7, 0x0c, 0x29, 0xc3, + 0x04, 0x4e, 0xd1, 0x10, 0x1d, 0xa3, 0x80, 0xd1, 0x41, 0x48, 0x30, 0xc3, 0xba, 0x3e, 0x67, 0x18, + 0x28, 0x86, 0x9d, 0xaf, 0xd8, 0x98, 0xfa, 0x98, 0x5a, 0x82, 0x63, 0x28, 0x17, 0x92, 0x7d, 0x67, + 0x7b, 0x8a, 0xa7, 0x58, 0xd2, 0xf9, 0x27, 0x45, 0xdd, 0x9d, 0x62, 0x3c, 0xf5, 0xd0, 0x50, 0xac, + 0x26, 0xd1, 0xd1, 0x90, 0xb9, 0x3e, 0xa2, 0x0c, 0xfa, 0x61, 0xc2, 0x30, 0x17, 0x83, 0x20, 0x8a, + 0x23, 0x62, 0xa3, 0x21, 0x9b, 0x85, 0x88, 0x2e, 0x61, 0x88, 0xe5, 0xb4, 0xb1, 0xef, 0xe3, 0x40, + 0x31, 0xf4, 0x96, 0x30, 0xa4, 0x0e, 0x30, 0xfe, 0x50, 0x01, 0x5b, 0x6f, 0x71, 0xc5, 0x0e, 0x09, + 0x82, 0x0c, 0x1d, 0x44, 0xf6, 0x7d, 0xc4, 0xf4, 0x01, 0xa8, 0xe2, 0x93, 0x00, 0x91, 0xae, 0xd6, + 0xd7, 0xf6, 0x1a, 0x07, 0xdd, 0x47, 0x1f, 0x5f, 0xdf, 0x56, 0xfa, 0xec, 0x3b, 0x0e, 0x41, 0x94, + 0x8e, 0x19, 0x71, 0x83, 0xa9, 0x29, 0xd9, 0xf4, 0x5d, 0xd0, 0x9c, 0x88, 0x9d, 0x56, 0x00, 0x7d, + 0xd4, 0x2d, 0xf1, 0x5d, 0x26, 0x90, 0xa4, 0x77, 0xa0, 0x8f, 0xf4, 0x03, 0x00, 0x8e, 0x5d, 0xea, + 0x4e, 0x5c, 0xcf, 0x65, 0xb3, 0x6e, 0xb9, 0xaf, 0xed, 0xb5, 0x6f, 0x18, 0x83, 0xbc, 0x0d, 0x07, + 0xef, 0x27, 0x5c, 0x77, 0x67, 0x21, 0x32, 0x53, 0xbb, 0xf4, 0x17, 0x41, 0xc3, 0x16, 0x42, 0x5a, + 0x90, 0x75, 0x2b, 0x7d, 0x6d, 0xaf, 0x6c, 0xd6, 0x25, 0x61, 0x9f, 0xe9, 0x37, 0x41, 0x43, 0x49, + 0xe0, 0x3a, 0xdd, 0xaa, 0x90, 0xfa, 0xc5, 0x87, 0x9f, 0xed, 0x5e, 0xf9, 0xf3, 0x67, 0xbb, 0x95, + 0xf7, 0xdc, 0x80, 0x3d, 0xfa, 0xf8, 0x7a, 0x53, 0x69, 0xc0, 0x97, 0x66, 0x5d, 0x72, 0x8f, 0x1c, + 0xfd, 0x16, 0x68, 0x4a, 0xc3, 0x5a, 0xdc, 0x2e, 0xdd, 0x9a, 0x90, 0xad, 0xb7, 0x4c, 0xb6, 0xb1, + 0x60, 0x93, 0x72, 0xd1, 0xe4, 0xb3, 0xfe, 0x0d, 0xa0, 0xdb, 0xf7, 0x20, 0x99, 0x22, 0xc7, 0x22, + 0x08, 0x3a, 0xd6, 0x8f, 0x23, 0xcc, 0x60, 0x77, 0xa3, 0xaf, 0xed, 0x55, 0xcc, 0xab, 0xea, 0x1b, + 0x13, 0x41, 0xe7, 0x07, 0x9c, 0xae, 0xef, 0x83, 0x4e, 0x08, 0x67, 0x3e, 0x0a, 0x98, 0x05, 0xa5, + 0x29, 0xbb, 0xf5, 0x15, 0x46, 0x6e, 0xab, 0x0d, 0x8a, 0xaa, 0x1b, 0xa0, 0x15, 0x12, 0xd7, 0x87, + 0x64, 0x66, 0xd1, 0x90, 0xeb, 0xdb, 0xe8, 0x6b, 0x7b, 0x2d, 0xb3, 0xa9, 0x88, 0xe3, 0x70, 0xe4, + 0xe8, 0x07, 0xa0, 0x37, 0xf5, 0xf0, 0x04, 0x7a, 0xd6, 0xb1, 0x4b, 0x58, 0x04, 0x3d, 0x6b, 0x4a, + 0x70, 0x14, 0x5a, 0x47, 0xd0, 0x77, 0xbd, 0x19, 0xdf, 0x04, 0xc4, 0xa6, 0x1d, 0xc9, 0xf5, 0xbe, + 0x64, 0xfa, 0x2e, 0xe7, 0xf9, 0x8e, 0x60, 0x19, 0x39, 0xfa, 0x4d, 0x50, 0xa3, 0x0c, 0xb2, 0x88, + 0x76, 0x9b, 0xc2, 0x28, 0xfd, 0x65, 0x46, 0x91, 0x88, 0x19, 0x0b, 0x3e, 0x53, 0xf1, 0x1b, 0xbf, + 0x28, 0x29, 0x54, 0xdd, 0x46, 0x1e, 0x4a, 0x50, 0xf5, 0x26, 0xa8, 0xe3, 0x10, 0x11, 0xc8, 0xf0, + 0x6a, 0x60, 0x25, 0x9c, 0x73, 0x2c, 0x96, 0xd6, 0xc2, 0x62, 0x39, 0x87, 0xc5, 0x0c, 0x54, 0x2a, + 0x45, 0xa0, 0xb2, 0xda, 0xa8, 0xd5, 0x55, 0x46, 0x35, 0x7e, 0x52, 0x06, 0x5f, 0x16, 0xa6, 0x79, + 0x2f, 0x74, 0x92, 0x80, 0x1b, 0x05, 0x47, 0x78, 0x4d, 0xf3, 0xac, 0x0c, 0xbd, 0x8c, 0xba, 0xe5, + 0x22, 0xea, 0x2e, 0x07, 0x76, 0xe5, 0x14, 0x60, 0x7f, 0x3d, 0x0f, 0x6c, 0x11, 0x87, 0x39, 0xf8, + 0x66, 0x73, 0x41, 0x6d, 0xad, 0x5c, 0xb0, 0xda, 0x13, 0x1b, 0x2b, 0x3d, 0xf1, 0x6b, 0x0d, 0x5c, + 0x93, 0x20, 0x75, 0xa9, 0x8d, 0x03, 0xe6, 0x06, 0x51, 0x8c, 0xd4, 0x8c, 0xcd, 0xb4, 0x22, 0x36, + 0x5b, 0xe9, 0x8e, 0x6b, 0xa0, 0x46, 0x10, 0xa4, 0x38, 0x50, 0xc8, 0x54, 0x2b, 0x9e, 0xdd, 0x1c, + 0x11, 0x2c, 0xa9, 0xec, 0x26, 0x09, 0xfb, 0xcc, 0xf8, 0x59, 0x2d, 0x93, 0xa5, 0xdf, 0x9d, 0xfc, + 0x08, 0xd9, 0x4c, 0xbf, 0x01, 0x36, 0x44, 0xfe, 0x3b, 0x03, 0x5e, 0x62, 0xc6, 0xcf, 0x3f, 0x9a, + 0x76, 0x41, 0x13, 0x0b, 0x71, 0x24, 0x43, 0x45, 0x32, 0x48, 0x52, 0x1e, 0x7f, 0xb5, 0x22, 0xb6, + 0xbc, 0x09, 0x1a, 0xea, 0x68, 0xe5, 0xcf, 0x55, 0x3b, 0x25, 0xf7, 0xc8, 0xc9, 0x67, 0xc8, 0x7a, + 0x3e, 0x43, 0xbe, 0x02, 0x36, 0x43, 0x38, 0xf3, 0x30, 0x74, 0x2c, 0xea, 0x7e, 0x80, 0x44, 0x12, + 0xad, 0x98, 0x4d, 0x45, 0x1b, 0xbb, 0x1f, 0x2c, 0x56, 0x2d, 0xb0, 0x16, 0x52, 0x5f, 0x01, 0x9b, + 0x1c, 0x5c, 0x3c, 0x2c, 0x44, 0x7d, 0x69, 0x0a, 0x03, 0x35, 0x15, 0x4d, 0x14, 0x90, 0x4c, 0x61, + 0xdb, 0xcc, 0x15, 0xb6, 0x38, 0x09, 0xb7, 0x4e, 0x4f, 0xc2, 0x12, 0x10, 0xd9, 0x24, 0xac, 0x7f, + 0x0f, 0x74, 0x08, 0x72, 0xa2, 0xc0, 0x81, 0x81, 0x3d, 0x93, 0x3f, 0xde, 0x3e, 0x5d, 0x05, 0x33, + 0x61, 0x15, 0x2a, 0xb4, 0x49, 0x66, 0xbd, 0x58, 0x25, 0x3b, 0x85, 0xab, 0xe4, 0x4b, 0xa0, 0x61, + 0xdf, 0x43, 0xf6, 0x7d, 0x1a, 0xf9, 0xb4, 0x7b, 0xb5, 0x5f, 0xde, 0xdb, 0x34, 0xe7, 0x04, 0xfd, + 0x0d, 0x70, 0xcd, 0xc3, 0x76, 0x2e, 0x9c, 0x5d, 0xa7, 0xbb, 0x25, 0x3c, 0xf7, 0x25, 0xf1, 0x6d, + 0x3a, 0x8c, 0x47, 0x8e, 0xf1, 0x6f, 0x0d, 0xbc, 0x20, 0xa3, 0x02, 0x06, 0x36, 0xf2, 0x32, 0xb1, + 0x71, 0x4e, 0xc9, 0x74, 0x01, 0xed, 0xe5, 0x1c, 0xda, 0x73, 0xc8, 0xab, 0xe4, 0x91, 0x97, 0xc1, + 0x75, 0xad, 0x00, 0xae, 0x79, 0xf1, 0xe8, 0x08, 0x8d, 0xc7, 0x08, 0x7a, 0x17, 0xac, 0x69, 0x46, + 0x8b, 0x6a, 0x91, 0xe8, 0x9c, 0x43, 0xba, 0x56, 0x10, 0xd2, 0xdf, 0x02, 0x2f, 0x2c, 0x4d, 0xfb, + 0x49, 0xbe, 0xdf, 0xce, 0xe7, 0xfb, 0x91, 0xf3, 0x14, 0x74, 0xd5, 0x4f, 0x45, 0x57, 0x16, 0xb0, + 0x8d, 0x05, 0xc0, 0x1a, 0x1f, 0xc5, 0x9e, 0x38, 0xc4, 0xe1, 0xec, 0x99, 0x3c, 0xf1, 0x2a, 0xe8, + 0x50, 0x62, 0x5b, 0x79, 0x6f, 0xb4, 0x28, 0xb1, 0x0f, 0xe6, 0x0e, 0x51, 0x7c, 0x79, 0xa7, 0x70, + 0xbe, 0x77, 0xe7, 0x7e, 0x79, 0x15, 0x74, 0x1c, 0xca, 0x32, 0xe7, 0xc9, 0xa4, 0xdc, 0x72, 0x28, + 0xcb, 0x9e, 0xc7, 0xf9, 0xd2, 0xe7, 0x55, 0x13, 0xbe, 0xd4, 0x79, 0xb7, 0x40, 0x2b, 0xf5, 0xbb, + 0x67, 0x43, 0x6c, 0x33, 0x11, 0x49, 0x34, 0xd8, 0xad, 0xd4, 0x0f, 0x9d, 0x2d, 0x95, 0x37, 0x13, + 0x19, 0xd6, 0x74, 0x9f, 0xf1, 0x5f, 0x2d, 0xd3, 0x82, 0x5e, 0xa6, 0x60, 0xa9, 0x14, 0x09, 0x96, + 0xd3, 0x95, 0xaf, 0x9e, 0xae, 0xfc, 0xdf, 0x35, 0xd5, 0x64, 0x9a, 0x48, 0x44, 0xd1, 0x25, 0xcb, + 0x16, 0x85, 0x0c, 0xf0, 0x32, 0x00, 0x47, 0x98, 0x58, 0x91, 0x68, 0x97, 0x85, 0xd2, 0x75, 0xb3, + 0x71, 0x84, 0x89, 0xec, 0x9f, 0x97, 0x76, 0x71, 0x4a, 0xd7, 0x05, 0xa9, 0xb5, 0x65, 0xad, 0xf1, + 0x5c, 0xa8, 0x52, 0x11, 0xa1, 0xd6, 0xea, 0xe2, 0x7e, 0x5a, 0xca, 0xb4, 0xfe, 0x0a, 0xdf, 0xe7, + 0xd8, 0xfa, 0x9f, 0xa3, 0x57, 0xb2, 0xad, 0x51, 0x75, 0x9d, 0xd6, 0xc8, 0xf8, 0x8f, 0x06, 0xae, + 0xa6, 0xba, 0x5a, 0x01, 0xde, 0xc2, 0xa3, 0x87, 0x97, 0x01, 0x90, 0x11, 0x91, 0xb2, 0x41, 0x43, + 0x50, 0x84, 0x86, 0xdf, 0x06, 0xf5, 0x24, 0x60, 0xce, 0x70, 0xf9, 0xd9, 0x98, 0xaa, 0xec, 0xbf, + 0xd0, 0xef, 0x54, 0x0a, 0xf7, 0x3b, 0xdb, 0xa0, 0x8a, 0x1e, 0x30, 0x02, 0x55, 0x52, 0x95, 0x0b, + 0xe3, 0x97, 0xb1, 0xca, 0x32, 0x2b, 0x2d, 0xa8, 0x5c, 0x5a, 0x47, 0xe5, 0xf2, 0xd3, 0x54, 0xae, + 0x9c, 0x5d, 0x65, 0xe3, 0x4f, 0x9a, 0x2a, 0x69, 0xdf, 0x47, 0xf0, 0x58, 0x89, 0x76, 0x0b, 0xb4, + 0x7d, 0xe4, 0x4f, 0x10, 0x49, 0xee, 0x74, 0xab, 0xdc, 0xd2, 0x92, 0xfc, 0xf1, 0x65, 0xef, 0x92, + 0xe8, 0xf6, 0xaf, 0x92, 0xca, 0x12, 0x32, 0xf4, 0x84, 0x72, 0x6f, 0x0b, 0x41, 0xbf, 0xa0, 0xa9, + 0xc4, 0xf9, 0xe8, 0xa5, 0xdf, 0x89, 0xfd, 0x43, 0x2d, 0x86, 0xb9, 0x8f, 0xba, 0xd5, 0x7e, 0x79, + 0xaf, 0x79, 0xe3, 0xf5, 0x65, 0x48, 0x15, 0x06, 0x48, 0xa9, 0x7e, 0x1b, 0x31, 0xe8, 0x7a, 0xe6, + 0xa6, 0x3a, 0xe1, 0x2e, 0xde, 0x77, 0x1c, 0xfd, 0x36, 0xd8, 0x4a, 0x9d, 0x28, 0x73, 0x57, 0xb7, + 0xd6, 0x2f, 0x3f, 0x55, 0xc9, 0x4e, 0x72, 0x84, 0xc4, 0xb5, 0xf1, 0x97, 0x52, 0x52, 0x80, 0x02, + 0x74, 0xf2, 0x7f, 0x63, 0xee, 0x85, 0xac, 0x50, 0x2d, 0x9c, 0x15, 0x6e, 0x83, 0x0d, 0x65, 0x2a, + 0x61, 0xd3, 0x62, 0x8e, 0x8a, 0xb7, 0x1a, 0x3f, 0x8f, 0x6b, 0x5e, 0x8e, 0x47, 0xff, 0x26, 0xa8, + 0x49, 0xae, 0x95, 0xc6, 0x55, 0x7c, 0xfa, 0x08, 0x74, 0xd0, 0x83, 0xd0, 0x25, 0x90, 0xb9, 0x38, + 0xb0, 0x98, 0xab, 0xb2, 0x68, 0xf3, 0xc6, 0xce, 0x40, 0x8e, 0xa7, 0x07, 0xf1, 0x78, 0x7a, 0x70, + 0x37, 0x1e, 0x4f, 0x1f, 0x54, 0x3e, 0xfc, 0xeb, 0xae, 0x66, 0xb6, 0xe7, 0x1b, 0xf9, 0x57, 0xc6, + 0x3f, 0xb5, 0x4c, 0x81, 0x13, 0xd2, 0xbd, 0xc5, 0xf3, 0xde, 0xf3, 0xed, 0xf5, 0xe5, 0xa9, 0xfc, + 0x61, 0xdc, 0x60, 0xbe, 0xed, 0x12, 0x82, 0xc9, 0x33, 0xcd, 0x38, 0x8b, 0x0d, 0xf1, 0x0a, 0xcd, + 0x2c, 0x0d, 0xd0, 0x72, 0x10, 0x65, 0x96, 0x7d, 0x0f, 0xba, 0xc1, 0xbc, 0x6d, 0x6c, 0x72, 0xe2, + 0x21, 0xa7, 0x8d, 0x1c, 0xe3, 0x77, 0xf1, 0x45, 0x3a, 0xad, 0x8a, 0x89, 0x68, 0xe4, 0x31, 0xde, + 0xe9, 0xa8, 0xcb, 0x9a, 0x26, 0x36, 0xc6, 0x57, 0xb1, 0x0b, 0x16, 0xf9, 0x1f, 0x59, 0xeb, 0x3f, + 0xb7, 0xdd, 0xed, 0x59, 0x74, 0xfd, 0x34, 0xeb, 0x1e, 0xa9, 0xeb, 0xb3, 0xba, 0xe7, 0x82, 0x75, + 0xfa, 0x7d, 0xdc, 0x08, 0x49, 0x9d, 0x2e, 0x55, 0xef, 0x97, 0x93, 0xbf, 0x92, 0x97, 0xff, 0x37, + 0x71, 0x0a, 0x4e, 0xc9, 0xbf, 0xc2, 0x25, 0x17, 0x28, 0xed, 0xb1, 0x02, 0xd0, 0x98, 0x41, 0x0f, + 0xdd, 0xc1, 0x9e, 0x6b, 0xcf, 0x0e, 0x3d, 0x04, 0x83, 0x28, 0xd4, 0x77, 0x40, 0x7d, 0xe2, 0x61, + 0xfb, 0xfe, 0x3b, 0x91, 0x2f, 0xe4, 0x2d, 0x9b, 0xc9, 0x9a, 0x97, 0x3b, 0x75, 0x9b, 0x71, 0x83, + 0x23, 0xac, 0xca, 0xc2, 0xd2, 0x72, 0x27, 0xcb, 0x3e, 0xbf, 0xcb, 0x98, 0xc0, 0x49, 0x3e, 0x1b, + 0x8f, 0x34, 0xb0, 0xad, 0xac, 0x34, 0x95, 0x75, 0xe2, 0x0b, 0x4c, 0x93, 0x85, 0xde, 0x3a, 0x5e, + 0x03, 0x5b, 0x0e, 0x65, 0xd6, 0xb2, 0xd9, 0x5d, 0xdb, 0xa1, 0xec, 0xce, 0x7c, 0x7c, 0x67, 0xfc, + 0x56, 0x03, 0x3b, 0xa9, 0xb1, 0xe3, 0x65, 0x57, 0x8d, 0x43, 0xb5, 0x9b, 0x1a, 0x06, 0x48, 0x79, + 0xd1, 0x65, 0x95, 0xf6, 0xa3, 0x12, 0x78, 0x49, 0x0d, 0xd6, 0xfc, 0x90, 0x03, 0xe9, 0xd2, 0x43, + 0x67, 0xf5, 0x5b, 0x54, 0x65, 0xe5, 0x53, 0xeb, 0x6b, 0x60, 0x8b, 0x12, 0x7b, 0x01, 0x7e, 0x32, + 0x6d, 0xb6, 0x29, 0xb1, 0xd3, 0xf0, 0xb3, 0x40, 0x53, 0x8d, 0x80, 0xd9, 0x5d, 0x38, 0xe5, 0xf1, + 0x1b, 0xff, 0x33, 0x40, 0x4d, 0x38, 0x92, 0xb5, 0xfe, 0x26, 0xa8, 0x30, 0x38, 0xa5, 0x2a, 0x70, + 0xfb, 0xcb, 0xc7, 0xfe, 0xaa, 0x3b, 0x85, 0x53, 0x6a, 0x0a, 0x6e, 0xe3, 0x57, 0x25, 0x85, 0x97, + 0xf4, 0x98, 0xe2, 0x50, 0xbe, 0x57, 0xac, 0x69, 0xfd, 0xf5, 0x07, 0x2d, 0xcf, 0xfe, 0xfe, 0xb4, + 0xf8, 0xce, 0x53, 0xcd, 0xbf, 0xf3, 0x64, 0x46, 0xbd, 0xb5, 0xc5, 0xb7, 0x89, 0x2e, 0xd8, 0x38, + 0x46, 0x84, 0xba, 0x38, 0x10, 0x93, 0xcb, 0xb2, 0x19, 0x2f, 0x8d, 0x4f, 0xcb, 0x60, 0xf7, 0x34, + 0x4b, 0x8d, 0x23, 0xdb, 0xe6, 0x17, 0xe0, 0xe7, 0xd2, 0x60, 0x99, 0x17, 0xab, 0x6a, 0xfe, 0xc5, + 0xea, 0x75, 0xb0, 0x15, 0x12, 0x74, 0x6c, 0x65, 0x0c, 0x5b, 0x13, 0x86, 0xed, 0xf0, 0x2f, 0xee, + 0xa4, 0x8c, 0xbb, 0x07, 0xae, 0x06, 0xe8, 0x24, 0xcb, 0x2a, 0xff, 0x1c, 0xd1, 0x0e, 0xd0, 0x49, + 0x9a, 0xf3, 0x6b, 0xa0, 0x2d, 0x4e, 0x9d, 0xfb, 0xa2, 0x2e, 0x7c, 0xd1, 0xe2, 0xd4, 0xc3, 0xc4, + 0x1f, 0x5f, 0x05, 0x2d, 0x7e, 0xe0, 0xe2, 0x70, 0x7e, 0x33, 0x40, 0x27, 0x87, 0xcb, 0x9c, 0x06, + 0x32, 0x4e, 0xe3, 0x65, 0x58, 0xce, 0x12, 0x1d, 0x0b, 0x32, 0xf1, 0x1c, 0x57, 0x36, 0x1b, 0x8a, + 0xb2, 0xcf, 0x78, 0xc9, 0xea, 0xa5, 0xb2, 0xfb, 0xe7, 0x17, 0x03, 0x17, 0xd8, 0x91, 0x1d, 0x8c, + 0x1e, 0x3e, 0xee, 0x69, 0x9f, 0x3c, 0xee, 0x69, 0x7f, 0x7b, 0xdc, 0xd3, 0x3e, 0x7c, 0xd2, 0xbb, + 0xf2, 0xc9, 0x93, 0xde, 0x95, 0x3f, 0x3e, 0xe9, 0x5d, 0xf9, 0xe1, 0x70, 0xea, 0xb2, 0x7b, 0xd1, + 0x64, 0x60, 0x63, 0x7f, 0x38, 0x09, 0x26, 0xd7, 0x45, 0x17, 0x31, 0x4c, 0xfd, 0x69, 0xe8, 0x41, + 0xf6, 0x6f, 0x43, 0x93, 0x9a, 0xb8, 0x0d, 0xbe, 0xf1, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf9, + 0x82, 0xe2, 0x4e, 0x22, 0x25, 0x00, 0x00, } func (m *EventCreateBucket) Marshal() (dAtA []byte, err error) { @@ -3307,6 +3318,15 @@ func (m *EventSealObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Checksums) > 0 { + for iNdEx := len(m.Checksums) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Checksums[iNdEx]) + copy(dAtA[i:], m.Checksums[iNdEx]) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Checksums[iNdEx]))) + i-- + dAtA[i] = 0x4a + } + } if m.LocalVirtualGroupId != 0 { i = encodeVarintEvents(dAtA, i, uint64(m.LocalVirtualGroupId)) i-- @@ -5168,6 +5188,12 @@ func (m *EventSealObject) Size() (n int) { if m.LocalVirtualGroupId != 0 { n += 1 + sovEvents(uint64(m.LocalVirtualGroupId)) } + if len(m.Checksums) > 0 { + for _, b := range m.Checksums { + l = len(b) + n += 1 + l + sovEvents(uint64(l)) + } + } return n } @@ -7649,6 +7675,38 @@ func (m *EventSealObject) Unmarshal(dAtA []byte) error { break } } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Checksums", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Checksums = append(m.Checksums, make([]byte, postIndex-iNdEx)) + copy(m.Checksums[len(m.Checksums)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) diff --git a/x/storage/types/message.go b/x/storage/types/message.go index 3f39025eb..121fbefc4 100644 --- a/x/storage/types/message.go +++ b/x/storage/types/message.go @@ -28,19 +28,22 @@ const ( TypeMsgUpdateDelegatedAgents = "update_delegated_agents" // For object - TypeMsgCopyObject = "copy_object" - TypeMsgCreateObject = "create_object" - TypeMsgDeleteObject = "delete_object" - TypeMsgSealObject = "seal_object" - TypeMsgRejectSealObject = "reject_seal_object" - TypeMsgCancelCreateObject = "cancel_create_object" - TypeMsgMirrorObject = "mirror_object" - TypeMsgDiscontinueObject = "discontinue_object" - TypeMsgDiscontinueBucket = "discontinue_bucket" - TypeMsgUpdateObjectInfo = "update_object_info" - TypeMsgUpdateObjectContent = "update_object_content" - TypeMsgCancelUpdateObjectContent = "cancel_update_object_content" - TypeMsgDelegateCreateObject = "delegate_create_object" + TypeMsgCopyObject = "copy_object" + TypeMsgCreateObject = "create_object" + TypeMsgDeleteObject = "delete_object" + TypeMsgSealObject = "seal_object" + TypeMsgSealObjectV2 = "seal_object_v2" + + TypeMsgRejectSealObject = "reject_seal_object" + TypeMsgCancelCreateObject = "cancel_create_object" + TypeMsgMirrorObject = "mirror_object" + TypeMsgDiscontinueObject = "discontinue_object" + TypeMsgDiscontinueBucket = "discontinue_bucket" + TypeMsgUpdateObjectInfo = "update_object_info" + TypeMsgUpdateObjectContent = "update_object_content" + TypeMsgCancelUpdateObjectContent = "cancel_update_object_content" + TypeMsgDelegateCreateObject = "delegate_create_object" + TypeMsgDelegateUpdateObjectContent = "delegate_update_object_content" // For group TypeMsgCreateGroup = "create_group" @@ -625,6 +628,76 @@ func (msg *MsgSealObject) ValidateBasic() error { return nil } +func NewMsgSealObjectV2( + operator sdk.AccAddress, bucketName, objectName string, globalVirtualGroupID uint32, + secondarySpBlsSignatures []byte, checksums [][]byte, +) *MsgSealObjectV2 { + return &MsgSealObjectV2{ + Operator: operator.String(), + BucketName: bucketName, + ObjectName: objectName, + GlobalVirtualGroupId: globalVirtualGroupID, + SecondarySpBlsAggSignatures: secondarySpBlsSignatures, + ExpectChecksums: checksums, + } +} + +// Route implements the sdk.Msg interface. +func (msg *MsgSealObjectV2) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg *MsgSealObjectV2) Type() string { + return TypeMsgSealObjectV2 +} + +// GetSigners implements the sdk.Msg interface. +func (msg *MsgSealObjectV2) GetSigners() []sdk.AccAddress { + operator, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{operator} +} + +// GetSignBytes returns the message bytes to sign over. +func (msg *MsgSealObjectV2) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +// ValidateBasic implements the sdk.Msg interface. +func (msg *MsgSealObjectV2) ValidateBasic() error { + _, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + + err = s3util.CheckValidBucketName(msg.BucketName) + if err != nil { + return err + } + + err = s3util.CheckValidObjectName(msg.ObjectName) + if err != nil { + return err + } + + if len(msg.GetSecondarySpBlsAggSignatures()) != sdk.BLSSignatureLength { + return errors.Wrap(gnfderrors.ErrInvalidBlsSignature, + fmt.Sprintf("length of signature should be %d", sdk.BLSSignatureLength), + ) + } + + if msg.ExpectChecksums != nil { + if err = s3util.CheckValidExpectChecksums(msg.ExpectChecksums); err != nil { + return err + } + } + return nil +} + func NewMsgCopyObject( operator sdk.AccAddress, srcBucketName, dstBucketName string, srcObjectName, dstObjectName string, timeoutHeight uint64, sig []byte, @@ -1735,17 +1808,14 @@ func (msg *MsgUpdateObjectContent) ValidateBasic() error { if err != nil { return err } - err = s3util.CheckValidObjectName(msg.ObjectName) if err != nil { return err } - err = s3util.CheckValidExpectChecksums(msg.ExpectChecksums) if err != nil { return err } - return nil } @@ -1881,3 +1951,67 @@ func (msg *MsgDelegateCreateObject) ValidateBasic() error { } return nil } + +func NewMsgDelegateUpdateObjectContent( + operator, updater sdk.AccAddress, bucketName, objectName string, payloadSize uint64, + expectChecksums [][]byte) *MsgDelegateUpdateObjectContent { + return &MsgDelegateUpdateObjectContent{ + Operator: operator.String(), + Updater: updater.String(), + BucketName: bucketName, + ObjectName: objectName, + PayloadSize: payloadSize, + ExpectChecksums: expectChecksums, + } +} + +// Route implements the sdk.Msg interface. +func (msg *MsgDelegateUpdateObjectContent) Route() string { + return RouterKey +} + +// Type implements the sdk.Msg interface. +func (msg *MsgDelegateUpdateObjectContent) Type() string { + return TypeMsgDelegateUpdateObjectContent +} + +// GetSigners implements the sdk.Msg interface. +func (msg *MsgDelegateUpdateObjectContent) GetSigners() []sdk.AccAddress { + operator, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{operator} +} + +// GetSignBytes returns the message bytes to sign over. +func (msg *MsgDelegateUpdateObjectContent) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +// ValidateBasic implements the sdk.Msg interface. +func (msg *MsgDelegateUpdateObjectContent) ValidateBasic() error { + _, err := sdk.AccAddressFromHexUnsafe(msg.Operator) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + _, err = sdk.AccAddressFromHexUnsafe(msg.Updater) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid updater address (%s)", err) + } + err = s3util.CheckValidBucketName(msg.BucketName) + if err != nil { + return err + } + err = s3util.CheckValidObjectName(msg.ObjectName) + if err != nil { + return err + } + if msg.ExpectChecksums != nil { + if err = s3util.CheckValidExpectChecksums(msg.ExpectChecksums); err != nil { + return err + } + } + return nil +} diff --git a/x/storage/types/options.go b/x/storage/types/options.go index 0db2fbaec..a8252a453 100644 --- a/x/storage/types/options.go +++ b/x/storage/types/options.go @@ -1,6 +1,7 @@ package types import ( + sdk "github.com/cosmos/cosmos-sdk/types" time "time" "github.com/bnb-chain/greenfield/types/common" @@ -34,6 +35,8 @@ type CreateObjectOptions struct { Checksums [][]byte PrimarySpApproval *common.Approval ApprovalMsgBytes []byte + Delegated bool + Creator sdk.AccAddress } type CancelCreateObjectOptions struct { @@ -90,4 +93,6 @@ type DeletePolicyOptions struct { type UpdateObjectOptions struct { ContentType string Checksums [][]byte + Delegated bool + Updater sdk.AccAddress } diff --git a/x/storage/types/tx.pb.go b/x/storage/types/tx.pb.go index 11378150d..462998393 100644 --- a/x/storage/types/tx.pb.go +++ b/x/storage/types/tx.pb.go @@ -637,6 +637,135 @@ func (m *MsgSealObjectResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgSealObjectResponse proto.InternalMessageInfo +type MsgSealObjectV2 struct { + // operator defines the account address of primary SP + Operator string `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` + // bucket_name defines the name of the bucket where the object is stored. + BucketName string `protobuf:"bytes,2,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + // object_name defines the name of object to be sealed. + ObjectName string `protobuf:"bytes,3,opt,name=object_name,json=objectName,proto3" json:"object_name,omitempty"` + // global_virtual_group_id defines the id of global virtual group + GlobalVirtualGroupId uint32 `protobuf:"varint,4,opt,name=global_virtual_group_id,json=globalVirtualGroupId,proto3" json:"global_virtual_group_id,omitempty"` + // secondary_sp_bls_agg_signatures defines the aggregate bls signature of the secondary sp that can + // acknowledge that the payload data has received and stored. + SecondarySpBlsAggSignatures []byte `protobuf:"bytes,5,opt,name=secondary_sp_bls_agg_signatures,json=secondarySpBlsAggSignatures,proto3" json:"secondary_sp_bls_agg_signatures,omitempty"` + // (optional) checksums define the total checksums of the object which generated by redundancy + // SP might set the checksum of object if it was delegated created by SP, which checksum + // will not be available until sealing object. + ExpectChecksums [][]byte `protobuf:"bytes,6,rep,name=expect_checksums,json=expectChecksums,proto3" json:"expect_checksums,omitempty"` +} + +func (m *MsgSealObjectV2) Reset() { *m = MsgSealObjectV2{} } +func (m *MsgSealObjectV2) String() string { return proto.CompactTextString(m) } +func (*MsgSealObjectV2) ProtoMessage() {} +func (*MsgSealObjectV2) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{10} +} +func (m *MsgSealObjectV2) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSealObjectV2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSealObjectV2.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 *MsgSealObjectV2) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSealObjectV2.Merge(m, src) +} +func (m *MsgSealObjectV2) XXX_Size() int { + return m.Size() +} +func (m *MsgSealObjectV2) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSealObjectV2.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSealObjectV2 proto.InternalMessageInfo + +func (m *MsgSealObjectV2) GetOperator() string { + if m != nil { + return m.Operator + } + return "" +} + +func (m *MsgSealObjectV2) GetBucketName() string { + if m != nil { + return m.BucketName + } + return "" +} + +func (m *MsgSealObjectV2) GetObjectName() string { + if m != nil { + return m.ObjectName + } + return "" +} + +func (m *MsgSealObjectV2) GetGlobalVirtualGroupId() uint32 { + if m != nil { + return m.GlobalVirtualGroupId + } + return 0 +} + +func (m *MsgSealObjectV2) GetSecondarySpBlsAggSignatures() []byte { + if m != nil { + return m.SecondarySpBlsAggSignatures + } + return nil +} + +func (m *MsgSealObjectV2) GetExpectChecksums() [][]byte { + if m != nil { + return m.ExpectChecksums + } + return nil +} + +type MsgSealObjectV2Response struct { +} + +func (m *MsgSealObjectV2Response) Reset() { *m = MsgSealObjectV2Response{} } +func (m *MsgSealObjectV2Response) String() string { return proto.CompactTextString(m) } +func (*MsgSealObjectV2Response) ProtoMessage() {} +func (*MsgSealObjectV2Response) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{11} +} +func (m *MsgSealObjectV2Response) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSealObjectV2Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSealObjectV2Response.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 *MsgSealObjectV2Response) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSealObjectV2Response.Merge(m, src) +} +func (m *MsgSealObjectV2Response) XXX_Size() int { + return m.Size() +} +func (m *MsgSealObjectV2Response) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSealObjectV2Response.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSealObjectV2Response proto.InternalMessageInfo + type MsgRejectSealObject struct { // operator defines the account address of the object owner Operator string `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` @@ -650,7 +779,7 @@ func (m *MsgRejectSealObject) Reset() { *m = MsgRejectSealObject{} } func (m *MsgRejectSealObject) String() string { return proto.CompactTextString(m) } func (*MsgRejectSealObject) ProtoMessage() {} func (*MsgRejectSealObject) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{10} + return fileDescriptor_ddb71b028305a3cc, []int{12} } func (m *MsgRejectSealObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -707,7 +836,7 @@ func (m *MsgRejectSealObjectResponse) Reset() { *m = MsgRejectSealObject func (m *MsgRejectSealObjectResponse) String() string { return proto.CompactTextString(m) } func (*MsgRejectSealObjectResponse) ProtoMessage() {} func (*MsgRejectSealObjectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{11} + return fileDescriptor_ddb71b028305a3cc, []int{13} } func (m *MsgRejectSealObjectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -755,7 +884,7 @@ func (m *MsgCopyObject) Reset() { *m = MsgCopyObject{} } func (m *MsgCopyObject) String() string { return proto.CompactTextString(m) } func (*MsgCopyObject) ProtoMessage() {} func (*MsgCopyObject) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{12} + return fileDescriptor_ddb71b028305a3cc, []int{14} } func (m *MsgCopyObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -834,7 +963,7 @@ func (m *MsgCopyObjectResponse) Reset() { *m = MsgCopyObjectResponse{} } func (m *MsgCopyObjectResponse) String() string { return proto.CompactTextString(m) } func (*MsgCopyObjectResponse) ProtoMessage() {} func (*MsgCopyObjectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{13} + return fileDescriptor_ddb71b028305a3cc, []int{15} } func (m *MsgCopyObjectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -876,7 +1005,7 @@ func (m *MsgDeleteObject) Reset() { *m = MsgDeleteObject{} } func (m *MsgDeleteObject) String() string { return proto.CompactTextString(m) } func (*MsgDeleteObject) ProtoMessage() {} func (*MsgDeleteObject) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{14} + return fileDescriptor_ddb71b028305a3cc, []int{16} } func (m *MsgDeleteObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -933,7 +1062,7 @@ func (m *MsgDeleteObjectResponse) Reset() { *m = MsgDeleteObjectResponse func (m *MsgDeleteObjectResponse) String() string { return proto.CompactTextString(m) } func (*MsgDeleteObjectResponse) ProtoMessage() {} func (*MsgDeleteObjectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{15} + return fileDescriptor_ddb71b028305a3cc, []int{17} } func (m *MsgDeleteObjectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -977,7 +1106,7 @@ func (m *MsgDiscontinueObject) Reset() { *m = MsgDiscontinueObject{} } func (m *MsgDiscontinueObject) String() string { return proto.CompactTextString(m) } func (*MsgDiscontinueObject) ProtoMessage() {} func (*MsgDiscontinueObject) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{16} + return fileDescriptor_ddb71b028305a3cc, []int{18} } func (m *MsgDiscontinueObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1034,7 +1163,7 @@ func (m *MsgDiscontinueObjectResponse) Reset() { *m = MsgDiscontinueObje func (m *MsgDiscontinueObjectResponse) String() string { return proto.CompactTextString(m) } func (*MsgDiscontinueObjectResponse) ProtoMessage() {} func (*MsgDiscontinueObjectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{17} + return fileDescriptor_ddb71b028305a3cc, []int{19} } func (m *MsgDiscontinueObjectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1076,7 +1205,7 @@ func (m *MsgCreateGroup) Reset() { *m = MsgCreateGroup{} } func (m *MsgCreateGroup) String() string { return proto.CompactTextString(m) } func (*MsgCreateGroup) ProtoMessage() {} func (*MsgCreateGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{18} + return fileDescriptor_ddb71b028305a3cc, []int{20} } func (m *MsgCreateGroup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1134,7 +1263,7 @@ func (m *MsgCreateGroupResponse) Reset() { *m = MsgCreateGroupResponse{} func (m *MsgCreateGroupResponse) String() string { return proto.CompactTextString(m) } func (*MsgCreateGroupResponse) ProtoMessage() {} func (*MsgCreateGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{19} + return fileDescriptor_ddb71b028305a3cc, []int{21} } func (m *MsgCreateGroupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1174,7 +1303,7 @@ func (m *MsgDeleteGroup) Reset() { *m = MsgDeleteGroup{} } func (m *MsgDeleteGroup) String() string { return proto.CompactTextString(m) } func (*MsgDeleteGroup) ProtoMessage() {} func (*MsgDeleteGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{20} + return fileDescriptor_ddb71b028305a3cc, []int{22} } func (m *MsgDeleteGroup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1224,7 +1353,7 @@ func (m *MsgDeleteGroupResponse) Reset() { *m = MsgDeleteGroupResponse{} func (m *MsgDeleteGroupResponse) String() string { return proto.CompactTextString(m) } func (*MsgDeleteGroupResponse) ProtoMessage() {} func (*MsgDeleteGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{21} + return fileDescriptor_ddb71b028305a3cc, []int{23} } func (m *MsgDeleteGroupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1270,7 +1399,7 @@ func (m *MsgUpdateGroupMember) Reset() { *m = MsgUpdateGroupMember{} } func (m *MsgUpdateGroupMember) String() string { return proto.CompactTextString(m) } func (*MsgUpdateGroupMember) ProtoMessage() {} func (*MsgUpdateGroupMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{22} + return fileDescriptor_ddb71b028305a3cc, []int{24} } func (m *MsgUpdateGroupMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1341,7 +1470,7 @@ func (m *MsgUpdateGroupMemberResponse) Reset() { *m = MsgUpdateGroupMemb func (m *MsgUpdateGroupMemberResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateGroupMemberResponse) ProtoMessage() {} func (*MsgUpdateGroupMemberResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{23} + return fileDescriptor_ddb71b028305a3cc, []int{25} } func (m *MsgUpdateGroupMemberResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1385,7 +1514,7 @@ func (m *MsgRenewGroupMember) Reset() { *m = MsgRenewGroupMember{} } func (m *MsgRenewGroupMember) String() string { return proto.CompactTextString(m) } func (*MsgRenewGroupMember) ProtoMessage() {} func (*MsgRenewGroupMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{24} + return fileDescriptor_ddb71b028305a3cc, []int{26} } func (m *MsgRenewGroupMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1449,7 +1578,7 @@ func (m *MsgRenewGroupMemberResponse) Reset() { *m = MsgRenewGroupMember func (m *MsgRenewGroupMemberResponse) String() string { return proto.CompactTextString(m) } func (*MsgRenewGroupMemberResponse) ProtoMessage() {} func (*MsgRenewGroupMemberResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{25} + return fileDescriptor_ddb71b028305a3cc, []int{27} } func (m *MsgRenewGroupMemberResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1489,7 +1618,7 @@ func (m *MsgGroupMember) Reset() { *m = MsgGroupMember{} } func (m *MsgGroupMember) String() string { return proto.CompactTextString(m) } func (*MsgGroupMember) ProtoMessage() {} func (*MsgGroupMember) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{26} + return fileDescriptor_ddb71b028305a3cc, []int{28} } func (m *MsgGroupMember) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1547,7 +1676,7 @@ func (m *MsgUpdateGroupExtra) Reset() { *m = MsgUpdateGroupExtra{} } func (m *MsgUpdateGroupExtra) String() string { return proto.CompactTextString(m) } func (*MsgUpdateGroupExtra) ProtoMessage() {} func (*MsgUpdateGroupExtra) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{27} + return fileDescriptor_ddb71b028305a3cc, []int{29} } func (m *MsgUpdateGroupExtra) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1611,7 +1740,7 @@ func (m *MsgUpdateGroupExtraResponse) Reset() { *m = MsgUpdateGroupExtra func (m *MsgUpdateGroupExtraResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateGroupExtraResponse) ProtoMessage() {} func (*MsgUpdateGroupExtraResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{28} + return fileDescriptor_ddb71b028305a3cc, []int{30} } func (m *MsgUpdateGroupExtraResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1653,7 +1782,7 @@ func (m *MsgLeaveGroup) Reset() { *m = MsgLeaveGroup{} } func (m *MsgLeaveGroup) String() string { return proto.CompactTextString(m) } func (*MsgLeaveGroup) ProtoMessage() {} func (*MsgLeaveGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{29} + return fileDescriptor_ddb71b028305a3cc, []int{31} } func (m *MsgLeaveGroup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1710,7 +1839,7 @@ func (m *MsgLeaveGroupResponse) Reset() { *m = MsgLeaveGroupResponse{} } func (m *MsgLeaveGroupResponse) String() string { return proto.CompactTextString(m) } func (*MsgLeaveGroupResponse) ProtoMessage() {} func (*MsgLeaveGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{30} + return fileDescriptor_ddb71b028305a3cc, []int{32} } func (m *MsgLeaveGroupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1759,7 +1888,7 @@ func (m *MsgUpdateBucketInfo) Reset() { *m = MsgUpdateBucketInfo{} } func (m *MsgUpdateBucketInfo) String() string { return proto.CompactTextString(m) } func (*MsgUpdateBucketInfo) ProtoMessage() {} func (*MsgUpdateBucketInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{31} + return fileDescriptor_ddb71b028305a3cc, []int{33} } func (m *MsgUpdateBucketInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1830,7 +1959,7 @@ func (m *MsgUpdateBucketInfoResponse) Reset() { *m = MsgUpdateBucketInfo func (m *MsgUpdateBucketInfoResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateBucketInfoResponse) ProtoMessage() {} func (*MsgUpdateBucketInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{32} + return fileDescriptor_ddb71b028305a3cc, []int{34} } func (m *MsgUpdateBucketInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1872,7 +2001,7 @@ func (m *MsgCancelCreateObject) Reset() { *m = MsgCancelCreateObject{} } func (m *MsgCancelCreateObject) String() string { return proto.CompactTextString(m) } func (*MsgCancelCreateObject) ProtoMessage() {} func (*MsgCancelCreateObject) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{33} + return fileDescriptor_ddb71b028305a3cc, []int{35} } func (m *MsgCancelCreateObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1929,7 +2058,7 @@ func (m *MsgCancelCreateObjectResponse) Reset() { *m = MsgCancelCreateOb func (m *MsgCancelCreateObjectResponse) String() string { return proto.CompactTextString(m) } func (*MsgCancelCreateObjectResponse) ProtoMessage() {} func (*MsgCancelCreateObjectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{34} + return fileDescriptor_ddb71b028305a3cc, []int{36} } func (m *MsgCancelCreateObjectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1976,7 +2105,7 @@ func (m *MsgPutPolicy) Reset() { *m = MsgPutPolicy{} } func (m *MsgPutPolicy) String() string { return proto.CompactTextString(m) } func (*MsgPutPolicy) ProtoMessage() {} func (*MsgPutPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{35} + return fileDescriptor_ddb71b028305a3cc, []int{37} } func (m *MsgPutPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2048,7 +2177,7 @@ func (m *MsgPutPolicyResponse) Reset() { *m = MsgPutPolicyResponse{} } func (m *MsgPutPolicyResponse) String() string { return proto.CompactTextString(m) } func (*MsgPutPolicyResponse) ProtoMessage() {} func (*MsgPutPolicyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{36} + return fileDescriptor_ddb71b028305a3cc, []int{38} } func (m *MsgPutPolicyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2090,7 +2219,7 @@ func (m *MsgDeletePolicy) Reset() { *m = MsgDeletePolicy{} } func (m *MsgDeletePolicy) String() string { return proto.CompactTextString(m) } func (*MsgDeletePolicy) ProtoMessage() {} func (*MsgDeletePolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{37} + return fileDescriptor_ddb71b028305a3cc, []int{39} } func (m *MsgDeletePolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2148,7 +2277,7 @@ func (m *MsgDeletePolicyResponse) Reset() { *m = MsgDeletePolicyResponse func (m *MsgDeletePolicyResponse) String() string { return proto.CompactTextString(m) } func (*MsgDeletePolicyResponse) ProtoMessage() {} func (*MsgDeletePolicyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{38} + return fileDescriptor_ddb71b028305a3cc, []int{40} } func (m *MsgDeletePolicyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2194,7 +2323,7 @@ func (m *MsgMirrorObject) Reset() { *m = MsgMirrorObject{} } func (m *MsgMirrorObject) String() string { return proto.CompactTextString(m) } func (*MsgMirrorObject) ProtoMessage() {} func (*MsgMirrorObject) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{39} + return fileDescriptor_ddb71b028305a3cc, []int{41} } func (m *MsgMirrorObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2258,7 +2387,7 @@ func (m *MsgMirrorObjectResponse) Reset() { *m = MsgMirrorObjectResponse func (m *MsgMirrorObjectResponse) String() string { return proto.CompactTextString(m) } func (*MsgMirrorObjectResponse) ProtoMessage() {} func (*MsgMirrorObjectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{40} + return fileDescriptor_ddb71b028305a3cc, []int{42} } func (m *MsgMirrorObjectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2302,7 +2431,7 @@ func (m *MsgMirrorBucket) Reset() { *m = MsgMirrorBucket{} } func (m *MsgMirrorBucket) String() string { return proto.CompactTextString(m) } func (*MsgMirrorBucket) ProtoMessage() {} func (*MsgMirrorBucket) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{41} + return fileDescriptor_ddb71b028305a3cc, []int{43} } func (m *MsgMirrorBucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2359,7 +2488,7 @@ func (m *MsgUpdateObjectInfoResponse) Reset() { *m = MsgUpdateObjectInfo func (m *MsgUpdateObjectInfoResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateObjectInfoResponse) ProtoMessage() {} func (*MsgUpdateObjectInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{42} + return fileDescriptor_ddb71b028305a3cc, []int{44} } func (m *MsgUpdateObjectInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2404,7 +2533,7 @@ func (m *MsgUpdateObjectInfo) Reset() { *m = MsgUpdateObjectInfo{} } func (m *MsgUpdateObjectInfo) String() string { return proto.CompactTextString(m) } func (*MsgUpdateObjectInfo) ProtoMessage() {} func (*MsgUpdateObjectInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{43} + return fileDescriptor_ddb71b028305a3cc, []int{45} } func (m *MsgUpdateObjectInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2468,7 +2597,7 @@ func (m *MsgMirrorBucketResponse) Reset() { *m = MsgMirrorBucketResponse func (m *MsgMirrorBucketResponse) String() string { return proto.CompactTextString(m) } func (*MsgMirrorBucketResponse) ProtoMessage() {} func (*MsgMirrorBucketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{44} + return fileDescriptor_ddb71b028305a3cc, []int{46} } func (m *MsgMirrorBucketResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2512,7 +2641,7 @@ func (m *MsgMirrorGroup) Reset() { *m = MsgMirrorGroup{} } func (m *MsgMirrorGroup) String() string { return proto.CompactTextString(m) } func (*MsgMirrorGroup) ProtoMessage() {} func (*MsgMirrorGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{45} + return fileDescriptor_ddb71b028305a3cc, []int{47} } func (m *MsgMirrorGroup) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2569,7 +2698,7 @@ func (m *MsgMirrorGroupResponse) Reset() { *m = MsgMirrorGroupResponse{} func (m *MsgMirrorGroupResponse) String() string { return proto.CompactTextString(m) } func (*MsgMirrorGroupResponse) ProtoMessage() {} func (*MsgMirrorGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{46} + return fileDescriptor_ddb71b028305a3cc, []int{48} } func (m *MsgMirrorGroupResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2611,7 +2740,7 @@ func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParams) ProtoMessage() {} func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{47} + return fileDescriptor_ddb71b028305a3cc, []int{49} } func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2662,7 +2791,7 @@ func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParamsResponse) ProtoMessage() {} func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{48} + return fileDescriptor_ddb71b028305a3cc, []int{50} } func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2706,7 +2835,7 @@ func (m *MsgMigrateBucket) Reset() { *m = MsgMigrateBucket{} } func (m *MsgMigrateBucket) String() string { return proto.CompactTextString(m) } func (*MsgMigrateBucket) ProtoMessage() {} func (*MsgMigrateBucket) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{49} + return fileDescriptor_ddb71b028305a3cc, []int{51} } func (m *MsgMigrateBucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2770,7 +2899,7 @@ func (m *MsgMigrateBucketResponse) Reset() { *m = MsgMigrateBucketRespon func (m *MsgMigrateBucketResponse) String() string { return proto.CompactTextString(m) } func (*MsgMigrateBucketResponse) ProtoMessage() {} func (*MsgMigrateBucketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{50} + return fileDescriptor_ddb71b028305a3cc, []int{52} } func (m *MsgMigrateBucketResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2815,7 +2944,7 @@ func (m *MsgCompleteMigrateBucket) Reset() { *m = MsgCompleteMigrateBuck func (m *MsgCompleteMigrateBucket) String() string { return proto.CompactTextString(m) } func (*MsgCompleteMigrateBucket) ProtoMessage() {} func (*MsgCompleteMigrateBucket) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{51} + return fileDescriptor_ddb71b028305a3cc, []int{53} } func (m *MsgCompleteMigrateBucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2879,7 +3008,7 @@ func (m *MsgCompleteMigrateBucketResponse) Reset() { *m = MsgCompleteMig func (m *MsgCompleteMigrateBucketResponse) String() string { return proto.CompactTextString(m) } func (*MsgCompleteMigrateBucketResponse) ProtoMessage() {} func (*MsgCompleteMigrateBucketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{52} + return fileDescriptor_ddb71b028305a3cc, []int{54} } func (m *MsgCompleteMigrateBucketResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2920,7 +3049,7 @@ func (m *MsgCancelMigrateBucket) Reset() { *m = MsgCancelMigrateBucket{} func (m *MsgCancelMigrateBucket) String() string { return proto.CompactTextString(m) } func (*MsgCancelMigrateBucket) ProtoMessage() {} func (*MsgCancelMigrateBucket) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{53} + return fileDescriptor_ddb71b028305a3cc, []int{55} } func (m *MsgCancelMigrateBucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2970,7 +3099,7 @@ func (m *MsgCancelMigrateBucketResponse) Reset() { *m = MsgCancelMigrate func (m *MsgCancelMigrateBucketResponse) String() string { return proto.CompactTextString(m) } func (*MsgCancelMigrateBucketResponse) ProtoMessage() {} func (*MsgCancelMigrateBucketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{54} + return fileDescriptor_ddb71b028305a3cc, []int{56} } func (m *MsgCancelMigrateBucketResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3011,7 +3140,7 @@ func (m *MsgRejectMigrateBucket) Reset() { *m = MsgRejectMigrateBucket{} func (m *MsgRejectMigrateBucket) String() string { return proto.CompactTextString(m) } func (*MsgRejectMigrateBucket) ProtoMessage() {} func (*MsgRejectMigrateBucket) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{55} + return fileDescriptor_ddb71b028305a3cc, []int{57} } func (m *MsgRejectMigrateBucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3061,7 +3190,7 @@ func (m *MsgRejectMigrateBucketResponse) Reset() { *m = MsgRejectMigrate func (m *MsgRejectMigrateBucketResponse) String() string { return proto.CompactTextString(m) } func (*MsgRejectMigrateBucketResponse) ProtoMessage() {} func (*MsgRejectMigrateBucketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{56} + return fileDescriptor_ddb71b028305a3cc, []int{58} } func (m *MsgRejectMigrateBucketResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3103,7 +3232,7 @@ func (m *MsgSetTag) Reset() { *m = MsgSetTag{} } func (m *MsgSetTag) String() string { return proto.CompactTextString(m) } func (*MsgSetTag) ProtoMessage() {} func (*MsgSetTag) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{57} + return fileDescriptor_ddb71b028305a3cc, []int{59} } func (m *MsgSetTag) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3160,7 +3289,7 @@ func (m *MsgSetTagResponse) Reset() { *m = MsgSetTagResponse{} } func (m *MsgSetTagResponse) String() string { return proto.CompactTextString(m) } func (*MsgSetTagResponse) ProtoMessage() {} func (*MsgSetTagResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{58} + return fileDescriptor_ddb71b028305a3cc, []int{60} } func (m *MsgSetTagResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3208,7 +3337,7 @@ func (m *MsgUpdateObjectContent) Reset() { *m = MsgUpdateObjectContent{} func (m *MsgUpdateObjectContent) String() string { return proto.CompactTextString(m) } func (*MsgUpdateObjectContent) ProtoMessage() {} func (*MsgUpdateObjectContent) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{59} + return fileDescriptor_ddb71b028305a3cc, []int{61} } func (m *MsgUpdateObjectContent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3286,7 +3415,7 @@ func (m *MsgUpdateObjectContentResponse) Reset() { *m = MsgUpdateObjectC func (m *MsgUpdateObjectContentResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateObjectContentResponse) ProtoMessage() {} func (*MsgUpdateObjectContentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{60} + return fileDescriptor_ddb71b028305a3cc, []int{62} } func (m *MsgUpdateObjectContentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3328,7 +3457,7 @@ func (m *MsgCancelUpdateObjectContent) Reset() { *m = MsgCancelUpdateObj func (m *MsgCancelUpdateObjectContent) String() string { return proto.CompactTextString(m) } func (*MsgCancelUpdateObjectContent) ProtoMessage() {} func (*MsgCancelUpdateObjectContent) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{61} + return fileDescriptor_ddb71b028305a3cc, []int{63} } func (m *MsgCancelUpdateObjectContent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3385,7 +3514,7 @@ func (m *MsgCancelUpdateObjectContentResponse) Reset() { *m = MsgCancelU func (m *MsgCancelUpdateObjectContentResponse) String() string { return proto.CompactTextString(m) } func (*MsgCancelUpdateObjectContentResponse) ProtoMessage() {} func (*MsgCancelUpdateObjectContentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{62} + return fileDescriptor_ddb71b028305a3cc, []int{64} } func (m *MsgCancelUpdateObjectContentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3440,7 +3569,7 @@ func (m *MsgDelegateCreateObject) Reset() { *m = MsgDelegateCreateObject func (m *MsgDelegateCreateObject) String() string { return proto.CompactTextString(m) } func (*MsgDelegateCreateObject) ProtoMessage() {} func (*MsgDelegateCreateObject) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{63} + return fileDescriptor_ddb71b028305a3cc, []int{65} } func (m *MsgDelegateCreateObject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3540,7 +3669,7 @@ func (m *MsgDelegateCreateObjectResponse) Reset() { *m = MsgDelegateCrea func (m *MsgDelegateCreateObjectResponse) String() string { return proto.CompactTextString(m) } func (*MsgDelegateCreateObjectResponse) ProtoMessage() {} func (*MsgDelegateCreateObjectResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{64} + return fileDescriptor_ddb71b028305a3cc, []int{66} } func (m *MsgDelegateCreateObjectResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3569,29 +3698,35 @@ func (m *MsgDelegateCreateObjectResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgDelegateCreateObjectResponse proto.InternalMessageInfo -type MsgUpdateDelegatedAgent struct { - // operator defines the account address of the operator, only the bucket owner can update the delegated agent. +type MsgDelegateUpdateObjectContent struct { + // operator defines the account address of the operator, it is the delegated agent that allows to creat object under bucket. Operator string `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` - // bucket_name defines the name of the bucket. - BucketName string `protobuf:"bytes,2,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` - // agents_to_add defines the delegated agent addresses to be added - AgentsToAdd []string `protobuf:"bytes,3,rep,name=agents_to_add,json=agentsToAdd,proto3" json:"agents_to_add,omitempty"` - // agents_to_remove defines the delegated agent addresses to be removed - AgentsToRemove []string `protobuf:"bytes,4,rep,name=agents_to_remove,json=agentsToRemove,proto3" json:"agents_to_remove,omitempty"` + // updater defines the account address of the object updater. + Updater string `protobuf:"bytes,2,opt,name=updater,proto3" json:"updater,omitempty"` + // bucket_name defines the name of the bucket where the object is stored. + BucketName string `protobuf:"bytes,3,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + // object_name defines the name of object + ObjectName string `protobuf:"bytes,4,opt,name=object_name,json=objectName,proto3" json:"object_name,omitempty"` + // payload_size defines size of the object's payload + PayloadSize uint64 `protobuf:"varint,5,opt,name=payload_size,json=payloadSize,proto3" json:"payload_size,omitempty"` + // content_type define the format of the object which should be a standard MIME type. + ContentType string `protobuf:"bytes,6,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"` + // expect_checksums defines a list of hashes which was generate by redundancy algorithm. + ExpectChecksums [][]byte `protobuf:"bytes,7,rep,name=expect_checksums,json=expectChecksums,proto3" json:"expect_checksums,omitempty"` } -func (m *MsgUpdateDelegatedAgent) Reset() { *m = MsgUpdateDelegatedAgent{} } -func (m *MsgUpdateDelegatedAgent) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateDelegatedAgent) ProtoMessage() {} -func (*MsgUpdateDelegatedAgent) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{65} +func (m *MsgDelegateUpdateObjectContent) Reset() { *m = MsgDelegateUpdateObjectContent{} } +func (m *MsgDelegateUpdateObjectContent) String() string { return proto.CompactTextString(m) } +func (*MsgDelegateUpdateObjectContent) ProtoMessage() {} +func (*MsgDelegateUpdateObjectContent) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{67} } -func (m *MsgUpdateDelegatedAgent) XXX_Unmarshal(b []byte) error { +func (m *MsgDelegateUpdateObjectContent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateDelegatedAgent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgDelegateUpdateObjectContent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateDelegatedAgent.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgDelegateUpdateObjectContent.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -3601,54 +3736,185 @@ func (m *MsgUpdateDelegatedAgent) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *MsgUpdateDelegatedAgent) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateDelegatedAgent.Merge(m, src) +func (m *MsgDelegateUpdateObjectContent) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDelegateUpdateObjectContent.Merge(m, src) } -func (m *MsgUpdateDelegatedAgent) XXX_Size() int { +func (m *MsgDelegateUpdateObjectContent) XXX_Size() int { return m.Size() } -func (m *MsgUpdateDelegatedAgent) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateDelegatedAgent.DiscardUnknown(m) +func (m *MsgDelegateUpdateObjectContent) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDelegateUpdateObjectContent.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateDelegatedAgent proto.InternalMessageInfo +var xxx_messageInfo_MsgDelegateUpdateObjectContent proto.InternalMessageInfo -func (m *MsgUpdateDelegatedAgent) GetOperator() string { +func (m *MsgDelegateUpdateObjectContent) GetOperator() string { if m != nil { return m.Operator } return "" } -func (m *MsgUpdateDelegatedAgent) GetBucketName() string { +func (m *MsgDelegateUpdateObjectContent) GetUpdater() string { + if m != nil { + return m.Updater + } + return "" +} + +func (m *MsgDelegateUpdateObjectContent) GetBucketName() string { if m != nil { return m.BucketName } return "" } -func (m *MsgUpdateDelegatedAgent) GetAgentsToAdd() []string { +func (m *MsgDelegateUpdateObjectContent) GetObjectName() string { if m != nil { - return m.AgentsToAdd + return m.ObjectName } - return nil + return "" } -func (m *MsgUpdateDelegatedAgent) GetAgentsToRemove() []string { +func (m *MsgDelegateUpdateObjectContent) GetPayloadSize() uint64 { if m != nil { - return m.AgentsToRemove + return m.PayloadSize } - return nil + return 0 } -type MsgUpdateDelegatedAgentResponse struct { +func (m *MsgDelegateUpdateObjectContent) GetContentType() string { + if m != nil { + return m.ContentType + } + return "" +} + +func (m *MsgDelegateUpdateObjectContent) GetExpectChecksums() [][]byte { + if m != nil { + return m.ExpectChecksums + } + return nil +} + +type MsgDelegateUpdateObjectContentResponse struct { +} + +func (m *MsgDelegateUpdateObjectContentResponse) Reset() { + *m = MsgDelegateUpdateObjectContentResponse{} +} +func (m *MsgDelegateUpdateObjectContentResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDelegateUpdateObjectContentResponse) ProtoMessage() {} +func (*MsgDelegateUpdateObjectContentResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{68} +} +func (m *MsgDelegateUpdateObjectContentResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDelegateUpdateObjectContentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDelegateUpdateObjectContentResponse.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 *MsgDelegateUpdateObjectContentResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDelegateUpdateObjectContentResponse.Merge(m, src) +} +func (m *MsgDelegateUpdateObjectContentResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDelegateUpdateObjectContentResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDelegateUpdateObjectContentResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDelegateUpdateObjectContentResponse proto.InternalMessageInfo + +type MsgUpdateDelegatedAgent struct { + // operator defines the account address of the operator, only the bucket owner can update the delegated agent. + Operator string `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` + // bucket_name defines the name of the bucket. + BucketName string `protobuf:"bytes,2,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + // agents_to_add defines the delegated agent addresses to be added + AgentsToAdd []string `protobuf:"bytes,3,rep,name=agents_to_add,json=agentsToAdd,proto3" json:"agents_to_add,omitempty"` + // agents_to_remove defines the delegated agent addresses to be removed + AgentsToRemove []string `protobuf:"bytes,4,rep,name=agents_to_remove,json=agentsToRemove,proto3" json:"agents_to_remove,omitempty"` +} + +func (m *MsgUpdateDelegatedAgent) Reset() { *m = MsgUpdateDelegatedAgent{} } +func (m *MsgUpdateDelegatedAgent) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateDelegatedAgent) ProtoMessage() {} +func (*MsgUpdateDelegatedAgent) Descriptor() ([]byte, []int) { + return fileDescriptor_ddb71b028305a3cc, []int{69} +} +func (m *MsgUpdateDelegatedAgent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateDelegatedAgent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateDelegatedAgent.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 *MsgUpdateDelegatedAgent) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateDelegatedAgent.Merge(m, src) +} +func (m *MsgUpdateDelegatedAgent) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateDelegatedAgent) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateDelegatedAgent.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateDelegatedAgent proto.InternalMessageInfo + +func (m *MsgUpdateDelegatedAgent) GetOperator() string { + if m != nil { + return m.Operator + } + return "" +} + +func (m *MsgUpdateDelegatedAgent) GetBucketName() string { + if m != nil { + return m.BucketName + } + return "" +} + +func (m *MsgUpdateDelegatedAgent) GetAgentsToAdd() []string { + if m != nil { + return m.AgentsToAdd + } + return nil +} + +func (m *MsgUpdateDelegatedAgent) GetAgentsToRemove() []string { + if m != nil { + return m.AgentsToRemove + } + return nil +} + +type MsgUpdateDelegatedAgentResponse struct { } func (m *MsgUpdateDelegatedAgentResponse) Reset() { *m = MsgUpdateDelegatedAgentResponse{} } func (m *MsgUpdateDelegatedAgentResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateDelegatedAgentResponse) ProtoMessage() {} func (*MsgUpdateDelegatedAgentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ddb71b028305a3cc, []int{66} + return fileDescriptor_ddb71b028305a3cc, []int{70} } func (m *MsgUpdateDelegatedAgentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3688,6 +3954,8 @@ func init() { proto.RegisterType((*MsgCreateObjectResponse)(nil), "greenfield.storage.MsgCreateObjectResponse") proto.RegisterType((*MsgSealObject)(nil), "greenfield.storage.MsgSealObject") proto.RegisterType((*MsgSealObjectResponse)(nil), "greenfield.storage.MsgSealObjectResponse") + proto.RegisterType((*MsgSealObjectV2)(nil), "greenfield.storage.MsgSealObjectV2") + proto.RegisterType((*MsgSealObjectV2Response)(nil), "greenfield.storage.MsgSealObjectV2Response") proto.RegisterType((*MsgRejectSealObject)(nil), "greenfield.storage.MsgRejectSealObject") proto.RegisterType((*MsgRejectSealObjectResponse)(nil), "greenfield.storage.MsgRejectSealObjectResponse") proto.RegisterType((*MsgCopyObject)(nil), "greenfield.storage.MsgCopyObject") @@ -3743,6 +4011,8 @@ func init() { proto.RegisterType((*MsgCancelUpdateObjectContentResponse)(nil), "greenfield.storage.MsgCancelUpdateObjectContentResponse") proto.RegisterType((*MsgDelegateCreateObject)(nil), "greenfield.storage.MsgDelegateCreateObject") proto.RegisterType((*MsgDelegateCreateObjectResponse)(nil), "greenfield.storage.MsgDelegateCreateObjectResponse") + proto.RegisterType((*MsgDelegateUpdateObjectContent)(nil), "greenfield.storage.MsgDelegateUpdateObjectContent") + proto.RegisterType((*MsgDelegateUpdateObjectContentResponse)(nil), "greenfield.storage.MsgDelegateUpdateObjectContentResponse") proto.RegisterType((*MsgUpdateDelegatedAgent)(nil), "greenfield.storage.MsgUpdateDelegatedAgent") proto.RegisterType((*MsgUpdateDelegatedAgentResponse)(nil), "greenfield.storage.MsgUpdateDelegatedAgentResponse") } @@ -3750,168 +4020,174 @@ func init() { func init() { proto.RegisterFile("greenfield/storage/tx.proto", fileDescriptor_ddb71b028305a3cc) } var fileDescriptor_ddb71b028305a3cc = []byte{ - // 2575 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5b, 0x4b, 0x6c, 0x1b, 0xc7, - 0x19, 0x36, 0x1f, 0x92, 0xcc, 0x9f, 0x7a, 0x79, 0xad, 0xc4, 0x34, 0x55, 0x53, 0x34, 0x93, 0x3a, - 0xf2, 0x4b, 0x74, 0x14, 0xd7, 0x70, 0x8d, 0xa0, 0xa8, 0xa4, 0x34, 0x2e, 0x91, 0x28, 0x56, 0x56, - 0xb6, 0x0b, 0xa4, 0x28, 0x98, 0x21, 0x77, 0xbc, 0xde, 0x86, 0xdc, 0xdd, 0xee, 0x2e, 0x65, 0x2b, - 0x05, 0x0a, 0xb4, 0x97, 0x9c, 0x0a, 0x18, 0x48, 0x0f, 0x3d, 0x14, 0x05, 0x5a, 0xa0, 0x40, 0x4f, - 0x45, 0x51, 0xe4, 0x5c, 0xf4, 0x12, 0xc0, 0xe8, 0xc9, 0xc8, 0xa1, 0x28, 0x7a, 0x70, 0x03, 0xbb, - 0x40, 0xd1, 0x6b, 0x2f, 0xbd, 0x16, 0xf3, 0xd8, 0xd9, 0xe1, 0x3e, 0x29, 0x5a, 0x8a, 0x74, 0xb2, - 0x39, 0xf3, 0xcd, 0xcc, 0xff, 0x9e, 0x7f, 0xfe, 0x7f, 0x05, 0x8b, 0xba, 0x83, 0xb1, 0x79, 0xcf, - 0xc0, 0x3d, 0xad, 0xe9, 0x7a, 0x96, 0x83, 0x74, 0xdc, 0xf4, 0x1e, 0xae, 0xd8, 0x8e, 0xe5, 0x59, - 0x8a, 0x12, 0x4c, 0xae, 0xf0, 0xc9, 0xea, 0xa9, 0xae, 0xe5, 0xf6, 0x2d, 0xb7, 0xd9, 0x77, 0xf5, - 0xe6, 0xce, 0xeb, 0xe4, 0x1f, 0x06, 0xae, 0x9e, 0x66, 0x13, 0x6d, 0xfa, 0xab, 0xc9, 0x7e, 0xf0, - 0xa9, 0x05, 0xdd, 0xd2, 0x2d, 0x36, 0x4e, 0xfe, 0xc7, 0x47, 0x97, 0x74, 0xcb, 0xd2, 0x7b, 0xb8, - 0x49, 0x7f, 0x75, 0x06, 0xf7, 0x9a, 0x9e, 0xd1, 0xc7, 0xae, 0x87, 0xfa, 0x36, 0x07, 0xd4, 0x25, - 0xda, 0xba, 0x56, 0xbf, 0x6f, 0x99, 0x4d, 0x64, 0xdb, 0x8e, 0xb5, 0x83, 0x7a, 0x62, 0x8b, 0x08, - 0xe2, 0x81, 0x83, 0x6c, 0x1b, 0x3b, 0x1c, 0xd0, 0x90, 0x00, 0x36, 0x76, 0xfa, 0x86, 0xeb, 0x1a, - 0x96, 0xc9, 0xb1, 0x31, 0x9b, 0xf8, 0x22, 0xc8, 0x04, 0xd8, 0xc8, 0x41, 0x7d, 0x9f, 0xbf, 0x5a, - 0x9c, 0x10, 0x77, 0x6d, 0xcc, 0xe7, 0x1b, 0x7f, 0x2e, 0xc0, 0xdc, 0xa6, 0xab, 0x6f, 0x38, 0x18, - 0x79, 0x78, 0x7d, 0xd0, 0xfd, 0x08, 0x7b, 0xca, 0x2a, 0x4c, 0x75, 0xc9, 0x6f, 0xcb, 0xa9, 0xe4, - 0xea, 0xb9, 0xe5, 0xd2, 0x7a, 0xe5, 0x8b, 0xcf, 0x2e, 0x2f, 0x70, 0xb1, 0xad, 0x69, 0x9a, 0x83, - 0x5d, 0x77, 0xdb, 0x73, 0x0c, 0x53, 0x57, 0x7d, 0xa0, 0xb2, 0x04, 0xe5, 0x0e, 0x5d, 0xdd, 0x36, - 0x51, 0x1f, 0x57, 0xf2, 0x64, 0x9d, 0x0a, 0x6c, 0xe8, 0x3d, 0xd4, 0xc7, 0xca, 0x3a, 0xc0, 0x8e, - 0xe1, 0x1a, 0x1d, 0xa3, 0x67, 0x78, 0xbb, 0x95, 0x42, 0x3d, 0xb7, 0x3c, 0xbb, 0xda, 0x58, 0x89, - 0x6a, 0x71, 0xe5, 0xae, 0x40, 0xdd, 0xde, 0xb5, 0xb1, 0x2a, 0xad, 0x52, 0xd6, 0x60, 0xce, 0x46, - 0xbb, 0x7d, 0x6c, 0x7a, 0x6d, 0xc4, 0xc8, 0xa8, 0x14, 0x33, 0x08, 0x9c, 0xe5, 0x0b, 0xf8, 0xa8, - 0xf2, 0x36, 0x28, 0xb6, 0x63, 0xf4, 0x91, 0xb3, 0xdb, 0x76, 0x6d, 0xb1, 0xcb, 0x44, 0xc6, 0x2e, - 0xf3, 0x7c, 0xcd, 0xb6, 0xed, 0xef, 0xf3, 0x0e, 0x9c, 0x94, 0xf7, 0xe1, 0xba, 0xaf, 0x4c, 0xd6, - 0x73, 0xcb, 0xe5, 0xd5, 0x45, 0x99, 0x2f, 0xae, 0xaf, 0x35, 0x0e, 0x51, 0x4f, 0x04, 0x7b, 0xf1, - 0x21, 0xe5, 0x12, 0x28, 0xdd, 0xfb, 0xc8, 0xd1, 0xb1, 0xd6, 0x76, 0x30, 0xd2, 0xda, 0x3f, 0x1a, - 0x58, 0x1e, 0xaa, 0x4c, 0xd5, 0x73, 0xcb, 0x45, 0x75, 0x9e, 0xcf, 0xa8, 0x18, 0x69, 0xef, 0x93, - 0xf1, 0x1b, 0xd3, 0x3f, 0xfb, 0xf7, 0x1f, 0x2f, 0xf8, 0x82, 0x6f, 0x6c, 0xc3, 0xa9, 0x90, 0xfe, - 0x54, 0xec, 0xda, 0x96, 0xe9, 0x62, 0xe5, 0x3a, 0x94, 0xb8, 0x4e, 0x0c, 0x8d, 0x6b, 0x72, 0xf1, - 0xf1, 0xd3, 0xa5, 0x63, 0xff, 0x78, 0xba, 0x54, 0xbc, 0x63, 0x98, 0xde, 0x17, 0x9f, 0x5d, 0x2e, - 0x73, 0x76, 0xc9, 0x4f, 0xf5, 0x38, 0x43, 0xb7, 0xb4, 0xc6, 0x03, 0x6a, 0x14, 0x6f, 0xe1, 0x1e, - 0x16, 0x46, 0x71, 0x15, 0x8e, 0x5b, 0x36, 0x76, 0x46, 0xb2, 0x0a, 0x81, 0xcc, 0x34, 0x8b, 0x1b, - 0x33, 0x84, 0x19, 0x81, 0x6f, 0x9c, 0xa6, 0xdc, 0xc8, 0x07, 0xfb, 0xdc, 0x34, 0x7e, 0x91, 0x83, - 0x05, 0x32, 0x67, 0xb8, 0x5d, 0xcb, 0xf4, 0x0c, 0x73, 0x70, 0xb0, 0x94, 0x29, 0x2f, 0xc3, 0xa4, - 0x83, 0x91, 0x6b, 0x99, 0xd4, 0x58, 0x4b, 0x2a, 0xff, 0x15, 0xa6, 0xb8, 0x06, 0x5f, 0x8b, 0xa3, - 0x4a, 0x90, 0xfd, 0x2f, 0xd9, 0xc1, 0x6e, 0x75, 0x7e, 0x88, 0xbb, 0x07, 0xe4, 0x60, 0x4b, 0x50, - 0xb6, 0xe8, 0xf6, 0x0c, 0xc0, 0x88, 0x06, 0x36, 0x44, 0x01, 0x67, 0x61, 0xda, 0x46, 0xbb, 0x3d, - 0x0b, 0x69, 0x6d, 0xd7, 0xf8, 0x18, 0x53, 0xd7, 0x29, 0xaa, 0x65, 0x3e, 0xb6, 0x6d, 0x7c, 0x1c, - 0x76, 0xd2, 0x89, 0xb1, 0x9c, 0xf4, 0x2c, 0x4c, 0x13, 0x51, 0x10, 0x27, 0x25, 0x81, 0x86, 0xba, - 0x44, 0x49, 0x2d, 0xf3, 0x31, 0x02, 0x4f, 0x72, 0x9e, 0xa9, 0xb1, 0x9c, 0xe7, 0x3c, 0xcc, 0xe3, - 0x87, 0x36, 0xe1, 0xbb, 0x7b, 0x1f, 0x77, 0x3f, 0x72, 0x07, 0x7d, 0xb7, 0x72, 0xbc, 0x5e, 0x58, - 0x9e, 0x56, 0xe7, 0xd8, 0xf8, 0x86, 0x3f, 0xac, 0xbc, 0x03, 0x73, 0x0e, 0xd6, 0x06, 0xa6, 0x86, - 0xcc, 0xee, 0x2e, 0xa3, 0xae, 0x94, 0xcc, 0xa3, 0x2a, 0xa0, 0x94, 0xc7, 0x59, 0x67, 0xe8, 0x77, - 0x8a, 0x1b, 0x32, 0x2d, 0xcb, 0x6e, 0xc8, 0x15, 0x33, 0xa2, 0x1b, 0x32, 0x74, 0x4b, 0x6b, 0x7c, - 0x9a, 0x87, 0x99, 0x4d, 0x57, 0xdf, 0xc6, 0xa8, 0xc7, 0x2d, 0xe7, 0x80, 0x6c, 0x3d, 0xd3, 0x76, - 0xbe, 0x01, 0xa7, 0xf4, 0x9e, 0xd5, 0x41, 0xbd, 0xf6, 0x8e, 0xe1, 0x78, 0x03, 0xd4, 0x6b, 0xeb, - 0x8e, 0x35, 0xb0, 0x09, 0x47, 0xc4, 0x8c, 0x66, 0xd4, 0x05, 0x36, 0x7d, 0x97, 0xcd, 0xde, 0x24, - 0x93, 0x2d, 0x4d, 0x79, 0x0b, 0x96, 0x5c, 0xdc, 0xb5, 0x4c, 0x8d, 0xab, 0xba, 0xd3, 0x73, 0xdb, - 0x48, 0xd7, 0xdb, 0xae, 0xa1, 0x9b, 0xc8, 0x1b, 0x38, 0x98, 0x85, 0xde, 0x69, 0x75, 0x51, 0xc0, - 0xb6, 0xed, 0xf5, 0x9e, 0xbb, 0xa6, 0xeb, 0xdb, 0x02, 0x12, 0xf6, 0xb8, 0x53, 0xf0, 0xd2, 0x90, - 0x50, 0x84, 0xab, 0xfd, 0x2a, 0x07, 0x27, 0x37, 0x5d, 0x5d, 0xc5, 0x64, 0xf4, 0xf0, 0x85, 0x16, - 0xa6, 0xfb, 0x0c, 0x2c, 0xc6, 0x50, 0x27, 0xa8, 0xff, 0x03, 0x53, 0xf6, 0x86, 0x65, 0xef, 0x72, - 0xba, 0xab, 0x61, 0xba, 0x25, 0xea, 0xce, 0xc1, 0x9c, 0xeb, 0x74, 0xdb, 0x51, 0x0a, 0x67, 0x5c, - 0xa7, 0xbb, 0x1e, 0x10, 0x79, 0x0e, 0xe6, 0x34, 0xd7, 0x1b, 0xc2, 0x31, 0x42, 0x67, 0x34, 0xd7, - 0x1b, 0xc6, 0x91, 0xfd, 0x64, 0x86, 0x8a, 0x62, 0xbf, 0x5b, 0x81, 0x21, 0xf0, 0xfd, 0x64, 0xdc, - 0x84, 0xd8, 0x4f, 0xc2, 0xa9, 0x70, 0x8a, 0xe0, 0xc6, 0xbc, 0x23, 0x17, 0x34, 0xd7, 0xdb, 0x0a, - 0x7b, 0x7a, 0x58, 0x9e, 0xef, 0x53, 0x3b, 0x08, 0xe4, 0xb5, 0x0f, 0x0e, 0xf7, 0xcb, 0x9c, 0x74, - 0xf1, 0x1d, 0x2d, 0xeb, 0x91, 0x6f, 0xc6, 0x90, 0xe5, 0x3c, 0x89, 0xdc, 0x8c, 0x07, 0x4b, 0xfa, - 0x0d, 0x00, 0x21, 0x5f, 0xb7, 0x52, 0xa8, 0x17, 0xb2, 0x04, 0x5c, 0xf2, 0x05, 0xec, 0x4a, 0xb7, - 0x6a, 0x71, 0x4f, 0xb7, 0x6a, 0x88, 0xe5, 0x4f, 0x72, 0x30, 0x2b, 0xe2, 0x2d, 0x8d, 0x36, 0x63, - 0x5d, 0xaa, 0x67, 0x00, 0x58, 0x1c, 0x93, 0x38, 0x2d, 0xd1, 0x11, 0xca, 0xe8, 0x02, 0x4c, 0xe0, - 0x87, 0x9e, 0x83, 0xb8, 0x76, 0xd8, 0x8f, 0x50, 0xe0, 0xdf, 0x82, 0x97, 0x87, 0x09, 0x11, 0x66, - 0x78, 0x0d, 0x8e, 0x8b, 0x20, 0x39, 0x82, 0x15, 0x4e, 0xe9, 0x2c, 0x68, 0x36, 0x3c, 0xca, 0x1a, - 0xd3, 0x34, 0x63, 0x6d, 0x3c, 0x3d, 0xa6, 0x33, 0x17, 0x96, 0x78, 0x85, 0xf2, 0x21, 0x9d, 0x2a, - 0x64, 0xfd, 0x79, 0x9e, 0x9a, 0xd7, 0x1d, 0x5b, 0xf3, 0x59, 0xdc, 0xc4, 0xfd, 0x0e, 0x76, 0xc6, - 0x24, 0xeb, 0x9b, 0x50, 0x66, 0x64, 0x59, 0x0f, 0x4c, 0xec, 0x30, 0xba, 0x52, 0x16, 0x32, 0x1e, - 0x6e, 0x11, 0x6c, 0x88, 0xa3, 0x42, 0x58, 0x5d, 0xdf, 0x85, 0xd9, 0x3e, 0xa5, 0xcc, 0x6d, 0x7b, - 0x16, 0xc9, 0xed, 0x2b, 0xc5, 0x7a, 0x61, 0xb9, 0x1c, 0x7f, 0xbb, 0x6f, 0xba, 0xba, 0xc4, 0x8b, - 0x3a, 0xcd, 0x57, 0xde, 0xb6, 0xd6, 0x34, 0x72, 0x6f, 0x9d, 0x90, 0x76, 0xd2, 0xa8, 0x50, 0x2a, - 0x13, 0xd4, 0xd0, 0x93, 0x29, 0x9d, 0x13, 0x5b, 0x30, 0x29, 0xc6, 0xdb, 0x74, 0x44, 0x8c, 0x42, - 0xce, 0xff, 0xf5, 0xaf, 0x2f, 0x13, 0x3f, 0x38, 0xca, 0x62, 0x7e, 0x13, 0xa6, 0x38, 0xa7, 0x7b, - 0x90, 0xaf, 0xbf, 0x24, 0xe9, 0x52, 0x1c, 0xe6, 0x59, 0xc8, 0xe4, 0xe7, 0xcc, 0xcf, 0x65, 0x71, - 0x5c, 0x81, 0x49, 0xb6, 0x57, 0xa6, 0x30, 0x38, 0x4e, 0x69, 0x01, 0xc9, 0x04, 0x0d, 0x07, 0x79, - 0x86, 0x65, 0xb6, 0xc9, 0x53, 0x9e, 0x8a, 0xa3, 0xbc, 0x5a, 0x5d, 0x61, 0xef, 0xfc, 0x15, 0xff, - 0x9d, 0xbf, 0x72, 0xdb, 0x7f, 0xe7, 0xaf, 0x17, 0x1f, 0xfd, 0x73, 0x29, 0xa7, 0xce, 0x06, 0x0b, - 0xc9, 0x54, 0xe3, 0xaf, 0x4c, 0x47, 0x92, 0x12, 0xbf, 0x43, 0x62, 0xc2, 0x91, 0xd3, 0x91, 0x88, - 0x5c, 0x45, 0x39, 0x72, 0xc5, 0xca, 0x3e, 0xcc, 0x8b, 0x90, 0xfd, 0xef, 0x73, 0x34, 0x21, 0x79, - 0x17, 0xa3, 0x1d, 0x1e, 0x87, 0xf6, 0x2e, 0xfa, 0x03, 0xe3, 0xf0, 0x46, 0x99, 0xf0, 0xc2, 0x8f, - 0xe1, 0x29, 0x61, 0x40, 0x69, 0x70, 0x35, 0xe6, 0x25, 0x7d, 0xb1, 0x74, 0xa7, 0x65, 0xde, 0xb3, - 0x0e, 0xea, 0x66, 0x7c, 0x37, 0xf6, 0x21, 0x5f, 0xa0, 0xc6, 0x56, 0x8b, 0x49, 0x78, 0xee, 0xb4, - 0x4c, 0xef, 0xda, 0xd5, 0xbb, 0xa8, 0x37, 0xc0, 0xd1, 0x87, 0xfe, 0x7e, 0x94, 0x3b, 0xf6, 0xe1, - 0x41, 0x97, 0x66, 0x35, 0x81, 0x44, 0x85, 0xc4, 0x7f, 0x9d, 0x63, 0x69, 0x19, 0x32, 0xbb, 0xb8, - 0x37, 0xf4, 0xea, 0x3d, 0x22, 0x89, 0xd4, 0x12, 0x9c, 0x89, 0xa5, 0x4f, 0x70, 0xf0, 0x97, 0x3c, - 0x4c, 0x6f, 0xba, 0xfa, 0xd6, 0xc0, 0xdb, 0xb2, 0x7a, 0x46, 0x77, 0x77, 0x4c, 0xc2, 0xbf, 0x05, - 0x25, 0xdb, 0x31, 0xcc, 0xae, 0x61, 0xa3, 0x1e, 0x8f, 0x37, 0x75, 0x59, 0xf2, 0x41, 0xcd, 0x6f, - 0x65, 0xcb, 0xc7, 0xa9, 0xc1, 0x12, 0x92, 0xfd, 0x3b, 0xd8, 0xb5, 0x06, 0x4e, 0xd7, 0x67, 0x4a, - 0xfc, 0x56, 0xbe, 0x0d, 0xe0, 0x7a, 0xc8, 0xc3, 0x44, 0xd5, 0x7e, 0x14, 0x4e, 0xda, 0x7c, 0xdb, - 0x07, 0xaa, 0xd2, 0x1a, 0x65, 0x33, 0x1a, 0x13, 0xa7, 0x32, 0x63, 0xe2, 0xf1, 0xc7, 0x4f, 0x97, - 0x72, 0x71, 0x71, 0x31, 0x2c, 0xe3, 0x2d, 0x9a, 0x31, 0x08, 0x09, 0xca, 0x99, 0xb9, 0x4d, 0x47, - 0xfc, 0x87, 0x63, 0x56, 0x66, 0xce, 0xd0, 0x2d, 0xad, 0xf1, 0x27, 0x39, 0x33, 0x3f, 0xaa, 0x7a, - 0x09, 0x8b, 0x61, 0x5b, 0xca, 0xd9, 0xf7, 0x4d, 0x12, 0xff, 0x61, 0x92, 0xd8, 0x34, 0x1c, 0xc7, - 0x72, 0x5e, 0xc8, 0xb5, 0x2e, 0x42, 0xde, 0xd0, 0x78, 0x4c, 0x4e, 0x3d, 0x3c, 0x6f, 0x68, 0x61, - 0x3f, 0x2c, 0x64, 0xf9, 0x61, 0x31, 0x52, 0x43, 0x68, 0xc0, 0x8c, 0x86, 0x5d, 0xaf, 0xdd, 0xbd, - 0x8f, 0x0c, 0x93, 0xb0, 0x3d, 0x41, 0x2b, 0x07, 0x65, 0x32, 0xb8, 0x41, 0xc6, 0x5a, 0x5a, 0xfc, - 0xa3, 0x47, 0x66, 0x55, 0x78, 0xe9, 0x63, 0x59, 0x0c, 0x2f, 0x54, 0x09, 0xdc, 0x5f, 0x31, 0x44, - 0xb8, 0x2c, 0x66, 0x72, 0x29, 0x47, 0x54, 0xc6, 0xe5, 0x50, 0x44, 0xfd, 0x52, 0xce, 0x39, 0x82, - 0xf9, 0x43, 0xab, 0x05, 0x0d, 0xdf, 0x29, 0xc5, 0xfd, 0xb8, 0x53, 0x64, 0x3d, 0x87, 0xea, 0xa7, - 0x9f, 0xb3, 0x0c, 0x90, 0xcd, 0xbd, 0xc8, 0x73, 0x68, 0x4f, 0x6a, 0xce, 0x48, 0xaf, 0xc6, 0x50, - 0x32, 0x7b, 0x5f, 0x49, 0x6c, 0x08, 0x0e, 0x3f, 0x65, 0x96, 0xcc, 0xf4, 0xbb, 0x45, 0x9b, 0x37, - 0xca, 0x35, 0x28, 0xa1, 0x81, 0x77, 0xdf, 0x72, 0x88, 0x88, 0xb3, 0x78, 0x0c, 0xa0, 0xca, 0x75, - 0x98, 0x64, 0xed, 0x9f, 0x20, 0xc3, 0x8d, 0xea, 0x85, 0x9d, 0xb1, 0x5e, 0x24, 0x42, 0x50, 0x39, - 0xfe, 0xc6, 0x2c, 0x21, 0x37, 0xd8, 0x89, 0xab, 0x44, 0x26, 0x4a, 0x10, 0xfc, 0xbf, 0x1c, 0xcc, - 0x53, 0x5e, 0x74, 0x07, 0x1d, 0x70, 0x7f, 0x40, 0x39, 0x0f, 0x27, 0x42, 0x75, 0x24, 0x43, 0xa3, - 0xfa, 0x98, 0x51, 0x67, 0xe5, 0x22, 0x51, 0x4b, 0x4b, 0x2b, 0x39, 0x15, 0xf7, 0xa9, 0xe4, 0x54, - 0x85, 0x4a, 0x98, 0xf1, 0xa0, 0x24, 0x91, 0xa7, 0x93, 0x1b, 0x56, 0xdf, 0x26, 0xf1, 0xfe, 0x2b, - 0x91, 0xce, 0x3a, 0xd4, 0x62, 0xcb, 0xb2, 0xf7, 0x50, 0xdf, 0xe8, 0xed, 0x06, 0xa2, 0xaa, 0x46, - 0xab, 0xb3, 0x6f, 0x53, 0x48, 0x4b, 0x53, 0xd6, 0x60, 0x5a, 0xdf, 0xd1, 0xdb, 0x7d, 0x64, 0xdb, - 0x86, 0xa9, 0xfb, 0xd9, 0x44, 0x2d, 0xce, 0x70, 0x6e, 0xde, 0xbd, 0xb9, 0xc9, 0x60, 0x6a, 0x59, - 0xdf, 0xd1, 0xf9, 0xff, 0x23, 0x6f, 0xba, 0x06, 0xd4, 0x93, 0x04, 0x21, 0xa4, 0xf5, 0x13, 0x56, - 0x36, 0xa1, 0x59, 0xd8, 0x57, 0x21, 0xaa, 0x30, 0x8d, 0x75, 0xa8, 0xc5, 0x9f, 0x1f, 0xa2, 0x90, - 0x95, 0x6b, 0x0f, 0x8f, 0xc2, 0x98, 0xf3, 0x05, 0x85, 0xbf, 0xcd, 0x41, 0x89, 0x56, 0xc2, 0xbd, - 0xdb, 0x48, 0x1f, 0x93, 0x2a, 0x39, 0x9b, 0xc9, 0x87, 0xb2, 0xcc, 0xab, 0x50, 0xf4, 0x90, 0xee, - 0xf2, 0xf7, 0x4b, 0x3d, 0xbe, 0x47, 0xc2, 0xb0, 0xb7, 0x91, 0xee, 0xaa, 0x14, 0x1d, 0x66, 0xe3, - 0x24, 0x9c, 0x10, 0x34, 0x0a, 0xca, 0x1f, 0xe5, 0xa9, 0x70, 0xe5, 0x2b, 0x6d, 0x83, 0xf5, 0x87, - 0x0e, 0xed, 0x56, 0x1b, 0xa1, 0x3b, 0x16, 0xee, 0x6c, 0x4d, 0x44, 0x3b, 0x5b, 0x71, 0xcd, 0xa8, - 0xc9, 0xd8, 0x66, 0x54, 0xbc, 0xba, 0x63, 0x24, 0x22, 0x84, 0xf6, 0xbb, 0x1c, 0x2d, 0x20, 0x31, - 0x9b, 0x3d, 0x42, 0xa2, 0x0b, 0x73, 0x72, 0x0e, 0x5e, 0x4d, 0x23, 0x53, 0xf0, 0xf3, 0xb7, 0x82, - 0x48, 0x8f, 0x75, 0xe4, 0xe1, 0x7d, 0x78, 0x2b, 0x4a, 0x25, 0xe0, 0xfc, 0x98, 0x7d, 0xd5, 0x31, - 0xf2, 0xda, 0xb0, 0xe5, 0x4c, 0x64, 0x5b, 0x4e, 0x4c, 0x4f, 0x74, 0x38, 0xab, 0x9a, 0x1a, 0xab, - 0xf5, 0x7a, 0x58, 0xad, 0xd0, 0x90, 0x01, 0x7c, 0x1f, 0x96, 0x12, 0xf4, 0xba, 0x0f, 0x2d, 0x9a, - 0x9f, 0xe6, 0xa5, 0xc4, 0xc4, 0x3f, 0x43, 0x5b, 0xd3, 0x0f, 0xd0, 0x01, 0xde, 0x84, 0x19, 0x44, - 0xf6, 0x17, 0x65, 0xe5, 0x42, 0x46, 0x25, 0xb8, 0xcc, 0xe0, 0xac, 0x96, 0xbc, 0x0e, 0xf3, 0xc1, - 0x6a, 0x07, 0xf7, 0xad, 0x1d, 0x4c, 0xef, 0xd8, 0xd4, 0x32, 0x8e, 0xbf, 0x81, 0x4a, 0xf1, 0x61, - 0x01, 0x9f, 0xa5, 0x02, 0x8e, 0x13, 0x81, 0x2f, 0xe0, 0xd5, 0xdf, 0x2c, 0x42, 0x61, 0xd3, 0xd5, - 0x95, 0x0f, 0x61, 0x7a, 0xe8, 0xdb, 0x9e, 0x57, 0x12, 0x6a, 0xb5, 0x32, 0xa8, 0x7a, 0x71, 0x04, - 0x90, 0x50, 0xe5, 0x87, 0x30, 0x3d, 0xf4, 0xa1, 0x48, 0xd2, 0x09, 0x32, 0x28, 0xf1, 0x84, 0xb8, - 0x2f, 0x3f, 0x94, 0x1e, 0xcc, 0x47, 0x0a, 0x78, 0xaf, 0x25, 0x6c, 0x10, 0x06, 0x56, 0x9b, 0x23, - 0x02, 0x65, 0x7e, 0x86, 0x1e, 0x95, 0x49, 0xfc, 0xc8, 0xa0, 0x44, 0x7e, 0xe2, 0x9e, 0x34, 0x8a, - 0x05, 0x27, 0xa2, 0x5f, 0xb1, 0x2c, 0x27, 0x49, 0x24, 0x8c, 0xac, 0x5e, 0x19, 0x15, 0x29, 0x0e, - 0x7c, 0x08, 0x0b, 0xb1, 0xfe, 0x72, 0x31, 0x55, 0x36, 0xc3, 0xe0, 0xea, 0x1b, 0x7b, 0x00, 0xcb, - 0xc2, 0x1c, 0x8a, 0xeb, 0xe9, 0xe6, 0xc7, 0x40, 0x19, 0xe6, 0x17, 0x8a, 0x24, 0x1f, 0x00, 0x48, - 0xad, 0xfe, 0xb3, 0x09, 0x4b, 0x03, 0x48, 0xf5, 0x7c, 0x26, 0x44, 0x36, 0xbc, 0xc8, 0xc7, 0x04, - 0x49, 0x86, 0x17, 0x06, 0x26, 0x1a, 0x5e, 0xd2, 0x07, 0x00, 0x84, 0x13, 0xa9, 0xf9, 0x9f, 0xc4, - 0x49, 0x00, 0x49, 0xe4, 0x24, 0xa6, 0x25, 0x2e, 0x9c, 0x34, 0x43, 0x0f, 0x32, 0x28, 0xc3, 0x49, - 0x43, 0x27, 0x38, 0xa0, 0xc4, 0xd4, 0x7c, 0x13, 0x49, 0x8c, 0x40, 0xab, 0xaf, 0x8f, 0x0c, 0x8d, - 0xba, 0x6a, 0x06, 0x57, 0x32, 0x28, 0xc3, 0x55, 0x43, 0x27, 0x0c, 0xbb, 0x2a, 0x3f, 0x66, 0x04, - 0x57, 0xe5, 0x67, 0x5d, 0x19, 0x15, 0x19, 0x8d, 0x75, 0x52, 0xa1, 0x27, 0x3d, 0xd6, 0x05, 0xc0, - 0x8c, 0x58, 0x17, 0x2d, 0x2d, 0x29, 0x03, 0x38, 0x19, 0x97, 0x48, 0x5e, 0x18, 0x61, 0x1f, 0x8e, - 0xad, 0xae, 0x8e, 0x8e, 0x15, 0xc7, 0x7e, 0x92, 0x83, 0xd3, 0xc9, 0x69, 0xec, 0x95, 0x54, 0x43, - 0x88, 0xa3, 0xe1, 0xfa, 0x5e, 0x57, 0xc8, 0x91, 0x31, 0x36, 0xff, 0x4c, 0x33, 0xfd, 0x30, 0x38, - 0x31, 0x32, 0xa6, 0x66, 0x40, 0x3f, 0x80, 0xb2, 0xfc, 0xf5, 0x42, 0x23, 0x35, 0xe6, 0x51, 0x4c, - 0xf5, 0x42, 0x36, 0x46, 0xde, 0x5e, 0xfe, 0x82, 0xa0, 0x91, 0xea, 0xca, 0xe9, 0xdb, 0xc7, 0x7c, - 0x13, 0x40, 0xfc, 0x22, 0xfa, 0x3d, 0xc0, 0x72, 0xaa, 0x29, 0x48, 0xc8, 0x44, 0xbf, 0x48, 0x6c, - 0x8e, 0x07, 0x7e, 0x21, 0x35, 0x5d, 0x5f, 0xcb, 0xde, 0x85, 0x02, 0x33, 0xfc, 0x22, 0xda, 0xfa, - 0x24, 0xa1, 0x58, 0x6a, 0x7b, 0x26, 0x85, 0xe2, 0x00, 0x92, 0x18, 0x8a, 0xa3, 0x2d, 0x49, 0xa2, - 0x19, 0xb9, 0x98, 0xd9, 0x48, 0x0d, 0x47, 0xe9, 0x9a, 0x89, 0xa9, 0x26, 0xb2, 0x3b, 0x2b, 0xf4, - 0x05, 0x41, 0xf2, 0x9d, 0x35, 0x0c, 0x4c, 0xb9, 0xb3, 0xe2, 0xfb, 0xf3, 0xca, 0xf7, 0xa0, 0x14, - 0xf4, 0xc9, 0xea, 0x09, 0xab, 0x05, 0xa2, 0xba, 0x9c, 0x85, 0x88, 0x5e, 0x58, 0x7c, 0xef, 0xf4, - 0x0b, 0x8b, 0x6f, 0x7f, 0x71, 0x04, 0x90, 0x7c, 0xc2, 0x50, 0xc9, 0xf5, 0x95, 0x54, 0x23, 0x61, - 0xa0, 0xea, 0xc5, 0x11, 0x40, 0xe2, 0x84, 0x2e, 0xcc, 0x0c, 0x17, 0x8e, 0x5e, 0x4d, 0xd4, 0xa3, - 0x84, 0xaa, 0x5e, 0x1a, 0x05, 0x25, 0x0e, 0xf9, 0x31, 0xbc, 0x14, 0x5f, 0x72, 0xbc, 0x94, 0x98, - 0x1d, 0xc4, 0xa0, 0xab, 0x57, 0xf7, 0x82, 0x96, 0xef, 0x8f, 0xb8, 0x12, 0xde, 0x85, 0xd4, 0x78, - 0x3c, 0x7c, 0xf0, 0xea, 0xe8, 0x58, 0xf9, 0xd8, 0xb8, 0xba, 0xdc, 0x85, 0xd4, 0x8c, 0x6b, 0xb4, - 0x63, 0x53, 0xea, 0x6d, 0xca, 0x7b, 0x30, 0xc9, 0x6b, 0x6d, 0x67, 0x12, 0x73, 0x48, 0x32, 0x5d, - 0xfd, 0x7a, 0xea, 0xb4, 0xbf, 0xdf, 0x7a, 0xeb, 0xf1, 0xb3, 0x5a, 0xee, 0xc9, 0xb3, 0x5a, 0xee, - 0xcb, 0x67, 0xb5, 0xdc, 0xa3, 0xe7, 0xb5, 0x63, 0x4f, 0x9e, 0xd7, 0x8e, 0xfd, 0xfd, 0x79, 0xed, - 0xd8, 0x07, 0x4d, 0xdd, 0xf0, 0xee, 0x0f, 0x3a, 0x2b, 0x5d, 0xab, 0xdf, 0xec, 0x98, 0x9d, 0xcb, - 0xb4, 0xcf, 0xd0, 0x94, 0xfe, 0x94, 0xe3, 0xe1, 0xf0, 0x1f, 0x73, 0x74, 0x26, 0x69, 0xb7, 0xf6, - 0x8d, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x08, 0xdf, 0xf6, 0x87, 0x34, 0x33, 0x00, 0x00, + // 2665 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5b, 0x4b, 0x6c, 0x1b, 0xc7, + 0x19, 0x36, 0x1f, 0x92, 0xcc, 0x9f, 0x7a, 0x79, 0xad, 0xc4, 0x0c, 0x55, 0x53, 0x34, 0x9d, 0x3a, + 0xf2, 0x4b, 0x74, 0x18, 0xd7, 0x70, 0x85, 0xa0, 0xa8, 0xa4, 0x34, 0x2e, 0x91, 0x28, 0x56, 0x56, + 0xb6, 0x0a, 0xa4, 0x28, 0x98, 0x25, 0x77, 0xbc, 0xde, 0x86, 0xdc, 0xdd, 0xee, 0x2e, 0x65, 0x2b, + 0x05, 0x0a, 0xb4, 0x97, 0x9c, 0x02, 0x18, 0x70, 0x0f, 0x3d, 0x14, 0x3d, 0x14, 0x28, 0xd0, 0x53, + 0x51, 0x14, 0x39, 0x17, 0xbd, 0x04, 0x30, 0x8a, 0x1e, 0x8c, 0x1c, 0x8a, 0xa2, 0x07, 0x37, 0xb0, + 0x0b, 0x14, 0xbd, 0xf6, 0xd2, 0x6b, 0x31, 0x8f, 0x9d, 0x9d, 0x7d, 0x53, 0xb4, 0x14, 0x0b, 0xe8, + 0xc9, 0xe6, 0xcc, 0x37, 0xff, 0xfc, 0xef, 0xf9, 0xf7, 0x9f, 0x11, 0x2c, 0x6a, 0x36, 0x42, 0xc6, + 0x1d, 0x1d, 0xf5, 0xd5, 0xa6, 0xe3, 0x9a, 0xb6, 0xa2, 0xa1, 0xa6, 0x7b, 0x7f, 0xc5, 0xb2, 0x4d, + 0xd7, 0x94, 0x24, 0x7f, 0x72, 0x85, 0x4d, 0x56, 0x4f, 0xf5, 0x4c, 0x67, 0x60, 0x3a, 0xcd, 0x81, + 0xa3, 0x35, 0x77, 0x5f, 0xc7, 0xff, 0x50, 0x70, 0xf5, 0x15, 0x3a, 0xd1, 0x21, 0xbf, 0x9a, 0xf4, + 0x07, 0x9b, 0x5a, 0xd0, 0x4c, 0xcd, 0xa4, 0xe3, 0xf8, 0x7f, 0x6c, 0x74, 0x49, 0x33, 0x4d, 0xad, + 0x8f, 0x9a, 0xe4, 0x57, 0x77, 0x78, 0xa7, 0xe9, 0xea, 0x03, 0xe4, 0xb8, 0xca, 0xc0, 0x62, 0x80, + 0xba, 0xc0, 0x5b, 0xcf, 0x1c, 0x0c, 0x4c, 0xa3, 0xa9, 0x58, 0x96, 0x6d, 0xee, 0x2a, 0x7d, 0x4e, + 0x22, 0x82, 0xb8, 0x67, 0x2b, 0x96, 0x85, 0x6c, 0x06, 0x68, 0x08, 0x00, 0x0b, 0xd9, 0x03, 0xdd, + 0x71, 0x74, 0xd3, 0x60, 0xd8, 0x18, 0x22, 0x9e, 0x0a, 0x32, 0x01, 0x96, 0x62, 0x2b, 0x03, 0x4f, + 0xbe, 0x5a, 0x9c, 0x12, 0xf7, 0x2c, 0xc4, 0xe6, 0x1b, 0x7f, 0x2c, 0xc0, 0xdc, 0xa6, 0xa3, 0x6d, + 0xd8, 0x48, 0x71, 0xd1, 0xfa, 0xb0, 0xf7, 0x11, 0x72, 0xa5, 0x16, 0x4c, 0xf5, 0xf0, 0x6f, 0xd3, + 0xae, 0xe4, 0xea, 0xb9, 0xe5, 0xd2, 0x7a, 0xe5, 0x8b, 0xcf, 0x2e, 0x2f, 0x30, 0xb5, 0xad, 0xa9, + 0xaa, 0x8d, 0x1c, 0x67, 0xdb, 0xb5, 0x75, 0x43, 0x93, 0x3d, 0xa0, 0xb4, 0x04, 0xe5, 0x2e, 0x59, + 0xdd, 0x31, 0x94, 0x01, 0xaa, 0xe4, 0xf1, 0x3a, 0x19, 0xe8, 0xd0, 0x7b, 0xca, 0x00, 0x49, 0xeb, + 0x00, 0xbb, 0xba, 0xa3, 0x77, 0xf5, 0xbe, 0xee, 0xee, 0x55, 0x0a, 0xf5, 0xdc, 0xf2, 0x6c, 0xab, + 0xb1, 0x12, 0xb5, 0xe2, 0xca, 0x0e, 0x47, 0xdd, 0xda, 0xb3, 0x90, 0x2c, 0xac, 0x92, 0xd6, 0x60, + 0xce, 0x52, 0xf6, 0x06, 0xc8, 0x70, 0x3b, 0x0a, 0x65, 0xa3, 0x52, 0xcc, 0x60, 0x70, 0x96, 0x2d, + 0x60, 0xa3, 0xd2, 0xdb, 0x20, 0x59, 0xb6, 0x3e, 0x50, 0xec, 0xbd, 0x8e, 0x63, 0x71, 0x2a, 0x13, + 0x19, 0x54, 0xe6, 0xd9, 0x9a, 0x6d, 0xcb, 0xa3, 0xf3, 0x0e, 0x9c, 0x14, 0xe9, 0x30, 0xdb, 0x57, + 0x26, 0xeb, 0xb9, 0xe5, 0x72, 0x6b, 0x51, 0x94, 0x8b, 0xd9, 0x6b, 0x8d, 0x41, 0xe4, 0x13, 0x3e, + 0x2d, 0x36, 0x24, 0x5d, 0x02, 0xa9, 0x77, 0x57, 0xb1, 0x35, 0xa4, 0x76, 0x6c, 0xa4, 0xa8, 0x9d, + 0x1f, 0x0d, 0x4d, 0x57, 0xa9, 0x4c, 0xd5, 0x73, 0xcb, 0x45, 0x79, 0x9e, 0xcd, 0xc8, 0x48, 0x51, + 0xdf, 0xc7, 0xe3, 0xab, 0xd3, 0x3f, 0xfb, 0xd7, 0xef, 0x2f, 0x78, 0x8a, 0x6f, 0x6c, 0xc3, 0xa9, + 0x90, 0xfd, 0x64, 0xe4, 0x58, 0xa6, 0xe1, 0x20, 0xe9, 0x3a, 0x94, 0x98, 0x4d, 0x74, 0x95, 0x59, + 0x72, 0xf1, 0xd1, 0x93, 0xa5, 0x63, 0x7f, 0x7f, 0xb2, 0x54, 0xbc, 0xad, 0x1b, 0xee, 0x17, 0x9f, + 0x5d, 0x2e, 0x33, 0x71, 0xf1, 0x4f, 0xf9, 0x38, 0x45, 0xb7, 0xd5, 0xc6, 0x3d, 0xe2, 0x14, 0x6f, + 0xa1, 0x3e, 0xe2, 0x4e, 0x71, 0x15, 0x8e, 0x9b, 0x16, 0xb2, 0x47, 0xf2, 0x0a, 0x8e, 0xcc, 0x74, + 0x8b, 0xd5, 0x19, 0x2c, 0x0c, 0xc7, 0x37, 0x5e, 0x21, 0xd2, 0x88, 0x1b, 0x7b, 0xd2, 0x34, 0x7e, + 0x9e, 0x83, 0x05, 0x3c, 0xa7, 0x3b, 0x3d, 0xd3, 0x70, 0x75, 0x63, 0x78, 0xb8, 0x9c, 0x49, 0x2f, + 0xc3, 0xa4, 0x8d, 0x14, 0xc7, 0x34, 0x88, 0xb3, 0x96, 0x64, 0xf6, 0x2b, 0xcc, 0x71, 0x0d, 0xbe, + 0x16, 0xc7, 0x15, 0x67, 0xfb, 0x9f, 0x62, 0x80, 0xdd, 0xec, 0xfe, 0x10, 0xf5, 0x0e, 0x29, 0xc0, + 0x96, 0xa0, 0x6c, 0x12, 0xf2, 0x14, 0x40, 0x99, 0x06, 0x3a, 0x44, 0x00, 0x67, 0x60, 0xda, 0x52, + 0xf6, 0xfa, 0xa6, 0xa2, 0x76, 0x1c, 0xfd, 0x63, 0x44, 0x42, 0xa7, 0x28, 0x97, 0xd9, 0xd8, 0xb6, + 0xfe, 0x71, 0x38, 0x48, 0x27, 0xc6, 0x0a, 0xd2, 0x33, 0x30, 0x8d, 0x55, 0x81, 0x83, 0x14, 0x27, + 0x1a, 0x12, 0x12, 0x25, 0xb9, 0xcc, 0xc6, 0x30, 0x3c, 0x29, 0x78, 0xa6, 0xc6, 0x0a, 0x9e, 0xf3, + 0x30, 0x8f, 0xee, 0x5b, 0x58, 0xee, 0xde, 0x5d, 0xd4, 0xfb, 0xc8, 0x19, 0x0e, 0x9c, 0xca, 0xf1, + 0x7a, 0x61, 0x79, 0x5a, 0x9e, 0xa3, 0xe3, 0x1b, 0xde, 0xb0, 0xf4, 0x0e, 0xcc, 0xd9, 0x48, 0x1d, + 0x1a, 0xaa, 0x62, 0xf4, 0xf6, 0x28, 0x77, 0xa5, 0x64, 0x19, 0x65, 0x0e, 0x25, 0x32, 0xce, 0xda, + 0x81, 0xdf, 0x29, 0x61, 0x48, 0xad, 0x2c, 0x86, 0x21, 0x33, 0xcc, 0x88, 0x61, 0x48, 0xd1, 0x6d, + 0xb5, 0xf1, 0x30, 0x0f, 0x33, 0x9b, 0x8e, 0xb6, 0x8d, 0x94, 0x3e, 0xf3, 0x9c, 0x43, 0xf2, 0xf5, + 0x4c, 0xdf, 0xf9, 0x06, 0x9c, 0xd2, 0xfa, 0x66, 0x57, 0xe9, 0x77, 0x76, 0x75, 0xdb, 0x1d, 0x2a, + 0xfd, 0x8e, 0x66, 0x9b, 0x43, 0x0b, 0x4b, 0x84, 0xdd, 0x68, 0x46, 0x5e, 0xa0, 0xd3, 0x3b, 0x74, + 0xf6, 0x06, 0x9e, 0x6c, 0xab, 0xd2, 0x5b, 0xb0, 0xe4, 0xa0, 0x9e, 0x69, 0xa8, 0xcc, 0xd4, 0xdd, + 0xbe, 0xd3, 0x51, 0x34, 0xad, 0xe3, 0xe8, 0x9a, 0xa1, 0xb8, 0x43, 0x1b, 0xd1, 0xd4, 0x3b, 0x2d, + 0x2f, 0x72, 0xd8, 0xb6, 0xb5, 0xde, 0x77, 0xd6, 0x34, 0x6d, 0x9b, 0x43, 0xc2, 0x11, 0x77, 0x0a, + 0x5e, 0x0a, 0x28, 0x85, 0x87, 0xda, 0x9f, 0xf2, 0x24, 0xd4, 0xfc, 0x99, 0x9d, 0xd6, 0xff, 0xa5, + 0xc2, 0x62, 0x43, 0x62, 0x32, 0x36, 0x24, 0xe2, 0xf3, 0xaf, 0xa8, 0x41, 0xae, 0xdd, 0x5f, 0xe6, + 0xe0, 0xe4, 0xa6, 0xa3, 0xc9, 0x08, 0x8f, 0xbf, 0x78, 0x97, 0x0c, 0x73, 0x7e, 0x1a, 0x16, 0x63, + 0xb8, 0xe3, 0xdc, 0xff, 0x8e, 0x86, 0xd2, 0x86, 0x69, 0xed, 0x31, 0xbe, 0xab, 0x61, 0xbe, 0x05, + 0xee, 0xce, 0xc1, 0x9c, 0x63, 0xf7, 0x3a, 0x51, 0x0e, 0x67, 0x1c, 0xbb, 0xb7, 0xee, 0x33, 0x79, + 0x0e, 0xe6, 0x54, 0xc7, 0x0d, 0xe0, 0x28, 0xa3, 0x33, 0xaa, 0xe3, 0x06, 0x71, 0x98, 0x9e, 0x28, + 0x50, 0x91, 0xd3, 0xbb, 0xe9, 0x7b, 0x0d, 0xa3, 0x27, 0xe2, 0x26, 0x38, 0x3d, 0x01, 0x27, 0xc3, + 0x29, 0x8c, 0x1b, 0xb3, 0x02, 0x59, 0x50, 0x1d, 0x77, 0x2b, 0x9c, 0x47, 0xc3, 0xfa, 0x7c, 0x9f, + 0x44, 0x99, 0xaf, 0xaf, 0x03, 0x48, 0x67, 0xbf, 0xc8, 0x09, 0x65, 0xc5, 0xd1, 0xf2, 0x1e, 0xb1, + 0xee, 0x08, 0x79, 0xce, 0xe3, 0x48, 0xdd, 0x71, 0xb8, 0xac, 0xaf, 0x02, 0x70, 0xfd, 0x3a, 0x95, + 0x42, 0xbd, 0x90, 0xa5, 0xe0, 0x92, 0xa7, 0x60, 0x47, 0xa8, 0x59, 0x8a, 0xfb, 0xaa, 0x59, 0x42, + 0x22, 0x7f, 0x92, 0x83, 0x59, 0x7e, 0x9a, 0x91, 0xd4, 0x34, 0x56, 0xc9, 0x72, 0x1a, 0x80, 0x26, + 0x3d, 0x41, 0xd2, 0x12, 0x19, 0x21, 0x82, 0x2e, 0xc0, 0x04, 0xba, 0xef, 0xda, 0x0a, 0xb3, 0x0e, + 0xfd, 0x11, 0x3a, 0x56, 0xb7, 0xe0, 0xe5, 0x20, 0x23, 0xdc, 0x0d, 0xaf, 0xc1, 0x71, 0x9e, 0x51, + 0x47, 0xf0, 0xc2, 0x29, 0x8d, 0x66, 0xd8, 0x86, 0x4b, 0x44, 0xa3, 0x96, 0xa6, 0xa2, 0x8d, 0x67, + 0xc7, 0x74, 0xe1, 0xc2, 0x1a, 0xaf, 0x10, 0x39, 0x84, 0x5d, 0xb9, 0xae, 0x3f, 0xcf, 0x13, 0xf7, + 0xba, 0x6d, 0xa9, 0x9e, 0x88, 0x9b, 0x68, 0xd0, 0x45, 0xf6, 0x98, 0x6c, 0x7d, 0x13, 0xca, 0x94, + 0x2d, 0xf3, 0x9e, 0x81, 0x6c, 0xca, 0x57, 0xca, 0x42, 0x2a, 0xc3, 0x4d, 0x8c, 0x0d, 0x49, 0x54, + 0x08, 0x9b, 0xeb, 0xbb, 0x30, 0x3b, 0x20, 0x9c, 0x39, 0x1d, 0xd7, 0xc4, 0x5f, 0x4e, 0x95, 0x62, + 0xbd, 0xb0, 0x5c, 0x8e, 0xaf, 0x9d, 0x36, 0x1d, 0x4d, 0x90, 0x45, 0x9e, 0x66, 0x2b, 0x6f, 0x99, + 0x6b, 0x2a, 0x3e, 0xe4, 0x4e, 0x08, 0x94, 0x54, 0xa2, 0x94, 0xca, 0x04, 0x71, 0xf4, 0x64, 0x4e, + 0xe7, 0x38, 0x09, 0xaa, 0xc5, 0x78, 0x9f, 0x8e, 0xa8, 0x91, 0xeb, 0xf9, 0x3f, 0xde, 0xf1, 0x65, + 0xa0, 0x7b, 0x47, 0x59, 0xcd, 0x6f, 0xc2, 0x14, 0x93, 0x74, 0x1f, 0xfa, 0xf5, 0x96, 0x24, 0x1d, + 0x8a, 0x41, 0x99, 0xb9, 0x4e, 0x3e, 0xa5, 0x71, 0x2e, 0xaa, 0xe3, 0x0a, 0x4c, 0x52, 0x5a, 0x99, + 0xca, 0x60, 0x38, 0xa9, 0x0d, 0xb8, 0xa8, 0xd0, 0x6d, 0xc5, 0xd5, 0x4d, 0xa3, 0xe3, 0xea, 0x2c, + 0x1a, 0xca, 0xad, 0xea, 0x0a, 0xed, 0xa2, 0xac, 0x78, 0x5d, 0x94, 0x95, 0x5b, 0x5e, 0x17, 0x65, + 0xbd, 0xf8, 0xe0, 0x1f, 0x4b, 0x39, 0x79, 0xd6, 0x5f, 0x88, 0xa7, 0x1a, 0x7f, 0xa6, 0x36, 0x12, + 0x8c, 0xf8, 0x1d, 0x9c, 0x13, 0x8e, 0x9c, 0x8d, 0x78, 0xe6, 0x2a, 0x8a, 0x99, 0x2b, 0x56, 0xf7, + 0x61, 0x59, 0xb8, 0xee, 0x7f, 0x9b, 0x23, 0x05, 0xc9, 0xbb, 0x48, 0xd9, 0x65, 0x79, 0x68, 0xff, + 0xaa, 0x3f, 0x34, 0x09, 0x57, 0xcb, 0x58, 0x16, 0xb6, 0x0d, 0x2b, 0xb8, 0x7d, 0x4e, 0xfd, 0xa3, + 0x31, 0x2f, 0xd8, 0x8b, 0x96, 0x3b, 0x6d, 0xe3, 0x8e, 0x79, 0x58, 0x27, 0xe3, 0xbb, 0xb1, 0x6d, + 0x92, 0x02, 0x71, 0xb6, 0x5a, 0x4c, 0xc1, 0x73, 0xbb, 0x6d, 0xb8, 0xd7, 0xae, 0xee, 0x28, 0xfd, + 0x21, 0x8a, 0xb6, 0x51, 0x0e, 0xa2, 0x99, 0x74, 0x00, 0x9f, 0xcb, 0x69, 0x5e, 0xe3, 0x6b, 0x94, + 0x6b, 0xfc, 0x57, 0x39, 0x5a, 0x96, 0x29, 0x46, 0x0f, 0xf5, 0x03, 0x3d, 0x85, 0x23, 0x52, 0x48, + 0x2d, 0xc1, 0xe9, 0x58, 0xfe, 0xc4, 0x8f, 0xb4, 0xe9, 0x4d, 0x47, 0xdb, 0x1a, 0xba, 0x5b, 0x66, + 0x5f, 0xef, 0xed, 0x8d, 0xc9, 0xf8, 0xb7, 0xa0, 0x64, 0xd9, 0xba, 0xd1, 0xd3, 0x2d, 0xa5, 0xcf, + 0xf2, 0x4d, 0x5d, 0xd4, 0xbc, 0xdf, 0x51, 0x5d, 0xd9, 0xf2, 0x70, 0xb2, 0xbf, 0x04, 0x57, 0xff, + 0x36, 0x72, 0xcc, 0xa1, 0xdd, 0xf3, 0x84, 0xe2, 0xbf, 0xa5, 0x6f, 0x03, 0x38, 0xae, 0xe2, 0x22, + 0x6c, 0x6a, 0x2f, 0x0b, 0x27, 0x11, 0xdf, 0xf6, 0x80, 0xb2, 0xb0, 0x46, 0xda, 0x8c, 0xe6, 0xc4, + 0xa9, 0xcc, 0x9c, 0x78, 0xfc, 0xd1, 0x93, 0xa5, 0x5c, 0x5c, 0x5e, 0x0c, 0xeb, 0x78, 0x8b, 0x54, + 0x0c, 0x5c, 0x83, 0x62, 0x65, 0x6e, 0x91, 0x11, 0xef, 0x2b, 0x33, 0xab, 0x32, 0xa7, 0xe8, 0xb6, + 0xda, 0xf8, 0x83, 0x58, 0x99, 0x1f, 0x55, 0xbb, 0x84, 0xd5, 0xb0, 0x2d, 0xd4, 0xec, 0x07, 0xa6, + 0x89, 0x7f, 0x53, 0x4d, 0x6c, 0xea, 0xb6, 0x6d, 0xda, 0xcf, 0x15, 0x5a, 0x17, 0x21, 0xaf, 0xab, + 0x2c, 0x27, 0xa7, 0x6e, 0x9e, 0xd7, 0xd5, 0x70, 0x1c, 0x16, 0xb2, 0xe2, 0xb0, 0x18, 0x69, 0x38, + 0x34, 0x60, 0x46, 0x45, 0x0e, 0xfe, 0xe2, 0x57, 0x74, 0x03, 0x8b, 0x3d, 0x41, 0xda, 0x0c, 0x65, + 0x3c, 0xb8, 0x81, 0xc7, 0xda, 0x6a, 0xfc, 0x47, 0x8f, 0x28, 0x2a, 0x8f, 0xd2, 0x47, 0xa2, 0x1a, + 0x9e, 0xab, 0xcf, 0x7a, 0xb0, 0x6a, 0x88, 0x48, 0x59, 0xcc, 0x94, 0x52, 0xcc, 0xa8, 0x54, 0xca, + 0x40, 0x46, 0xfd, 0x52, 0xac, 0x39, 0xfc, 0xf9, 0x17, 0xd6, 0x38, 0x0a, 0x9e, 0x29, 0xc5, 0x83, + 0x38, 0x53, 0x44, 0x3b, 0x87, 0xba, 0xd3, 0x9f, 0xd3, 0x0a, 0x90, 0xce, 0x3d, 0xcf, 0xe7, 0xd0, + 0xbe, 0xcc, 0x9c, 0x51, 0x5e, 0x8d, 0x61, 0x64, 0xfa, 0x7d, 0x25, 0x88, 0xc1, 0x25, 0x7c, 0x48, + 0x3d, 0x99, 0xda, 0x77, 0x8b, 0x5c, 0x8d, 0x49, 0xd7, 0xa0, 0xa4, 0x0c, 0xdd, 0xbb, 0xa6, 0x8d, + 0x55, 0x9c, 0x25, 0xa3, 0x0f, 0x95, 0xae, 0xc3, 0x24, 0xbd, 0x5c, 0xf3, 0x2b, 0xdc, 0xa8, 0x5d, + 0xe8, 0x1e, 0xeb, 0x45, 0xac, 0x04, 0x99, 0xe1, 0x57, 0x67, 0x31, 0xbb, 0x3e, 0x25, 0x66, 0x12, + 0x91, 0x29, 0xce, 0xf0, 0x7f, 0x73, 0x30, 0x4f, 0x64, 0xd1, 0x6c, 0xe5, 0x90, 0x6f, 0x5f, 0xa4, + 0xf3, 0x70, 0x22, 0xd4, 0x47, 0xd2, 0x55, 0x62, 0x8f, 0x19, 0x79, 0x56, 0x6c, 0x12, 0xb5, 0xd5, + 0xb4, 0x96, 0x53, 0xf1, 0x80, 0x5a, 0x4e, 0x55, 0xa8, 0x84, 0x05, 0xf7, 0x5b, 0x12, 0x79, 0x32, + 0xb9, 0x61, 0x0e, 0x2c, 0x9c, 0xef, 0xbf, 0x12, 0xed, 0xac, 0x43, 0x2d, 0xb6, 0x87, 0x7b, 0x47, + 0x19, 0xe8, 0xfd, 0x3d, 0x5f, 0x55, 0xd5, 0x68, 0x2b, 0xf7, 0x6d, 0x02, 0x69, 0xab, 0xd2, 0x1a, + 0x4c, 0x6b, 0xbb, 0x5a, 0x67, 0xa0, 0x58, 0x96, 0x6e, 0x68, 0x5e, 0x35, 0x51, 0x8b, 0x73, 0x9c, + 0x1b, 0x3b, 0x37, 0x36, 0x29, 0x4c, 0x2e, 0x6b, 0xbb, 0x1a, 0xfb, 0x7f, 0xe4, 0x9b, 0xae, 0x01, + 0xf5, 0x24, 0x45, 0x70, 0x6d, 0xfd, 0x84, 0xb6, 0x4d, 0x48, 0x15, 0xf6, 0x55, 0xa8, 0x2a, 0xcc, + 0x63, 0x1d, 0x6a, 0xf1, 0xfb, 0x87, 0x38, 0xa4, 0xed, 0xda, 0x17, 0xc7, 0x61, 0xcc, 0xfe, 0x9c, + 0xc3, 0x5f, 0xe7, 0xa0, 0x44, 0x7a, 0xe1, 0xee, 0x2d, 0x45, 0x1b, 0x93, 0x2b, 0xb1, 0x9a, 0xc9, + 0x87, 0xaa, 0xcc, 0xab, 0x50, 0x74, 0x15, 0xcd, 0x61, 0xdf, 0x2f, 0xf5, 0xf8, 0x1b, 0x28, 0x8a, + 0xbd, 0xa5, 0x68, 0x8e, 0x4c, 0xd0, 0x61, 0x31, 0x4e, 0xc2, 0x09, 0xce, 0x23, 0xe7, 0xfc, 0x41, + 0x9e, 0x28, 0x57, 0x3c, 0xd2, 0x36, 0xe8, 0xed, 0xdb, 0x0b, 0x3b, 0xd5, 0x46, 0xb8, 0x7b, 0x0c, + 0xdf, 0x1b, 0x4e, 0x44, 0xef, 0x0d, 0xc7, 0xbf, 0xd7, 0xa0, 0xe6, 0x8e, 0xd1, 0x08, 0x57, 0xda, + 0x6f, 0x72, 0xa4, 0x81, 0x44, 0x7d, 0xf6, 0x08, 0xa9, 0x2e, 0x2c, 0xc9, 0x39, 0x78, 0x35, 0x8d, + 0x4d, 0x2e, 0xcf, 0x5f, 0x0b, 0xbc, 0x3c, 0xd6, 0x14, 0x17, 0x1d, 0xc0, 0xb7, 0xa2, 0xd0, 0x02, + 0xce, 0x8f, 0x79, 0x6b, 0x3d, 0x46, 0x5d, 0x1b, 0xf6, 0x9c, 0x89, 0x6c, 0xcf, 0x89, 0xb9, 0x71, + 0x0e, 0x56, 0x55, 0x53, 0x63, 0x5d, 0x6c, 0xbf, 0xa8, 0x8b, 0xe6, 0x90, 0x03, 0x7c, 0x1f, 0x96, + 0x12, 0xec, 0x7a, 0x00, 0x57, 0x34, 0x7f, 0xc9, 0x93, 0x40, 0xf1, 0xa8, 0x1f, 0x5c, 0x1c, 0xb4, + 0x60, 0x6a, 0x48, 0x88, 0x8d, 0xe0, 0x3c, 0x0c, 0x78, 0x64, 0x9c, 0x27, 0xce, 0xf0, 0x53, 0x23, + 0xa5, 0x9d, 0x65, 0x38, 0x97, 0xae, 0x4d, 0x1e, 0xae, 0x3f, 0xcd, 0x0b, 0x15, 0xa1, 0xb7, 0x40, + 0x5d, 0xd3, 0x0e, 0x31, 0xf3, 0xbc, 0x09, 0x33, 0x0a, 0xa6, 0xcf, 0xfb, 0xf9, 0x85, 0x8c, 0x16, + 0x7c, 0x99, 0xc2, 0x69, 0x13, 0x7f, 0x1d, 0xe6, 0xfd, 0xd5, 0x36, 0x1a, 0x98, 0xbb, 0x88, 0x14, + 0x37, 0xa9, 0xfd, 0x33, 0x8f, 0x80, 0x4c, 0xf0, 0x61, 0x6d, 0x9d, 0x21, 0x9e, 0x1d, 0xa7, 0x02, + 0x4f, 0x4d, 0xad, 0x87, 0xa7, 0xa1, 0xb0, 0xe9, 0x68, 0xd2, 0x87, 0x30, 0x1d, 0x78, 0xb2, 0x76, + 0x36, 0xa1, 0x49, 0x2e, 0x82, 0xaa, 0x17, 0x47, 0x00, 0xf1, 0x18, 0xfa, 0x10, 0xa6, 0x03, 0xef, + 0x9f, 0x92, 0x76, 0x10, 0x41, 0x89, 0x3b, 0xc4, 0x3d, 0x68, 0x92, 0xfa, 0x30, 0x1f, 0xe9, 0x9c, + 0xbe, 0x96, 0x40, 0x20, 0x0c, 0xac, 0x36, 0x47, 0x04, 0x8a, 0xf2, 0x04, 0xbe, 0xe6, 0x93, 0xe4, + 0x11, 0x41, 0x89, 0xf2, 0xc4, 0x7d, 0x4b, 0x4a, 0x26, 0x9c, 0x88, 0x3e, 0xce, 0x5a, 0x4e, 0xd2, + 0x48, 0x18, 0x59, 0xbd, 0x32, 0x2a, 0x92, 0x6f, 0x78, 0x1f, 0x16, 0x62, 0xe3, 0xe5, 0x62, 0xaa, + 0x6e, 0x82, 0xe0, 0xea, 0x1b, 0xfb, 0x00, 0x8b, 0xca, 0x0c, 0x1c, 0xa8, 0xe9, 0xee, 0x47, 0x41, + 0x19, 0xee, 0x17, 0x4a, 0xe1, 0x1f, 0x00, 0x08, 0x6f, 0x2c, 0xce, 0x24, 0x2c, 0xf5, 0x21, 0xd5, + 0xf3, 0x99, 0x10, 0x91, 0xfb, 0xc0, 0x1b, 0x99, 0xb3, 0x99, 0x4b, 0x77, 0x5a, 0x89, 0xdc, 0xc7, + 0xbd, 0x15, 0xc1, 0xae, 0x1d, 0x79, 0x27, 0x92, 0xe4, 0xda, 0x61, 0x60, 0xa2, 0x6b, 0x27, 0xbd, + 0xed, 0xc0, 0xba, 0x12, 0xde, 0x75, 0x24, 0xe9, 0xca, 0x87, 0x24, 0xea, 0x2a, 0xe6, 0xb5, 0x03, + 0x4f, 0x03, 0x19, 0x96, 0x16, 0x41, 0x19, 0x69, 0x20, 0xb4, 0x83, 0x0d, 0x52, 0x4c, 0x3b, 0x3f, + 0x91, 0xc5, 0x08, 0xb4, 0xfa, 0xfa, 0xc8, 0xd0, 0x68, 0x32, 0xc8, 0x90, 0x4a, 0x04, 0x65, 0x24, + 0x83, 0xd0, 0x0e, 0xc1, 0x64, 0xc0, 0xb6, 0x19, 0x21, 0x19, 0xb0, 0xbd, 0xae, 0x8c, 0x8a, 0x8c, + 0x66, 0x53, 0xa1, 0x87, 0x97, 0x9e, 0x4d, 0x7d, 0x60, 0x46, 0x36, 0x8d, 0x76, 0x0d, 0xa5, 0x21, + 0x9c, 0x8c, 0xab, 0x8d, 0x2e, 0x8c, 0x40, 0x87, 0x61, 0xab, 0xad, 0xd1, 0xb1, 0x7c, 0xdb, 0x4f, + 0x72, 0xf0, 0x4a, 0xf2, 0x17, 0xca, 0x95, 0x54, 0x47, 0x88, 0xe3, 0xe1, 0xfa, 0x7e, 0x57, 0x88, + 0xb9, 0x37, 0xf6, 0xd3, 0x22, 0xcd, 0xf5, 0xc3, 0xe0, 0xc4, 0xdc, 0x9b, 0x5a, 0xdc, 0x7e, 0x9a, + 0x83, 0xc5, 0xb4, 0xfa, 0xb4, 0x95, 0x41, 0x34, 0x4e, 0x0f, 0xab, 0xfb, 0x5f, 0xc3, 0xf9, 0xf9, + 0x01, 0x94, 0xc5, 0x87, 0x32, 0x8d, 0xd4, 0x2c, 0x4f, 0x30, 0xd5, 0x0b, 0xd9, 0x18, 0x91, 0xbc, + 0xf8, 0x58, 0xa5, 0x91, 0x9a, 0x5a, 0xd2, 0xc9, 0xc7, 0x3c, 0x3f, 0xc1, 0x71, 0x1a, 0x7d, 0x7a, + 0xb2, 0x9c, 0xea, 0x9a, 0x02, 0x32, 0x31, 0x4e, 0x13, 0xdf, 0x61, 0xf8, 0x71, 0x2a, 0xdc, 0xef, + 0xbf, 0x96, 0x4d, 0x85, 0x00, 0x33, 0xe2, 0x34, 0x7a, 0xcb, 0x8e, 0x8f, 0x06, 0xe1, 0x86, 0x3d, + 0xe9, 0x68, 0xf0, 0x21, 0x89, 0x47, 0x43, 0xf4, 0xf6, 0x1b, 0x5b, 0x46, 0xec, 0x9b, 0x37, 0x52, + 0xd3, 0x63, 0xba, 0x65, 0x62, 0x1a, 0xd7, 0xf4, 0x0c, 0x0d, 0x3d, 0x56, 0x49, 0x3e, 0x43, 0x83, + 0xc0, 0x94, 0x33, 0x34, 0xfe, 0x29, 0x88, 0xf4, 0x3d, 0x28, 0xf9, 0x57, 0xb2, 0xf5, 0x84, 0xd5, + 0x1c, 0x51, 0x5d, 0xce, 0x42, 0x44, 0x0f, 0x50, 0x46, 0x3b, 0xfd, 0x00, 0x65, 0xe4, 0x2f, 0x8e, + 0x00, 0x12, 0x77, 0x08, 0x74, 0xf7, 0xcf, 0xa6, 0x3a, 0x09, 0x05, 0x55, 0x2f, 0x8e, 0x00, 0xe2, + 0x3b, 0xf4, 0x60, 0x26, 0xd8, 0xa3, 0x7c, 0x35, 0xd1, 0x8e, 0x02, 0xaa, 0x7a, 0x69, 0x14, 0x14, + 0xdf, 0xe4, 0xc7, 0xf0, 0x52, 0x7c, 0x77, 0xfb, 0x52, 0x62, 0xb5, 0x12, 0x83, 0xae, 0x5e, 0xdd, + 0x0f, 0x5a, 0x3c, 0xcf, 0xe2, 0xba, 0xc5, 0x17, 0x52, 0xcf, 0x87, 0xe0, 0xc6, 0xad, 0xd1, 0xb1, + 0xe2, 0xb6, 0x71, 0x2d, 0xe0, 0x0b, 0xa9, 0x15, 0xe0, 0x68, 0xdb, 0xa6, 0xb4, 0x76, 0xa5, 0xf7, + 0x60, 0x92, 0xb5, 0x75, 0x4f, 0x27, 0x56, 0xb5, 0x78, 0xba, 0xfa, 0xf5, 0xd4, 0x69, 0x8f, 0xde, + 0x7a, 0xfb, 0xd1, 0xd3, 0x5a, 0xee, 0xf1, 0xd3, 0x5a, 0xee, 0xcb, 0xa7, 0xb5, 0xdc, 0x83, 0x67, + 0xb5, 0x63, 0x8f, 0x9f, 0xd5, 0x8e, 0xfd, 0xed, 0x59, 0xed, 0xd8, 0x07, 0x4d, 0x4d, 0x77, 0xef, + 0x0e, 0xbb, 0x2b, 0x3d, 0x73, 0xd0, 0xec, 0x1a, 0xdd, 0xcb, 0xe4, 0x4a, 0xab, 0x29, 0xfc, 0x4d, + 0xd6, 0xfd, 0xe0, 0x5f, 0x65, 0x75, 0x27, 0xc9, 0xc3, 0x80, 0x37, 0xfe, 0x17, 0x00, 0x00, 0xff, + 0xff, 0x54, 0x25, 0x5a, 0xa8, 0xfd, 0x36, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3936,6 +4212,7 @@ type MsgClient interface { // basic operation of object CreateObject(ctx context.Context, in *MsgCreateObject, opts ...grpc.CallOption) (*MsgCreateObjectResponse, error) SealObject(ctx context.Context, in *MsgSealObject, opts ...grpc.CallOption) (*MsgSealObjectResponse, error) + SealObjectV2(ctx context.Context, in *MsgSealObjectV2, opts ...grpc.CallOption) (*MsgSealObjectV2Response, error) RejectSealObject(ctx context.Context, in *MsgRejectSealObject, opts ...grpc.CallOption) (*MsgRejectSealObjectResponse, error) CopyObject(ctx context.Context, in *MsgCopyObject, opts ...grpc.CallOption) (*MsgCopyObjectResponse, error) DeleteObject(ctx context.Context, in *MsgDeleteObject, opts ...grpc.CallOption) (*MsgDeleteObjectResponse, error) @@ -3946,6 +4223,7 @@ type MsgClient interface { UpdateObjectContent(ctx context.Context, in *MsgUpdateObjectContent, opts ...grpc.CallOption) (*MsgUpdateObjectContentResponse, error) CancelUpdateObjectContent(ctx context.Context, in *MsgCancelUpdateObjectContent, opts ...grpc.CallOption) (*MsgCancelUpdateObjectContentResponse, error) DelegateCreateObject(ctx context.Context, in *MsgDelegateCreateObject, opts ...grpc.CallOption) (*MsgDelegateCreateObjectResponse, error) + DelegateUpdateObjectContent(ctx context.Context, in *MsgDelegateUpdateObjectContent, opts ...grpc.CallOption) (*MsgDelegateUpdateObjectContentResponse, error) // basic operation of group CreateGroup(ctx context.Context, in *MsgCreateGroup, opts ...grpc.CallOption) (*MsgCreateGroupResponse, error) DeleteGroup(ctx context.Context, in *MsgDeleteGroup, opts ...grpc.CallOption) (*MsgDeleteGroupResponse, error) @@ -4047,6 +4325,15 @@ func (c *msgClient) SealObject(ctx context.Context, in *MsgSealObject, opts ...g return out, nil } +func (c *msgClient) SealObjectV2(ctx context.Context, in *MsgSealObjectV2, opts ...grpc.CallOption) (*MsgSealObjectV2Response, error) { + out := new(MsgSealObjectV2Response) + err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/SealObjectV2", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) RejectSealObject(ctx context.Context, in *MsgRejectSealObject, opts ...grpc.CallOption) (*MsgRejectSealObjectResponse, error) { out := new(MsgRejectSealObjectResponse) err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/RejectSealObject", in, out, opts...) @@ -4137,6 +4424,15 @@ func (c *msgClient) DelegateCreateObject(ctx context.Context, in *MsgDelegateCre return out, nil } +func (c *msgClient) DelegateUpdateObjectContent(ctx context.Context, in *MsgDelegateUpdateObjectContent, opts ...grpc.CallOption) (*MsgDelegateUpdateObjectContentResponse, error) { + out := new(MsgDelegateUpdateObjectContentResponse) + err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/DelegateUpdateObjectContent", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) CreateGroup(ctx context.Context, in *MsgCreateGroup, opts ...grpc.CallOption) (*MsgCreateGroupResponse, error) { out := new(MsgCreateGroupResponse) err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/CreateGroup", in, out, opts...) @@ -4284,6 +4580,7 @@ type MsgServer interface { // basic operation of object CreateObject(context.Context, *MsgCreateObject) (*MsgCreateObjectResponse, error) SealObject(context.Context, *MsgSealObject) (*MsgSealObjectResponse, error) + SealObjectV2(context.Context, *MsgSealObjectV2) (*MsgSealObjectV2Response, error) RejectSealObject(context.Context, *MsgRejectSealObject) (*MsgRejectSealObjectResponse, error) CopyObject(context.Context, *MsgCopyObject) (*MsgCopyObjectResponse, error) DeleteObject(context.Context, *MsgDeleteObject) (*MsgDeleteObjectResponse, error) @@ -4294,6 +4591,7 @@ type MsgServer interface { UpdateObjectContent(context.Context, *MsgUpdateObjectContent) (*MsgUpdateObjectContentResponse, error) CancelUpdateObjectContent(context.Context, *MsgCancelUpdateObjectContent) (*MsgCancelUpdateObjectContentResponse, error) DelegateCreateObject(context.Context, *MsgDelegateCreateObject) (*MsgDelegateCreateObjectResponse, error) + DelegateUpdateObjectContent(context.Context, *MsgDelegateUpdateObjectContent) (*MsgDelegateUpdateObjectContentResponse, error) // basic operation of group CreateGroup(context.Context, *MsgCreateGroup) (*MsgCreateGroupResponse, error) DeleteGroup(context.Context, *MsgDeleteGroup) (*MsgDeleteGroupResponse, error) @@ -4343,6 +4641,9 @@ func (*UnimplementedMsgServer) CreateObject(ctx context.Context, req *MsgCreateO func (*UnimplementedMsgServer) SealObject(ctx context.Context, req *MsgSealObject) (*MsgSealObjectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SealObject not implemented") } +func (*UnimplementedMsgServer) SealObjectV2(ctx context.Context, req *MsgSealObjectV2) (*MsgSealObjectV2Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method SealObjectV2 not implemented") +} func (*UnimplementedMsgServer) RejectSealObject(ctx context.Context, req *MsgRejectSealObject) (*MsgRejectSealObjectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RejectSealObject not implemented") } @@ -4373,6 +4674,9 @@ func (*UnimplementedMsgServer) CancelUpdateObjectContent(ctx context.Context, re func (*UnimplementedMsgServer) DelegateCreateObject(ctx context.Context, req *MsgDelegateCreateObject) (*MsgDelegateCreateObjectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DelegateCreateObject not implemented") } +func (*UnimplementedMsgServer) DelegateUpdateObjectContent(ctx context.Context, req *MsgDelegateUpdateObjectContent) (*MsgDelegateUpdateObjectContentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DelegateUpdateObjectContent not implemented") +} func (*UnimplementedMsgServer) CreateGroup(ctx context.Context, req *MsgCreateGroup) (*MsgCreateGroupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateGroup not implemented") } @@ -4567,6 +4871,24 @@ func _Msg_SealObject_Handler(srv interface{}, ctx context.Context, dec func(inte return interceptor(ctx, in, info, handler) } +func _Msg_SealObjectV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSealObjectV2) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SealObjectV2(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/greenfield.storage.Msg/SealObjectV2", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SealObjectV2(ctx, req.(*MsgSealObjectV2)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_RejectSealObject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgRejectSealObject) if err := dec(in); err != nil { @@ -4747,6 +5069,24 @@ func _Msg_DelegateCreateObject_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Msg_DelegateUpdateObjectContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDelegateUpdateObjectContent) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DelegateUpdateObjectContent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/greenfield.storage.Msg/DelegateUpdateObjectContent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DelegateUpdateObjectContent(ctx, req.(*MsgDelegateUpdateObjectContent)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_CreateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgCreateGroup) if err := dec(in); err != nil { @@ -5053,6 +5393,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "SealObject", Handler: _Msg_SealObject_Handler, }, + { + MethodName: "SealObjectV2", + Handler: _Msg_SealObjectV2_Handler, + }, { MethodName: "RejectSealObject", Handler: _Msg_RejectSealObject_Handler, @@ -5093,6 +5437,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "DelegateCreateObject", Handler: _Msg_DelegateCreateObject_Handler, }, + { + MethodName: "DelegateUpdateObjectContent", + Handler: _Msg_DelegateUpdateObjectContent_Handler, + }, { MethodName: "CreateGroup", Handler: _Msg_CreateGroup_Handler, @@ -5590,6 +5938,94 @@ func (m *MsgSealObjectResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgSealObjectV2) 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 *MsgSealObjectV2) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSealObjectV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ExpectChecksums) > 0 { + for iNdEx := len(m.ExpectChecksums) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ExpectChecksums[iNdEx]) + copy(dAtA[i:], m.ExpectChecksums[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ExpectChecksums[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } + if len(m.SecondarySpBlsAggSignatures) > 0 { + i -= len(m.SecondarySpBlsAggSignatures) + copy(dAtA[i:], m.SecondarySpBlsAggSignatures) + i = encodeVarintTx(dAtA, i, uint64(len(m.SecondarySpBlsAggSignatures))) + i-- + dAtA[i] = 0x2a + } + if m.GlobalVirtualGroupId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.GlobalVirtualGroupId)) + i-- + dAtA[i] = 0x20 + } + if len(m.ObjectName) > 0 { + i -= len(m.ObjectName) + copy(dAtA[i:], m.ObjectName) + i = encodeVarintTx(dAtA, i, uint64(len(m.ObjectName))) + i-- + dAtA[i] = 0x1a + } + if len(m.BucketName) > 0 { + i -= len(m.BucketName) + copy(dAtA[i:], m.BucketName) + i = encodeVarintTx(dAtA, i, uint64(len(m.BucketName))) + i-- + dAtA[i] = 0x12 + } + if len(m.Operator) > 0 { + i -= len(m.Operator) + copy(dAtA[i:], m.Operator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Operator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSealObjectV2Response) 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 *MsgSealObjectV2Response) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSealObjectV2Response) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *MsgRejectSealObject) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -7721,7 +8157,7 @@ func (m *MsgDelegateCreateObjectResponse) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } -func (m *MsgUpdateDelegatedAgent) Marshal() (dAtA []byte, err error) { +func (m *MsgDelegateUpdateObjectContent) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -7731,38 +8167,133 @@ func (m *MsgUpdateDelegatedAgent) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateDelegatedAgent) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgDelegateUpdateObjectContent) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateDelegatedAgent) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgDelegateUpdateObjectContent) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.AgentsToRemove) > 0 { - for iNdEx := len(m.AgentsToRemove) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AgentsToRemove[iNdEx]) - copy(dAtA[i:], m.AgentsToRemove[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToRemove[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } - if len(m.AgentsToAdd) > 0 { - for iNdEx := len(m.AgentsToAdd) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AgentsToAdd[iNdEx]) - copy(dAtA[i:], m.AgentsToAdd[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToAdd[iNdEx]))) + if len(m.ExpectChecksums) > 0 { + for iNdEx := len(m.ExpectChecksums) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ExpectChecksums[iNdEx]) + copy(dAtA[i:], m.ExpectChecksums[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ExpectChecksums[iNdEx]))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x3a } } - if len(m.BucketName) > 0 { - i -= len(m.BucketName) - copy(dAtA[i:], m.BucketName) - i = encodeVarintTx(dAtA, i, uint64(len(m.BucketName))) + if len(m.ContentType) > 0 { + i -= len(m.ContentType) + copy(dAtA[i:], m.ContentType) + i = encodeVarintTx(dAtA, i, uint64(len(m.ContentType))) + i-- + dAtA[i] = 0x32 + } + if m.PayloadSize != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.PayloadSize)) + i-- + dAtA[i] = 0x28 + } + if len(m.ObjectName) > 0 { + i -= len(m.ObjectName) + copy(dAtA[i:], m.ObjectName) + i = encodeVarintTx(dAtA, i, uint64(len(m.ObjectName))) + i-- + dAtA[i] = 0x22 + } + if len(m.BucketName) > 0 { + i -= len(m.BucketName) + copy(dAtA[i:], m.BucketName) + i = encodeVarintTx(dAtA, i, uint64(len(m.BucketName))) + i-- + dAtA[i] = 0x1a + } + if len(m.Updater) > 0 { + i -= len(m.Updater) + copy(dAtA[i:], m.Updater) + i = encodeVarintTx(dAtA, i, uint64(len(m.Updater))) + i-- + dAtA[i] = 0x12 + } + if len(m.Operator) > 0 { + i -= len(m.Operator) + copy(dAtA[i:], m.Operator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Operator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDelegateUpdateObjectContentResponse) 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 *MsgDelegateUpdateObjectContentResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDelegateUpdateObjectContentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgUpdateDelegatedAgent) 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 *MsgUpdateDelegatedAgent) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateDelegatedAgent) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AgentsToRemove) > 0 { + for iNdEx := len(m.AgentsToRemove) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AgentsToRemove[iNdEx]) + copy(dAtA[i:], m.AgentsToRemove[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToRemove[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if len(m.AgentsToAdd) > 0 { + for iNdEx := len(m.AgentsToAdd) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AgentsToAdd[iNdEx]) + copy(dAtA[i:], m.AgentsToAdd[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToAdd[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.BucketName) > 0 { + i -= len(m.BucketName) + copy(dAtA[i:], m.BucketName) + i = encodeVarintTx(dAtA, i, uint64(len(m.BucketName))) i-- dAtA[i] = 0x12 } @@ -8004,6 +8535,49 @@ func (m *MsgSealObjectResponse) Size() (n int) { return n } +func (m *MsgSealObjectV2) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Operator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.BucketName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ObjectName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.GlobalVirtualGroupId != 0 { + n += 1 + sovTx(uint64(m.GlobalVirtualGroupId)) + } + l = len(m.SecondarySpBlsAggSignatures) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ExpectChecksums) > 0 { + for _, b := range m.ExpectChecksums { + l = len(b) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSealObjectV2Response) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *MsgRejectSealObject) Size() (n int) { if m == nil { return 0 @@ -8934,6 +9508,53 @@ func (m *MsgDelegateCreateObjectResponse) Size() (n int) { return n } +func (m *MsgDelegateUpdateObjectContent) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Operator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Updater) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.BucketName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ObjectName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.PayloadSize != 0 { + n += 1 + sovTx(uint64(m.PayloadSize)) + } + l = len(m.ContentType) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ExpectChecksums) > 0 { + for _, b := range m.ExpectChecksums { + l = len(b) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgDelegateUpdateObjectContentResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *MsgUpdateDelegatedAgent) Size() (n int) { if m == nil { return 0 @@ -10310,7 +10931,7 @@ func (m *MsgSealObjectResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRejectSealObject) Unmarshal(dAtA []byte) error { +func (m *MsgSealObjectV2) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -10333,10 +10954,10 @@ func (m *MsgRejectSealObject) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRejectSealObject: wiretype end group for non-group") + return fmt.Errorf("proto: MsgSealObjectV2: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRejectSealObject: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgSealObjectV2: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -10435,42 +11056,323 @@ func (m *MsgRejectSealObject) Unmarshal(dAtA []byte) error { } m.ObjectName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GlobalVirtualGroupId", wireType) } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx + m.GlobalVirtualGroupId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GlobalVirtualGroupId |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecondarySpBlsAggSignatures", wireType) } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgRejectSealObjectResponse) 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 ErrIntOverflowTx + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if byteLen < 0 { + return ErrInvalidLengthTx } - b := dAtA[iNdEx] - iNdEx++ + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecondarySpBlsAggSignatures = append(m.SecondarySpBlsAggSignatures[:0], dAtA[iNdEx:postIndex]...) + if m.SecondarySpBlsAggSignatures == nil { + m.SecondarySpBlsAggSignatures = []byte{} + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpectChecksums", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpectChecksums = append(m.ExpectChecksums, make([]byte, postIndex-iNdEx)) + copy(m.ExpectChecksums[len(m.ExpectChecksums)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgSealObjectV2Response) 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 ErrIntOverflowTx + } + 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: MsgSealObjectV2Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSealObjectV2Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRejectSealObject) 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 ErrIntOverflowTx + } + 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: MsgRejectSealObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRejectSealObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BucketName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BucketName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ObjectName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRejectSealObjectResponse) 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 ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ wire |= uint64(b&0x7F) << shift if b < 0x80 { break @@ -16014,7 +16916,235 @@ func (m *MsgCancelUpdateObjectContent) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BucketName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BucketName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ObjectName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCancelUpdateObjectContentResponse) 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 ErrIntOverflowTx + } + 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: MsgCancelUpdateObjectContentResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCancelUpdateObjectContentResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDelegateCreateObject) 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 ErrIntOverflowTx + } + 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: MsgDelegateCreateObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDelegateCreateObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -16042,9 +17172,9 @@ func (m *MsgCancelUpdateObjectContent) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Operator = string(dAtA[iNdEx:postIndex]) + m.Creator = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field BucketName", wireType) } @@ -16076,7 +17206,7 @@ func (m *MsgCancelUpdateObjectContent) Unmarshal(dAtA []byte) error { } m.BucketName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ObjectName", wireType) } @@ -16108,6 +17238,127 @@ func (m *MsgCancelUpdateObjectContent) Unmarshal(dAtA []byte) error { } m.ObjectName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PayloadSize", wireType) + } + m.PayloadSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PayloadSize |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContentType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContentType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Visibility", wireType) + } + m.Visibility = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Visibility |= VisibilityType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpectChecksums", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpectChecksums = append(m.ExpectChecksums, make([]byte, postIndex-iNdEx)) + copy(m.ExpectChecksums[len(m.ExpectChecksums)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RedundancyType", wireType) + } + m.RedundancyType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RedundancyType |= RedundancyType(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -16129,7 +17380,7 @@ func (m *MsgCancelUpdateObjectContent) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgCancelUpdateObjectContentResponse) Unmarshal(dAtA []byte) error { +func (m *MsgDelegateCreateObjectResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16152,12 +17403,46 @@ func (m *MsgCancelUpdateObjectContentResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgCancelUpdateObjectContentResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDelegateCreateObjectResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgCancelUpdateObjectContentResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDelegateCreateObjectResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + 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 ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -16179,7 +17464,7 @@ func (m *MsgCancelUpdateObjectContentResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgDelegateCreateObject) Unmarshal(dAtA []byte) error { +func (m *MsgDelegateUpdateObjectContent) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16202,10 +17487,10 @@ func (m *MsgDelegateCreateObject) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgDelegateCreateObject: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDelegateUpdateObjectContent: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDelegateCreateObject: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDelegateUpdateObjectContent: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -16242,7 +17527,7 @@ func (m *MsgDelegateCreateObject) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Updater", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -16270,7 +17555,7 @@ func (m *MsgDelegateCreateObject) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Creator = string(dAtA[iNdEx:postIndex]) + m.Updater = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -16388,25 +17673,6 @@ func (m *MsgDelegateCreateObject) Unmarshal(dAtA []byte) error { m.ContentType = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Visibility", wireType) - } - m.Visibility = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Visibility |= VisibilityType(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ExpectChecksums", wireType) } @@ -16438,25 +17704,6 @@ func (m *MsgDelegateCreateObject) Unmarshal(dAtA []byte) error { m.ExpectChecksums = append(m.ExpectChecksums, make([]byte, postIndex-iNdEx)) copy(m.ExpectChecksums[len(m.ExpectChecksums)-1], dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 9: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RedundancyType", wireType) - } - m.RedundancyType = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RedundancyType |= RedundancyType(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -16478,7 +17725,7 @@ func (m *MsgDelegateCreateObject) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgDelegateCreateObjectResponse) Unmarshal(dAtA []byte) error { +func (m *MsgDelegateUpdateObjectContentResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16501,46 +17748,12 @@ func (m *MsgDelegateCreateObjectResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgDelegateCreateObjectResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDelegateUpdateObjectContentResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDelegateCreateObjectResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDelegateUpdateObjectContentResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - 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 ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From 796774c571fa603807d2d860d5f67fa54668a089 Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Mon, 4 Mar 2024 17:54:11 +0800 Subject: [PATCH 03/10] use flag to toggle SP as upload agent for bucket --- app/upgrade.go | 2 +- e2e/tests/storage_test.go | 56 +-- proto/greenfield/storage/tx.proto | 15 +- proto/greenfield/storage/types.proto | 5 +- x/storage/keeper/keeper.go | 46 +-- x/storage/keeper/msg_server.go | 24 +- x/storage/types/codec.go | 2 +- x/storage/types/message.go | 63 +-- x/storage/types/tx.pb.go | 567 +++++++++++---------------- x/storage/types/types.pb.go | 234 ++++++----- 10 files changed, 389 insertions(+), 625 deletions(-) diff --git a/app/upgrade.go b/app/upgrade.go index 3d9b296d9..39e4a48d7 100644 --- a/app/upgrade.go +++ b/app/upgrade.go @@ -207,7 +207,7 @@ func (app *App) registerPawneeUpgradeHandler() { app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgCancelUpdateObjectContent{}), 1.2e3)) // todo - app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgUpdateDelegatedAgent{}), 1.2e3)) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgToggleSPAsDelegatedAgent{}), 1.2e3)) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateCreateObject{}), 1.2e3)) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateUpdateObjectContent{}), 1.2e3)) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgSealObjectV2{}), 1.2e3)) diff --git a/e2e/tests/storage_test.go b/e2e/tests/storage_test.go index aaeddef62..52cdb5a60 100644 --- a/e2e/tests/storage_test.go +++ b/e2e/tests/storage_test.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "fmt" - "github.com/bnb-chain/greenfield/testutil/sample" permissiontypes "github.com/bnb-chain/greenfield/x/permission/types" "math" "reflect" @@ -2410,7 +2409,7 @@ func (s *StorageTestSuite) TestDeleteCreateObject_InCreatedStatus() { s.Require().EqualError(err, "rpc error: code = Unknown desc = No such object: unknown request") } -func (s *StorageTestSuite) TestUpdateBucketDelegatedAgents() { +func (s *StorageTestSuite) TestToggleBucketSpAsDelegatedAgents() { var err error // CreateBucket sp := s.BaseSuite.PickStorageProvider() @@ -2432,49 +2431,17 @@ func (s *StorageTestSuite) TestUpdateBucketDelegatedAgents() { ctx := context.Background() queryHeadBucketResponse, err := s.Client.HeadBucket(ctx, &queryHeadBucketRequest) s.Require().NoError(err) - s.Require().Equal(0, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) + s.Require().Equal(false, queryHeadBucketResponse.BucketInfo.SpAsDelegatedAgentDisabled) - var agentToAdd []sdk.AccAddress - agentToAdd = append(agentToAdd, sp.OperatorKey.GetAddr()) - agentAccount := sample.RandAccAddress() - agentToAdd = append(agentToAdd, agentAccount) - - msgUpdateDelegatedAgent := storagetypes.NewMsgUpdateDelegatedAgent( + MsgToggleSPAsDelegatedAgent := storagetypes.NewMsgToggleSPAsDelegatedAgent( user.GetAddr(), - bucketName, - agentToAdd, - nil) - s.SendTxBlock(user, msgUpdateDelegatedAgent) + bucketName) + s.SendTxBlock(user, MsgToggleSPAsDelegatedAgent) // HeadBucket queryHeadBucketResponse, err = s.Client.HeadBucket(ctx, &queryHeadBucketRequest) s.Require().NoError(err) - s.Require().Equal(2, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) - - var agentToRemove []sdk.AccAddress - agentToRemove = append(agentToRemove, sp.OperatorKey.GetAddr()) - msgUpdateDelegatedAgent = storagetypes.NewMsgUpdateDelegatedAgent( - user.GetAddr(), - bucketName, - nil, - agentToRemove) - s.SendTxBlock(user, msgUpdateDelegatedAgent) - - queryHeadBucketResponse, err = s.Client.HeadBucket(ctx, &queryHeadBucketRequest) - s.Require().NoError(err) - s.Require().Equal(1, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) - - agentToRemove = []sdk.AccAddress{agentAccount} - msgUpdateDelegatedAgent = storagetypes.NewMsgUpdateDelegatedAgent( - user.GetAddr(), - bucketName, - nil, - agentToRemove) - s.SendTxBlock(user, msgUpdateDelegatedAgent) - - queryHeadBucketResponse, err = s.Client.HeadBucket(ctx, &queryHeadBucketRequest) - s.Require().NoError(err) - s.Require().Equal(0, len(queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses)) + s.Require().Equal(true, queryHeadBucketResponse.BucketInfo.SpAsDelegatedAgentDisabled) } func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { @@ -2499,14 +2466,7 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { msgCreateBucket.PrimarySpApproval.Sig, err = sp.ApprovalKey.Sign(msgCreateBucket.GetApprovalBytes()) s.Require().NoError(err) - var agentToAdd []sdk.AccAddress - agentToAdd = append(agentToAdd, sp.OperatorKey.GetAddr()) - msgUpdateDelegatedAgent := storagetypes.NewMsgUpdateDelegatedAgent( - bucketOwner.GetAddr(), - bucketName, - agentToAdd, - nil) - s.SendTxBlock(bucketOwner, msgCreateBucket, msgUpdateDelegatedAgent) + s.SendTxBlock(bucketOwner, msgCreateBucket) // HeadBucket queryHeadBucketRequest := storagetypes.QueryHeadBucketRequest{ @@ -2514,7 +2474,7 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { } queryHeadBucketResponse, err := s.Client.HeadBucket(ctx, &queryHeadBucketRequest) s.Require().NoError(err) - s.Require().Equal(sp.OperatorKey.GetAddr().String(), queryHeadBucketResponse.BucketInfo.DelegatedAgentAddresses[0]) + s.Require().Equal(false, queryHeadBucketResponse.BucketInfo.SpAsDelegatedAgentDisabled) // DelegateCreate for user2, who does not have permission var buffer bytes.Buffer diff --git a/proto/greenfield/storage/tx.proto b/proto/greenfield/storage/tx.proto index c7b760f78..7c27c9a72 100644 --- a/proto/greenfield/storage/tx.proto +++ b/proto/greenfield/storage/tx.proto @@ -23,7 +23,7 @@ service Msg { rpc UpdateBucketInfo(MsgUpdateBucketInfo) returns (MsgUpdateBucketInfoResponse); rpc MirrorBucket(MsgMirrorBucket) returns (MsgMirrorBucketResponse); rpc DiscontinueBucket(MsgDiscontinueBucket) returns (MsgDiscontinueBucketResponse); - rpc UpdateDelegatedAgent(MsgUpdateDelegatedAgent) returns (MsgUpdateDelegatedAgentResponse); + rpc ToggleSPAsDelegatedAgent(MsgToggleSPAsDelegatedAgent) returns (MsgToggleSPAsDelegatedAgentResponse); // basic operation of object rpc CreateObject(MsgCreateObject) returns (MsgCreateObjectResponse); @@ -711,7 +711,6 @@ message MsgCancelUpdateObjectContent { message MsgCancelUpdateObjectContentResponse {} - message MsgDelegateCreateObject { option (cosmos.msg.v1.signer) = "operator"; // operator defines the account address of the operator, it is the delegated agent that allows to creat object under bucket. @@ -748,7 +747,7 @@ message MsgDelegateUpdateObjectContent { // operator defines the account address of the operator, it is the delegated agent that allows to creat object under bucket. string operator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // updater defines the account address of the object updater. - string updater = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + string updater = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // bucket_name defines the name of the bucket where the object is stored. string bucket_name = 3; // object_name defines the name of object @@ -763,17 +762,13 @@ message MsgDelegateUpdateObjectContent { message MsgDelegateUpdateObjectContentResponse {} -message MsgUpdateDelegatedAgent { +message MsgToggleSPAsDelegatedAgent { option (cosmos.msg.v1.signer) = "operator"; - // operator defines the account address of the operator, only the bucket owner can update the delegated agent. + // operator defines the account address of the operator, only the bucket owner can send the tx. string operator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // bucket_name defines the name of the bucket. string bucket_name = 2; - // agents_to_add defines the delegated agent addresses to be added - repeated string agents_to_add = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; - // agents_to_remove defines the delegated agent addresses to be removed - repeated string agents_to_remove = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; } -message MsgUpdateDelegatedAgentResponse {} \ No newline at end of file +message MsgToggleSPAsDelegatedAgentResponse {} diff --git a/proto/greenfield/storage/types.proto b/proto/greenfield/storage/types.proto index 0322e8984..54cdfdd41 100644 --- a/proto/greenfield/storage/types.proto +++ b/proto/greenfield/storage/types.proto @@ -39,8 +39,9 @@ message BucketInfo { BucketStatus bucket_status = 10; // tags defines a list of tags the bucket has ResourceTags tags = 11; - // delegated_agent_addresses - repeated string delegated_agent_addresses = 12 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + // sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. + // when a bucket is created, Sp is delegated to create object for owner or granted users by default. + bool sp_as_delegated_agent_disabled = 12; } message InternalBucketInfo { diff --git a/x/storage/keeper/keeper.go b/x/storage/keeper/keeper.go index 184decb2b..a85fdc2d4 100644 --- a/x/storage/keeper/keeper.go +++ b/x/storage/keeper/keeper.go @@ -572,26 +572,11 @@ func (k Keeper) CreateObject( creator := operator if opts.Delegated { creator = opts.Creator - if operator.String() != sp.OperatorAddress { - // 3rd party must provide checksums - if opts.Checksums == nil { - return sdkmath.ZeroUint(), types.ErrObjectChecksumsMissing - } else { - if len(opts.Checksums) != int(1+k.GetExpectSecondarySPNumForECObject(ctx, ctx.BlockTime().Unix())) { - return sdkmath.ZeroUint(), gnfderrors.ErrInvalidChecksum.Wrapf("ExpectChecksums missing, expect: %d, actual: %d", - 1+k.RedundantParityChunkNum(ctx)+k.RedundantDataChunkNum(ctx), - len(opts.Checksums)) - } - } + if bucketInfo.SpAsDelegatedAgentDisabled { + return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrap("the SP is not allowed to create object for delegator, disabled by the bucket owner previously") } - allowed := false - for _, delegatedAgent := range bucketInfo.DelegatedAgentAddresses { - if operator.String() == delegatedAgent { - allowed = true - } - } - if !allowed { - return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrap("the delegatee address is not allowed to create object") + if operator.String() != sp.OperatorAddress { + return sdkmath.ZeroUint(), types.ErrAccessDenied.Wrap("only the primary SP is allowed to create object for delegator") } } @@ -2494,26 +2479,11 @@ func (k Keeper) UpdateObjectContent( return errors.Wrap(types.ErrNoSuchStorageProvider, "the storage provider is not in service") } if opts.Delegated { - if operator.String() != sp.OperatorAddress { - // 3rd party must provide checksums - if opts.Checksums == nil { - return types.ErrObjectChecksumsMissing - } else { - if len(opts.Checksums) != int(1+k.GetExpectSecondarySPNumForECObject(ctx, ctx.BlockTime().Unix())) { - return gnfderrors.ErrInvalidChecksum.Wrapf("ExpectChecksums missing, expect: %d, actual: %d", - 1+k.RedundantParityChunkNum(ctx)+k.RedundantDataChunkNum(ctx), - len(opts.Checksums)) - } - } - } - allowed := false - for _, delegatedAgent := range bucketInfo.DelegatedAgentAddresses { - if operator.String() == delegatedAgent { - allowed = true - } + if bucketInfo.SpAsDelegatedAgentDisabled { + return types.ErrAccessDenied.Wrap("the SP is not allowed to create object for delegator, disabled by the bucket owner previously") } - if !allowed { - return types.ErrAccessDenied.Wrap("the delegatee's address is not allowed to create object") + if operator.String() != sp.OperatorAddress { + return types.ErrAccessDenied.Wrap("only the primary SP is allowed to create object for delegator") } } nextVersion := objectInfo.Version + 1 diff --git a/x/storage/keeper/msg_server.go b/x/storage/keeper/msg_server.go index a8b720701..d6e562cb1 100644 --- a/x/storage/keeper/msg_server.go +++ b/x/storage/keeper/msg_server.go @@ -102,31 +102,23 @@ func (k msgServer) DiscontinueBucket(goCtx context.Context, msg *storagetypes.Ms return &types.MsgDiscontinueBucketResponse{}, nil } -func (k msgServer) UpdateDelegatedAgent(goCtx context.Context, msg *storagetypes.MsgUpdateDelegatedAgent) (*storagetypes.MsgUpdateDelegatedAgentResponse, error) { +func (k msgServer) ToggleSPAsDelegatedAgent(goCtx context.Context, msg *storagetypes.MsgToggleSPAsDelegatedAgent) (*storagetypes.MsgToggleSPAsDelegatedAgentResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) bucketInfo, found := k.GetBucketInfo(ctx, msg.BucketName) if !found { return nil, types.ErrNoSuchBucket } if msg.Operator != bucketInfo.Owner { - return nil, types.ErrAccessDenied.Wrapf("Only the bucket owner(%s) can update delegated agents", bucketInfo.Owner) + return nil, types.ErrAccessDenied.Wrapf("Only the bucket owner(%s) can toggle", bucketInfo.Owner) } - - agents := bucketInfo.DelegatedAgentAddresses - for _, agent := range msg.AgentsToAdd { - agents = append(agents, agent) - } - - for _, agentToRemove := range msg.AgentsToRemove { - for i, agent := range agents { - if agentToRemove == agent { - agents = append(agents[:i], agents[i+1:]...) - } - } + if bucketInfo.SpAsDelegatedAgentDisabled { + bucketInfo.SpAsDelegatedAgentDisabled = false + } else { + bucketInfo.SpAsDelegatedAgentDisabled = true } - bucketInfo.DelegatedAgentAddresses = agents k.SetBucketInfo(ctx, bucketInfo) - return &types.MsgUpdateDelegatedAgentResponse{}, nil + return &types.MsgToggleSPAsDelegatedAgentResponse{}, nil + } func (k msgServer) CreateObject(goCtx context.Context, msg *types.MsgCreateObject) (*types.MsgCreateObjectResponse, error) { diff --git a/x/storage/types/codec.go b/x/storage/types/codec.go index 1a26b1a1d..b08c39bda 100644 --- a/x/storage/types/codec.go +++ b/x/storage/types/codec.go @@ -125,7 +125,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgDelegateCreateObject{}, ) registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgUpdateDelegatedAgent{}, + &MsgToggleSPAsDelegatedAgent{}, ) registry.RegisterImplementations((*sdk.Msg)(nil), &MsgSealObjectV2{}, diff --git a/x/storage/types/message.go b/x/storage/types/message.go index 121fbefc4..854b9cd95 100644 --- a/x/storage/types/message.go +++ b/x/storage/types/message.go @@ -21,11 +21,11 @@ import ( const ( // For bucket - TypeMsgCreateBucket = "create_bucket" - TypeMsgDeleteBucket = "delete_bucket" - TypeMsgUpdateBucketInfo = "update_bucket_info" - TypeMsgMirrorBucket = "mirror_bucket" - TypeMsgUpdateDelegatedAgents = "update_delegated_agents" + TypeMsgCreateBucket = "create_bucket" + TypeMsgDeleteBucket = "delete_bucket" + TypeMsgUpdateBucketInfo = "update_bucket_info" + TypeMsgMirrorBucket = "mirror_bucket" + TypeMsgToggleSPAsDelegatedAgent = "toggle_sp_as_delegated_agent" // For object TypeMsgCopyObject = "copy_object" @@ -301,38 +301,27 @@ func (msg *MsgUpdateBucketInfo) ValidateBasic() error { return nil } -func NewMsgUpdateDelegatedAgent( - operator sdk.AccAddress, bucketName string, agentsToAdd, - agentsToRemove []sdk.AccAddress, -) *MsgUpdateDelegatedAgent { - var agentsAddrToAdd []string - for _, agent := range agentsToAdd { - agentsAddrToAdd = append(agentsAddrToAdd, agent.String()) - } - var agentsAddrToDelete []string - for _, agent := range agentsToRemove { - agentsAddrToDelete = append(agentsAddrToDelete, agent.String()) - } - return &MsgUpdateDelegatedAgent{ - Operator: operator.String(), - BucketName: bucketName, - AgentsToAdd: agentsAddrToAdd, - AgentsToRemove: agentsAddrToDelete, +func NewMsgToggleSPAsDelegatedAgent( + operator sdk.AccAddress, bucketName string, +) *MsgToggleSPAsDelegatedAgent { + return &MsgToggleSPAsDelegatedAgent{ + Operator: operator.String(), + BucketName: bucketName, } } // Route implements the sdk.Msg interface. -func (msg *MsgUpdateDelegatedAgent) Route() string { +func (msg *MsgToggleSPAsDelegatedAgent) Route() string { return RouterKey } // Type implements the sdk.Msg interface. -func (msg *MsgUpdateDelegatedAgent) Type() string { - return TypeMsgUpdateDelegatedAgents +func (msg *MsgToggleSPAsDelegatedAgent) Type() string { + return TypeMsgToggleSPAsDelegatedAgent } // GetSigners implements the sdk.Msg interface. -func (msg *MsgUpdateDelegatedAgent) GetSigners() []sdk.AccAddress { +func (msg *MsgToggleSPAsDelegatedAgent) GetSigners() []sdk.AccAddress { operator, err := sdk.AccAddressFromHexUnsafe(msg.Operator) if err != nil { panic(err) @@ -341,13 +330,13 @@ func (msg *MsgUpdateDelegatedAgent) GetSigners() []sdk.AccAddress { } // GetSignBytes returns the message bytes to sign over. -func (msg *MsgUpdateDelegatedAgent) GetSignBytes() []byte { +func (msg *MsgToggleSPAsDelegatedAgent) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } // ValidateBasic implements the sdk.Msg interface. -func (msg *MsgUpdateDelegatedAgent) ValidateBasic() error { +func (msg *MsgToggleSPAsDelegatedAgent) ValidateBasic() error { _, err := sdk.AccAddressFromHexUnsafe(msg.Operator) if err != nil { return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid operator address (%s)", err) @@ -357,24 +346,6 @@ func (msg *MsgUpdateDelegatedAgent) ValidateBasic() error { if err != nil { return err } - if len(msg.AgentsToAdd) == 0 && len(msg.AgentsToRemove) == 0 { - return gnfderrors.ErrInvalidParameter.Wrapf("Need to provide agents to be added/removed") - } - if len(msg.AgentsToAdd)+len(msg.AgentsToRemove) > MaxBucketDelegatedAgentLimitOnce { - return gnfderrors.ErrInvalidParameter.Wrapf("Once update bucket delegated agents limit exceeded") - } - for _, agent := range msg.AgentsToAdd { - _, err = sdk.AccAddressFromHexUnsafe(agent) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid address (%s)", err) - } - } - for _, agent := range msg.AgentsToRemove { - _, err = sdk.AccAddressFromHexUnsafe(agent) - if err != nil { - return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid address (%s)", err) - } - } return nil } diff --git a/x/storage/types/tx.pb.go b/x/storage/types/tx.pb.go index 462998393..a0b7c51b3 100644 --- a/x/storage/types/tx.pb.go +++ b/x/storage/types/tx.pb.go @@ -3835,29 +3835,25 @@ func (m *MsgDelegateUpdateObjectContentResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgDelegateUpdateObjectContentResponse proto.InternalMessageInfo -type MsgUpdateDelegatedAgent struct { - // operator defines the account address of the operator, only the bucket owner can update the delegated agent. +type MsgToggleSPAsDelegatedAgent struct { + // operator defines the account address of the operator, only the bucket owner can send the tx. Operator string `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"` // bucket_name defines the name of the bucket. BucketName string `protobuf:"bytes,2,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` - // agents_to_add defines the delegated agent addresses to be added - AgentsToAdd []string `protobuf:"bytes,3,rep,name=agents_to_add,json=agentsToAdd,proto3" json:"agents_to_add,omitempty"` - // agents_to_remove defines the delegated agent addresses to be removed - AgentsToRemove []string `protobuf:"bytes,4,rep,name=agents_to_remove,json=agentsToRemove,proto3" json:"agents_to_remove,omitempty"` } -func (m *MsgUpdateDelegatedAgent) Reset() { *m = MsgUpdateDelegatedAgent{} } -func (m *MsgUpdateDelegatedAgent) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateDelegatedAgent) ProtoMessage() {} -func (*MsgUpdateDelegatedAgent) Descriptor() ([]byte, []int) { +func (m *MsgToggleSPAsDelegatedAgent) Reset() { *m = MsgToggleSPAsDelegatedAgent{} } +func (m *MsgToggleSPAsDelegatedAgent) String() string { return proto.CompactTextString(m) } +func (*MsgToggleSPAsDelegatedAgent) ProtoMessage() {} +func (*MsgToggleSPAsDelegatedAgent) Descriptor() ([]byte, []int) { return fileDescriptor_ddb71b028305a3cc, []int{69} } -func (m *MsgUpdateDelegatedAgent) XXX_Unmarshal(b []byte) error { +func (m *MsgToggleSPAsDelegatedAgent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateDelegatedAgent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgToggleSPAsDelegatedAgent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateDelegatedAgent.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgToggleSPAsDelegatedAgent.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -3867,61 +3863,47 @@ func (m *MsgUpdateDelegatedAgent) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *MsgUpdateDelegatedAgent) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateDelegatedAgent.Merge(m, src) +func (m *MsgToggleSPAsDelegatedAgent) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleSPAsDelegatedAgent.Merge(m, src) } -func (m *MsgUpdateDelegatedAgent) XXX_Size() int { +func (m *MsgToggleSPAsDelegatedAgent) XXX_Size() int { return m.Size() } -func (m *MsgUpdateDelegatedAgent) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateDelegatedAgent.DiscardUnknown(m) +func (m *MsgToggleSPAsDelegatedAgent) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleSPAsDelegatedAgent.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateDelegatedAgent proto.InternalMessageInfo +var xxx_messageInfo_MsgToggleSPAsDelegatedAgent proto.InternalMessageInfo -func (m *MsgUpdateDelegatedAgent) GetOperator() string { +func (m *MsgToggleSPAsDelegatedAgent) GetOperator() string { if m != nil { return m.Operator } return "" } -func (m *MsgUpdateDelegatedAgent) GetBucketName() string { +func (m *MsgToggleSPAsDelegatedAgent) GetBucketName() string { if m != nil { return m.BucketName } return "" } -func (m *MsgUpdateDelegatedAgent) GetAgentsToAdd() []string { - if m != nil { - return m.AgentsToAdd - } - return nil +type MsgToggleSPAsDelegatedAgentResponse struct { } -func (m *MsgUpdateDelegatedAgent) GetAgentsToRemove() []string { - if m != nil { - return m.AgentsToRemove - } - return nil -} - -type MsgUpdateDelegatedAgentResponse struct { -} - -func (m *MsgUpdateDelegatedAgentResponse) Reset() { *m = MsgUpdateDelegatedAgentResponse{} } -func (m *MsgUpdateDelegatedAgentResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateDelegatedAgentResponse) ProtoMessage() {} -func (*MsgUpdateDelegatedAgentResponse) Descriptor() ([]byte, []int) { +func (m *MsgToggleSPAsDelegatedAgentResponse) Reset() { *m = MsgToggleSPAsDelegatedAgentResponse{} } +func (m *MsgToggleSPAsDelegatedAgentResponse) String() string { return proto.CompactTextString(m) } +func (*MsgToggleSPAsDelegatedAgentResponse) ProtoMessage() {} +func (*MsgToggleSPAsDelegatedAgentResponse) Descriptor() ([]byte, []int) { return fileDescriptor_ddb71b028305a3cc, []int{70} } -func (m *MsgUpdateDelegatedAgentResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgToggleSPAsDelegatedAgentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgUpdateDelegatedAgentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgToggleSPAsDelegatedAgentResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgUpdateDelegatedAgentResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgToggleSPAsDelegatedAgentResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -3931,17 +3913,17 @@ func (m *MsgUpdateDelegatedAgentResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *MsgUpdateDelegatedAgentResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateDelegatedAgentResponse.Merge(m, src) +func (m *MsgToggleSPAsDelegatedAgentResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleSPAsDelegatedAgentResponse.Merge(m, src) } -func (m *MsgUpdateDelegatedAgentResponse) XXX_Size() int { +func (m *MsgToggleSPAsDelegatedAgentResponse) XXX_Size() int { return m.Size() } -func (m *MsgUpdateDelegatedAgentResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateDelegatedAgentResponse.DiscardUnknown(m) +func (m *MsgToggleSPAsDelegatedAgentResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleSPAsDelegatedAgentResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgUpdateDelegatedAgentResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgToggleSPAsDelegatedAgentResponse proto.InternalMessageInfo func init() { proto.RegisterType((*MsgCreateBucket)(nil), "greenfield.storage.MsgCreateBucket") @@ -4013,181 +3995,180 @@ func init() { proto.RegisterType((*MsgDelegateCreateObjectResponse)(nil), "greenfield.storage.MsgDelegateCreateObjectResponse") proto.RegisterType((*MsgDelegateUpdateObjectContent)(nil), "greenfield.storage.MsgDelegateUpdateObjectContent") proto.RegisterType((*MsgDelegateUpdateObjectContentResponse)(nil), "greenfield.storage.MsgDelegateUpdateObjectContentResponse") - proto.RegisterType((*MsgUpdateDelegatedAgent)(nil), "greenfield.storage.MsgUpdateDelegatedAgent") - proto.RegisterType((*MsgUpdateDelegatedAgentResponse)(nil), "greenfield.storage.MsgUpdateDelegatedAgentResponse") + proto.RegisterType((*MsgToggleSPAsDelegatedAgent)(nil), "greenfield.storage.MsgToggleSPAsDelegatedAgent") + proto.RegisterType((*MsgToggleSPAsDelegatedAgentResponse)(nil), "greenfield.storage.MsgToggleSPAsDelegatedAgentResponse") } func init() { proto.RegisterFile("greenfield/storage/tx.proto", fileDescriptor_ddb71b028305a3cc) } var fileDescriptor_ddb71b028305a3cc = []byte{ - // 2665 bytes of a gzipped FileDescriptorProto + // 2645 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5b, 0x4b, 0x6c, 0x1b, 0xc7, - 0x19, 0x36, 0x1f, 0x92, 0xcc, 0x9f, 0x7a, 0x79, 0xad, 0xc4, 0x0c, 0x55, 0x53, 0x34, 0x9d, 0x3a, - 0xf2, 0x4b, 0x74, 0x18, 0xd7, 0x70, 0x85, 0xa0, 0xa8, 0xa4, 0x34, 0x2e, 0x91, 0x28, 0x56, 0x56, - 0xb6, 0x0a, 0xa4, 0x28, 0x98, 0x25, 0x77, 0xbc, 0xde, 0x86, 0xdc, 0xdd, 0xee, 0x2e, 0x65, 0x2b, - 0x05, 0x0a, 0xb4, 0x97, 0x9c, 0x02, 0x18, 0x70, 0x0f, 0x3d, 0x14, 0x3d, 0x14, 0x28, 0xd0, 0x53, - 0x51, 0x14, 0x39, 0x17, 0xbd, 0x04, 0x30, 0x8a, 0x1e, 0x8c, 0x1c, 0x8a, 0xa2, 0x07, 0x37, 0xb0, - 0x0b, 0x14, 0xbd, 0xf6, 0xd2, 0x6b, 0x31, 0x8f, 0x9d, 0x9d, 0x7d, 0x53, 0xb4, 0x14, 0x0b, 0xe8, - 0xc9, 0xe6, 0xcc, 0x37, 0xff, 0xfc, 0xef, 0xf9, 0xf7, 0x9f, 0x11, 0x2c, 0x6a, 0x36, 0x42, 0xc6, - 0x1d, 0x1d, 0xf5, 0xd5, 0xa6, 0xe3, 0x9a, 0xb6, 0xa2, 0xa1, 0xa6, 0x7b, 0x7f, 0xc5, 0xb2, 0x4d, - 0xd7, 0x94, 0x24, 0x7f, 0x72, 0x85, 0x4d, 0x56, 0x4f, 0xf5, 0x4c, 0x67, 0x60, 0x3a, 0xcd, 0x81, - 0xa3, 0x35, 0x77, 0x5f, 0xc7, 0xff, 0x50, 0x70, 0xf5, 0x15, 0x3a, 0xd1, 0x21, 0xbf, 0x9a, 0xf4, - 0x07, 0x9b, 0x5a, 0xd0, 0x4c, 0xcd, 0xa4, 0xe3, 0xf8, 0x7f, 0x6c, 0x74, 0x49, 0x33, 0x4d, 0xad, - 0x8f, 0x9a, 0xe4, 0x57, 0x77, 0x78, 0xa7, 0xe9, 0xea, 0x03, 0xe4, 0xb8, 0xca, 0xc0, 0x62, 0x80, - 0xba, 0xc0, 0x5b, 0xcf, 0x1c, 0x0c, 0x4c, 0xa3, 0xa9, 0x58, 0x96, 0x6d, 0xee, 0x2a, 0x7d, 0x4e, - 0x22, 0x82, 0xb8, 0x67, 0x2b, 0x96, 0x85, 0x6c, 0x06, 0x68, 0x08, 0x00, 0x0b, 0xd9, 0x03, 0xdd, - 0x71, 0x74, 0xd3, 0x60, 0xd8, 0x18, 0x22, 0x9e, 0x0a, 0x32, 0x01, 0x96, 0x62, 0x2b, 0x03, 0x4f, - 0xbe, 0x5a, 0x9c, 0x12, 0xf7, 0x2c, 0xc4, 0xe6, 0x1b, 0x7f, 0x2c, 0xc0, 0xdc, 0xa6, 0xa3, 0x6d, - 0xd8, 0x48, 0x71, 0xd1, 0xfa, 0xb0, 0xf7, 0x11, 0x72, 0xa5, 0x16, 0x4c, 0xf5, 0xf0, 0x6f, 0xd3, - 0xae, 0xe4, 0xea, 0xb9, 0xe5, 0xd2, 0x7a, 0xe5, 0x8b, 0xcf, 0x2e, 0x2f, 0x30, 0xb5, 0xad, 0xa9, - 0xaa, 0x8d, 0x1c, 0x67, 0xdb, 0xb5, 0x75, 0x43, 0x93, 0x3d, 0xa0, 0xb4, 0x04, 0xe5, 0x2e, 0x59, - 0xdd, 0x31, 0x94, 0x01, 0xaa, 0xe4, 0xf1, 0x3a, 0x19, 0xe8, 0xd0, 0x7b, 0xca, 0x00, 0x49, 0xeb, - 0x00, 0xbb, 0xba, 0xa3, 0x77, 0xf5, 0xbe, 0xee, 0xee, 0x55, 0x0a, 0xf5, 0xdc, 0xf2, 0x6c, 0xab, - 0xb1, 0x12, 0xb5, 0xe2, 0xca, 0x0e, 0x47, 0xdd, 0xda, 0xb3, 0x90, 0x2c, 0xac, 0x92, 0xd6, 0x60, - 0xce, 0x52, 0xf6, 0x06, 0xc8, 0x70, 0x3b, 0x0a, 0x65, 0xa3, 0x52, 0xcc, 0x60, 0x70, 0x96, 0x2d, - 0x60, 0xa3, 0xd2, 0xdb, 0x20, 0x59, 0xb6, 0x3e, 0x50, 0xec, 0xbd, 0x8e, 0x63, 0x71, 0x2a, 0x13, - 0x19, 0x54, 0xe6, 0xd9, 0x9a, 0x6d, 0xcb, 0xa3, 0xf3, 0x0e, 0x9c, 0x14, 0xe9, 0x30, 0xdb, 0x57, - 0x26, 0xeb, 0xb9, 0xe5, 0x72, 0x6b, 0x51, 0x94, 0x8b, 0xd9, 0x6b, 0x8d, 0x41, 0xe4, 0x13, 0x3e, - 0x2d, 0x36, 0x24, 0x5d, 0x02, 0xa9, 0x77, 0x57, 0xb1, 0x35, 0xa4, 0x76, 0x6c, 0xa4, 0xa8, 0x9d, - 0x1f, 0x0d, 0x4d, 0x57, 0xa9, 0x4c, 0xd5, 0x73, 0xcb, 0x45, 0x79, 0x9e, 0xcd, 0xc8, 0x48, 0x51, - 0xdf, 0xc7, 0xe3, 0xab, 0xd3, 0x3f, 0xfb, 0xd7, 0xef, 0x2f, 0x78, 0x8a, 0x6f, 0x6c, 0xc3, 0xa9, - 0x90, 0xfd, 0x64, 0xe4, 0x58, 0xa6, 0xe1, 0x20, 0xe9, 0x3a, 0x94, 0x98, 0x4d, 0x74, 0x95, 0x59, - 0x72, 0xf1, 0xd1, 0x93, 0xa5, 0x63, 0x7f, 0x7f, 0xb2, 0x54, 0xbc, 0xad, 0x1b, 0xee, 0x17, 0x9f, - 0x5d, 0x2e, 0x33, 0x71, 0xf1, 0x4f, 0xf9, 0x38, 0x45, 0xb7, 0xd5, 0xc6, 0x3d, 0xe2, 0x14, 0x6f, - 0xa1, 0x3e, 0xe2, 0x4e, 0x71, 0x15, 0x8e, 0x9b, 0x16, 0xb2, 0x47, 0xf2, 0x0a, 0x8e, 0xcc, 0x74, - 0x8b, 0xd5, 0x19, 0x2c, 0x0c, 0xc7, 0x37, 0x5e, 0x21, 0xd2, 0x88, 0x1b, 0x7b, 0xd2, 0x34, 0x7e, - 0x9e, 0x83, 0x05, 0x3c, 0xa7, 0x3b, 0x3d, 0xd3, 0x70, 0x75, 0x63, 0x78, 0xb8, 0x9c, 0x49, 0x2f, - 0xc3, 0xa4, 0x8d, 0x14, 0xc7, 0x34, 0x88, 0xb3, 0x96, 0x64, 0xf6, 0x2b, 0xcc, 0x71, 0x0d, 0xbe, - 0x16, 0xc7, 0x15, 0x67, 0xfb, 0x9f, 0x62, 0x80, 0xdd, 0xec, 0xfe, 0x10, 0xf5, 0x0e, 0x29, 0xc0, - 0x96, 0xa0, 0x6c, 0x12, 0xf2, 0x14, 0x40, 0x99, 0x06, 0x3a, 0x44, 0x00, 0x67, 0x60, 0xda, 0x52, - 0xf6, 0xfa, 0xa6, 0xa2, 0x76, 0x1c, 0xfd, 0x63, 0x44, 0x42, 0xa7, 0x28, 0x97, 0xd9, 0xd8, 0xb6, - 0xfe, 0x71, 0x38, 0x48, 0x27, 0xc6, 0x0a, 0xd2, 0x33, 0x30, 0x8d, 0x55, 0x81, 0x83, 0x14, 0x27, - 0x1a, 0x12, 0x12, 0x25, 0xb9, 0xcc, 0xc6, 0x30, 0x3c, 0x29, 0x78, 0xa6, 0xc6, 0x0a, 0x9e, 0xf3, - 0x30, 0x8f, 0xee, 0x5b, 0x58, 0xee, 0xde, 0x5d, 0xd4, 0xfb, 0xc8, 0x19, 0x0e, 0x9c, 0xca, 0xf1, - 0x7a, 0x61, 0x79, 0x5a, 0x9e, 0xa3, 0xe3, 0x1b, 0xde, 0xb0, 0xf4, 0x0e, 0xcc, 0xd9, 0x48, 0x1d, - 0x1a, 0xaa, 0x62, 0xf4, 0xf6, 0x28, 0x77, 0xa5, 0x64, 0x19, 0x65, 0x0e, 0x25, 0x32, 0xce, 0xda, - 0x81, 0xdf, 0x29, 0x61, 0x48, 0xad, 0x2c, 0x86, 0x21, 0x33, 0xcc, 0x88, 0x61, 0x48, 0xd1, 0x6d, - 0xb5, 0xf1, 0x30, 0x0f, 0x33, 0x9b, 0x8e, 0xb6, 0x8d, 0x94, 0x3e, 0xf3, 0x9c, 0x43, 0xf2, 0xf5, - 0x4c, 0xdf, 0xf9, 0x06, 0x9c, 0xd2, 0xfa, 0x66, 0x57, 0xe9, 0x77, 0x76, 0x75, 0xdb, 0x1d, 0x2a, - 0xfd, 0x8e, 0x66, 0x9b, 0x43, 0x0b, 0x4b, 0x84, 0xdd, 0x68, 0x46, 0x5e, 0xa0, 0xd3, 0x3b, 0x74, - 0xf6, 0x06, 0x9e, 0x6c, 0xab, 0xd2, 0x5b, 0xb0, 0xe4, 0xa0, 0x9e, 0x69, 0xa8, 0xcc, 0xd4, 0xdd, - 0xbe, 0xd3, 0x51, 0x34, 0xad, 0xe3, 0xe8, 0x9a, 0xa1, 0xb8, 0x43, 0x1b, 0xd1, 0xd4, 0x3b, 0x2d, - 0x2f, 0x72, 0xd8, 0xb6, 0xb5, 0xde, 0x77, 0xd6, 0x34, 0x6d, 0x9b, 0x43, 0xc2, 0x11, 0x77, 0x0a, - 0x5e, 0x0a, 0x28, 0x85, 0x87, 0xda, 0x9f, 0xf2, 0x24, 0xd4, 0xfc, 0x99, 0x9d, 0xd6, 0xff, 0xa5, - 0xc2, 0x62, 0x43, 0x62, 0x32, 0x36, 0x24, 0xe2, 0xf3, 0xaf, 0xa8, 0x41, 0xae, 0xdd, 0x5f, 0xe6, - 0xe0, 0xe4, 0xa6, 0xa3, 0xc9, 0x08, 0x8f, 0xbf, 0x78, 0x97, 0x0c, 0x73, 0x7e, 0x1a, 0x16, 0x63, - 0xb8, 0xe3, 0xdc, 0xff, 0x8e, 0x86, 0xd2, 0x86, 0x69, 0xed, 0x31, 0xbe, 0xab, 0x61, 0xbe, 0x05, - 0xee, 0xce, 0xc1, 0x9c, 0x63, 0xf7, 0x3a, 0x51, 0x0e, 0x67, 0x1c, 0xbb, 0xb7, 0xee, 0x33, 0x79, - 0x0e, 0xe6, 0x54, 0xc7, 0x0d, 0xe0, 0x28, 0xa3, 0x33, 0xaa, 0xe3, 0x06, 0x71, 0x98, 0x9e, 0x28, - 0x50, 0x91, 0xd3, 0xbb, 0xe9, 0x7b, 0x0d, 0xa3, 0x27, 0xe2, 0x26, 0x38, 0x3d, 0x01, 0x27, 0xc3, - 0x29, 0x8c, 0x1b, 0xb3, 0x02, 0x59, 0x50, 0x1d, 0x77, 0x2b, 0x9c, 0x47, 0xc3, 0xfa, 0x7c, 0x9f, - 0x44, 0x99, 0xaf, 0xaf, 0x03, 0x48, 0x67, 0xbf, 0xc8, 0x09, 0x65, 0xc5, 0xd1, 0xf2, 0x1e, 0xb1, - 0xee, 0x08, 0x79, 0xce, 0xe3, 0x48, 0xdd, 0x71, 0xb8, 0xac, 0xaf, 0x02, 0x70, 0xfd, 0x3a, 0x95, - 0x42, 0xbd, 0x90, 0xa5, 0xe0, 0x92, 0xa7, 0x60, 0x47, 0xa8, 0x59, 0x8a, 0xfb, 0xaa, 0x59, 0x42, - 0x22, 0x7f, 0x92, 0x83, 0x59, 0x7e, 0x9a, 0x91, 0xd4, 0x34, 0x56, 0xc9, 0x72, 0x1a, 0x80, 0x26, - 0x3d, 0x41, 0xd2, 0x12, 0x19, 0x21, 0x82, 0x2e, 0xc0, 0x04, 0xba, 0xef, 0xda, 0x0a, 0xb3, 0x0e, - 0xfd, 0x11, 0x3a, 0x56, 0xb7, 0xe0, 0xe5, 0x20, 0x23, 0xdc, 0x0d, 0xaf, 0xc1, 0x71, 0x9e, 0x51, - 0x47, 0xf0, 0xc2, 0x29, 0x8d, 0x66, 0xd8, 0x86, 0x4b, 0x44, 0xa3, 0x96, 0xa6, 0xa2, 0x8d, 0x67, - 0xc7, 0x74, 0xe1, 0xc2, 0x1a, 0xaf, 0x10, 0x39, 0x84, 0x5d, 0xb9, 0xae, 0x3f, 0xcf, 0x13, 0xf7, - 0xba, 0x6d, 0xa9, 0x9e, 0x88, 0x9b, 0x68, 0xd0, 0x45, 0xf6, 0x98, 0x6c, 0x7d, 0x13, 0xca, 0x94, - 0x2d, 0xf3, 0x9e, 0x81, 0x6c, 0xca, 0x57, 0xca, 0x42, 0x2a, 0xc3, 0x4d, 0x8c, 0x0d, 0x49, 0x54, - 0x08, 0x9b, 0xeb, 0xbb, 0x30, 0x3b, 0x20, 0x9c, 0x39, 0x1d, 0xd7, 0xc4, 0x5f, 0x4e, 0x95, 0x62, - 0xbd, 0xb0, 0x5c, 0x8e, 0xaf, 0x9d, 0x36, 0x1d, 0x4d, 0x90, 0x45, 0x9e, 0x66, 0x2b, 0x6f, 0x99, - 0x6b, 0x2a, 0x3e, 0xe4, 0x4e, 0x08, 0x94, 0x54, 0xa2, 0x94, 0xca, 0x04, 0x71, 0xf4, 0x64, 0x4e, - 0xe7, 0x38, 0x09, 0xaa, 0xc5, 0x78, 0x9f, 0x8e, 0xa8, 0x91, 0xeb, 0xf9, 0x3f, 0xde, 0xf1, 0x65, - 0xa0, 0x7b, 0x47, 0x59, 0xcd, 0x6f, 0xc2, 0x14, 0x93, 0x74, 0x1f, 0xfa, 0xf5, 0x96, 0x24, 0x1d, - 0x8a, 0x41, 0x99, 0xb9, 0x4e, 0x3e, 0xa5, 0x71, 0x2e, 0xaa, 0xe3, 0x0a, 0x4c, 0x52, 0x5a, 0x99, - 0xca, 0x60, 0x38, 0xa9, 0x0d, 0xb8, 0xa8, 0xd0, 0x6d, 0xc5, 0xd5, 0x4d, 0xa3, 0xe3, 0xea, 0x2c, - 0x1a, 0xca, 0xad, 0xea, 0x0a, 0xed, 0xa2, 0xac, 0x78, 0x5d, 0x94, 0x95, 0x5b, 0x5e, 0x17, 0x65, - 0xbd, 0xf8, 0xe0, 0x1f, 0x4b, 0x39, 0x79, 0xd6, 0x5f, 0x88, 0xa7, 0x1a, 0x7f, 0xa6, 0x36, 0x12, - 0x8c, 0xf8, 0x1d, 0x9c, 0x13, 0x8e, 0x9c, 0x8d, 0x78, 0xe6, 0x2a, 0x8a, 0x99, 0x2b, 0x56, 0xf7, - 0x61, 0x59, 0xb8, 0xee, 0x7f, 0x9b, 0x23, 0x05, 0xc9, 0xbb, 0x48, 0xd9, 0x65, 0x79, 0x68, 0xff, - 0xaa, 0x3f, 0x34, 0x09, 0x57, 0xcb, 0x58, 0x16, 0xb6, 0x0d, 0x2b, 0xb8, 0x7d, 0x4e, 0xfd, 0xa3, - 0x31, 0x2f, 0xd8, 0x8b, 0x96, 0x3b, 0x6d, 0xe3, 0x8e, 0x79, 0x58, 0x27, 0xe3, 0xbb, 0xb1, 0x6d, - 0x92, 0x02, 0x71, 0xb6, 0x5a, 0x4c, 0xc1, 0x73, 0xbb, 0x6d, 0xb8, 0xd7, 0xae, 0xee, 0x28, 0xfd, - 0x21, 0x8a, 0xb6, 0x51, 0x0e, 0xa2, 0x99, 0x74, 0x00, 0x9f, 0xcb, 0x69, 0x5e, 0xe3, 0x6b, 0x94, - 0x6b, 0xfc, 0x57, 0x39, 0x5a, 0x96, 0x29, 0x46, 0x0f, 0xf5, 0x03, 0x3d, 0x85, 0x23, 0x52, 0x48, - 0x2d, 0xc1, 0xe9, 0x58, 0xfe, 0xc4, 0x8f, 0xb4, 0xe9, 0x4d, 0x47, 0xdb, 0x1a, 0xba, 0x5b, 0x66, - 0x5f, 0xef, 0xed, 0x8d, 0xc9, 0xf8, 0xb7, 0xa0, 0x64, 0xd9, 0xba, 0xd1, 0xd3, 0x2d, 0xa5, 0xcf, - 0xf2, 0x4d, 0x5d, 0xd4, 0xbc, 0xdf, 0x51, 0x5d, 0xd9, 0xf2, 0x70, 0xb2, 0xbf, 0x04, 0x57, 0xff, - 0x36, 0x72, 0xcc, 0xa1, 0xdd, 0xf3, 0x84, 0xe2, 0xbf, 0xa5, 0x6f, 0x03, 0x38, 0xae, 0xe2, 0x22, - 0x6c, 0x6a, 0x2f, 0x0b, 0x27, 0x11, 0xdf, 0xf6, 0x80, 0xb2, 0xb0, 0x46, 0xda, 0x8c, 0xe6, 0xc4, - 0xa9, 0xcc, 0x9c, 0x78, 0xfc, 0xd1, 0x93, 0xa5, 0x5c, 0x5c, 0x5e, 0x0c, 0xeb, 0x78, 0x8b, 0x54, - 0x0c, 0x5c, 0x83, 0x62, 0x65, 0x6e, 0x91, 0x11, 0xef, 0x2b, 0x33, 0xab, 0x32, 0xa7, 0xe8, 0xb6, - 0xda, 0xf8, 0x83, 0x58, 0x99, 0x1f, 0x55, 0xbb, 0x84, 0xd5, 0xb0, 0x2d, 0xd4, 0xec, 0x07, 0xa6, - 0x89, 0x7f, 0x53, 0x4d, 0x6c, 0xea, 0xb6, 0x6d, 0xda, 0xcf, 0x15, 0x5a, 0x17, 0x21, 0xaf, 0xab, - 0x2c, 0x27, 0xa7, 0x6e, 0x9e, 0xd7, 0xd5, 0x70, 0x1c, 0x16, 0xb2, 0xe2, 0xb0, 0x18, 0x69, 0x38, - 0x34, 0x60, 0x46, 0x45, 0x0e, 0xfe, 0xe2, 0x57, 0x74, 0x03, 0x8b, 0x3d, 0x41, 0xda, 0x0c, 0x65, - 0x3c, 0xb8, 0x81, 0xc7, 0xda, 0x6a, 0xfc, 0x47, 0x8f, 0x28, 0x2a, 0x8f, 0xd2, 0x47, 0xa2, 0x1a, - 0x9e, 0xab, 0xcf, 0x7a, 0xb0, 0x6a, 0x88, 0x48, 0x59, 0xcc, 0x94, 0x52, 0xcc, 0xa8, 0x54, 0xca, - 0x40, 0x46, 0xfd, 0x52, 0xac, 0x39, 0xfc, 0xf9, 0x17, 0xd6, 0x38, 0x0a, 0x9e, 0x29, 0xc5, 0x83, - 0x38, 0x53, 0x44, 0x3b, 0x87, 0xba, 0xd3, 0x9f, 0xd3, 0x0a, 0x90, 0xce, 0x3d, 0xcf, 0xe7, 0xd0, - 0xbe, 0xcc, 0x9c, 0x51, 0x5e, 0x8d, 0x61, 0x64, 0xfa, 0x7d, 0x25, 0x88, 0xc1, 0x25, 0x7c, 0x48, - 0x3d, 0x99, 0xda, 0x77, 0x8b, 0x5c, 0x8d, 0x49, 0xd7, 0xa0, 0xa4, 0x0c, 0xdd, 0xbb, 0xa6, 0x8d, - 0x55, 0x9c, 0x25, 0xa3, 0x0f, 0x95, 0xae, 0xc3, 0x24, 0xbd, 0x5c, 0xf3, 0x2b, 0xdc, 0xa8, 0x5d, - 0xe8, 0x1e, 0xeb, 0x45, 0xac, 0x04, 0x99, 0xe1, 0x57, 0x67, 0x31, 0xbb, 0x3e, 0x25, 0x66, 0x12, - 0x91, 0x29, 0xce, 0xf0, 0x7f, 0x73, 0x30, 0x4f, 0x64, 0xd1, 0x6c, 0xe5, 0x90, 0x6f, 0x5f, 0xa4, - 0xf3, 0x70, 0x22, 0xd4, 0x47, 0xd2, 0x55, 0x62, 0x8f, 0x19, 0x79, 0x56, 0x6c, 0x12, 0xb5, 0xd5, - 0xb4, 0x96, 0x53, 0xf1, 0x80, 0x5a, 0x4e, 0x55, 0xa8, 0x84, 0x05, 0xf7, 0x5b, 0x12, 0x79, 0x32, - 0xb9, 0x61, 0x0e, 0x2c, 0x9c, 0xef, 0xbf, 0x12, 0xed, 0xac, 0x43, 0x2d, 0xb6, 0x87, 0x7b, 0x47, - 0x19, 0xe8, 0xfd, 0x3d, 0x5f, 0x55, 0xd5, 0x68, 0x2b, 0xf7, 0x6d, 0x02, 0x69, 0xab, 0xd2, 0x1a, - 0x4c, 0x6b, 0xbb, 0x5a, 0x67, 0xa0, 0x58, 0x96, 0x6e, 0x68, 0x5e, 0x35, 0x51, 0x8b, 0x73, 0x9c, - 0x1b, 0x3b, 0x37, 0x36, 0x29, 0x4c, 0x2e, 0x6b, 0xbb, 0x1a, 0xfb, 0x7f, 0xe4, 0x9b, 0xae, 0x01, - 0xf5, 0x24, 0x45, 0x70, 0x6d, 0xfd, 0x84, 0xb6, 0x4d, 0x48, 0x15, 0xf6, 0x55, 0xa8, 0x2a, 0xcc, - 0x63, 0x1d, 0x6a, 0xf1, 0xfb, 0x87, 0x38, 0xa4, 0xed, 0xda, 0x17, 0xc7, 0x61, 0xcc, 0xfe, 0x9c, - 0xc3, 0x5f, 0xe7, 0xa0, 0x44, 0x7a, 0xe1, 0xee, 0x2d, 0x45, 0x1b, 0x93, 0x2b, 0xb1, 0x9a, 0xc9, - 0x87, 0xaa, 0xcc, 0xab, 0x50, 0x74, 0x15, 0xcd, 0x61, 0xdf, 0x2f, 0xf5, 0xf8, 0x1b, 0x28, 0x8a, - 0xbd, 0xa5, 0x68, 0x8e, 0x4c, 0xd0, 0x61, 0x31, 0x4e, 0xc2, 0x09, 0xce, 0x23, 0xe7, 0xfc, 0x41, - 0x9e, 0x28, 0x57, 0x3c, 0xd2, 0x36, 0xe8, 0xed, 0xdb, 0x0b, 0x3b, 0xd5, 0x46, 0xb8, 0x7b, 0x0c, - 0xdf, 0x1b, 0x4e, 0x44, 0xef, 0x0d, 0xc7, 0xbf, 0xd7, 0xa0, 0xe6, 0x8e, 0xd1, 0x08, 0x57, 0xda, - 0x6f, 0x72, 0xa4, 0x81, 0x44, 0x7d, 0xf6, 0x08, 0xa9, 0x2e, 0x2c, 0xc9, 0x39, 0x78, 0x35, 0x8d, - 0x4d, 0x2e, 0xcf, 0x5f, 0x0b, 0xbc, 0x3c, 0xd6, 0x14, 0x17, 0x1d, 0xc0, 0xb7, 0xa2, 0xd0, 0x02, - 0xce, 0x8f, 0x79, 0x6b, 0x3d, 0x46, 0x5d, 0x1b, 0xf6, 0x9c, 0x89, 0x6c, 0xcf, 0x89, 0xb9, 0x71, - 0x0e, 0x56, 0x55, 0x53, 0x63, 0x5d, 0x6c, 0xbf, 0xa8, 0x8b, 0xe6, 0x90, 0x03, 0x7c, 0x1f, 0x96, - 0x12, 0xec, 0x7a, 0x00, 0x57, 0x34, 0x7f, 0xc9, 0x93, 0x40, 0xf1, 0xa8, 0x1f, 0x5c, 0x1c, 0xb4, - 0x60, 0x6a, 0x48, 0x88, 0x8d, 0xe0, 0x3c, 0x0c, 0x78, 0x64, 0x9c, 0x27, 0xce, 0xf0, 0x53, 0x23, - 0xa5, 0x9d, 0x65, 0x38, 0x97, 0xae, 0x4d, 0x1e, 0xae, 0x3f, 0xcd, 0x0b, 0x15, 0xa1, 0xb7, 0x40, - 0x5d, 0xd3, 0x0e, 0x31, 0xf3, 0xbc, 0x09, 0x33, 0x0a, 0xa6, 0xcf, 0xfb, 0xf9, 0x85, 0x8c, 0x16, - 0x7c, 0x99, 0xc2, 0x69, 0x13, 0x7f, 0x1d, 0xe6, 0xfd, 0xd5, 0x36, 0x1a, 0x98, 0xbb, 0x88, 0x14, - 0x37, 0xa9, 0xfd, 0x33, 0x8f, 0x80, 0x4c, 0xf0, 0x61, 0x6d, 0x9d, 0x21, 0x9e, 0x1d, 0xa7, 0x02, - 0x4f, 0x4d, 0xad, 0x87, 0xa7, 0xa1, 0xb0, 0xe9, 0x68, 0xd2, 0x87, 0x30, 0x1d, 0x78, 0xb2, 0x76, - 0x36, 0xa1, 0x49, 0x2e, 0x82, 0xaa, 0x17, 0x47, 0x00, 0xf1, 0x18, 0xfa, 0x10, 0xa6, 0x03, 0xef, - 0x9f, 0x92, 0x76, 0x10, 0x41, 0x89, 0x3b, 0xc4, 0x3d, 0x68, 0x92, 0xfa, 0x30, 0x1f, 0xe9, 0x9c, - 0xbe, 0x96, 0x40, 0x20, 0x0c, 0xac, 0x36, 0x47, 0x04, 0x8a, 0xf2, 0x04, 0xbe, 0xe6, 0x93, 0xe4, - 0x11, 0x41, 0x89, 0xf2, 0xc4, 0x7d, 0x4b, 0x4a, 0x26, 0x9c, 0x88, 0x3e, 0xce, 0x5a, 0x4e, 0xd2, - 0x48, 0x18, 0x59, 0xbd, 0x32, 0x2a, 0x92, 0x6f, 0x78, 0x1f, 0x16, 0x62, 0xe3, 0xe5, 0x62, 0xaa, - 0x6e, 0x82, 0xe0, 0xea, 0x1b, 0xfb, 0x00, 0x8b, 0xca, 0x0c, 0x1c, 0xa8, 0xe9, 0xee, 0x47, 0x41, - 0x19, 0xee, 0x17, 0x4a, 0xe1, 0x1f, 0x00, 0x08, 0x6f, 0x2c, 0xce, 0x24, 0x2c, 0xf5, 0x21, 0xd5, - 0xf3, 0x99, 0x10, 0x91, 0xfb, 0xc0, 0x1b, 0x99, 0xb3, 0x99, 0x4b, 0x77, 0x5a, 0x89, 0xdc, 0xc7, - 0xbd, 0x15, 0xc1, 0xae, 0x1d, 0x79, 0x27, 0x92, 0xe4, 0xda, 0x61, 0x60, 0xa2, 0x6b, 0x27, 0xbd, - 0xed, 0xc0, 0xba, 0x12, 0xde, 0x75, 0x24, 0xe9, 0xca, 0x87, 0x24, 0xea, 0x2a, 0xe6, 0xb5, 0x03, - 0x4f, 0x03, 0x19, 0x96, 0x16, 0x41, 0x19, 0x69, 0x20, 0xb4, 0x83, 0x0d, 0x52, 0x4c, 0x3b, 0x3f, - 0x91, 0xc5, 0x08, 0xb4, 0xfa, 0xfa, 0xc8, 0xd0, 0x68, 0x32, 0xc8, 0x90, 0x4a, 0x04, 0x65, 0x24, - 0x83, 0xd0, 0x0e, 0xc1, 0x64, 0xc0, 0xb6, 0x19, 0x21, 0x19, 0xb0, 0xbd, 0xae, 0x8c, 0x8a, 0x8c, - 0x66, 0x53, 0xa1, 0x87, 0x97, 0x9e, 0x4d, 0x7d, 0x60, 0x46, 0x36, 0x8d, 0x76, 0x0d, 0xa5, 0x21, - 0x9c, 0x8c, 0xab, 0x8d, 0x2e, 0x8c, 0x40, 0x87, 0x61, 0xab, 0xad, 0xd1, 0xb1, 0x7c, 0xdb, 0x4f, - 0x72, 0xf0, 0x4a, 0xf2, 0x17, 0xca, 0x95, 0x54, 0x47, 0x88, 0xe3, 0xe1, 0xfa, 0x7e, 0x57, 0x88, - 0xb9, 0x37, 0xf6, 0xd3, 0x22, 0xcd, 0xf5, 0xc3, 0xe0, 0xc4, 0xdc, 0x9b, 0x5a, 0xdc, 0x7e, 0x9a, - 0x83, 0xc5, 0xb4, 0xfa, 0xb4, 0x95, 0x41, 0x34, 0x4e, 0x0f, 0xab, 0xfb, 0x5f, 0xc3, 0xf9, 0xf9, - 0x01, 0x94, 0xc5, 0x87, 0x32, 0x8d, 0xd4, 0x2c, 0x4f, 0x30, 0xd5, 0x0b, 0xd9, 0x18, 0x91, 0xbc, - 0xf8, 0x58, 0xa5, 0x91, 0x9a, 0x5a, 0xd2, 0xc9, 0xc7, 0x3c, 0x3f, 0xc1, 0x71, 0x1a, 0x7d, 0x7a, - 0xb2, 0x9c, 0xea, 0x9a, 0x02, 0x32, 0x31, 0x4e, 0x13, 0xdf, 0x61, 0xf8, 0x71, 0x2a, 0xdc, 0xef, - 0xbf, 0x96, 0x4d, 0x85, 0x00, 0x33, 0xe2, 0x34, 0x7a, 0xcb, 0x8e, 0x8f, 0x06, 0xe1, 0x86, 0x3d, - 0xe9, 0x68, 0xf0, 0x21, 0x89, 0x47, 0x43, 0xf4, 0xf6, 0x1b, 0x5b, 0x46, 0xec, 0x9b, 0x37, 0x52, - 0xd3, 0x63, 0xba, 0x65, 0x62, 0x1a, 0xd7, 0xf4, 0x0c, 0x0d, 0x3d, 0x56, 0x49, 0x3e, 0x43, 0x83, - 0xc0, 0x94, 0x33, 0x34, 0xfe, 0x29, 0x88, 0xf4, 0x3d, 0x28, 0xf9, 0x57, 0xb2, 0xf5, 0x84, 0xd5, - 0x1c, 0x51, 0x5d, 0xce, 0x42, 0x44, 0x0f, 0x50, 0x46, 0x3b, 0xfd, 0x00, 0x65, 0xe4, 0x2f, 0x8e, - 0x00, 0x12, 0x77, 0x08, 0x74, 0xf7, 0xcf, 0xa6, 0x3a, 0x09, 0x05, 0x55, 0x2f, 0x8e, 0x00, 0xe2, - 0x3b, 0xf4, 0x60, 0x26, 0xd8, 0xa3, 0x7c, 0x35, 0xd1, 0x8e, 0x02, 0xaa, 0x7a, 0x69, 0x14, 0x14, - 0xdf, 0xe4, 0xc7, 0xf0, 0x52, 0x7c, 0x77, 0xfb, 0x52, 0x62, 0xb5, 0x12, 0x83, 0xae, 0x5e, 0xdd, - 0x0f, 0x5a, 0x3c, 0xcf, 0xe2, 0xba, 0xc5, 0x17, 0x52, 0xcf, 0x87, 0xe0, 0xc6, 0xad, 0xd1, 0xb1, - 0xe2, 0xb6, 0x71, 0x2d, 0xe0, 0x0b, 0xa9, 0x15, 0xe0, 0x68, 0xdb, 0xa6, 0xb4, 0x76, 0xa5, 0xf7, - 0x60, 0x92, 0xb5, 0x75, 0x4f, 0x27, 0x56, 0xb5, 0x78, 0xba, 0xfa, 0xf5, 0xd4, 0x69, 0x8f, 0xde, - 0x7a, 0xfb, 0xd1, 0xd3, 0x5a, 0xee, 0xf1, 0xd3, 0x5a, 0xee, 0xcb, 0xa7, 0xb5, 0xdc, 0x83, 0x67, - 0xb5, 0x63, 0x8f, 0x9f, 0xd5, 0x8e, 0xfd, 0xed, 0x59, 0xed, 0xd8, 0x07, 0x4d, 0x4d, 0x77, 0xef, - 0x0e, 0xbb, 0x2b, 0x3d, 0x73, 0xd0, 0xec, 0x1a, 0xdd, 0xcb, 0xe4, 0x4a, 0xab, 0x29, 0xfc, 0x4d, - 0xd6, 0xfd, 0xe0, 0x5f, 0x65, 0x75, 0x27, 0xc9, 0xc3, 0x80, 0x37, 0xfe, 0x17, 0x00, 0x00, 0xff, - 0xff, 0x54, 0x25, 0x5a, 0xa8, 0xfd, 0x36, 0x00, 0x00, + 0xf9, 0xf7, 0x92, 0x94, 0x64, 0x7e, 0xd4, 0xc3, 0x5e, 0x2b, 0x31, 0x43, 0xfd, 0x4d, 0xd1, 0x74, + 0xe2, 0xc8, 0x2f, 0xd1, 0x61, 0xfc, 0x77, 0x5d, 0xa1, 0x28, 0x2a, 0x29, 0x8d, 0x4b, 0x24, 0x8a, + 0x95, 0x95, 0xac, 0x02, 0x29, 0x0a, 0x66, 0xc9, 0x1d, 0xaf, 0xb7, 0x21, 0x77, 0xb7, 0xbb, 0x4b, + 0xd9, 0x4a, 0x81, 0x1e, 0xda, 0x02, 0x39, 0x05, 0x30, 0x90, 0x1e, 0x7a, 0x28, 0x8a, 0xa2, 0x40, + 0x81, 0x9e, 0x8a, 0xa2, 0xc8, 0xb9, 0xe8, 0x25, 0x80, 0x51, 0xf4, 0x60, 0xe4, 0x50, 0x14, 0x3d, + 0xb8, 0x81, 0x5d, 0xa0, 0xe8, 0xb5, 0x97, 0x5e, 0x8b, 0x79, 0xec, 0xec, 0x70, 0x9f, 0x14, 0x2d, + 0xc5, 0x02, 0x7a, 0x92, 0x76, 0xe6, 0x37, 0x33, 0xdf, 0x7b, 0xbe, 0xf9, 0x66, 0x08, 0x0b, 0xba, + 0x83, 0x90, 0x79, 0xc7, 0x40, 0x3d, 0xad, 0xe1, 0x7a, 0x96, 0xa3, 0xea, 0xa8, 0xe1, 0xdd, 0x5f, + 0xb6, 0x1d, 0xcb, 0xb3, 0x64, 0x39, 0xe8, 0x5c, 0x66, 0x9d, 0x95, 0xd3, 0x5d, 0xcb, 0xed, 0x5b, + 0x6e, 0xa3, 0xef, 0xea, 0x8d, 0xdd, 0xd7, 0xf0, 0x1f, 0x0a, 0xae, 0xbc, 0x44, 0x3b, 0xda, 0xe4, + 0xab, 0x41, 0x3f, 0x58, 0xd7, 0xbc, 0x6e, 0xe9, 0x16, 0x6d, 0xc7, 0xff, 0xb1, 0xd6, 0x45, 0xdd, + 0xb2, 0xf4, 0x1e, 0x6a, 0x90, 0xaf, 0xce, 0xe0, 0x4e, 0xc3, 0x33, 0xfa, 0xc8, 0xf5, 0xd4, 0xbe, + 0xcd, 0x00, 0x35, 0x81, 0xb6, 0xae, 0xd5, 0xef, 0x5b, 0x66, 0x43, 0xb5, 0x6d, 0xc7, 0xda, 0x55, + 0x7b, 0x7c, 0x8a, 0x08, 0xe2, 0x9e, 0xa3, 0xda, 0x36, 0x72, 0x18, 0xa0, 0x2e, 0x00, 0x6c, 0xe4, + 0xf4, 0x0d, 0xd7, 0x35, 0x2c, 0x93, 0x61, 0x63, 0x26, 0xf1, 0x45, 0x90, 0x09, 0xb0, 0x55, 0x47, + 0xed, 0xfb, 0xfc, 0x55, 0xe3, 0x84, 0xb8, 0x67, 0x23, 0xd6, 0x5f, 0xff, 0x43, 0x1e, 0xe6, 0x36, + 0x5c, 0x7d, 0xdd, 0x41, 0xaa, 0x87, 0xd6, 0x06, 0xdd, 0x0f, 0x90, 0x27, 0x37, 0x61, 0xaa, 0x8b, + 0xbf, 0x2d, 0xa7, 0x2c, 0xd5, 0xa4, 0xa5, 0xe2, 0x5a, 0xf9, 0xf3, 0x4f, 0xaf, 0xcc, 0x33, 0xb1, + 0xad, 0x6a, 0x9a, 0x83, 0x5c, 0x77, 0xcb, 0x73, 0x0c, 0x53, 0x57, 0x7c, 0xa0, 0xbc, 0x08, 0xa5, + 0x0e, 0x19, 0xdd, 0x36, 0xd5, 0x3e, 0x2a, 0xe7, 0xf0, 0x38, 0x05, 0x68, 0xd3, 0x3b, 0x6a, 0x1f, + 0xc9, 0x6b, 0x00, 0xbb, 0x86, 0x6b, 0x74, 0x8c, 0x9e, 0xe1, 0xed, 0x95, 0xf3, 0x35, 0x69, 0x69, + 0xb6, 0x59, 0x5f, 0x8e, 0x6a, 0x71, 0x79, 0x87, 0xa3, 0xb6, 0xf7, 0x6c, 0xa4, 0x08, 0xa3, 0xe4, + 0x55, 0x98, 0xb3, 0xd5, 0xbd, 0x3e, 0x32, 0xbd, 0xb6, 0x4a, 0xc9, 0x28, 0x17, 0x32, 0x08, 0x9c, + 0x65, 0x03, 0x58, 0xab, 0xfc, 0x26, 0xc8, 0xb6, 0x63, 0xf4, 0x55, 0x67, 0xaf, 0xed, 0xda, 0x7c, + 0x96, 0x89, 0x8c, 0x59, 0x4e, 0xb0, 0x31, 0x5b, 0xb6, 0x3f, 0xcf, 0x5b, 0x70, 0x4a, 0x9c, 0x87, + 0xe9, 0xbe, 0x3c, 0x59, 0x93, 0x96, 0x4a, 0xcd, 0x05, 0x91, 0x2f, 0xa6, 0xaf, 0x55, 0x06, 0x51, + 0x4e, 0x06, 0x73, 0xb1, 0x26, 0xf9, 0x32, 0xc8, 0xdd, 0xbb, 0xaa, 0xa3, 0x23, 0xad, 0xed, 0x20, + 0x55, 0x6b, 0x7f, 0x7f, 0x60, 0x79, 0x6a, 0x79, 0xaa, 0x26, 0x2d, 0x15, 0x94, 0x13, 0xac, 0x47, + 0x41, 0xaa, 0xf6, 0x2e, 0x6e, 0x5f, 0x99, 0xfe, 0xd1, 0x3f, 0x7f, 0x77, 0xd1, 0x17, 0x7c, 0x7d, + 0x0b, 0x4e, 0x87, 0xf4, 0xa7, 0x20, 0xd7, 0xb6, 0x4c, 0x17, 0xc9, 0x37, 0xa0, 0xc8, 0x74, 0x62, + 0x68, 0x4c, 0x93, 0x0b, 0x0f, 0x1f, 0x2f, 0x1e, 0xfb, 0xdb, 0xe3, 0xc5, 0xc2, 0x6d, 0xc3, 0xf4, + 0x3e, 0xff, 0xf4, 0x4a, 0x89, 0xb1, 0x8b, 0x3f, 0x95, 0xe3, 0x14, 0xdd, 0xd2, 0xea, 0xf7, 0x88, + 0x51, 0xbc, 0x81, 0x7a, 0x88, 0x1b, 0xc5, 0x35, 0x38, 0x6e, 0xd9, 0xc8, 0x19, 0xc9, 0x2a, 0x38, + 0x32, 0xd3, 0x2c, 0x56, 0x66, 0x30, 0x33, 0x1c, 0x5f, 0x7f, 0x89, 0x70, 0x23, 0x2e, 0xec, 0x73, + 0x53, 0xff, 0xa9, 0x04, 0xf3, 0xb8, 0xcf, 0x70, 0xbb, 0x96, 0xe9, 0x19, 0xe6, 0xe0, 0x70, 0x29, + 0x93, 0x5f, 0x84, 0x49, 0x07, 0xa9, 0xae, 0x65, 0x12, 0x63, 0x2d, 0x2a, 0xec, 0x2b, 0x4c, 0x71, + 0x15, 0xfe, 0x2f, 0x8e, 0x2a, 0x4e, 0xf6, 0x3f, 0x44, 0x07, 0xbb, 0xd5, 0xf9, 0x1e, 0xea, 0x1e, + 0x92, 0x83, 0x2d, 0x42, 0xc9, 0x22, 0xd3, 0x53, 0x00, 0x25, 0x1a, 0x68, 0x13, 0x01, 0x9c, 0x85, + 0x69, 0x5b, 0xdd, 0xeb, 0x59, 0xaa, 0xd6, 0x76, 0x8d, 0x0f, 0x11, 0x71, 0x9d, 0x82, 0x52, 0x62, + 0x6d, 0x5b, 0xc6, 0x87, 0x61, 0x27, 0x9d, 0x18, 0xcb, 0x49, 0xcf, 0xc2, 0x34, 0x16, 0x05, 0x76, + 0x52, 0x1c, 0x68, 0x88, 0x4b, 0x14, 0x95, 0x12, 0x6b, 0xc3, 0xf0, 0x24, 0xe7, 0x99, 0x1a, 0xcb, + 0x79, 0x2e, 0xc0, 0x09, 0x74, 0xdf, 0xc6, 0x7c, 0x77, 0xef, 0xa2, 0xee, 0x07, 0xee, 0xa0, 0xef, + 0x96, 0x8f, 0xd7, 0xf2, 0x4b, 0xd3, 0xca, 0x1c, 0x6d, 0x5f, 0xf7, 0x9b, 0xe5, 0xb7, 0x60, 0xce, + 0x41, 0xda, 0xc0, 0xd4, 0x54, 0xb3, 0xbb, 0x47, 0xa9, 0x2b, 0x26, 0xf3, 0xa8, 0x70, 0x28, 0xe1, + 0x71, 0xd6, 0x19, 0xfa, 0x4e, 0x71, 0x43, 0xaa, 0x65, 0xd1, 0x0d, 0x99, 0x62, 0x46, 0x74, 0x43, + 0x8a, 0x6e, 0x69, 0xf5, 0x4f, 0x72, 0x30, 0xb3, 0xe1, 0xea, 0x5b, 0x48, 0xed, 0x31, 0xcb, 0x39, + 0x24, 0x5b, 0xcf, 0xb4, 0x9d, 0xff, 0x87, 0xd3, 0x7a, 0xcf, 0xea, 0xa8, 0xbd, 0xf6, 0xae, 0xe1, + 0x78, 0x03, 0xb5, 0xd7, 0xd6, 0x1d, 0x6b, 0x60, 0x63, 0x8e, 0xb0, 0x19, 0xcd, 0x28, 0xf3, 0xb4, + 0x7b, 0x87, 0xf6, 0xde, 0xc4, 0x9d, 0x2d, 0x4d, 0x7e, 0x03, 0x16, 0x5d, 0xd4, 0xb5, 0x4c, 0x8d, + 0xa9, 0xba, 0xd3, 0x73, 0xdb, 0xaa, 0xae, 0xb7, 0x5d, 0x43, 0x37, 0x55, 0x6f, 0xe0, 0x20, 0x1a, + 0x7a, 0xa7, 0x95, 0x05, 0x0e, 0xdb, 0xb2, 0xd7, 0x7a, 0xee, 0xaa, 0xae, 0x6f, 0x71, 0x48, 0xd8, + 0xe3, 0x4e, 0xc3, 0x0b, 0x43, 0x42, 0xe1, 0xae, 0xf6, 0xc7, 0x1c, 0x71, 0xb5, 0xa0, 0x67, 0xa7, + 0xf9, 0x3f, 0x29, 0xb0, 0x58, 0x97, 0x98, 0x8c, 0x75, 0x89, 0xf8, 0xf8, 0x2b, 0x4a, 0x90, 0x4b, + 0xf7, 0xe7, 0x12, 0x9c, 0xda, 0x70, 0x75, 0x05, 0xe1, 0xf6, 0xe7, 0x6f, 0x92, 0x61, 0xca, 0xcf, + 0xc0, 0x42, 0x0c, 0x75, 0x9c, 0xfa, 0xdf, 0x52, 0x57, 0x5a, 0xb7, 0xec, 0x3d, 0x46, 0x77, 0x25, + 0x4c, 0xb7, 0x40, 0xdd, 0x79, 0x98, 0x73, 0x9d, 0x6e, 0x3b, 0x4a, 0xe1, 0x8c, 0xeb, 0x74, 0xd7, + 0x02, 0x22, 0xcf, 0xc3, 0x9c, 0xe6, 0x7a, 0x43, 0x38, 0x4a, 0xe8, 0x8c, 0xe6, 0x7a, 0xc3, 0x38, + 0x3c, 0x9f, 0xc8, 0x50, 0x81, 0xcf, 0x77, 0x2b, 0xb0, 0x1a, 0x36, 0x9f, 0x88, 0x9b, 0xe0, 0xf3, + 0x09, 0x38, 0x05, 0x4e, 0x63, 0xdc, 0x98, 0x19, 0xc8, 0xbc, 0xe6, 0x7a, 0x9b, 0xe1, 0x38, 0x1a, + 0x96, 0xe7, 0xbb, 0xc4, 0xcb, 0x02, 0x79, 0x1d, 0x40, 0x38, 0xfb, 0x99, 0x24, 0xa4, 0x15, 0x47, + 0xcb, 0x7a, 0xc4, 0xbc, 0x23, 0x64, 0x39, 0x8f, 0x22, 0x79, 0xc7, 0xe1, 0x92, 0xbe, 0x02, 0xc0, + 0xe5, 0xeb, 0x96, 0xf3, 0xb5, 0x7c, 0x96, 0x80, 0x8b, 0xbe, 0x80, 0x5d, 0x21, 0x67, 0x29, 0xec, + 0x2b, 0x67, 0x09, 0xb1, 0xfc, 0x91, 0x04, 0xb3, 0x7c, 0x37, 0x23, 0xa1, 0x69, 0xac, 0x94, 0xe5, + 0x0c, 0x00, 0x0d, 0x7a, 0x02, 0xa7, 0x45, 0xd2, 0x42, 0x18, 0x9d, 0x87, 0x09, 0x74, 0xdf, 0x73, + 0x54, 0xa6, 0x1d, 0xfa, 0x11, 0xda, 0x56, 0x37, 0xe1, 0xc5, 0x61, 0x42, 0xb8, 0x19, 0x5e, 0x87, + 0xe3, 0x3c, 0xa2, 0x8e, 0x60, 0x85, 0x53, 0x3a, 0x8d, 0xb0, 0x75, 0x8f, 0xb0, 0x46, 0x35, 0x4d, + 0x59, 0x1b, 0x4f, 0x8f, 0xe9, 0xcc, 0x85, 0x25, 0x5e, 0x26, 0x7c, 0x08, 0xab, 0x72, 0x59, 0x7f, + 0x96, 0x23, 0xe6, 0x75, 0xdb, 0xd6, 0x7c, 0x16, 0x37, 0x50, 0xbf, 0x83, 0x9c, 0x31, 0xc9, 0xfa, + 0x2a, 0x94, 0x28, 0x59, 0xd6, 0x3d, 0x13, 0x39, 0x94, 0xae, 0x94, 0x81, 0x94, 0x87, 0x5b, 0x18, + 0x1b, 0xe2, 0x28, 0x1f, 0x56, 0xd7, 0xb7, 0x60, 0xb6, 0x4f, 0x28, 0x73, 0xdb, 0x9e, 0x85, 0x4f, + 0x4e, 0xe5, 0x42, 0x2d, 0xbf, 0x54, 0x8a, 0xcf, 0x9d, 0x36, 0x5c, 0x5d, 0xe0, 0x45, 0x99, 0x66, + 0x23, 0xb7, 0xad, 0x55, 0x0d, 0x6f, 0x72, 0x27, 0x85, 0x99, 0x34, 0x22, 0x94, 0xf2, 0x04, 0x31, + 0xf4, 0x64, 0x4a, 0xe7, 0xf8, 0x14, 0x54, 0x8a, 0xf1, 0x36, 0x1d, 0x11, 0x23, 0x97, 0xf3, 0xbf, + 0xfd, 0xed, 0xcb, 0x44, 0xf7, 0x8e, 0xb2, 0x98, 0xbf, 0x06, 0x53, 0x8c, 0xd3, 0x7d, 0xc8, 0xd7, + 0x1f, 0x92, 0xb4, 0x29, 0x0e, 0xf3, 0xcc, 0x65, 0xf2, 0x31, 0xf5, 0x73, 0x51, 0x1c, 0x57, 0x61, + 0x92, 0xce, 0x95, 0x29, 0x0c, 0x86, 0x93, 0x5b, 0x80, 0x93, 0x0a, 0xc3, 0x51, 0x3d, 0xc3, 0x32, + 0xdb, 0x9e, 0xc1, 0xbc, 0xa1, 0xd4, 0xac, 0x2c, 0xd3, 0x2a, 0xca, 0xb2, 0x5f, 0x45, 0x59, 0xde, + 0xf6, 0xab, 0x28, 0x6b, 0x85, 0x07, 0x7f, 0x5f, 0x94, 0x94, 0xd9, 0x60, 0x20, 0xee, 0xaa, 0xff, + 0x89, 0xea, 0x48, 0x50, 0xe2, 0x37, 0x71, 0x4c, 0x38, 0x72, 0x3a, 0xe2, 0x91, 0xab, 0x20, 0x46, + 0xae, 0x58, 0xd9, 0x87, 0x79, 0xe1, 0xb2, 0xff, 0x8d, 0x44, 0x12, 0x92, 0xb7, 0x91, 0xba, 0xcb, + 0xe2, 0xd0, 0xfe, 0x45, 0x7f, 0x68, 0x1c, 0xae, 0x94, 0x30, 0x2f, 0x6c, 0x19, 0x96, 0x70, 0x07, + 0x94, 0x06, 0x5b, 0x63, 0x4e, 0xd0, 0x17, 0x4d, 0x77, 0x5a, 0xe6, 0x1d, 0xeb, 0xb0, 0x76, 0xc6, + 0xb7, 0x63, 0xcb, 0x24, 0x79, 0x62, 0x6c, 0xd5, 0x98, 0x84, 0xe7, 0x76, 0xcb, 0xf4, 0xae, 0x5f, + 0xdb, 0x51, 0x7b, 0x03, 0x14, 0x2d, 0xa3, 0x1c, 0x44, 0x31, 0xe9, 0x00, 0x8e, 0xcb, 0x69, 0x56, + 0x13, 0x48, 0x94, 0x4b, 0xfc, 0x17, 0x12, 0x4d, 0xcb, 0x54, 0xb3, 0x8b, 0x7a, 0x43, 0x35, 0x85, + 0x23, 0x92, 0x48, 0x2d, 0xc2, 0x99, 0x58, 0xfa, 0xc4, 0x43, 0xda, 0xf4, 0x86, 0xab, 0x6f, 0x0e, + 0xbc, 0x4d, 0xab, 0x67, 0x74, 0xf7, 0xc6, 0x24, 0xfc, 0xeb, 0x50, 0xb4, 0x1d, 0xc3, 0xec, 0x1a, + 0xb6, 0xda, 0x63, 0xf1, 0xa6, 0x26, 0x4a, 0x3e, 0xa8, 0xa8, 0x2e, 0x6f, 0xfa, 0x38, 0x25, 0x18, + 0x82, 0xb3, 0x7f, 0x07, 0xb9, 0xd6, 0xc0, 0xe9, 0xfa, 0x4c, 0xf1, 0x6f, 0xf9, 0x1b, 0x00, 0xae, + 0xa7, 0x7a, 0x08, 0xab, 0xda, 0x8f, 0xc2, 0x49, 0x93, 0x6f, 0xf9, 0x40, 0x45, 0x18, 0x23, 0x6f, + 0x44, 0x63, 0xe2, 0x54, 0x66, 0x4c, 0x3c, 0xfe, 0xf0, 0xf1, 0xa2, 0x14, 0x17, 0x17, 0xc3, 0x32, + 0xde, 0x24, 0x19, 0x03, 0x97, 0xa0, 0x98, 0x99, 0xdb, 0xa4, 0xc5, 0x3f, 0x65, 0x66, 0x65, 0xe6, + 0x14, 0xdd, 0xd2, 0xea, 0xbf, 0x17, 0x33, 0xf3, 0xa3, 0xaa, 0x97, 0xb0, 0x18, 0xb6, 0x84, 0x9c, + 0xfd, 0xc0, 0x24, 0xf1, 0x2f, 0x2a, 0x89, 0x0d, 0xc3, 0x71, 0x2c, 0xe7, 0x99, 0x5c, 0xeb, 0x12, + 0xe4, 0x0c, 0x8d, 0xc5, 0xe4, 0xd4, 0xc5, 0x73, 0x86, 0x16, 0xf6, 0xc3, 0x7c, 0x96, 0x1f, 0x16, + 0x22, 0x05, 0x87, 0x3a, 0xcc, 0x68, 0xc8, 0xc5, 0x27, 0x7e, 0xd5, 0x30, 0x31, 0xdb, 0x13, 0xa4, + 0xcc, 0x50, 0xc2, 0x8d, 0xeb, 0xb8, 0xad, 0xa5, 0xc5, 0x1f, 0x7a, 0x44, 0x56, 0xb9, 0x97, 0x3e, + 0x14, 0xc5, 0xf0, 0x4c, 0x75, 0xd6, 0x83, 0x15, 0x43, 0x84, 0xcb, 0x42, 0x26, 0x97, 0x62, 0x44, + 0xa5, 0x5c, 0x0e, 0x45, 0xd4, 0x2f, 0xc4, 0x9c, 0x23, 0xe8, 0x7f, 0x6e, 0x85, 0xa3, 0xe1, 0x3d, + 0xa5, 0x70, 0x10, 0x7b, 0x8a, 0xa8, 0xe7, 0x50, 0x75, 0xfa, 0x33, 0x9a, 0x01, 0xd2, 0xbe, 0x67, + 0x39, 0x0e, 0xed, 0x4b, 0xcd, 0x19, 0xe9, 0xd5, 0x18, 0x4a, 0xa6, 0xe7, 0x2b, 0x81, 0x0d, 0xce, + 0xe1, 0x27, 0xd4, 0x92, 0xa9, 0x7e, 0x37, 0xc9, 0xd5, 0x98, 0x7c, 0x1d, 0x8a, 0xea, 0xc0, 0xbb, + 0x6b, 0x39, 0x58, 0xc4, 0x59, 0x3c, 0x06, 0x50, 0xf9, 0x06, 0x4c, 0xd2, 0xcb, 0xb5, 0x20, 0xc3, + 0x8d, 0xea, 0x85, 0xae, 0xb1, 0x56, 0xc0, 0x42, 0x50, 0x18, 0x7e, 0x65, 0x16, 0x93, 0x1b, 0xcc, + 0xc4, 0x54, 0x22, 0x12, 0xc5, 0x09, 0xfe, 0x8f, 0x04, 0x27, 0x08, 0x2f, 0xba, 0xa3, 0x1e, 0xf2, + 0xed, 0x8b, 0x7c, 0x01, 0x4e, 0x86, 0xea, 0x48, 0x86, 0x46, 0xf4, 0x31, 0xa3, 0xcc, 0x8a, 0x45, + 0xa2, 0x96, 0x96, 0x56, 0x72, 0x2a, 0x1c, 0x50, 0xc9, 0xa9, 0x02, 0xe5, 0x30, 0xe3, 0x41, 0x49, + 0x22, 0x47, 0x3a, 0xd7, 0xad, 0xbe, 0x8d, 0xe3, 0xfd, 0x97, 0x22, 0x9d, 0x35, 0xa8, 0xc6, 0xd6, + 0x70, 0xef, 0xa8, 0x7d, 0xa3, 0xb7, 0x17, 0x88, 0xaa, 0x12, 0x2d, 0xe5, 0xbe, 0x49, 0x20, 0x2d, + 0x4d, 0x5e, 0x85, 0x69, 0x7d, 0x57, 0x6f, 0xf7, 0x55, 0xdb, 0x36, 0x4c, 0xdd, 0xcf, 0x26, 0xaa, + 0x71, 0x86, 0x73, 0x73, 0xe7, 0xe6, 0x06, 0x85, 0x29, 0x25, 0x7d, 0x57, 0x67, 0xff, 0x47, 0xce, + 0x74, 0x75, 0xa8, 0x25, 0x09, 0x82, 0x4b, 0xeb, 0x87, 0xb4, 0x6c, 0x42, 0xb2, 0xb0, 0x2f, 0x43, + 0x54, 0x61, 0x1a, 0x6b, 0x50, 0x8d, 0x5f, 0x3f, 0x44, 0x21, 0x2d, 0xd7, 0x3e, 0x3f, 0x0a, 0x63, + 0xd6, 0xe7, 0x14, 0xfe, 0x4a, 0x82, 0x22, 0xa9, 0x85, 0x7b, 0xdb, 0xaa, 0x3e, 0x26, 0x55, 0x62, + 0x36, 0x93, 0x0b, 0x65, 0x99, 0xd7, 0xa0, 0xe0, 0xa9, 0xba, 0xcb, 0xce, 0x2f, 0xb5, 0xf8, 0x1b, + 0x28, 0x8a, 0xdd, 0x56, 0x75, 0x57, 0x21, 0xe8, 0x30, 0x1b, 0xa7, 0xe0, 0x24, 0xa7, 0x91, 0x53, + 0xfe, 0x20, 0x47, 0x84, 0x2b, 0x6e, 0x69, 0xeb, 0xf4, 0xf6, 0xed, 0xb9, 0xed, 0x6a, 0x23, 0xdc, + 0x3d, 0x86, 0xef, 0x0d, 0x27, 0xa2, 0xf7, 0x86, 0xe3, 0xdf, 0x6b, 0x50, 0x75, 0xc7, 0x48, 0x84, + 0x0b, 0xed, 0xd7, 0x12, 0x29, 0x20, 0x51, 0x9b, 0x3d, 0x42, 0xa2, 0x0b, 0x73, 0x72, 0x1e, 0x5e, + 0x4e, 0x23, 0x93, 0xf3, 0xf3, 0x97, 0x3c, 0x4f, 0x8f, 0x75, 0xd5, 0x43, 0x07, 0x70, 0x56, 0x14, + 0x4a, 0xc0, 0xb9, 0x31, 0x6f, 0xad, 0xc7, 0xc8, 0x6b, 0xc3, 0x96, 0x33, 0x91, 0x6d, 0x39, 0x31, + 0x37, 0xce, 0xc3, 0x59, 0xd5, 0xd4, 0x58, 0x17, 0xdb, 0xcf, 0xeb, 0xa2, 0x39, 0x64, 0x00, 0xdf, + 0x81, 0xc5, 0x04, 0xbd, 0x1e, 0xc0, 0x15, 0xcd, 0x9f, 0x73, 0xc4, 0x51, 0xfc, 0xd9, 0x0f, 0xce, + 0x0f, 0x9a, 0x30, 0x35, 0x20, 0x93, 0x8d, 0x60, 0x3c, 0x0c, 0x78, 0x64, 0x8c, 0x27, 0x4e, 0xf1, + 0x53, 0x23, 0x85, 0x9d, 0x25, 0x38, 0x9f, 0x2e, 0x4d, 0xee, 0xae, 0x3f, 0x96, 0xc8, 0x31, 0x65, + 0xdb, 0xd2, 0xf5, 0x1e, 0xda, 0xda, 0x5c, 0x75, 0xfd, 0x41, 0xda, 0xaa, 0x7e, 0x78, 0xd1, 0x27, + 0x4c, 0xef, 0x2b, 0x70, 0x2e, 0x85, 0x08, 0x9f, 0xd8, 0xe6, 0x2f, 0xcf, 0x40, 0x7e, 0xc3, 0xd5, + 0xe5, 0xf7, 0x61, 0x7a, 0xe8, 0xe1, 0xd8, 0xb9, 0x84, 0x52, 0xb5, 0x08, 0xaa, 0x5c, 0x1a, 0x01, + 0xc4, 0x2d, 0xf9, 0x7d, 0x98, 0x1e, 0x7a, 0x85, 0x94, 0xb4, 0x82, 0x08, 0x4a, 0x5c, 0x21, 0xee, + 0x59, 0x91, 0xdc, 0x83, 0x13, 0x91, 0xfa, 0xe5, 0xab, 0x09, 0x13, 0x84, 0x81, 0x95, 0xc6, 0x88, + 0x40, 0x91, 0x9f, 0xa1, 0x33, 0x75, 0x12, 0x3f, 0x22, 0x28, 0x91, 0x9f, 0xb8, 0x13, 0x9d, 0x6c, + 0xc1, 0xc9, 0xe8, 0x13, 0xa9, 0xa5, 0x24, 0x89, 0x84, 0x91, 0x95, 0xab, 0xa3, 0x22, 0xf9, 0x82, + 0x3f, 0x91, 0xa0, 0x9c, 0x68, 0xb6, 0x49, 0x02, 0x4a, 0x1a, 0x50, 0xf9, 0xca, 0x3e, 0x07, 0x88, + 0x92, 0x1d, 0xda, 0xe3, 0xd2, 0x6d, 0x91, 0x82, 0x32, 0x6c, 0x31, 0x14, 0x55, 0xdf, 0x03, 0x10, + 0x9e, 0x3d, 0x9c, 0x4d, 0x18, 0x1a, 0x40, 0x2a, 0x17, 0x32, 0x21, 0x22, 0xf5, 0x43, 0xcf, 0x56, + 0xce, 0x65, 0x0e, 0xdd, 0x69, 0x26, 0x52, 0x1f, 0xf7, 0x7c, 0x03, 0xdb, 0x79, 0xe4, 0xe9, 0x46, + 0x92, 0x9d, 0x87, 0x81, 0x89, 0x76, 0x9e, 0xf4, 0xdc, 0x02, 0xcb, 0x4a, 0x78, 0x6a, 0x91, 0x24, + 0xab, 0x00, 0x92, 0x28, 0xab, 0x98, 0x07, 0x08, 0x3c, 0x26, 0x64, 0x68, 0x5a, 0x04, 0x65, 0xc4, + 0x84, 0xd0, 0x0a, 0x0e, 0xc8, 0x31, 0x15, 0xf6, 0x44, 0x12, 0x23, 0xd0, 0xca, 0x6b, 0x23, 0x43, + 0xa3, 0x91, 0x21, 0x83, 0x2b, 0x11, 0x94, 0x11, 0x19, 0x42, 0x2b, 0x0c, 0x47, 0x06, 0xb6, 0xcc, + 0x08, 0x91, 0x81, 0xad, 0x75, 0x75, 0x54, 0x64, 0x34, 0xb4, 0x0a, 0x65, 0xb5, 0xf4, 0xd0, 0x1a, + 0x00, 0x33, 0x42, 0x6b, 0xb4, 0x90, 0x27, 0x0f, 0xe0, 0x54, 0x5c, 0xba, 0x72, 0x71, 0x84, 0x79, + 0x18, 0xb6, 0xd2, 0x1c, 0x1d, 0xcb, 0x97, 0xfd, 0x48, 0x82, 0x97, 0x92, 0x0f, 0x0d, 0x57, 0x53, + 0x0d, 0x21, 0x8e, 0x86, 0x1b, 0xfb, 0x1d, 0xc1, 0x29, 0xb9, 0x0f, 0xf3, 0xb1, 0xd9, 0x7e, 0x9a, + 0xe9, 0x87, 0xc1, 0x95, 0xd7, 0xf7, 0x01, 0xe6, 0x2b, 0x7f, 0x2c, 0xc1, 0x42, 0x5a, 0xca, 0xd8, + 0xcc, 0x98, 0x34, 0x4e, 0x0e, 0x2b, 0xfb, 0x1f, 0xc3, 0xe9, 0xf9, 0x2e, 0x94, 0xc4, 0xb7, 0x2b, + 0xf5, 0xd4, 0x28, 0x4f, 0x30, 0x95, 0x8b, 0xd9, 0x18, 0x71, 0x7a, 0xf1, 0xfd, 0x48, 0x3d, 0x35, + 0xb4, 0xa4, 0x4f, 0x1f, 0xf3, 0x22, 0x04, 0xfb, 0x69, 0xf4, 0x35, 0xc8, 0x52, 0xaa, 0x69, 0x0a, + 0xc8, 0x44, 0x3f, 0x4d, 0x7c, 0x1a, 0x11, 0xf8, 0xa9, 0x70, 0xe5, 0xfe, 0x6a, 0xf6, 0x2c, 0x04, + 0x98, 0xe1, 0xa7, 0xd1, 0x8b, 0x6f, 0xbc, 0x35, 0x08, 0x97, 0xde, 0x49, 0x5b, 0x43, 0x00, 0x49, + 0xdc, 0x1a, 0xa2, 0x17, 0xd2, 0x58, 0x33, 0x62, 0x29, 0xbb, 0x9e, 0x1a, 0x1e, 0xd3, 0x35, 0x13, + 0x53, 0x4b, 0xa6, 0x7b, 0x68, 0xe8, 0xfd, 0x48, 0xf2, 0x1e, 0x3a, 0x0c, 0x4c, 0xd9, 0x43, 0xe3, + 0x5f, 0x67, 0xc8, 0xdf, 0x86, 0x62, 0x70, 0x4b, 0x5a, 0x4b, 0x18, 0xcd, 0x11, 0x95, 0xa5, 0x2c, + 0x44, 0x74, 0x03, 0x65, 0x73, 0xa7, 0x6f, 0xa0, 0x6c, 0xfa, 0x4b, 0x23, 0x80, 0xc4, 0x15, 0x86, + 0x0a, 0xee, 0xe7, 0x52, 0x8d, 0x84, 0x82, 0x12, 0x57, 0x88, 0xab, 0x92, 0xcb, 0x5d, 0x98, 0x19, + 0x2e, 0x1b, 0xbe, 0x9c, 0xa8, 0x47, 0x01, 0x55, 0xb9, 0x3c, 0x0a, 0x8a, 0x2f, 0xf2, 0x03, 0x78, + 0x21, 0xbe, 0xe0, 0x7c, 0x39, 0x31, 0x5b, 0x89, 0x41, 0x57, 0xae, 0xed, 0x07, 0x2d, 0xee, 0x67, + 0x71, 0x05, 0xdc, 0x8b, 0xa9, 0xfb, 0xc3, 0xf0, 0xc2, 0xcd, 0xd1, 0xb1, 0xe2, 0xb2, 0x71, 0x55, + 0xd9, 0x8b, 0xa9, 0x19, 0xe0, 0x68, 0xcb, 0xa6, 0x54, 0x5b, 0xe5, 0x77, 0x60, 0x92, 0x55, 0x5a, + 0xcf, 0x24, 0x66, 0xb5, 0xb8, 0xbb, 0xf2, 0x4a, 0x6a, 0xb7, 0x3f, 0xdf, 0x5a, 0xeb, 0xe1, 0x93, + 0xaa, 0xf4, 0xe8, 0x49, 0x55, 0xfa, 0xe2, 0x49, 0x55, 0x7a, 0xf0, 0xb4, 0x7a, 0xec, 0xd1, 0xd3, + 0xea, 0xb1, 0xbf, 0x3e, 0xad, 0x1e, 0x7b, 0xaf, 0xa1, 0x1b, 0xde, 0xdd, 0x41, 0x67, 0xb9, 0x6b, + 0xf5, 0x1b, 0x1d, 0xb3, 0x73, 0x85, 0xdc, 0x32, 0x35, 0x84, 0x9f, 0x49, 0xdd, 0x1f, 0xfe, 0xa1, + 0x54, 0x67, 0x92, 0xdc, 0xd5, 0xbf, 0xfe, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x98, 0xe4, 0x34, + 0xe6, 0x90, 0x36, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -4208,7 +4189,7 @@ type MsgClient interface { UpdateBucketInfo(ctx context.Context, in *MsgUpdateBucketInfo, opts ...grpc.CallOption) (*MsgUpdateBucketInfoResponse, error) MirrorBucket(ctx context.Context, in *MsgMirrorBucket, opts ...grpc.CallOption) (*MsgMirrorBucketResponse, error) DiscontinueBucket(ctx context.Context, in *MsgDiscontinueBucket, opts ...grpc.CallOption) (*MsgDiscontinueBucketResponse, error) - UpdateDelegatedAgent(ctx context.Context, in *MsgUpdateDelegatedAgent, opts ...grpc.CallOption) (*MsgUpdateDelegatedAgentResponse, error) + ToggleSPAsDelegatedAgent(ctx context.Context, in *MsgToggleSPAsDelegatedAgent, opts ...grpc.CallOption) (*MsgToggleSPAsDelegatedAgentResponse, error) // basic operation of object CreateObject(ctx context.Context, in *MsgCreateObject, opts ...grpc.CallOption) (*MsgCreateObjectResponse, error) SealObject(ctx context.Context, in *MsgSealObject, opts ...grpc.CallOption) (*MsgSealObjectResponse, error) @@ -4298,9 +4279,9 @@ func (c *msgClient) DiscontinueBucket(ctx context.Context, in *MsgDiscontinueBuc return out, nil } -func (c *msgClient) UpdateDelegatedAgent(ctx context.Context, in *MsgUpdateDelegatedAgent, opts ...grpc.CallOption) (*MsgUpdateDelegatedAgentResponse, error) { - out := new(MsgUpdateDelegatedAgentResponse) - err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/UpdateDelegatedAgent", in, out, opts...) +func (c *msgClient) ToggleSPAsDelegatedAgent(ctx context.Context, in *MsgToggleSPAsDelegatedAgent, opts ...grpc.CallOption) (*MsgToggleSPAsDelegatedAgentResponse, error) { + out := new(MsgToggleSPAsDelegatedAgentResponse) + err := c.cc.Invoke(ctx, "/greenfield.storage.Msg/ToggleSPAsDelegatedAgent", in, out, opts...) if err != nil { return nil, err } @@ -4576,7 +4557,7 @@ type MsgServer interface { UpdateBucketInfo(context.Context, *MsgUpdateBucketInfo) (*MsgUpdateBucketInfoResponse, error) MirrorBucket(context.Context, *MsgMirrorBucket) (*MsgMirrorBucketResponse, error) DiscontinueBucket(context.Context, *MsgDiscontinueBucket) (*MsgDiscontinueBucketResponse, error) - UpdateDelegatedAgent(context.Context, *MsgUpdateDelegatedAgent) (*MsgUpdateDelegatedAgentResponse, error) + ToggleSPAsDelegatedAgent(context.Context, *MsgToggleSPAsDelegatedAgent) (*MsgToggleSPAsDelegatedAgentResponse, error) // basic operation of object CreateObject(context.Context, *MsgCreateObject) (*MsgCreateObjectResponse, error) SealObject(context.Context, *MsgSealObject) (*MsgSealObjectResponse, error) @@ -4632,8 +4613,8 @@ func (*UnimplementedMsgServer) MirrorBucket(ctx context.Context, req *MsgMirrorB func (*UnimplementedMsgServer) DiscontinueBucket(ctx context.Context, req *MsgDiscontinueBucket) (*MsgDiscontinueBucketResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DiscontinueBucket not implemented") } -func (*UnimplementedMsgServer) UpdateDelegatedAgent(ctx context.Context, req *MsgUpdateDelegatedAgent) (*MsgUpdateDelegatedAgentResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateDelegatedAgent not implemented") +func (*UnimplementedMsgServer) ToggleSPAsDelegatedAgent(ctx context.Context, req *MsgToggleSPAsDelegatedAgent) (*MsgToggleSPAsDelegatedAgentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ToggleSPAsDelegatedAgent not implemented") } func (*UnimplementedMsgServer) CreateObject(ctx context.Context, req *MsgCreateObject) (*MsgCreateObjectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateObject not implemented") @@ -4817,20 +4798,20 @@ func _Msg_DiscontinueBucket_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } -func _Msg_UpdateDelegatedAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateDelegatedAgent) +func _Msg_ToggleSPAsDelegatedAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgToggleSPAsDelegatedAgent) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).UpdateDelegatedAgent(ctx, in) + return srv.(MsgServer).ToggleSPAsDelegatedAgent(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/greenfield.storage.Msg/UpdateDelegatedAgent", + FullMethod: "/greenfield.storage.Msg/ToggleSPAsDelegatedAgent", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateDelegatedAgent(ctx, req.(*MsgUpdateDelegatedAgent)) + return srv.(MsgServer).ToggleSPAsDelegatedAgent(ctx, req.(*MsgToggleSPAsDelegatedAgent)) } return interceptor(ctx, in, info, handler) } @@ -5382,8 +5363,8 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Handler: _Msg_DiscontinueBucket_Handler, }, { - MethodName: "UpdateDelegatedAgent", - Handler: _Msg_UpdateDelegatedAgent_Handler, + MethodName: "ToggleSPAsDelegatedAgent", + Handler: _Msg_ToggleSPAsDelegatedAgent_Handler, }, { MethodName: "CreateObject", @@ -8252,7 +8233,7 @@ func (m *MsgDelegateUpdateObjectContentResponse) MarshalToSizedBuffer(dAtA []byt return len(dAtA) - i, nil } -func (m *MsgUpdateDelegatedAgent) Marshal() (dAtA []byte, err error) { +func (m *MsgToggleSPAsDelegatedAgent) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -8262,34 +8243,16 @@ func (m *MsgUpdateDelegatedAgent) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateDelegatedAgent) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgToggleSPAsDelegatedAgent) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateDelegatedAgent) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgToggleSPAsDelegatedAgent) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.AgentsToRemove) > 0 { - for iNdEx := len(m.AgentsToRemove) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AgentsToRemove[iNdEx]) - copy(dAtA[i:], m.AgentsToRemove[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToRemove[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } - if len(m.AgentsToAdd) > 0 { - for iNdEx := len(m.AgentsToAdd) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.AgentsToAdd[iNdEx]) - copy(dAtA[i:], m.AgentsToAdd[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.AgentsToAdd[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } if len(m.BucketName) > 0 { i -= len(m.BucketName) copy(dAtA[i:], m.BucketName) @@ -8307,7 +8270,7 @@ func (m *MsgUpdateDelegatedAgent) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgUpdateDelegatedAgentResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgToggleSPAsDelegatedAgentResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -8317,12 +8280,12 @@ func (m *MsgUpdateDelegatedAgentResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgUpdateDelegatedAgentResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgToggleSPAsDelegatedAgentResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgUpdateDelegatedAgentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgToggleSPAsDelegatedAgentResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -9555,7 +9518,7 @@ func (m *MsgDelegateUpdateObjectContentResponse) Size() (n int) { return n } -func (m *MsgUpdateDelegatedAgent) Size() (n int) { +func (m *MsgToggleSPAsDelegatedAgent) Size() (n int) { if m == nil { return 0 } @@ -9569,22 +9532,10 @@ func (m *MsgUpdateDelegatedAgent) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if len(m.AgentsToAdd) > 0 { - for _, s := range m.AgentsToAdd { - l = len(s) - n += 1 + l + sovTx(uint64(l)) - } - } - if len(m.AgentsToRemove) > 0 { - for _, s := range m.AgentsToRemove { - l = len(s) - n += 1 + l + sovTx(uint64(l)) - } - } return n } -func (m *MsgUpdateDelegatedAgentResponse) Size() (n int) { +func (m *MsgToggleSPAsDelegatedAgentResponse) Size() (n int) { if m == nil { return 0 } @@ -17775,7 +17726,7 @@ func (m *MsgDelegateUpdateObjectContentResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateDelegatedAgent) Unmarshal(dAtA []byte) error { +func (m *MsgToggleSPAsDelegatedAgent) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -17798,10 +17749,10 @@ func (m *MsgUpdateDelegatedAgent) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateDelegatedAgent: wiretype end group for non-group") + return fmt.Errorf("proto: MsgToggleSPAsDelegatedAgent: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateDelegatedAgent: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgToggleSPAsDelegatedAgent: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -17868,70 +17819,6 @@ func (m *MsgUpdateDelegatedAgent) Unmarshal(dAtA []byte) error { } m.BucketName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AgentsToAdd", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - 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 ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AgentsToAdd = append(m.AgentsToAdd, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AgentsToRemove", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - 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 ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AgentsToRemove = append(m.AgentsToRemove, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -17953,7 +17840,7 @@ func (m *MsgUpdateDelegatedAgent) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateDelegatedAgentResponse) Unmarshal(dAtA []byte) error { +func (m *MsgToggleSPAsDelegatedAgentResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -17976,10 +17863,10 @@ func (m *MsgUpdateDelegatedAgentResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateDelegatedAgentResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgToggleSPAsDelegatedAgentResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateDelegatedAgentResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgToggleSPAsDelegatedAgentResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/x/storage/types/types.pb.go b/x/storage/types/types.pb.go index 610ae1283..44eb33313 100644 --- a/x/storage/types/types.pb.go +++ b/x/storage/types/types.pb.go @@ -51,8 +51,9 @@ type BucketInfo struct { BucketStatus BucketStatus `protobuf:"varint,10,opt,name=bucket_status,json=bucketStatus,proto3,enum=greenfield.storage.BucketStatus" json:"bucket_status,omitempty"` // tags defines a list of tags the bucket has Tags *ResourceTags `protobuf:"bytes,11,opt,name=tags,proto3" json:"tags,omitempty"` - // delegated_agent_addresses - DelegatedAgentAddresses []string `protobuf:"bytes,12,rep,name=delegated_agent_addresses,json=delegatedAgentAddresses,proto3" json:"delegated_agent_addresses,omitempty"` + // sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. + // when a bucket is created, Sp is delegated to create object for owner or granted users by default. + SpAsDelegatedAgentDisabled bool `protobuf:"varint,12,opt,name=sp_as_delegated_agent_disabled,json=spAsDelegatedAgentDisabled,proto3" json:"sp_as_delegated_agent_disabled,omitempty"` } func (m *BucketInfo) Reset() { *m = BucketInfo{} } @@ -158,11 +159,11 @@ func (m *BucketInfo) GetTags() *ResourceTags { return nil } -func (m *BucketInfo) GetDelegatedAgentAddresses() []string { +func (m *BucketInfo) GetSpAsDelegatedAgentDisabled() bool { if m != nil { - return m.DelegatedAgentAddresses + return m.SpAsDelegatedAgentDisabled } - return nil + return false } type InternalBucketInfo struct { @@ -1184,95 +1185,96 @@ func init() { func init() { proto.RegisterFile("greenfield/storage/types.proto", fileDescriptor_bf95fa2efdc74d97) } var fileDescriptor_bf95fa2efdc74d97 = []byte{ - // 1403 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdf, 0x6e, 0x13, 0x47, - 0x17, 0xcf, 0x7a, 0xed, 0x24, 0x3e, 0x9b, 0x7f, 0x0c, 0xd1, 0xc7, 0x12, 0x84, 0x63, 0xac, 0xef, - 0xfb, 0x64, 0xb5, 0x4d, 0x2c, 0x02, 0xa2, 0x55, 0x85, 0x8a, 0xe2, 0x42, 0x91, 0xd5, 0xd2, 0xaa, - 0x9b, 0x40, 0xa5, 0xde, 0xac, 0xc6, 0xbb, 0x93, 0xcd, 0x94, 0xdd, 0x1d, 0x77, 0x66, 0x36, 0xc4, - 0x48, 0x7d, 0x81, 0x5e, 0xf5, 0xa2, 0xaf, 0xd0, 0x17, 0xa8, 0x78, 0x08, 0x54, 0xa9, 0x12, 0xe2, - 0xaa, 0xea, 0x05, 0xaa, 0xe0, 0x0d, 0x7a, 0xd1, 0xeb, 0x6a, 0x67, 0xc6, 0xce, 0xc6, 0x76, 0x70, - 0x82, 0xe0, 0xce, 0x73, 0xe6, 0x77, 0x76, 0xe6, 0xfc, 0xf9, 0xfd, 0xce, 0x18, 0x6a, 0x11, 0x27, - 0x24, 0xdd, 0xa3, 0x24, 0x0e, 0x5b, 0x42, 0x32, 0x8e, 0x23, 0xd2, 0x92, 0xfd, 0x1e, 0x11, 0x9b, - 0x3d, 0xce, 0x24, 0x43, 0xe8, 0x68, 0x7f, 0xd3, 0xec, 0xaf, 0xd5, 0x02, 0x26, 0x12, 0x26, 0x5a, - 0x5d, 0x2c, 0x48, 0xeb, 0xe0, 0x6a, 0x97, 0x48, 0x7c, 0xb5, 0x15, 0x30, 0x9a, 0x6a, 0x9f, 0xb5, - 0x8b, 0x7a, 0xdf, 0x57, 0xab, 0x96, 0x5e, 0x98, 0xad, 0xd5, 0x88, 0x45, 0x4c, 0xdb, 0xf3, 0x5f, - 0xc6, 0x7a, 0xa5, 0x70, 0x89, 0x1e, 0xee, 0x27, 0x24, 0x95, 0x2d, 0x96, 0x49, 0x7f, 0x2f, 0x66, - 0x8f, 0x0c, 0xe4, 0xff, 0x13, 0x20, 0x42, 0x72, 0x82, 0x13, 0x9f, 0x93, 0x80, 0xf1, 0xd0, 0xe0, - 0xd6, 0x27, 0xc4, 0x13, 0xb0, 0x24, 0x61, 0xe6, 0x72, 0x8d, 0x27, 0x15, 0x80, 0x76, 0x16, 0x3c, - 0x24, 0xb2, 0x93, 0xee, 0x31, 0xb4, 0x09, 0x15, 0xf6, 0x28, 0x25, 0xdc, 0xb5, 0xea, 0x56, 0xb3, - 0xda, 0x76, 0x9f, 0x3f, 0xd9, 0x58, 0x35, 0x37, 0xde, 0x0e, 0x43, 0x4e, 0x84, 0xd8, 0x91, 0x9c, - 0xa6, 0x91, 0xa7, 0x61, 0x68, 0x1d, 0x9c, 0xae, 0xf2, 0xf6, 0x53, 0x9c, 0x10, 0xb7, 0x94, 0x7b, - 0x79, 0xa0, 0x4d, 0x5f, 0xe2, 0x84, 0xa0, 0x36, 0xc0, 0x01, 0x15, 0xb4, 0x4b, 0x63, 0x2a, 0xfb, - 0xae, 0x5d, 0xb7, 0x9a, 0x4b, 0x5b, 0x8d, 0xcd, 0xf1, 0x2c, 0x6e, 0x3e, 0x18, 0xa2, 0x76, 0xfb, - 0x3d, 0xe2, 0x15, 0xbc, 0xd0, 0xfb, 0x50, 0xa2, 0xa1, 0x5b, 0x56, 0x37, 0xba, 0xf4, 0xf4, 0xc5, - 0xfa, 0xcc, 0x9f, 0x2f, 0xd6, 0xcb, 0xf7, 0x69, 0x2a, 0x9f, 0x3f, 0xd9, 0x70, 0xcc, 0xed, 0xf2, - 0xa5, 0x57, 0xa2, 0x21, 0xba, 0x05, 0x8e, 0x60, 0x19, 0x0f, 0x88, 0x9f, 0xd7, 0xcd, 0xad, 0xa8, - 0x13, 0x6b, 0x93, 0x4e, 0xdc, 0x51, 0x30, 0x7d, 0x9a, 0x18, 0xfe, 0x46, 0x97, 0xa0, 0x1a, 0x70, - 0x82, 0x25, 0xf1, 0xb1, 0x74, 0x67, 0xeb, 0x56, 0xd3, 0xf6, 0xe6, 0xb5, 0x61, 0x5b, 0xa2, 0x6d, - 0x58, 0x36, 0xe9, 0xf6, 0xb1, 0xce, 0x87, 0x3b, 0x37, 0x25, 0x53, 0x4b, 0xc6, 0xc1, 0x58, 0x51, - 0x1b, 0x6a, 0x51, 0xcc, 0xba, 0x38, 0xf6, 0x0f, 0x28, 0x97, 0x19, 0x8e, 0xfd, 0x88, 0xb3, 0xac, - 0xe7, 0xef, 0xe1, 0x84, 0xc6, 0x7d, 0x9f, 0x86, 0xee, 0x7c, 0xdd, 0x6a, 0x2e, 0x7a, 0x6b, 0x1a, - 0xf5, 0x40, 0x83, 0xee, 0xe6, 0x98, 0xcf, 0x14, 0xa4, 0x13, 0xa2, 0x0f, 0x00, 0x05, 0xfb, 0x98, - 0x47, 0x24, 0xf4, 0x39, 0xc1, 0xa1, 0xff, 0x7d, 0xc6, 0x24, 0x76, 0xab, 0x75, 0xab, 0x59, 0xf6, - 0x56, 0xcc, 0x8e, 0x47, 0x70, 0xf8, 0x75, 0x6e, 0x47, 0x77, 0x60, 0xd1, 0x14, 0x49, 0x48, 0x2c, - 0x33, 0xe1, 0x82, 0x4a, 0x4a, 0x7d, 0x52, 0x52, 0x74, 0x2f, 0xec, 0x28, 0x9c, 0xb7, 0xd0, 0x2d, - 0xac, 0xd0, 0x75, 0x28, 0x4b, 0x1c, 0x09, 0xd7, 0xa9, 0x5b, 0x4d, 0x67, 0xb2, 0xb7, 0x47, 0x4c, - 0x22, 0x71, 0x24, 0x3c, 0x85, 0x46, 0xbb, 0x70, 0x31, 0x24, 0x31, 0x89, 0xb0, 0x24, 0xa1, 0x8f, - 0xa3, 0x42, 0xe6, 0x88, 0x70, 0x17, 0xea, 0xf6, 0x6b, 0x73, 0x77, 0x61, 0xe8, 0xba, 0x1d, 0x1d, - 0xa5, 0x90, 0x88, 0xc6, 0x3f, 0x16, 0xa0, 0x4e, 0x2a, 0x09, 0x4f, 0x71, 0x5c, 0x68, 0xdf, 0xcb, - 0x00, 0x3d, 0x4e, 0xf3, 0xda, 0xd3, 0x84, 0xa8, 0x1e, 0xb6, 0xbd, 0xaa, 0xb2, 0xec, 0xd2, 0x84, - 0xa0, 0xf7, 0xe0, 0x9c, 0x64, 0x12, 0xc7, 0xbe, 0x4e, 0x91, 0x2f, 0xe8, 0x63, 0xdd, 0xb3, 0x65, - 0x6f, 0x59, 0x6d, 0x7c, 0xaa, 0xec, 0x3b, 0xf4, 0x31, 0x41, 0xdf, 0xc0, 0x6a, 0xcc, 0x82, 0xd1, - 0x2a, 0x09, 0xd7, 0xae, 0xdb, 0x4d, 0x67, 0xeb, 0x7f, 0x93, 0xa2, 0xff, 0x22, 0xc7, 0x17, 0xeb, - 0xe5, 0xa1, 0x78, 0xd4, 0x24, 0xd0, 0x4d, 0xb8, 0x94, 0x92, 0x43, 0xe9, 0x4f, 0xf8, 0xba, 0x6f, - 0xda, 0x7c, 0xd1, 0xbb, 0x90, 0x43, 0xc6, 0xbe, 0xd7, 0x09, 0x1b, 0x3f, 0xce, 0x01, 0x7c, 0xd5, - 0xfd, 0x8e, 0x04, 0x6f, 0xc6, 0xd7, 0x2d, 0x98, 0x53, 0xbd, 0xcc, 0xb8, 0xe6, 0xea, 0x6b, 0x3c, - 0x06, 0xc0, 0x51, 0x8e, 0xdb, 0x63, 0x1c, 0x5f, 0x07, 0x87, 0xa9, 0x2b, 0x69, 0x40, 0x59, 0x03, - 0xb4, 0x49, 0x01, 0x34, 0x81, 0x2b, 0xa7, 0x23, 0xf0, 0x35, 0xf8, 0xcf, 0x09, 0xa9, 0x99, 0x55, - 0xa9, 0x39, 0x1f, 0x8f, 0xa7, 0x05, 0x5d, 0x81, 0x85, 0x1e, 0xee, 0xc7, 0x0c, 0x87, 0xba, 0xa8, - 0x73, 0xaa, 0xa8, 0x8e, 0xb1, 0xa9, 0x82, 0x1e, 0x57, 0xa2, 0xf9, 0x37, 0x52, 0xa2, 0x2b, 0xb0, - 0x10, 0xb0, 0x54, 0xe6, 0x4d, 0xac, 0xd4, 0xa5, 0xaa, 0x42, 0x75, 0x8c, 0x6d, 0x5c, 0x3e, 0x60, - 0x44, 0x3e, 0xee, 0xc0, 0xa2, 0xc9, 0x94, 0x61, 0xa2, 0x73, 0x32, 0x13, 0x75, 0x95, 0x07, 0x4c, - 0x64, 0x85, 0x15, 0xfa, 0x1c, 0x96, 0x39, 0x09, 0xb3, 0x34, 0xc4, 0x69, 0xd0, 0xd7, 0x37, 0x59, - 0x38, 0x39, 0x1e, 0x6f, 0x08, 0x55, 0xf1, 0x2c, 0xf1, 0x63, 0xeb, 0x51, 0xc1, 0x5c, 0x3c, 0xb3, - 0x60, 0xb6, 0xa0, 0x1a, 0xec, 0x93, 0xe0, 0xa1, 0xc8, 0x12, 0xe1, 0x2e, 0xd5, 0xed, 0xe6, 0x42, - 0xfb, 0xdc, 0xdf, 0x2f, 0xd6, 0x17, 0x25, 0xc7, 0x54, 0x8a, 0x8f, 0x1b, 0x2c, 0xa1, 0xb2, 0xe1, - 0x1d, 0x61, 0x86, 0x42, 0xb2, 0x7c, 0x26, 0x21, 0x59, 0x07, 0x87, 0x0a, 0x3f, 0xeb, 0x85, 0x58, - 0xd2, 0x34, 0x72, 0x57, 0xea, 0x56, 0x73, 0xde, 0x03, 0x2a, 0xee, 0x1b, 0x4b, 0x4e, 0x7e, 0xb5, - 0x9b, 0xeb, 0x8c, 0x74, 0xcf, 0x69, 0xf2, 0x1b, 0xcb, 0xb6, 0x44, 0x1f, 0x1e, 0x6d, 0x77, 0xfb, - 0x2e, 0x9a, 0xd2, 0xfd, 0x03, 0xc7, 0x76, 0x1f, 0xb9, 0x30, 0x77, 0x40, 0xb8, 0xa0, 0x2c, 0x75, - 0xcf, 0xab, 0x8f, 0x0e, 0x96, 0x8d, 0x9f, 0x4b, 0x50, 0xd5, 0x1d, 0xf8, 0x26, 0x5c, 0xbc, 0x0c, - 0xa0, 0x5b, 0xbb, 0x30, 0x3a, 0xab, 0xca, 0xa2, 0x48, 0x33, 0x52, 0x17, 0xfb, 0xcc, 0x75, 0x39, - 0xd3, 0xd8, 0x5c, 0x85, 0x0a, 0x39, 0x94, 0x1c, 0x6b, 0x96, 0x7a, 0x7a, 0x31, 0xac, 0xd4, 0xec, - 0x59, 0x2a, 0xd5, 0xb8, 0x09, 0x95, 0xdd, 0xbc, 0xf6, 0x79, 0x84, 0xaa, 0x09, 0x74, 0x04, 0x96, - 0x8e, 0x50, 0x59, 0xd4, 0x05, 0x57, 0xa1, 0x72, 0x80, 0xe3, 0x6c, 0x10, 0xbb, 0x5e, 0x34, 0x7e, - 0xb7, 0x60, 0x49, 0x4b, 0xfa, 0x3d, 0x22, 0xf1, 0x6d, 0x2c, 0x31, 0xaa, 0x83, 0x13, 0x12, 0x11, - 0x70, 0xda, 0x93, 0x79, 0x15, 0xf4, 0x87, 0x8a, 0xa6, 0x9c, 0x98, 0xe4, 0x50, 0x8f, 0x03, 0x3f, - 0xe3, 0xb1, 0xf9, 0xa2, 0x33, 0xb0, 0xdd, 0xe7, 0xf1, 0x74, 0x19, 0x5b, 0x85, 0x0a, 0x4d, 0x70, - 0x34, 0x10, 0x30, 0xbd, 0x40, 0xb7, 0x00, 0xb0, 0x94, 0x9c, 0x76, 0x33, 0x49, 0x84, 0x5b, 0x51, - 0xea, 0x7f, 0x71, 0x52, 0x22, 0x54, 0xc8, 0xed, 0x72, 0x9e, 0x68, 0xaf, 0xe0, 0xa2, 0xe2, 0xd1, - 0x5c, 0x7e, 0xeb, 0xf1, 0x14, 0x55, 0xd7, 0x1e, 0x53, 0xdd, 0x77, 0x14, 0xcf, 0x6f, 0x16, 0x2c, - 0xaa, 0xa6, 0x7f, 0xbb, 0xe1, 0x1c, 0x67, 0x83, 0x3d, 0xca, 0x86, 0x77, 0x14, 0xcc, 0x16, 0xd8, - 0x9d, 0x50, 0x18, 0xaa, 0x58, 0xea, 0x35, 0x32, 0x8d, 0x2a, 0x8d, 0x5f, 0x2d, 0x80, 0xdb, 0x24, - 0x26, 0x92, 0x28, 0xda, 0xdf, 0x00, 0xd3, 0x44, 0x3e, 0x0d, 0x85, 0x0a, 0xde, 0xd9, 0xba, 0x30, - 0xe9, 0x0e, 0x9d, 0x50, 0x78, 0x55, 0x0d, 0xcd, 0xcf, 0xbc, 0x01, 0xa6, 0x58, 0xca, 0xaf, 0x34, - 0xc5, 0x4f, 0x43, 0x73, 0xbf, 0xeb, 0x50, 0x1d, 0x4c, 0x44, 0xa1, 0xf2, 0xf4, 0x1a, 0xb7, 0xf9, - 0x48, 0xcf, 0x47, 0xd1, 0x78, 0x6e, 0xc1, 0xf9, 0x7b, 0x34, 0xe2, 0x38, 0xaf, 0x47, 0xe1, 0xc5, - 0xb4, 0x06, 0x55, 0xc1, 0x03, 0x5f, 0xa8, 0x01, 0x6b, 0xa9, 0x01, 0x3b, 0x27, 0x78, 0xb0, 0x93, - 0x0f, 0xd5, 0x0e, 0x34, 0xf2, 0xbd, 0x29, 0xaf, 0xd5, 0x92, 0x72, 0xba, 0x2c, 0x78, 0x70, 0xf7, - 0xe4, 0x07, 0xeb, 0x1a, 0x54, 0x43, 0x21, 0xcd, 0x31, 0xb6, 0x3e, 0x26, 0x14, 0x52, 0x1d, 0xf3, - 0x11, 0x54, 0x87, 0x09, 0x3c, 0x8d, 0x5c, 0xcd, 0x0f, 0x72, 0xd8, 0xf8, 0x01, 0x16, 0x8a, 0xf2, - 0x83, 0x3e, 0x31, 0x72, 0x65, 0xa9, 0x46, 0xf8, 0xef, 0x34, 0xb9, 0xda, 0xdc, 0xc5, 0x91, 0xe9, - 0x09, 0xe5, 0xb7, 0xb6, 0x01, 0xf6, 0x2e, 0x8e, 0xd0, 0x0a, 0xd8, 0x0f, 0x49, 0xdf, 0xf4, 0x71, - 0xfe, 0xf3, 0x04, 0xa5, 0xfa, 0xa5, 0x04, 0x2b, 0x3b, 0xfb, 0x38, 0x64, 0x8f, 0x0a, 0x2f, 0xb2, - 0xeb, 0x30, 0xcf, 0x7a, 0x84, 0xab, 0x27, 0xd6, 0xb4, 0x41, 0x30, 0x44, 0x9a, 0x06, 0x2c, 0x9d, - 0x4e, 0xab, 0x47, 0x5f, 0x21, 0xf6, 0xf8, 0x2b, 0x64, 0xf4, 0x3d, 0x54, 0x1e, 0x7f, 0x0f, 0x1d, - 0x1b, 0xdb, 0x95, 0x53, 0x8c, 0xed, 0xe3, 0xf3, 0x75, 0x76, 0x74, 0xbe, 0x16, 0xc6, 0xe4, 0xdc, - 0xb1, 0x31, 0xd9, 0xee, 0x3c, 0x7d, 0x59, 0xb3, 0x9e, 0xbd, 0xac, 0x59, 0x7f, 0xbd, 0xac, 0x59, - 0x3f, 0xbd, 0xaa, 0xcd, 0x3c, 0x7b, 0x55, 0x9b, 0xf9, 0xe3, 0x55, 0x6d, 0xe6, 0xdb, 0x56, 0x44, - 0xe5, 0x7e, 0xd6, 0xdd, 0x0c, 0x58, 0xd2, 0xea, 0xa6, 0xdd, 0x8d, 0x60, 0x1f, 0xd3, 0xb4, 0x55, - 0xf8, 0xcf, 0x7a, 0x78, 0xfc, 0x5f, 0x78, 0x77, 0x56, 0xfd, 0x6b, 0xbd, 0xf6, 0x6f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x0a, 0xa4, 0xad, 0x31, 0xa8, 0x0f, 0x00, 0x00, + // 1411 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdf, 0x6e, 0x1b, 0xc5, + 0x17, 0xce, 0x7a, 0xed, 0x24, 0x3e, 0x9b, 0x7f, 0x9d, 0x46, 0xbf, 0x6e, 0x53, 0xd5, 0x71, 0xad, + 0x1f, 0xc8, 0x02, 0x12, 0xab, 0x69, 0x55, 0x10, 0xaa, 0xa8, 0x62, 0x5a, 0x2a, 0x0b, 0x0a, 0x62, + 0x93, 0x16, 0x89, 0x9b, 0xd5, 0xec, 0xee, 0x64, 0x33, 0x74, 0x77, 0xc7, 0xcc, 0xcc, 0xa6, 0x71, + 0x25, 0x5e, 0x80, 0x2b, 0x2e, 0x78, 0x02, 0x24, 0x5e, 0x00, 0xf5, 0x21, 0x2a, 0x24, 0xa4, 0xaa, + 0x57, 0x88, 0x8b, 0x0a, 0xb5, 0x6f, 0xc0, 0x05, 0xd7, 0x68, 0x67, 0xc6, 0xe9, 0xc6, 0x76, 0x9a, + 0xa4, 0x6a, 0xef, 0x3c, 0x67, 0xbe, 0xb3, 0x33, 0xe7, 0xcf, 0xf7, 0x9d, 0x31, 0x34, 0x62, 0x4e, + 0x48, 0xb6, 0x43, 0x49, 0x12, 0x75, 0x84, 0x64, 0x1c, 0xc7, 0xa4, 0x23, 0x07, 0x7d, 0x22, 0xd6, + 0xfb, 0x9c, 0x49, 0x86, 0xd0, 0xcb, 0xfd, 0x75, 0xb3, 0xbf, 0xd2, 0x08, 0x99, 0x48, 0x99, 0xe8, + 0x04, 0x58, 0x90, 0xce, 0xde, 0xe5, 0x80, 0x48, 0x7c, 0xb9, 0x13, 0x32, 0x9a, 0x69, 0x9f, 0x95, + 0xf3, 0x7a, 0xdf, 0x57, 0xab, 0x8e, 0x5e, 0x98, 0xad, 0xe5, 0x98, 0xc5, 0x4c, 0xdb, 0x8b, 0x5f, + 0xc6, 0x7a, 0xa9, 0x74, 0x89, 0x3e, 0x1e, 0xa4, 0x24, 0x93, 0x1d, 0x96, 0x4b, 0x7f, 0x27, 0x61, + 0x0f, 0x0c, 0xe4, 0xdd, 0x09, 0x10, 0x21, 0x39, 0xc1, 0xa9, 0xcf, 0x49, 0xc8, 0x78, 0x64, 0x70, + 0xab, 0x13, 0xe2, 0x09, 0x59, 0x9a, 0x32, 0x73, 0xb9, 0xd6, 0x2f, 0x35, 0x80, 0x6e, 0x1e, 0xde, + 0x27, 0xb2, 0x97, 0xed, 0x30, 0xb4, 0x0e, 0x35, 0xf6, 0x20, 0x23, 0xdc, 0xb5, 0x9a, 0x56, 0xbb, + 0xde, 0x75, 0x9f, 0x3e, 0x5a, 0x5b, 0x36, 0x37, 0xde, 0x8c, 0x22, 0x4e, 0x84, 0xd8, 0x92, 0x9c, + 0x66, 0xb1, 0xa7, 0x61, 0x68, 0x15, 0x9c, 0x40, 0x79, 0xfb, 0x19, 0x4e, 0x89, 0x5b, 0x29, 0xbc, + 0x3c, 0xd0, 0xa6, 0x2f, 0x71, 0x4a, 0x50, 0x17, 0x60, 0x8f, 0x0a, 0x1a, 0xd0, 0x84, 0xca, 0x81, + 0x6b, 0x37, 0xad, 0xf6, 0xc2, 0x46, 0x6b, 0x7d, 0x3c, 0x8b, 0xeb, 0xf7, 0x0e, 0x50, 0xdb, 0x83, + 0x3e, 0xf1, 0x4a, 0x5e, 0xe8, 0x7d, 0xa8, 0xd0, 0xc8, 0xad, 0xaa, 0x1b, 0x5d, 0x78, 0xfc, 0x6c, + 0x75, 0xea, 0xaf, 0x67, 0xab, 0xd5, 0xbb, 0x34, 0x93, 0x4f, 0x1f, 0xad, 0x39, 0xe6, 0x76, 0xc5, + 0xd2, 0xab, 0xd0, 0x08, 0xdd, 0x00, 0x47, 0xb0, 0x9c, 0x87, 0xc4, 0x2f, 0xea, 0xe6, 0xd6, 0xd4, + 0x89, 0x8d, 0x49, 0x27, 0x6e, 0x29, 0x98, 0x3e, 0x4d, 0x1c, 0xfc, 0x46, 0x17, 0xa0, 0x1e, 0x72, + 0x82, 0x25, 0xf1, 0xb1, 0x74, 0xa7, 0x9b, 0x56, 0xdb, 0xf6, 0x66, 0xb5, 0x61, 0x53, 0xa2, 0x4d, + 0x58, 0x34, 0xe9, 0xf6, 0xb1, 0xce, 0x87, 0x3b, 0x73, 0x4c, 0xa6, 0x16, 0x8c, 0x83, 0xb1, 0xa2, + 0x2e, 0x34, 0xe2, 0x84, 0x05, 0x38, 0xf1, 0xf7, 0x28, 0x97, 0x39, 0x4e, 0xfc, 0x98, 0xb3, 0xbc, + 0xef, 0xef, 0xe0, 0x94, 0x26, 0x03, 0x9f, 0x46, 0xee, 0x6c, 0xd3, 0x6a, 0xcf, 0x7b, 0x2b, 0x1a, + 0x75, 0x4f, 0x83, 0x6e, 0x17, 0x98, 0xcf, 0x14, 0xa4, 0x17, 0xa1, 0x0f, 0x00, 0x85, 0xbb, 0x98, + 0xc7, 0x24, 0xf2, 0x39, 0xc1, 0x91, 0xff, 0x7d, 0xce, 0x24, 0x76, 0xeb, 0x4d, 0xab, 0x5d, 0xf5, + 0x96, 0xcc, 0x8e, 0x47, 0x70, 0xf4, 0x75, 0x61, 0x47, 0xb7, 0x60, 0xde, 0x14, 0x49, 0x48, 0x2c, + 0x73, 0xe1, 0x82, 0x4a, 0x4a, 0x73, 0x52, 0x52, 0x74, 0x2f, 0x6c, 0x29, 0x9c, 0x37, 0x17, 0x94, + 0x56, 0xe8, 0x2a, 0x54, 0x25, 0x8e, 0x85, 0xeb, 0x34, 0xad, 0xb6, 0x33, 0xd9, 0xdb, 0x23, 0x26, + 0x91, 0x38, 0x16, 0x9e, 0x42, 0x17, 0xe1, 0x8a, 0xbe, 0x8f, 0x85, 0x1f, 0x91, 0x84, 0xc4, 0x58, + 0x92, 0xc8, 0xc7, 0x71, 0x91, 0xbf, 0x88, 0x0a, 0x1c, 0x24, 0x24, 0x72, 0xe7, 0x9a, 0x56, 0x7b, + 0xd6, 0x5b, 0x11, 0xfd, 0x4d, 0x71, 0x73, 0x88, 0xd9, 0x2c, 0x20, 0x37, 0x0d, 0xa2, 0xf5, 0xaf, + 0x05, 0xa8, 0x97, 0x49, 0xc2, 0x33, 0x9c, 0x94, 0x9a, 0xf5, 0x22, 0x40, 0x9f, 0xd3, 0xa2, 0xd2, + 0x34, 0x25, 0xaa, 0x63, 0x6d, 0xaf, 0xae, 0x2c, 0xdb, 0x34, 0x25, 0xe8, 0x3d, 0x38, 0x23, 0x99, + 0xc4, 0x89, 0xaf, 0x13, 0xe2, 0x0b, 0xfa, 0x50, 0x77, 0x68, 0xd5, 0x5b, 0x54, 0x1b, 0x9f, 0x2a, + 0xfb, 0x16, 0x7d, 0x48, 0xd0, 0x37, 0xb0, 0x9c, 0xb0, 0x70, 0xb4, 0x26, 0xc2, 0xb5, 0x9b, 0x76, + 0xdb, 0xd9, 0x78, 0x67, 0x52, 0xac, 0x5f, 0x14, 0xf8, 0x72, 0x75, 0x3c, 0x94, 0x8c, 0x9a, 0x04, + 0xba, 0x0e, 0x17, 0x32, 0xb2, 0x2f, 0xfd, 0x09, 0x5f, 0xf7, 0x4d, 0x53, 0xcf, 0x7b, 0xe7, 0x0a, + 0xc8, 0xd8, 0xf7, 0x7a, 0x51, 0xeb, 0xc7, 0x19, 0x80, 0xaf, 0x82, 0xef, 0x48, 0xf8, 0x7a, 0xec, + 0xdc, 0x80, 0x19, 0xd5, 0xb9, 0x8c, 0x6b, 0x66, 0xbe, 0xc2, 0x63, 0x08, 0x1c, 0x65, 0xb4, 0x3d, + 0xc6, 0xe8, 0x55, 0x70, 0x98, 0xba, 0x92, 0x06, 0x54, 0x35, 0x40, 0x9b, 0x14, 0x40, 0xd3, 0xb5, + 0x76, 0x32, 0xba, 0x5e, 0x81, 0xff, 0x1d, 0x91, 0x9a, 0x69, 0x95, 0x9a, 0xb3, 0xc9, 0x78, 0x5a, + 0xd0, 0x25, 0x98, 0xeb, 0xe3, 0x41, 0xc2, 0x70, 0xa4, 0x8b, 0x3a, 0xa3, 0x8a, 0xea, 0x18, 0x9b, + 0x2a, 0xe8, 0x61, 0xdd, 0x99, 0x7d, 0x2d, 0xdd, 0xb9, 0x04, 0x73, 0x21, 0xcb, 0x64, 0xd1, 0xac, + 0x4a, 0x4b, 0xea, 0x2a, 0x54, 0xc7, 0xd8, 0xc6, 0xc5, 0x02, 0x46, 0xc4, 0xe2, 0x16, 0xcc, 0x9b, + 0x4c, 0x19, 0xde, 0x39, 0x47, 0xf3, 0x4e, 0x57, 0x79, 0xc8, 0x3b, 0x56, 0x5a, 0xa1, 0xcf, 0x61, + 0x91, 0x93, 0x28, 0xcf, 0x22, 0x9c, 0x85, 0x03, 0x7d, 0x93, 0xb9, 0xa3, 0xe3, 0xf1, 0x0e, 0xa0, + 0x2a, 0x9e, 0x05, 0x7e, 0x68, 0x3d, 0x2a, 0x8f, 0xf3, 0xa7, 0x96, 0xc7, 0x0e, 0xd4, 0xc3, 0x5d, + 0x12, 0xde, 0x17, 0x79, 0x2a, 0xdc, 0x85, 0xa6, 0xdd, 0x9e, 0xeb, 0x9e, 0xf9, 0xe7, 0xd9, 0xea, + 0xbc, 0xe4, 0x98, 0x4a, 0xf1, 0x71, 0x8b, 0xa5, 0x54, 0xb6, 0xbc, 0x97, 0x98, 0x03, 0xd9, 0x58, + 0x3c, 0x95, 0x6c, 0xac, 0x82, 0x43, 0x85, 0x9f, 0xf7, 0x23, 0x2c, 0x69, 0x16, 0xbb, 0x4b, 0x4a, + 0x23, 0x80, 0x8a, 0xbb, 0xc6, 0x52, 0x90, 0x5f, 0xed, 0x16, 0x7a, 0x22, 0xdd, 0x33, 0x9a, 0xfc, + 0xc6, 0xb2, 0x29, 0xd1, 0x87, 0x2f, 0xb7, 0x83, 0x81, 0x8b, 0x8e, 0xe9, 0xfe, 0xa1, 0x63, 0x77, + 0x80, 0x5c, 0x98, 0xd9, 0x23, 0x5c, 0x50, 0x96, 0xb9, 0x67, 0xd5, 0x47, 0x87, 0xcb, 0xd6, 0xcf, + 0x15, 0xa8, 0xeb, 0x0e, 0x7c, 0x1d, 0x2e, 0x5e, 0x04, 0xd0, 0xad, 0x5d, 0x1a, 0x94, 0x75, 0x65, + 0x51, 0xa4, 0x19, 0xa9, 0x8b, 0x7d, 0xea, 0xba, 0x9c, 0x6a, 0x48, 0x2e, 0x43, 0x8d, 0xec, 0x4b, + 0x8e, 0x35, 0x4b, 0x3d, 0xbd, 0x38, 0xa8, 0xd4, 0xf4, 0x69, 0x2a, 0xd5, 0xba, 0x0e, 0xb5, 0xed, + 0xa2, 0xf6, 0x45, 0x84, 0xaa, 0x09, 0x74, 0x04, 0x96, 0x8e, 0x50, 0x59, 0xd4, 0x05, 0x97, 0xa1, + 0xb6, 0x87, 0x93, 0x7c, 0x18, 0xbb, 0x5e, 0xb4, 0xfe, 0xb0, 0x60, 0x41, 0x4b, 0xfa, 0x1d, 0x22, + 0xf1, 0x4d, 0x2c, 0x31, 0x6a, 0x82, 0x13, 0x11, 0x11, 0x72, 0xda, 0x97, 0x45, 0x15, 0xf4, 0x87, + 0xca, 0xa6, 0x82, 0x98, 0x64, 0x5f, 0x8f, 0x03, 0x3f, 0xe7, 0x89, 0xf9, 0xa2, 0x33, 0xb4, 0xdd, + 0xe5, 0xc9, 0xf1, 0x32, 0xb6, 0x0c, 0x35, 0x9a, 0xe2, 0x78, 0x28, 0x60, 0x7a, 0x81, 0x6e, 0x00, + 0x60, 0x29, 0x39, 0x0d, 0x72, 0x49, 0x84, 0x5b, 0x53, 0xea, 0x7f, 0x7e, 0x52, 0x22, 0x54, 0xc8, + 0xdd, 0x6a, 0x91, 0x68, 0xaf, 0xe4, 0xa2, 0xe2, 0xd1, 0x5c, 0x7e, 0xe3, 0xf1, 0x94, 0x55, 0xd7, + 0x1e, 0x53, 0xdd, 0xb7, 0x14, 0xcf, 0xef, 0x16, 0xcc, 0xab, 0xa6, 0x7f, 0xb3, 0xe1, 0x1c, 0x66, + 0x83, 0x3d, 0xca, 0x86, 0xb7, 0x14, 0xcc, 0x06, 0xd8, 0xbd, 0x48, 0x18, 0xaa, 0x58, 0x4d, 0xfb, + 0x04, 0x54, 0x69, 0xfd, 0x66, 0x01, 0x14, 0xcf, 0x12, 0x49, 0x14, 0xed, 0xaf, 0x81, 0x69, 0x22, + 0x9f, 0x46, 0x42, 0x05, 0xef, 0x6c, 0x9c, 0x9b, 0x74, 0x87, 0x5e, 0x24, 0xbc, 0xba, 0x86, 0x16, + 0x67, 0x5e, 0x03, 0x53, 0x2c, 0xe5, 0x57, 0x39, 0xc6, 0x4f, 0x43, 0x0b, 0xbf, 0xab, 0x50, 0x1f, + 0x4e, 0x44, 0xa1, 0xf2, 0xf4, 0x0a, 0xb7, 0xd9, 0x58, 0xcf, 0x47, 0xd1, 0x7a, 0x6a, 0xc1, 0xd9, + 0x3b, 0x34, 0xe6, 0xb8, 0xa8, 0x47, 0xe9, 0xc5, 0xb4, 0x02, 0x75, 0xc1, 0x43, 0x5f, 0xa8, 0x01, + 0x6b, 0xa9, 0x01, 0x3b, 0x23, 0x78, 0xb8, 0x55, 0x0c, 0xd5, 0x1e, 0xb4, 0x8a, 0xbd, 0x63, 0xde, + 0xa6, 0x15, 0xe5, 0x74, 0x51, 0xf0, 0xf0, 0xf6, 0xd1, 0xcf, 0xd3, 0x15, 0xa8, 0x47, 0x42, 0x9a, + 0x63, 0x6c, 0x7d, 0x4c, 0x24, 0xa4, 0x3a, 0xe6, 0x23, 0xa8, 0x1f, 0x24, 0xf0, 0x24, 0x72, 0x35, + 0x3b, 0xcc, 0x61, 0xeb, 0x07, 0x98, 0x2b, 0xcb, 0x0f, 0xfa, 0xc4, 0xc8, 0x95, 0xa5, 0x1a, 0xe1, + 0xff, 0xc7, 0xc9, 0xd5, 0xfa, 0x36, 0x8e, 0x4d, 0x4f, 0x28, 0xbf, 0x95, 0x35, 0xb0, 0xb7, 0x71, + 0x8c, 0x96, 0xc0, 0xbe, 0x4f, 0x06, 0xa6, 0x8f, 0x8b, 0x9f, 0x47, 0x28, 0xd5, 0xaf, 0x15, 0x58, + 0xda, 0xda, 0xc5, 0x11, 0x7b, 0x50, 0x7a, 0x91, 0x5d, 0x85, 0x59, 0xd6, 0x27, 0x5c, 0x3d, 0xb1, + 0x8e, 0x1b, 0x04, 0x07, 0x48, 0xd3, 0x80, 0x95, 0x93, 0x69, 0xf5, 0xe8, 0x2b, 0xc4, 0x1e, 0x7f, + 0x85, 0x8c, 0xbe, 0x87, 0xaa, 0xe3, 0xef, 0xa1, 0x43, 0x63, 0xbb, 0x76, 0x82, 0xb1, 0x7d, 0x78, + 0xbe, 0x4e, 0x8f, 0xce, 0xd7, 0xd2, 0x98, 0x9c, 0x39, 0x34, 0x26, 0xbb, 0xbd, 0xc7, 0xcf, 0x1b, + 0xd6, 0x93, 0xe7, 0x0d, 0xeb, 0xef, 0xe7, 0x0d, 0xeb, 0xa7, 0x17, 0x8d, 0xa9, 0x27, 0x2f, 0x1a, + 0x53, 0x7f, 0xbe, 0x68, 0x4c, 0x7d, 0xdb, 0x89, 0xa9, 0xdc, 0xcd, 0x83, 0xf5, 0x90, 0xa5, 0x9d, + 0x20, 0x0b, 0xd6, 0xc2, 0x5d, 0x4c, 0xb3, 0x4e, 0xe9, 0x1f, 0xea, 0xfe, 0xe1, 0xff, 0xdc, 0xc1, + 0xb4, 0xfa, 0x8f, 0x7a, 0xe5, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xda, 0xa4, 0x75, 0x96, + 0x0f, 0x00, 0x00, } func (m *BucketInfo) Marshal() (dAtA []byte, err error) { @@ -1295,14 +1297,15 @@ func (m *BucketInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.DelegatedAgentAddresses) > 0 { - for iNdEx := len(m.DelegatedAgentAddresses) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.DelegatedAgentAddresses[iNdEx]) - copy(dAtA[i:], m.DelegatedAgentAddresses[iNdEx]) - i = encodeVarintTypes(dAtA, i, uint64(len(m.DelegatedAgentAddresses[iNdEx]))) - i-- - dAtA[i] = 0x62 + if m.SpAsDelegatedAgentDisabled { + i-- + if m.SpAsDelegatedAgentDisabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 } + i-- + dAtA[i] = 0x60 } if m.Tags != nil { { @@ -2236,11 +2239,8 @@ func (m *BucketInfo) Size() (n int) { l = m.Tags.Size() n += 1 + l + sovTypes(uint64(l)) } - if len(m.DelegatedAgentAddresses) > 0 { - for _, s := range m.DelegatedAgentAddresses { - l = len(s) - n += 1 + l + sovTypes(uint64(l)) - } + if m.SpAsDelegatedAgentDisabled { + n += 2 } return n } @@ -2922,10 +2922,10 @@ func (m *BucketInfo) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegatedAgentAddresses", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SpAsDelegatedAgentDisabled", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -2935,24 +2935,12 @@ func (m *BucketInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DelegatedAgentAddresses = append(m.DelegatedAgentAddresses, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex + m.SpAsDelegatedAgentDisabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) From 2d5793af5017a6415ca1794811197059fe5cb577 Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Tue, 5 Mar 2024 17:22:18 +0800 Subject: [PATCH 04/10] clean code --- e2e/tests/storage_test.go | 3 ++- swagger/static/swagger.yaml | 48 +++++++++++++++++++++++++++++++++ x/storage/types/message.go | 9 +++---- x/storage/types/message_test.go | 16 ----------- x/storage/types/options.go | 3 ++- 5 files changed, 56 insertions(+), 23 deletions(-) diff --git a/e2e/tests/storage_test.go b/e2e/tests/storage_test.go index 52cdb5a60..4afce98f1 100644 --- a/e2e/tests/storage_test.go +++ b/e2e/tests/storage_test.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "fmt" - permissiontypes "github.com/bnb-chain/greenfield/x/permission/types" "math" "reflect" "strconv" @@ -12,6 +11,8 @@ import ( "testing" "time" + permissiontypes "github.com/bnb-chain/greenfield/x/permission/types" + sdkmath "cosmossdk.io/math" ctypes "github.com/cometbft/cometbft/rpc/core/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/swagger/static/swagger.yaml b/swagger/static/swagger.yaml index 4f32a9221..b70a3e384 100644 --- a/swagger/static/swagger.yaml +++ b/swagger/static/swagger.yaml @@ -2624,6 +2624,14 @@ paths: value: type: string title: tags defines a list of tags the resource has + sp_as_delegated_agent_disabled: + type: boolean + description: >- + sp_as_delegated_agent_disabled indicates that whether + bucket owner disable SP as the upload agent. + + when a bucket is created, Sp is delegated to create object + for owner or granted users by default. default: description: An unexpected error response. schema: @@ -2748,6 +2756,14 @@ paths: value: type: string title: tags defines a list of tags the resource has + sp_as_delegated_agent_disabled: + type: boolean + description: >- + sp_as_delegated_agent_disabled indicates that whether + bucket owner disable SP as the upload agent. + + when a bucket is created, Sp is delegated to create object + for owner or granted users by default. default: description: An unexpected error response. schema: @@ -3894,6 +3910,14 @@ paths: value: type: string title: tags defines a list of tags the resource has + sp_as_delegated_agent_disabled: + type: boolean + description: >- + sp_as_delegated_agent_disabled indicates that whether + bucket owner disable SP as the upload agent. + + when a bucket is created, Sp is delegated to create + object for owner or granted users by default. pagination: type: object properties: @@ -34768,6 +34792,14 @@ definitions: value: type: string title: tags defines a list of tags the resource has + sp_as_delegated_agent_disabled: + type: boolean + description: >- + sp_as_delegated_agent_disabled indicates that whether bucket owner + disable SP as the upload agent. + + when a bucket is created, Sp is delegated to create object for owner + or granted users by default. greenfield.storage.BucketMetaData: type: object properties: @@ -35464,6 +35496,14 @@ definitions: value: type: string title: tags defines a list of tags the resource has + sp_as_delegated_agent_disabled: + type: boolean + description: >- + sp_as_delegated_agent_disabled indicates that whether bucket owner + disable SP as the upload agent. + + when a bucket is created, Sp is delegated to create object for + owner or granted users by default. greenfield.storage.QueryHeadGroupMemberResponse: type: object properties: @@ -35841,6 +35881,14 @@ definitions: value: type: string title: tags defines a list of tags the resource has + sp_as_delegated_agent_disabled: + type: boolean + description: >- + sp_as_delegated_agent_disabled indicates that whether bucket + owner disable SP as the upload agent. + + when a bucket is created, Sp is delegated to create object for + owner or granted users by default. pagination: type: object properties: diff --git a/x/storage/types/message.go b/x/storage/types/message.go index 854b9cd95..13e288da8 100644 --- a/x/storage/types/message.go +++ b/x/storage/types/message.go @@ -62,11 +62,10 @@ const ( TypeMsgSetTag = "set_tag" - MaxGroupMemberLimitOnce = 20 - MaxTagCount = 4 - MaxTagKeyLength = 32 - MaxTagValueLength = 64 - MaxBucketDelegatedAgentLimitOnce = 5 + MaxGroupMemberLimitOnce = 20 + MaxTagCount = 4 + MaxTagKeyLength = 32 + MaxTagValueLength = 64 // For discontinue MaxDiscontinueReasonLen = 128 diff --git a/x/storage/types/message_test.go b/x/storage/types/message_test.go index d316dc0ae..9c1fef405 100644 --- a/x/storage/types/message_test.go +++ b/x/storage/types/message_test.go @@ -1,8 +1,6 @@ package types import ( - "encoding/hex" - "fmt" "strings" "testing" @@ -472,17 +470,3 @@ func TestMsgRenewGroupMember_ValidateBasic(t *testing.T) { }) } } - -func TestMsgSealObjetbytes(t *testing.T) { - object := MsgSealObject{ - Operator: "abc", - BucketName: "abc", - ObjectName: "O", - GlobalVirtualGroupId: 32, - SecondarySpBlsAggSignatures: []byte{'a'}, - } - fmt.Println(hex.EncodeToString(object.GetSignBytes())) - //7b226275636b65745f6e616d65223a22616263222c22676c6f62616c5f7669727475616c5f67726f75705f6964223a33322c226f626a6563745f6e616d65223a224f222c226f70657261746f72223a22616263222c227365636f6e646172795f73705f626c735f6167675f7369676e617475726573223a2259513d3d227d - //7b226275636b65745f6e616d65223a22616263222c226578706563745f636865636b73756d73223a5b5d2c22676c6f62616c5f7669727475616c5f67726f75705f6964223a33322c226f626a6563745f6e616d65223a224f222c226f70657261746f72223a22616263222c227365636f6e646172795f73705f626c735f6167675f7369676e617475726573223a2259513d3d227d - //7b226275636b65745f6e616d65223a22616263222c226578706563745f636865636b73756d73223a5b5d2c22676c6f62616c5f7669727475616c5f67726f75705f6964223a33322c226f626a6563745f6e616d65223a224f222c226f70657261746f72223a22616263222c227365636f6e646172795f73705f626c735f6167675f7369676e617475726573223a2259513d3d227d -} diff --git a/x/storage/types/options.go b/x/storage/types/options.go index a8252a453..51f42cab6 100644 --- a/x/storage/types/options.go +++ b/x/storage/types/options.go @@ -1,9 +1,10 @@ package types import ( - sdk "github.com/cosmos/cosmos-sdk/types" time "time" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/bnb-chain/greenfield/types/common" ) From c0cf2b1060649ed514940a500acfab477ced6fa0 Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Thu, 7 Mar 2024 10:33:01 +0800 Subject: [PATCH 05/10] disable discontinue --- go.mod | 2 +- go.sum | 4 ++-- x/storage/keeper/abci.go | 11 +++++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index d9ed57788..1c6b6fa79 100644 --- a/go.mod +++ b/go.mod @@ -179,7 +179,7 @@ replace ( github.com/cometbft/cometbft => github.com/bnb-chain/greenfield-cometbft v1.2.0 github.com/cometbft/cometbft-db => github.com/bnb-chain/greenfield-cometbft-db v0.8.1-alpha.1 github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 - github.com/cosmos/cosmos-sdk => github.com/bnb-chain/greenfield-cosmos-sdk v1.4.1-0.20240221065455-ef1f7f0d2659 + github.com/cosmos/cosmos-sdk => github.com/bnb-chain/greenfield-cosmos-sdk v1.4.1-0.20240305064839-3cb07f5a365c github.com/cosmos/iavl => github.com/bnb-chain/greenfield-iavl v0.20.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 github.com/wercker/journalhook => github.com/wercker/journalhook v0.0.0-20230927020745-64542ffa4117 diff --git a/go.sum b/go.sum index c2441884b..71e0663e1 100644 --- a/go.sum +++ b/go.sum @@ -163,8 +163,8 @@ github.com/bnb-chain/greenfield-cometbft v1.2.0 h1:LTStppZS9WkVj0TfEYKkk5OAQDGfY github.com/bnb-chain/greenfield-cometbft v1.2.0/go.mod h1:WVOEZ59UYM2XePQH47/IQfcInspDn8wbRXhFSJrbU1c= github.com/bnb-chain/greenfield-cometbft-db v0.8.1-alpha.1 h1:XcWulGacHVRiSCx90Q8Y//ajOrLNBQWR/KDB89dy3cU= github.com/bnb-chain/greenfield-cometbft-db v0.8.1-alpha.1/go.mod h1:ey1CiK4bYo1RBNJLRiVbYr5CMdSxci9S/AZRINLtppI= -github.com/bnb-chain/greenfield-cosmos-sdk v1.4.1-0.20240221065455-ef1f7f0d2659 h1:ytOD5CuSsmV9pe9HXXJEsxiDKxHzOYShSG8s21Yw5Xw= -github.com/bnb-chain/greenfield-cosmos-sdk v1.4.1-0.20240221065455-ef1f7f0d2659/go.mod h1:XF8U3VN1euzLkIR5xiSNyQSnBabvnD86oz6fgdrpteQ= +github.com/bnb-chain/greenfield-cosmos-sdk v1.4.1-0.20240305064839-3cb07f5a365c h1:H0Rvx1FTVNgmXnUYvG0z3oFVvixPzlUHGN2JOPoNszM= +github.com/bnb-chain/greenfield-cosmos-sdk v1.4.1-0.20240305064839-3cb07f5a365c/go.mod h1:XF8U3VN1euzLkIR5xiSNyQSnBabvnD86oz6fgdrpteQ= github.com/bnb-chain/greenfield-cosmos-sdk/api v0.0.0-20230816082903-b48770f5e210 h1:GHPbV2bC+gmuO6/sG0Tm8oGal3KKSRlyE+zPscDjlA8= github.com/bnb-chain/greenfield-cosmos-sdk/api v0.0.0-20230816082903-b48770f5e210/go.mod h1:vhsZxXE9tYJeYB5JR4hPhd6Pc/uPf7j1T8IJ7p9FdeM= github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20230816082903-b48770f5e210 h1:FLVOn4+OVbsKi2+YJX5kmD27/4dRu4FW7xCXFhzDO5s= diff --git a/x/storage/keeper/abci.go b/x/storage/keeper/abci.go index 01877b4b6..e0771277e 100644 --- a/x/storage/keeper/abci.go +++ b/x/storage/keeper/abci.go @@ -38,11 +38,14 @@ func EndBlocker(ctx sdk.Context, keeper Keeper) { } // delete buckets - _, err = keeper.DeleteDiscontinueBucketsUntil(ctx, blockTime, deletionMax-deleted) - if err != nil { - ctx.Logger().Error("should not happen, fail to delete buckets, err " + err.Error()) - panic("should not happen") + if ctx.BlockHeight() <= 5946511 && ctx.ChainID() == "greenfield_5600-1" { + _, err = keeper.DeleteDiscontinueBucketsUntil(ctx, blockTime, deletionMax-deleted) + if err != nil { + ctx.Logger().Error("should not happen, fail to delete buckets, err " + err.Error()) + panic("should not happen") + } } + keeper.PersistDeleteInfo(ctx) // Permission GC From 2960ad65b43946428127e04b3f61d2d8857329d9 Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Fri, 8 Mar 2024 11:01:27 +0800 Subject: [PATCH 06/10] fix gas limit --- app/upgrade.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/app/upgrade.go b/app/upgrade.go index 165c2995b..cc1dc0bf2 100644 --- a/app/upgrade.go +++ b/app/upgrade.go @@ -206,13 +206,6 @@ func (app *App) registerPawneeUpgradeHandler() { app.Logger().Info("upgrade to ", plan.Name) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgUpdateObjectContent{}), 1.2e3)) app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgCancelUpdateObjectContent{}), 1.2e3)) - - // todo - app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgToggleSPAsDelegatedAgent{}), 1.2e3)) - app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateCreateObject{}), 1.2e3)) - app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateUpdateObjectContent{}), 1.2e3)) - app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgSealObjectV2{}), 1.2e3)) - return app.mm.RunMigrations(ctx, app.configurator, fromVM) }) @@ -230,6 +223,10 @@ func (app *App) registerSerengetiUpgradeHandler() { func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { app.Logger().Info("upgrade to ", plan.Name) app.VirtualgroupKeeper.MigrateGlobalVirtualGroupFamiliesForSP(ctx) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgToggleSPAsDelegatedAgent{}), 1.2e3)) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateCreateObject{}), 1.2e3)) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgDelegateUpdateObjectContent{}), 1.2e3)) + app.GashubKeeper.SetMsgGasParams(ctx, *gashubtypes.NewMsgGasParamsWithFixedGas(sdk.MsgTypeURL(&storagemoduletypes.MsgSealObjectV2{}), 1.2e2)) return app.mm.RunMigrations(ctx, app.configurator, fromVM) }) From 1f42ed9688a3bf3e54742dde75c1c8dd01d41a7f Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Fri, 8 Mar 2024 11:21:35 +0800 Subject: [PATCH 07/10] refine code --- e2e/tests/storage_test.go | 25 ++-------------- proto/greenfield/storage/types.proto | 2 +- x/permission/types/types.go | 43 +++++++++++++--------------- x/storage/types/errors.go | 3 +- x/storage/types/types.pb.go | 2 +- 5 files changed, 25 insertions(+), 50 deletions(-) diff --git a/e2e/tests/storage_test.go b/e2e/tests/storage_test.go index 4afce98f1..46d6c6e9d 100644 --- a/e2e/tests/storage_test.go +++ b/e2e/tests/storage_test.go @@ -11,8 +11,6 @@ import ( "testing" "time" - permissiontypes "github.com/bnb-chain/greenfield/x/permission/types" - sdkmath "cosmossdk.io/math" ctypes "github.com/cometbft/cometbft/rpc/core/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -2455,8 +2453,6 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { s.Require().True(found) bucketOwner := s.GenAndChargeAccounts(1, 1000000)[0] - user := s.GenAndChargeAccounts(1, 100)[0] - bucketName := storageutils.GenRandomBucketName() objectName := storageutils.GenRandomObjectName() @@ -2487,7 +2483,7 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { contextType := "text/event-stream" msgDelegateCreateObject := storagetypes.NewMsgDelegateCreateObject( sp.OperatorKey.GetAddr(), - user.GetAddr(), + bucketOwner.GetAddr(), bucketName, objectName, uint64(payloadSize), @@ -2495,21 +2491,6 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { nil, contextType, storagetypes.REDUNDANCY_EC_TYPE) - s.SendTxBlockWithExpectErrorString(msgDelegateCreateObject, sp.OperatorKey, "has no CreateObject permission of the bucket") - - statement := &permissiontypes.Statement{ - Actions: []permissiontypes.ActionType{permissiontypes.ACTION_CREATE_OBJECT, permissiontypes.ACTION_UPDATE_OBJECT_CONTENT}, - Effect: permissiontypes.EFFECT_ALLOW, - Resources: []string{fmt.Sprintf("grn:o::%s/*", bucketName)}, - } - - principal := permissiontypes.NewPrincipalWithAccount(user.GetAddr()) - msgPutPolicy := storagetypes.NewMsgPutPolicy(bucketOwner.GetAddr(), types2.NewBucketGRN(bucketName).String(), - principal, []*permissiontypes.Statement{statement}, nil) - fmt.Println(types2.NewBucketGRN(bucketName).String()) - - s.SendTxBlock(bucketOwner, msgPutPolicy) - s.SendTxBlock(sp.OperatorKey, msgDelegateCreateObject) headObjectReq := storagetypes.QueryHeadObjectRequest{ @@ -2519,7 +2500,6 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { headObjectResp, err := s.Client.HeadObject(ctx, &headObjectReq) s.Require().NoError(err) s.Require().Equal(objectName, headObjectResp.ObjectInfo.ObjectName) - s.Require().Equal(user.GetAddr().String(), headObjectResp.ObjectInfo.Creator) s.Require().Equal(bucketOwner.GetAddr().String(), headObjectResp.ObjectInfo.Owner) s.Require().Equal(0, len(headObjectResp.ObjectInfo.Checksums)) @@ -2550,7 +2530,6 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { headObjectResp, err = s.Client.HeadObject(ctx, &headObjectReq) s.Require().NoError(err) s.Require().Equal(objectName, headObjectResp.ObjectInfo.ObjectName) - s.Require().Equal(user.GetAddr().String(), headObjectResp.ObjectInfo.Creator) s.Require().Equal(bucketOwner.GetAddr().String(), headObjectResp.ObjectInfo.Owner) s.Require().Equal(expectChecksum, headObjectResp.ObjectInfo.Checksums) @@ -2564,7 +2543,7 @@ func (s *StorageTestSuite) TestCreateObjectByDelegatedAgents() { newExpectChecksum := [][]byte{newChecksum, newChecksum, newChecksum, newChecksum, newChecksum, newChecksum, newChecksum} msgUpdateObject := storagetypes.NewMsgDelegateUpdateObjectContent(sp.OperatorKey.GetAddr(), - user.GetAddr(), bucketName, objectName, newPayloadSize, nil) + bucketOwner.GetAddr(), bucketName, objectName, newPayloadSize, nil) s.SendTxBlock(sp.OperatorKey, msgUpdateObject) s.T().Logf("msgUpdateObject %s", msgUpdateObject.String()) diff --git a/proto/greenfield/storage/types.proto b/proto/greenfield/storage/types.proto index 54cdfdd41..ecd89b8ef 100644 --- a/proto/greenfield/storage/types.proto +++ b/proto/greenfield/storage/types.proto @@ -40,7 +40,7 @@ message BucketInfo { // tags defines a list of tags the bucket has ResourceTags tags = 11; // sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - // when a bucket is created, Sp is delegated to create object for owner or granted users by default. + // when a bucket is created, by default, this is false, means SP is allowed to create object for delegator bool sp_as_delegated_agent_disabled = 12; } diff --git a/x/permission/types/types.go b/x/permission/types/types.go index ae16f3734..a4852aaf6 100644 --- a/x/permission/types/types.go +++ b/x/permission/types/types.go @@ -28,13 +28,12 @@ var ( ACTION_UPDATE_BUCKET_INFO: true, ACTION_DELETE_BUCKET: true, - ACTION_CREATE_OBJECT: true, - ACTION_DELETE_OBJECT: true, - ACTION_GET_OBJECT: true, - ACTION_COPY_OBJECT: true, - ACTION_EXECUTE_OBJECT: true, - ACTION_LIST_OBJECT: true, - ACTION_UPDATE_OBJECT_CONTENT: true, + ACTION_CREATE_OBJECT: true, + ACTION_DELETE_OBJECT: true, + ACTION_GET_OBJECT: true, + ACTION_COPY_OBJECT: true, + ACTION_EXECUTE_OBJECT: true, + ACTION_LIST_OBJECT: true, ACTION_TYPE_ALL: true, } @@ -42,26 +41,24 @@ var ( ACTION_UPDATE_BUCKET_INFO: true, ACTION_DELETE_BUCKET: true, - ACTION_CREATE_OBJECT: true, - ACTION_DELETE_OBJECT: true, - ACTION_GET_OBJECT: true, - ACTION_COPY_OBJECT: true, - ACTION_EXECUTE_OBJECT: true, - ACTION_LIST_OBJECT: true, - ACTION_UPDATE_OBJECT_INFO: true, - ACTION_UPDATE_OBJECT_CONTENT: true, + ACTION_CREATE_OBJECT: true, + ACTION_DELETE_OBJECT: true, + ACTION_GET_OBJECT: true, + ACTION_COPY_OBJECT: true, + ACTION_EXECUTE_OBJECT: true, + ACTION_LIST_OBJECT: true, + ACTION_UPDATE_OBJECT_INFO: true, ACTION_TYPE_ALL: true, } ObjectAllowedActions = map[ActionType]bool{ - ACTION_UPDATE_OBJECT_INFO: true, - ACTION_CREATE_OBJECT: true, - ACTION_DELETE_OBJECT: true, - ACTION_GET_OBJECT: true, - ACTION_COPY_OBJECT: true, - ACTION_EXECUTE_OBJECT: true, - ACTION_LIST_OBJECT: true, - ACTION_UPDATE_OBJECT_CONTENT: true, + ACTION_UPDATE_OBJECT_INFO: true, + ACTION_CREATE_OBJECT: true, + ACTION_DELETE_OBJECT: true, + ACTION_GET_OBJECT: true, + ACTION_COPY_OBJECT: true, + ACTION_EXECUTE_OBJECT: true, + ACTION_LIST_OBJECT: true, ACTION_TYPE_ALL: true, } diff --git a/x/storage/types/errors.go b/x/storage/types/errors.go index fb1a1fab3..e490b89f8 100644 --- a/x/storage/types/errors.go +++ b/x/storage/types/errors.go @@ -34,8 +34,7 @@ var ( ErrUpdateObjectNotAllowed = errors.Register(ModuleName, 1126, "Object is not allowed to update") ErrObjectIsUpdating = errors.Register(ModuleName, 1127, "Object is being updated") ErrObjectIsNotUpdating = errors.Register(ModuleName, 1128, "Object is not being updated") - ErrObjectChecksumsPresent = errors.Register(ModuleName, 1129, "Object checksums is present") - ErrObjectChecksumsMissing = errors.Register(ModuleName, 1130, "Object checksums is missing") + ErrObjectChecksumsMissing = errors.Register(ModuleName, 1129, "Object checksums is missing") ErrInvalidCrossChainPackage = errors.Register(ModuleName, 3000, "invalid cross chain package") ErrAlreadyMirrored = errors.Register(ModuleName, 3001, "resource is already mirrored") diff --git a/x/storage/types/types.pb.go b/x/storage/types/types.pb.go index 44eb33313..743b79003 100644 --- a/x/storage/types/types.pb.go +++ b/x/storage/types/types.pb.go @@ -52,7 +52,7 @@ type BucketInfo struct { // tags defines a list of tags the bucket has Tags *ResourceTags `protobuf:"bytes,11,opt,name=tags,proto3" json:"tags,omitempty"` // sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - // when a bucket is created, Sp is delegated to create object for owner or granted users by default. + // when a bucket is created, by default, this is false, means SP is allowed to create object for delegator SpAsDelegatedAgentDisabled bool `protobuf:"varint,12,opt,name=sp_as_delegated_agent_disabled,json=spAsDelegatedAgentDisabled,proto3" json:"sp_as_delegated_agent_disabled,omitempty"` } From 8be37d97a2150e819e8b829df5714cec19351f76 Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Fri, 8 Mar 2024 11:31:50 +0800 Subject: [PATCH 08/10] gen swaggger --- swagger/static/swagger.yaml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/swagger/static/swagger.yaml b/swagger/static/swagger.yaml index b919da75c..84a8065d7 100644 --- a/swagger/static/swagger.yaml +++ b/swagger/static/swagger.yaml @@ -2626,12 +2626,12 @@ paths: title: tags defines a list of tags the resource has sp_as_delegated_agent_disabled: type: boolean - description: >- + title: >- sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - when a bucket is created, Sp is delegated to create object - for owner or granted users by default. + when a bucket is created, by default, this is false, means + SP is allowed to create object for delegator default: description: An unexpected error response. schema: @@ -2758,12 +2758,12 @@ paths: title: tags defines a list of tags the resource has sp_as_delegated_agent_disabled: type: boolean - description: >- + title: >- sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - when a bucket is created, Sp is delegated to create object - for owner or granted users by default. + when a bucket is created, by default, this is false, means + SP is allowed to create object for delegator default: description: An unexpected error response. schema: @@ -3912,12 +3912,12 @@ paths: title: tags defines a list of tags the resource has sp_as_delegated_agent_disabled: type: boolean - description: >- + title: >- sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - when a bucket is created, Sp is delegated to create - object for owner or granted users by default. + when a bucket is created, by default, this is false, + means SP is allowed to create object for delegator pagination: type: object properties: @@ -34895,12 +34895,12 @@ definitions: title: tags defines a list of tags the resource has sp_as_delegated_agent_disabled: type: boolean - description: >- + title: >- sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - when a bucket is created, Sp is delegated to create object for owner - or granted users by default. + when a bucket is created, by default, this is false, means SP is + allowed to create object for delegator greenfield.storage.BucketMetaData: type: object properties: @@ -35599,12 +35599,12 @@ definitions: title: tags defines a list of tags the resource has sp_as_delegated_agent_disabled: type: boolean - description: >- + title: >- sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - when a bucket is created, Sp is delegated to create object for - owner or granted users by default. + when a bucket is created, by default, this is false, means SP is + allowed to create object for delegator greenfield.storage.QueryHeadGroupMemberResponse: type: object properties: @@ -35984,12 +35984,12 @@ definitions: title: tags defines a list of tags the resource has sp_as_delegated_agent_disabled: type: boolean - description: >- + title: >- sp_as_delegated_agent_disabled indicates that whether bucket owner disable SP as the upload agent. - when a bucket is created, Sp is delegated to create object for - owner or granted users by default. + when a bucket is created, by default, this is false, means SP is + allowed to create object for delegator pagination: type: object properties: From 5247900e288f0d3a656509b41c2e104ca195c94c Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Fri, 8 Mar 2024 12:09:27 +0800 Subject: [PATCH 09/10] fix gvg test --- e2e/tests/virtualgroup_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/tests/virtualgroup_test.go b/e2e/tests/virtualgroup_test.go index ef99e0508..7ef9340ea 100644 --- a/e2e/tests/virtualgroup_test.go +++ b/e2e/tests/virtualgroup_test.go @@ -133,7 +133,7 @@ func (s *VirtualGroupTestSuite) TestBasic() { availableGvgFamilyIds := s.queryAvailableGlobalVirtualGroupFamilies([]uint32{gvg.FamilyId}) s.Require().Equal(availableGvgFamilyIds[0], gvg.FamilyId) spAvailableGvgFamilyIds := s.querySpAvailableGlobalVirtualGroupFamilies(primarySP.Info.Id) - s.Require().Equal(spAvailableGvgFamilyIds[0], gvg.FamilyId) + s.Require().Contains(spAvailableGvgFamilyIds, gvg.FamilyId) spOptimalGvgFamilyId := s.querySpOptimalGlobalVirtualGroupFamily(primarySP.Info.Id, virtualgroupmoduletypes.Strategy_Maximize_Free_Store_Size) s.Require().Equal(spOptimalGvgFamilyId, gvg.FamilyId) From 869d8d676954249a64c81c7c8f703b66b06877b3 Mon Sep 17 00:00:00 2001 From: Alexgao001 Date: Tue, 12 Mar 2024 20:29:42 +0800 Subject: [PATCH 10/10] fix comment --- x/storage/keeper/msg_server.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/x/storage/keeper/msg_server.go b/x/storage/keeper/msg_server.go index d6e562cb1..c9c39808c 100644 --- a/x/storage/keeper/msg_server.go +++ b/x/storage/keeper/msg_server.go @@ -111,11 +111,7 @@ func (k msgServer) ToggleSPAsDelegatedAgent(goCtx context.Context, msg *storaget if msg.Operator != bucketInfo.Owner { return nil, types.ErrAccessDenied.Wrapf("Only the bucket owner(%s) can toggle", bucketInfo.Owner) } - if bucketInfo.SpAsDelegatedAgentDisabled { - bucketInfo.SpAsDelegatedAgentDisabled = false - } else { - bucketInfo.SpAsDelegatedAgentDisabled = true - } + bucketInfo.SpAsDelegatedAgentDisabled = !bucketInfo.SpAsDelegatedAgentDisabled k.SetBucketInfo(ctx, bucketInfo) return &types.MsgToggleSPAsDelegatedAgentResponse{}, nil