diff --git a/.gitignore b/.gitignore index b7b5babd83..125c90cf91 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,7 @@ vendor/ # VS Code .history/ .vscode/ -__debug_bin +__debug_bin* # Eclipse .project diff --git a/app/app.go b/app/app.go index 556e2d5df0..97be31f7fa 100644 --- a/app/app.go +++ b/app/app.go @@ -505,7 +505,7 @@ func New( app.MsgFeesKeeper = msgfeeskeeper.NewKeeper( appCodec, keys[msgfeestypes.StoreKey], app.GetSubspace(msgfeestypes.ModuleName), authtypes.FeeCollectorName, pioconfig.GetProvenanceConfig().FeeDenom, - app.Simulate, encodingConfig.TxConfig.TxDecoder(), interfaceRegistry, + app.SimulateProv, encodingConfig.TxConfig.TxDecoder(), interfaceRegistry, ) pioMsgFeesRouter := app.MsgServiceRouter().(*piohandlers.PioMsgServiceRouter) @@ -731,6 +731,10 @@ func New( appCodec, runtime.NewKVStoreService(keys[govtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.DistrKeeper, app.BaseApp.MsgServiceRouter(), govtypes.Config{MaxMetadataLen: 10000}, govAuthority, ) + + // Set legacy router for backwards compatibility with gov v1beta1 + govKeeper.SetLegacyRouter(govRouter) + app.GovKeeper = *govKeeper.SetHooks( govtypes.NewMultiGovHooks( // app.SanctionKeeper // TODO[1760]: sanction @@ -1102,7 +1106,7 @@ func New( app.SetEndBlocker(app.EndBlocker) - app.SetAggregateEventsFunc(piohandlers.AggregateEvents) // TODO[1760]: event-history + app.SetAggregateEventsFunc(piohandlers.AggregateEvents) // Add upgrade plans for each release. This must be done before the baseapp seals via LoadLatestVersion() down below. InstallCustomUpgradeHandlers(app) diff --git a/app/params/proto.go b/app/params/proto.go index af70d9429c..8107f1b3bf 100644 --- a/app/params/proto.go +++ b/app/params/proto.go @@ -4,9 +4,14 @@ package params import ( + "cosmossdk.io/x/tx/signing" "github.com/cosmos/cosmos-sdk/codec" + amino "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/tx" + "github.com/cosmos/gogoproto/proto" ) // MakeTestEncodingConfig creates an EncodingConfig for a non-amino based test configuration. @@ -14,8 +19,19 @@ import ( // App user shouldn't create new codecs - use the app.AppCodec instead. // [DEPRECATED] func MakeTestEncodingConfig() EncodingConfig { - cdc := codec.NewLegacyAmino() - interfaceRegistry := types.NewInterfaceRegistry() + cdc := amino.NewLegacyAmino() + signingOptions := signing.Options{ + AddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(), + }, + ValidatorAddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(), + }, + } + interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ + ProtoFiles: proto.HybridResolver, + SigningOptions: signingOptions, + }) marshaler := codec.NewProtoCodec(interfaceRegistry) return EncodingConfig{ diff --git a/app/sim_bench_test.go b/app/sim_bench_test.go index be6aaacd21..507a1466cd 100644 --- a/app/sim_bench_test.go +++ b/app/sim_bench_test.go @@ -6,7 +6,6 @@ import ( "fmt" "os" "testing" - "time" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" @@ -41,7 +40,6 @@ func BenchmarkFullAppSimulation(b *testing.B) { app := New(logger, db, nil, true, map[int64]bool{}, b.TempDir(), simcli.FlagPeriodValue, MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, interBlockCacheOpt()) // run randomized simulation - // TODO[1760]: event-history: Add _ return arg back in. _, simParams, simErr := simulation.SimulateFromSeed( b, os.Stdout, @@ -91,9 +89,7 @@ func BenchmarkInvariants(b *testing.B) { app := New(logger, db, nil, true, map[int64]bool{}, b.TempDir(), simcli.FlagPeriodValue, MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, interBlockCacheOpt()) // run randomized simulation - // TODO[1760]: event-history: Add lastBlockTime return arg back in. - lastBlockTime := time.Unix(0, 0) - _, simParams, simErr := simulation.SimulateFromSeed( + _, lastBlockTime, simParams, simErr := simulation.SimulateFromSeedProv( b, os.Stdout, app.BaseApp, diff --git a/app/sim_test.go b/app/sim_test.go index c40ff33d44..ccb4d3f2d0 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -144,7 +144,6 @@ func TestFullAppSimulation(t *testing.T) { fmt.Printf("running provenance full app simulation\n") // run randomized simulation - // TODO[1760]: event-history: Add _ return arg back in. _, simParams, simErr := simulation.SimulateFromSeed( t, os.Stdout, @@ -182,7 +181,6 @@ func TestSimple(t *testing.T) { require.Equal(t, "provenanced", app.Name()) // run randomized simulation - // TODO[1760]: event-history: Add _ return arg back in. _, _, simErr := simulation.SimulateFromSeed( t, os.Stdout, @@ -223,9 +221,7 @@ func TestAppImportExport(t *testing.T) { fmt.Printf("running provenance test import export\n") // Run randomized simulation - // TODO[1760]: event-history: Add lastBlockTime return arg back in. - lastBlockTime := time.Unix(0, 0) - _, simParams, simErr := simulation.SimulateFromSeed( + _, lastBlockTime, simParams, simErr := simulation.SimulateFromSeedProv( t, os.Stdout, app.BaseApp, @@ -340,9 +336,7 @@ func TestAppSimulationAfterImport(t *testing.T) { app := New(logger, db, nil, true, map[int64]bool{}, home, simcli.FlagPeriodValue, MakeEncodingConfig(), simtestutil.EmptyAppOptions{}, fauxMerkleModeOpt) // Run randomized simulation - // TODO[1760]: event-history: Add lastBlockTime return arg back in. - lastBlockTime := time.Unix(0, 0) - stopEarly, simParams, simErr := simulation.SimulateFromSeed( + stopEarly, lastBlockTime, simParams, simErr := simulation.SimulateFromSeedProv( t, os.Stdout, app.BaseApp, @@ -390,7 +384,6 @@ func TestAppSimulationAfterImport(t *testing.T) { require.NoError(t, err, "InitChain") simcli.FlagGenesisTimeValue = lastBlockTime.Unix() - // TODO[1760]: event-history: Add _ return arg back in. _, _, err = simulation.SimulateFromSeed( t, os.Stdout, @@ -460,7 +453,6 @@ func TestAppStateDeterminism(t *testing.T) { config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed, ) - // TODO[1760]: event-history: Add _ return arg back in. _, _, err := simulation.SimulateFromSeed( t, os.Stdout, diff --git a/app/test_helpers.go b/app/test_helpers.go index c3d08c85f5..84b40f8d12 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -24,6 +24,7 @@ import ( sdkmath "cosmossdk.io/math" dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/baseapp" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -76,7 +77,7 @@ type SetupOptions struct { ChainID string } -func setup(t *testing.T, withGenesis bool, invCheckPeriod uint) (*App, GenesisState) { +func setup(t *testing.T, withGenesis bool, invCheckPeriod uint, chainID string) (*App, GenesisState) { db := dbm.NewMemDB() encCdc := MakeEncodingConfig() // set default config if not set by the flow @@ -84,7 +85,7 @@ func setup(t *testing.T, withGenesis bool, invCheckPeriod uint) (*App, GenesisSt pioconfig.SetProvenanceConfig("", 0) } - app := New(loggerMaker(), db, nil, true, map[int64]bool{}, t.TempDir(), invCheckPeriod, encCdc, simtestutil.EmptyAppOptions{}) + app := New(loggerMaker(), db, nil, true, map[int64]bool{}, t.TempDir(), invCheckPeriod, encCdc, simtestutil.EmptyAppOptions{}, baseapp.SetChainID(chainID)) if withGenesis { return app, NewDefaultGenesisState(encCdc.Marshaler) } @@ -274,7 +275,7 @@ func genesisStateWithValSet(t *testing.T, // SetupQuerier initializes a new App without genesis and without calling InitChain. func SetupQuerier(t *testing.T) *App { - app, _ := setup(t, false, 0) + app, _ := setup(t, false, 0, "") return app } @@ -285,7 +286,7 @@ func SetupQuerier(t *testing.T) *App { func SetupWithGenesisValSet(t *testing.T, chainID string, valSet *cmttypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *App { t.Helper() - app, genesisState := setup(t, true, 5) + app, genesisState := setup(t, true, 5, chainID) genesisState = genesisStateWithValSet(t, app, genesisState, valSet, genAccs, balances...) stateBytes, err := json.MarshalIndent(genesisState, "", " ") @@ -534,7 +535,7 @@ func SetupWithGenesisRewardsProgram(t *testing.T, nextRewardProgramID uint64, ge } } - app, genesisState := setup(t, true, 0) + app, genesisState := setup(t, true, 0, "") genesisState = genesisStateWithValSet(t, app, genesisState, valSet, genAccs, balances...) genesisState = genesisStateWithRewards(t, app, genesisState, nextRewardProgramID, genesisRewards) diff --git a/go.mod b/go.mod index 9a3c083b91..5a4e33b609 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/cosmos/cosmos-proto v1.0.0-beta.4 github.com/cosmos/cosmos-sdk v0.50.4 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/gogoproto v1.4.11 + github.com/cosmos/gogoproto v1.4.12 github.com/cosmos/ibc-apps/modules/async-icq/v8 v8.0.0 github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.0.0 @@ -219,7 +219,7 @@ replace ( // TODO[1760]: wasm: Put this CosmWasm/wasmd replace back with an updated version (or delete it). // github.com/CosmWasm/wasmd => github.com/provenance-io/wasmd v0.30.0-pio-5 // TODO[1760]: sdk: Put this replace back with an updated version of the sdk from our fork. - github.com/cosmos/cosmos-sdk => github.com/provenance-io/cosmos-sdk v0.50.5-pio-1 + github.com/cosmos/cosmos-sdk => github.com/provenance-io/cosmos-sdk v0.50.5-pio-2 // TODO[1760]: Update once async-icq creates tag with our changes https://github.com/cosmos/ibc-apps/pull/168 github.com/cosmos/ibc-apps/modules/async-icq/v8 => github.com/provenance-io/ibc-apps/modules/async-icq/v8 v8.0.0-prov-1 diff --git a/go.sum b/go.sum index 8a148d9b2a..eb9f9d594b 100644 --- a/go.sum +++ b/go.sum @@ -366,8 +366,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= -github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= +github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= +github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= @@ -916,8 +916,8 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/provenance-io/cosmos-sdk v0.50.5-pio-1 h1:GvyZAstTVB9//RugyoUqTRez19qbEWrb2dKNIKbKz3U= -github.com/provenance-io/cosmos-sdk v0.50.5-pio-1/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= +github.com/provenance-io/cosmos-sdk v0.50.5-pio-2 h1:qK+ZN2jBBFEOZZOpefAMBrU5mWj+znU87Gvxbsl8feA= +github.com/provenance-io/cosmos-sdk v0.50.5-pio-2/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= github.com/provenance-io/ibc-apps/modules/async-icq/v8 v8.0.0-prov-1 h1:p+7pxHB0ukO2aow+M6uW9gHgeQl7YJyYGyMSKHZ5My8= github.com/provenance-io/ibc-apps/modules/async-icq/v8 v8.0.0-prov-1/go.mod h1:tObW9uxibh5Z22CtOaHVeTDotCSMyc/2B4MrYdaViBo= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= diff --git a/internal/handlers/bank_send_restriction_test.go b/internal/handlers/bank_send_restriction_test.go index b0f0061076..2bc72531f2 100644 --- a/internal/handlers/bank_send_restriction_test.go +++ b/internal/handlers/bank_send_restriction_test.go @@ -3,6 +3,7 @@ package handlers_test import ( "fmt" "testing" + "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -177,15 +178,18 @@ func ConstructAndSendTx(tt *testing.T, app piosimapp.App, ctx sdk.Context, acct encCfg := moduletestutil.MakeTestEncodingConfig() fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit()))) acct = app.AccountKeeper.GetAccount(ctx, acct.GetAddress()).(*authtypes.BaseAccount) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct, ctx.ChainID(), msg) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct, ctx.ChainID(), msg) require.NoError(tt, err, "SignTxAndGetBytes") - // TODO[1760]: finalize-block: Uncomment the rest of this func. - _ = txBytes - /* - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(tt, expectedCode, res.Code, "res=%+v", res) - if len(expectedError) > 0 { - require.Contains(tt, res.Log, expectedError, "DeliverTx result.Log") - } - */ + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Time: time.Now().UTC(), + Txs: [][]byte{txBytes}, + }, + ) + require.NoError(tt, err, "FinalizeBlock expected no error") + require.Len(tt, res.TxResults, 1, "TxResults expected len not met") + require.Equal(tt, int(expectedCode), int(res.TxResults[0].Code), "res=%+v", res) + if len(expectedError) > 0 { + require.Contains(tt, res.TxResults[0].Log, expectedError, "DeliverTx result.Log") + } } diff --git a/internal/handlers/msg_service_router_test.go b/internal/handlers/msg_service_router_test.go index 41997a70fe..f3a52e5cb7 100644 --- a/internal/handlers/msg_service_router_test.go +++ b/internal/handlers/msg_service_router_test.go @@ -19,13 +19,16 @@ import ( dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" "github.com/cosmos/cosmos-sdk/types/tx/signing" + authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + authztypes "github.com/cosmos/cosmos-sdk/x/authz" "github.com/cosmos/cosmos-sdk/x/bank/testutil" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" @@ -164,10 +167,21 @@ func jsonArrayJoin(entries ...string) string { func getLastProposal(t *testing.T, ctx sdk.Context, app *piosimapp.App) *govtypesv1.Proposal { var rv *govtypesv1.Proposal - // TODO: proposals: Figure out how to get the most recent proposal. - // Propbably involves app.GovKeeper.Proposals.Walk(...). - require.NotNil(t, rv, "no gov props found") - return nil + var highestProposalID uint64 = 0 + + err := app.GovKeeper.Proposals.Walk(ctx, nil, func(key uint64, value govtypesv1.Proposal) (stop bool, err error) { + if value.Id > highestProposalID { + highestProposalID = value.Id + rv = &value + } + return false, nil + }) + if err != nil { + t.Fatalf("Error walking through proposals: %v", err) + } + + require.NotNil(t, rv, "no gov proposals found") + return rv } func TestRegisterMsgService(t *testing.T) { @@ -248,17 +262,19 @@ func TestFailedTx(tt *testing.T) { stopIfFailed(tt) tt.Run("no msg-based fee", func(t *testing.T) { - // TODO[1760]: finalize-block: Uncomment these lines. - _ = encCfg - /* - msg := banktypes.NewMsgSend(addr1, addr2, sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 2))) - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit()))) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - t.Logf("Events:\n%s\n", eventsString(res.Events, true)) - assert.Equal(t, 5, int(res.Code), "res=%+v", res) - */ + msg := banktypes.NewMsgSend(addr1, addr2, sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 2))) + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit()))) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + assert.NoError(t, err, "FinalizeBlock expected no error") + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.Equal(t, uint32(0x5), blockRes.TxResults[0].Code, "code 5 insufficient funds error") // Check both account balances after transaction // the 150000stake should have been deducted from account 1, and the send should have failed. @@ -279,7 +295,7 @@ func TestFailedTx(tt *testing.T) { } expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 150000)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) // Give acct1 150000stake back. @@ -292,15 +308,18 @@ func TestFailedTx(tt *testing.T) { msgbasedFee := msgfeestypes.NewMsgFee(sdk.MsgTypeURL(msg), sdk.NewInt64Coin(sdk.DefaultBondDenom, 10), "", 0) require.NoError(t, app.MsgFeesKeeper.SetMsgFee(ctx, msgbasedFee), "setting fee 10stake") acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) - // TODO[1760]: finalize-block: Uncomment these lines. - /* - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())+10)) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - t.Logf("Events:\n%s\n", eventsString(res.Events, true)) - assert.Equal(t, 5, int(res.Code), "res=%+v", res) - */ + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())+10)) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + assert.NoError(t, err, "FinalizeBlock expected no error") + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.Equal(t, uint32(0x5), blockRes.TxResults[0].Code, "code 5 insufficient funds error") // Check both account balances after transaction // the 150000 should have been deducted from account 1, and the send should have failed. @@ -321,7 +340,7 @@ func TestFailedTx(tt *testing.T) { } expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit()))))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) } @@ -352,18 +371,18 @@ func TestMsgService(tt *testing.T) { // Sending 100hotdog with fees of 150000stake. // account 1 will lose 100hotdog,150000stake // account 2 will gain 100hotdog - - // TODO[1760]: finalize-block: Uncomment these lines. - _ = encCfg - /* - msg := banktypes.NewMsgSend(addr1, addr2, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 100))) - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 150000)) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - t.Logf("Events:\n%s\n", eventsString(res.Events, true)) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + msg := banktypes.NewMsgSend(addr1, addr2, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 100))) + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 150000)) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.NoError(t, err, "FinalizeBlock() error") // Check both account balances after transaction addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() @@ -382,8 +401,7 @@ func TestMsgService(tt *testing.T) { } // fee charge in antehandler expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit()))))...) - - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) tt.Run("800hotdog fee associated with msg type", func(t *testing.T) { @@ -395,15 +413,17 @@ func TestMsgService(tt *testing.T) { msgbasedFee := msgfeestypes.NewMsgFee(sdk.MsgTypeURL(msg), sdk.NewInt64Coin("hotdog", 800), "", 0) require.NoError(t, app.MsgFeesKeeper.SetMsgFee(ctx, msgbasedFee), "setting fee 800hotdog") acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) - // TODO[1760]: finalize-block: Uncomment these lines. - /* - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())+100), sdk.NewInt64Coin("hotdog", 800)) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - t.Logf("Events:\n%s\n", eventsString(res.Events, true)) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())+100), sdk.NewInt64Coin("hotdog", 800)) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.NoError(t, err, "FinalizeBlock() error") addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() addr2AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr2).String() @@ -431,7 +451,7 @@ func TestMsgService(tt *testing.T) { // swept fee amount expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 100)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) tt.Run("10stake fee associated with msg type", func(t *testing.T) { @@ -440,15 +460,17 @@ func TestMsgService(tt *testing.T) { require.NoError(t, app.MsgFeesKeeper.SetMsgFee(ctx, msgbasedFee), "setting fee 10stake") acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) - // TODO[1760]: finalize-block: Uncomment these lines. - /* - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())+111)) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - t.Logf("Events:\n%s\n", eventsString(res.Events, true)) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())+111)) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.NoError(t, err, "FinalizeBlock() error") addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() addr2AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr2).String() @@ -476,7 +498,7 @@ func TestMsgService(tt *testing.T) { // swept fee amount expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 101)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) } @@ -509,15 +531,16 @@ func TestMsgServiceMsgFeeWithRecipient(t *testing.T) { msgbasedFee := msgfeestypes.NewMsgFee(sdk.MsgTypeURL(msg), sdk.NewInt64Coin("hotdog", 800), addr2.String(), 7_500) require.NoError(t, app.MsgFeesKeeper.SetMsgFee(ctx, msgbasedFee), "setting fee 800hotdog addr2 75%") - // TODO[1760]: finalize-block: Uncomment these lines. - _ = encCfg - /* - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(gasAmt)), sdk.NewInt64Coin("hotdog", 800)) - txBytes, err := SignTxAndGetBytes(gasAmt, fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(gasAmt)), sdk.NewInt64Coin("hotdog", 800)) + txBytes, err := SignTxAndGetBytes(ctx, gasAmt, fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + assert.NoError(t, err, "FinalizeBlock() error") // Check both account balances after transaction addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() @@ -546,7 +569,7 @@ func TestMsgServiceMsgFeeWithRecipient(t *testing.T) { // fee charged for msg based fee expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), addr2.String(), sdk.NewCoins(sdk.NewInt64Coin("hotdog", 600)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) } func TestMsgServiceAuthz(tt *testing.T) { @@ -590,17 +613,19 @@ func TestMsgServiceAuthz(tt *testing.T) { // tx authz send message with correct amount of fees associated gasAmt := NewTestGasLimit() + 20_000 acct2 = app.AccountKeeper.GetAccount(ctx, acct2.GetAddress()).(*authtypes.BaseAccount) - // TODO[1760]: finalize-block: Uncomment these lines. - _ = encCfg - /* - msg := banktypes.NewMsgSend(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 100))) - msgExec := authztypes.NewMsgExec(addr2, []sdk.Msg{msg}) - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(gasAmt)), sdk.NewInt64Coin("hotdog", 800)) - txBytes, err := SignTxAndGetBytes(gasAmt, fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), &msgExec) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + + msg := banktypes.NewMsgSend(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 100))) + msgExec := authztypes.NewMsgExec(addr2, []sdk.Msg{msg}) + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(gasAmt)), sdk.NewInt64Coin("hotdog", 800)) + txBytes, err := SignTxAndGetBytes(ctx, gasAmt, fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), &msgExec) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + assert.NoError(t, err, "FinalizeBlock() error") // acct1 sent 100hotdog to acct3 with acct2 paying fees 100000stake in gas, 800hotdog msgfees addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() @@ -627,22 +652,24 @@ func TestMsgServiceAuthz(tt *testing.T) { expEvents = append(expEvents, CreateSendCoinEvents(addr2.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(gasAmt))))...) // fee charged for msg based fee expEvents = append(expEvents, CreateSendCoinEvents(addr2.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin("hotdog", 800)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) tt.Run("exec two sends", func(t *testing.T) { // send 2 successful authz messages acct2 = app.AccountKeeper.GetAccount(ctx, acct2.GetAddress()).(*authtypes.BaseAccount) - // TODO[1760]: finalize-block: Uncomment these lines. - /* - msg := banktypes.NewMsgSend(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 80))) - msgExec := authztypes.NewMsgExec(addr2, []sdk.Msg{msg, msg}) - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 300000), sdk.NewInt64Coin("hotdog", 1600)) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit()*2, fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), &msgExec) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + msg := banktypes.NewMsgSend(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 80))) + msgExec := authztypes.NewMsgExec(addr2, []sdk.Msg{msg, msg}) + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 300000), sdk.NewInt64Coin("hotdog", 1600)) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit()*2, fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), &msgExec) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + assert.NoError(t, err, "FinalizeBlock() error") // acct1 2x sent 100hotdog to acct3 with acct2 paying fees 200000stake in gas, 1600hotdog msgfees addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() @@ -670,21 +697,24 @@ func TestMsgServiceAuthz(tt *testing.T) { // fee charged for msg based fee expEvents = append(expEvents, CreateSendCoinEvents(addr2.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin("hotdog", 1600)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) tt.Run("not enough fees", func(t *testing.T) { acct2 = app.AccountKeeper.GetAccount(ctx, acct2.GetAddress()).(*authtypes.BaseAccount) - // TODO[1760]: finalize-block: Uncomment these lines. - /* - msg := banktypes.NewMsgSend(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 100))) - msgExec := authztypes.NewMsgExec(addr2, []sdk.Msg{msg}) - fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 100000), sdk.NewInt64Coin("hotdog", 799)) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), &msgExec) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(t, 13, int(res.Code), "res=%+v", res) - */ + msg := banktypes.NewMsgSend(addr1, addr3, sdk.NewCoins(sdk.NewInt64Coin("hotdog", 100))) + msgExec := authztypes.NewMsgExec(addr2, []sdk.Msg{msg}) + fees := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 100000), sdk.NewInt64Coin("hotdog", 799)) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), &msgExec) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.Equal(t, uint32(0xd), blockRes.TxResults[0].Code, "code 13 insufficient fee") // addr2 pays the base fee, but nothing else is changes. addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() @@ -724,20 +754,23 @@ func TestMsgServiceAssessMsgFee(tt *testing.T) { assert.Equal(tt, "", addr2beforeBalance, "addr2beforeBalance") stopIfFailed(tt) tt.Run("assess custom msg fee", func(t *testing.T) { - // TODO[1760]: finalize-block: Uncomment these lines. - _ = encCfg - /* - msgFeeCoin := sdk.NewInt64Coin(msgfeestypes.UsdDenom, 7) - msg := msgfeestypes.NewMsgAssessCustomMsgFeeRequest("test", msgFeeCoin, addr2.String(), addr1.String(), "") - fees := sdk.NewCoins( - sdk.NewInt64Coin(sdk.DefaultBondDenom, 150000), - sdk.NewInt64Coin(NHash, 1_190_500_001), - ) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + + msgFeeCoin := sdk.NewInt64Coin(msgfeestypes.UsdDenom, 7) + msg := msgfeestypes.NewMsgAssessCustomMsgFeeRequest("test", msgFeeCoin, addr2.String(), addr1.String(), "") + fees := sdk.NewCoins( + sdk.NewInt64Coin(sdk.DefaultBondDenom, 150000), + sdk.NewInt64Coin(NHash, 1_190_500_001), + ) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.NoError(t, err, "FinalizeBlock() error") addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() addr2AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr2).String() @@ -777,7 +810,7 @@ func TestMsgServiceAssessMsgFee(tt *testing.T) { // swept amount expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin("nhash", 1015500001)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) } @@ -809,20 +842,22 @@ func TestMsgServiceAssessMsgFeeWithBips(tt *testing.T) { assert.Equal(tt, "", addr2beforeBalance, "addr2beforeBalance") stopIfFailed(tt) tt.Run("assess custom msg fee", func(t *testing.T) { - // TODO[1760]: finalize-block: Uncomment these lines. - _ = encCfg - /* - msgFeeCoin := sdk.NewInt64Coin(msgfeestypes.UsdDenom, 7) - msg := msgfeestypes.NewMsgAssessCustomMsgFeeRequest("test", msgFeeCoin, addr2.String(), addr1.String(), "2500") - fees := sdk.NewCoins( - sdk.NewInt64Coin(sdk.DefaultBondDenom, 150000), - sdk.NewInt64Coin(NHash, 1_190_500_001), - ) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + msgFeeCoin := sdk.NewInt64Coin(msgfeestypes.UsdDenom, 7) + msg := msgfeestypes.NewMsgAssessCustomMsgFeeRequest("test", msgFeeCoin, addr2.String(), addr1.String(), "2500") + fees := sdk.NewCoins( + sdk.NewInt64Coin(sdk.DefaultBondDenom, 150000), + sdk.NewInt64Coin(NHash, 1_190_500_001), + ) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.NoError(t, err, "FinalizeBlock() error") addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() addr2AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr2).String() @@ -863,7 +898,7 @@ func TestMsgServiceAssessMsgFeeWithBips(tt *testing.T) { // swept amount expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin("nhash", 1015500001)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) } @@ -896,20 +931,23 @@ func TestMsgServiceAssessMsgFeeNoRecipient(tt *testing.T) { assert.Equal(tt, "", addr2beforeBalance, "addr2beforeBalance") stopIfFailed(tt) tt.Run("assess custom msg fee", func(t *testing.T) { - // TODO[1760]: finalize-block: Uncomment these lines. - _ = encCfg - /* - msgFeeCoin := sdk.NewInt64Coin(msgfeestypes.UsdDenom, 7) - msg := msgfeestypes.NewMsgAssessCustomMsgFeeRequest("test", msgFeeCoin, "", addr1.String(), "") - fees := sdk.NewCoins( - sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())), - sdk.NewInt64Coin(NHash, 1_190_500_001), - ) - txBytes, err := SignTxAndGetBytes(NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &msg) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.Equal(t, abci.CodeTypeOK, res.Code, "res=%+v", res) - */ + + msgFeeCoin := sdk.NewInt64Coin(msgfeestypes.UsdDenom, 7) + msg := msgfeestypes.NewMsgAssessCustomMsgFeeRequest("test", msgFeeCoin, "", addr1.String(), "") + fees := sdk.NewCoins( + sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(NewTestGasLimit())), + sdk.NewInt64Coin(NHash, 1_190_500_001), + ) + txBytes, err := SignTxAndGetBytes(ctx, NewTestGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &msg) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + t.Logf("Events:\n%s\n", eventsString(blockRes.TxResults[0].Events, true)) + assert.NoError(t, err, "FinalizeBlock() error") addr1AfterBalance := app.BankKeeper.GetAllBalances(ctx, addr1).String() assert.Equal(t, "1000hotdog,1000stake", addr1AfterBalance, "addr1AfterBalance") @@ -945,14 +983,13 @@ func TestMsgServiceAssessMsgFeeNoRecipient(tt *testing.T) { // swept amount expEvents = append(expEvents, CreateSendCoinEvents(addr1.String(), feeModuleAccount.GetAddress().String(), sdk.NewCoins(sdk.NewInt64Coin("nhash", 1015500001)))...) - // assertEventsContains(t, res.Events, expEvents) // TODO[1760]: finalize-block + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) }) } func TestRewardsProgramStartError(t *testing.T) { encCfg := moduletestutil.MakeTestEncodingConfig() priv, _, addr := testdata.KeyTestPubAddr() - //_, _, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) acct1Balance := sdk.NewCoins( sdk.NewInt64Coin("hotdog", 1000), sdk.NewInt64Coin("atom", 1000), @@ -993,19 +1030,21 @@ func TestRewardsProgramStartError(t *testing.T) { }, ) - // TODO[1760]: finalize-block: Uncomment these lines. - _, _ = encCfg, rewardProgram - /* - txBytes, err := SignTxAndGetBytes( - NewTestRewardsGasLimit(), - sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), - encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), - &rewardProgram, - ) - require.NoError(t, err, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txBytes}) - require.True(t, res.IsErr(), "Should return an error: res=%+v", res) - */ + txBytes, err := SignTxAndGetBytes(ctx, + NewTestRewardsGasLimit(), + sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), + encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), + &rewardProgram, + ) + require.NoError(t, err, "SignTxAndGetBytes") + blockRes, err := app.FinalizeBlock( + &abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Txs: [][]byte{txBytes}, + }, + ) + assert.Equal(t, uint32(0x1), blockRes.TxResults[0].Code, "claims period error") + assert.NoError(t, err, "FinalizeBlock") } func TestRewardsProgramStart(t *testing.T) { @@ -1051,19 +1090,23 @@ func TestRewardsProgramStart(t *testing.T) { }, }, ) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txReward, err := SignTx( + + txReward, err := SignTxAndGetBytes( + ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &rewardProgram, ) - require.NoError(t, err, "SignTx") - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txReward) - require.NoError(t, errFromDeliverTx, "SimDeliver") - assert.NotEmpty(t, res.GetEvents(), "res.GetEvents()") - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block - app.Commit() + require.NoError(t, err, "SignTxAndGetBytes") + + blockRes, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Time: time.Now().UTC(), + Txs: [][]byte{txReward}, + }, + ) + assert.NoError(t, err, "FinalizeBlock expected no error") expEvents := []abci.Event{ NewEvent(rewardtypes.EventTypeRewardProgramCreated, @@ -1071,7 +1114,7 @@ func TestRewardsProgramStart(t *testing.T) { NewEvent(sdk.EventTypeMessage, NewAttribute(sdk.AttributeKeyAction, sdk.MsgTypeURL(&rewardtypes.MsgCreateRewardProgramRequest{}))), } - assertEventsContains(t, res.Events, expEvents) + assertEventsContains(t, blockRes.TxResults[0].Events, expEvents) } func TestRewardsProgramStartPerformQualifyingActions(t *testing.T) { @@ -1118,18 +1161,22 @@ func TestRewardsProgramStartPerformQualifyingActions(t *testing.T) { }, }, ) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txReward, err := SignTx( + txReward, err := SignTxAndGetBytes( + ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), &rewardProgram, ) - require.NoError(t, err, "SignTx") - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txReward) - require.NoError(t, errFromDeliverTx, "SimDeliver") - assert.NotEmpty(t, res.GetEvents(), "res.GetEvents()") - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block + require.NoError(t, err, "SignTxAndGetBytes") + + _, err = app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: ctx.BlockHeight() + 1, + Time: time.Now().UTC(), + Txs: [][]byte{txReward}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() time.Sleep(110 * time.Millisecond) @@ -1138,15 +1185,17 @@ func TestRewardsProgramStartPerformQualifyingActions(t *testing.T) { fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) seq := acct1.Sequence - for height := int64(3); height <= int64(100); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(2); height <= int64(99); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() seq = seq + 1 } @@ -1213,6 +1262,7 @@ func TestRewardsProgramStartPerformQualifyingActionsRecordedRewardsUnclaimable(t priv, _, addr := testdata.KeyTestPubAddr() _, _, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 1) acct1Balance := sdk.NewCoins(sdk.NewInt64Coin("atom", 10000000), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1000000_000_000_000)) rewardProgram := rewardtypes.NewRewardProgram( @@ -1260,15 +1310,18 @@ func TestRewardsProgramStartPerformQualifyingActionsRecordedRewardsUnclaimable(t // get past the reward start time ( test that reward program starts up after 50ms) time.Sleep(55 * time.Millisecond) - for height := int64(2); height < int64(22); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(21); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() seq = seq + 1 } @@ -1349,6 +1402,7 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc priv, _, addr := testdata.KeyTestPubAddr() _, _, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 1) acct1Balance := sdk.NewCoins(sdk.NewInt64Coin("atom", 10000000), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1000000_000_000_000)) rewardProgram := rewardtypes.NewRewardProgram( @@ -1398,18 +1452,21 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc time.Sleep(150 * time.Millisecond) //go through 5 blocks, but take a long time to cut blocks. - for height := int64(2); height < int64(7); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(6); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + app.Commit() // wait for claim period to end (claim period is 1s) time.Sleep(1500 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block - app.Commit() seq = seq + 1 } @@ -1464,42 +1521,44 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc // get the accoutn balances of acct1 balance := app.BankKeeper.GetAllBalances(ctx, acct1.GetAddress()) // claim rewards for the address - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 7, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - // TODO[1760]: finalize-block: Uncomment these lines. - /* - msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) - require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) - txClaim, errClaim := SignTxAndGetBytes( - NewTestRewardsGasLimit(), - fees, - encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), - msgClaim, - ) - require.NoError(t, errClaim, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txClaim}) - require.Equal(t, true, res.IsOK(), "res=%+v", res) - // unmarshal the TxMsgData - var protoResult sdk.TxMsgData - require.NoError(t, proto.Unmarshal(res.Data, &protoResult), "unmarshalling protoResult") - require.Len(t, protoResult.MsgResponses, 1, "protoResult.MsgResponses") - require.Equal(t, protoResult.MsgResponses[0].GetTypeUrl(), "/provenance.reward.v1.MsgClaimAllRewardsResponse", - "protoResult.MsgResponses[0].GetTypeUrl()") - claimResponse := rewardtypes.MsgClaimAllRewardsResponse{} - require.NoError(t, claimResponse.Unmarshal(protoResult.MsgResponses[0].Value), "unmarshalling claimResponse") - assert.Equal(t, sdk.NewInt64Coin("nhash", 50_000_000_000).String(), claimResponse.TotalRewardClaim[0].String(), - "TotalRewardClaim") - if assert.Len(t, claimResponse.ClaimDetails, 1, "ClaimDetails") { - assert.Equal(t, 1, int(claimResponse.ClaimDetails[0].RewardProgramId), "RewardProgramId") - assert.Equal(t, sdk.NewInt64Coin("nhash", 50_000_000_000).String(), - claimResponse.ClaimDetails[0].TotalRewardClaim.String(), "ClaimDetails TotalRewardClaim") - if assert.Len(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, 5, "ClaimedRewardPeriodDetails") { - assert.Equal(t, sdk.NewInt64Coin("nhash", 10_000_000_000).String(), - claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "ClaimPeriodReward") - } + msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) + require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) + txClaim, errClaim := SignTxAndGetBytes( + ctx, + NewTestRewardsGasLimit(), + fees, + encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), + msgClaim, + ) + require.NoError(t, errClaim, "SignTxAndGetBytes") + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 6, + Time: time.Now().UTC(), + Txs: [][]byte{txClaim}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + + // unmarshal the TxMsgData + var protoResult sdk.TxMsgData + + require.NoError(t, app.AppCodec().Unmarshal(res.TxResults[0].Data, &protoResult), "unmarshalling protoResult") + require.Len(t, protoResult.MsgResponses, 1, "protoResult.MsgResponses") + require.Equal(t, protoResult.MsgResponses[0].GetTypeUrl(), "/provenance.reward.v1.MsgClaimAllRewardsResponse", + "protoResult.MsgResponses[0].GetTypeUrl()") + claimResponse := rewardtypes.MsgClaimAllRewardsResponse{} + require.NoError(t, claimResponse.Unmarshal(protoResult.MsgResponses[0].Value), "unmarshalling claimResponse") + assert.Equal(t, sdk.NewInt64Coin("nhash", 50_000_000_000).String(), claimResponse.TotalRewardClaim[0].String(), + "TotalRewardClaim") + if assert.Len(t, claimResponse.ClaimDetails, 1, "ClaimDetails") { + assert.Equal(t, 1, int(claimResponse.ClaimDetails[0].RewardProgramId), "RewardProgramId") + assert.Equal(t, sdk.NewInt64Coin("nhash", 50_000_000_000).String(), + claimResponse.ClaimDetails[0].TotalRewardClaim.String(), "ClaimDetails TotalRewardClaim") + if assert.Len(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, 5, "ClaimedRewardPeriodDetails") { + assert.Equal(t, sdk.NewInt64Coin("nhash", 10_000_000_000).String(), + claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "ClaimPeriodReward") } - */ - // app.EndBlock(abci.RequestEndBlock{Height: 7}) // TODO[1760]: finalize-block - app.Commit() + } balanceLater := app.BankKeeper.GetAllBalances(ctx, acct1.GetAddress()) // make sure account balance has the tokens balanceChange := balanceLater.AmountOf(pioconfig.GetProvenanceConfig().FeeDenom).Sub(balance.AmountOf(pioconfig.GetProvenanceConfig().FeeDenom)) @@ -1560,17 +1619,19 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc time.Sleep(150 * time.Millisecond) //go through 5 blocks, but take a long time to cut blocks. - for height := int64(2); height < int64(7); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(6); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") // wait for claim period to end (claim period is 1s) time.Sleep(1500 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block app.Commit() seq = seq + 1 } @@ -1627,45 +1688,48 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc // get the accoutn balances of acct1 balance := app.BankKeeper.GetAllBalances(ctx, acct1.GetAddress()) // claim rewards for the address - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 7, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - // TODO[1760]: finalize-block: Uncomment these lines. - /* - msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) - require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) - txClaim, errClaim := SignTxAndGetBytes( - NewTestRewardsGasLimit(), - fees, - encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), - msgClaim, - ) - require.NoError(t, errClaim, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txClaim}) - require.Equal(t, true, res.IsOK(), "res=%+v", res) - // unmarshal the TxMsgData - var protoResult sdk.TxMsgData - require.NoError(t, proto.Unmarshal(res.Data, &protoResult), "unmarshalling protoResult") - require.Len(t, protoResult.MsgResponses, 1, "protoResult.MsgResponses") - require.Equal(t, protoResult.MsgResponses[0].GetTypeUrl(), "/provenance.reward.v1.MsgClaimAllRewardsResponse", - "protoResult.MsgResponses[0].GetTypeUrl()") - claimResponse := rewardtypes.MsgClaimAllRewardsResponse{} - require.NoError(t, claimResponse.Unmarshal(protoResult.MsgResponses[0].Value), "unmarshalling claimResponse") - if assert.NotEmpty(t, claimResponse.TotalRewardClaim, "TotalRewardClaim") { - assert.Equal(t, sdk.NewInt64Coin("hotdog", 50_000_000_000).String(), - claimResponse.TotalRewardClaim[0].String(), "TotalRewardClaim") - } - if assert.NotEmpty(t, claimResponse.ClaimDetails, "ClaimDetails") { - assert.Len(t, claimResponse.ClaimDetails, 1, "ClaimDetails") - assert.Equal(t, 1, int(claimResponse.ClaimDetails[0].RewardProgramId), "RewardProgramId") - assert.Equal(t, sdk.NewInt64Coin("hotdog", 50_000_000_000).String(), - claimResponse.ClaimDetails[0].TotalRewardClaim.String(), "ClaimDetails TotalRewardClaim") - if assert.NotEmpty(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, "ClaimedRewardPeriodDetails") { - assert.Len(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, 5, "ClaimedRewardPeriodDetails") - assert.Equal(t, sdk.NewInt64Coin("hotdog", 10_000_000_000).String(), - claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "ClaimPeriodReward") - } + msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) + require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) + txClaim, errClaim := SignTxAndGetBytes( + ctx, + NewTestRewardsGasLimit(), + fees, + encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), + msgClaim, + ) + require.NoError(t, errClaim, "SignTxAndGetBytes") + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 6, + Time: time.Now().UTC(), + Txs: [][]byte{txClaim}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + + // unmarshal the TxMsgData + var protoResult sdk.TxMsgData + require.NoError(t, app.AppCodec().Unmarshal(res.TxResults[0].Data, &protoResult), "unmarshalling protoResult") + require.Len(t, protoResult.MsgResponses, 1, "protoResult.MsgResponses") + require.Equal(t, protoResult.MsgResponses[0].GetTypeUrl(), "/provenance.reward.v1.MsgClaimAllRewardsResponse", + "protoResult.MsgResponses[0].GetTypeUrl()") + claimResponse := rewardtypes.MsgClaimAllRewardsResponse{} + require.NoError(t, claimResponse.Unmarshal(protoResult.MsgResponses[0].Value), "unmarshalling claimResponse") + if assert.NotEmpty(t, claimResponse.TotalRewardClaim, "TotalRewardClaim") { + assert.Equal(t, sdk.NewInt64Coin("hotdog", 50_000_000_000).String(), + claimResponse.TotalRewardClaim[0].String(), "TotalRewardClaim") + } + if assert.NotEmpty(t, claimResponse.ClaimDetails, "ClaimDetails") { + assert.Len(t, claimResponse.ClaimDetails, 1, "ClaimDetails") + assert.Equal(t, 1, int(claimResponse.ClaimDetails[0].RewardProgramId), "RewardProgramId") + assert.Equal(t, sdk.NewInt64Coin("hotdog", 50_000_000_000).String(), + claimResponse.ClaimDetails[0].TotalRewardClaim.String(), "ClaimDetails TotalRewardClaim") + if assert.NotEmpty(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, "ClaimedRewardPeriodDetails") { + assert.Len(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, 5, "ClaimedRewardPeriodDetails") + assert.Equal(t, sdk.NewInt64Coin("hotdog", 10_000_000_000).String(), + claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "ClaimPeriodReward") } - */ - // app.EndBlock(abci.RequestEndBlock{Height: 7}) // TODO[1760]: finalize-block + } + app.Commit() balanceLater := app.BankKeeper.GetAllBalances(ctx, acct1.GetAddress()) balanceChange := balanceLater.AmountOf("hotdog").Sub(balance.AmountOf("hotdog")) @@ -1756,18 +1820,22 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc time.Sleep(150 * time.Millisecond) //go through 5 blocks, but take a long time to cut blocks. - for height := int64(2); height < int64(7); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(6); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + app.Commit() + // wait for claim period to end (claim period is 1s) time.Sleep(1500 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block - app.Commit() seq = seq + 1 } @@ -1823,51 +1891,62 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc // get the accoutn balances of acct1 balance := app.BankKeeper.GetAllBalances(ctx, acct1.GetAddress()) // claim rewards for the address - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 7, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - // TODO[1760]: finalize-block: Uncomment these lines. - /* - msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) - require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) - // needs extra gas - txClaim, errClaim := SignTxAndGetBytes(300000, fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msgClaim) - require.NoError(t, errClaim, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txClaim}) - require.Equal(t, true, res.IsOK(), "res=%+v", res) - // unmarshal the TxMsgData - var protoResult sdk.TxMsgData - require.NoError(t, proto.Unmarshal(res.Data, &protoResult), "unmarshalling protoResult") - require.Len(t, protoResult.MsgResponses, 1, "protoResult.MsgResponses") - require.Equal(t, protoResult.MsgResponses[0].GetTypeUrl(), "/provenance.reward.v1.MsgClaimAllRewardsResponse", - "protoResult.MsgResponses[0].GetTypeUrl()") - claimResponse := rewardtypes.MsgClaimAllRewardsResponse{} - require.NoError(t, claimResponse.Unmarshal(protoResult.MsgResponses[0].Value), "unmarshalling claimResponse") + + msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) + require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) + // needs extra gas + txClaim, errClaim := SignTxAndGetBytes(ctx, 300000, fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msgClaim) + require.NoError(t, errClaim, "SignTxAndGetBytes") + + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 6, + Time: time.Now().UTC(), + Txs: [][]byte{txClaim}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + app.Commit() + + // unmarshal the TxMsgData + var protoResult sdk.TxMsgData + require.NoError(t, app.AppCodec().Unmarshal(res.TxResults[0].Data, &protoResult), "unmarshalling protoResult") + require.Len(t, protoResult.MsgResponses, 1, "protoResult.MsgResponses") + require.Equal(t, protoResult.MsgResponses[0].GetTypeUrl(), "/provenance.reward.v1.MsgClaimAllRewardsResponse", + "protoResult.MsgResponses[0].GetTypeUrl()") + claimResponse := rewardtypes.MsgClaimAllRewardsResponse{} + require.NoError(t, claimResponse.Unmarshal(protoResult.MsgResponses[0].Value), "unmarshalling claimResponse") + assert.Equal(t, sdk.NewInt64Coin("hotdog", 50_000_000_000).String(), + claimResponse.TotalRewardClaim[0].String(), "TotalRewardClaim") + if assert.NotEmpty(t, claimResponse.ClaimDetails, "ClaimDetails") { + assert.Len(t, claimResponse.ClaimDetails, 2) + + assert.Equal(t, 1, int(claimResponse.ClaimDetails[0].RewardProgramId), "[0].RewardProgramId") assert.Equal(t, sdk.NewInt64Coin("hotdog", 50_000_000_000).String(), - claimResponse.TotalRewardClaim[0].String(), "TotalRewardClaim") - if assert.NotEmpty(t, claimResponse.ClaimDetails, "ClaimDetails") { - assert.Len(t, claimResponse.ClaimDetails, 2) - - assert.Equal(t, 1, int(claimResponse.ClaimDetails[0].RewardProgramId), "[0].RewardProgramId") - assert.Equal(t, sdk.NewInt64Coin("hotdog", 50_000_000_000).String(), - claimResponse.ClaimDetails[0].TotalRewardClaim.String(), "[0].TotalRewardClaim") - if assert.NotEmpty(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, "[0].ClaimedRewardPeriodDetails") { - assert.Len(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, 5, "[0].ClaimedRewardPeriodDetails") - assert.Equal(t, sdk.NewInt64Coin("hotdog", 10_000_000_000).String(), - claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "[0].[0].ClaimPeriodReward") - } + claimResponse.ClaimDetails[0].TotalRewardClaim.String(), "[0].TotalRewardClaim") + if assert.NotEmpty(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, "[0].ClaimedRewardPeriodDetails") { + assert.Len(t, claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails, 5, "[0].ClaimedRewardPeriodDetails") + assert.Equal(t, sdk.NewInt64Coin("hotdog", 10_000_000_000).String(), + claimResponse.ClaimDetails[0].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "[0].[0].ClaimPeriodReward") + } - assert.Equal(t, 2, int(claimResponse.ClaimDetails[1].RewardProgramId), "[1].RewardProgramId") - assert.Equal(t, sdk.NewInt64Coin("nhash", 50_000_000_000).String(), - claimResponse.ClaimDetails[1].TotalRewardClaim.String(), "[1].TotalRewardClaim") - if assert.NotEmpty(t, claimResponse.ClaimDetails[1].ClaimedRewardPeriodDetails, "[1].ClaimedRewardPeriodDetails") { - assert.Len(t, claimResponse.ClaimDetails[1].ClaimedRewardPeriodDetails, 5, "[1].ClaimedRewardPeriodDetails") - assert.Equal(t, sdk.NewInt64Coin("nhash", 10_000_000_000).String(), - claimResponse.ClaimDetails[1].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "[1].[0].ClaimPeriodReward") - } + assert.Equal(t, 2, int(claimResponse.ClaimDetails[1].RewardProgramId), "[1].RewardProgramId") + assert.Equal(t, sdk.NewInt64Coin("nhash", 50_000_000_000).String(), + claimResponse.ClaimDetails[1].TotalRewardClaim.String(), "[1].TotalRewardClaim") + if assert.NotEmpty(t, claimResponse.ClaimDetails[1].ClaimedRewardPeriodDetails, "[1].ClaimedRewardPeriodDetails") { + assert.Len(t, claimResponse.ClaimDetails[1].ClaimedRewardPeriodDetails, 5, "[1].ClaimedRewardPeriodDetails") + assert.Equal(t, sdk.NewInt64Coin("nhash", 10_000_000_000).String(), + claimResponse.ClaimDetails[1].ClaimedRewardPeriodDetails[0].ClaimPeriodReward.String(), "[1].[0].ClaimPeriodReward") } - */ + } - // app.EndBlock(abci.RequestEndBlock{Height: 7}) // TODO[1760]: finalize-block + _, err = app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 7, + Time: time.Now().UTC(), + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() + balanceLater := app.BankKeeper.GetAllBalances(ctx, acct1.GetAddress()) // make sure account balance has the tokens balanceChangeHotDog := balanceLater.AmountOf("hotdog").Sub(balance.AmountOf("hotdog")) @@ -1884,6 +1963,7 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc priv, _, addr := testdata.KeyTestPubAddr() _, _, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins(sdk.NewInt64Coin("atom", 10000000), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1000000_000_000_000)) rewardProgram := rewardtypes.NewRewardProgram( @@ -1932,17 +2012,19 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc time.Sleep(150 * time.Millisecond) //go through 5 blocks, but take a long time to cut blocks. - for height := int64(2); height < int64(7); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(6); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) - // wait for claim period to end (claim period is 1s) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + time.Sleep(1500 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() seq = seq + 1 } @@ -1997,22 +2079,23 @@ func TestRewardsProgramStartPerformQualifyingActionsSomePeriodsClaimableModuleAc } // claim rewards for the address - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 7, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - // TODO[1760]: finalize-block: Uncomment these lines. - /* - msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) - require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) - txClaim, errClaim := SignTxAndGetBytes( - NewTestRewardsGasLimit(), - fees, - encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), - msgClaim, - ) - require.NoError(t, errClaim, "SignTxAndGetBytes") - res := app.DeliverTx(abci.RequestDeliverTx{Tx: txClaim}) - require.Equal(t, true, res.IsErr(), "res=%+v", res) - */ - // app.EndBlock(abci.RequestEndBlock{Height: 7}) // TODO[1760]: finalize-block + msgClaim := rewardtypes.NewMsgClaimAllRewardsRequest(acct1.Address) + require.NoError(t, acct1.SetSequence(seq), "SetSequence(%d)", seq) + txClaim, errClaim := SignTxAndGetBytes(ctx, + NewTestRewardsGasLimit(), + fees, + encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), + msgClaim, + ) + require.NoError(t, errClaim, "SignTxAndGetBytes") + + _, err = app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 6, + Time: time.Now().UTC(), + Txs: [][]byte{txClaim}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() } @@ -2024,6 +2107,7 @@ func TestRewardsProgramStartPerformQualifyingActionsCriteriaNotMet(t *testing.T) priv, _, addr := testdata.KeyTestPubAddr() _, _, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins(sdk.NewInt64Coin("atom", 10000000), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1000000_000_000_000)) rewardProgram := rewardtypes.NewRewardProgram( @@ -2073,16 +2157,20 @@ func TestRewardsProgramStartPerformQualifyingActionsCriteriaNotMet(t *testing.T) time.Sleep(110 * time.Millisecond) //go through 5 blocks, but take a long time to cut blocks. - for height := int64(2); height < int64(7); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(6); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) time.Sleep(1100 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + app.Commit() seq = seq + 1 } @@ -2111,6 +2199,7 @@ func TestRewardsProgramStartPerformQualifyingActionsTransferAndDelegationsPresen priv, pubKey, addr := testdata.KeyTestPubAddr() _, pubKey2, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins(sdk.NewInt64Coin("atom", 10000000), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1000000_000_000_000)) rewardProgram := rewardtypes.NewRewardProgram( @@ -2161,16 +2250,18 @@ func TestRewardsProgramStartPerformQualifyingActionsTransferAndDelegationsPresen time.Sleep(150 * time.Millisecond) //go through 5 blocks, but take a time to cut blocks > claim period time interval. - for height := int64(2); height < int64(7); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(6); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) time.Sleep(1100 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() seq = seq + 1 } @@ -2216,6 +2307,7 @@ func TestRewardsProgramStartPerformQualifyingActionsThreshHoldNotMet(t *testing. priv, pubKey, addr := testdata.KeyTestPubAddr() _, pubKey2, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins(sdk.NewInt64Coin("atom", 10000000), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1000000_000_000_000)) rewardProgram := rewardtypes.NewRewardProgram( @@ -2265,16 +2357,18 @@ func TestRewardsProgramStartPerformQualifyingActionsThreshHoldNotMet(t *testing. time.Sleep(1 * time.Second) //go through 5 blocks, but take a long time to cut blocks. - for height := int64(2); height < int64(7); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(1); height < int64(6); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) time.Sleep(1100 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") app.Commit() seq = seq + 1 } @@ -2298,8 +2392,8 @@ func TestRewardsProgramStartPerformQualifyingActionsThreshHoldNotMet(t *testing. func TestRewardsProgramStartPerformQualifyingActions_Vote(t *testing.T) { encCfg := moduletestutil.MakeTestEncodingConfig() priv, _, addr := testdata.KeyTestPubAddr() - //_, _, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins( sdk.NewInt64Coin(sdk.DefaultBondDenom, 10000000000), sdk.NewInt64Coin("atom", 10000000), @@ -2348,26 +2442,30 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote(t *testing.T) { coinsPos, addr, ) - + require.NoError(t, err, "NewMsgSubmitProposal expected to create msg") fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) seq := acct1.Sequence - time.Sleep(200 * time.Millisecond) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txGov, err := SignTx( + txGov, err := SignTxAndGetBytes( + ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg, ) - require.NoError(t, err, "SignTx") - - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txGov) - require.NoError(t, errFromDeliverTx, "SimDeliver") - assert.NotEmpty(t, res.GetEvents(), "res.GetEvents()") + require.NoError(t, err, "SignTxAndGetBytes") + time.Sleep(200 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 1, + Time: time.Now().UTC(), + Txs: [][]byte{txGov}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) app.Commit() seq = seq + 1 @@ -2376,15 +2474,19 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote(t *testing.T) { // tx with a fee associated with msg type and account has funds vote1 := govtypesv1beta1.NewMsgVote(addr, proposal.Id, govtypesv1beta1.OptionYes) - for height := int64(3); height < int64(23); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(2); height < int64(22); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) app.Commit() seq = seq + 1 } @@ -2411,6 +2513,7 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_InvalidDelegations(t * priv2, _, addr2 := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr1, priv1.PubKey(), 0, 0) acct2 := authtypes.NewBaseAccount(addr2, priv2.PubKey(), 1, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acctBalance := sdk.NewCoins( sdk.NewInt64Coin(sdk.DefaultBondDenom, 10000000000), sdk.NewInt64Coin("atom", 10000000), @@ -2460,24 +2563,30 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_InvalidDelegations(t * coinsPos, addr1, ) + require.NoError(t, err, "NewMsgSubmitProposal expected to create msg") fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) time.Sleep(200 * time.Millisecond) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txGov, err := SignTx( + txGov, err := SignTxAndGetBytes( + ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), encCfg, priv1.PubKey(), priv1, *acct1, ctx.ChainID(), msg, ) - require.NoError(t, err, "SignTx") + require.NoError(t, err, "SignTxAndGetBytes") - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txGov) - require.NoError(t, errFromDeliverTx, "SimDeliver") - assert.NotEmpty(t, res.GetEvents(), "res.GetEvents()") + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 1, + Time: time.Now().UTC(), + Txs: [][]byte{txGov}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block app.Commit() proposal := getLastProposal(t, ctx, app) @@ -2487,15 +2596,20 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_InvalidDelegations(t * acct2 = app.AccountKeeper.GetAccount(ctx, acct2.GetAddress()).(*authtypes.BaseAccount) seq := acct2.Sequence - for height := int64(3); height < int64(5); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(2); height < int64(4); height++ { require.NoError(t, acct2.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), vote2) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv2.PubKey(), priv2, *acct2, ctx.ChainID(), vote2) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) + app.Commit() seq = seq + 1 } @@ -2539,6 +2653,7 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations(t *te priv, pubKey, addr := testdata.KeyTestPubAddr() _, pubKey2, _ := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins( sdk.NewInt64Coin(sdk.DefaultBondDenom, 10000000000), sdk.NewInt64Coin("atom", 10000000), @@ -2587,26 +2702,32 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations(t *te coinsPos, addr, ) + require.NoError(t, err, "NewMsgSubmitProposal expected to create msg") fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) seq := acct1.Sequence time.Sleep(200 * time.Millisecond) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txGov, err := SignTx( + txGov, err := SignTxAndGetBytes( + ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg, ) - require.NoError(t, err, "SignTx") + require.NoError(t, err, "SignTxAndGetBytes") - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txGov) - require.NoError(t, errFromDeliverTx, "SimDeliver") - assert.NotEmpty(t, res.GetEvents(), "res.GetEvents()") + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 1, + Time: time.Now().UTC(), + Txs: [][]byte{txGov}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block app.Commit() seq = seq + 1 @@ -2616,15 +2737,20 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations(t *te vote1 := govtypesv1beta1.NewMsgVote(addr, proposal.Id, govtypesv1beta1.OptionYes) // threshold will be met after 10 actions - for height := int64(3); height < int64(23); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(2); height < int64(22); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) + app.Commit() seq = seq + 1 } @@ -2665,6 +2791,7 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations_Multi priv, pubKey, addr := testdata.KeyTestPubAddr() _, pubKey2, _ := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 10000000000), sdk.NewInt64Coin("atom", 10000000), sdk.NewInt64Coin("nhash", 1000000_000_000_000)) rewardProgram := rewardtypes.NewRewardProgram( @@ -2707,6 +2834,7 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations_Multi coinsPos, addr, ) + require.NoError(t, err, "NewMsgSubmitProposal expected to create msg") fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) ctx.WithBlockTime(time.Now()) @@ -2715,14 +2843,19 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations_Multi ctx.WithBlockTime(time.Now()) time.Sleep(200 * time.Millisecond) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txGov, err := SignTx(NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin("nhash", 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) - require.NoError(t, err) + txGov, err := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin("nhash", 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txGov) - require.NoError(t, errFromDeliverTx) + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 1, + Time: time.Now().UTC(), + Txs: [][]byte{txGov}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block app.Commit() seq = seq + 1 @@ -2734,15 +2867,19 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations_Multi assert.NotEmpty(t, res.GetEvents(), "should have emitted an event.") // threshold will be met after 10 actions - for height := int64(3); height < int64(23); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - require.NoError(t, acct1.SetSequence(seq)) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) - require.NoError(t, err1) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx) - assert.NotEmpty(t, res.GetEvents(), "should have emitted an event.") - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + for height := int64(2); height < int64(22); height++ { + require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) app.Commit() seq = seq + 1 } @@ -2821,6 +2958,7 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations_Multi coinsPos, addr3, ) + require.NoError(t, err, "NewMsgSubmitProposal expected to create msg") fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) ctx.WithBlockTime(time.Now()) @@ -2829,14 +2967,18 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations_Multi ctx.WithBlockTime(time.Now()) time.Sleep(200 * time.Millisecond) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txGov, err := SignTx(NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin("nhash", 1_190_500_000)), encCfg, priv3.PubKey(), priv3, *acct3, ctx.ChainID(), msg) - require.NoError(t, err) - - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txGov) - require.NoError(t, errFromDeliverTx) + txGov, err := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin("nhash", 1_190_500_000)), encCfg, priv3.PubKey(), priv3, *acct3, ctx.ChainID(), msg) + require.NoError(t, err, "SignTxAndGetBytes") + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 1, + Time: time.Now().UTC(), + Txs: [][]byte{txGov}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block app.Commit() seq = seq + 1 @@ -2848,15 +2990,19 @@ func TestRewardsProgramStartPerformQualifyingActions_Vote_ValidDelegations_Multi assert.NotEmpty(t, res.GetEvents(), "should have emitted an event.") // threshold will be met after 10 actions - for height := int64(3); height < int64(23); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(2); height < int64(22); height++ { require.NoError(t, acct3.SetSequence(seq)) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv3.PubKey(), priv3, *acct3, ctx.ChainID(), vote) - require.NoError(t, err1) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx) - assert.NotEmpty(t, res.GetEvents(), "should have emitted an event.") - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv3.PubKey(), priv3, *acct3, ctx.ChainID(), vote) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) app.Commit() seq = seq + 1 } @@ -2889,6 +3035,7 @@ func TestRewardsProgramStartPerformQualifyingActions_Delegate_NoQualifyingAction priv, pubKey, addr := testdata.KeyTestPubAddr() _, pubKey2, _ := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins( sdk.NewInt64Coin(sdk.DefaultBondDenom, 10000000000), sdk.NewInt64Coin("atom", 10000000), @@ -2938,26 +3085,32 @@ func TestRewardsProgramStartPerformQualifyingActions_Delegate_NoQualifyingAction coinsPos, addr, ) + require.NoError(t, err, "NewMsgSubmitProposal expected to create msg") fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) seq := acct1.Sequence time.Sleep(110 * time.Millisecond) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txGov, err := SignTx( + txGov, err := SignTxAndGetBytes( + ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg, ) - require.NoError(t, err, "SignTx") + require.NoError(t, err, "SignTxAndGetBytes") - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txGov) - require.NoError(t, errFromDeliverTx, "SimDeliver") - assert.NotEmpty(t, res.GetEvents(), "res.GetEvents()") + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 1, + Time: time.Now().UTC(), + Txs: [][]byte{txGov}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block app.Commit() seq = seq + 1 @@ -2966,15 +3119,19 @@ func TestRewardsProgramStartPerformQualifyingActions_Delegate_NoQualifyingAction // tx with a fee associated with msg type and account has funds vote1 := govtypesv1beta1.NewMsgVote(addr, proposal.Id, govtypesv1beta1.OptionYes) - for height := int64(3); height < int64(15); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(2); height < int64(14); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), vote1) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) app.Commit() seq = seq + 1 } @@ -3011,6 +3168,7 @@ func TestRewardsProgramStartPerformQualifyingActions_Delegate_QualifyingActionsP priv, pubKey, addr := testdata.KeyTestPubAddr() _, pubKey2, _ := testdata.KeyTestPubAddr() acct1 := authtypes.NewBaseAccount(addr, priv.PubKey(), 0, 0) + pioconfig.SetProvenanceConfig("nhash", 0) acct1Balance := sdk.NewCoins( sdk.NewInt64Coin(sdk.DefaultBondDenom, 10000000000), sdk.NewInt64Coin("atom", 10000000), @@ -3065,26 +3223,31 @@ func TestRewardsProgramStartPerformQualifyingActions_Delegate_QualifyingActionsP coinsPos, addr, ) + require.NoError(t, err, "NewMsgSubmitProposal expected to create msg") fees := sdk.NewCoins(sdk.NewInt64Coin("atom", 150)) acct1 = app.AccountKeeper.GetAccount(ctx, acct1.GetAddress()).(*authtypes.BaseAccount) seq := acct1.Sequence time.Sleep(200 * time.Millisecond) - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: 2, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block - txGov, err := SignTx( + txGov, err := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), sdk.NewCoins(sdk.NewInt64Coin("atom", 150), sdk.NewInt64Coin(pioconfig.GetProvenanceConfig().FeeDenom, 1_190_500_000)), encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), msg, ) - require.NoError(t, err, "SignTx") + require.NoError(t, err, "SignTxAndGetBytes") - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), txGov) - require.NoError(t, errFromDeliverTx, "SimDeliver") - assert.NotEmpty(t, res.GetEvents(), "res.GetEvents()") + res, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: 1, + Time: time.Now().UTC(), + Txs: [][]byte{txGov}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) - // app.EndBlock(abci.RequestEndBlock{Height: 2}) // TODO[1760]: finalize-block app.Commit() seq = seq + 1 @@ -3094,16 +3257,21 @@ func TestRewardsProgramStartPerformQualifyingActions_Delegate_QualifyingActionsP delAddr, _ := valSet.GetByIndex(0) delegation := stakingtypes.NewMsgDelegate(addr.String(), sdk.ValAddress(delAddr).String(), sdk.NewInt64Coin(sdk.DefaultBondDenom, 1000)) - for height := int64(3); height < int64(23); height++ { - // app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: height, Time: time.Now().UTC()}}) // TODO[1760]: finalize-block + for height := int64(2); height < int64(22); height++ { require.NoError(t, acct1.SetSequence(seq), "[%d]: SetSequence(%d)", height, seq) - tx1, err1 := SignTx(NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), delegation) - require.NoError(t, err1, "[%d]: SignTx", height) - _, res, errFromDeliverTx := app.SimDeliver(encCfg.TxConfig.TxEncoder(), tx1) - require.NoError(t, errFromDeliverTx, "[%d]: SimDeliver", height) - assert.NotEmpty(t, res.GetEvents(), "[%d]: res.GetEvents()", height) + tx1, err1 := SignTxAndGetBytes(ctx, NewTestRewardsGasLimit(), fees, encCfg, priv.PubKey(), priv, *acct1, ctx.ChainID(), delegation) + require.NoError(t, err1, "[%d]: SignTxAndGetBytes", height) + _, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: height, + Time: time.Now().UTC(), + Txs: [][]byte{tx1}, + }, + ) + require.NoError(t, err, "FinalizeBlock expected no error") + require.Len(t, res.TxResults, 1, "TxResults expected length not met") + require.Equal(t, uint32(0), res.TxResults[0].Code, "TxResults tx unexpected result code "+res.TxResults[0].Log) time.Sleep(100 * time.Millisecond) - // app.EndBlock(abci.RequestEndBlock{Height: height}) // TODO[1760]: finalize-block + app.Commit() seq = seq + 1 } @@ -3160,6 +3328,7 @@ func createValSet(t *testing.T, pubKeys ...cryptotypes.PubKey) *cmttypes.Validat } func signAndGenTx( + ctx sdk.Context, gaslimit uint64, fees sdk.Coins, encCfg moduletestutil.TestEncodingConfig, @@ -3177,12 +3346,13 @@ func signAndGenTx( return nil, err } + signingMode := signing.SignMode(encCfg.TxConfig.SignModeHandler().DefaultMode()) // First round: we gather all the signer infos. We use the "set empty // signature" hack to do that. sigV2 := signing.SignatureV2{ PubKey: pubKey, Data: &signing.SingleSignatureData{ - // SignMode: encCfg.TxConfig.SignModeHandler().DefaultMode(), // TODO[1760]: signing: same type name diff packages. + SignMode: signingMode, Signature: nil, }, Sequence: acct.Sequence, @@ -3194,28 +3364,29 @@ func signAndGenTx( } // Second round: all signer infos are set, so each signer can sign. - // TODO[1760]: signing: SignWithPrivKey: Uncomment these lines. - /* - signerData := authsigning.SignerData{ - ChainID: chainId, - AccountNumber: acct.AccountNumber, - Sequence: acct.Sequence, - } - sigV2, err = tx.SignWithPrivKey( - encCfg.TxConfig.SignModeHandler().DefaultMode(), signerData, - txBuilder, privKey, encCfg.TxConfig, acct.Sequence) - if err != nil { - return nil, err - } - err = txBuilder.SetSignatures(sigV2) - if err != nil { - return nil, err - } - */ + signerData := authsigning.SignerData{ + Address: sdk.AccAddress(pubKey.Bytes()).String(), + ChainID: chainId, + AccountNumber: acct.AccountNumber, + Sequence: acct.Sequence, + PubKey: pubKey, + } + sigV2, err = tx.SignWithPrivKey( + ctx, signingMode, signerData, + txBuilder, privKey, encCfg.TxConfig, acct.Sequence) + if err != nil { + return nil, err + } + err = txBuilder.SetSignatures(sigV2) + if err != nil { + return nil, err + } + return txBuilder, nil } func SignTxAndGetBytes( + ctx sdk.Context, gaslimit uint64, fees sdk.Coins, encCfg moduletestutil.TestEncodingConfig, @@ -3225,7 +3396,7 @@ func SignTxAndGetBytes( chainId string, msg ...sdk.Msg, ) ([]byte, error) { - txBuilder, err := signAndGenTx(gaslimit, fees, encCfg, pubKey, privKey, acct, chainId, msg) + txBuilder, err := signAndGenTx(ctx, gaslimit, fees, encCfg, pubKey, privKey, acct, chainId, msg) if err != nil { return nil, err } @@ -3238,6 +3409,7 @@ func SignTxAndGetBytes( } func SignTx( + ctx sdk.Context, gaslimit uint64, fees sdk.Coins, encCfg moduletestutil.TestEncodingConfig, @@ -3247,7 +3419,7 @@ func SignTx( chainId string, msg ...sdk.Msg, ) (sdk.Tx, error) { - txBuilder, err := signAndGenTx(gaslimit, fees, encCfg, pubKey, privKey, acct, chainId, msg) + txBuilder, err := signAndGenTx(ctx, gaslimit, fees, encCfg, pubKey, privKey, acct, chainId, msg) if err != nil { return nil, err } diff --git a/proto/provenance/attribute/v1/tx.proto b/proto/provenance/attribute/v1/tx.proto index 0862a3e5c4..08dd4474f5 100644 --- a/proto/provenance/attribute/v1/tx.proto +++ b/proto/provenance/attribute/v1/tx.proto @@ -35,6 +35,8 @@ service Msg { // MsgAddAttributeRequest defines an sdk.Msg type that is used to add a new attribute to an account. // Attributes may only be set in an account by the account that the attribute name resolves to. message MsgAddAttributeRequest { + option (cosmos.msg.v1.signer) = "account"; + option (gogoproto.equal) = false; option (gogoproto.goproto_stringer) = false; option (gogoproto.stringer) = false; @@ -60,6 +62,8 @@ message MsgAddAttributeResponse {} // MsgUpdateAttributeRequest defines an sdk.Msg type that is used to update an existing attribute to an account. // Attributes may only be set in an account by the account that the attribute name resolves to. message MsgUpdateAttributeRequest { + option (cosmos.msg.v1.signer) = "owner"; + option (gogoproto.equal) = false; option (gogoproto.goproto_stringer) = false; option (gogoproto.stringer) = false; @@ -87,6 +91,8 @@ message MsgUpdateAttributeResponse {} // MsgUpdateAttributeExpirationRequest defines an sdk.Msg type that is used to update an existing attribute's expiration // date message MsgUpdateAttributeExpirationRequest { + option (cosmos.msg.v1.signer) = "owner"; + option (gogoproto.equal) = true; option (gogoproto.stringer) = true; option (gogoproto.goproto_stringer) = false; @@ -109,6 +115,8 @@ message MsgUpdateAttributeExpirationResponse {} // MsgDeleteAttributeRequest defines a message to delete an attribute from an account // Attributes may only be removed from an account by the account that the attribute name resolves to. message MsgDeleteAttributeRequest { + option (cosmos.msg.v1.signer) = "owner"; + option (gogoproto.equal) = false; option (gogoproto.goproto_stringer) = false; option (gogoproto.stringer) = false; @@ -128,6 +136,8 @@ message MsgDeleteAttributeResponse {} // MsgDeleteDistinctAttributeRequest defines a message to delete an attribute with matching name, value, and type from // an account. Attributes may only be removed from an account by the account that the attribute name resolves to. message MsgDeleteDistinctAttributeRequest { + option (cosmos.msg.v1.signer) = "owner"; + option (gogoproto.equal) = false; option (gogoproto.goproto_stringer) = false; option (gogoproto.stringer) = false; diff --git a/proto/provenance/marker/v1/tx.proto b/proto/provenance/marker/v1/tx.proto index 826bd49504..7708792f73 100644 --- a/proto/provenance/marker/v1/tx.proto +++ b/proto/provenance/marker/v1/tx.proto @@ -106,6 +106,8 @@ message MsgAddMarkerResponse {} // MsgAddAccessRequest defines the Msg/AddAccess request type message MsgAddAccessRequest { + option (cosmos.msg.v1.signer) = "administrator"; + string denom = 1; string administrator = 2; repeated AccessGrant access = 3 [(gogoproto.nullable) = false]; @@ -116,6 +118,8 @@ message MsgAddAccessResponse {} // MsgDeleteAccessRequest defines the Msg/DeleteAccess request type message MsgDeleteAccessRequest { + option (cosmos.msg.v1.signer) = "administrator"; + string denom = 1; string administrator = 2; string removed_address = 3; @@ -125,6 +129,8 @@ message MsgDeleteAccessResponse {} // MsgFinalizeRequest defines the Msg/Finalize request type message MsgFinalizeRequest { + option (cosmos.msg.v1.signer) = "administrator"; + string denom = 1; string administrator = 2; } @@ -133,6 +139,8 @@ message MsgFinalizeResponse {} // MsgActivateRequest defines the Msg/Activate request type message MsgActivateRequest { + option (cosmos.msg.v1.signer) = "administrator"; + string denom = 1; string administrator = 2; } @@ -141,6 +149,8 @@ message MsgActivateResponse {} // MsgCancelRequest defines the Msg/Cancel request type message MsgCancelRequest { + option (cosmos.msg.v1.signer) = "reward_address"; + string denom = 1; string administrator = 2; } @@ -149,6 +159,8 @@ message MsgCancelResponse {} // MsgDeleteRequest defines the Msg/Delete request type message MsgDeleteRequest { + option (cosmos.msg.v1.signer) = "administrator"; + string denom = 1; string administrator = 2; } @@ -157,6 +169,8 @@ message MsgDeleteResponse {} // MsgMintRequest defines the Msg/Mint request type message MsgMintRequest { + option (cosmos.msg.v1.signer) = "administrator"; + cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"]; string administrator = 2; @@ -166,6 +180,8 @@ message MsgMintResponse {} // MsgBurnRequest defines the Msg/Burn request type message MsgBurnRequest { + option (cosmos.msg.v1.signer) = "administrator"; + cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"]; string administrator = 2; @@ -175,6 +191,8 @@ message MsgBurnResponse {} // MsgWithdrawRequest defines the Msg/Withdraw request type message MsgWithdrawRequest { + option (cosmos.msg.v1.signer) = "administrator"; + string denom = 1; string administrator = 2; string to_address = 3; @@ -186,6 +204,8 @@ message MsgWithdrawResponse {} // MsgTransferRequest defines the Msg/Transfer request type message MsgTransferRequest { + option (cosmos.msg.v1.signer) = "administrator"; + cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"]; string administrator = 3; @@ -198,6 +218,8 @@ message MsgTransferResponse {} // MsgIbcTransferRequest defines the Msg/IbcTransfer request type for markers. message MsgIbcTransferRequest { + option (cosmos.msg.v1.signer) = "administrator"; + ibc.applications.transfer.v1.MsgTransfer transfer = 1 [ (gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types.MsgTransfer" @@ -210,6 +232,8 @@ message MsgIbcTransferResponse {} // MsgSetDenomMetadataRequest defines the Msg/SetDenomMetadata request type message MsgSetDenomMetadataRequest { + option (cosmos.msg.v1.signer) = "administrator"; + cosmos.bank.v1beta1.Metadata metadata = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/x/bank/types.Metadata"]; string administrator = 2; @@ -220,6 +244,8 @@ message MsgSetDenomMetadataResponse {} // MsgAddFinalizeActivateMarkerRequest defines the Msg/AddFinalizeActivateMarker request type message MsgAddFinalizeActivateMarkerRequest { + option (cosmos.msg.v1.signer) = "from_address"; + cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"]; string manager = 3; @@ -328,6 +354,8 @@ message MsgUpdateSendDenyListResponse {} // MsgAddNetAssetValuesRequest defines the Msg/AddNetAssetValues request type message MsgAddNetAssetValuesRequest { + option (cosmos.msg.v1.signer) = "administrator"; + string denom = 1; string administrator = 2; repeated NetAssetValue net_asset_values = 3 [(gogoproto.nullable) = false]; diff --git a/proto/provenance/msgfees/v1/tx.proto b/proto/provenance/msgfees/v1/tx.proto index 860e298f52..4299c37eeb 100644 --- a/proto/provenance/msgfees/v1/tx.proto +++ b/proto/provenance/msgfees/v1/tx.proto @@ -39,6 +39,8 @@ service Msg { // MsgAssessCustomMsgFeeRequest defines an sdk.Msg type message MsgAssessCustomMsgFeeRequest { + option (cosmos.msg.v1.signer) = "from"; + option (gogoproto.equal) = false; option (gogoproto.goproto_getters) = false; option (gogoproto.goproto_stringer) = true; diff --git a/proto/provenance/name/v1/name.proto b/proto/provenance/name/v1/name.proto index d9503878ff..8e7068b05a 100644 --- a/proto/provenance/name/v1/name.proto +++ b/proto/provenance/name/v1/name.proto @@ -1,6 +1,8 @@ syntax = "proto3"; package provenance.name.v1; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; option go_package = "github.com/provenance-io/provenance/x/name/types"; @@ -22,12 +24,14 @@ message Params { // NameRecord is a structure used to bind ownership of a name hierarchy to a collection of addresses message NameRecord { + option (cosmos.msg.v1.signer) = "address"; + option (gogoproto.goproto_stringer) = false; // the bound name string name = 1; // the address the name resolved to - string address = 2; + string address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];; // whether owner signature is required to add sub-names bool restricted = 3; } diff --git a/proto/provenance/name/v1/tx.proto b/proto/provenance/name/v1/tx.proto index 12e1d6b348..eb7acbad7c 100644 --- a/proto/provenance/name/v1/tx.proto +++ b/proto/provenance/name/v1/tx.proto @@ -30,6 +30,8 @@ service Msg { // The record may optionally be restricted to prevent additional names from being added under this one without the // owner signing the request. message MsgBindNameRequest { + option (cosmos.msg.v1.signer) = "parent"; + option (gogoproto.equal) = false; option (gogoproto.goproto_getters) = false; @@ -46,6 +48,8 @@ message MsgBindNameResponse {} // may not have any child names currently bound for this request to be successful. All associated attributes on account // addresses will be deleted. message MsgDeleteNameRequest { + option (cosmos.msg.v1.signer) = "record"; + option (gogoproto.equal) = false; option (gogoproto.goproto_getters) = false; diff --git a/proto/provenance/reward/v1/tx.proto b/proto/provenance/reward/v1/tx.proto index 7cfb8f9f62..9664c799b4 100644 --- a/proto/provenance/reward/v1/tx.proto +++ b/proto/provenance/reward/v1/tx.proto @@ -5,6 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/timestamp.proto"; import "cosmos/base/v1beta1/coin.proto"; import "provenance/reward/v1/reward.proto"; +import "cosmos/msg/v1/msg.proto"; option go_package = "github.com/provenance-io/provenance/x/reward/types"; option java_package = "io.provenance.reward.v1"; @@ -29,6 +30,8 @@ service Msg { // MsgCreateRewardProgramRequest is the request type for creating a reward program RPC message MsgCreateRewardProgramRequest { + option (cosmos.msg.v1.signer) = "distribute_from_address"; + option (gogoproto.equal) = true; option (gogoproto.goproto_stringer) = true; @@ -69,6 +72,8 @@ message MsgCreateRewardProgramResponse { // MsgEndRewardProgramRequest is the request type for ending a reward program RPC message MsgEndRewardProgramRequest { + option (cosmos.msg.v1.signer) = "program_owner_address"; + option (gogoproto.equal) = true; option (gogoproto.goproto_stringer) = true; @@ -83,6 +88,8 @@ message MsgEndRewardProgramResponse {} // MsgClaimRewardsRequest is the request type for claiming reward from reward program RPC message MsgClaimRewardsRequest { + option (cosmos.msg.v1.signer) = "reward_address"; + // reward program id to claim rewards. uint64 reward_program_id = 1; // reward address and signer of msg to send claimed rewards to. @@ -98,6 +105,8 @@ message MsgClaimRewardsResponse { // MsgClaimRewardsResponse is the request type for claiming rewards from all reward programs RPC message MsgClaimAllRewardsRequest { + option (cosmos.msg.v1.signer) = "reward_address"; + // reward address and signer of msg to send claimed rewards to. string reward_address = 1; } diff --git a/proto/provenance/trigger/v1/tx.proto b/proto/provenance/trigger/v1/tx.proto index 0fb6402cda..c723829ac0 100644 --- a/proto/provenance/trigger/v1/tx.proto +++ b/proto/provenance/trigger/v1/tx.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package provenance.trigger.v1; +import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; import "google/protobuf/any.proto"; @@ -19,6 +20,8 @@ service Msg { // MsgCreateTriggerRequest is the request type for creating a trigger RPC message MsgCreateTriggerRequest { + option (cosmos.msg.v1.signer) = "authorities"; + option (gogoproto.equal) = true; option (gogoproto.goproto_stringer) = true; @@ -38,6 +41,8 @@ message MsgCreateTriggerResponse { // MsgDestroyTriggerRequest is the request type for creating a trigger RPC message MsgDestroyTriggerRequest { + option (cosmos.msg.v1.signer) = "authority"; + option (gogoproto.equal) = true; option (gogoproto.goproto_stringer) = true; diff --git a/x/attribute/simulation/operations_test.go b/x/attribute/simulation/operations_test.go index 13269b83d8..cde1180dea 100644 --- a/x/attribute/simulation/operations_test.go +++ b/x/attribute/simulation/operations_test.go @@ -76,11 +76,11 @@ func (s *SimTestSuite) TestWeightedOperations() { opMsgRoute string opMsgName string }{ - {simappparams.DefaultWeightMsgAddAttribute, sdk.MsgTypeURL(&types.MsgAddAttributeRequest{}), sdk.MsgTypeURL(&types.MsgAddAttributeRequest{})}, - {simappparams.DefaultWeightMsgUpdateAttribute, sdk.MsgTypeURL(&types.MsgUpdateAttributeRequest{}), sdk.MsgTypeURL(&types.MsgUpdateAttributeRequest{})}, - {simappparams.DefaultWeightMsgDeleteAttribute, sdk.MsgTypeURL(&types.MsgDeleteAttributeRequest{}), sdk.MsgTypeURL(&types.MsgDeleteAttributeRequest{})}, - {simappparams.DefaultWeightMsgDeleteDistinctAttribute, sdk.MsgTypeURL(&types.MsgDeleteDistinctAttributeRequest{}), sdk.MsgTypeURL(&types.MsgDeleteDistinctAttributeRequest{})}, - {simappparams.DefaultWeightMsgSetAccountData, sdk.MsgTypeURL(&types.MsgSetAccountDataRequest{}), sdk.MsgTypeURL(&types.MsgSetAccountDataRequest{})}, + {weight: simappparams.DefaultWeightMsgAddAttribute, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgAddAttributeRequest{})}, + {weight: simappparams.DefaultWeightMsgUpdateAttribute, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgUpdateAttributeRequest{})}, + {weight: simappparams.DefaultWeightMsgDeleteAttribute, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgDeleteAttributeRequest{})}, + {weight: simappparams.DefaultWeightMsgDeleteDistinctAttribute, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgDeleteDistinctAttributeRequest{})}, + {weight: simappparams.DefaultWeightMsgSetAccountData, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgSetAccountDataRequest{})}, } expNames := make([]string, len(expected)) @@ -119,9 +119,6 @@ func (s *SimTestSuite) TestSimulateMsgAddAttribute() { name := "example.provenance" s.LogIfError(s.app.NameKeeper.SetNameRecord(s.ctx, name, accounts[0].Address, false), "SetNameRecord(%q) error", name) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgAddAttribute(s.app.AttributeKeeper, s.app.AccountKeeper, s.app.BankKeeper, s.app.NameKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -129,7 +126,7 @@ func (s *SimTestSuite) TestSimulateMsgAddAttribute() { s.LogOperationMsg(operationMsg) var msg types.MsgAddAttributeRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal("cosmos1tnh2q55v8wyygtt9srz5safamzdengsnqeycj3", msg.Account, "msg.Account") @@ -138,7 +135,7 @@ func (s *SimTestSuite) TestSimulateMsgAddAttribute() { s.Assert().Equal(types.AttributeType_Uri, msg.AttributeType, "msg.AttributeType") s.Assert().Equal([]byte("http://www.example.com/"), msg.Value, "msg.Value") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -154,9 +151,6 @@ func (s *SimTestSuite) TestSimulateMsgUpdateAttribute() { attr := types.NewAttribute(name, accounts[1].Address.String(), types.AttributeType_String, []byte("test"), &expireTime) s.LogIfError(s.app.AttributeKeeper.SetAttribute(s.ctx, attr, accounts[0].Address), "SetAttribute(%q) error", name) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash, Time: time.Now()}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgUpdateAttribute(s.app.AttributeKeeper, s.app.AccountKeeper, s.app.BankKeeper, s.app.NameKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -164,14 +158,14 @@ func (s *SimTestSuite) TestSimulateMsgUpdateAttribute() { s.LogOperationMsg(operationMsg) var msg types.MsgUpdateAttributeRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") s.Assert().Equal(name, msg.Name, "msg.Name") s.Assert().Equal(accounts[0].Address.String(), msg.Owner, "msg.Owner") s.Assert().Equal(accounts[1].Address.String(), msg.Account, "msg.Account") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -186,8 +180,6 @@ func (s *SimTestSuite) TestSimulateMsgDeleteAttribute() { s.LogIfError(s.app.NameKeeper.SetNameRecord(s.ctx, name, accounts[0].Address, false), "SetNameRecord(%q) error", name) attr := types.NewAttribute(name, accounts[1].Address.String(), types.AttributeType_String, []byte("test"), &expireTime) s.LogIfError(s.app.AttributeKeeper.SetAttribute(s.ctx, attr, accounts[0].Address), "SetAttribute(%q) error", name) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash, Time: time.Now()}}) // TODO[1760]: finalize-block // execute operation op := simulation.SimulateMsgDeleteAttribute(s.app.AttributeKeeper, s.app.AccountKeeper, s.app.BankKeeper, s.app.NameKeeper) @@ -196,14 +188,14 @@ func (s *SimTestSuite) TestSimulateMsgDeleteAttribute() { s.LogOperationMsg(operationMsg) var msg types.MsgDeleteAttributeRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") s.Assert().Equal(name, msg.Name, "msg.Name") s.Assert().Equal(accounts[0].Address.String(), msg.Owner, "msg.Owner") s.Assert().Equal(accounts[1].Address.String(), msg.Account, "msg.Account") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -219,9 +211,6 @@ func (s *SimTestSuite) TestSimulateMsgDeleteDistinctAttribute() { attr := types.NewAttribute(name, accounts[1].Address.String(), types.AttributeType_String, []byte("test"), &expireTime) s.LogIfError(s.app.AttributeKeeper.SetAttribute(s.ctx, attr, accounts[0].Address), "SetAttribute(%q) error", name) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash, Time: time.Now()}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgDeleteDistinctAttribute(s.app.AttributeKeeper, s.app.AccountKeeper, s.app.BankKeeper, s.app.NameKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -229,14 +218,14 @@ func (s *SimTestSuite) TestSimulateMsgDeleteDistinctAttribute() { s.LogOperationMsg(operationMsg) var msg types.MsgDeleteDistinctAttributeRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") s.Assert().Equal(name, msg.Name, "msg.Name") s.Assert().Equal(accounts[0].Address.String(), msg.Owner, "msg.Owner") s.Assert().Equal(accounts[1].Address.String(), msg.Account, "msg.Account") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -246,8 +235,6 @@ func (s *SimTestSuite) TestSimulateMsgSetAccountData() { r := rand.New(src) accounts := s.getTestingAccounts(r, 3) - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash, Time: time.Now()}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgSetAccountData(s.app.AttributeKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -255,13 +242,13 @@ func (s *SimTestSuite) TestSimulateMsgSetAccountData() { s.LogOperationMsg(operationMsg) var msg types.MsgSetAccountDataRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") s.Assert().Equal("", msg.Value, "msg.Value") s.Assert().Equal(accounts[1].Address.String(), msg.Account, "msg.Account") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } diff --git a/x/attribute/types/tx.pb.go b/x/attribute/types/tx.pb.go index a504a1a79b..8633c54bb4 100644 --- a/x/attribute/types/tx.pb.go +++ b/x/attribute/types/tx.pb.go @@ -599,54 +599,55 @@ func init() { func init() { proto.RegisterFile("provenance/attribute/v1/tx.proto", fileDescriptor_5de344c1a12714be) } var fileDescriptor_5de344c1a12714be = []byte{ - // 751 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xbf, 0x6f, 0xd3, 0x40, - 0x14, 0xce, 0x25, 0x69, 0x0a, 0xd7, 0x34, 0x45, 0x47, 0x4b, 0x5c, 0x83, 0x12, 0x37, 0x94, 0x12, - 0x21, 0x61, 0xd3, 0x54, 0x2c, 0x01, 0x86, 0x56, 0x61, 0x8c, 0x84, 0x42, 0x41, 0xa8, 0x03, 0xd5, - 0x25, 0x3d, 0x8c, 0xa5, 0xd8, 0xe7, 0xe6, 0xce, 0x69, 0xcb, 0x54, 0x31, 0xb1, 0x51, 0x31, 0x95, - 0xad, 0xe2, 0x2f, 0xe0, 0xcf, 0xe8, 0xd8, 0x91, 0xa1, 0x02, 0xd4, 0x0e, 0xf0, 0x1f, 0xb0, 0xa2, - 0xf8, 0x57, 0x9c, 0x1f, 0x36, 0x49, 0xd8, 0xfc, 0xce, 0xef, 0x7d, 0xef, 0xf3, 0xf7, 0xbe, 0x77, - 0x09, 0x94, 0xcc, 0x16, 0x6d, 0x13, 0x03, 0x1b, 0x0d, 0xa2, 0x60, 0xce, 0x5b, 0x5a, 0xdd, 0xe2, - 0x44, 0x69, 0xaf, 0x2a, 0x7c, 0x5f, 0x36, 0x5b, 0x94, 0x53, 0x94, 0xed, 0x66, 0xc8, 0x7e, 0x86, - 0xdc, 0x5e, 0x15, 0xb3, 0x0d, 0xca, 0x74, 0xca, 0x14, 0x9d, 0xa9, 0x9d, 0x02, 0x9d, 0xa9, 0x4e, - 0x85, 0x38, 0xaf, 0x52, 0x95, 0xda, 0x8f, 0x4a, 0xe7, 0xc9, 0x3d, 0xcd, 0xab, 0x94, 0xaa, 0x4d, - 0xa2, 0xd8, 0x51, 0xdd, 0x7a, 0xa3, 0x70, 0x4d, 0x27, 0x8c, 0x63, 0xdd, 0x74, 0x13, 0xee, 0x86, - 0x51, 0xe9, 0x76, 0xb5, 0x13, 0x0b, 0x5f, 0xe2, 0xf0, 0x46, 0x95, 0xa9, 0xeb, 0x3b, 0x3b, 0xeb, - 0xde, 0x9b, 0x1a, 0xd9, 0xb5, 0x08, 0xe3, 0x08, 0xc1, 0xa4, 0x81, 0x75, 0x22, 0x00, 0x09, 0x14, - 0xaf, 0xd6, 0xec, 0x67, 0x34, 0x0f, 0xa7, 0xda, 0xb8, 0x69, 0x11, 0x21, 0x2e, 0x81, 0x62, 0xba, - 0xe6, 0x04, 0xa8, 0x0a, 0x33, 0x3e, 0xee, 0x36, 0x3f, 0x30, 0x89, 0x90, 0x90, 0x40, 0x31, 0x53, - 0x5a, 0x91, 0x43, 0xbe, 0x57, 0xf6, 0x9b, 0x6d, 0x1e, 0x98, 0xa4, 0x36, 0x8b, 0x83, 0x21, 0x12, - 0xe0, 0x34, 0x6e, 0x34, 0xa8, 0x65, 0x70, 0x21, 0x69, 0xf7, 0xf6, 0xc2, 0x4e, 0x7b, 0xba, 0x67, - 0x90, 0x96, 0x30, 0x65, 0x9f, 0x3b, 0x01, 0xaa, 0xc2, 0x39, 0xb2, 0x6f, 0x6a, 0x2d, 0xcc, 0x35, - 0x6a, 0x6c, 0xef, 0x60, 0x4e, 0x84, 0x94, 0x04, 0x8a, 0x33, 0x25, 0x51, 0x76, 0x74, 0x92, 0x3d, - 0x9d, 0xe4, 0x4d, 0x4f, 0xa7, 0x8d, 0x2b, 0xa7, 0xdf, 0xf3, 0xe0, 0xe8, 0x47, 0x1e, 0xd4, 0x32, - 0xdd, 0xe2, 0x0a, 0xe6, 0xa4, 0x7c, 0xed, 0xc3, 0x49, 0x3e, 0x76, 0x7c, 0x92, 0x8f, 0xfd, 0x3e, - 0xc9, 0xc7, 0x0e, 0xcf, 0xa5, 0x58, 0x61, 0x11, 0x66, 0x07, 0x34, 0x62, 0x26, 0x35, 0x18, 0x29, - 0xfc, 0x89, 0xc3, 0xc5, 0x2a, 0x53, 0x5f, 0x98, 0x9d, 0xb6, 0x23, 0x49, 0x78, 0x07, 0x66, 0x68, - 0x4b, 0x53, 0x35, 0x03, 0x37, 0xb7, 0x83, 0x5a, 0xce, 0x7a, 0xa7, 0x2f, 0x6d, 0x4d, 0x97, 0x60, - 0xda, 0xb2, 0x41, 0xdd, 0xa4, 0x84, 0x9d, 0x34, 0xe3, 0x9c, 0x39, 0x29, 0xaf, 0x61, 0xd6, 0x47, - 0xea, 0xd3, 0x3f, 0x39, 0x96, 0xfe, 0x0b, 0x1e, 0x4c, 0xcf, 0x31, 0xda, 0x82, 0x0b, 0x2e, 0x85, - 0x3e, 0xf4, 0xa9, 0xb1, 0xd0, 0xaf, 0x5b, 0xbd, 0xe2, 0xf4, 0xcf, 0x38, 0x15, 0x32, 0xe3, 0xe9, - 0xc0, 0x8c, 0x87, 0x0c, 0xe5, 0x16, 0x14, 0x87, 0x09, 0xef, 0xce, 0xe5, 0x1c, 0xc0, 0xdb, 0x83, - 0xaf, 0x9f, 0xfa, 0x93, 0x9e, 0xc4, 0xe4, 0x03, 0x2e, 0x4b, 0x4c, 0xee, 0xb2, 0x71, 0x4d, 0x5e, - 0x4e, 0xbb, 0x1f, 0x0f, 0x0e, 0xcf, 0x25, 0x50, 0x58, 0x81, 0xcb, 0xd1, 0x5f, 0xe7, 0xca, 0xb0, - 0x6b, 0xbb, 0xb3, 0x42, 0x9a, 0x64, 0x44, 0x77, 0x06, 0x68, 0xc5, 0x43, 0x68, 0x25, 0x46, 0x99, - 0xcb, 0x40, 0x4b, 0x97, 0xd0, 0x47, 0x00, 0x97, 0xfc, 0xd7, 0x15, 0x8d, 0x71, 0xcd, 0x68, 0xf0, - 0xff, 0xb8, 0x7a, 0x02, 0x7c, 0x13, 0x21, 0x7c, 0x93, 0xd1, 0x7c, 0x97, 0x61, 0x21, 0x8a, 0x90, - 0xcb, 0xfb, 0x15, 0x14, 0xaa, 0x4c, 0x7d, 0x4e, 0xf8, 0xba, 0x03, 0x5f, 0xc1, 0x1c, 0x7b, 0x6c, - 0x7d, 0x66, 0x0e, 0xdd, 0x41, 0x66, 0xbd, 0x4a, 0x96, 0xd3, 0xef, 0x7f, 0x7d, 0xbd, 0xe7, 0x45, - 0x85, 0x9b, 0xf6, 0x88, 0xfa, 0x91, 0x9d, 0xb6, 0xa5, 0xcf, 0x29, 0x98, 0xa8, 0x32, 0x15, 0xed, - 0xc2, 0x74, 0xf0, 0xfa, 0x41, 0x4a, 0xe8, 0xee, 0x0d, 0xbf, 0xcc, 0xc5, 0x07, 0xa3, 0x17, 0x38, - 0xad, 0xd1, 0x3b, 0x38, 0xd7, 0xe7, 0x2f, 0x54, 0x8a, 0x02, 0x19, 0x7e, 0x05, 0x8a, 0x6b, 0x63, - 0xd5, 0xb8, 0xbd, 0x8f, 0x01, 0x5c, 0x0c, 0x35, 0x37, 0x7a, 0x3c, 0x06, 0xe4, 0xc0, 0xc6, 0x8b, - 0x4f, 0x26, 0xac, 0xee, 0xca, 0xd2, 0xe7, 0xed, 0x68, 0x59, 0x86, 0xef, 0x5e, 0xb4, 0x2c, 0x21, - 0xcb, 0x83, 0x3e, 0x01, 0x98, 0x0d, 0x31, 0x2a, 0x2a, 0xff, 0x1b, 0x30, 0x6c, 0xdd, 0xc4, 0x47, - 0x13, 0xd5, 0xba, 0xa4, 0xf6, 0x60, 0xa6, 0xd7, 0xbc, 0x68, 0x35, 0x0a, 0x6e, 0xe8, 0x0a, 0x89, - 0xa5, 0x71, 0x4a, 0x9c, 0xc6, 0x1b, 0xfa, 0xe9, 0x45, 0x0e, 0x9c, 0x5d, 0xe4, 0xc0, 0xcf, 0x8b, - 0x1c, 0x38, 0xba, 0xcc, 0xc5, 0xce, 0x2e, 0x73, 0xb1, 0x6f, 0x97, 0xb9, 0x18, 0x14, 0x35, 0x1a, - 0x86, 0xf7, 0x0c, 0x6c, 0x3d, 0x54, 0x35, 0xfe, 0xd6, 0xaa, 0xcb, 0x0d, 0xaa, 0x2b, 0xdd, 0xac, - 0xfb, 0x1a, 0x0d, 0x44, 0xca, 0x7e, 0xe0, 0x6f, 0x53, 0xe7, 0x37, 0x8f, 0xd5, 0x53, 0xf6, 0xf5, - 0xbe, 0xf6, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x76, 0x39, 0x40, 0xe6, 0x09, 0x00, 0x00, + // 761 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4d, 0x6f, 0xd3, 0x4c, + 0x10, 0xf6, 0xd6, 0x69, 0xfa, 0xbe, 0xdb, 0x34, 0x95, 0x96, 0xb6, 0x71, 0x4d, 0x95, 0xb8, 0xa1, + 0x94, 0x08, 0x09, 0x9b, 0xa6, 0xe2, 0x12, 0xe0, 0xd0, 0x2a, 0x1c, 0x23, 0xa1, 0x50, 0x10, 0xea, + 0x81, 0xca, 0x49, 0x17, 0x63, 0x29, 0xf6, 0xba, 0xd9, 0x75, 0xda, 0xc2, 0xa5, 0x70, 0xe2, 0x58, + 0x71, 0x6a, 0x6f, 0xfd, 0x05, 0x88, 0x9f, 0xd1, 0x63, 0x8f, 0x1c, 0x2a, 0x40, 0xad, 0x04, 0xfc, + 0x0c, 0x14, 0x7f, 0xc5, 0xf9, 0x70, 0x88, 0xc3, 0x6d, 0x67, 0x77, 0xe6, 0x99, 0x67, 0x9f, 0x99, + 0x1d, 0x1b, 0x4a, 0x56, 0x93, 0xb4, 0xb0, 0xa9, 0x9a, 0x75, 0xac, 0xa8, 0x8c, 0x35, 0xf5, 0x9a, + 0xcd, 0xb0, 0xd2, 0x5a, 0x53, 0xd8, 0x81, 0x6c, 0x35, 0x09, 0x23, 0x28, 0xd3, 0xf1, 0x90, 0x03, + 0x0f, 0xb9, 0xb5, 0x26, 0x66, 0xea, 0x84, 0x1a, 0x84, 0x2a, 0x06, 0xd5, 0xda, 0x01, 0x06, 0xd5, + 0xdc, 0x08, 0x71, 0x4e, 0x23, 0x1a, 0x71, 0x96, 0x4a, 0x7b, 0xe5, 0xed, 0xe6, 0x34, 0x42, 0xb4, + 0x06, 0x56, 0x1c, 0xab, 0x66, 0xbf, 0x56, 0x98, 0x6e, 0x60, 0xca, 0x54, 0xc3, 0xf2, 0x1c, 0xee, + 0x44, 0x51, 0xe9, 0x64, 0x75, 0x1c, 0xf3, 0x9f, 0x27, 0xe0, 0x42, 0x85, 0x6a, 0x1b, 0xbb, 0xbb, + 0x1b, 0xfe, 0x49, 0x15, 0xef, 0xd9, 0x98, 0x32, 0x84, 0x60, 0xc2, 0x54, 0x0d, 0x2c, 0x00, 0x09, + 0x14, 0xfe, 0xaf, 0x3a, 0x6b, 0x34, 0x07, 0x27, 0x5b, 0x6a, 0xc3, 0xc6, 0xc2, 0x84, 0x04, 0x0a, + 0xa9, 0xaa, 0x6b, 0xa0, 0x0a, 0x4c, 0x07, 0xb8, 0x3b, 0xec, 0xd0, 0xc2, 0x02, 0x2f, 0x81, 0x42, + 0xba, 0xb8, 0x2a, 0x47, 0xdc, 0x57, 0x0e, 0x92, 0x6d, 0x1d, 0x5a, 0xb8, 0x3a, 0xa3, 0x86, 0x4d, + 0x24, 0xc0, 0x29, 0xb5, 0x5e, 0x27, 0xb6, 0xc9, 0x84, 0x84, 0x93, 0xdb, 0x37, 0xdb, 0xe9, 0xc9, + 0xbe, 0x89, 0x9b, 0xc2, 0xa4, 0xb3, 0xef, 0x1a, 0xa8, 0x02, 0x67, 0xf1, 0x81, 0xa5, 0x37, 0x55, + 0xa6, 0x13, 0x73, 0x67, 0x57, 0x65, 0x58, 0x48, 0x4a, 0xa0, 0x30, 0x5d, 0x14, 0x65, 0x57, 0x27, + 0xd9, 0xd7, 0x49, 0xde, 0xf2, 0x75, 0xda, 0xfc, 0xef, 0xfc, 0x5b, 0x0e, 0x1c, 0x7f, 0xcf, 0x81, + 0x6a, 0xba, 0x13, 0x5c, 0x56, 0x19, 0x2e, 0x2d, 0x7d, 0x3c, 0xcb, 0x71, 0x27, 0x67, 0x39, 0xee, + 0xf7, 0x59, 0x8e, 0x3b, 0xba, 0x94, 0xb8, 0x0f, 0xbf, 0xbe, 0xdc, 0xf5, 0x29, 0xe4, 0x17, 0x61, + 0xa6, 0x4f, 0x2f, 0x6a, 0x11, 0x93, 0xe2, 0xfc, 0x7b, 0x1e, 0x2e, 0x56, 0xa8, 0xf6, 0xdc, 0x6a, + 0x53, 0x18, 0x49, 0xce, 0xdb, 0x30, 0x4d, 0x9a, 0xba, 0xa6, 0x9b, 0x6a, 0x63, 0x27, 0xac, 0xeb, + 0x8c, 0xbf, 0xfb, 0xc2, 0xd1, 0x77, 0x19, 0xa6, 0x6c, 0x07, 0xd4, 0x73, 0xe2, 0x1d, 0xa7, 0x69, + 0x77, 0xcf, 0x75, 0x79, 0x05, 0x33, 0x01, 0x52, 0x4f, 0x2d, 0x12, 0xb1, 0x6a, 0x31, 0xef, 0xc3, + 0x74, 0x6d, 0xa3, 0x6d, 0x38, 0xef, 0x51, 0xe8, 0x41, 0x9f, 0x8c, 0x85, 0x7e, 0xc3, 0xee, 0x16, + 0xa7, 0xb7, 0xde, 0xc9, 0x88, 0x7a, 0x4f, 0x85, 0xea, 0x5d, 0x12, 0x07, 0x15, 0xc8, 0x3d, 0xcb, + 0x2f, 0x41, 0x71, 0x50, 0x09, 0xbc, 0x0a, 0xfd, 0x04, 0xf0, 0x56, 0xff, 0xf1, 0x93, 0xa0, 0xfe, + 0xe3, 0xb4, 0x7e, 0x5f, 0xef, 0xf1, 0xe3, 0xf7, 0x5e, 0xdc, 0xd6, 0x2f, 0x2d, 0x78, 0x32, 0x80, + 0xa3, 0x4b, 0x09, 0x84, 0x64, 0x58, 0x85, 0x2b, 0xc3, 0xef, 0xe9, 0x09, 0xf2, 0xce, 0xe9, 0xd8, + 0x32, 0x6e, 0xe0, 0x11, 0x3b, 0x36, 0x44, 0x70, 0x22, 0x82, 0x20, 0x1f, 0xaf, 0x56, 0x7d, 0xc9, + 0x3d, 0x6a, 0xa7, 0x00, 0x2e, 0x07, 0xc7, 0x65, 0x9d, 0x32, 0xdd, 0xac, 0xb3, 0x7f, 0x18, 0x52, + 0x21, 0xe6, 0x7c, 0x04, 0xf3, 0xc4, 0xa8, 0xcc, 0x57, 0x60, 0x7e, 0x18, 0x35, 0xef, 0x06, 0x2f, + 0xa1, 0x50, 0xa1, 0xda, 0x33, 0xcc, 0x36, 0xdc, 0x44, 0x65, 0x95, 0xa9, 0x3e, 0xef, 0x80, 0xa3, + 0x4b, 0xbc, 0x9f, 0x63, 0xb7, 0xba, 0xa5, 0x54, 0xd7, 0x10, 0xba, 0xe9, 0x94, 0xad, 0x17, 0xd9, + 0x4d, 0x5b, 0x3c, 0x4d, 0x42, 0xbe, 0x42, 0x35, 0xb4, 0x07, 0x53, 0xe1, 0x31, 0x85, 0x94, 0xc8, + 0x37, 0x3a, 0xf8, 0x03, 0x20, 0xde, 0x1f, 0x3d, 0xc0, 0x4d, 0x8d, 0xde, 0xc2, 0xd9, 0x9e, 0x9e, + 0x43, 0xc5, 0x61, 0x20, 0x83, 0x47, 0xa5, 0xb8, 0x1e, 0x2b, 0xc6, 0xcb, 0x7d, 0x02, 0xe0, 0x62, + 0x64, 0xc3, 0xa3, 0x47, 0x31, 0x20, 0xfb, 0xe6, 0x81, 0xf8, 0x78, 0xcc, 0xe8, 0x8e, 0x2c, 0x3d, + 0x5d, 0x3e, 0x5c, 0x96, 0xc1, 0xef, 0x71, 0xb8, 0x2c, 0x11, 0xcf, 0x08, 0x7d, 0x02, 0x30, 0x13, + 0xd1, 0xa8, 0xa8, 0xf4, 0x77, 0xc0, 0xa8, 0x87, 0x27, 0x3e, 0x1c, 0x2b, 0xd6, 0x23, 0xb5, 0x0f, + 0xd3, 0xdd, 0xcd, 0x8b, 0xd6, 0x86, 0xc1, 0x0d, 0x7c, 0x42, 0x62, 0x31, 0x4e, 0x88, 0x9b, 0x78, + 0xd3, 0x38, 0xbf, 0xca, 0x82, 0x8b, 0xab, 0x2c, 0xf8, 0x71, 0x95, 0x05, 0xc7, 0xd7, 0x59, 0xee, + 0xe2, 0x3a, 0xcb, 0x7d, 0xbd, 0xce, 0x72, 0x50, 0xd4, 0x49, 0x14, 0xde, 0x53, 0xb0, 0xfd, 0x40, + 0xd3, 0xd9, 0x1b, 0xbb, 0x26, 0xd7, 0x89, 0xa1, 0x74, 0xbc, 0xee, 0xe9, 0x24, 0x64, 0x29, 0x07, + 0xa1, 0x5f, 0xad, 0xf6, 0xb7, 0x91, 0xd6, 0x92, 0xce, 0xf0, 0x5f, 0xff, 0x13, 0x00, 0x00, 0xff, + 0xff, 0x5e, 0x5a, 0xfb, 0xc3, 0x1a, 0x0a, 0x00, 0x00, } func (this *MsgUpdateAttributeExpirationRequest) Equal(that interface{}) bool { diff --git a/x/exchange/params.pb.go b/x/exchange/params.pb.go index 6b7fa3f39a..a69b62a658 100644 --- a/x/exchange/params.pb.go +++ b/x/exchange/params.pb.go @@ -5,9 +5,9 @@ package exchange import ( fmt "fmt" + types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" - types "github.com/cosmos/cosmos-sdk/types" io "io" math "math" math_bits "math/bits" diff --git a/x/exchange/query.pb.go b/x/exchange/query.pb.go index 69a15d892b..0aa97cd012 100644 --- a/x/exchange/query.pb.go +++ b/x/exchange/query.pb.go @@ -2555,157 +2555,156 @@ func init() { } var fileDescriptor_00949b75b1c10bfe = []byte{ - // 2386 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4f, 0x6c, 0xdc, 0x58, - 0x19, 0xaf, 0x93, 0x26, 0x4d, 0xbe, 0xb4, 0xa9, 0xf6, 0x35, 0x2d, 0x93, 0x69, 0x3b, 0x49, 0xdd, - 0x7f, 0x51, 0xda, 0x8c, 0xf3, 0xa7, 0xcd, 0xa6, 0x8b, 0x4a, 0x37, 0xc9, 0x92, 0xa8, 0x12, 0xdb, - 0x66, 0xa7, 0x11, 0x5d, 0x55, 0x82, 0x59, 0xc7, 0xf3, 0x32, 0x35, 0xf1, 0xd8, 0xb3, 0xb6, 0x33, - 0x4d, 0x14, 0xe5, 0xc0, 0x3f, 0xad, 0x96, 0x03, 0x42, 0xe2, 0xb2, 0xa8, 0x62, 0x39, 0x2c, 0x02, - 0x69, 0x2f, 0xcb, 0x01, 0x4e, 0x08, 0xed, 0x81, 0x03, 0xbd, 0x20, 0xad, 0xe0, 0x02, 0x12, 0x02, - 0xd4, 0x72, 0x84, 0x23, 0x57, 0x84, 0xfc, 0xde, 0xe7, 0xb1, 0x3d, 0x63, 0xfb, 0x79, 0xda, 0x89, - 0x94, 0xd3, 0x64, 0x3c, 0xdf, 0x9f, 0xdf, 0xf7, 0x7b, 0xef, 0x7d, 0xef, 0xbd, 0x9f, 0x03, 0x72, - 0xdd, 0xb6, 0x1a, 0xd4, 0x54, 0x4d, 0x8d, 0x2a, 0x74, 0x47, 0x7b, 0xac, 0x9a, 0x55, 0xaa, 0x34, - 0x66, 0x94, 0xf7, 0xb7, 0xa9, 0xbd, 0x5b, 0xac, 0xdb, 0x96, 0x6b, 0x91, 0x33, 0x81, 0x4d, 0xd1, - 0xb7, 0x29, 0x36, 0x66, 0xf2, 0xa3, 0x9a, 0xe5, 0xd4, 0x2c, 0xa7, 0xcc, 0xac, 0x14, 0xfe, 0x85, - 0xbb, 0xe4, 0x27, 0xf9, 0x37, 0x65, 0x43, 0x75, 0x28, 0x8f, 0xa5, 0x34, 0x66, 0x36, 0xa8, 0xab, - 0xce, 0x28, 0x75, 0xb5, 0xaa, 0x9b, 0xaa, 0xab, 0x5b, 0x26, 0xda, 0x16, 0xc2, 0xb6, 0xbe, 0x95, - 0x66, 0xe9, 0xfe, 0xef, 0xe7, 0xaa, 0x96, 0x55, 0x35, 0xa8, 0xa2, 0xd6, 0x75, 0x45, 0x35, 0x4d, - 0xcb, 0x65, 0xce, 0x7e, 0xa6, 0x91, 0xaa, 0x55, 0xb5, 0x38, 0x02, 0xef, 0x2f, 0x7c, 0x3a, 0x91, - 0x50, 0x96, 0x66, 0xd5, 0x6a, 0xba, 0x5b, 0xa3, 0xa6, 0xeb, 0xfb, 0x5f, 0x4c, 0xb0, 0xac, 0xa9, - 0xf6, 0x16, 0x75, 0x05, 0x46, 0x96, 0x5d, 0xa1, 0xb6, 0x28, 0x52, 0x5d, 0xb5, 0xd5, 0x9a, 0x6f, - 0x74, 0x39, 0xd1, 0x68, 0x37, 0x8c, 0x6a, 0x2c, 0xc1, 0xcc, 0xdd, 0xe1, 0x06, 0xf2, 0x47, 0x12, - 0xe4, 0xde, 0xf1, 0x78, 0xbd, 0xef, 0x41, 0x58, 0xa1, 0x74, 0x59, 0x35, 0xb4, 0x12, 0x7d, 0x7f, - 0x9b, 0x3a, 0x2e, 0xb9, 0x0d, 0x83, 0xaa, 0xb3, 0x55, 0x66, 0xe8, 0x72, 0x3d, 0xe3, 0xd2, 0xc4, - 0xd0, 0xec, 0x78, 0x31, 0x7e, 0x10, 0x8b, 0x8b, 0xce, 0x16, 0x0b, 0x51, 0x1a, 0x50, 0xf1, 0x2f, - 0xcf, 0x7d, 0x43, 0xaf, 0xa0, 0x7b, 0x6f, 0xba, 0xfb, 0x92, 0x5e, 0x41, 0xf7, 0x0d, 0xfc, 0x4b, - 0xfe, 0x55, 0x0f, 0x8c, 0xc6, 0x40, 0x73, 0xea, 0x96, 0xe9, 0x50, 0xf2, 0x0e, 0x8c, 0x68, 0x36, - 0x65, 0x43, 0x58, 0xde, 0xa4, 0xb4, 0x6c, 0xd5, 0xd9, 0x68, 0xe6, 0xa4, 0xf1, 0xde, 0x89, 0xa1, - 0xd9, 0xd1, 0x22, 0x4e, 0x23, 0x6f, 0x32, 0x14, 0x71, 0x32, 0x14, 0x97, 0x2d, 0xdd, 0x5c, 0x3a, - 0xfa, 0xec, 0xef, 0x63, 0x47, 0x4a, 0xc4, 0x77, 0x5e, 0xa1, 0xf4, 0x3e, 0x77, 0x25, 0xdf, 0x84, - 0xb3, 0x0e, 0x75, 0x5d, 0x83, 0x7a, 0x0c, 0x96, 0x37, 0x0d, 0xd5, 0x8d, 0x44, 0xee, 0xc9, 0x16, - 0x39, 0x17, 0xc4, 0x58, 0x31, 0x54, 0x37, 0x14, 0xff, 0x3d, 0x38, 0x17, 0x8a, 0x6f, 0x7b, 0xe9, - 0x23, 0x09, 0x7a, 0xb3, 0x25, 0x18, 0x0d, 0x82, 0x94, 0xbc, 0x18, 0x41, 0x06, 0x79, 0x06, 0x46, - 0x18, 0x63, 0xab, 0xd4, 0xe5, 0x6c, 0xe2, 0x40, 0x8e, 0xc2, 0x00, 0x1b, 0x85, 0xb2, 0x5e, 0xc9, - 0x49, 0xe3, 0xd2, 0xc4, 0xd1, 0xd2, 0x31, 0xf6, 0xfd, 0x6e, 0x45, 0xfe, 0x1a, 0x9c, 0x6e, 0x71, - 0x41, 0x82, 0xe7, 0xa0, 0x8f, 0x8f, 0x9c, 0xc4, 0x46, 0xee, 0x7c, 0xd2, 0xc8, 0x71, 0x2f, 0x6e, - 0x2b, 0xbf, 0x07, 0xe3, 0x91, 0x68, 0x4b, 0xbb, 0x5f, 0xdd, 0x71, 0xa9, 0x6d, 0xaa, 0xc6, 0xdd, - 0xb7, 0x7c, 0x30, 0x67, 0x61, 0x90, 0x2f, 0x0a, 0x1f, 0xcd, 0x89, 0xd2, 0x00, 0x7f, 0x70, 0xb7, - 0x42, 0xc6, 0x60, 0x88, 0xa2, 0x87, 0xf7, 0xb3, 0x37, 0xe9, 0x06, 0x4b, 0xe0, 0x3f, 0xba, 0x5b, - 0x91, 0xdf, 0x85, 0x0b, 0x29, 0x19, 0x5e, 0x05, 0xfb, 0x1f, 0x24, 0x38, 0xeb, 0x87, 0x7e, 0x9b, - 0xe1, 0x61, 0x3f, 0x3b, 0x99, 0x70, 0x9f, 0x07, 0xe0, 0x0c, 0xbb, 0xbb, 0x75, 0x8a, 0xb0, 0x07, - 0xd9, 0x93, 0xf5, 0xdd, 0x3a, 0x25, 0x97, 0x60, 0x58, 0xdd, 0x74, 0xa9, 0x5d, 0x6e, 0x0e, 0x43, - 0x2f, 0x1b, 0x86, 0xe3, 0xec, 0xe9, 0x7d, 0x3e, 0x16, 0x64, 0x05, 0x20, 0xe8, 0x6a, 0x39, 0x8d, - 0x61, 0xbf, 0x12, 0x99, 0x0e, 0xbc, 0x9d, 0xfa, 0x93, 0x62, 0x4d, 0xad, 0x52, 0x44, 0x57, 0x0a, - 0x79, 0xca, 0x1f, 0x4b, 0x70, 0x2e, 0xbe, 0x12, 0xe4, 0xe7, 0x26, 0xf4, 0xf3, 0x96, 0x83, 0xcb, - 0x45, 0x40, 0x10, 0x1a, 0x93, 0xd5, 0x18, 0x7c, 0x57, 0x85, 0xf8, 0x78, 0xce, 0x08, 0xc0, 0xbf, - 0x4a, 0x90, 0x6f, 0x8e, 0xe2, 0x13, 0x13, 0x19, 0x68, 0x32, 0x5d, 0x84, 0x3e, 0xcb, 0x7b, 0xca, - 0x58, 0x1e, 0x5c, 0xca, 0xfd, 0xe9, 0xd7, 0x53, 0x23, 0x98, 0x65, 0xb1, 0x52, 0xb1, 0xa9, 0xe3, - 0x3c, 0x70, 0x6d, 0xdd, 0xac, 0x96, 0xb8, 0xd9, 0xe1, 0x22, 0xff, 0xa7, 0xa1, 0x69, 0x14, 0xa9, - 0xed, 0x90, 0x70, 0xff, 0x79, 0x88, 0xfb, 0x45, 0xc7, 0x69, 0x9d, 0xe5, 0x23, 0xd0, 0xa7, 0x7a, - 0x4f, 0x39, 0xf7, 0x25, 0xfe, 0xe5, 0xf0, 0x32, 0x1c, 0xa9, 0xe0, 0x90, 0x30, 0xbc, 0x81, 0x5b, - 0xaa, 0x07, 0xcf, 0x30, 0xa2, 0xf4, 0x76, 0x8b, 0x83, 0xa7, 0x12, 0x6e, 0x8e, 0xd1, 0x24, 0x87, - 0x84, 0x01, 0x23, 0x00, 0xb7, 0xdc, 0x3c, 0x29, 0xf9, 0x14, 0xcc, 0xc2, 0x31, 0x55, 0xd3, 0xac, - 0x6d, 0xd3, 0x15, 0xae, 0x6f, 0xdf, 0x30, 0xda, 0x7b, 0x7b, 0xa2, 0xbd, 0x57, 0xfe, 0x76, 0x68, - 0x46, 0x87, 0xd3, 0x21, 0x19, 0x1a, 0xf4, 0xab, 0x35, 0x4c, 0x27, 0xd8, 0x60, 0xa7, 0xbd, 0x0d, - 0xf6, 0xd3, 0x7f, 0x8c, 0x4d, 0x54, 0x75, 0xf7, 0xf1, 0xf6, 0x46, 0x51, 0xb3, 0x6a, 0x78, 0x1e, - 0xc5, 0x8f, 0x29, 0xa7, 0xb2, 0xa5, 0x78, 0x6b, 0xc0, 0x61, 0x0e, 0x4e, 0x09, 0x43, 0xcb, 0x0f, - 0x83, 0x6d, 0x69, 0x91, 0x63, 0x0e, 0x90, 0x38, 0xaf, 0x50, 0xb9, 0x6c, 0x80, 0x9c, 0x16, 0x18, - 0x6b, 0x5c, 0x81, 0xa1, 0xd0, 0x91, 0x14, 0x0b, 0xbd, 0x94, 0x34, 0xea, 0x7c, 0x4f, 0x58, 0x64, - 0xc8, 0x4b, 0x61, 0x47, 0xf9, 0x03, 0x29, 0xd8, 0xc0, 0xb9, 0x55, 0x4c, 0x19, 0xa9, 0x1b, 0x61, - 0xb7, 0x26, 0xf8, 0x6f, 0xa4, 0x80, 0xd1, 0x18, 0x24, 0x58, 0xf7, 0x6a, 0x5c, 0xdd, 0x97, 0x13, - 0xcf, 0xa8, 0x9c, 0xc0, 0x98, 0xc2, 0xbb, 0x37, 0xf5, 0xab, 0x70, 0x3e, 0xb4, 0x2e, 0x63, 0xd8, - 0xeb, 0x16, 0x41, 0x9f, 0x49, 0x50, 0x48, 0xca, 0x84, 0xec, 0xbc, 0x15, 0xc7, 0x8e, 0x9c, 0xc4, - 0x4e, 0x68, 0xe9, 0x1c, 0x0c, 0x35, 0x37, 0x82, 0xa3, 0x26, 0x1f, 0xd1, 0x2c, 0x13, 0x4a, 0xfe, - 0x9e, 0x04, 0x67, 0x5a, 0xdd, 0xb0, 0x3e, 0x6f, 0x3d, 0xf1, 0x55, 0x93, 0x61, 0x3d, 0xf1, 0xaf, - 0x64, 0x1e, 0xfa, 0x79, 0x68, 0xbc, 0xd0, 0x14, 0xd2, 0x17, 0x49, 0x09, 0xad, 0x65, 0x2d, 0xd2, - 0x6f, 0xf9, 0x8f, 0x5d, 0x1f, 0xd3, 0x9f, 0x87, 0xf7, 0xe6, 0x50, 0x16, 0xac, 0xf7, 0x36, 0x1c, - 0xe3, 0x68, 0xfc, 0xb1, 0xbc, 0x98, 0x0e, 0x7e, 0xc9, 0xd6, 0xe9, 0x66, 0xc9, 0xf7, 0xe9, 0xde, - 0x40, 0x8e, 0x00, 0x61, 0x28, 0xd7, 0xd8, 0x8d, 0x14, 0x0b, 0x91, 0xdf, 0x86, 0x53, 0x91, 0xa7, - 0x08, 0x7a, 0x1e, 0xfa, 0xf9, 0xcd, 0x15, 0x0f, 0xe3, 0x89, 0x84, 0xa3, 0x1f, 0x5a, 0xcb, 0xbf, - 0x93, 0xe0, 0x2a, 0x8b, 0x17, 0xcc, 0xcb, 0x07, 0xc1, 0xcd, 0x2a, 0x7a, 0x51, 0x7d, 0x17, 0x20, - 0xb8, 0x14, 0x61, 0x9e, 0x85, 0x44, 0x6e, 0x9c, 0x6a, 0x6b, 0x43, 0xe1, 0x81, 0x9b, 0x23, 0x12, - 0xc4, 0x22, 0x0b, 0x90, 0xd3, 0x4d, 0xcd, 0xd8, 0xae, 0xd0, 0xf2, 0x86, 0x4d, 0xd5, 0xad, 0x8a, - 0xf5, 0xc4, 0x2c, 0x6f, 0xea, 0xd4, 0xa8, 0x38, 0x6c, 0x02, 0x0d, 0x94, 0xce, 0xe0, 0xef, 0x4b, - 0xfe, 0xcf, 0x2b, 0xec, 0x57, 0xf9, 0xe9, 0x51, 0x98, 0x10, 0xe3, 0x47, 0x92, 0xea, 0x70, 0xc2, - 0x87, 0xe8, 0x5d, 0x09, 0x9d, 0x83, 0xd8, 0xaa, 0x8e, 0xfb, 0x19, 0x56, 0x28, 0x75, 0x88, 0x01, - 0x43, 0xba, 0x59, 0xdf, 0x76, 0xcb, 0xae, 0xe5, 0xaa, 0x86, 0xf8, 0x72, 0xdb, 0x79, 0x3e, 0x60, - 0xf1, 0xd7, 0xbd, 0xf0, 0xc4, 0x85, 0x93, 0x9a, 0x65, 0x36, 0xa8, 0xed, 0xd2, 0x0a, 0x66, 0xec, - 0xed, 0x7e, 0xc6, 0xe1, 0x66, 0x0e, 0x9e, 0x75, 0xdd, 0xcf, 0xea, 0xe8, 0x96, 0x59, 0x36, 0xd5, - 0x86, 0x93, 0x3b, 0x9a, 0xbe, 0x43, 0xdc, 0xc3, 0x13, 0xe5, 0x9a, 0xad, 0x6b, 0x14, 0xef, 0xdb, - 0xc3, 0x41, 0x8c, 0x7b, 0x6a, 0xc3, 0x21, 0xcb, 0x00, 0x2e, 0xbf, 0xb8, 0x9b, 0x6a, 0x23, 0xd7, - 0xc7, 0x26, 0x5b, 0xb6, 0x80, 0xa5, 0x01, 0xd7, 0xbb, 0xad, 0xdf, 0x53, 0x1b, 0xf2, 0x87, 0xfe, - 0x46, 0xfb, 0x75, 0xd5, 0xd0, 0x2b, 0xaa, 0x4b, 0x97, 0x6d, 0xaa, 0xba, 0x34, 0xda, 0x17, 0x29, - 0x9c, 0x66, 0x32, 0x05, 0x2d, 0x63, 0x7b, 0xb4, 0xf9, 0x0f, 0x38, 0xc3, 0x67, 0x52, 0x66, 0xf8, - 0xaa, 0xd5, 0x88, 0x89, 0x58, 0x3a, 0xa5, 0xb5, 0x3f, 0x94, 0x37, 0x71, 0xa7, 0x8d, 0x87, 0x82, - 0x33, 0x74, 0x04, 0xfa, 0xa8, 0x6d, 0x5b, 0xb6, 0x7f, 0x2f, 0x60, 0x5f, 0xc8, 0x35, 0x20, 0x55, - 0xab, 0x51, 0xae, 0xdb, 0x56, 0xbd, 0xfc, 0x44, 0x37, 0x8c, 0x72, 0x5d, 0x75, 0xfc, 0x85, 0x71, - 0xb2, 0x6a, 0x35, 0xd6, 0x6c, 0xab, 0xfe, 0x50, 0x37, 0x8c, 0x35, 0xd5, 0x71, 0xe4, 0x5b, 0xd8, - 0xdc, 0xfc, 0x3c, 0x1d, 0x6c, 0x02, 0x73, 0x78, 0xe2, 0x6f, 0x75, 0x4d, 0x03, 0xe7, 0x9d, 0x0b, - 0x0b, 0x2d, 0x5e, 0xa6, 0xca, 0xa7, 0xbf, 0x9f, 0xb4, 0x0c, 0xa7, 0x6a, 0xec, 0x21, 0x5b, 0x75, - 0x2d, 0xfc, 0x2a, 0xe9, 0xfc, 0xb6, 0x45, 0x2b, 0xbd, 0x56, 0x6b, 0x7d, 0x24, 0x57, 0x60, 0x2c, - 0x11, 0x42, 0xf7, 0x98, 0xdd, 0x0a, 0xb6, 0xc8, 0x35, 0x2e, 0x00, 0xfa, 0x05, 0x4e, 0x43, 0xbf, - 0x63, 0x6d, 0xdb, 0x1a, 0x15, 0xee, 0x90, 0x68, 0x27, 0x56, 0x60, 0xd6, 0xe1, 0x4b, 0x6d, 0xc9, - 0xb0, 0x94, 0x5b, 0x70, 0x0c, 0x05, 0x48, 0xa4, 0x70, 0x2c, 0xb9, 0xd9, 0x73, 0x4f, 0xdf, 0xde, - 0xbb, 0xd4, 0x5d, 0x68, 0x09, 0xeb, 0x3c, 0xd4, 0xdd, 0xc7, 0x0f, 0x18, 0xaa, 0x97, 0x2f, 0xa7, - 0x5b, 0x5b, 0xf3, 0xa7, 0x52, 0x70, 0x10, 0x8f, 0xc3, 0x87, 0x0c, 0x7c, 0x19, 0x06, 0x7c, 0x09, - 0x16, 0x7b, 0xb8, 0x90, 0x82, 0xa6, 0x43, 0xf7, 0x36, 0xe8, 0x24, 0x32, 0xd7, 0x55, 0xbb, 0x4a, - 0xc3, 0x73, 0xc3, 0x65, 0x0f, 0xc4, 0x64, 0x72, 0xbb, 0x03, 0x27, 0xd3, 0xc7, 0x77, 0xa8, 0xc8, - 0xac, 0x44, 0xce, 0x64, 0x3e, 0xdc, 0x6e, 0x1f, 0xfd, 0x3e, 0x09, 0x8b, 0x1a, 0xe1, 0x34, 0x87, - 0x8a, 0x8b, 0x6f, 0x20, 0x17, 0x98, 0xa2, 0xe5, 0x18, 0x76, 0xa7, 0xd3, 0xe5, 0x8f, 0x3b, 0x6c, - 0xb3, 0x09, 0xfc, 0xd7, 0x27, 0xa1, 0x35, 0x3e, 0x92, 0xf0, 0x2d, 0x00, 0x6f, 0xdf, 0xe5, 0x9b, - 0xd8, 0x41, 0x9c, 0x91, 0x06, 0x37, 0x29, 0x6e, 0x7f, 0x7e, 0x2e, 0x55, 0xd3, 0x68, 0xdd, 0x3d, - 0x88, 0xf3, 0x91, 0x97, 0x6b, 0x91, 0x45, 0x9f, 0xfd, 0xc5, 0x45, 0xe8, 0x63, 0x75, 0x93, 0x9f, - 0x49, 0x70, 0x3c, 0xfc, 0xbe, 0x83, 0x4c, 0x27, 0x51, 0x98, 0xf4, 0xd6, 0x26, 0x3f, 0xd3, 0x81, - 0x07, 0xe7, 0x55, 0x9e, 0xfc, 0xce, 0x9f, 0xff, 0xf5, 0xe3, 0x9e, 0x4b, 0x44, 0x56, 0x12, 0xde, - 0x17, 0x79, 0xbb, 0x23, 0x7f, 0x4b, 0x45, 0x7e, 0x22, 0xc1, 0x80, 0x2f, 0xbe, 0x93, 0xeb, 0xa9, - 0xb9, 0x5a, 0x5e, 0x43, 0xe4, 0xa7, 0x32, 0x5a, 0x23, 0xaa, 0x69, 0x86, 0x6a, 0x92, 0x4c, 0x28, - 0x69, 0xaf, 0xcd, 0x94, 0x3d, 0x5f, 0x74, 0xdc, 0x27, 0x1f, 0xf5, 0xc0, 0x48, 0xdc, 0x8b, 0x01, - 0xb2, 0x90, 0x29, 0x73, 0xcc, 0xdb, 0x8a, 0xfc, 0xad, 0x97, 0xf0, 0x44, 0xfc, 0x3f, 0x90, 0x58, - 0x01, 0xdf, 0x95, 0xc8, 0x9d, 0xd4, 0x0a, 0x1c, 0x7c, 0x49, 0xa8, 0xec, 0x35, 0x0f, 0x40, 0xfb, - 0xca, 0x5e, 0x68, 0x13, 0xde, 0x7f, 0xf4, 0x26, 0xf9, 0x8a, 0x92, 0xfa, 0x82, 0x31, 0xe2, 0x8b, - 0xbc, 0x84, 0x23, 0x90, 0x7f, 0x4b, 0x70, 0xb2, 0xe5, 0x75, 0x00, 0x99, 0x13, 0xd5, 0x16, 0xf3, - 0x1a, 0x24, 0x7f, 0xa3, 0x33, 0x27, 0xe4, 0xc2, 0x64, 0x54, 0x3c, 0x26, 0x33, 0x1d, 0x33, 0xf1, - 0x68, 0x2e, 0xd9, 0x29, 0xa9, 0x76, 0x87, 0x7c, 0x26, 0xc1, 0x70, 0x54, 0x80, 0x27, 0xb3, 0xc2, - 0x91, 0x6c, 0x7b, 0x13, 0x91, 0x9f, 0xeb, 0xc8, 0x07, 0x6b, 0xbd, 0xc1, 0x6a, 0x2d, 0x92, 0xeb, - 0x82, 0x5a, 0xd9, 0xcb, 0x0b, 0x65, 0x8f, 0x7d, 0xec, 0xfb, 0x88, 0x43, 0x82, 0xb6, 0x18, 0x71, - 0xbb, 0x7e, 0x2f, 0x46, 0x1c, 0xa3, 0x98, 0x67, 0x46, 0xcc, 0x5e, 0x06, 0x28, 0x7b, 0xec, 0x63, - 0x9f, 0x3c, 0x95, 0xe0, 0x78, 0x58, 0x7e, 0x16, 0xf4, 0xaa, 0x18, 0x39, 0x5c, 0xd0, 0xab, 0xe2, - 0xb4, 0x6d, 0xf9, 0x0a, 0xc3, 0x3a, 0x4e, 0x0a, 0xe9, 0x58, 0xc9, 0xe7, 0x12, 0x9c, 0x88, 0x08, - 0xc2, 0x44, 0x98, 0xac, 0x4d, 0xab, 0xce, 0xcf, 0x76, 0xe2, 0x82, 0x00, 0x57, 0x19, 0xc0, 0xc5, - 0xe4, 0x45, 0x1f, 0x33, 0x6b, 0x03, 0xbd, 0x4d, 0xd9, 0x43, 0xe5, 0x77, 0x9f, 0xfc, 0x51, 0x82, - 0xd3, 0xb1, 0xb2, 0x2f, 0x11, 0x36, 0xa5, 0x44, 0x0d, 0x3a, 0xff, 0xc6, 0xcb, 0xb8, 0x62, 0x65, - 0xb7, 0x59, 0x65, 0xaf, 0x93, 0x9b, 0x8a, 0xf8, 0xdf, 0x22, 0x14, 0x2c, 0x23, 0x54, 0xcf, 0xf7, - 0x79, 0x77, 0x6e, 0x53, 0x73, 0xc5, 0xdd, 0x39, 0x49, 0x8a, 0x16, 0x77, 0xe7, 0x44, 0xe9, 0x58, - 0xde, 0x61, 0xc5, 0xd8, 0x64, 0x3e, 0x4b, 0x31, 0x31, 0x6d, 0x69, 0x21, 0xd9, 0x33, 0x75, 0x80, - 0x59, 0x6f, 0x7a, 0xad, 0x4d, 0xb4, 0x25, 0x37, 0x33, 0x2c, 0x85, 0x18, 0x06, 0xe6, 0x3b, 0x75, - 0xc3, 0xf2, 0xaf, 0xb1, 0xf2, 0x2f, 0x93, 0x8b, 0x19, 0xca, 0x27, 0x1f, 0x4b, 0x30, 0xd8, 0x24, - 0x93, 0x4c, 0x65, 0x23, 0xdd, 0x47, 0x58, 0xcc, 0x6a, 0x8e, 0xc8, 0x66, 0x19, 0xb2, 0xeb, 0x64, - 0x32, 0x3b, 0xbd, 0xde, 0xb1, 0xe9, 0x44, 0x44, 0x33, 0x25, 0x59, 0x3a, 0x4b, 0x54, 0xc5, 0x15, - 0x2f, 0xf6, 0x76, 0x49, 0x56, 0xbe, 0xca, 0xc0, 0x5e, 0x20, 0x63, 0xe9, 0x60, 0x1d, 0xf2, 0xa1, - 0x04, 0xfd, 0x5c, 0xe1, 0x24, 0x93, 0xa9, 0x79, 0x22, 0xa2, 0x6a, 0xfe, 0x5a, 0x26, 0xdb, 0xac, - 0xad, 0x91, 0x4b, 0xab, 0xe4, 0x6f, 0x12, 0x9c, 0x4d, 0x51, 0x25, 0xc9, 0x9d, 0xd4, 0xa4, 0x62, - 0x3d, 0x36, 0xff, 0xe6, 0xcb, 0x07, 0xc0, 0x52, 0xde, 0x60, 0xa5, 0xdc, 0x20, 0xb3, 0xa9, 0x27, - 0xd2, 0x60, 0x8e, 0x96, 0x43, 0x9a, 0xed, 0xef, 0x25, 0x18, 0x89, 0xd3, 0xb2, 0x04, 0x7d, 0x26, - 0x45, 0x89, 0x13, 0xf4, 0x99, 0x34, 0xe1, 0x4c, 0x9e, 0x67, 0x95, 0x4c, 0x93, 0x62, 0x52, 0x25, - 0x0d, 0xf4, 0x56, 0x22, 0x5a, 0x1f, 0xf9, 0x8f, 0x04, 0xc3, 0x51, 0xb9, 0x4b, 0x70, 0x1e, 0x88, - 0x95, 0xd5, 0x04, 0xe7, 0x81, 0x78, 0x3d, 0x4d, 0xb6, 0x19, 0x66, 0x83, 0xcc, 0x09, 0x31, 0xc7, - 0x34, 0xc6, 0x9b, 0xc9, 0x6e, 0x31, 0x8d, 0xd1, 0x8f, 0x44, 0x7e, 0x2b, 0x01, 0x69, 0x57, 0xc9, - 0xc8, 0x7c, 0x46, 0xfc, 0x2d, 0xc2, 0x5b, 0xfe, 0xf5, 0x8e, 0xfd, 0xb2, 0x9e, 0x85, 0x42, 0xb5, - 0x37, 0x95, 0x43, 0xf2, 0x3f, 0x09, 0x20, 0x10, 0x33, 0x88, 0xb0, 0xe7, 0x45, 0x65, 0xba, 0xbc, - 0x92, 0xd9, 0x1e, 0x51, 0xfe, 0x90, 0xdf, 0x2d, 0x3e, 0x90, 0x92, 0x3b, 0x0f, 0x5e, 0xaa, 0x1f, - 0xa5, 0x5c, 0xa0, 0xd0, 0x44, 0xd9, 0xe3, 0x62, 0x59, 0xea, 0xa6, 0xd6, 0x6a, 0xdb, 0x72, 0xbf, - 0x78, 0xc6, 0x0f, 0x2b, 0xed, 0xd2, 0x98, 0xf8, 0xb0, 0x92, 0x28, 0xf7, 0x89, 0x0f, 0x2b, 0xc9, - 0x4a, 0x9c, 0xbc, 0xc0, 0x08, 0x9a, 0x25, 0xd3, 0x82, 0x82, 0x1c, 0x85, 0x17, 0xd4, 0x2c, 0x2c, - 0xae, 0x14, 0x2e, 0x4c, 0x75, 0x56, 0x4a, 0x44, 0x6c, 0xeb, 0xac, 0x94, 0xa8, 0x0e, 0xd6, 0x41, - 0x29, 0x5c, 0xa7, 0x53, 0xf6, 0xf8, 0xe7, 0x3e, 0xf9, 0x04, 0x2f, 0x15, 0x81, 0xa0, 0x44, 0xb2, - 0xec, 0x72, 0x2d, 0x22, 0x57, 0x86, 0x4b, 0x45, 0xbb, 0x62, 0x25, 0x4f, 0x30, 0xd4, 0x32, 0x19, - 0x17, 0xa1, 0x26, 0xbf, 0x94, 0x60, 0x38, 0xaa, 0xf8, 0x08, 0x50, 0xc6, 0xca, 0x4f, 0x02, 0x94, - 0xf1, 0x92, 0x92, 0x7c, 0x9d, 0xa1, 0xbc, 0x42, 0x2e, 0xa5, 0x6e, 0x34, 0x08, 0x75, 0x89, 0x3e, - 0x7b, 0x5e, 0x90, 0xbe, 0x78, 0x5e, 0x90, 0xfe, 0xf9, 0xbc, 0x20, 0xfd, 0xe8, 0x45, 0xe1, 0xc8, - 0x17, 0x2f, 0x0a, 0x47, 0xfe, 0xf2, 0xa2, 0x70, 0x04, 0x46, 0x75, 0x2b, 0x21, 0xfd, 0x9a, 0xf4, - 0xa8, 0x18, 0x12, 0x85, 0x02, 0xa3, 0x29, 0xdd, 0x0a, 0x27, 0xdd, 0x69, 0xa6, 0xdd, 0xe8, 0x67, - 0xff, 0x9c, 0x3b, 0xf7, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x05, 0x86, 0x65, 0x4c, 0x56, 0x2d, - 0x00, 0x00, + // 2379 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4d, 0x6c, 0xdc, 0x58, + 0x1d, 0xaf, 0xd3, 0x26, 0x4d, 0xfe, 0x69, 0xb3, 0xda, 0xd7, 0xb4, 0x4c, 0xa6, 0xed, 0x24, 0x75, + 0xbf, 0xa2, 0xb4, 0x19, 0xe7, 0xa3, 0xcd, 0xa6, 0x8b, 0x4a, 0x37, 0xc9, 0x92, 0xa8, 0x12, 0xdb, + 0x66, 0xa7, 0x11, 0x5d, 0x45, 0x82, 0x59, 0xc7, 0xf3, 0x32, 0x35, 0xf1, 0xd8, 0xb3, 0xb6, 0x33, + 0x4d, 0x14, 0xe5, 0xc0, 0x97, 0x56, 0xcb, 0x01, 0x21, 0x71, 0x59, 0x54, 0xb1, 0x1c, 0x16, 0x81, + 0xb4, 0x97, 0xe5, 0x00, 0x27, 0x84, 0xf6, 0xc0, 0x81, 0x5e, 0x90, 0x56, 0x70, 0x01, 0x09, 0x01, + 0x6a, 0x39, 0xc2, 0x91, 0x2b, 0x42, 0x7e, 0xef, 0xef, 0xb1, 0x3d, 0x63, 0xfb, 0x79, 0xb2, 0x13, + 0x29, 0xa7, 0x89, 0xed, 0xff, 0xc7, 0xef, 0xff, 0x7b, 0xdf, 0xbf, 0x17, 0x90, 0xeb, 0xb6, 0xd5, + 0xa0, 0xa6, 0x6a, 0x6a, 0x54, 0xa1, 0x3b, 0xda, 0x13, 0xd5, 0xac, 0x52, 0xa5, 0x31, 0xad, 0xbc, + 0xb7, 0x4d, 0xed, 0xdd, 0x62, 0xdd, 0xb6, 0x5c, 0x8b, 0x9c, 0x0b, 0x6c, 0x8a, 0xbe, 0x4d, 0xb1, + 0x31, 0x9d, 0x1f, 0xd1, 0x2c, 0xa7, 0x66, 0x39, 0x65, 0x66, 0xa5, 0xf0, 0x07, 0xee, 0x92, 0x9f, + 0xe0, 0x4f, 0xca, 0x86, 0xea, 0x50, 0x1e, 0x4b, 0x69, 0x4c, 0x6f, 0x50, 0x57, 0x9d, 0x56, 0xea, + 0x6a, 0x55, 0x37, 0x55, 0x57, 0xb7, 0x4c, 0xb4, 0x2d, 0x84, 0x6d, 0x7d, 0x2b, 0xcd, 0xd2, 0xfd, + 0xef, 0x17, 0xaa, 0x96, 0x55, 0x35, 0xa8, 0xa2, 0xd6, 0x75, 0x45, 0x35, 0x4d, 0xcb, 0x65, 0xce, + 0x7e, 0xa6, 0xe1, 0xaa, 0x55, 0xb5, 0x38, 0x02, 0xef, 0x2f, 0x7c, 0x3b, 0x9e, 0x50, 0x96, 0x66, + 0xd5, 0x6a, 0xba, 0x5b, 0xa3, 0xa6, 0xeb, 0xfb, 0x5f, 0x4e, 0xb0, 0xac, 0xa9, 0xf6, 0x16, 0x75, + 0x05, 0x46, 0x96, 0x5d, 0xa1, 0xb6, 0x28, 0x52, 0x5d, 0xb5, 0xd5, 0x9a, 0x6f, 0x74, 0x35, 0xd1, + 0x68, 0x37, 0x8c, 0x6a, 0x34, 0xc1, 0xcc, 0xdd, 0xe1, 0x06, 0xf2, 0x87, 0x12, 0xe4, 0xde, 0xf6, + 0x78, 0x7d, 0xe8, 0x41, 0x58, 0xa6, 0x74, 0x49, 0x35, 0xb4, 0x12, 0x7d, 0x6f, 0x9b, 0x3a, 0x2e, + 0xb9, 0x0b, 0x03, 0xaa, 0xb3, 0x55, 0x66, 0xe8, 0x72, 0x3d, 0x63, 0xd2, 0xf8, 0xe0, 0xcc, 0x58, + 0x31, 0xbe, 0x11, 0x8b, 0x0b, 0xce, 0x16, 0x0b, 0x51, 0xea, 0x57, 0xf1, 0x2f, 0xcf, 0x7d, 0x43, + 0xaf, 0xa0, 0xfb, 0xf1, 0x74, 0xf7, 0x45, 0xbd, 0x82, 0xee, 0x1b, 0xf8, 0x97, 0xfc, 0xab, 0x1e, + 0x18, 0x89, 0x81, 0xe6, 0xd4, 0x2d, 0xd3, 0xa1, 0xe4, 0x6d, 0x18, 0xd6, 0x6c, 0xca, 0x9a, 0xb0, + 0xbc, 0x49, 0x69, 0xd9, 0xaa, 0xb3, 0xd6, 0xcc, 0x49, 0x63, 0xc7, 0xc7, 0x07, 0x67, 0x46, 0x8a, + 0xd8, 0x8d, 0xbc, 0xce, 0x50, 0xc4, 0xce, 0x50, 0x5c, 0xb2, 0x74, 0x73, 0xf1, 0xc4, 0xf3, 0xbf, + 0x8f, 0x1e, 0x2b, 0x11, 0xdf, 0x79, 0x99, 0xd2, 0x87, 0xdc, 0x95, 0x7c, 0x13, 0xce, 0x3b, 0xd4, + 0x75, 0x0d, 0xea, 0x31, 0x58, 0xde, 0x34, 0x54, 0x37, 0x12, 0xb9, 0x27, 0x5b, 0xe4, 0x5c, 0x10, + 0x63, 0xd9, 0x50, 0xdd, 0x50, 0xfc, 0x77, 0xe1, 0x42, 0x28, 0xbe, 0xed, 0xa5, 0x8f, 0x24, 0x38, + 0x9e, 0x2d, 0xc1, 0x48, 0x10, 0xa4, 0xe4, 0xc5, 0x08, 0x32, 0xc8, 0xd3, 0x30, 0xcc, 0x18, 0x5b, + 0xa1, 0x2e, 0x67, 0x13, 0x1b, 0x72, 0x04, 0xfa, 0x59, 0x2b, 0x94, 0xf5, 0x4a, 0x4e, 0x1a, 0x93, + 0xc6, 0x4f, 0x94, 0x4e, 0xb2, 0xe7, 0xfb, 0x15, 0xf9, 0x6b, 0x70, 0xb6, 0xc5, 0x05, 0x09, 0x9e, + 0x85, 0x5e, 0xde, 0x72, 0x12, 0x6b, 0xb9, 0x8b, 0x49, 0x2d, 0xc7, 0xbd, 0xb8, 0xad, 0xfc, 0x2e, + 0x8c, 0x45, 0xa2, 0x2d, 0xee, 0x7e, 0x75, 0xc7, 0xa5, 0xb6, 0xa9, 0x1a, 0xf7, 0xdf, 0xf4, 0xc1, + 0x9c, 0x87, 0x01, 0x3e, 0x28, 0x7c, 0x34, 0xa7, 0x4b, 0xfd, 0xfc, 0xc5, 0xfd, 0x0a, 0x19, 0x85, + 0x41, 0x8a, 0x1e, 0xde, 0x67, 0xaf, 0xd3, 0x0d, 0x94, 0xc0, 0x7f, 0x75, 0xbf, 0x22, 0xbf, 0x03, + 0x97, 0x52, 0x32, 0x7c, 0x11, 0xec, 0x7f, 0x90, 0xe0, 0xbc, 0x1f, 0xfa, 0x2d, 0x86, 0x87, 0x7d, + 0x76, 0x32, 0xe1, 0xbe, 0x08, 0xc0, 0x19, 0x76, 0x77, 0xeb, 0x14, 0x61, 0x0f, 0xb0, 0x37, 0x6b, + 0xbb, 0x75, 0x4a, 0xae, 0xc0, 0x90, 0xba, 0xe9, 0x52, 0xbb, 0xdc, 0x6c, 0x86, 0xe3, 0xac, 0x19, + 0x4e, 0xb1, 0xb7, 0x0f, 0x79, 0x5b, 0x90, 0x65, 0x80, 0x60, 0x56, 0xcb, 0x69, 0x0c, 0xfb, 0xb5, + 0x48, 0x77, 0xe0, 0xd3, 0xa9, 0xdf, 0x29, 0x56, 0xd5, 0x2a, 0x45, 0x74, 0xa5, 0x90, 0xa7, 0xfc, + 0x91, 0x04, 0x17, 0xe2, 0x2b, 0x41, 0x7e, 0x6e, 0x43, 0x1f, 0x9f, 0x72, 0x70, 0xb8, 0x08, 0x08, + 0x42, 0x63, 0xb2, 0x12, 0x83, 0xef, 0xba, 0x10, 0x1f, 0xcf, 0x19, 0x01, 0xf8, 0x57, 0x09, 0xf2, + 0xcd, 0x56, 0x7c, 0x6a, 0x22, 0x03, 0x4d, 0xa6, 0x8b, 0xd0, 0x6b, 0x79, 0x6f, 0x19, 0xcb, 0x03, + 0x8b, 0xb9, 0x3f, 0xfd, 0x7a, 0x72, 0x18, 0xb3, 0x2c, 0x54, 0x2a, 0x36, 0x75, 0x9c, 0x47, 0xae, + 0xad, 0x9b, 0xd5, 0x12, 0x37, 0x3b, 0x5a, 0xe4, 0xff, 0x34, 0xd4, 0x8d, 0x22, 0xb5, 0x1d, 0x11, + 0xee, 0x3f, 0x0b, 0x71, 0xbf, 0xe0, 0x38, 0xad, 0xbd, 0x7c, 0x18, 0x7a, 0x55, 0xef, 0x2d, 0xe7, + 0xbe, 0xc4, 0x1f, 0x8e, 0x2e, 0xc3, 0x91, 0x0a, 0x8e, 0x08, 0xc3, 0x1b, 0xb8, 0xa4, 0x7a, 0xf0, + 0x0c, 0x23, 0x4a, 0x6f, 0xb7, 0x38, 0x78, 0x26, 0xe1, 0xe2, 0x18, 0x4d, 0x72, 0x44, 0x18, 0x30, + 0x02, 0x70, 0x4b, 0xcd, 0x9d, 0x92, 0x4f, 0xc1, 0x0c, 0x9c, 0x54, 0x35, 0xcd, 0xda, 0x36, 0x5d, + 0xe1, 0xf8, 0xf6, 0x0d, 0xa3, 0x73, 0x6f, 0x4f, 0x74, 0xee, 0x95, 0xbf, 0x1d, 0xea, 0xd1, 0xe1, + 0x74, 0x48, 0x86, 0x06, 0x7d, 0x6a, 0x0d, 0xd3, 0x09, 0x16, 0xd8, 0x29, 0x6f, 0x81, 0xfd, 0xe4, + 0x1f, 0xa3, 0xe3, 0x55, 0xdd, 0x7d, 0xb2, 0xbd, 0x51, 0xd4, 0xac, 0x1a, 0xee, 0x47, 0xf1, 0x67, + 0xd2, 0xa9, 0x6c, 0x29, 0xde, 0x18, 0x70, 0x98, 0x83, 0x53, 0xc2, 0xd0, 0xf2, 0xe3, 0x60, 0x59, + 0x5a, 0xe0, 0x98, 0x03, 0x24, 0xce, 0x17, 0xa8, 0x5c, 0x36, 0x40, 0x4e, 0x0b, 0x8c, 0x35, 0x2e, + 0xc3, 0x60, 0x68, 0x4b, 0x8a, 0x85, 0x5e, 0x49, 0x6a, 0x75, 0xbe, 0x26, 0x2c, 0x30, 0xe4, 0xa5, + 0xb0, 0xa3, 0xfc, 0xbe, 0x14, 0x2c, 0xe0, 0xdc, 0x2a, 0xa6, 0x8c, 0xd4, 0x85, 0xb0, 0x5b, 0x1d, + 0xfc, 0x37, 0x52, 0xc0, 0x68, 0x0c, 0x12, 0xac, 0x7b, 0x25, 0xae, 0xee, 0xab, 0x89, 0x7b, 0x54, + 0x4e, 0x60, 0x4c, 0xe1, 0xdd, 0xeb, 0xfa, 0x55, 0xb8, 0x18, 0x1a, 0x97, 0x31, 0xec, 0x75, 0x8b, + 0xa0, 0x4f, 0x25, 0x28, 0x24, 0x65, 0x42, 0x76, 0xde, 0x8c, 0x63, 0x47, 0x4e, 0x62, 0x27, 0x34, + 0x74, 0x0e, 0x87, 0x9a, 0x5b, 0xc1, 0x56, 0x93, 0xb7, 0x68, 0x96, 0x0e, 0x25, 0x7f, 0x4f, 0x82, + 0x73, 0xad, 0x6e, 0x58, 0x9f, 0x37, 0x9e, 0xf8, 0xa8, 0xc9, 0x30, 0x9e, 0xf8, 0x23, 0x99, 0x83, + 0x3e, 0x1e, 0x1a, 0x0f, 0x34, 0x85, 0xf4, 0x41, 0x52, 0x42, 0x6b, 0x59, 0x8b, 0xcc, 0xb7, 0xfc, + 0x63, 0xd7, 0xdb, 0xf4, 0xe7, 0xe1, 0xb5, 0x39, 0x94, 0x05, 0xeb, 0xbd, 0x0b, 0x27, 0x39, 0x1a, + 0xbf, 0x2d, 0x2f, 0xa7, 0x83, 0x5f, 0xb4, 0x75, 0xba, 0x59, 0xf2, 0x7d, 0xba, 0xd7, 0x90, 0xc3, + 0x40, 0x18, 0xca, 0x55, 0x76, 0x22, 0xc5, 0x42, 0xe4, 0xb7, 0xe0, 0x4c, 0xe4, 0x2d, 0x82, 0x9e, + 0x83, 0x3e, 0x7e, 0x72, 0xc5, 0xcd, 0x78, 0x22, 0xe1, 0xe8, 0x87, 0xd6, 0xf2, 0xef, 0x24, 0xb8, + 0xce, 0xe2, 0x05, 0xfd, 0xf2, 0x51, 0x70, 0xb2, 0x8a, 0x1e, 0x54, 0xdf, 0x01, 0x08, 0x0e, 0x45, + 0x98, 0x67, 0x3e, 0x91, 0x1b, 0xa7, 0xda, 0x3a, 0xa1, 0xf0, 0xc0, 0xcd, 0x16, 0x09, 0x62, 0x91, + 0x79, 0xc8, 0xe9, 0xa6, 0x66, 0x6c, 0x57, 0x68, 0x79, 0xc3, 0xa6, 0xea, 0x56, 0xc5, 0x7a, 0x6a, + 0x96, 0x37, 0x75, 0x6a, 0x54, 0x1c, 0xd6, 0x81, 0xfa, 0x4b, 0xe7, 0xf0, 0xfb, 0xa2, 0xff, 0x79, + 0x99, 0x7d, 0x95, 0x9f, 0x9d, 0x80, 0x71, 0x31, 0x7e, 0x24, 0xa9, 0x0e, 0xa7, 0x7d, 0x88, 0xde, + 0x91, 0xd0, 0x39, 0x8c, 0xa5, 0xea, 0x94, 0x9f, 0x61, 0x99, 0x52, 0x87, 0x18, 0x30, 0xa8, 0x9b, + 0xf5, 0x6d, 0xb7, 0xec, 0x5a, 0xae, 0x6a, 0x88, 0x0f, 0xb7, 0x9d, 0xe7, 0x03, 0x16, 0x7f, 0xcd, + 0x0b, 0x4f, 0x5c, 0x78, 0x45, 0xb3, 0xcc, 0x06, 0xb5, 0x5d, 0x5a, 0xc1, 0x8c, 0xc7, 0xbb, 0x9f, + 0x71, 0xa8, 0x99, 0x83, 0x67, 0x5d, 0xf3, 0xb3, 0x3a, 0xba, 0x65, 0x96, 0x4d, 0xb5, 0xe1, 0xe4, + 0x4e, 0xa4, 0xaf, 0x10, 0x0f, 0x70, 0x47, 0xb9, 0x6a, 0xeb, 0x1a, 0xc5, 0xf3, 0xf6, 0x50, 0x10, + 0xe3, 0x81, 0xda, 0x70, 0xc8, 0x12, 0x80, 0xcb, 0x0f, 0xee, 0xa6, 0xda, 0xc8, 0xf5, 0xb2, 0xce, + 0x96, 0x2d, 0x60, 0xa9, 0xdf, 0xf5, 0x4e, 0xeb, 0x0f, 0xd4, 0x86, 0xfc, 0x81, 0xbf, 0xd0, 0x7e, + 0x5d, 0x35, 0xf4, 0x8a, 0xea, 0xd2, 0x25, 0x9b, 0xaa, 0x2e, 0x8d, 0xce, 0x8b, 0x14, 0xce, 0x32, + 0x99, 0x82, 0x96, 0x71, 0x7a, 0xb4, 0xf9, 0x07, 0xec, 0xe1, 0xd3, 0x29, 0x3d, 0x7c, 0xc5, 0x6a, + 0xc4, 0x44, 0x2c, 0x9d, 0xd1, 0xda, 0x5f, 0xca, 0x9b, 0xb8, 0xd2, 0xc6, 0x43, 0xc1, 0x1e, 0x3a, + 0x0c, 0xbd, 0xd4, 0xb6, 0x2d, 0xdb, 0x3f, 0x17, 0xb0, 0x07, 0x72, 0x03, 0x48, 0xd5, 0x6a, 0x94, + 0xeb, 0xb6, 0x55, 0x2f, 0x3f, 0xd5, 0x0d, 0xa3, 0x5c, 0x57, 0x1d, 0x7f, 0x60, 0xbc, 0x52, 0xb5, + 0x1a, 0xab, 0xb6, 0x55, 0x7f, 0xac, 0x1b, 0xc6, 0xaa, 0xea, 0x38, 0xf2, 0x1d, 0x9c, 0xdc, 0xfc, + 0x3c, 0x1d, 0x2c, 0x02, 0xb3, 0xb8, 0xe3, 0x6f, 0x75, 0x4d, 0x03, 0xe7, 0xed, 0x0b, 0x0b, 0x2d, + 0x5e, 0xa6, 0xca, 0xbb, 0xbf, 0x9f, 0xb4, 0x0c, 0x67, 0x6a, 0xec, 0x25, 0x1b, 0x75, 0x2d, 0xfc, + 0x2a, 0xe9, 0xfc, 0xb6, 0x45, 0x2b, 0xbd, 0x5a, 0x6b, 0x7d, 0x25, 0x57, 0x60, 0x34, 0x11, 0x42, + 0xf7, 0x98, 0xdd, 0x0a, 0x96, 0xc8, 0x55, 0x2e, 0x00, 0xfa, 0x05, 0x4e, 0x41, 0x9f, 0x63, 0x6d, + 0xdb, 0x1a, 0x15, 0xae, 0x90, 0x68, 0x27, 0x56, 0x60, 0xd6, 0xe0, 0x4b, 0x6d, 0xc9, 0xb0, 0x94, + 0x3b, 0x70, 0x12, 0x05, 0x48, 0xa4, 0x70, 0x34, 0x79, 0xb2, 0xe7, 0x9e, 0xbe, 0xbd, 0x77, 0xa8, + 0xbb, 0xd4, 0x12, 0xd6, 0x79, 0xac, 0xbb, 0x4f, 0x1e, 0x31, 0x54, 0x07, 0x2f, 0xa7, 0x5b, 0x4b, + 0xf3, 0x27, 0x52, 0xb0, 0x11, 0x8f, 0xc3, 0x87, 0x0c, 0x7c, 0x19, 0xfa, 0x7d, 0x09, 0x16, 0xe7, + 0x70, 0x21, 0x05, 0x4d, 0x87, 0xee, 0x2d, 0xd0, 0x49, 0x64, 0xae, 0xa9, 0x76, 0x95, 0x86, 0xfb, + 0x86, 0xcb, 0x5e, 0x88, 0xc9, 0xe4, 0x76, 0x87, 0x4e, 0xa6, 0x8f, 0xef, 0x48, 0x91, 0x59, 0x89, + 0xec, 0xc9, 0x7c, 0xb8, 0xdd, 0xde, 0xfa, 0x7d, 0x1c, 0x16, 0x35, 0xc2, 0x69, 0x8e, 0x14, 0x17, + 0xdf, 0x40, 0x2e, 0x30, 0x45, 0xcb, 0x36, 0xec, 0x5e, 0xa7, 0xc3, 0x1f, 0x57, 0xd8, 0xe6, 0x24, + 0xf0, 0x5f, 0x9f, 0x84, 0xd6, 0xf8, 0x48, 0xc2, 0xb7, 0x00, 0xbc, 0x75, 0x97, 0x2f, 0x62, 0x87, + 0xb1, 0x47, 0x1a, 0xd8, 0xa4, 0xb8, 0xfc, 0xf9, 0xb9, 0x54, 0x4d, 0xa3, 0x75, 0xf7, 0x30, 0xf6, + 0x47, 0x5e, 0xae, 0x05, 0x16, 0x7d, 0xe6, 0x17, 0x97, 0xa1, 0x97, 0xd5, 0x4d, 0x7e, 0x26, 0xc1, + 0xa9, 0xf0, 0x7d, 0x07, 0x99, 0x4a, 0xa2, 0x30, 0xe9, 0xd6, 0x26, 0x3f, 0xdd, 0x81, 0x07, 0xe7, + 0x55, 0x9e, 0xf8, 0xce, 0x9f, 0xff, 0xf5, 0xe3, 0x9e, 0x2b, 0x44, 0x56, 0x12, 0xee, 0x8b, 0xbc, + 0xd5, 0x91, 0xdf, 0x52, 0x91, 0x9f, 0x48, 0xd0, 0xef, 0x8b, 0xef, 0xe4, 0x66, 0x6a, 0xae, 0x96, + 0x6b, 0x88, 0xfc, 0x64, 0x46, 0x6b, 0x44, 0x35, 0xc5, 0x50, 0x4d, 0x90, 0x71, 0x25, 0xed, 0xda, + 0x4c, 0xd9, 0xf3, 0x45, 0xc7, 0x7d, 0xf2, 0x61, 0x0f, 0x0c, 0xc7, 0x5d, 0x0c, 0x90, 0xf9, 0x4c, + 0x99, 0x63, 0x6e, 0x2b, 0xf2, 0x77, 0x0e, 0xe0, 0x89, 0xf8, 0x7f, 0x20, 0xb1, 0x02, 0xbe, 0x2b, + 0xad, 0xbf, 0x41, 0xbe, 0xa2, 0xa4, 0xde, 0x0f, 0x2a, 0x7b, 0xcd, 0xbd, 0xcf, 0xbe, 0x5f, 0x56, + 0x68, 0x15, 0xde, 0x27, 0xf7, 0x52, 0x39, 0x70, 0xe2, 0xc2, 0x44, 0x03, 0xfc, 0x5b, 0x82, 0x57, + 0x5a, 0xae, 0x03, 0xc8, 0xac, 0xa8, 0xb6, 0x98, 0x6b, 0x90, 0xfc, 0xad, 0xce, 0x9c, 0x90, 0x0b, + 0x93, 0x51, 0xf1, 0x64, 0x7d, 0x96, 0x4c, 0x77, 0xca, 0x84, 0x93, 0xec, 0x92, 0x58, 0x3c, 0xf9, + 0x54, 0x82, 0xa1, 0xa8, 0x00, 0x4f, 0x66, 0x84, 0x2d, 0xd9, 0x76, 0x13, 0x91, 0x9f, 0xed, 0xc8, + 0x07, 0x6b, 0xbd, 0xc5, 0x6a, 0x2d, 0x92, 0x9b, 0x02, 0xd8, 0xec, 0xf2, 0x42, 0xd9, 0x63, 0x3f, + 0x4d, 0xc4, 0x21, 0x41, 0x5b, 0x8c, 0xb8, 0x5d, 0xbf, 0x17, 0x23, 0x8e, 0x51, 0xcc, 0x33, 0x23, + 0x66, 0x97, 0x01, 0xca, 0x1e, 0xfb, 0xd9, 0x27, 0xcf, 0x24, 0x38, 0x15, 0x96, 0x9f, 0x05, 0x73, + 0x55, 0x8c, 0x1c, 0x2e, 0x98, 0xab, 0xe2, 0xb4, 0x6d, 0xf9, 0x1a, 0xc3, 0x3a, 0x46, 0x0a, 0xe9, + 0x58, 0xc9, 0x67, 0x12, 0x9c, 0x8e, 0x08, 0xc2, 0x44, 0x98, 0xac, 0x4d, 0xab, 0xce, 0xcf, 0x74, + 0xe2, 0x82, 0x00, 0x57, 0x18, 0xc0, 0x85, 0xe4, 0x21, 0x1b, 0xd3, 0xd1, 0x03, 0xbd, 0x4d, 0xd9, + 0x43, 0xe5, 0x77, 0x9f, 0xfc, 0x51, 0x82, 0xb3, 0xb1, 0xb2, 0x2f, 0x11, 0x4e, 0x4a, 0x89, 0x1a, + 0x74, 0xfe, 0xf5, 0x83, 0xb8, 0x62, 0x65, 0x77, 0x59, 0x65, 0xaf, 0x91, 0xdb, 0x8a, 0xf8, 0xdf, + 0x22, 0x14, 0x2c, 0x23, 0x54, 0xcf, 0xf7, 0xf9, 0xec, 0xdc, 0xa6, 0xe6, 0x8a, 0x67, 0xe7, 0x24, + 0x29, 0x5a, 0x3c, 0x3b, 0x27, 0x4a, 0xc7, 0xf2, 0x0e, 0x2b, 0xc6, 0x5e, 0x9f, 0x27, 0x73, 0x07, + 0x6a, 0x28, 0x27, 0xd9, 0x2f, 0x4c, 0x43, 0xfc, 0xdc, 0xf4, 0x6a, 0x9b, 0x68, 0x4b, 0x6e, 0x67, + 0x18, 0x0a, 0x31, 0x0c, 0xcc, 0x75, 0xea, 0x86, 0xe5, 0xdf, 0x60, 0xe5, 0x5f, 0x25, 0x97, 0x33, + 0x14, 0x41, 0x3e, 0x92, 0x60, 0xa0, 0x49, 0x26, 0x99, 0xcc, 0x46, 0xba, 0x8f, 0xb0, 0x98, 0xd5, + 0x1c, 0x91, 0xcd, 0x30, 0x64, 0x37, 0xc9, 0x44, 0xf6, 0x66, 0xf1, 0xb6, 0x4d, 0xa7, 0x23, 0x9a, + 0x29, 0xc9, 0x32, 0xb3, 0x44, 0x55, 0x5c, 0xf1, 0x60, 0x6f, 0x97, 0x64, 0xe5, 0xeb, 0x0c, 0xec, + 0x25, 0x32, 0x9a, 0x0e, 0xd6, 0x21, 0x1f, 0x48, 0xd0, 0xc7, 0x15, 0x4e, 0x32, 0x91, 0x9a, 0x27, + 0x22, 0xaa, 0xe6, 0x6f, 0x64, 0xb2, 0xcd, 0x3a, 0x35, 0x72, 0x69, 0x95, 0xfc, 0x4d, 0x82, 0xf3, + 0x29, 0xaa, 0x24, 0xb9, 0x97, 0x9a, 0x54, 0xac, 0xc7, 0xe6, 0xdf, 0x38, 0x78, 0x00, 0x2c, 0xe5, + 0x75, 0x56, 0xca, 0x2d, 0x32, 0x93, 0xba, 0x23, 0x0d, 0xfa, 0x68, 0x39, 0xa4, 0xd9, 0xfe, 0x5e, + 0x82, 0xe1, 0x38, 0x2d, 0x4b, 0x30, 0xcf, 0xa4, 0x28, 0x71, 0x82, 0x79, 0x26, 0x4d, 0x38, 0x93, + 0xe7, 0x58, 0x25, 0x53, 0xa4, 0x98, 0x54, 0x49, 0x03, 0xbd, 0x95, 0x88, 0xd6, 0x47, 0xfe, 0x23, + 0xc1, 0x50, 0x54, 0xee, 0x12, 0xec, 0x07, 0x62, 0x65, 0x35, 0xc1, 0x7e, 0x20, 0x5e, 0x4f, 0x93, + 0x6d, 0x86, 0xd9, 0x58, 0xbf, 0x4d, 0x66, 0x3b, 0x98, 0x1b, 0xfd, 0x42, 0x92, 0x9d, 0x9a, 0xa5, + 0xc6, 0x0c, 0xe1, 0xdf, 0x4a, 0x40, 0xda, 0x55, 0x32, 0x32, 0x97, 0x11, 0x7f, 0x8b, 0xf0, 0x96, + 0x7f, 0xad, 0x63, 0xbf, 0xac, 0x7b, 0xa1, 0x50, 0x11, 0x4d, 0xe5, 0x90, 0xfc, 0x4f, 0x02, 0x08, + 0xc4, 0x0c, 0x22, 0x9c, 0xf3, 0xa2, 0x32, 0x5d, 0x5e, 0xc9, 0x6c, 0x8f, 0x28, 0x7f, 0xc8, 0xcf, + 0x16, 0xef, 0x4b, 0xeb, 0x29, 0xe7, 0x23, 0x3c, 0x56, 0x2b, 0x7b, 0x5c, 0x0b, 0xdb, 0x4f, 0x5b, + 0xeb, 0x5a, 0x6d, 0x5b, 0x8e, 0x0f, 0xa3, 0x02, 0x3f, 0xf2, 0x9c, 0x6f, 0x56, 0xda, 0xa5, 0x31, + 0xf1, 0x66, 0x25, 0x51, 0xee, 0x13, 0x6f, 0x56, 0x92, 0x95, 0x38, 0x79, 0x9e, 0x11, 0x34, 0x43, + 0xa6, 0x04, 0xc8, 0x1d, 0x85, 0x57, 0xdc, 0xac, 0x3c, 0xae, 0x14, 0x2e, 0x4c, 0x75, 0x56, 0x4a, + 0x44, 0x6c, 0xeb, 0xac, 0x94, 0xa8, 0x0e, 0xd6, 0x41, 0x29, 0x5c, 0xa7, 0x53, 0xf6, 0xf8, 0xef, + 0x3e, 0xf9, 0x18, 0x0f, 0x15, 0x81, 0xa0, 0x44, 0xb2, 0xac, 0x72, 0x2d, 0x22, 0x57, 0x86, 0x43, + 0x45, 0xbb, 0x62, 0x25, 0x8f, 0x33, 0xd4, 0x32, 0x19, 0x13, 0xa1, 0x26, 0xbf, 0x94, 0x60, 0x28, + 0xaa, 0xf8, 0x08, 0x50, 0xc6, 0xca, 0x4f, 0x02, 0x94, 0xf1, 0x92, 0x92, 0x7c, 0x93, 0xa1, 0xbc, + 0x46, 0xae, 0xa4, 0x2e, 0x34, 0x08, 0x75, 0x91, 0x3e, 0x7f, 0x51, 0x90, 0x3e, 0x7f, 0x51, 0x90, + 0xfe, 0xf9, 0xa2, 0x20, 0xfd, 0xe8, 0x65, 0xe1, 0xd8, 0xe7, 0x2f, 0x0b, 0xc7, 0xfe, 0xf2, 0xb2, + 0x70, 0x0c, 0x46, 0x74, 0x2b, 0x21, 0xfd, 0xaa, 0xb4, 0x5e, 0x0c, 0x89, 0x42, 0x81, 0xd1, 0xa4, + 0x6e, 0x85, 0x93, 0xee, 0x34, 0xd3, 0x6e, 0xf4, 0xb1, 0x7f, 0xce, 0x9d, 0xfd, 0x7f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x57, 0x99, 0x04, 0xa4, 0x56, 0x2d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/exchange/query.pb.gw.go b/x/exchange/query.pb.gw.go index a84cbc0c2a..e9ad3d083b 100644 --- a/x/exchange/query.pb.gw.go +++ b/x/exchange/query.pb.gw.go @@ -1849,6 +1849,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetCommitment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -1856,6 +1858,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetCommitment_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -1869,6 +1872,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetAccountCommitments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -1876,6 +1881,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetAccountCommitments_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -1889,6 +1895,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetMarketCommitments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -1896,6 +1904,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetMarketCommitments_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -1909,6 +1918,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetMarketCommitments_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -1916,6 +1927,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetMarketCommitments_1(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -1929,6 +1941,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetAllCommitments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -1936,6 +1950,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetAllCommitments_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2018,6 +2033,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_CommitmentSettlementFeeCalc_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2025,6 +2042,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_CommitmentSettlementFeeCalc_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2130,6 +2148,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetPayment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2137,6 +2157,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetPayment_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2150,6 +2171,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetPayment_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2157,6 +2180,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetPayment_1(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2170,6 +2194,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetPayment_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2177,6 +2203,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetPayment_2(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2190,6 +2217,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetPaymentsWithSource_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2197,6 +2226,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetPaymentsWithSource_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2210,6 +2240,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetPaymentsWithTarget_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2217,6 +2249,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetPaymentsWithTarget_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2230,6 +2263,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_GetAllPayments_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2237,6 +2272,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_GetAllPayments_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -2250,6 +2286,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_PaymentFeeCalc_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -2257,6 +2295,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_PaymentFeeCalc_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/ibcratelimit/simulation/operations_test.go b/x/ibcratelimit/simulation/operations_test.go index ac0d4d8b91..314754ba95 100644 --- a/x/ibcratelimit/simulation/operations_test.go +++ b/x/ibcratelimit/simulation/operations_test.go @@ -16,6 +16,7 @@ import ( simappparams "github.com/provenance-io/provenance/app/params" "github.com/provenance-io/provenance/x/ibcratelimit" "github.com/provenance-io/provenance/x/ibcratelimit/simulation" + "github.com/provenance-io/provenance/x/trigger/types" ) type SimTestSuite struct { @@ -62,9 +63,6 @@ func (s *SimTestSuite) TestWeightedOperations() { r := rand.New(source) accs := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - expected := []struct { weight int opMsgRoute string @@ -104,9 +102,6 @@ func (s *SimTestSuite) TestSimulateMsgGovUpdateParams() { r := rand.New(source) accounts := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgGovUpdateParams(*s.app.RateLimitingKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -114,11 +109,11 @@ func (s *SimTestSuite) TestSimulateMsgGovUpdateParams() { s.LogOperationMsg(operationMsg, "good") var msg ibcratelimit.MsgGovUpdateParamsRequest - s.Require().NoError(s.app.AppCodec().UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(s.app.AppCodec().Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } diff --git a/x/marker/simulation/operations_test.go b/x/marker/simulation/operations_test.go index 2e9718507e..89ef1a4e58 100644 --- a/x/marker/simulation/operations_test.go +++ b/x/marker/simulation/operations_test.go @@ -84,19 +84,19 @@ func (s *SimTestSuite) TestWeightedOperations() { opMsgName string }{ // Possible names: types.TypeAddMarkerRequest, fmt.Sprintf("%T", &types.MsgAddMarkerRequest{}) - {simappparams.DefaultWeightMsgAddMarker, sdk.MsgTypeURL(&types.MsgAddMarkerRequest{}), sdk.MsgTypeURL(&types.MsgAddMarkerRequest{})}, + {weight: simappparams.DefaultWeightMsgAddMarker, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgAddMarkerRequest{})}, // Possible names: "ChangeStatus", // types.TypeActivateRequest, fmt.Sprintf("%T", &types.MsgActivateRequest{}), // types.TypeFinalizeRequest, fmt.Sprintf("%T", &types.MsgFinalizeRequest{}), // types.TypeCancelRequest, fmt.Sprintf("%T", &types.MsgCancelRequest{}), // types.TypeDeleteRequest, fmt.Sprintf("%T", &types.MsgDeleteRequest{}), - {simappparams.DefaultWeightMsgFinalize, sdk.MsgTypeURL(&types.MsgFinalizeRequest{}), sdk.MsgTypeURL(&types.MsgFinalizeRequest{})}, + {weight: simappparams.DefaultWeightMsgFinalize, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgFinalizeRequest{})}, // Possible names: types.TypeAddAccessRequest, fmt.Sprintf("%T", &types.MsgAddAccessRequest{}) - {simappparams.DefaultWeightMsgAddAccess, sdk.MsgTypeURL(&types.MsgAddAccessRequest{}), sdk.MsgTypeURL(&types.MsgAddAccessRequest{})}, - {simappparams.DefaultWeightMsgAddFinalizeActivateMarker, sdk.MsgTypeURL(&types.MsgAddFinalizeActivateMarkerRequest{}), sdk.MsgTypeURL(&types.MsgAddFinalizeActivateMarkerRequest{})}, - {simappparams.DefaultWeightMsgAddMarkerProposal, "gov", sdk.MsgTypeURL(&govtypes.MsgSubmitProposal{})}, - {simappparams.DefaultWeightMsgSetAccountData, sdk.MsgTypeURL(&types.MsgSetAccountDataRequest{}), sdk.MsgTypeURL(&types.MsgSetAccountDataRequest{})}, - {simappparams.DefaultWeightMsgUpdateDenySendList, sdk.MsgTypeURL(&types.MsgUpdateSendDenyListRequest{}), sdk.MsgTypeURL(&types.MsgUpdateSendDenyListRequest{})}, + {weight: simappparams.DefaultWeightMsgAddAccess, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgAddAccessRequest{})}, + {weight: simappparams.DefaultWeightMsgAddFinalizeActivateMarker, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgAddFinalizeActivateMarkerRequest{})}, + {weight: simappparams.DefaultWeightMsgAddMarkerProposal, opMsgRoute: "gov", opMsgName: sdk.MsgTypeURL(&govtypes.MsgSubmitProposal{})}, + {weight: simappparams.DefaultWeightMsgSetAccountData, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgSetAccountDataRequest{})}, + {weight: simappparams.DefaultWeightMsgUpdateDenySendList, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgUpdateSendDenyListRequest{})}, } expNames := make([]string, len(expected)) @@ -131,9 +131,6 @@ func (s *SimTestSuite) TestSimulateMsgAddMarker() { r := rand.New(src) accounts := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgAddMarker(s.app.MarkerKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -144,7 +141,7 @@ func (s *SimTestSuite) TestSimulateMsgAddMarker() { s.Require().True(operationMsg.OK, operationMsg.String()) s.Require().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name) - s.Require().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route) + s.Require().Equal(types.RouterKey, operationMsg.Route) s.Require().Len(futureOperations, 0) } @@ -156,20 +153,17 @@ func (s *SimTestSuite) TestSimulateMsgAddActivateFinalizeMarker() { r := rand.New(src) accounts := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgAddFinalizeActivateMarker(s.app.MarkerKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") s.Require().NoError(err) var msg types.MsgAddFinalizeActivateMarkerRequest - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg) s.Require().True(operationMsg.OK, operationMsg.String()) s.Require().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name) - s.Require().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route) + s.Require().Equal(types.RouterKey, operationMsg.Route) s.Require().Len(futureOperations, 0) } @@ -384,9 +378,6 @@ func (s *SimTestSuite) TestSimulateMsgSetAccountData() { _, err := markerMsgServer.AddFinalizeActivateMarker(s.ctx, newMarker) s.Require().NoError(err, "AddFinalizeActivateMarker") - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - args := s.getWeightedOpsArgs() // execute operation op := simulation.SimulateMsgSetAccountData(s.app.MarkerKeeper, &args) @@ -395,14 +386,14 @@ func (s *SimTestSuite) TestSimulateMsgSetAccountData() { s.LogOperationMsg(operationMsg) var msg types.MsgSetAccountDataRequest - s.Require().NoError(s.app.AppCodec().UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(s.app.AppCodec().Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") s.Assert().Equal("simcoin", msg.Denom, "msg.Denom") s.Assert().Equal("", msg.Value, "msg.Value") s.Assert().Equal(accounts[1].Address.String(), msg.Signer, "msg.Signer") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -436,9 +427,6 @@ func (s *SimTestSuite) TestSimulateMsgUpdateSendDenyList() { _, err := markerMsgServer.AddFinalizeActivateMarker(s.ctx, newMarker) s.Require().NoError(err, "AddFinalizeActivateMarker") - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - args := s.getWeightedOpsArgs() // execute operation op := simulation.SimulateMsgUpdateSendDenyList(s.app.MarkerKeeper, &args) @@ -447,14 +435,14 @@ func (s *SimTestSuite) TestSimulateMsgUpdateSendDenyList() { s.LogOperationMsg(operationMsg) var msg types.MsgUpdateSendDenyListRequest - s.Require().NoError(s.app.AppCodec().UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(s.app.AppCodec().Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") s.Assert().Equal("simcoin", msg.Denom, "msg.Denom") s.Assert().Len(msg.AddDeniedAddresses, 10, "msg.AddDeniedAddresses") s.Assert().Equal(accounts[1].Address.String(), msg.Authority, "msg.Authority") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } diff --git a/x/marker/types/tx.pb.go b/x/marker/types/tx.pb.go index a6556ee569..37e63a639d 100644 --- a/x/marker/types/tx.pb.go +++ b/x/marker/types/tx.pb.go @@ -13,11 +13,11 @@ import ( _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/cosmos-sdk/x/bank/types" github_com_cosmos_cosmos_sdk_x_bank_types "github.com/cosmos/cosmos-sdk/x/bank/types" - _ "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - github_com_cosmos_ibc_go_v8_modules_apps_transfer_types "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" + _ "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + github_com_cosmos_ibc_go_v8_modules_apps_transfer_types "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -2241,129 +2241,131 @@ func init() { func init() { proto.RegisterFile("provenance/marker/v1/tx.proto", fileDescriptor_bcb203fb73175ed3) } var fileDescriptor_bcb203fb73175ed3 = []byte{ - // 1952 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcb, 0x6f, 0x1b, 0xc7, - 0x19, 0xf7, 0x5a, 0x0f, 0x8b, 0x1f, 0x6d, 0xd9, 0x1a, 0x53, 0xd2, 0x6a, 0x5d, 0x51, 0x14, 0xfd, - 0x62, 0xd2, 0x88, 0x6b, 0x31, 0xad, 0x9a, 0x08, 0x05, 0x0a, 0x52, 0xaa, 0x5d, 0xa3, 0x65, 0x60, - 0x50, 0x69, 0x8b, 0xf6, 0x42, 0x2c, 0x77, 0x47, 0xeb, 0x85, 0xc8, 0x1d, 0x7a, 0x67, 0x48, 0x5b, - 0x01, 0x72, 0x69, 0x4f, 0x39, 0xb5, 0xf0, 0xa1, 0x87, 0xf6, 0xd2, 0x73, 0x0e, 0x45, 0x0f, 0x41, - 0x8b, 0xfe, 0x07, 0x41, 0x4f, 0x41, 0xd0, 0x43, 0xd1, 0x43, 0x1a, 0xd8, 0x87, 0x16, 0xed, 0x5f, - 0xd0, 0x5b, 0xb1, 0x33, 0xb3, 0xbb, 0x5c, 0x72, 0x77, 0x45, 0x39, 0x44, 0xda, 0x9c, 0xa4, 0x99, - 0xef, 0xfd, 0x98, 0x99, 0xdf, 0xb7, 0x84, 0xcd, 0xbe, 0x47, 0x86, 0xd8, 0x35, 0x5c, 0x13, 0xeb, - 0x3d, 0xc3, 0x3b, 0xc1, 0x9e, 0x3e, 0xdc, 0xd5, 0xd9, 0xb3, 0x6a, 0xdf, 0x23, 0x8c, 0xa0, 0x42, - 0x44, 0xae, 0x0a, 0x72, 0x75, 0xb8, 0xab, 0x6d, 0xd8, 0x84, 0xd8, 0x5d, 0xac, 0x73, 0x9e, 0xce, - 0xe0, 0x58, 0x37, 0xdc, 0x53, 0x21, 0xa0, 0x6d, 0x98, 0x84, 0xf6, 0x08, 0x6d, 0xf3, 0x95, 0x2e, - 0x16, 0x92, 0x54, 0xb0, 0x89, 0x4d, 0xc4, 0xbe, 0xff, 0x9f, 0xdc, 0x2d, 0x0a, 0x1e, 0xbd, 0x63, - 0x50, 0xac, 0x0f, 0x77, 0x3b, 0x98, 0x19, 0xbb, 0xba, 0x49, 0x1c, 0x77, 0x82, 0xee, 0x9e, 0x84, - 0x74, 0x7f, 0x21, 0xe9, 0xeb, 0x92, 0xde, 0xa3, 0xb6, 0xef, 0x79, 0x8f, 0xda, 0x92, 0x70, 0xdb, - 0xe9, 0x98, 0xba, 0xd1, 0xef, 0x77, 0x1d, 0xd3, 0x60, 0x0e, 0x71, 0xa9, 0xce, 0x3c, 0xc3, 0xa5, - 0xc7, 0xf1, 0x08, 0xb5, 0xed, 0xc4, 0x04, 0xc8, 0x58, 0x05, 0xcb, 0x9d, 0x44, 0x16, 0xc3, 0x34, - 0x31, 0xa5, 0xb6, 0x67, 0xb8, 0x4c, 0xf0, 0x95, 0xff, 0xa8, 0x80, 0xda, 0xa4, 0xf6, 0x03, 0x7f, - 0xab, 0xde, 0xed, 0x92, 0xa7, 0xbe, 0x44, 0x0b, 0x3f, 0x19, 0x60, 0xca, 0x50, 0x01, 0x16, 0x2c, - 0xec, 0x92, 0x9e, 0xaa, 0x94, 0x94, 0x4a, 0xae, 0x25, 0x16, 0xe8, 0x16, 0x5c, 0x31, 0xac, 0x9e, - 0xe3, 0x3a, 0x94, 0x79, 0x06, 0x23, 0x9e, 0x7a, 0x91, 0x53, 0xe3, 0x9b, 0x48, 0x85, 0x4b, 0xdc, - 0x0e, 0xc6, 0xea, 0x1c, 0xa7, 0x07, 0x4b, 0xf4, 0x5d, 0xc8, 0x19, 0x81, 0x25, 0x75, 0xbe, 0xa4, - 0x54, 0xf2, 0xb5, 0x42, 0x55, 0x54, 0xa7, 0x1a, 0x54, 0xa7, 0x5a, 0x77, 0x4f, 0x1b, 0x2b, 0x7f, - 0xfe, 0x68, 0xe7, 0xca, 0x7d, 0x8c, 0x43, 0xbf, 0x1e, 0xb6, 0x22, 0xc9, 0xf2, 0x0d, 0xd8, 0x48, - 0x70, 0x9c, 0xf6, 0x89, 0x4b, 0x71, 0xf9, 0xc3, 0x05, 0xb8, 0xde, 0xa4, 0x76, 0xdd, 0xb2, 0x9a, - 0x3c, 0xf8, 0x20, 0xa2, 0x0e, 0x2c, 0x1a, 0x3d, 0x32, 0x70, 0x19, 0x0f, 0x29, 0x5f, 0xdb, 0xa8, - 0xca, 0x72, 0xfb, 0xa5, 0xac, 0xca, 0x52, 0x55, 0x0f, 0x88, 0xe3, 0x36, 0xf4, 0x8f, 0x3f, 0xdb, - 0xba, 0xf0, 0xb7, 0xcf, 0xb6, 0xee, 0xda, 0x0e, 0x7b, 0x3c, 0xe8, 0x54, 0x4d, 0xd2, 0x93, 0xbd, - 0x21, 0xff, 0xec, 0x50, 0xeb, 0x44, 0x67, 0xa7, 0x7d, 0x4c, 0xb9, 0x40, 0x4b, 0x6a, 0xf6, 0x23, - 0xef, 0x19, 0xae, 0x61, 0x63, 0x2f, 0x88, 0x5c, 0x2e, 0xd1, 0x36, 0x5c, 0x3e, 0xf6, 0x48, 0xaf, - 0x6d, 0x58, 0x96, 0x87, 0x29, 0xe5, 0xc1, 0xe7, 0x5a, 0x79, 0x7f, 0xaf, 0x2e, 0xb6, 0xd0, 0x3e, - 0x2c, 0x52, 0x66, 0xb0, 0x01, 0x55, 0x17, 0x4a, 0x4a, 0x65, 0xb9, 0x56, 0xae, 0x26, 0x75, 0x73, - 0x55, 0x44, 0x75, 0xc4, 0x39, 0x5b, 0x52, 0x02, 0xd5, 0x21, 0x2f, 0x38, 0xda, 0xbe, 0x57, 0xea, - 0x22, 0x57, 0x50, 0xca, 0x52, 0xf0, 0xee, 0x69, 0x1f, 0xb7, 0xa0, 0x17, 0xfe, 0x8f, 0xbe, 0x07, - 0x79, 0xd1, 0x23, 0xed, 0xae, 0x43, 0x99, 0x7a, 0xa9, 0x34, 0x57, 0xc9, 0xd7, 0xb6, 0x93, 0x55, - 0xd4, 0x39, 0x23, 0x2f, 0x40, 0x63, 0xde, 0x4f, 0x56, 0x0b, 0x84, 0xec, 0x0f, 0x1c, 0xca, 0xfc, - 0x58, 0xe9, 0xa0, 0xdf, 0xef, 0x9e, 0xb6, 0x8f, 0x9d, 0x67, 0xd8, 0x52, 0x97, 0x4a, 0x4a, 0x65, - 0xa9, 0x95, 0x17, 0x7b, 0xf7, 0xfd, 0x2d, 0xf4, 0x16, 0xa8, 0xbc, 0x9c, 0x6d, 0x9b, 0x0c, 0xb1, - 0xc7, 0xd5, 0xb7, 0x4d, 0xe2, 0x32, 0x8f, 0x74, 0xd5, 0x1c, 0x67, 0x5f, 0xe3, 0xf4, 0x07, 0x21, - 0xf9, 0x40, 0x50, 0x51, 0x0d, 0x56, 0x85, 0xe4, 0x31, 0xf1, 0x4c, 0x6c, 0xb5, 0x83, 0x53, 0xa2, - 0x02, 0x17, 0xbb, 0xce, 0x89, 0xf7, 0x39, 0xed, 0x5d, 0x49, 0x42, 0x3a, 0x5c, 0xf7, 0xf0, 0x93, - 0x81, 0xe3, 0x61, 0xab, 0x6d, 0x30, 0xe6, 0x39, 0x9d, 0x01, 0xc3, 0x54, 0xcd, 0x97, 0xe6, 0x2a, - 0xb9, 0x16, 0x0a, 0x48, 0xf5, 0x90, 0x82, 0xb6, 0x20, 0x37, 0xa0, 0x56, 0xdb, 0xc4, 0x2e, 0xa3, - 0xea, 0xe5, 0x92, 0x52, 0x99, 0x6f, 0x5c, 0x54, 0x95, 0xd6, 0xd2, 0x80, 0x5a, 0x07, 0xfe, 0x1e, - 0x5a, 0x83, 0xc5, 0x21, 0xe9, 0x0e, 0x7a, 0x58, 0xbd, 0xe2, 0x53, 0x5b, 0x72, 0x85, 0x6e, 0x08, - 0xc1, 0x9e, 0xd3, 0xed, 0x52, 0x75, 0x99, 0x93, 0x7c, 0xa1, 0xa6, 0xbf, 0xde, 0x5f, 0xf9, 0xd9, - 0x3f, 0x7e, 0xff, 0x7a, 0xac, 0x0d, 0xca, 0x6b, 0x50, 0x88, 0xf7, 0xaa, 0x6c, 0xe2, 0xe7, 0x4a, - 0xd0, 0xc4, 0x22, 0xd5, 0xb3, 0x38, 0x96, 0xdf, 0x81, 0x45, 0x51, 0x24, 0x75, 0xee, 0x7c, 0xb5, - 0x95, 0x62, 0x91, 0xb3, 0x81, 0x4f, 0xd2, 0xd9, 0xf7, 0x61, 0xad, 0x49, 0xed, 0x43, 0xdc, 0xc5, - 0x0c, 0xcf, 0xce, 0xdd, 0xbb, 0x70, 0xd5, 0xc3, 0x3d, 0x32, 0xf4, 0x6b, 0x26, 0x0f, 0x8d, 0x38, - 0x53, 0xcb, 0x72, 0x5b, 0x9e, 0x9b, 0xf2, 0x06, 0xac, 0x4f, 0x98, 0x97, 0x9e, 0x3d, 0x02, 0xd4, - 0xa4, 0xf6, 0x7d, 0xc7, 0x35, 0xba, 0xce, 0x7b, 0xb3, 0xb8, 0xdb, 0xca, 0xab, 0xbc, 0x2e, 0x91, - 0xc6, 0x98, 0xa1, 0xba, 0xc9, 0x9c, 0xa1, 0xc1, 0x66, 0x68, 0x28, 0xd2, 0x28, 0x0d, 0xbd, 0x03, - 0xd7, 0x9a, 0xd4, 0x3e, 0xf0, 0x6b, 0xd6, 0x9d, 0x85, 0x99, 0xeb, 0xb0, 0x32, 0xa2, 0x2f, 0x66, - 0x44, 0x64, 0x74, 0x76, 0x46, 0x02, 0x7d, 0xd2, 0xc8, 0xaf, 0x15, 0x58, 0x6e, 0x52, 0xbb, 0xe9, - 0xb8, 0xec, 0xcb, 0xbc, 0xa2, 0xa7, 0xf3, 0x78, 0x05, 0xae, 0x86, 0xbe, 0xc5, 0xfd, 0x6d, 0x0c, - 0x3c, 0xf7, 0xff, 0xd5, 0x5f, 0xe1, 0x9b, 0xf4, 0xf7, 0x2f, 0x0a, 0xef, 0xc9, 0x1f, 0x3b, 0xec, - 0xb1, 0xe5, 0x19, 0x4f, 0x67, 0x71, 0x24, 0x37, 0x01, 0x18, 0x19, 0x3b, 0x8d, 0x39, 0x46, 0x82, - 0x07, 0xcc, 0x0c, 0xd3, 0x31, 0xcf, 0x2f, 0x98, 0x8c, 0x74, 0xdc, 0xf3, 0xd3, 0xf1, 0xe1, 0xdf, - 0xb7, 0x2a, 0x53, 0xa6, 0x83, 0x06, 0xf9, 0x90, 0xe7, 0x22, 0x8a, 0x4a, 0x46, 0xfb, 0xb9, 0x88, - 0x36, 0xb8, 0xf2, 0xff, 0xa7, 0x15, 0x9a, 0x4b, 0xca, 0xdd, 0x14, 0x00, 0x20, 0x9e, 0xde, 0x85, - 0xb1, 0xf4, 0xca, 0xc8, 0xa3, 0x08, 0x65, 0xe4, 0x9f, 0x2a, 0xb0, 0xda, 0xa4, 0xf6, 0xc3, 0x8e, - 0x39, 0x1e, 0xfc, 0x73, 0x05, 0x96, 0xc2, 0xe7, 0x51, 0xc4, 0xff, 0x5a, 0xd5, 0xe9, 0x98, 0xd5, - 0x51, 0x98, 0x59, 0x0d, 0x38, 0x38, 0x34, 0x88, 0xf4, 0x37, 0xbe, 0x2f, 0xf3, 0x71, 0x30, 0x99, - 0x0f, 0xa7, 0x63, 0xee, 0xd8, 0x44, 0x1f, 0xee, 0xe9, 0x3d, 0x62, 0x0d, 0xba, 0x98, 0xfa, 0xc0, - 0x75, 0x04, 0xb0, 0x8a, 0x24, 0x8d, 0x3a, 0x1b, 0xfa, 0x31, 0x65, 0x3f, 0xab, 0xfc, 0x49, 0x89, - 0xc5, 0x24, 0xc3, 0xfd, 0x93, 0x02, 0x5a, 0x93, 0xda, 0x47, 0x98, 0x1d, 0xfa, 0x9d, 0xdb, 0xc4, - 0xcc, 0xb0, 0x0c, 0x66, 0x04, 0x31, 0x0f, 0x60, 0xa9, 0x27, 0xb7, 0x64, 0xc8, 0x9b, 0x51, 0xc9, - 0xdd, 0x93, 0xb0, 0xe4, 0x81, 0x5c, 0x63, 0x5f, 0x86, 0x59, 0xcb, 0x2c, 0xfb, 0x33, 0x01, 0xe8, - 0x65, 0x60, 0x81, 0xcd, 0xd0, 0xd4, 0x94, 0x51, 0x6d, 0xc2, 0x8d, 0x44, 0xd7, 0x65, 0x68, 0xff, - 0x9e, 0x87, 0x9b, 0xe2, 0x81, 0x0d, 0xde, 0x97, 0xe0, 0xfa, 0xff, 0x8a, 0x21, 0xd9, 0x31, 0x34, - 0xba, 0xf0, 0xc5, 0xd1, 0xe8, 0xe2, 0xec, 0xd0, 0xe8, 0xa5, 0xf3, 0xa1, 0xd1, 0xa5, 0x57, 0x43, - 0xa3, 0xb9, 0x73, 0xa3, 0x51, 0x98, 0x0e, 0x8d, 0xe6, 0x33, 0xd1, 0xe8, 0xe5, 0x74, 0x34, 0x7a, - 0x25, 0x8e, 0x46, 0xcb, 0x77, 0xe0, 0x56, 0x76, 0xb3, 0xc9, 0xae, 0xfc, 0x8f, 0x02, 0x25, 0xbf, - 0x6b, 0x79, 0xbe, 0x1e, 0xba, 0xa6, 0x87, 0x0d, 0x8a, 0x1f, 0x79, 0xa4, 0x4f, 0xa8, 0xd1, 0xfd, - 0x32, 0x5b, 0xf2, 0x36, 0x2c, 0x33, 0xc3, 0xb3, 0x31, 0x0b, 0x5b, 0x4f, 0x1e, 0x32, 0xb1, 0x1b, - 0x34, 0xdf, 0x1e, 0xe4, 0x8c, 0x01, 0x7b, 0x4c, 0x3c, 0x87, 0x9d, 0x8a, 0xde, 0x6d, 0xa8, 0x9f, - 0x7e, 0xb4, 0x53, 0x90, 0x0e, 0x49, 0xb6, 0x23, 0xe6, 0x39, 0xae, 0xdd, 0x8a, 0x58, 0xf7, 0xd1, - 0x3f, 0x7f, 0xbb, 0xa5, 0xf8, 0x08, 0x3d, 0xda, 0x2b, 0xdf, 0x84, 0xed, 0x8c, 0xd0, 0x65, 0x82, - 0x7e, 0x75, 0x11, 0xca, 0x4d, 0x6a, 0xff, 0xb0, 0x6f, 0x49, 0xe8, 0x17, 0x2f, 0x5f, 0xf6, 0xc3, - 0xfb, 0x6d, 0xd0, 0x04, 0x9c, 0x6d, 0x27, 0xf5, 0xc4, 0x45, 0xde, 0x13, 0xaa, 0xe0, 0x98, 0x54, - 0x8d, 0xf6, 0x60, 0xdd, 0xb0, 0xac, 0x44, 0xd1, 0x39, 0x2e, 0xba, 0x6a, 0x58, 0x56, 0x82, 0xdc, - 0x03, 0x40, 0x41, 0xa7, 0xb6, 0xa3, 0x64, 0xcd, 0x9f, 0x91, 0xac, 0x95, 0x40, 0xa6, 0x1e, 0x26, - 0xed, 0x46, 0x90, 0xb4, 0x04, 0x7d, 0xe5, 0xdb, 0xfc, 0x3a, 0x4b, 0xcf, 0x8b, 0xcc, 0xdf, 0x1f, - 0x14, 0x28, 0x86, 0x7c, 0xf1, 0xb3, 0x92, 0x9d, 0xbb, 0xd4, 0xc3, 0x77, 0x31, 0xfd, 0xf0, 0xcd, - 0xb2, 0x3b, 0xb6, 0x61, 0x2b, 0xd5, 0x6f, 0x19, 0xdb, 0x07, 0xe2, 0x1b, 0xcb, 0x11, 0x66, 0x75, - 0xd3, 0xf4, 0xbb, 0xf8, 0x70, 0xe4, 0xad, 0x4a, 0x8e, 0xaa, 0x00, 0x0b, 0x43, 0xa3, 0x3b, 0xc0, - 0xb2, 0xbb, 0xc5, 0x02, 0xdd, 0x83, 0x45, 0xea, 0xd8, 0x6e, 0x70, 0x1d, 0x67, 0x38, 0x2d, 0xf9, - 0xf6, 0xaf, 0x06, 0x1e, 0xcb, 0x0d, 0xf9, 0xd5, 0x64, 0xdc, 0x15, 0xe9, 0xe8, 0xbf, 0x14, 0xf8, - 0x5a, 0x18, 0xcc, 0x11, 0x76, 0xad, 0x43, 0xec, 0x9e, 0xfa, 0xf7, 0x67, 0xb6, 0xb3, 0x7b, 0xb0, - 0x2e, 0xdb, 0xd7, 0xc2, 0xae, 0x13, 0x8d, 0x6a, 0x61, 0xef, 0xae, 0x0a, 0xf2, 0x21, 0xa7, 0xd6, - 0x03, 0x22, 0xba, 0x07, 0x05, 0xbf, 0x71, 0x27, 0x84, 0x44, 0xd7, 0x22, 0xc3, 0xb2, 0xc6, 0x25, - 0x62, 0x85, 0x9b, 0xff, 0x62, 0x85, 0xdb, 0x82, 0xcd, 0x94, 0x58, 0x65, 0x36, 0x7e, 0xa7, 0xf0, - 0x97, 0xba, 0x6e, 0x59, 0xef, 0x60, 0x56, 0xa7, 0x14, 0xb3, 0x1f, 0xf9, 0x55, 0x98, 0xc9, 0x5c, - 0x7b, 0x04, 0xd7, 0x5c, 0xff, 0x0e, 0xf3, 0xb5, 0xb6, 0x79, 0x71, 0x83, 0x81, 0xfc, 0x66, 0xf2, - 0xf3, 0x16, 0x73, 0x41, 0x3e, 0x70, 0xcb, 0x6e, 0xcc, 0xaf, 0x72, 0x91, 0x57, 0x2f, 0xc1, 0x5f, - 0x11, 0x50, 0xed, 0x37, 0x08, 0xe6, 0x9a, 0xd4, 0x46, 0x6d, 0x58, 0x0a, 0xae, 0x7b, 0x54, 0x49, - 0x79, 0x90, 0x27, 0x06, 0x66, 0xed, 0xb5, 0x29, 0x38, 0x85, 0x21, 0xdf, 0x40, 0xf0, 0x8e, 0x64, - 0x18, 0x18, 0x1b, 0x94, 0x33, 0x0c, 0x8c, 0x0f, 0xc0, 0xe8, 0x27, 0xb0, 0x28, 0xa6, 0x55, 0x74, - 0x27, 0x55, 0x28, 0x36, 0x1e, 0x6b, 0x77, 0xcf, 0xe4, 0x8b, 0x54, 0x8b, 0x19, 0x35, 0x43, 0x75, - 0x6c, 0x28, 0xce, 0x50, 0x1d, 0x1f, 0x76, 0xd1, 0x11, 0xcc, 0xfb, 0xc3, 0x24, 0xba, 0x95, 0x2a, - 0x30, 0x32, 0x07, 0x6b, 0xb7, 0xcf, 0xe0, 0x8a, 0x94, 0xfa, 0x13, 0x5f, 0x86, 0xd2, 0x91, 0x61, - 0x35, 0x43, 0xe9, 0xe8, 0xd8, 0x88, 0x3a, 0x90, 0x0b, 0xbf, 0xf0, 0xa0, 0x8c, 0xba, 0x8c, 0x7d, - 0x99, 0xd2, 0x5e, 0x9f, 0x86, 0x55, 0xda, 0x38, 0x81, 0xcb, 0xa3, 0x9f, 0x6b, 0xd0, 0x1b, 0x67, - 0xa4, 0x31, 0x6e, 0x69, 0x67, 0x4a, 0xee, 0xa8, 0x23, 0x83, 0x69, 0x31, 0xa3, 0x23, 0xc7, 0xc6, - 0xe4, 0x8c, 0x8e, 0x1c, 0x1f, 0x3d, 0x65, 0xc6, 0x04, 0x6a, 0xca, 0xce, 0x58, 0x0c, 0xc6, 0x67, - 0x67, 0x2c, 0x0e, 0xc2, 0xfc, 0x20, 0xc2, 0x27, 0x2c, 0x3d, 0x88, 0xb1, 0x67, 0x33, 0x23, 0x88, - 0xf1, 0x87, 0x0a, 0x3d, 0x86, 0xfc, 0xc8, 0xb4, 0x85, 0xbe, 0x9e, 0x2a, 0x39, 0x39, 0x67, 0x6a, - 0x6f, 0x4c, 0xc7, 0x2c, 0x2d, 0x3d, 0x85, 0x6b, 0xe3, 0x13, 0x10, 0xba, 0x97, 0xaa, 0x21, 0x65, - 0xce, 0xd3, 0x76, 0xcf, 0x21, 0x21, 0x0d, 0x3f, 0x81, 0xe5, 0xf8, 0x4f, 0x06, 0xa8, 0x9a, 0xaa, - 0x24, 0xf1, 0x47, 0x11, 0x4d, 0x9f, 0x9a, 0x5f, 0x9a, 0x7c, 0xae, 0xc0, 0x46, 0x2a, 0xc2, 0x46, - 0x6f, 0x67, 0x35, 0x40, 0xe6, 0x08, 0xa8, 0xed, 0xbf, 0x8a, 0xa8, 0x74, 0xea, 0x03, 0x05, 0xd6, - 0x92, 0x21, 0x2d, 0xda, 0x4b, 0xcf, 0x6a, 0x16, 0xfc, 0xd7, 0xbe, 0x75, 0x6e, 0x39, 0xe9, 0xcb, - 0x2f, 0x14, 0x50, 0xd3, 0x00, 0x22, 0x7a, 0x2b, 0x55, 0xeb, 0x19, 0x58, 0x5b, 0x7b, 0xfb, 0x15, - 0x24, 0xa5, 0x47, 0x3f, 0x57, 0xa0, 0x90, 0x04, 0xe9, 0xd0, 0x37, 0xce, 0xd0, 0x99, 0x88, 0x5c, - 0xb5, 0x6f, 0x9e, 0x53, 0x2a, 0xea, 0xd5, 0x38, 0x50, 0xcb, 0xe8, 0xd5, 0x44, 0x70, 0x99, 0xd1, - 0xab, 0xc9, 0x08, 0x10, 0xbd, 0x0f, 0x68, 0x12, 0x11, 0xa1, 0xda, 0x19, 0xfe, 0x27, 0x40, 0x45, - 0xed, 0xcd, 0x73, 0xc9, 0x48, 0xf3, 0xef, 0xc1, 0xca, 0x04, 0x7c, 0x41, 0xbb, 0x59, 0x6d, 0x9e, - 0x08, 0xcd, 0xb4, 0xda, 0x79, 0x44, 0x84, 0xed, 0x86, 0xfd, 0xf1, 0x8b, 0xa2, 0xf2, 0xc9, 0x8b, - 0xa2, 0xf2, 0xf9, 0x8b, 0xa2, 0xf2, 0xcb, 0x97, 0xc5, 0x0b, 0x9f, 0xbc, 0x2c, 0x5e, 0xf8, 0xeb, - 0xcb, 0xe2, 0x05, 0x58, 0x77, 0x48, 0xa2, 0xbe, 0x47, 0xca, 0x4f, 0x47, 0x3f, 0x18, 0x45, 0x2c, - 0x3b, 0x0e, 0x19, 0x59, 0xe9, 0xcf, 0x82, 0x5f, 0x60, 0xf9, 0x3c, 0xdb, 0x59, 0xe4, 0x3f, 0x72, - 0xbe, 0xf9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x65, 0x86, 0x7a, 0x1f, 0xc7, 0x1e, 0x00, 0x00, + // 1983 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6c, 0x1b, 0x59, + 0x19, 0xef, 0xe4, 0x8f, 0x1b, 0x7f, 0x6e, 0xd3, 0xe6, 0xc5, 0x49, 0x26, 0x53, 0xe2, 0x38, 0xee, + 0x3f, 0xef, 0xb2, 0xf1, 0x34, 0x5e, 0x28, 0xdd, 0x08, 0x09, 0xd9, 0x09, 0x2d, 0x15, 0x18, 0xad, + 0x9c, 0x05, 0x04, 0x17, 0x6b, 0x3c, 0xf3, 0x32, 0x1d, 0xc5, 0x9e, 0x71, 0xe7, 0x3d, 0xbb, 0xcd, + 0x4a, 0x5c, 0xe0, 0xb4, 0x27, 0x60, 0x0f, 0x5c, 0xb8, 0x70, 0xe2, 0xb0, 0x07, 0xc4, 0x61, 0x05, + 0x77, 0x4e, 0x2b, 0x24, 0xa4, 0x15, 0x27, 0xc4, 0x61, 0x41, 0xad, 0x04, 0x2b, 0xce, 0x5c, 0xb8, + 0x20, 0xf4, 0xfe, 0xcc, 0x8c, 0xc7, 0x9e, 0x99, 0x24, 0x6d, 0x76, 0x57, 0x3d, 0x25, 0xef, 0x7d, + 0xff, 0x7f, 0xdf, 0xf7, 0xe6, 0x7d, 0xdf, 0x33, 0x6c, 0x0c, 0x7c, 0x6f, 0x84, 0x5d, 0xc3, 0x35, + 0xb1, 0xde, 0x37, 0xfc, 0x23, 0xec, 0xeb, 0xa3, 0x1d, 0x9d, 0x3e, 0xad, 0x0d, 0x7c, 0x8f, 0x7a, + 0xa8, 0x18, 0x91, 0x6b, 0x82, 0x5c, 0x1b, 0xed, 0x68, 0xeb, 0xb6, 0xe7, 0xd9, 0x3d, 0xac, 0x73, + 0x9e, 0xee, 0xf0, 0x50, 0x37, 0xdc, 0x63, 0x21, 0xa0, 0xad, 0x9b, 0x1e, 0xe9, 0x7b, 0xa4, 0xc3, + 0x57, 0xba, 0x58, 0x48, 0x52, 0xd1, 0xf6, 0x6c, 0x4f, 0xec, 0xb3, 0xff, 0xe4, 0x6e, 0x49, 0xf0, + 0xe8, 0x5d, 0x83, 0x60, 0x7d, 0xb4, 0xd3, 0xc5, 0xd4, 0xd8, 0xd1, 0x4d, 0xcf, 0x71, 0xa7, 0xe8, + 0xee, 0x51, 0x48, 0x67, 0x0b, 0x49, 0x5f, 0x93, 0xf4, 0x3e, 0xb1, 0x99, 0xe7, 0x7d, 0x62, 0x4b, + 0xc2, 0x4d, 0xa7, 0x6b, 0xea, 0xc6, 0x60, 0xd0, 0x73, 0x4c, 0x83, 0x3a, 0x9e, 0x4b, 0x74, 0xea, + 0x1b, 0x2e, 0x39, 0x8c, 0x47, 0xa8, 0x6d, 0x25, 0x02, 0x20, 0x63, 0x15, 0x2c, 0xb7, 0x12, 0x59, + 0x0c, 0xd3, 0xc4, 0x84, 0xd8, 0xbe, 0xe1, 0x52, 0xc1, 0x57, 0xf9, 0x83, 0x02, 0x6a, 0x8b, 0xd8, + 0x0f, 0xd8, 0x56, 0xa3, 0xd7, 0xf3, 0x9e, 0x30, 0x89, 0x36, 0x7e, 0x3c, 0xc4, 0x84, 0xa2, 0x22, + 0xcc, 0x5b, 0xd8, 0xf5, 0xfa, 0xaa, 0x52, 0x56, 0xaa, 0xf9, 0xb6, 0x58, 0xa0, 0x1b, 0x70, 0xd9, + 0xb0, 0xfa, 0x8e, 0xeb, 0x10, 0xea, 0x1b, 0xd4, 0xf3, 0xd5, 0x19, 0x4e, 0x8d, 0x6f, 0x22, 0x15, + 0x2e, 0x72, 0x3b, 0x18, 0xab, 0xb3, 0x9c, 0x1e, 0x2c, 0xd1, 0x37, 0x21, 0x6f, 0x04, 0x96, 0xd4, + 0xb9, 0xb2, 0x52, 0x2d, 0xd4, 0x8b, 0x35, 0x91, 0x9d, 0x5a, 0x90, 0x9d, 0x5a, 0xc3, 0x3d, 0x6e, + 0x2e, 0xfd, 0xe9, 0xc3, 0xed, 0xcb, 0xf7, 0x31, 0x0e, 0xfd, 0x7a, 0xd8, 0x8e, 0x24, 0x2b, 0xd7, + 0x60, 0x3d, 0xc1, 0x71, 0x32, 0xf0, 0x5c, 0x82, 0x2b, 0x1f, 0xcc, 0xc3, 0x72, 0x8b, 0xd8, 0x0d, + 0xcb, 0x6a, 0xf1, 0xe0, 0x83, 0x88, 0xba, 0x90, 0x33, 0xfa, 0xde, 0xd0, 0xa5, 0x3c, 0xa4, 0x42, + 0x7d, 0xbd, 0x26, 0xd3, 0xcd, 0x52, 0x59, 0x93, 0xa9, 0xaa, 0xed, 0x79, 0x8e, 0xdb, 0xd4, 0x3f, + 0xfa, 0x64, 0xf3, 0xc2, 0xdf, 0x3e, 0xd9, 0xbc, 0x6d, 0x3b, 0xf4, 0xd1, 0xb0, 0x5b, 0x33, 0xbd, + 0xbe, 0xac, 0x0d, 0xf9, 0x67, 0x9b, 0x58, 0x47, 0x3a, 0x3d, 0x1e, 0x60, 0xc2, 0x05, 0xda, 0x52, + 0x33, 0x8b, 0xbc, 0x6f, 0xb8, 0x86, 0x8d, 0xfd, 0x20, 0x72, 0xb9, 0x44, 0x5b, 0x70, 0xe9, 0xd0, + 0xf7, 0xfa, 0x1d, 0xc3, 0xb2, 0x7c, 0x4c, 0x08, 0x0f, 0x3e, 0xdf, 0x2e, 0xb0, 0xbd, 0x86, 0xd8, + 0x42, 0xbb, 0x90, 0x23, 0xd4, 0xa0, 0x43, 0xa2, 0xce, 0x97, 0x95, 0xea, 0x62, 0xbd, 0x52, 0x4b, + 0xaa, 0xe6, 0x9a, 0x88, 0xea, 0x80, 0x73, 0xb6, 0xa5, 0x04, 0x6a, 0x40, 0x41, 0x70, 0x74, 0x98, + 0x57, 0x6a, 0x8e, 0x2b, 0x28, 0x67, 0x29, 0x78, 0xe7, 0x78, 0x80, 0xdb, 0xd0, 0x0f, 0xff, 0x47, + 0xdf, 0x82, 0x82, 0xa8, 0x91, 0x4e, 0xcf, 0x21, 0x54, 0xbd, 0x58, 0x9e, 0xad, 0x16, 0xea, 0x5b, + 0xc9, 0x2a, 0x1a, 0x9c, 0x91, 0x27, 0xa0, 0x39, 0xc7, 0xc0, 0x6a, 0x83, 0x90, 0xfd, 0x8e, 0x43, + 0x28, 0x8b, 0x95, 0x0c, 0x07, 0x83, 0xde, 0x71, 0xe7, 0xd0, 0x79, 0x8a, 0x2d, 0x75, 0xa1, 0xac, + 0x54, 0x17, 0xda, 0x05, 0xb1, 0x77, 0x9f, 0x6d, 0xa1, 0x7b, 0xa0, 0xf2, 0x74, 0x76, 0x6c, 0x6f, + 0x84, 0x7d, 0xae, 0xbe, 0x63, 0x7a, 0x2e, 0xf5, 0xbd, 0x9e, 0x9a, 0xe7, 0xec, 0xab, 0x9c, 0xfe, + 0x20, 0x24, 0xef, 0x09, 0x2a, 0xaa, 0xc3, 0x8a, 0x90, 0x3c, 0xf4, 0x7c, 0x13, 0x5b, 0x9d, 0xe0, + 0x94, 0xa8, 0xc0, 0xc5, 0x96, 0x39, 0xf1, 0x3e, 0xa7, 0xbd, 0x23, 0x49, 0x48, 0x87, 0x65, 0x1f, + 0x3f, 0x1e, 0x3a, 0x3e, 0xb6, 0x3a, 0x06, 0xa5, 0xbe, 0xd3, 0x1d, 0x52, 0x4c, 0xd4, 0x42, 0x79, + 0xb6, 0x9a, 0x6f, 0xa3, 0x80, 0xd4, 0x08, 0x29, 0x68, 0x13, 0xf2, 0x43, 0x62, 0x75, 0x4c, 0xec, + 0x52, 0xa2, 0x5e, 0x2a, 0x2b, 0xd5, 0xb9, 0xe6, 0x8c, 0xaa, 0xb4, 0x17, 0x86, 0xc4, 0xda, 0x63, + 0x7b, 0x68, 0x15, 0x72, 0x23, 0xaf, 0x37, 0xec, 0x63, 0xf5, 0x32, 0xa3, 0xb6, 0xe5, 0x0a, 0x5d, + 0x13, 0x82, 0x7d, 0xa7, 0xd7, 0x23, 0xea, 0x22, 0x27, 0x31, 0xa1, 0x16, 0x5b, 0xef, 0x2e, 0xfd, + 0xe4, 0x5f, 0xbf, 0x7b, 0x3d, 0x56, 0x06, 0x95, 0x55, 0x28, 0xc6, 0x6b, 0x55, 0x16, 0xf1, 0x6f, + 0x94, 0xa0, 0x88, 0x05, 0xd4, 0xe7, 0x71, 0x2c, 0xbf, 0x01, 0x39, 0x91, 0x24, 0x75, 0xf6, 0x6c, + 0xb9, 0x95, 0x62, 0xbb, 0x88, 0xf9, 0x1f, 0x57, 0x1a, 0x05, 0x10, 0xf8, 0x29, 0x03, 0xf8, 0x85, + 0x02, 0xab, 0x2d, 0x62, 0xef, 0xe3, 0x1e, 0xa6, 0xf8, 0xfc, 0x62, 0xb8, 0x0d, 0x57, 0x7c, 0xdc, + 0xf7, 0x46, 0x2c, 0x91, 0xf2, 0x24, 0x89, 0x83, 0xb6, 0x28, 0xb7, 0xe5, 0x61, 0x4a, 0xf4, 0x75, + 0x1d, 0xd6, 0xa6, 0x5c, 0x92, 0xee, 0x5a, 0x80, 0x5a, 0xc4, 0xbe, 0xef, 0xb8, 0x46, 0xcf, 0x79, + 0xf7, 0x3c, 0x3e, 0x82, 0x89, 0x0e, 0xac, 0xf0, 0xa4, 0x46, 0x56, 0x62, 0xc6, 0x1b, 0x26, 0x75, + 0x46, 0x06, 0xfd, 0x8c, 0x8d, 0x47, 0x56, 0xa4, 0x71, 0x13, 0xae, 0xb6, 0x88, 0xbd, 0xc7, 0x8a, + 0xa0, 0x77, 0x1e, 0xa6, 0x97, 0x99, 0xe9, 0x45, 0x1f, 0x3f, 0x31, 0xfc, 0x30, 0x47, 0x95, 0x65, + 0x58, 0x1a, 0x33, 0x22, 0x2d, 0x77, 0xb9, 0x65, 0x91, 0x8e, 0xcf, 0x2a, 0x68, 0x61, 0x38, 0xb0, + 0x21, 0x0d, 0xff, 0x56, 0x81, 0xc5, 0x16, 0xb1, 0x5b, 0x8e, 0x4b, 0x3f, 0xcf, 0xcb, 0xe1, 0xc5, + 0xa3, 0x58, 0x82, 0x2b, 0xa1, 0xbf, 0xf1, 0x18, 0x9a, 0x43, 0xdf, 0x7d, 0x95, 0x62, 0x10, 0xfe, + 0xca, 0x18, 0x3e, 0x55, 0x78, 0xe1, 0xff, 0xc0, 0xa1, 0x8f, 0x2c, 0xdf, 0x78, 0x72, 0x1e, 0xdf, + 0x87, 0x0d, 0x00, 0xea, 0x4d, 0x7c, 0x1a, 0xf2, 0xd4, 0x0b, 0xae, 0x58, 0x33, 0x84, 0x68, 0x8e, + 0x7f, 0x02, 0x33, 0x20, 0xba, 0xc3, 0x20, 0xfa, 0xe0, 0xef, 0x9b, 0xd5, 0x53, 0x42, 0x44, 0x02, + 0x8c, 0x32, 0x0e, 0x5f, 0x14, 0xa9, 0x44, 0xe0, 0x3f, 0x02, 0x81, 0xe0, 0xa2, 0xfa, 0x42, 0x33, + 0x39, 0x9b, 0x84, 0xe7, 0x29, 0xda, 0x96, 0x38, 0xe4, 0xf3, 0x13, 0x90, 0x67, 0xa0, 0x11, 0x45, + 0x2d, 0xd1, 0xf8, 0xa7, 0x02, 0x2b, 0x2d, 0x62, 0x3f, 0xec, 0x9a, 0x93, 0x80, 0xbc, 0xaf, 0xc0, + 0x42, 0x78, 0xd1, 0x0b, 0x4c, 0x5e, 0xab, 0x39, 0x5d, 0xb3, 0x36, 0xde, 0x30, 0xd7, 0x02, 0x0e, + 0xde, 0xe4, 0x44, 0xfa, 0x9b, 0xdf, 0x96, 0x18, 0xed, 0x4d, 0x63, 0xe4, 0x74, 0xcd, 0x6d, 0xdb, + 0xd3, 0x47, 0xf7, 0xf4, 0xbe, 0x67, 0x0d, 0x7b, 0x98, 0xb0, 0x16, 0x7c, 0xac, 0xf5, 0x16, 0xc0, + 0x8d, 0x3b, 0x1b, 0xfa, 0xf1, 0x12, 0x67, 0x41, 0xe5, 0x77, 0x63, 0x2c, 0x4e, 0x09, 0xc1, 0x9f, + 0x15, 0xd0, 0x5a, 0xc4, 0x3e, 0xc0, 0x74, 0x9f, 0x55, 0x7d, 0x0b, 0x53, 0xc3, 0x32, 0xa8, 0x11, + 0xe0, 0x30, 0x84, 0x85, 0xbe, 0xdc, 0x92, 0x30, 0x6c, 0x44, 0xa5, 0xe1, 0x1e, 0x85, 0xa5, 0x11, + 0xc8, 0x35, 0x77, 0x65, 0xe8, 0xf5, 0xcc, 0xf2, 0x78, 0x2a, 0xc6, 0x15, 0x19, 0x6c, 0x60, 0x33, + 0x34, 0xf5, 0x12, 0x91, 0x6e, 0xc0, 0xb5, 0xc4, 0x70, 0x64, 0xb8, 0xff, 0x9b, 0x83, 0xeb, 0xa2, + 0x7d, 0x08, 0x2e, 0xc5, 0xe0, 0x7e, 0x7a, 0xc5, 0x7a, 0xf7, 0x89, 0xfe, 0x7b, 0xfe, 0xe5, 0xfb, + 0xef, 0xdc, 0xf9, 0xf5, 0xdf, 0x17, 0xcf, 0xd6, 0x7f, 0x2f, 0xbc, 0x58, 0xff, 0x9d, 0x3f, 0x73, + 0xff, 0x0d, 0xa7, 0xeb, 0xbf, 0x0b, 0x99, 0xfd, 0xf7, 0xa5, 0xf4, 0xfe, 0xfb, 0xf2, 0xc9, 0xfd, + 0xf7, 0x2d, 0xb8, 0x91, 0x5d, 0x7f, 0xb2, 0x50, 0xff, 0xab, 0x40, 0x99, 0x15, 0x32, 0x87, 0xf0, + 0xa1, 0x6b, 0xfa, 0xd8, 0x20, 0xf8, 0x6d, 0xdf, 0x1b, 0x78, 0xc4, 0xe8, 0x7d, 0x9e, 0x55, 0x7a, + 0x13, 0x16, 0xa9, 0xe1, 0xdb, 0x98, 0x86, 0xd5, 0x28, 0xcf, 0xa2, 0xd8, 0x0d, 0xea, 0xf1, 0x2e, + 0xe4, 0x8d, 0x21, 0x7d, 0xe4, 0xf9, 0x0e, 0x3d, 0x16, 0xe5, 0xdc, 0x54, 0xff, 0xf2, 0xe1, 0x76, + 0x51, 0x3a, 0x24, 0xd9, 0x0e, 0xa8, 0xef, 0xb8, 0x76, 0x3b, 0x62, 0xdd, 0x45, 0x9f, 0xfe, 0x7a, + 0x53, 0x61, 0x30, 0x45, 0x7b, 0x95, 0xeb, 0xb0, 0x95, 0x11, 0xba, 0x04, 0xe8, 0x97, 0x33, 0x50, + 0x69, 0x11, 0xfb, 0x7b, 0x03, 0x4b, 0xb6, 0xb0, 0xf1, 0x8c, 0x66, 0xdf, 0xed, 0x5f, 0x07, 0x4d, + 0xb4, 0xef, 0x9d, 0xa4, 0x32, 0x99, 0xe1, 0x65, 0xa2, 0x0a, 0x8e, 0x69, 0xd5, 0xe8, 0x2e, 0xac, + 0x19, 0x96, 0x95, 0x28, 0x3a, 0xcb, 0x45, 0x57, 0x0c, 0xcb, 0x4a, 0x90, 0x7b, 0x00, 0x28, 0x28, + 0xde, 0x4e, 0x04, 0xd6, 0xdc, 0x09, 0x60, 0x2d, 0x05, 0x32, 0x8d, 0x10, 0xb4, 0x6b, 0x01, 0x68, + 0x09, 0xfa, 0x2a, 0x37, 0xf9, 0x17, 0x2e, 0x1d, 0x17, 0x89, 0xdf, 0xef, 0x15, 0x28, 0x85, 0x7c, + 0xf1, 0xe3, 0x93, 0x8d, 0x5d, 0xea, 0x79, 0x9c, 0x49, 0x3f, 0x8f, 0xe7, 0x59, 0x1d, 0x5b, 0xb0, + 0x99, 0xea, 0xb7, 0x8c, 0xed, 0x3d, 0xf1, 0xd0, 0x74, 0x80, 0x69, 0xc3, 0x34, 0x59, 0x15, 0xef, + 0x8f, 0x5d, 0x69, 0xc9, 0x51, 0x15, 0x61, 0x7e, 0x64, 0xf4, 0x86, 0x58, 0x56, 0xb7, 0x58, 0xa0, + 0x3b, 0x90, 0x23, 0x8e, 0xed, 0x06, 0x5f, 0xe8, 0x0c, 0xa7, 0x25, 0xdf, 0xee, 0x95, 0xc0, 0x63, + 0xb9, 0x21, 0x9f, 0x8e, 0x26, 0x5d, 0x91, 0x8e, 0xfe, 0x5b, 0x81, 0x2f, 0x85, 0xc1, 0x1c, 0x60, + 0xd7, 0xda, 0xc7, 0xee, 0x31, 0xfb, 0xa4, 0x66, 0x3b, 0x7b, 0x17, 0xd6, 0x64, 0xf9, 0x5a, 0xd8, + 0x75, 0xa2, 0xd1, 0x34, 0xac, 0xdd, 0x15, 0x41, 0xde, 0xe7, 0xd4, 0x46, 0x40, 0x44, 0x77, 0xa0, + 0xc8, 0x0a, 0x77, 0x4a, 0x48, 0x54, 0x2d, 0x32, 0x2c, 0x6b, 0x52, 0x22, 0x96, 0xb8, 0xb9, 0x97, + 0x4b, 0xdc, 0x26, 0x6c, 0xa4, 0xc4, 0x2a, 0xd1, 0xf8, 0xa3, 0xc2, 0x2f, 0xef, 0x86, 0x65, 0x7d, + 0x17, 0xd3, 0x06, 0x21, 0x98, 0x7e, 0x9f, 0x65, 0xe1, 0x5c, 0xe6, 0xf8, 0x03, 0xb8, 0xea, 0xb2, + 0x6f, 0x18, 0xd3, 0xda, 0xe1, 0xc9, 0x0d, 0x5e, 0x25, 0xae, 0x27, 0xdf, 0x78, 0x31, 0x17, 0xe4, + 0x9d, 0xb7, 0xe8, 0xc6, 0xfc, 0x4a, 0x6c, 0x40, 0x4a, 0x3c, 0xa3, 0x09, 0x31, 0x88, 0x20, 0xeb, + 0xbf, 0x42, 0x30, 0xdb, 0x22, 0x36, 0xea, 0xc0, 0x42, 0x70, 0x05, 0xa0, 0x6a, 0xca, 0xbd, 0x3d, + 0xf5, 0x40, 0xa0, 0xbd, 0x76, 0x0a, 0x4e, 0x61, 0x88, 0x19, 0x08, 0xee, 0x96, 0x0c, 0x03, 0x13, + 0x8f, 0x00, 0x19, 0x06, 0x26, 0x07, 0x79, 0xf4, 0x43, 0xc8, 0x89, 0x01, 0x1b, 0xdd, 0x4a, 0x15, + 0x8a, 0x8d, 0xf9, 0xda, 0xed, 0x13, 0xf9, 0x22, 0xd5, 0x62, 0x84, 0xce, 0x50, 0x1d, 0x9b, 0xe3, + 0x33, 0x54, 0xc7, 0x67, 0x71, 0x74, 0x00, 0x73, 0x6c, 0xae, 0x45, 0x37, 0x52, 0x05, 0xc6, 0xc6, + 0x74, 0xed, 0xe6, 0x09, 0x5c, 0x91, 0x52, 0x36, 0x68, 0x66, 0x28, 0x1d, 0x9b, 0x9b, 0x33, 0x94, + 0x8e, 0x4f, 0xab, 0xa8, 0x0b, 0xf9, 0xf0, 0x99, 0x0b, 0x65, 0xe4, 0x65, 0xe2, 0xc9, 0x4e, 0x7b, + 0xfd, 0x34, 0xac, 0xd2, 0xc6, 0x11, 0x5c, 0x1a, 0x7f, 0x9e, 0x42, 0x6f, 0x9c, 0x00, 0x63, 0xdc, + 0xd2, 0xf6, 0x29, 0xb9, 0xa3, 0x8a, 0x0c, 0x06, 0xd2, 0x8c, 0x8a, 0x9c, 0x98, 0xce, 0x33, 0x2a, + 0x72, 0x72, 0xba, 0x95, 0x88, 0x89, 0x4e, 0x2a, 0x1b, 0xb1, 0x58, 0xb7, 0x9f, 0x8d, 0x58, 0xbc, + 0x31, 0x63, 0x41, 0x84, 0xd7, 0x5a, 0x7a, 0x10, 0x13, 0x57, 0x69, 0x46, 0x10, 0x93, 0x97, 0x17, + 0x7a, 0x04, 0x85, 0xb1, 0x41, 0x0d, 0x7d, 0x39, 0x55, 0x72, 0x7a, 0x6c, 0xd5, 0xde, 0x38, 0x1d, + 0xb3, 0xb4, 0xf4, 0x04, 0xae, 0x4e, 0x0e, 0x4a, 0xe8, 0x4e, 0xaa, 0x86, 0x94, 0x11, 0x51, 0xdb, + 0x39, 0x83, 0x84, 0x34, 0xfc, 0x18, 0x16, 0xe3, 0xbf, 0xa5, 0xa0, 0x5a, 0xaa, 0x92, 0xc4, 0x5f, + 0x8b, 0x34, 0xfd, 0xd4, 0xfc, 0xd2, 0xe4, 0xfb, 0x0a, 0xac, 0xa7, 0x76, 0xdd, 0xe8, 0xad, 0xac, + 0x02, 0xc8, 0x9c, 0x14, 0xb5, 0xdd, 0x17, 0x11, 0x95, 0x4e, 0xbd, 0xa7, 0xc0, 0x6a, 0x72, 0x9b, + 0x8b, 0xee, 0xa6, 0xa3, 0x9a, 0x35, 0x12, 0x68, 0x5f, 0x3b, 0xb3, 0x9c, 0xf4, 0xe5, 0x67, 0x0a, + 0xa8, 0x69, 0x4d, 0x23, 0xba, 0x97, 0xaa, 0xf5, 0x84, 0xfe, 0x5b, 0x7b, 0xeb, 0x05, 0x24, 0xa5, + 0x47, 0x3f, 0x55, 0xa0, 0x98, 0xd4, 0xe6, 0xa1, 0xaf, 0x9c, 0xa0, 0x33, 0xb1, 0x9b, 0xd5, 0xbe, + 0x7a, 0x46, 0xa9, 0xa8, 0x56, 0xe3, 0xcd, 0x5b, 0x46, 0xad, 0x26, 0x36, 0x9c, 0x19, 0xb5, 0x9a, + 0xdc, 0x15, 0xa2, 0x1f, 0x03, 0x9a, 0xee, 0x92, 0x50, 0xfd, 0x04, 0xff, 0x13, 0xda, 0x47, 0xed, + 0xcd, 0x33, 0xc9, 0x48, 0xf3, 0xef, 0xc2, 0xd2, 0x54, 0xfb, 0x82, 0x76, 0xb2, 0xca, 0x3c, 0xb1, + 0x5d, 0xd3, 0xea, 0x67, 0x11, 0x11, 0xb6, 0x9b, 0xf6, 0x47, 0xcf, 0x4a, 0xca, 0xc7, 0xcf, 0x4a, + 0xca, 0x3f, 0x9e, 0x95, 0x94, 0x9f, 0x3f, 0x2f, 0x5d, 0xf8, 0xf8, 0x79, 0xe9, 0xc2, 0x5f, 0x9f, + 0x97, 0x2e, 0xc0, 0x9a, 0xe3, 0x25, 0xea, 0x7b, 0x5b, 0xf9, 0xd1, 0xf8, 0x5b, 0x53, 0xc4, 0xb2, + 0xed, 0x78, 0x63, 0x2b, 0xfd, 0x69, 0xf0, 0xd3, 0x34, 0x9f, 0x71, 0xbb, 0x39, 0xfe, 0xeb, 0xef, + 0x9b, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x13, 0xd1, 0x2a, 0xe0, 0x1f, 0x00, 0x00, } func (this *MsgSupplyIncreaseProposalRequest) Equal(that interface{}) bool { diff --git a/x/metadata/types/query.pb.go b/x/metadata/types/query.pb.go index 7fab3ac688..9eaab6c605 100644 --- a/x/metadata/types/query.pb.go +++ b/x/metadata/types/query.pb.go @@ -3585,211 +3585,211 @@ func init() { } var fileDescriptor_a68790bc0b96eeb9 = []byte{ - // 3256 bytes of a gzipped FileDescriptorProto + // 3258 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x1c, 0x5b, 0x6c, 0x1c, 0x57, - 0x35, 0x77, 0x36, 0x8e, 0xe3, 0xe3, 0x67, 0xae, 0x1f, 0x59, 0x6f, 0x12, 0xaf, 0x3b, 0x4d, 0x1c, + 0x35, 0x77, 0x36, 0x8e, 0xe3, 0xe3, 0x67, 0xae, 0x1f, 0x59, 0x6f, 0x12, 0x8f, 0x3b, 0x4d, 0x1c, 0xc7, 0x49, 0x76, 0x6b, 0x3b, 0xaf, 0xa6, 0x2d, 0xc5, 0x4e, 0x9b, 0x60, 0x92, 0x36, 0xe9, 0x58, 0x6d, 0x85, 0xa5, 0xca, 0x9a, 0xec, 0x4e, 0xdc, 0x05, 0xef, 0xce, 0x76, 0x67, 0x36, 0xad, 0x65, 0x59, 0x40, 0x05, 0x95, 0x10, 0x55, 0x69, 0x55, 0xa8, 0x0a, 0x08, 0x21, 0x51, 0x55, 0x88, 0x8a, 0x1f, 0x90, 0x2a, 0x54, 0xa1, 0xf2, 0x51, 0x84, 0x54, 0x3e, 0x10, 0x95, 0xca, 0x07, 0xf0, 0xb1, - 0x42, 0x71, 0x91, 0x2a, 0xf1, 0x03, 0x4b, 0x15, 0x09, 0xbe, 0xd0, 0xde, 0xc7, 0xec, 0x9d, 0x99, - 0x3b, 0xbb, 0x33, 0x1b, 0x6f, 0x64, 0xfc, 0xe7, 0xd9, 0x39, 0xaf, 0x7b, 0x9e, 0xf7, 0x9e, 0x7b, - 0xc6, 0xa0, 0x16, 0x4b, 0xe6, 0x4d, 0xa3, 0xa0, 0x17, 0x32, 0x46, 0x3a, 0x6f, 0xd8, 0x7a, 0x56, - 0xb7, 0xf5, 0xf4, 0xcd, 0xe9, 0xf4, 0x73, 0x65, 0xa3, 0xb4, 0x96, 0x2a, 0x96, 0x4c, 0xdb, 0xc4, - 0x23, 0x75, 0x98, 0x14, 0x87, 0x49, 0xdd, 0x9c, 0x4e, 0x0c, 0xad, 0x98, 0x2b, 0x26, 0x01, 0x49, - 0xd7, 0xfe, 0xa2, 0xd0, 0x89, 0xa9, 0x8c, 0x69, 0xe5, 0x4d, 0x2b, 0x7d, 0x5d, 0xb7, 0x0c, 0x4a, - 0x26, 0x7d, 0x73, 0xfa, 0xba, 0x61, 0xeb, 0xd3, 0xe9, 0xa2, 0xbe, 0x92, 0x2b, 0xe8, 0x76, 0xce, - 0x2c, 0x30, 0xd8, 0x83, 0x2b, 0xa6, 0xb9, 0xb2, 0x6a, 0xa4, 0xf5, 0x62, 0x2e, 0xad, 0x17, 0x0a, - 0xa6, 0x4d, 0x5e, 0x5a, 0xec, 0xed, 0x91, 0x00, 0xd9, 0x1c, 0x19, 0x28, 0x58, 0xd0, 0x12, 0xac, - 0x8c, 0x59, 0x34, 0xb8, 0x50, 0x41, 0x30, 0x45, 0x23, 0x93, 0xbb, 0x91, 0xcb, 0x88, 0x42, 0x4d, - 0x06, 0xc0, 0x9a, 0xd7, 0xbf, 0x6c, 0x64, 0x6c, 0xcb, 0x36, 0x4b, 0x8c, 0xaa, 0xfa, 0x25, 0xc0, - 0x4f, 0xd4, 0x16, 0x78, 0x4d, 0x2f, 0xe9, 0x79, 0x4b, 0x33, 0x9e, 0x2b, 0x1b, 0x96, 0x8d, 0x2f, - 0x40, 0x7f, 0xae, 0x90, 0x59, 0x2d, 0x67, 0x8d, 0xe5, 0x12, 0xfd, 0x29, 0x7e, 0x7d, 0x1c, 0x4d, - 0xee, 0x9d, 0x4f, 0x54, 0x2b, 0xc9, 0x91, 0x35, 0x3d, 0xbf, 0x7a, 0x5e, 0xf5, 0x00, 0xa8, 0x5a, - 0x1f, 0xfb, 0x85, 0x11, 0x51, 0xbf, 0x8f, 0x60, 0xd0, 0x45, 0xdb, 0x2a, 0x9a, 0x05, 0xcb, 0xc0, - 0x0f, 0xc2, 0x9e, 0x22, 0xf9, 0x25, 0x8e, 0xc6, 0xd1, 0x64, 0xf7, 0xcc, 0x58, 0x4a, 0x6e, 0x9c, - 0x14, 0xc5, 0x9b, 0xdf, 0xfd, 0x61, 0x25, 0xb9, 0x4b, 0x63, 0x38, 0xf8, 0x11, 0xe8, 0x14, 0x45, - 0xea, 0x9e, 0x99, 0x0a, 0x42, 0xf7, 0xaf, 0x4b, 0xe3, 0xa8, 0xea, 0xef, 0x63, 0xd0, 0xb3, 0x58, - 0x53, 0x2e, 0x5f, 0x71, 0x0a, 0xf6, 0x12, 0x65, 0x2f, 0xe7, 0xb2, 0x44, 0xac, 0xae, 0xf9, 0xc1, - 0x6a, 0x25, 0xd9, 0x4f, 0x97, 0xca, 0xdf, 0xa8, 0x5a, 0x27, 0xf9, 0x73, 0x21, 0x8b, 0xcf, 0x43, - 0x8f, 0x65, 0x58, 0x56, 0xce, 0x2c, 0x2c, 0xeb, 0xd9, 0x6c, 0x29, 0xae, 0x10, 0x9c, 0xfd, 0xd5, - 0x4a, 0x72, 0x90, 0xe1, 0x08, 0x6f, 0x55, 0xad, 0x9b, 0x3d, 0xce, 0x65, 0xb3, 0x25, 0x7c, 0x16, - 0xba, 0x4b, 0x46, 0xc6, 0x2c, 0x65, 0x29, 0x6a, 0x8c, 0xa0, 0x8e, 0x54, 0x2b, 0x49, 0x4c, 0x51, - 0x85, 0x97, 0xaa, 0x06, 0xf4, 0x89, 0x20, 0x5e, 0x84, 0x01, 0xae, 0x75, 0x46, 0xcf, 0x8a, 0x03, - 0xb1, 0xcb, 0x81, 0x6a, 0x25, 0xb9, 0xdf, 0x6d, 0x17, 0x0e, 0xa1, 0x6a, 0xdc, 0x96, 0x8b, 0xec, - 0x17, 0xb7, 0x79, 0x6b, 0xd4, 0xad, 0x78, 0x77, 0xb0, 0x79, 0x09, 0x80, 0x68, 0x5e, 0xf2, 0x03, - 0x9e, 0x87, 0x7e, 0xe3, 0x05, 0x0a, 0x93, 0xcb, 0x2e, 0xe7, 0x0a, 0x37, 0xcc, 0x78, 0x8f, 0x97, - 0x88, 0x07, 0x40, 0xd5, 0x7a, 0xd9, 0x2f, 0x0b, 0xd9, 0x85, 0xc2, 0x0d, 0x73, 0x6b, 0xfc, 0xec, - 0x0f, 0x0a, 0xf4, 0x32, 0x5b, 0x32, 0x0f, 0x3b, 0x0f, 0x1d, 0xc4, 0x4e, 0xcc, 0xc1, 0x0e, 0x07, - 0x79, 0x08, 0xc1, 0x7a, 0xba, 0xa4, 0x17, 0x8b, 0x46, 0x49, 0xa3, 0x28, 0x58, 0x87, 0xbd, 0x8e, - 0x6e, 0x95, 0xf1, 0xd8, 0x64, 0xf7, 0xcc, 0x44, 0x20, 0x3a, 0x85, 0x63, 0x04, 0xe6, 0x0f, 0x55, - 0x2b, 0xc9, 0x51, 0x97, 0xf1, 0xad, 0x13, 0x66, 0x3e, 0x67, 0x1b, 0xf9, 0xa2, 0xbd, 0xa6, 0x6a, - 0x0e, 0x59, 0xfc, 0x4c, 0xcd, 0x85, 0xa9, 0xda, 0x63, 0x84, 0xc3, 0x91, 0x20, 0x0e, 0x54, 0xd7, - 0x9c, 0xc1, 0xc1, 0x6a, 0x25, 0x19, 0x17, 0x5d, 0xc4, 0x45, 0x9f, 0xd3, 0xc4, 0x9f, 0xf3, 0x46, - 0x48, 0xe3, 0xf5, 0xfb, 0x62, 0xe3, 0x87, 0x0a, 0x8b, 0x0d, 0xc6, 0x17, 0xcf, 0xba, 0xd5, 0x79, - 0xa8, 0x31, 0x39, 0x47, 0x8f, 0xbd, 0x3c, 0x6c, 0xa8, 0x73, 0x28, 0x04, 0xf9, 0xde, 0x86, 0xc8, - 0xd4, 0x2d, 0xe6, 0xe3, 0xd5, 0x4a, 0x72, 0xc8, 0x1d, 0x7a, 0xcc, 0x7f, 0xba, 0xad, 0x3a, 0x18, - 0xb6, 0x00, 0xd3, 0xd7, 0xb5, 0x14, 0xe8, 0xf0, 0x89, 0x11, 0x3e, 0x47, 0x1b, 0xf2, 0x59, 0x2c, - 0x1a, 0x19, 0xc6, 0x4b, 0xb4, 0x9a, 0x8f, 0x98, 0xaa, 0xf5, 0x5b, 0x6e, 0x78, 0x75, 0x13, 0xc1, - 0x00, 0xa1, 0x61, 0xcd, 0xad, 0xae, 0xf2, 0xec, 0xb1, 0x5d, 0x62, 0x01, 0x5f, 0x04, 0xa8, 0x57, - 0xa8, 0x78, 0x86, 0xa8, 0x62, 0x22, 0x45, 0xcb, 0x59, 0xaa, 0x56, 0xce, 0x52, 0xb4, 0x2a, 0xb2, - 0x72, 0x96, 0xba, 0xa6, 0xaf, 0x38, 0x0e, 0x20, 0x60, 0xaa, 0x15, 0x04, 0xfb, 0x84, 0x55, 0xd6, - 0x33, 0x37, 0x51, 0x47, 0x2d, 0x73, 0xc7, 0x42, 0x07, 0x16, 0xc3, 0xc1, 0xf3, 0x5e, 0xbf, 0x9c, - 0x6c, 0x88, 0x2e, 0xe8, 0xd7, 0xf1, 0x4d, 0x7c, 0x49, 0xb2, 0xbe, 0xa3, 0x4d, 0xd7, 0x47, 0xc5, - 0x77, 0x2d, 0xf0, 0x76, 0x0c, 0xfa, 0x79, 0x3e, 0x6c, 0xb5, 0x06, 0x9c, 0x02, 0xe0, 0x59, 0x3e, - 0x97, 0x65, 0x15, 0x60, 0xb8, 0x5a, 0x49, 0xee, 0x73, 0x57, 0x80, 0x1a, 0x4e, 0x17, 0x7b, 0x58, - 0xc8, 0xb6, 0x9e, 0xfd, 0xeb, 0x88, 0x05, 0x3d, 0x6f, 0xc4, 0x77, 0x07, 0x20, 0xd6, 0x5e, 0x3a, - 0x88, 0x8f, 0xeb, 0x79, 0x03, 0x3f, 0x04, 0xbd, 0x4e, 0x51, 0x20, 0x71, 0x4c, 0x6b, 0x86, 0x10, - 0x65, 0xae, 0xd7, 0xaa, 0xd6, 0xc3, 0x0b, 0x06, 0x89, 0xe4, 0x9d, 0x55, 0x2d, 0x3e, 0x52, 0x60, - 0xa0, 0x6e, 0x78, 0xe6, 0xd8, 0x4f, 0xb5, 0x50, 0x30, 0x44, 0xae, 0x04, 0x59, 0x4c, 0xc6, 0x2c, - 0x09, 0xce, 0xb7, 0x5a, 0x4c, 0xee, 0x5e, 0xb5, 0x98, 0xf3, 0x46, 0xe5, 0xd1, 0x26, 0x12, 0xfa, - 0x37, 0x53, 0xbf, 0x52, 0xa0, 0xcf, 0x2d, 0x3e, 0xbe, 0x1f, 0x3a, 0xd9, 0x02, 0x98, 0x4a, 0x93, - 0x4d, 0xa8, 0x6a, 0x1c, 0x1e, 0xe7, 0xa0, 0xbf, 0x1e, 0x39, 0x62, 0xe9, 0x38, 0xd2, 0x84, 0x04, - 0x4b, 0xe8, 0xa2, 0x59, 0xdc, 0x74, 0x54, 0xad, 0xd7, 0x12, 0x41, 0xf1, 0x57, 0x61, 0x38, 0x63, - 0x16, 0xec, 0x92, 0x9e, 0xb1, 0x65, 0x35, 0x24, 0x70, 0x67, 0x79, 0x81, 0x21, 0x09, 0x65, 0x64, - 0xbc, 0x5a, 0x49, 0x1e, 0xa4, 0x5c, 0xa5, 0x24, 0x55, 0x0d, 0x67, 0x7c, 0x58, 0xea, 0xdf, 0x11, - 0x60, 0xae, 0xd6, 0x9d, 0x5c, 0x4e, 0x3e, 0x45, 0x30, 0xe8, 0x5a, 0x27, 0x8b, 0x3b, 0x31, 0x3e, - 0x50, 0x8b, 0xf1, 0x11, 0xfe, 0x40, 0xe0, 0xd7, 0x74, 0x1b, 0x0a, 0xcb, 0xc7, 0x31, 0xe8, 0x63, - 0x49, 0x8f, 0x6b, 0xd1, 0x93, 0xf1, 0x51, 0xe8, 0x8c, 0x2f, 0x16, 0x24, 0x25, 0x72, 0x41, 0x8a, - 0x85, 0x2c, 0x48, 0x18, 0x76, 0xd7, 0x0b, 0x8a, 0x46, 0xfe, 0xbe, 0xd3, 0x92, 0x21, 0x3b, 0xa8, - 0x74, 0xb7, 0x70, 0x50, 0xd9, 0x36, 0x55, 0xe3, 0x8f, 0x0a, 0xf4, 0x3b, 0x56, 0x6d, 0x73, 0xd1, - 0xb8, 0x0b, 0x27, 0x90, 0x87, 0x5b, 0xab, 0x29, 0xf5, 0xaa, 0xf1, 0x79, 0x6f, 0xd0, 0x4d, 0x34, - 0x26, 0xe0, 0x2f, 0x1a, 0x3f, 0x55, 0xa0, 0xd7, 0x45, 0x1c, 0x9f, 0x81, 0x3d, 0x94, 0x7c, 0xb3, - 0xbe, 0x00, 0x45, 0xd3, 0x18, 0x34, 0x36, 0xa0, 0x8f, 0x45, 0x90, 0xbb, 0x5e, 0x1c, 0x6e, 0x8c, - 0xcf, 0x12, 0xf7, 0x68, 0xb5, 0x92, 0x1c, 0x76, 0xc5, 0xa1, 0xe3, 0x48, 0x3d, 0x25, 0x01, 0x10, - 0x3f, 0x0f, 0x83, 0x0c, 0x40, 0x52, 0x2a, 0x26, 0x1b, 0xf3, 0x12, 0x0a, 0xc5, 0x58, 0xb5, 0x92, - 0x4c, 0xb8, 0xf8, 0xb9, 0xcb, 0xc4, 0x40, 0xc9, 0x83, 0xa1, 0x7e, 0x82, 0x60, 0x1f, 0xd3, 0xe2, - 0x4e, 0xae, 0x11, 0x9b, 0x08, 0xb0, 0xb8, 0x4c, 0x16, 0x65, 0x82, 0xab, 0xa2, 0x96, 0x5c, 0xf5, - 0x82, 0xd7, 0x55, 0x8f, 0x35, 0x71, 0xd5, 0xb6, 0x96, 0x87, 0xf7, 0x10, 0x0c, 0x5c, 0x7d, 0xbe, - 0x60, 0x94, 0xac, 0x67, 0x73, 0x45, 0xae, 0xc2, 0x38, 0x74, 0xd6, 0x92, 0xbf, 0x61, 0xd1, 0x96, - 0x58, 0x97, 0xc6, 0x1f, 0xb7, 0x97, 0x85, 0xfe, 0x82, 0x60, 0x9f, 0x20, 0x3b, 0x33, 0xd0, 0x59, - 0xa0, 0x87, 0xf2, 0xe5, 0x72, 0x39, 0xc7, 0x8c, 0xe4, 0xaa, 0x6e, 0xc2, 0x4b, 0x55, 0x03, 0xf2, - 0xf4, 0x64, 0xed, 0x21, 0xc2, 0x79, 0xd0, 0xab, 0xb0, 0x36, 0xd8, 0xe5, 0x37, 0x08, 0x86, 0x9f, - 0xd2, 0x57, 0xcb, 0xc6, 0xff, 0xab, 0x71, 0x36, 0x11, 0x8c, 0x78, 0x17, 0x70, 0xa7, 0x16, 0xba, - 0xe4, 0xb5, 0xd0, 0xc9, 0x20, 0x0b, 0x49, 0x55, 0xd7, 0x06, 0x33, 0xbd, 0x19, 0x83, 0x51, 0xa7, - 0x83, 0xe3, 0x74, 0xbd, 0xeb, 0xba, 0x1c, 0x70, 0x75, 0xc3, 0xeb, 0x07, 0x79, 0x61, 0xdb, 0xe1, - 0x85, 0x50, 0xb5, 0x7e, 0xd7, 0x4f, 0x0b, 0x59, 0xfc, 0x34, 0x8c, 0x70, 0xbb, 0xb9, 0x36, 0xf3, - 0xbc, 0xdb, 0x7a, 0x4f, 0xb5, 0x92, 0x3c, 0xe4, 0xb6, 0xaf, 0x1b, 0x4e, 0xd5, 0x86, 0xd8, 0x0b, - 0xf1, 0xa8, 0x60, 0xe1, 0x27, 0x60, 0xc8, 0x7d, 0x52, 0x66, 0x64, 0xe9, 0xde, 0x28, 0x59, 0xad, - 0x24, 0x0f, 0xc8, 0xce, 0xd3, 0x9c, 0x28, 0x76, 0x1d, 0xaa, 0x29, 0xc9, 0x6d, 0xb3, 0x45, 0xfa, - 0x47, 0x0c, 0x12, 0x32, 0xd3, 0x30, 0x27, 0x7c, 0x11, 0xc1, 0x60, 0xbd, 0xc1, 0xe6, 0xbc, 0x67, - 0xb5, 0x7e, 0xba, 0x69, 0xbb, 0xce, 0xc1, 0xe0, 0x9b, 0x1d, 0xa1, 0x90, 0x4a, 0xe8, 0xaa, 0x1a, - 0xb6, 0x7c, 0xa8, 0xf8, 0x6b, 0x08, 0xfa, 0x3c, 0x16, 0xa5, 0x3b, 0xac, 0x53, 0x61, 0x8e, 0x7a, - 0x3e, 0x11, 0xee, 0xad, 0x56, 0x92, 0x49, 0xc9, 0xa1, 0xcf, 0xb5, 0xeb, 0xea, 0xcd, 0xb8, 0x5c, - 0xe0, 0x05, 0xe8, 0x71, 0x99, 0x9e, 0xee, 0xbf, 0x66, 0x9a, 0xef, 0x1f, 0x7c, 0xdc, 0x05, 0x2f, - 0x14, 0x29, 0x8a, 0xbc, 0xbb, 0x4b, 0x82, 0xa7, 0x5c, 0xf6, 0x46, 0x73, 0x04, 0xa5, 0xfb, 0xb6, - 0x6f, 0xb7, 0x90, 0x2c, 0x10, 0xf9, 0x56, 0xee, 0x1a, 0xf4, 0xca, 0xac, 0x3c, 0x15, 0x81, 0xa1, - 0x9b, 0x40, 0x40, 0xaf, 0x57, 0x69, 0x6f, 0xaf, 0xf7, 0x9f, 0x08, 0x0e, 0xf9, 0x45, 0xdb, 0xd1, - 0xbb, 0xb0, 0x0f, 0x14, 0x18, 0x0b, 0x5a, 0x32, 0x8b, 0xe4, 0x6f, 0x22, 0x18, 0x92, 0x44, 0x1c, - 0xdf, 0x9f, 0xb5, 0x10, 0xca, 0x42, 0xe2, 0x93, 0x11, 0x56, 0xb5, 0x41, 0x7f, 0x2c, 0x5b, 0xf8, - 0xaa, 0xd7, 0x9f, 0x4f, 0x87, 0xe7, 0xdc, 0xde, 0x4d, 0xde, 0x07, 0x0a, 0x1c, 0x94, 0x26, 0x8e, - 0xad, 0x2e, 0x54, 0x41, 0xf5, 0x04, 0x76, 0x40, 0x3d, 0x79, 0x23, 0x06, 0x87, 0x02, 0x94, 0xc8, - 0x1c, 0xf1, 0x15, 0x04, 0x23, 0xae, 0xbc, 0xeb, 0xcd, 0x37, 0xad, 0x65, 0x75, 0x21, 0xaf, 0xca, - 0xa9, 0xab, 0xda, 0x70, 0x46, 0x46, 0x00, 0xbf, 0x8e, 0x60, 0x58, 0xd0, 0xb0, 0x10, 0x1a, 0xad, - 0x67, 0xf9, 0xa9, 0x6a, 0x25, 0x39, 0xe1, 0xcb, 0xf2, 0x75, 0xd2, 0x62, 0xba, 0x1f, 0x2a, 0xf9, - 0xe9, 0x58, 0xf8, 0x71, 0x6f, 0x9c, 0x44, 0x53, 0x8b, 0x2f, 0xf5, 0x7f, 0x86, 0x02, 0xbc, 0x9b, - 0x67, 0xff, 0x45, 0x79, 0xf6, 0x3f, 0x19, 0x8d, 0xad, 0xa7, 0x00, 0x04, 0xf6, 0x6a, 0x95, 0xbb, - 0xd4, 0xab, 0xfd, 0x37, 0x82, 0x71, 0xa9, 0xa4, 0x3b, 0xba, 0x1e, 0xfc, 0x49, 0x81, 0x7b, 0x1a, - 0xac, 0x9a, 0x45, 0xe2, 0x6b, 0x08, 0xf6, 0xcb, 0x63, 0x85, 0x57, 0x85, 0xd6, 0x42, 0x51, 0xad, - 0x56, 0x92, 0x63, 0x8d, 0x42, 0xd1, 0x52, 0xb5, 0x11, 0x69, 0x2c, 0x5a, 0x58, 0xf3, 0xba, 0xfd, - 0xb9, 0x48, 0x22, 0xb4, 0xb7, 0x42, 0xbc, 0xa4, 0xc0, 0xac, 0x24, 0xe8, 0xad, 0x8b, 0x66, 0xe9, - 0xae, 0x14, 0x8e, 0x6d, 0x93, 0xe5, 0xff, 0x13, 0x83, 0x53, 0xd1, 0x14, 0xc1, 0x5c, 0xee, 0x5b, - 0x81, 0xb9, 0x16, 0xb5, 0x9c, 0x6b, 0x85, 0xc4, 0x20, 0x25, 0x1d, 0x94, 0x61, 0x6f, 0xc0, 0x01, - 0xb9, 0x7b, 0x92, 0x43, 0x35, 0x6b, 0xdd, 0x4f, 0x54, 0x2b, 0x49, 0xb5, 0x91, 0x2f, 0x13, 0x60, - 0x55, 0x1b, 0x95, 0xfa, 0x73, 0xed, 0x40, 0xde, 0x80, 0x8f, 0x70, 0x95, 0xdc, 0x9c, 0x0f, 0xbd, - 0x68, 0x90, 0xf3, 0x21, 0xf7, 0x0e, 0x86, 0x37, 0x74, 0x2e, 0x47, 0x50, 0x66, 0x33, 0x1f, 0xae, - 0x17, 0x92, 0xaf, 0x2b, 0x90, 0x90, 0x10, 0xd8, 0x6a, 0x5f, 0xe7, 0xf7, 0x1b, 0x8a, 0x70, 0xbf, - 0xb1, 0x6d, 0xfc, 0xff, 0x33, 0x04, 0x07, 0xa4, 0x3a, 0x60, 0x6e, 0xfe, 0x12, 0x82, 0x21, 0x99, - 0x2f, 0xb2, 0x9a, 0xda, 0x8a, 0x97, 0x0b, 0xdb, 0x42, 0x19, 0x65, 0x55, 0x1b, 0x94, 0x38, 0x39, - 0xbe, 0xe2, 0xf5, 0x89, 0x28, 0xac, 0x7d, 0xa6, 0xff, 0x14, 0x49, 0x4d, 0xcf, 0x77, 0x10, 0x4f, - 0xc8, 0x77, 0x10, 0xc7, 0xa3, 0xb0, 0xf4, 0xec, 0x1f, 0x02, 0xda, 0xf7, 0x4a, 0xdb, 0xdb, 0xf7, - 0xff, 0x42, 0x30, 0x26, 0x0b, 0x93, 0x9d, 0xbc, 0x6b, 0xf8, 0x50, 0x81, 0x64, 0xe0, 0x9a, 0xb7, - 0x61, 0x02, 0xbf, 0xe6, 0x75, 0xee, 0x33, 0x51, 0x12, 0x5e, 0x5b, 0x77, 0x0a, 0x93, 0x30, 0x70, - 0xc9, 0xb0, 0xe7, 0xd7, 0x6a, 0x89, 0x99, 0x9b, 0x69, 0x08, 0x3a, 0x6a, 0x39, 0x9c, 0xb5, 0x72, - 0x35, 0xfa, 0xa0, 0xbe, 0xdb, 0x01, 0xfb, 0x04, 0x50, 0xa6, 0x66, 0xcd, 0x33, 0xb3, 0xd5, 0x78, - 0x7a, 0xcf, 0x95, 0x5a, 0x09, 0x9a, 0x78, 0xbe, 0xe0, 0x93, 0x5c, 0x4b, 0xbe, 0x1b, 0xca, 0x66, - 0xe3, 0x1d, 0xe1, 0xaf, 0x26, 0x9f, 0xf2, 0x5e, 0x4d, 0x36, 0xb9, 0x06, 0x0c, 0x3b, 0xe7, 0x92, - 0xe7, 0x4d, 0x70, 0x7a, 0x42, 0xde, 0x4d, 0x68, 0x47, 0x68, 0x48, 0x89, 0xbe, 0x25, 0x10, 0x12, - 0x79, 0x81, 0xd3, 0xa5, 0xb0, 0xf0, 0x9a, 0xaf, 0xd1, 0xd8, 0x41, 0x38, 0x46, 0x3b, 0x04, 0xb5, - 0xd4, 0x61, 0x7c, 0xce, 0xd3, 0x61, 0xdc, 0x43, 0x18, 0x47, 0xc9, 0x9d, 0x91, 0x5b, 0x8b, 0x0f, - 0x40, 0x57, 0xc1, 0xb4, 0x97, 0x6f, 0x98, 0xe5, 0x42, 0x36, 0xde, 0x49, 0xee, 0x17, 0x84, 0x44, - 0xe9, 0xbc, 0x72, 0x59, 0xbc, 0x60, 0xda, 0x17, 0x6b, 0x3f, 0xaa, 0xcf, 0xc0, 0xc8, 0xd5, 0xc5, - 0x2b, 0x66, 0x46, 0xb7, 0xcd, 0x52, 0x1b, 0xc6, 0xd0, 0xdf, 0x41, 0xb0, 0xdf, 0x47, 0x9f, 0x05, - 0xc7, 0xa3, 0x9e, 0x51, 0xf4, 0xc0, 0x4e, 0xa2, 0x87, 0x80, 0x67, 0x26, 0xfd, 0x0b, 0xde, 0xf4, - 0x91, 0x0a, 0x49, 0xc7, 0x57, 0x17, 0xf3, 0x30, 0xe0, 0x80, 0x08, 0xd1, 0x6e, 0x3e, 0x5f, 0x30, - 0xd8, 0xe0, 0x88, 0x46, 0x1f, 0xb6, 0x46, 0x37, 0x3f, 0x42, 0xb0, 0x4f, 0xe0, 0xc7, 0xb4, 0xf2, - 0x08, 0x74, 0xae, 0xd2, 0x9f, 0x9a, 0xf5, 0x6d, 0xaf, 0x92, 0xef, 0x09, 0x16, 0x6d, 0xb3, 0x64, - 0x70, 0x22, 0x1c, 0x35, 0xca, 0xf5, 0x9e, 0x67, 0xc5, 0xc2, 0x64, 0x19, 0x12, 0x7c, 0xc3, 0x9a, - 0x5f, 0x7b, 0x52, 0x5b, 0xe0, 0x5a, 0x19, 0x80, 0x58, 0xb9, 0x94, 0x63, 0x3a, 0xa9, 0xfd, 0xb9, - 0xbd, 0x2a, 0xe0, 0x7f, 0x45, 0xaf, 0xe3, 0x92, 0x33, 0xfd, 0x5e, 0x81, 0xbd, 0x4c, 0x49, 0x3c, - 0x29, 0x47, 0x50, 0x30, 0x73, 0x3d, 0x87, 0x42, 0x2b, 0xce, 0xe7, 0xd2, 0x64, 0x1b, 0x6a, 0xd6, - 0x77, 0x10, 0xc4, 0x45, 0x66, 0x77, 0xf4, 0xa5, 0xc5, 0x96, 0x38, 0xfa, 0xbb, 0x08, 0x46, 0x25, - 0x12, 0xb5, 0xc5, 0x20, 0x5f, 0xf4, 0x1a, 0xe4, 0xbe, 0x30, 0x06, 0x91, 0xcf, 0xe2, 0xbf, 0x85, - 0x60, 0xe8, 0xea, 0xe2, 0xdc, 0xea, 0x2a, 0x07, 0xdc, 0xca, 0xd4, 0xb8, 0x65, 0xce, 0x7e, 0x1b, - 0xc1, 0xb0, 0x47, 0xca, 0xb6, 0x68, 0xf6, 0xa2, 0x57, 0xb3, 0x27, 0x82, 0x35, 0xeb, 0xd7, 0x59, - 0x1b, 0x1c, 0xdd, 0x00, 0x3c, 0x97, 0xc9, 0x98, 0xe5, 0x82, 0xfd, 0x88, 0x6e, 0xeb, 0x5c, 0xad, - 0x57, 0xa1, 0x97, 0xcb, 0x52, 0x9f, 0xf8, 0xeb, 0x99, 0x9f, 0xaa, 0xad, 0xe6, 0xaf, 0x95, 0x64, - 0xff, 0x63, 0xec, 0xe5, 0x1c, 0x9d, 0x23, 0x90, 0x79, 0x7f, 0x4f, 0x5e, 0x80, 0x51, 0x8f, 0xc3, - 0xa0, 0x8b, 0x0d, 0x53, 0xee, 0x10, 0x74, 0xdc, 0xd4, 0x57, 0xcb, 0x06, 0x2f, 0x0c, 0xe4, 0x41, - 0x9d, 0x86, 0x24, 0xf9, 0xf2, 0x89, 0x38, 0xd4, 0xe3, 0x86, 0x3d, 0x67, 0x59, 0x86, 0x4d, 0xee, - 0xe7, 0x1d, 0xe7, 0xe9, 0x03, 0x85, 0x07, 0x9f, 0xa6, 0xe4, 0xb2, 0xea, 0x1a, 0x8c, 0x07, 0xa3, - 0x30, 0x66, 0x4f, 0xc2, 0x40, 0xc1, 0xb0, 0x97, 0xf5, 0xda, 0xab, 0x65, 0xc2, 0xa9, 0xe9, 0x40, - 0x8e, 0x8b, 0x12, 0x33, 0x66, 0x5f, 0xc1, 0x45, 0x7e, 0xe6, 0xfd, 0x09, 0xe8, 0x20, 0xbc, 0x6b, - 0xe7, 0x81, 0x3d, 0xb4, 0x2a, 0xe2, 0x08, 0x9f, 0x74, 0x25, 0x8e, 0x87, 0x82, 0xa5, 0x8b, 0x50, - 0x27, 0x5e, 0xfc, 0xf8, 0x93, 0xd7, 0x95, 0x71, 0x3c, 0x96, 0x0e, 0xf8, 0x40, 0x8e, 0x15, 0xf4, - 0xdb, 0x08, 0x3a, 0xe8, 0x24, 0x63, 0xa8, 0x6f, 0x67, 0x12, 0x47, 0x9a, 0x40, 0x31, 0xf6, 0x3f, - 0x46, 0x84, 0xff, 0x9b, 0x08, 0x4f, 0xa6, 0x1b, 0x7d, 0xf1, 0x97, 0x5e, 0xe7, 0x9e, 0xb0, 0xb1, - 0x74, 0x06, 0x9f, 0x0a, 0x84, 0xa5, 0x7b, 0xe6, 0xf4, 0xba, 0xf8, 0xad, 0xd9, 0x06, 0x25, 0xb1, - 0x74, 0x0a, 0xcf, 0x04, 0xe1, 0xd1, 0x9d, 0x5b, 0x7a, 0x5d, 0x98, 0x3b, 0x65, 0x58, 0xf8, 0x65, - 0x04, 0x5d, 0xce, 0xd7, 0x17, 0x38, 0xf4, 0x07, 0x1a, 0x89, 0x63, 0x21, 0x20, 0x99, 0x12, 0xa6, - 0x88, 0x0e, 0x0e, 0x63, 0xb5, 0xa1, 0x0a, 0xac, 0xb4, 0xbe, 0xba, 0x8a, 0x5f, 0x8e, 0xc1, 0x5e, - 0x67, 0x18, 0x34, 0xec, 0x60, 0x7a, 0x62, 0xb2, 0x39, 0x20, 0x93, 0xe5, 0xe7, 0x0a, 0x11, 0xe6, - 0x6d, 0x05, 0x9f, 0x08, 0xad, 0xe4, 0x9a, 0x51, 0x66, 0xf1, 0x74, 0x58, 0x03, 0x72, 0x02, 0xd6, - 0xd2, 0xc3, 0xf8, 0xa1, 0xa8, 0x48, 0x6e, 0xae, 0x0d, 0x5c, 0x41, 0x6e, 0x52, 0x8a, 0xbb, 0x74, - 0x09, 0x3f, 0x1a, 0x9a, 0xb1, 0x87, 0x50, 0x41, 0xcf, 0x1b, 0x0e, 0x21, 0xfc, 0x5d, 0x04, 0xdd, - 0xc2, 0x10, 0x35, 0x8e, 0x30, 0x69, 0x1d, 0x1c, 0xa7, 0x92, 0xb9, 0x70, 0xf5, 0x04, 0x31, 0xcb, - 0x04, 0x3e, 0xdc, 0xc4, 0x2a, 0xd4, 0x4b, 0x5e, 0xd9, 0x0d, 0x9d, 0xfc, 0x3b, 0x93, 0x90, 0x73, - 0xa8, 0x89, 0xa3, 0x4d, 0xe1, 0x98, 0x28, 0xbf, 0x88, 0x11, 0x59, 0xde, 0x89, 0x05, 0xbb, 0x88, - 0x4c, 0xf9, 0x4b, 0x33, 0xf8, 0xbe, 0x88, 0x4a, 0xb7, 0x96, 0xce, 0xe1, 0x33, 0x91, 0x0d, 0x45, - 0x2c, 0x14, 0xc9, 0xc4, 0x32, 0xdf, 0x72, 0x44, 0x78, 0x0c, 0x5f, 0xde, 0x0a, 0x42, 0x5c, 0xae, - 0x28, 0xd9, 0x4b, 0x14, 0xe3, 0x41, 0x7c, 0xbe, 0x05, 0x3c, 0xc6, 0x15, 0xbf, 0x8a, 0x00, 0xea, - 0xc3, 0x9c, 0x38, 0xfc, 0xc0, 0x67, 0x62, 0x2a, 0x0c, 0x28, 0xf3, 0x8c, 0xe3, 0xc4, 0x31, 0x8e, - 0xe0, 0x7b, 0x1b, 0xfb, 0x05, 0xf5, 0xd1, 0xef, 0x21, 0xe8, 0x72, 0xe6, 0xe3, 0x70, 0xe8, 0x49, - 0xc7, 0xe0, 0xc4, 0xea, 0x1b, 0xf3, 0x53, 0x67, 0x89, 0x3c, 0x27, 0xf1, 0xf1, 0x20, 0x79, 0x4c, - 0x8e, 0x92, 0x5e, 0x67, 0x23, 0x8c, 0x1b, 0xf8, 0x67, 0x08, 0xfa, 0xdc, 0xc3, 0x7b, 0x38, 0xda, - 0x90, 0x5f, 0x22, 0x15, 0x16, 0x9c, 0x89, 0x79, 0x8e, 0x88, 0xd9, 0x20, 0x3c, 0xc8, 0xe6, 0x42, - 0x26, 0xeb, 0x7b, 0x08, 0xb0, 0xbf, 0x31, 0x83, 0xa3, 0x8f, 0x31, 0x25, 0x66, 0xa2, 0xa0, 0x30, - 0xb9, 0x1f, 0x24, 0x72, 0x37, 0x72, 0x68, 0x52, 0xb7, 0x8a, 0x46, 0x26, 0xbd, 0xee, 0xbd, 0x95, - 0xd8, 0xc0, 0xb5, 0x93, 0xac, 0x7c, 0x0c, 0x05, 0xb7, 0x36, 0xb6, 0x92, 0x38, 0x13, 0x15, 0x8d, - 0xad, 0x23, 0x45, 0xd6, 0x31, 0x89, 0x27, 0x9a, 0xae, 0x83, 0x7a, 0xee, 0xef, 0x10, 0x0c, 0x4b, - 0x9b, 0x53, 0xb8, 0xa5, 0x39, 0x82, 0xc4, 0xe9, 0x88, 0x58, 0x4c, 0xec, 0x87, 0x89, 0xd8, 0xf7, - 0xe3, 0xb3, 0x41, 0x62, 0xf3, 0x26, 0x58, 0x90, 0x05, 0x7e, 0x8b, 0x60, 0x34, 0xf0, 0xa6, 0x17, - 0xb7, 0x7c, 0x39, 0x9c, 0xb8, 0xbf, 0x05, 0x4c, 0xb6, 0xa6, 0x69, 0xb2, 0xa6, 0xe3, 0xf8, 0x58, - 0x98, 0x35, 0x51, 0x6b, 0xbc, 0xa1, 0xc0, 0x89, 0x28, 0x97, 0x6e, 0x78, 0x2b, 0xaf, 0xee, 0x12, - 0x57, 0xb6, 0x86, 0x18, 0x5b, 0xfe, 0x65, 0xb2, 0xfc, 0x47, 0xf1, 0x85, 0x16, 0x4d, 0xca, 0x13, - 0x2c, 0x69, 0x41, 0xbe, 0xac, 0xc0, 0xa0, 0x44, 0x0a, 0xdc, 0xc2, 0x35, 0x55, 0x62, 0x36, 0x12, - 0x0e, 0x5b, 0xcd, 0xb7, 0xe9, 0xe6, 0xfe, 0x1b, 0x08, 0x9f, 0x6e, 0x52, 0x10, 0xe4, 0xab, 0x59, - 0xba, 0x8c, 0x17, 0xee, 0x5c, 0x11, 0xbc, 0x04, 0xfe, 0x1a, 0xc1, 0xfe, 0x80, 0xbb, 0x0a, 0xdc, - 0xe2, 0xe5, 0x46, 0xe2, 0x6c, 0x64, 0x3c, 0xa6, 0x9a, 0x34, 0xd1, 0xcc, 0x31, 0x7c, 0xb4, 0xb9, - 0x62, 0xd8, 0x8e, 0x0e, 0x41, 0x97, 0x73, 0x95, 0x11, 0x5c, 0x2d, 0xbd, 0x17, 0x23, 0xc1, 0xd5, - 0xd2, 0x77, 0x2f, 0xd2, 0x7c, 0x8b, 0x59, 0x2b, 0x3b, 0xb4, 0xf8, 0x58, 0x1b, 0xf8, 0x27, 0x08, - 0xfa, 0x3d, 0xbd, 0x5b, 0x1c, 0xb1, 0xc9, 0x9b, 0x48, 0x87, 0x86, 0x0f, 0x9b, 0xa9, 0x59, 0x63, - 0x84, 0x9f, 0x5a, 0x5f, 0xab, 0xed, 0x31, 0x38, 0x2d, 0x1c, 0xba, 0xdd, 0xda, 0x60, 0x8f, 0xe1, - 0x6d, 0x0d, 0x37, 0xb7, 0x24, 0x17, 0x69, 0x9d, 0x14, 0xf0, 0x0d, 0xfc, 0xb6, 0xa8, 0x38, 0xda, - 0x77, 0xc4, 0x11, 0x1b, 0x94, 0x21, 0x14, 0xe7, 0x6e, 0xb0, 0x36, 0xcf, 0xab, 0x5c, 0xca, 0x72, - 0x29, 0x97, 0x5e, 0x2f, 0x97, 0x72, 0x1b, 0xf8, 0x97, 0x62, 0x27, 0x9c, 0xb7, 0xe3, 0x70, 0xe4, - 0xce, 0x5d, 0x62, 0x3a, 0x02, 0x46, 0xd8, 0x0d, 0x11, 0x97, 0xd6, 0xbb, 0x01, 0xc7, 0x3f, 0x40, - 0xd0, 0xeb, 0xea, 0x74, 0xe1, 0x48, 0x0d, 0xb1, 0xc4, 0xc9, 0x90, 0xd0, 0x61, 0x43, 0x86, 0x37, - 0xea, 0x48, 0x0c, 0xbf, 0x85, 0xa0, 0x5b, 0xe8, 0x5a, 0x05, 0x1f, 0x16, 0xfd, 0x1d, 0xb4, 0xe0, - 0xc3, 0xa2, 0xa4, 0x0d, 0xa6, 0x3e, 0x40, 0xc4, 0x3a, 0x8d, 0x67, 0x03, 0x23, 0x99, 0x22, 0x91, - 0xc7, 0x75, 0x57, 0x67, 0x6e, 0x03, 0xbf, 0x8f, 0x60, 0x50, 0xd2, 0xf6, 0xc2, 0x67, 0x1b, 0xb6, - 0x95, 0x82, 0x7b, 0x6b, 0x89, 0x73, 0xd1, 0x11, 0xc3, 0xee, 0xdf, 0x0b, 0x86, 0x4d, 0xda, 0x6f, - 0xb4, 0xfb, 0x96, 0x5e, 0xcf, 0x65, 0x37, 0xe6, 0xbf, 0xf2, 0xe1, 0xad, 0x31, 0xf4, 0xd1, 0xad, - 0x31, 0xf4, 0xb7, 0x5b, 0x63, 0xe8, 0xd5, 0xcd, 0xb1, 0x5d, 0x1f, 0x6d, 0x8e, 0xed, 0xfa, 0xf3, - 0xe6, 0xd8, 0x2e, 0x18, 0xcd, 0x99, 0x01, 0xa2, 0x5c, 0x43, 0x4b, 0xa7, 0x56, 0x72, 0xf6, 0xb3, - 0xe5, 0xeb, 0xa9, 0x8c, 0x99, 0x17, 0xb8, 0x9d, 0xcc, 0x99, 0x22, 0xef, 0x17, 0xea, 0xdc, 0xed, - 0xb5, 0xa2, 0x61, 0x5d, 0xdf, 0x43, 0xfe, 0x67, 0xd4, 0xec, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, - 0x51, 0x24, 0xd9, 0x67, 0x72, 0x4b, 0x00, 0x00, + 0x42, 0x71, 0x91, 0x2a, 0xf1, 0x03, 0x4b, 0x15, 0x09, 0xbe, 0xd0, 0xde, 0xc7, 0xec, 0x9d, 0xd7, + 0xee, 0xcc, 0xc4, 0x1b, 0x19, 0xff, 0x79, 0x76, 0xce, 0xeb, 0x9e, 0xe7, 0xbd, 0xe7, 0x9e, 0x31, + 0x28, 0xa5, 0xb2, 0x71, 0x53, 0x2f, 0x6a, 0xc5, 0xac, 0x9e, 0x29, 0xe8, 0x96, 0x96, 0xd3, 0x2c, + 0x2d, 0x73, 0x73, 0x3a, 0xf3, 0x5c, 0x45, 0x2f, 0xaf, 0xa5, 0x4b, 0x65, 0xc3, 0x32, 0xf0, 0x48, + 0x03, 0x26, 0xcd, 0x61, 0xd2, 0x37, 0xa7, 0x53, 0x43, 0x2b, 0xc6, 0x8a, 0x41, 0x40, 0x32, 0xf5, + 0xbf, 0x28, 0x74, 0x6a, 0x2a, 0x6b, 0x98, 0x05, 0xc3, 0xcc, 0x5c, 0xd7, 0x4c, 0x9d, 0x92, 0xc9, + 0xdc, 0x9c, 0xbe, 0xae, 0x5b, 0xda, 0x74, 0xa6, 0xa4, 0xad, 0xe4, 0x8b, 0x9a, 0x95, 0x37, 0x8a, + 0x0c, 0xf6, 0xe0, 0x8a, 0x61, 0xac, 0xac, 0xea, 0x19, 0xad, 0x94, 0xcf, 0x68, 0xc5, 0xa2, 0x61, + 0x91, 0x97, 0x26, 0x7b, 0x7b, 0x24, 0x40, 0x36, 0x5b, 0x06, 0x0a, 0x16, 0xb4, 0x04, 0x33, 0x6b, + 0x94, 0x74, 0x2e, 0x54, 0x10, 0x4c, 0x49, 0xcf, 0xe6, 0x6f, 0xe4, 0xb3, 0xa2, 0x50, 0x93, 0x01, + 0xb0, 0xc6, 0xf5, 0x2f, 0xeb, 0x59, 0xcb, 0xb4, 0x8c, 0x32, 0xa3, 0xaa, 0x7c, 0x09, 0xf0, 0x13, + 0xf5, 0x05, 0x5e, 0xd3, 0xca, 0x5a, 0xc1, 0x54, 0xf5, 0xe7, 0x2a, 0xba, 0x69, 0xe1, 0x0b, 0xd0, + 0x9f, 0x2f, 0x66, 0x57, 0x2b, 0x39, 0x7d, 0xb9, 0x4c, 0x7f, 0x4a, 0x5e, 0x1f, 0x47, 0x93, 0x7b, + 0xe7, 0x53, 0xb5, 0xaa, 0x3c, 0xb2, 0xa6, 0x15, 0x56, 0xcf, 0x2b, 0x2e, 0x00, 0x45, 0xed, 0x63, + 0xbf, 0x30, 0x22, 0xca, 0xf7, 0x11, 0x0c, 0x3a, 0x68, 0x9b, 0x25, 0xa3, 0x68, 0xea, 0xf8, 0x41, + 0xd8, 0x53, 0x22, 0xbf, 0x24, 0xd1, 0x38, 0x9a, 0xec, 0x9e, 0x19, 0x4b, 0xfb, 0x1b, 0x27, 0x4d, + 0xf1, 0xe6, 0x77, 0x7f, 0x58, 0x95, 0x77, 0xa9, 0x0c, 0x07, 0x3f, 0x02, 0x9d, 0xa2, 0x48, 0xdd, + 0x33, 0x53, 0x41, 0xe8, 0xde, 0x75, 0xa9, 0x1c, 0x55, 0xf9, 0x7d, 0x02, 0x7a, 0x16, 0xeb, 0xca, + 0xe5, 0x2b, 0x4e, 0xc3, 0x5e, 0xa2, 0xec, 0xe5, 0x7c, 0x8e, 0x88, 0xd5, 0x35, 0x3f, 0x58, 0xab, + 0xca, 0xfd, 0x74, 0xa9, 0xfc, 0x8d, 0xa2, 0x76, 0x92, 0x3f, 0x17, 0x72, 0xf8, 0x3c, 0xf4, 0x98, + 0xba, 0x69, 0xe6, 0x8d, 0xe2, 0xb2, 0x96, 0xcb, 0x95, 0x93, 0x12, 0xc1, 0xd9, 0x5f, 0xab, 0xca, + 0x83, 0x0c, 0x47, 0x78, 0xab, 0xa8, 0xdd, 0xec, 0x71, 0x2e, 0x97, 0x2b, 0xe3, 0xb3, 0xd0, 0x5d, + 0xd6, 0xb3, 0x46, 0x39, 0x47, 0x51, 0x13, 0x04, 0x75, 0xa4, 0x56, 0x95, 0x31, 0x45, 0x15, 0x5e, + 0x2a, 0x2a, 0xd0, 0x27, 0x82, 0x78, 0x11, 0x06, 0xb8, 0xd6, 0x19, 0x3d, 0x33, 0x09, 0xc4, 0x2e, + 0x07, 0x6a, 0x55, 0x79, 0xbf, 0xd3, 0x2e, 0x1c, 0x42, 0x51, 0xb9, 0x2d, 0x17, 0xd9, 0x2f, 0x4e, + 0xf3, 0xd6, 0xa9, 0x9b, 0xc9, 0xee, 0x60, 0xf3, 0x12, 0x00, 0xd1, 0xbc, 0xe4, 0x07, 0x3c, 0x0f, + 0xfd, 0xfa, 0x0b, 0x14, 0x26, 0x9f, 0x5b, 0xce, 0x17, 0x6f, 0x18, 0xc9, 0x1e, 0x37, 0x11, 0x17, + 0x80, 0xa2, 0xf6, 0xb2, 0x5f, 0x16, 0x72, 0x0b, 0xc5, 0x1b, 0xc6, 0xd6, 0xf8, 0xd9, 0x1f, 0x24, + 0xe8, 0x65, 0xb6, 0x64, 0x1e, 0x76, 0x1e, 0x3a, 0x88, 0x9d, 0x98, 0x83, 0x1d, 0x0e, 0xf2, 0x10, + 0x82, 0xf5, 0x74, 0x59, 0x2b, 0x95, 0xf4, 0xb2, 0x4a, 0x51, 0xb0, 0x06, 0x7b, 0x6d, 0xdd, 0x4a, + 0xe3, 0x89, 0xc9, 0xee, 0x99, 0x89, 0x40, 0x74, 0x0a, 0xc7, 0x08, 0xcc, 0x1f, 0xaa, 0x55, 0xe5, + 0x51, 0x87, 0xf1, 0xcd, 0x13, 0x46, 0x21, 0x6f, 0xe9, 0x85, 0x92, 0xb5, 0xa6, 0xa8, 0x36, 0x59, + 0xfc, 0x4c, 0xdd, 0x85, 0xa9, 0xda, 0x13, 0x84, 0xc3, 0x91, 0x20, 0x0e, 0x54, 0xd7, 0x9c, 0xc1, + 0xc1, 0x5a, 0x55, 0x4e, 0x8a, 0x2e, 0xe2, 0xa0, 0xcf, 0x69, 0xe2, 0xcf, 0xb9, 0x23, 0xa4, 0xf9, + 0xfa, 0x3d, 0xb1, 0xf1, 0x43, 0x89, 0xc5, 0x06, 0xe3, 0x8b, 0x67, 0x9d, 0xea, 0x3c, 0xd4, 0x9c, + 0x9c, 0xad, 0xc7, 0x5e, 0x1e, 0x36, 0xd4, 0x39, 0x24, 0x82, 0x7c, 0x6f, 0x53, 0x64, 0xea, 0x16, + 0xf3, 0xc9, 0x5a, 0x55, 0x1e, 0x72, 0x86, 0x1e, 0xf3, 0x9f, 0x6e, 0xb3, 0x01, 0x86, 0x4d, 0xc0, + 0xf4, 0x75, 0x3d, 0x05, 0xda, 0x7c, 0x12, 0x84, 0xcf, 0xd1, 0xa6, 0x7c, 0x16, 0x4b, 0x7a, 0x96, + 0xf1, 0x12, 0xad, 0xe6, 0x21, 0xa6, 0xa8, 0xfd, 0xa6, 0x13, 0x5e, 0xd9, 0x44, 0x30, 0x40, 0x68, + 0x98, 0x73, 0xab, 0xab, 0x3c, 0x7b, 0x6c, 0x97, 0x58, 0xc0, 0x17, 0x01, 0x1a, 0x15, 0x2a, 0x99, + 0x25, 0xaa, 0x98, 0x48, 0xd3, 0x72, 0x96, 0xae, 0x97, 0xb3, 0x34, 0xad, 0x8a, 0xac, 0x9c, 0xa5, + 0xaf, 0x69, 0x2b, 0xb6, 0x03, 0x08, 0x98, 0x4a, 0x15, 0xc1, 0x3e, 0x61, 0x95, 0x8d, 0xcc, 0x4d, + 0xd4, 0x51, 0xcf, 0xdc, 0x89, 0xd0, 0x81, 0xc5, 0x70, 0xf0, 0xbc, 0xdb, 0x2f, 0x27, 0x9b, 0xa2, + 0x0b, 0xfa, 0xb5, 0x7d, 0x13, 0x5f, 0xf2, 0x59, 0xdf, 0xd1, 0x96, 0xeb, 0xa3, 0xe2, 0x3b, 0x16, + 0x78, 0x3b, 0x01, 0xfd, 0x3c, 0x1f, 0xc6, 0xad, 0x01, 0xa7, 0x00, 0x78, 0x96, 0xcf, 0xe7, 0x58, + 0x05, 0x18, 0xae, 0x55, 0xe5, 0x7d, 0xce, 0x0a, 0x50, 0xc7, 0xe9, 0x62, 0x0f, 0x0b, 0xb9, 0xf8, + 0xd9, 0xbf, 0x81, 0x58, 0xd4, 0x0a, 0x7a, 0x72, 0x77, 0x00, 0x62, 0xfd, 0xa5, 0x8d, 0xf8, 0xb8, + 0x56, 0xd0, 0xf1, 0x43, 0xd0, 0x6b, 0x17, 0x05, 0x12, 0xc7, 0xb4, 0x66, 0x08, 0x51, 0xe6, 0x78, + 0xad, 0xa8, 0x3d, 0xbc, 0x60, 0x90, 0x48, 0xde, 0x59, 0xd5, 0xe2, 0x23, 0x09, 0x06, 0x1a, 0x86, + 0x67, 0x8e, 0xfd, 0x54, 0x8c, 0x82, 0x21, 0x72, 0x25, 0xc8, 0x62, 0x32, 0x66, 0x49, 0x70, 0x3e, + 0x6e, 0x31, 0xb9, 0x7b, 0xd5, 0x62, 0xce, 0x1d, 0x95, 0x47, 0x5b, 0x48, 0xe8, 0xdd, 0x4c, 0xfd, + 0x4a, 0x82, 0x3e, 0xa7, 0xf8, 0xf8, 0x7e, 0xe8, 0x64, 0x0b, 0x60, 0x2a, 0x95, 0x5b, 0x50, 0x55, + 0x39, 0x3c, 0xce, 0x43, 0x7f, 0x23, 0x72, 0xc4, 0xd2, 0x71, 0xa4, 0x05, 0x09, 0x96, 0xd0, 0x45, + 0xb3, 0x38, 0xe9, 0x28, 0x6a, 0xaf, 0x29, 0x82, 0xe2, 0xaf, 0xc2, 0x70, 0xd6, 0x28, 0x5a, 0x65, + 0x2d, 0x6b, 0xf9, 0xd5, 0x90, 0xc0, 0x9d, 0xe5, 0x05, 0x86, 0x24, 0x94, 0x91, 0xf1, 0x5a, 0x55, + 0x3e, 0x48, 0xb9, 0xfa, 0x92, 0x54, 0x54, 0x9c, 0xf5, 0x60, 0x29, 0x7f, 0x47, 0x80, 0xb9, 0x5a, + 0x77, 0x72, 0x39, 0xf9, 0x14, 0xc1, 0xa0, 0x63, 0x9d, 0x2c, 0xee, 0xc4, 0xf8, 0x40, 0x31, 0xe3, + 0x23, 0xfc, 0x81, 0xc0, 0xab, 0xe9, 0x36, 0x14, 0x96, 0x8f, 0x13, 0xd0, 0xc7, 0x92, 0x1e, 0xd7, + 0xa2, 0x2b, 0xe3, 0xa3, 0xd0, 0x19, 0x5f, 0x2c, 0x48, 0x52, 0xe4, 0x82, 0x94, 0x08, 0x59, 0x90, + 0x30, 0xec, 0x6e, 0x14, 0x14, 0x95, 0xfc, 0x7d, 0xa7, 0x25, 0xc3, 0xef, 0xa0, 0xd2, 0x1d, 0xe3, + 0xa0, 0xb2, 0x6d, 0xaa, 0xc6, 0x1f, 0x25, 0xe8, 0xb7, 0xad, 0xda, 0xe6, 0xa2, 0x71, 0x17, 0x4e, + 0x20, 0x0f, 0xc7, 0xab, 0x29, 0x8d, 0xaa, 0xf1, 0x79, 0x77, 0xd0, 0x4d, 0x34, 0x27, 0xe0, 0x2d, + 0x1a, 0x3f, 0x95, 0xa0, 0xd7, 0x41, 0x1c, 0x9f, 0x81, 0x3d, 0x94, 0x7c, 0xab, 0xbe, 0x00, 0x45, + 0x53, 0x19, 0x34, 0xd6, 0xa1, 0x8f, 0x45, 0x90, 0xb3, 0x5e, 0x1c, 0x6e, 0x8e, 0xcf, 0x12, 0xf7, + 0x68, 0xad, 0x2a, 0x0f, 0x3b, 0xe2, 0xd0, 0x76, 0xa4, 0x9e, 0xb2, 0x00, 0x88, 0x9f, 0x87, 0x41, + 0x06, 0xe0, 0x53, 0x2a, 0x26, 0x9b, 0xf3, 0x12, 0x0a, 0xc5, 0x58, 0xad, 0x2a, 0xa7, 0x1c, 0xfc, + 0x9c, 0x65, 0x62, 0xa0, 0xec, 0xc2, 0x50, 0x3e, 0x41, 0xb0, 0x8f, 0x69, 0x71, 0x27, 0xd7, 0x88, + 0x4d, 0x04, 0x58, 0x5c, 0x26, 0x8b, 0x32, 0xc1, 0x55, 0x51, 0x2c, 0x57, 0xbd, 0xe0, 0x76, 0xd5, + 0x63, 0x2d, 0x5c, 0xb5, 0xad, 0xe5, 0xe1, 0x3d, 0x04, 0x03, 0x57, 0x9f, 0x2f, 0xea, 0x65, 0xf3, + 0xd9, 0x7c, 0x89, 0xab, 0x30, 0x09, 0x9d, 0xf5, 0xe4, 0xaf, 0x9b, 0xb4, 0x25, 0xd6, 0xa5, 0xf2, + 0xc7, 0xed, 0x65, 0xa1, 0xbf, 0x20, 0xd8, 0x27, 0xc8, 0xce, 0x0c, 0x74, 0x16, 0xe8, 0xa1, 0x7c, + 0xb9, 0x52, 0xc9, 0x33, 0x23, 0x39, 0xaa, 0x9b, 0xf0, 0x52, 0x51, 0x81, 0x3c, 0x3d, 0x59, 0x7f, + 0x88, 0x70, 0x1e, 0x74, 0x2b, 0xac, 0x0d, 0x76, 0xf9, 0x0d, 0x82, 0xe1, 0xa7, 0xb4, 0xd5, 0x8a, + 0xfe, 0xff, 0x6a, 0x9c, 0x4d, 0x04, 0x23, 0xee, 0x05, 0xdc, 0xa9, 0x85, 0x2e, 0xb9, 0x2d, 0x74, + 0x32, 0xc8, 0x42, 0xbe, 0xaa, 0x6b, 0x83, 0x99, 0xde, 0x4c, 0xc0, 0xa8, 0xdd, 0xc1, 0xb1, 0xbb, + 0xde, 0x0d, 0x5d, 0x0e, 0x38, 0xba, 0xe1, 0x8d, 0x83, 0xbc, 0xb0, 0xed, 0x70, 0x43, 0x28, 0x6a, + 0xbf, 0xe3, 0xa7, 0x85, 0x1c, 0x7e, 0x1a, 0x46, 0xb8, 0xdd, 0x1c, 0x9b, 0x79, 0xde, 0x6d, 0xbd, + 0xa7, 0x56, 0x95, 0x0f, 0x39, 0xed, 0xeb, 0x84, 0x53, 0xd4, 0x21, 0xf6, 0x42, 0x3c, 0x2a, 0x98, + 0xf8, 0x09, 0x18, 0x72, 0x9e, 0x94, 0x19, 0x59, 0xba, 0x37, 0x92, 0x6b, 0x55, 0xf9, 0x80, 0xdf, + 0x79, 0x9a, 0x13, 0xc5, 0x8e, 0x43, 0x35, 0x25, 0xb9, 0x6d, 0xb6, 0x48, 0xff, 0x48, 0x40, 0xca, + 0xcf, 0x34, 0xcc, 0x09, 0x5f, 0x44, 0x30, 0xd8, 0x68, 0xb0, 0xd9, 0xef, 0x59, 0xad, 0x9f, 0x6e, + 0xd9, 0xae, 0xb3, 0x31, 0xf8, 0x66, 0x47, 0x28, 0xa4, 0x3e, 0x74, 0x15, 0x15, 0x9b, 0x1e, 0x54, + 0xfc, 0x35, 0x04, 0x7d, 0x2e, 0x8b, 0xd2, 0x1d, 0xd6, 0xa9, 0x30, 0x47, 0x3d, 0x8f, 0x08, 0xf7, + 0xd6, 0xaa, 0xb2, 0xec, 0x73, 0xe8, 0x73, 0xec, 0xba, 0x7a, 0xb3, 0x0e, 0x17, 0x78, 0x01, 0x7a, + 0x1c, 0xa6, 0xa7, 0xfb, 0xaf, 0x99, 0xd6, 0xfb, 0x07, 0x0f, 0x77, 0xc1, 0x0b, 0x45, 0x8a, 0x22, + 0xef, 0xee, 0xb2, 0xe0, 0x29, 0x97, 0xdd, 0xd1, 0x1c, 0x41, 0xe9, 0x9e, 0xed, 0xdb, 0x2d, 0xe4, + 0x17, 0x88, 0x7c, 0x2b, 0x77, 0x0d, 0x7a, 0xfd, 0xac, 0x3c, 0x15, 0x81, 0xa1, 0x93, 0x40, 0x40, + 0xaf, 0x57, 0x6a, 0x6f, 0xaf, 0xf7, 0x9f, 0x08, 0x0e, 0x79, 0x45, 0xdb, 0xd1, 0xbb, 0xb0, 0x0f, + 0x24, 0x18, 0x0b, 0x5a, 0x32, 0x8b, 0xe4, 0x6f, 0x22, 0x18, 0xf2, 0x89, 0x38, 0xbe, 0x3f, 0x8b, + 0x11, 0xca, 0x42, 0xe2, 0xf3, 0x23, 0xac, 0xa8, 0x83, 0xde, 0x58, 0x36, 0xf1, 0x55, 0xb7, 0x3f, + 0x9f, 0x0e, 0xcf, 0xb9, 0xbd, 0x9b, 0xbc, 0x0f, 0x24, 0x38, 0xe8, 0x9b, 0x38, 0xb6, 0xba, 0x50, + 0x05, 0xd5, 0x13, 0xd8, 0x01, 0xf5, 0xe4, 0x8d, 0x04, 0x1c, 0x0a, 0x50, 0x22, 0x73, 0xc4, 0x57, + 0x10, 0x8c, 0x38, 0xf2, 0xae, 0x3b, 0xdf, 0xc4, 0xcb, 0xea, 0x42, 0x5e, 0xf5, 0xa7, 0xae, 0xa8, + 0xc3, 0x59, 0x3f, 0x02, 0xf8, 0x75, 0x04, 0xc3, 0x82, 0x86, 0x85, 0xd0, 0x88, 0x9f, 0xe5, 0xa7, + 0x6a, 0x55, 0x79, 0xc2, 0x93, 0xe5, 0x1b, 0xa4, 0xc5, 0x74, 0x3f, 0x54, 0xf6, 0xd2, 0x31, 0xf1, + 0xe3, 0xee, 0x38, 0x89, 0xa6, 0x16, 0x4f, 0xea, 0xff, 0x0c, 0x05, 0x78, 0x37, 0xcf, 0xfe, 0x8b, + 0xfe, 0xd9, 0xff, 0x64, 0x34, 0xb6, 0xae, 0x02, 0x10, 0xd8, 0xab, 0x95, 0xee, 0x52, 0xaf, 0xf6, + 0xdf, 0x08, 0xc6, 0x7d, 0x25, 0xdd, 0xd1, 0xf5, 0xe0, 0x4f, 0x12, 0xdc, 0xd3, 0x64, 0xd5, 0x2c, + 0x12, 0x5f, 0x43, 0xb0, 0xdf, 0x3f, 0x56, 0x78, 0x55, 0x88, 0x17, 0x8a, 0x4a, 0xad, 0x2a, 0x8f, + 0x35, 0x0b, 0x45, 0x53, 0x51, 0x47, 0x7c, 0x63, 0xd1, 0xc4, 0xaa, 0xdb, 0xed, 0xcf, 0x45, 0x12, + 0xa1, 0xbd, 0x15, 0xe2, 0x25, 0x09, 0x66, 0x7d, 0x82, 0xde, 0xbc, 0x68, 0x94, 0xef, 0x4a, 0xe1, + 0xd8, 0x36, 0x59, 0xfe, 0x3f, 0x09, 0x38, 0x15, 0x4d, 0x11, 0xcc, 0xe5, 0xbe, 0x15, 0x98, 0x6b, + 0x51, 0xec, 0x5c, 0x2b, 0x24, 0x06, 0x5f, 0xd2, 0x41, 0x19, 0xf6, 0x06, 0x1c, 0xf0, 0x77, 0x4f, + 0x72, 0xa8, 0x66, 0xad, 0xfb, 0x89, 0x5a, 0x55, 0x56, 0x9a, 0xf9, 0x32, 0x01, 0x56, 0xd4, 0x51, + 0x5f, 0x7f, 0xae, 0x1f, 0xc8, 0x9b, 0xf0, 0x11, 0xae, 0x92, 0x5b, 0xf3, 0xa1, 0x17, 0x0d, 0xfe, + 0x7c, 0xc8, 0xbd, 0x83, 0xee, 0x0e, 0x9d, 0xcb, 0x11, 0x94, 0xd9, 0xca, 0x87, 0x1b, 0x85, 0xe4, + 0xeb, 0x12, 0xa4, 0x7c, 0x08, 0x6c, 0xb5, 0xaf, 0xf3, 0xfb, 0x0d, 0x49, 0xb8, 0xdf, 0xd8, 0x36, + 0xfe, 0xff, 0x19, 0x82, 0x03, 0xbe, 0x3a, 0x60, 0x6e, 0xfe, 0x12, 0x82, 0x21, 0x3f, 0x5f, 0x64, + 0x35, 0x35, 0x8e, 0x97, 0x0b, 0xdb, 0x42, 0x3f, 0xca, 0x8a, 0x3a, 0xe8, 0xe3, 0xe4, 0xf8, 0x8a, + 0xdb, 0x27, 0xa2, 0xb0, 0xf6, 0x98, 0xfe, 0x53, 0xe4, 0x6b, 0x7a, 0xbe, 0x83, 0x78, 0xc2, 0x7f, + 0x07, 0x71, 0x3c, 0x0a, 0x4b, 0xd7, 0xfe, 0x21, 0xa0, 0x7d, 0x2f, 0xb5, 0xbd, 0x7d, 0xff, 0x2f, + 0x04, 0x63, 0x7e, 0x61, 0xb2, 0x93, 0x77, 0x0d, 0x1f, 0x4a, 0x20, 0x07, 0xae, 0x79, 0x1b, 0x26, + 0xf0, 0x6b, 0x6e, 0xe7, 0x3e, 0x13, 0x25, 0xe1, 0xb5, 0x75, 0xa7, 0x30, 0x09, 0x03, 0x97, 0x74, + 0x6b, 0x7e, 0xad, 0x9e, 0x98, 0xb9, 0x99, 0x86, 0xa0, 0xa3, 0x9e, 0xc3, 0x59, 0x2b, 0x57, 0xa5, + 0x0f, 0xca, 0xbb, 0x1d, 0xb0, 0x4f, 0x00, 0x65, 0x6a, 0x56, 0x5d, 0x33, 0x5b, 0xcd, 0xa7, 0xf7, + 0x1c, 0xa9, 0x95, 0xa0, 0x89, 0xe7, 0x0b, 0x3e, 0xc9, 0xb5, 0xe4, 0xb9, 0xa1, 0x6c, 0x35, 0xde, + 0x11, 0xfe, 0x6a, 0xf2, 0x29, 0xf7, 0xd5, 0x64, 0x8b, 0x6b, 0xc0, 0xb0, 0x73, 0x2e, 0x05, 0xde, + 0x04, 0xa7, 0x27, 0xe4, 0xdd, 0x84, 0x76, 0x84, 0x86, 0x94, 0xe8, 0x5b, 0x02, 0x21, 0x91, 0x17, + 0xd8, 0x5d, 0x0a, 0x13, 0xaf, 0x79, 0x1a, 0x8d, 0x1d, 0x84, 0x63, 0xb4, 0x43, 0x50, 0xac, 0x0e, + 0xe3, 0x73, 0xae, 0x0e, 0xe3, 0x1e, 0xc2, 0x38, 0x4a, 0xee, 0x8c, 0xdc, 0x5a, 0x7c, 0x00, 0xba, + 0x8a, 0x86, 0xb5, 0x7c, 0xc3, 0xa8, 0x14, 0x73, 0xc9, 0x4e, 0x72, 0xbf, 0x20, 0x24, 0x4a, 0xfb, + 0x95, 0xc3, 0xe2, 0x45, 0xc3, 0xba, 0x58, 0xff, 0x51, 0x79, 0x06, 0x46, 0xae, 0x2e, 0x5e, 0x31, + 0xb2, 0x9a, 0x65, 0x94, 0xdb, 0x30, 0x86, 0xfe, 0x0e, 0x82, 0xfd, 0x1e, 0xfa, 0x2c, 0x38, 0x1e, + 0x75, 0x8d, 0xa2, 0x07, 0x76, 0x12, 0x5d, 0x04, 0x5c, 0x33, 0xe9, 0x5f, 0x70, 0xa7, 0x8f, 0x74, + 0x48, 0x3a, 0x9e, 0xba, 0x58, 0x80, 0x01, 0x1b, 0x44, 0x88, 0x76, 0xe3, 0xf9, 0xa2, 0xce, 0x06, + 0x47, 0x54, 0xfa, 0xb0, 0x35, 0xba, 0xf9, 0x11, 0x82, 0x7d, 0x02, 0x3f, 0xa6, 0x95, 0x47, 0xa0, + 0x73, 0x95, 0xfe, 0xd4, 0xaa, 0x6f, 0x7b, 0x95, 0x7c, 0x4f, 0xb0, 0x68, 0x19, 0x65, 0x9d, 0x13, + 0xe1, 0xa8, 0x51, 0xae, 0xf7, 0x5c, 0x2b, 0x16, 0x26, 0xcb, 0x90, 0xe0, 0x1b, 0xe6, 0xfc, 0xda, + 0x93, 0xea, 0x02, 0xd7, 0xca, 0x00, 0x24, 0x2a, 0xe5, 0x3c, 0xd3, 0x49, 0xfd, 0xcf, 0xed, 0x55, + 0x01, 0xff, 0x2b, 0x7a, 0x1d, 0x97, 0x9c, 0xe9, 0xf7, 0x0a, 0xec, 0x65, 0x4a, 0xe2, 0x49, 0x39, + 0x82, 0x82, 0x99, 0xeb, 0xd9, 0x14, 0xe2, 0x38, 0x9f, 0x43, 0x93, 0x6d, 0xa8, 0x59, 0xdf, 0x41, + 0x90, 0x14, 0x99, 0xdd, 0xd1, 0x97, 0x16, 0x5b, 0xe2, 0xe8, 0xef, 0x22, 0x18, 0xf5, 0x91, 0xa8, + 0x2d, 0x06, 0xf9, 0xa2, 0xdb, 0x20, 0xf7, 0x85, 0x31, 0x88, 0xff, 0x2c, 0xfe, 0x5b, 0x08, 0x86, + 0xae, 0x2e, 0xce, 0xad, 0xae, 0x72, 0xc0, 0xad, 0x4c, 0x8d, 0x5b, 0xe6, 0xec, 0xb7, 0x11, 0x0c, + 0xbb, 0xa4, 0x6c, 0x8b, 0x66, 0x2f, 0xba, 0x35, 0x7b, 0x22, 0x58, 0xb3, 0x5e, 0x9d, 0xb5, 0xc1, + 0xd1, 0x75, 0xc0, 0x73, 0xd9, 0xac, 0x51, 0x29, 0x5a, 0x8f, 0x68, 0x96, 0xc6, 0xd5, 0x7a, 0x15, + 0x7a, 0xb9, 0x2c, 0x8d, 0x89, 0xbf, 0x9e, 0xf9, 0xa9, 0xfa, 0x6a, 0xfe, 0x5a, 0x95, 0xfb, 0x1f, + 0x63, 0x2f, 0xe7, 0xe8, 0x1c, 0x81, 0x9f, 0xf7, 0xf7, 0x14, 0x04, 0x18, 0xe5, 0x38, 0x0c, 0x3a, + 0xd8, 0x30, 0xe5, 0x0e, 0x41, 0xc7, 0x4d, 0x6d, 0xb5, 0xa2, 0xf3, 0xc2, 0x40, 0x1e, 0x94, 0x69, + 0x90, 0xc9, 0x97, 0x4f, 0xc4, 0xa1, 0x1e, 0xd7, 0xad, 0x39, 0xd3, 0xd4, 0x2d, 0x72, 0x3f, 0x6f, + 0x3b, 0x4f, 0x1f, 0x48, 0x3c, 0xf8, 0x54, 0x29, 0x9f, 0x53, 0xd6, 0x60, 0x3c, 0x18, 0x85, 0x31, + 0x7b, 0x12, 0x06, 0x8a, 0xba, 0xb5, 0xac, 0xd5, 0x5f, 0x2d, 0x13, 0x4e, 0x2d, 0x07, 0x72, 0x1c, + 0x94, 0x98, 0x31, 0xfb, 0x8a, 0x0e, 0xf2, 0x33, 0xef, 0x4f, 0x40, 0x07, 0xe1, 0x5d, 0x3f, 0x0f, + 0xec, 0xa1, 0x55, 0x11, 0x47, 0xf8, 0xa4, 0x2b, 0x75, 0x3c, 0x14, 0x2c, 0x5d, 0x84, 0x32, 0xf1, + 0xe2, 0xc7, 0x9f, 0xbc, 0x2e, 0x8d, 0xe3, 0xb1, 0x4c, 0xc0, 0x07, 0x72, 0xac, 0xa0, 0xdf, 0x46, + 0xd0, 0x41, 0x27, 0x19, 0x43, 0x7d, 0x3b, 0x93, 0x3a, 0xd2, 0x02, 0x8a, 0xb1, 0xff, 0x31, 0x22, + 0xfc, 0xdf, 0x44, 0x4b, 0x67, 0xf0, 0xa9, 0x20, 0x11, 0xd8, 0x4e, 0x38, 0xb3, 0x2e, 0x7e, 0x41, + 0xb6, 0x41, 0x3f, 0x05, 0x5c, 0x3a, 0x85, 0x67, 0x82, 0xf0, 0xe8, 0x7e, 0x2c, 0xb3, 0x2e, 0x4c, + 0x93, 0x32, 0x2c, 0x3c, 0x99, 0x69, 0xf6, 0x7d, 0x61, 0x66, 0x9d, 0xfb, 0xdd, 0x06, 0x7e, 0x19, + 0x41, 0x97, 0xfd, 0xf5, 0x05, 0x0e, 0xfd, 0x81, 0x46, 0xea, 0x58, 0x08, 0x48, 0xa6, 0x84, 0x29, + 0xa2, 0x83, 0xc3, 0x58, 0x69, 0x2a, 0x94, 0x99, 0xd1, 0x56, 0x57, 0xf1, 0xcb, 0x09, 0xd8, 0x6b, + 0x0f, 0x83, 0x86, 0x1d, 0x4c, 0x4f, 0x4d, 0xb6, 0x06, 0x64, 0xb2, 0xfc, 0x5c, 0x22, 0xc2, 0xbc, + 0x2d, 0x2d, 0xcd, 0xe2, 0xe9, 0xb0, 0x4a, 0xe2, 0x16, 0x32, 0x97, 0x1e, 0xc6, 0x0f, 0x45, 0x45, + 0x6a, 0x98, 0x35, 0x9f, 0xdb, 0x68, 0xe6, 0x06, 0xfe, 0xe6, 0xa4, 0xb8, 0x4b, 0x97, 0xf0, 0xa3, + 0xa1, 0x19, 0xbb, 0x08, 0x15, 0xb5, 0x82, 0x6e, 0x13, 0xc2, 0x27, 0x42, 0x7b, 0x61, 0xdd, 0x3b, + 0xbe, 0x8b, 0xa0, 0x5b, 0x18, 0xa2, 0xc6, 0x11, 0x26, 0xad, 0x83, 0xe3, 0xd4, 0x67, 0x2e, 0x5c, + 0x39, 0x41, 0xcc, 0x32, 0x81, 0x0f, 0xb7, 0x10, 0x8f, 0x7a, 0xc9, 0x2b, 0xbb, 0xa1, 0x93, 0x7f, + 0x67, 0x12, 0x72, 0x0e, 0x35, 0x75, 0xb4, 0x25, 0x1c, 0x13, 0xe5, 0x17, 0x09, 0x22, 0xcb, 0x3b, + 0x89, 0xa5, 0x19, 0x7c, 0x5f, 0x44, 0xa5, 0x9b, 0x4b, 0xe7, 0xf0, 0x99, 0xc8, 0x86, 0x22, 0x16, + 0x8a, 0x64, 0x62, 0x3f, 0x63, 0xd9, 0x22, 0x3c, 0x86, 0x2f, 0x6f, 0x05, 0x21, 0x2e, 0x57, 0x94, + 0xcc, 0x25, 0x8a, 0xf1, 0x20, 0x3e, 0x1f, 0x03, 0x8f, 0x71, 0x0d, 0xf6, 0x53, 0xbf, 0x30, 0xc1, + 0xaf, 0x22, 0x80, 0xc6, 0x30, 0x27, 0x0e, 0x3f, 0xf0, 0x99, 0x9a, 0x0a, 0x03, 0xca, 0x3c, 0xe3, + 0x38, 0x71, 0x8c, 0x23, 0xf8, 0xde, 0xe6, 0xb2, 0x51, 0x1f, 0xfd, 0x1e, 0x82, 0x2e, 0x7b, 0x3e, + 0x0e, 0x87, 0x9e, 0x74, 0x0c, 0x4e, 0xac, 0x9e, 0x31, 0x3f, 0x65, 0x96, 0xc8, 0x73, 0x12, 0x1f, + 0x0f, 0x92, 0xc7, 0xe0, 0x28, 0x99, 0x75, 0x36, 0xc2, 0xb8, 0x81, 0x7f, 0x86, 0xa0, 0xcf, 0x39, + 0xbc, 0x87, 0xa3, 0x0d, 0xf9, 0xa5, 0xd2, 0x61, 0xc1, 0x99, 0x98, 0xe7, 0x88, 0x98, 0x4d, 0x82, + 0x89, 0x6c, 0x2e, 0xfc, 0x64, 0x7d, 0x0f, 0x01, 0xf6, 0x36, 0x66, 0x70, 0xf4, 0x31, 0xa6, 0xd4, + 0x4c, 0x14, 0x14, 0x26, 0xf7, 0x83, 0x44, 0xee, 0x66, 0xee, 0x4f, 0xea, 0x56, 0x49, 0xcf, 0x66, + 0xd6, 0xdd, 0xb7, 0x12, 0x1b, 0xb8, 0x7e, 0x92, 0xf5, 0x1f, 0x43, 0xc1, 0xf1, 0xc6, 0x56, 0x52, + 0x67, 0xa2, 0xa2, 0xb1, 0x75, 0xa4, 0xc9, 0x3a, 0x26, 0xf1, 0x44, 0xcb, 0x75, 0x50, 0xcf, 0xfd, + 0x1d, 0x82, 0x61, 0xdf, 0xe6, 0x14, 0x8e, 0x35, 0x47, 0x90, 0x3a, 0x1d, 0x11, 0x8b, 0x89, 0xfd, + 0x30, 0x11, 0xfb, 0x7e, 0x7c, 0x36, 0x48, 0x6c, 0xde, 0x04, 0x0b, 0xb2, 0xc0, 0x6f, 0x11, 0x8c, + 0x06, 0xde, 0xf4, 0xe2, 0xd8, 0x97, 0xc3, 0xa9, 0xfb, 0x63, 0x60, 0xb2, 0x35, 0x4d, 0x93, 0x35, + 0x1d, 0xc7, 0xc7, 0xc2, 0xac, 0x89, 0x5a, 0xe3, 0x0d, 0x09, 0x4e, 0x44, 0xb9, 0x74, 0xc3, 0x5b, + 0x79, 0x75, 0x97, 0xba, 0xb2, 0x35, 0xc4, 0xd8, 0xf2, 0x2f, 0x93, 0xe5, 0x3f, 0x8a, 0x2f, 0xc4, + 0x34, 0x29, 0x4f, 0xb0, 0xa4, 0x05, 0xf9, 0xb2, 0x04, 0x83, 0x3e, 0x52, 0xe0, 0x18, 0xd7, 0x54, + 0xa9, 0xd9, 0x48, 0x38, 0x6c, 0x35, 0xdf, 0xa6, 0x9b, 0xfb, 0x6f, 0xa0, 0xa5, 0xcb, 0x78, 0xe1, + 0xce, 0x57, 0xc4, 0x2b, 0xdf, 0xe9, 0x16, 0xd5, 0x25, 0xc0, 0xdb, 0x7f, 0x8d, 0x60, 0x7f, 0xc0, + 0x5d, 0x05, 0x8e, 0x79, 0xb9, 0x91, 0x3a, 0x1b, 0x19, 0x8f, 0xa9, 0x26, 0x43, 0x34, 0x73, 0x0c, + 0x1f, 0x6d, 0xbd, 0x16, 0xb6, 0xa3, 0x43, 0xd0, 0x65, 0x5f, 0x65, 0x04, 0x57, 0x4b, 0xf7, 0xc5, + 0x48, 0x70, 0xb5, 0xf4, 0xdc, 0x8b, 0xb4, 0xde, 0x62, 0xd6, 0xcb, 0x0e, 0x2d, 0x3e, 0xe6, 0x06, + 0xfe, 0x09, 0x82, 0x7e, 0x57, 0xef, 0x16, 0x47, 0x6c, 0xf2, 0xa6, 0x32, 0xa1, 0xe1, 0xc3, 0x66, + 0x6a, 0xd6, 0x18, 0xe1, 0xa7, 0xd6, 0xd7, 0xea, 0x7b, 0x0c, 0x4e, 0x0b, 0x87, 0x6e, 0xb7, 0x36, + 0xd9, 0x63, 0xb8, 0x5b, 0xc3, 0xad, 0x2d, 0xc9, 0x45, 0x5a, 0x27, 0x05, 0x7c, 0x03, 0xbf, 0x2d, + 0x2a, 0x8e, 0xf6, 0x1d, 0x71, 0xc4, 0x06, 0x65, 0x08, 0xc5, 0x39, 0x1b, 0xac, 0xad, 0xf3, 0x2a, + 0x97, 0xb2, 0x52, 0xce, 0x67, 0xd6, 0x2b, 0xe5, 0xfc, 0x06, 0xfe, 0xa5, 0xd8, 0x09, 0xe7, 0xed, + 0x38, 0x1c, 0xb9, 0x73, 0x97, 0x9a, 0x8e, 0x80, 0x11, 0x76, 0x43, 0xc4, 0xa5, 0xf5, 0x9c, 0xd6, + 0x7f, 0x80, 0xa0, 0xd7, 0xd1, 0xe9, 0xc2, 0x91, 0x1a, 0x62, 0xa9, 0x93, 0x21, 0xa1, 0xc3, 0x86, + 0x0c, 0x6f, 0xd4, 0x91, 0x18, 0x7e, 0x0b, 0x41, 0xb7, 0xd0, 0xb5, 0x0a, 0x3e, 0x2c, 0x7a, 0x3b, + 0x68, 0xc1, 0x87, 0x45, 0x9f, 0x36, 0x98, 0xf2, 0x00, 0x11, 0xeb, 0x34, 0x9e, 0x0d, 0x8c, 0x64, + 0x8a, 0x44, 0x1e, 0xd7, 0x1d, 0x9d, 0xb9, 0x0d, 0xfc, 0x3e, 0x82, 0x41, 0x9f, 0xb6, 0x17, 0x3e, + 0xdb, 0xb4, 0xad, 0x14, 0xdc, 0x5b, 0x4b, 0x9d, 0x8b, 0x8e, 0x18, 0x76, 0xff, 0x5e, 0xd4, 0x2d, + 0xd2, 0x7e, 0xa3, 0xdd, 0xb7, 0xcc, 0x7a, 0x3e, 0xb7, 0x31, 0xff, 0x95, 0x0f, 0x6f, 0x8d, 0xa1, + 0x8f, 0x6e, 0x8d, 0xa1, 0xbf, 0xdd, 0x1a, 0x43, 0xaf, 0x6e, 0x8e, 0xed, 0xfa, 0x68, 0x73, 0x6c, + 0xd7, 0x9f, 0x37, 0xc7, 0x76, 0xc1, 0x68, 0xde, 0x08, 0x10, 0xe5, 0x1a, 0x5a, 0x3a, 0xb5, 0x92, + 0xb7, 0x9e, 0xad, 0x5c, 0x4f, 0x67, 0x8d, 0x82, 0xc0, 0xed, 0x64, 0xde, 0x10, 0x79, 0xbf, 0xd0, + 0xe0, 0x6e, 0xad, 0x95, 0x74, 0xf3, 0xfa, 0x1e, 0xf2, 0x3f, 0xa3, 0x66, 0xff, 0x17, 0x00, 0x00, + 0xff, 0xff, 0xd7, 0xbb, 0xd4, 0x62, 0x72, 0x4b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/metadata/types/query.pb.gw.go b/x/metadata/types/query.pb.gw.go index e1404613e9..4c880d4d25 100644 --- a/x/metadata/types/query.pb.gw.go +++ b/x/metadata/types/query.pb.gw.go @@ -3332,6 +3332,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_ScopeNetAssetValues_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -3339,6 +3341,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_ScopeNetAssetValues_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/metadata/types/scope.pb.go b/x/metadata/types/scope.pb.go index 4c7f8d5e5a..ab690ab5c7 100644 --- a/x/metadata/types/scope.pb.go +++ b/x/metadata/types/scope.pb.go @@ -5,10 +5,10 @@ package types import ( fmt "fmt" + types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" - types "github.com/cosmos/cosmos-sdk/types" _ "google.golang.org/protobuf/types/descriptorpb" _ "google.golang.org/protobuf/types/known/timestamppb" io "io" diff --git a/x/msgfees/keeper/keeper.go b/x/msgfees/keeper/keeper.go index 8fffbc026b..3a04a640f6 100644 --- a/x/msgfees/keeper/keeper.go +++ b/x/msgfees/keeper/keeper.go @@ -22,9 +22,7 @@ import ( const StoreKey = types.ModuleName -// TODO[1760]: event-history: Put this back once our version of the SDK is back in with the updated baseapp.Simulate func. -// type baseAppSimulateFunc func(txBytes []byte) (sdk.GasInfo, *sdk.Result, sdk.Context, error) -type baseAppSimulateFunc func(txBytes []byte) (sdk.GasInfo, *sdk.Result, error) +type baseAppSimulateFunc func(txBytes []byte) (sdk.GasInfo, *sdk.Result, sdk.Context, error) // Keeper of the Additional fee store type Keeper struct { diff --git a/x/msgfees/keeper/query_server.go b/x/msgfees/keeper/query_server.go index a7464eee99..d7cabed70c 100644 --- a/x/msgfees/keeper/query_server.go +++ b/x/msgfees/keeper/query_server.go @@ -2,15 +2,16 @@ package keeper import ( "context" - "errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "cosmossdk.io/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/provenance-io/provenance/internal/antewrapper" "github.com/provenance-io/provenance/x/msgfees/types" ) @@ -52,38 +53,34 @@ func (k Keeper) QueryAllMsgFees(c context.Context, req *types.QueryAllMsgFeesReq } func (k Keeper) CalculateTxFees(goCtx context.Context, request *types.CalculateTxFeesRequest) (*types.CalculateTxFeesResponse, error) { - // TODO[1760]: event-history: Put this back once our version of the SDK is back in with the updated baseapp.Simulate func. - /* - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := sdk.UnwrapSDKContext(goCtx) - gasInfo, _, txCtx, err := k.simulateFunc(request.TxBytes) - if err != nil { - return nil, sdkerrors.ErrInvalidRequest.Wrap(err.Error()) - } + gasInfo, _, txCtx, err := k.simulateFunc(request.TxBytes) + if err != nil { + return nil, sdkerrors.ErrInvalidRequest.Wrap(err.Error()) + } - gasMeter, err := antewrapper.GetFeeGasMeter(txCtx) - if err != nil { - return nil, err - } - // based on Carlton H's comment this is only for testing, has no real value in practical usage. - baseDenom := k.defaultFeeDenom - if request.DefaultBaseDenom != "" { - baseDenom = request.DefaultBaseDenom - } + gasMeter, err := antewrapper.GetFeeGasMeter(txCtx) + if err != nil { + return nil, err + } + // based on Carlton H's comment this is only for testing, has no real value in practical usage. + baseDenom := k.defaultFeeDenom + if request.DefaultBaseDenom != "" { + baseDenom = request.DefaultBaseDenom + } - minGasPrice := k.GetFloorGasPrice(ctx) - gasAdjustment := request.GasAdjustment - if gasAdjustment <= 0 { - gasAdjustment = 1.0 - } - gasUsed := int64(float64(gasInfo.GasUsed) * float64(gasAdjustment)) - totalFees := gasMeter.FeeConsumed().Add(sdk.NewCoin(baseDenom, minGasPrice.Amount.MulRaw(gasUsed))) - - return &types.CalculateTxFeesResponse{ - AdditionalFees: gasMeter.FeeConsumed(), - TotalFees: totalFees, - EstimatedGas: uint64(gasUsed), - }, nil - */ - return nil, errors.New("not yet updated") + minGasPrice := k.GetFloorGasPrice(ctx) + gasAdjustment := request.GasAdjustment + if gasAdjustment <= 0 { + gasAdjustment = 1.0 + } + gasUsed := int64(float64(gasInfo.GasUsed) * float64(gasAdjustment)) + totalFees := gasMeter.FeeConsumed().Add(sdk.NewCoin(baseDenom, minGasPrice.Amount.MulRaw(gasUsed))) + + return &types.CalculateTxFeesResponse{ + AdditionalFees: gasMeter.FeeConsumed(), + TotalFees: totalFees, + EstimatedGas: uint64(gasUsed), + }, nil } diff --git a/x/msgfees/types/tx.pb.go b/x/msgfees/types/tx.pb.go index 9d111c665f..f1df6e9645 100644 --- a/x/msgfees/types/tx.pb.go +++ b/x/msgfees/types/tx.pb.go @@ -654,59 +654,59 @@ func init() { func init() { proto.RegisterFile("provenance/msgfees/v1/tx.proto", fileDescriptor_4c6bb65eaf858b5f) } var fileDescriptor_4c6bb65eaf858b5f = []byte{ - // 824 bytes of a gzipped FileDescriptorProto + // 829 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x56, 0x41, 0x6b, 0x1b, 0x47, - 0x14, 0xd6, 0xc8, 0xaa, 0xc1, 0x53, 0xd7, 0xe0, 0x41, 0x6e, 0x65, 0xd5, 0xdd, 0x55, 0x75, 0x68, + 0x14, 0xd6, 0xc8, 0xaa, 0xc1, 0xd3, 0xd6, 0xe0, 0x41, 0x6e, 0x65, 0xd5, 0xdd, 0x55, 0x75, 0x68, 0x6d, 0x17, 0xed, 0x5a, 0x96, 0xeb, 0x82, 0xa1, 0x05, 0xcb, 0xc5, 0xd0, 0x83, 0x8a, 0x50, 0xeb, 0x4b, 0x2f, 0xcb, 0x4a, 0x3b, 0x5e, 0x0d, 0xd5, 0xce, 0x6c, 0xf7, 0xad, 0x84, 0x05, 0x85, 0x42, - 0xa1, 0x50, 0x28, 0x94, 0x1c, 0x73, 0x09, 0xf1, 0x35, 0x3e, 0xe5, 0x90, 0x1f, 0xe1, 0xa3, 0xc9, - 0x21, 0xe4, 0xe4, 0x38, 0xf6, 0x21, 0xb9, 0xe4, 0x92, 0x5f, 0x10, 0x76, 0x77, 0x22, 0xd9, 0x96, - 0xb4, 0x8a, 0x1c, 0x9f, 0x72, 0xd2, 0x8c, 0xde, 0xf7, 0xde, 0xfb, 0xde, 0xf7, 0xe6, 0xcd, 0x2c, - 0x56, 0x5c, 0x4f, 0x74, 0x28, 0x37, 0x79, 0x83, 0xea, 0x0e, 0xd8, 0xfb, 0x94, 0x82, 0xde, 0x29, - 0xea, 0xfe, 0x81, 0xe6, 0x7a, 0xc2, 0x17, 0x64, 0xa1, 0x6f, 0xd7, 0xa4, 0x5d, 0xeb, 0x14, 0xb3, - 0x69, 0x5b, 0xd8, 0x22, 0x44, 0xe8, 0xc1, 0x2a, 0x02, 0x67, 0x17, 0x1b, 0x02, 0x1c, 0x01, 0x46, - 0x64, 0x88, 0x36, 0xd2, 0xa4, 0x44, 0x3b, 0xbd, 0x6e, 0x02, 0xd5, 0x3b, 0xc5, 0x3a, 0xf5, 0xcd, - 0xa2, 0xde, 0x10, 0x8c, 0x4b, 0xfb, 0x67, 0xd2, 0xee, 0x80, 0x1d, 0xe4, 0x77, 0xc0, 0x8e, 0x0c, - 0xf9, 0xe7, 0x08, 0x2f, 0x55, 0xc0, 0xde, 0x06, 0xa0, 0x00, 0x3b, 0x6d, 0xf0, 0x85, 0x53, 0x01, - 0x7b, 0x97, 0xd2, 0x1a, 0xfd, 0xa3, 0x4d, 0xc1, 0x27, 0x04, 0xa7, 0xb8, 0xe9, 0xd0, 0x0c, 0xca, - 0xa1, 0xe5, 0x99, 0x5a, 0xb8, 0x26, 0xdf, 0xe1, 0x69, 0xd3, 0x11, 0x6d, 0xee, 0x67, 0x92, 0x39, - 0xb4, 0xfc, 0xf1, 0xfa, 0xa2, 0x26, 0xc9, 0x04, 0xe9, 0x35, 0x99, 0x5e, 0xdb, 0x11, 0x8c, 0x97, - 0x53, 0xc7, 0xa7, 0x6a, 0xa2, 0x26, 0xe1, 0x64, 0x09, 0xcf, 0x78, 0xb4, 0xc1, 0x5c, 0x46, 0xb9, - 0x9f, 0x99, 0x0a, 0x23, 0xf6, 0xff, 0x08, 0x52, 0xed, 0x7b, 0xc2, 0xc9, 0xa4, 0xa2, 0x54, 0xc1, - 0x9a, 0x6c, 0xe0, 0x4f, 0x7b, 0x00, 0xa3, 0x6e, 0x02, 0x03, 0xc3, 0x15, 0x8c, 0xfb, 0x90, 0xf9, - 0x28, 0x44, 0xa5, 0x7b, 0xd6, 0x72, 0x60, 0xac, 0x86, 0xb6, 0xad, 0xd9, 0x7f, 0x0f, 0xd5, 0xc4, - 0xdd, 0x43, 0x15, 0xbd, 0x3c, 0x54, 0x13, 0x79, 0x15, 0x7f, 0x31, 0xa2, 0x44, 0x70, 0x05, 0x07, - 0x9a, 0x7f, 0x95, 0xc4, 0x9f, 0x07, 0x08, 0xcb, 0x8a, 0x0c, 0x55, 0x4f, 0xb8, 0x02, 0xcc, 0xd6, - 0x5b, 0x0d, 0x72, 0x78, 0xd6, 0x01, 0xdb, 0xf0, 0xbb, 0x2e, 0x35, 0xda, 0x5e, 0x4b, 0x6a, 0x81, - 0x1d, 0xb0, 0x7f, 0xed, 0xba, 0x74, 0xcf, 0x6b, 0x91, 0xff, 0x10, 0x9e, 0x33, 0x2d, 0x8b, 0xf9, - 0x4c, 0x70, 0xb3, 0x65, 0xec, 0x53, 0x3a, 0x5e, 0x9a, 0x9f, 0x02, 0x69, 0x5e, 0x9f, 0xaa, 0x0b, - 0x5d, 0xd3, 0x69, 0x6d, 0xe5, 0xaf, 0xba, 0xe7, 0x8f, 0x9e, 0xa9, 0xcb, 0x36, 0xf3, 0x9b, 0xed, - 0xba, 0xd6, 0x10, 0x8e, 0xec, 0xb6, 0xfc, 0x29, 0x80, 0xf5, 0xbb, 0x1e, 0xb0, 0x81, 0x30, 0x12, - 0xd4, 0x3e, 0xe9, 0x3b, 0xef, 0x52, 0x3a, 0x46, 0xe6, 0xd1, 0x92, 0xa6, 0x46, 0x4b, 0x4a, 0x36, - 0xf1, 0x8c, 0xd9, 0xf6, 0x9b, 0xc2, 0x63, 0x7e, 0x37, 0xd2, 0xbe, 0x9c, 0x79, 0xfc, 0xa8, 0x90, - 0x96, 0xe5, 0x6d, 0x5b, 0x96, 0x47, 0x01, 0x7e, 0xf1, 0x3d, 0xc6, 0xed, 0x5a, 0x1f, 0xba, 0x45, - 0x82, 0x36, 0xfc, 0xfd, 0xe2, 0xe1, 0x6a, 0xff, 0xbf, 0xbc, 0x12, 0x9d, 0xb9, 0x41, 0xb9, 0x65, - 0x3f, 0x9e, 0x24, 0xb1, 0x52, 0x01, 0x7b, 0xcf, 0xb5, 0x4c, 0x9f, 0xde, 0xb4, 0x25, 0xde, 0xe4, - 0x1d, 0x59, 0x0b, 0x3a, 0xf2, 0x21, 0x0b, 0xff, 0x25, 0x56, 0x47, 0xea, 0x2a, 0xb5, 0xff, 0x1f, - 0x85, 0xda, 0xd7, 0xa8, 0x23, 0x3a, 0x37, 0xd6, 0xfe, 0x0a, 0xe7, 0xe4, 0x6d, 0x70, 0x1e, 0xce, - 0x47, 0x72, 0xbe, 0x8f, 0xf0, 0x57, 0xbd, 0xba, 0x7e, 0x6e, 0x9a, 0xd0, 0xac, 0x52, 0x6f, 0x0f, - 0xac, 0x0a, 0x6b, 0x5d, 0xe7, 0xbe, 0x82, 0xe7, 0x79, 0x00, 0x30, 0x5c, 0xea, 0x19, 0x6d, 0xb0, - 0x0c, 0x87, 0x45, 0x05, 0xa4, 0x6a, 0x73, 0xfc, 0x8a, 0xe7, 0xad, 0x16, 0xb1, 0x82, 0xbf, 0x1e, - 0x4b, 0x50, 0x16, 0x73, 0x84, 0xf0, 0x6a, 0x0f, 0xbb, 0x23, 0x78, 0x87, 0x7a, 0xc0, 0x04, 0xdf, - 0xa5, 0xf4, 0x47, 0xca, 0x85, 0x73, 0xbd, 0xa0, 0x35, 0x9c, 0x6e, 0xf4, 0x40, 0xc1, 0x31, 0x37, - 0xac, 0x00, 0x26, 0x9b, 0x42, 0x1a, 0x03, 0x01, 0x6e, 0xb5, 0xae, 0x02, 0xfe, 0xe6, 0x9d, 0xb8, - 0x46, 0xb5, 0xad, 0x9f, 0x4d, 0xe3, 0xa9, 0x0a, 0xd8, 0xe4, 0x2f, 0x4c, 0x06, 0xaf, 0x63, 0x52, - 0xd2, 0x86, 0xbe, 0x86, 0x5a, 0xdc, 0xfb, 0x94, 0xdd, 0x98, 0xcc, 0x29, 0x22, 0x42, 0xfe, 0xc4, - 0xf3, 0x03, 0xd7, 0x0f, 0x59, 0x8f, 0x09, 0x35, 0xe2, 0x69, 0xc8, 0x96, 0x26, 0xf2, 0x91, 0xd9, - 0xff, 0x41, 0x38, 0x3d, 0x6c, 0x08, 0xc9, 0xb7, 0xa3, 0xa3, 0xc5, 0x5c, 0x86, 0xd9, 0xcd, 0x49, - 0xdd, 0x2e, 0xf1, 0x18, 0x36, 0x58, 0x71, 0x3c, 0x62, 0x2e, 0x86, 0x38, 0x1e, 0x71, 0xf3, 0x4b, - 0xee, 0x21, 0xbc, 0x14, 0x37, 0x1b, 0xe4, 0xfb, 0x71, 0x05, 0xc6, 0x0e, 0x7d, 0xf6, 0x87, 0x9b, - 0xba, 0x4b, 0x7e, 0x0f, 0x10, 0xce, 0x8d, 0x3b, 0xe3, 0x64, 0x7b, 0x5c, 0x92, 0xb1, 0xb3, 0x9c, - 0x2d, 0xbf, 0x4f, 0x88, 0x88, 0x6b, 0x99, 0x1d, 0x9f, 0x2b, 0xe8, 0xe4, 0x5c, 0x41, 0x67, 0xe7, - 0x0a, 0xba, 0x73, 0xa1, 0x24, 0x4e, 0x2e, 0x94, 0xc4, 0xd3, 0x0b, 0x25, 0x81, 0x33, 0x4c, 0x0c, - 0x8f, 0x5f, 0x45, 0xbf, 0x95, 0x2e, 0xbd, 0x78, 0x7d, 0x4c, 0x81, 0x89, 0x4b, 0x3b, 0xfd, 0xa0, - 0xf7, 0x09, 0x1b, 0x3e, 0x81, 0xf5, 0xe9, 0xf0, 0x13, 0xb2, 0xf4, 0x26, 0x00, 0x00, 0xff, 0xff, - 0xf2, 0x44, 0x96, 0x7b, 0xe5, 0x0a, 0x00, 0x00, + 0xa1, 0x10, 0x08, 0x84, 0x1c, 0x73, 0x09, 0xf1, 0x35, 0x3e, 0xe5, 0x90, 0x1f, 0xe1, 0xa3, 0xc9, + 0x21, 0xe4, 0xe4, 0x18, 0xfb, 0x90, 0x10, 0xc8, 0x25, 0xbf, 0x20, 0xec, 0xee, 0x44, 0xb2, 0x2d, + 0x69, 0x15, 0x39, 0x3e, 0xe5, 0xa4, 0x19, 0xbd, 0xef, 0xbd, 0xf7, 0xbd, 0xef, 0xcd, 0x9b, 0x59, + 0xac, 0xb8, 0x9e, 0xe8, 0x50, 0x6e, 0xf2, 0x06, 0xd5, 0x1d, 0xb0, 0xf7, 0x28, 0x05, 0xbd, 0x53, + 0xd4, 0xfd, 0x7d, 0xcd, 0xf5, 0x84, 0x2f, 0xc8, 0x7c, 0xdf, 0xae, 0x49, 0xbb, 0xd6, 0x29, 0x66, + 0xd3, 0xb6, 0xb0, 0x45, 0x88, 0xd0, 0x83, 0x55, 0x04, 0xce, 0x2e, 0x34, 0x04, 0x38, 0x02, 0x8c, + 0xc8, 0x10, 0x6d, 0xa4, 0x49, 0x89, 0x76, 0x7a, 0xdd, 0x04, 0xaa, 0x77, 0x8a, 0x75, 0xea, 0x9b, + 0x45, 0xbd, 0x21, 0x18, 0x97, 0xf6, 0x2f, 0xa5, 0xdd, 0x01, 0x3b, 0xc8, 0xef, 0x80, 0x1d, 0x19, + 0xf2, 0xaf, 0x10, 0x5e, 0xac, 0x80, 0xbd, 0x05, 0x40, 0x01, 0xb6, 0xdb, 0xe0, 0x0b, 0xa7, 0x02, + 0xf6, 0x0e, 0xa5, 0x35, 0xfa, 0x77, 0x9b, 0x82, 0x4f, 0x08, 0x4e, 0x71, 0xd3, 0xa1, 0x19, 0x94, + 0x43, 0x4b, 0x33, 0xb5, 0x70, 0x4d, 0x7e, 0xc4, 0xd3, 0xa6, 0x23, 0xda, 0xdc, 0xcf, 0x24, 0x73, + 0x68, 0xe9, 0xd3, 0xb5, 0x05, 0x4d, 0x92, 0x09, 0xd2, 0x6b, 0x32, 0xbd, 0xb6, 0x2d, 0x18, 0x2f, + 0xa7, 0x8e, 0x4e, 0xd4, 0x44, 0x4d, 0xc2, 0xc9, 0x22, 0x9e, 0xf1, 0x68, 0x83, 0xb9, 0x8c, 0x72, + 0x3f, 0x33, 0x15, 0x46, 0xec, 0xff, 0x11, 0xa4, 0xda, 0xf3, 0x84, 0x93, 0x49, 0x45, 0xa9, 0x82, + 0x35, 0x59, 0xc7, 0x5f, 0xf4, 0x00, 0x46, 0xdd, 0x04, 0x06, 0x86, 0x2b, 0x18, 0xf7, 0x21, 0xf3, + 0x49, 0x88, 0x4a, 0xf7, 0xac, 0xe5, 0xc0, 0x58, 0x0d, 0x6d, 0x9b, 0xf3, 0xb7, 0x0e, 0xd4, 0xc4, + 0xbd, 0x03, 0x15, 0xbd, 0x3c, 0x50, 0x13, 0xff, 0xbd, 0x78, 0xb4, 0x12, 0x06, 0xcb, 0xab, 0xf8, + 0xeb, 0x11, 0xb5, 0x82, 0x2b, 0x38, 0xd0, 0xfc, 0xeb, 0x24, 0xfe, 0x2a, 0x40, 0x58, 0x56, 0x64, + 0xa8, 0x7a, 0xc2, 0x15, 0x60, 0xb6, 0xde, 0x89, 0x91, 0xc3, 0x9f, 0x39, 0x60, 0x1b, 0x7e, 0xd7, + 0xa5, 0x46, 0xdb, 0x6b, 0x49, 0x51, 0xb0, 0x03, 0xf6, 0x1f, 0x5d, 0x97, 0xee, 0x7a, 0x2d, 0x72, + 0x1b, 0xe1, 0x59, 0xd3, 0xb2, 0x98, 0xcf, 0x04, 0x37, 0x5b, 0xc6, 0x1e, 0xa5, 0xe3, 0x35, 0xfa, + 0x35, 0xd0, 0xe8, 0xcd, 0x89, 0x3a, 0xdf, 0x35, 0x9d, 0xd6, 0x66, 0xfe, 0xb2, 0x7b, 0xfe, 0xf0, + 0xb9, 0xba, 0x64, 0x33, 0xbf, 0xd9, 0xae, 0x6b, 0x0d, 0xe1, 0xc8, 0xb6, 0xcb, 0x9f, 0x02, 0x58, + 0x7f, 0xe9, 0x01, 0x1b, 0x08, 0x23, 0x41, 0xed, 0xf3, 0xbe, 0xf3, 0x0e, 0xa5, 0x63, 0xf4, 0x1e, + 0xad, 0x6d, 0x6a, 0xb4, 0xb6, 0x64, 0x03, 0xcf, 0x98, 0x6d, 0xbf, 0x29, 0x3c, 0xe6, 0x77, 0xa3, + 0x26, 0x94, 0x33, 0x4f, 0x1e, 0x17, 0xd2, 0xb2, 0xbc, 0x2d, 0xcb, 0xf2, 0x28, 0xc0, 0xef, 0xbe, + 0xc7, 0xb8, 0x5d, 0xeb, 0x43, 0x37, 0x49, 0xd0, 0x8f, 0xa0, 0x17, 0xfd, 0xff, 0xf2, 0x4a, 0x74, + 0xf8, 0x06, 0xe5, 0x96, 0xfd, 0x78, 0x9a, 0xc4, 0x4a, 0x05, 0xec, 0x5d, 0xd7, 0x32, 0x7d, 0x7a, + 0xdd, 0x96, 0x78, 0x93, 0x77, 0x64, 0x35, 0xe8, 0xc8, 0xc7, 0x2c, 0xfc, 0x37, 0x58, 0x1d, 0xa9, + 0xab, 0xd4, 0xfe, 0x0e, 0x0a, 0xb5, 0xaf, 0x51, 0x47, 0x74, 0xae, 0xad, 0xfd, 0x25, 0xce, 0xc9, + 0x9b, 0xe0, 0x3c, 0x9c, 0x8f, 0xe4, 0xfc, 0x00, 0xe1, 0x6f, 0x7b, 0x75, 0xfd, 0xd6, 0x34, 0xa1, + 0x59, 0xa5, 0xde, 0x2e, 0x58, 0x15, 0xd6, 0xba, 0xca, 0x7d, 0x19, 0xcf, 0xf1, 0x00, 0x60, 0xb8, + 0xd4, 0x33, 0xda, 0x60, 0x19, 0x0e, 0x8b, 0x0a, 0x48, 0xd5, 0x66, 0xf9, 0x25, 0xcf, 0x1b, 0x2d, + 0x62, 0x19, 0x7f, 0x37, 0x96, 0xa0, 0x2c, 0xe6, 0x10, 0xe1, 0x95, 0x1e, 0x76, 0x5b, 0xf0, 0x0e, + 0xf5, 0x80, 0x09, 0xbe, 0x43, 0xe9, 0x2f, 0x94, 0x0b, 0xe7, 0x6a, 0x41, 0xab, 0x38, 0xdd, 0xe8, + 0x81, 0x82, 0x63, 0x6e, 0x58, 0x01, 0x4c, 0x36, 0x85, 0x34, 0x06, 0x02, 0xdc, 0x68, 0x5d, 0x05, + 0xfc, 0xfd, 0x7b, 0x71, 0x8d, 0x6a, 0x5b, 0x3b, 0x9d, 0xc6, 0x53, 0x15, 0xb0, 0xc9, 0xbf, 0x98, + 0x0c, 0x5e, 0xc7, 0xa4, 0xa4, 0x0d, 0x7d, 0x16, 0xb5, 0xb8, 0x87, 0x2a, 0xbb, 0x3e, 0x99, 0x53, + 0x44, 0x84, 0xfc, 0x83, 0xe7, 0x06, 0xae, 0x1f, 0xb2, 0x16, 0x13, 0x6a, 0xc4, 0xd3, 0x90, 0x2d, + 0x4d, 0xe4, 0x23, 0xb3, 0xff, 0x8f, 0x70, 0x7a, 0xd8, 0x10, 0x92, 0x1f, 0x46, 0x47, 0x8b, 0xb9, + 0x0c, 0xb3, 0x1b, 0x93, 0xba, 0x5d, 0xe0, 0x31, 0x6c, 0xb0, 0xe2, 0x78, 0xc4, 0x5c, 0x0c, 0x71, + 0x3c, 0xe2, 0xe6, 0x97, 0xdc, 0x47, 0x78, 0x31, 0x6e, 0x36, 0xc8, 0x4f, 0xe3, 0x0a, 0x8c, 0x1d, + 0xfa, 0xec, 0xcf, 0xd7, 0x75, 0x97, 0xfc, 0x1e, 0x22, 0x9c, 0x1b, 0x77, 0xc6, 0xc9, 0xd6, 0xb8, + 0x24, 0x63, 0x67, 0x39, 0x5b, 0xfe, 0x90, 0x10, 0x11, 0xd7, 0x32, 0x3b, 0x3a, 0x53, 0xd0, 0xf1, + 0x99, 0x82, 0x4e, 0xcf, 0x14, 0x74, 0xf7, 0x5c, 0x49, 0x1c, 0x9f, 0x2b, 0x89, 0x67, 0xe7, 0x4a, + 0x02, 0x67, 0x98, 0x18, 0x1e, 0xbf, 0x8a, 0xfe, 0x2c, 0x5d, 0x78, 0xf1, 0xfa, 0x98, 0x02, 0x13, + 0x17, 0x76, 0xfa, 0x7e, 0xef, 0x5b, 0x36, 0x7c, 0x02, 0xeb, 0xd3, 0xe1, 0xb7, 0x64, 0xe9, 0x6d, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xbb, 0xf3, 0xbe, 0xee, 0x0a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/name/simulation/operations_test.go b/x/name/simulation/operations_test.go index 096627df5a..2e97795fce 100644 --- a/x/name/simulation/operations_test.go +++ b/x/name/simulation/operations_test.go @@ -74,9 +74,9 @@ func (s *SimTestSuite) TestWeightedOperations() { opMsgRoute string opMsgName string }{ - {simappparams.DefaultWeightMsgBindName, sdk.MsgTypeURL(&types.MsgBindNameRequest{}), sdk.MsgTypeURL(&types.MsgBindNameRequest{})}, - {simappparams.DefaultWeightMsgDeleteName, sdk.MsgTypeURL(&types.MsgDeleteNameRequest{}), sdk.MsgTypeURL(&types.MsgDeleteNameRequest{})}, - {simappparams.DefaultWeightMsgModifyName, sdk.MsgTypeURL(&types.MsgModifyNameRequest{}), sdk.MsgTypeURL(&types.MsgModifyNameRequest{})}, + {weight: simappparams.DefaultWeightMsgBindName, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgBindNameRequest{})}, + {weight: simappparams.DefaultWeightMsgDeleteName, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgDeleteNameRequest{})}, + {weight: simappparams.DefaultWeightMsgModifyName, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgModifyNameRequest{})}, } expNames := make([]string, len(expected)) @@ -116,9 +116,6 @@ func (s *SimTestSuite) TestSimulateMsgBindName() { name := "provenance" s.LogIfError(s.app.NameKeeper.SetNameRecord(s.ctx, name, accounts[0].Address, false), "SetNameRecord(%q)", name) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgBindName(s.app.NameKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -126,13 +123,13 @@ func (s *SimTestSuite) TestSimulateMsgBindName() { s.LogOperationMsg(operationMsg) var msg types.MsgBindNameRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r", msg.Record.Address, "msg.Record.Address") s.Assert().Equal("cosmos1tnh2q55v8wyygtt9srz5safamzdengsnqeycj3", msg.Parent.Address, "msg.Parent.Address") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -150,9 +147,6 @@ func (s *SimTestSuite) TestSimulateMsgDeleteName() { name := "deleteme.deletemeroot" s.LogIfError(s.app.NameKeeper.SetNameRecord(s.ctx, name, accounts[0].Address, false), "SetNameRecord(%q)", name) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgDeleteName(s.app.NameKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -160,13 +154,13 @@ func (s *SimTestSuite) TestSimulateMsgDeleteName() { s.LogOperationMsg(operationMsg) var msg types.MsgDeleteNameRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal("cosmos1tnh2q55v8wyygtt9srz5safamzdengsnqeycj3", msg.Record.Address, "msg.Record.Address") s.Assert().Equal(name, msg.Record.Name, "msg.Record.Name") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -182,9 +176,6 @@ func (s *SimTestSuite) TestSimulateMsgModifyName() { name := "modifyme" s.LogIfError(s.app.NameKeeper.SetNameRecord(s.ctx, name, accounts[0].Address, false), "SetNameRecord(%q)", name) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgModifyName(s.app.NameKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -192,13 +183,13 @@ func (s *SimTestSuite) TestSimulateMsgModifyName() { s.LogOperationMsg(operationMsg) var msg types.MsgModifyNameRequest - s.Require().NoError(types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal("cosmos1tnh2q55v8wyygtt9srz5safamzdengsnqeycj3", msg.Record.Address, "msg.Record.Address") s.Assert().Equal(name, msg.Record.Name, "msg.Record.Name") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } diff --git a/x/name/types/name.pb.go b/x/name/types/name.pb.go index 18830b2731..9aac9e5670 100644 --- a/x/name/types/name.pb.go +++ b/x/name/types/name.pb.go @@ -5,6 +5,8 @@ package types import ( fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -402,36 +404,40 @@ func init() { func init() { proto.RegisterFile("provenance/name/v1/name.proto", fileDescriptor_a314256905bb00ec) } var fileDescriptor_a314256905bb00ec = []byte{ - // 461 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x93, 0x31, 0x6f, 0xd3, 0x40, - 0x14, 0xc7, 0x7d, 0x6d, 0x52, 0x9a, 0x07, 0xa5, 0xd5, 0x29, 0x54, 0x16, 0x12, 0x6e, 0x94, 0x01, - 0x75, 0x80, 0x98, 0x8a, 0x05, 0x31, 0x16, 0xb1, 0x55, 0x28, 0x32, 0xea, 0xc2, 0x80, 0x7b, 0xb1, - 0x9f, 0x5c, 0x4b, 0xf6, 0x9d, 0x75, 0x77, 0x71, 0xc3, 0x37, 0x60, 0x64, 0x64, 0xec, 0xc8, 0x27, - 0x41, 0x8c, 0x1d, 0x19, 0x51, 0xb2, 0xf0, 0x31, 0xd0, 0x3d, 0x37, 0x8d, 0x1b, 0x06, 0x16, 0x3a, - 0xf9, 0xde, 0x7b, 0xff, 0xf7, 0xfe, 0xbf, 0x67, 0xe9, 0xc1, 0x93, 0x4a, 0xab, 0x1a, 0xa5, 0x90, - 0x09, 0x86, 0x52, 0x94, 0x18, 0xd6, 0x47, 0xf4, 0x1d, 0x55, 0x5a, 0x59, 0xc5, 0xf9, 0xaa, 0x3c, - 0xa2, 0x74, 0x7d, 0xf4, 0xb8, 0x9f, 0xa9, 0x4c, 0x51, 0x39, 0x74, 0xaf, 0x46, 0x39, 0xfc, 0xce, - 0x60, 0x6b, 0x2c, 0xb4, 0x28, 0x0d, 0x7f, 0x06, 0xbc, 0x14, 0xb3, 0xd8, 0x60, 0x56, 0xa2, 0xb4, - 0x71, 0x81, 0x32, 0xb3, 0xe7, 0x3e, 0x1b, 0xb0, 0xc3, 0x9d, 0x68, 0xaf, 0x14, 0xb3, 0xf7, 0x4d, - 0xe1, 0x84, 0xf2, 0xa4, 0xce, 0xe5, 0xba, 0x7a, 0xe3, 0x5a, 0x9d, 0xcb, 0xdb, 0xea, 0xa7, 0xb0, - 0xeb, 0x66, 0x3b, 0x96, 0xb8, 0xc0, 0x1a, 0x0b, 0xe3, 0x6f, 0x92, 0x74, 0xa7, 0x14, 0xb3, 0x77, - 0xa2, 0xc4, 0x13, 0x4a, 0xf2, 0x57, 0xe0, 0x8b, 0xa2, 0x50, 0x17, 0xf1, 0x54, 0x6a, 0x34, 0x56, - 0xe7, 0x89, 0xc5, 0x94, 0xda, 0x8c, 0xdf, 0x19, 0xb0, 0xc3, 0xed, 0x68, 0x9f, 0xea, 0xa7, 0xad, - 0xb2, 0x6b, 0x37, 0xc3, 0x33, 0x00, 0xf7, 0x88, 0x30, 0x51, 0x3a, 0xe5, 0x1c, 0x3a, 0xae, 0x89, - 0xe8, 0x7b, 0x11, 0xbd, 0xb9, 0x0f, 0xf7, 0x44, 0x9a, 0x6a, 0x34, 0x86, 0x30, 0x7b, 0xd1, 0x32, - 0xe4, 0x01, 0xc0, 0x6a, 0x1c, 0x81, 0x6d, 0x47, 0xad, 0xcc, 0xeb, 0xce, 0xd7, 0xcb, 0x03, 0x6f, - 0xf8, 0x8d, 0xc1, 0xfe, 0x1b, 0x8d, 0xc2, 0x62, 0xa4, 0x94, 0x75, 0x66, 0x63, 0xad, 0x2a, 0x65, - 0x44, 0xc1, 0xfb, 0xd0, 0xb5, 0xb9, 0x2d, 0x96, 0x7e, 0x4d, 0xc0, 0x07, 0x70, 0x3f, 0x45, 0x93, - 0xe8, 0xbc, 0xb2, 0xb9, 0x92, 0xd7, 0xa6, 0xed, 0xd4, 0x0d, 0xe6, 0x66, 0x0b, 0xb3, 0x0f, 0x5d, - 0x75, 0x21, 0x51, 0xd3, 0xbe, 0xbd, 0xa8, 0x09, 0xd6, 0x10, 0xbb, 0x7f, 0x21, 0x3e, 0xf8, 0x7c, - 0x79, 0xe0, 0x39, 0xcc, 0xdf, 0x0e, 0xf5, 0x23, 0x3c, 0x7c, 0x5b, 0xa3, 0x24, 0xc8, 0x63, 0x35, - 0x95, 0x69, 0x7b, 0x79, 0x76, 0x7b, 0xf9, 0x25, 0xc3, 0x46, 0x8b, 0xe1, 0x1f, 0x3f, 0x64, 0x78, - 0x06, 0x7b, 0x37, 0xf3, 0x4f, 0xe5, 0xe4, 0x0e, 0x1c, 0x62, 0xd8, 0x5d, 0x39, 0x54, 0xa9, 0xb0, - 0xf8, 0x7f, 0x0d, 0x8e, 0x93, 0x1f, 0xf3, 0x80, 0x5d, 0xcd, 0x03, 0xf6, 0x6b, 0x1e, 0xb0, 0x2f, - 0x8b, 0xc0, 0xbb, 0x5a, 0x04, 0xde, 0xcf, 0x45, 0xe0, 0xc1, 0xa3, 0x9c, 0x8e, 0x63, 0xed, 0x7e, - 0xc6, 0xec, 0xc3, 0x8b, 0x2c, 0xb7, 0xe7, 0xd3, 0xc9, 0x28, 0x51, 0x65, 0xb8, 0x12, 0x3c, 0xcf, - 0x55, 0x2b, 0x0a, 0x67, 0xcd, 0x3d, 0xda, 0x4f, 0x15, 0x9a, 0xc9, 0x16, 0x1d, 0xd9, 0xcb, 0x3f, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x6b, 0xaa, 0xb0, 0xf6, 0xaf, 0x03, 0x00, 0x00, + // 518 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x93, 0xbf, 0x6f, 0x13, 0x3f, + 0x18, 0xc6, 0xcf, 0x6d, 0xd3, 0x6f, 0xe3, 0x2f, 0xa5, 0x91, 0x15, 0xca, 0x51, 0x89, 0x4b, 0x94, + 0x01, 0x55, 0x88, 0xe6, 0x28, 0x2c, 0x88, 0x8d, 0x20, 0xb6, 0x0a, 0x45, 0x57, 0x75, 0x61, 0xe0, + 0x70, 0xee, 0x5e, 0x5d, 0x2d, 0x9d, 0xed, 0x93, 0xed, 0xa4, 0x61, 0x65, 0x40, 0x8c, 0x8c, 0x8c, + 0x19, 0x19, 0x19, 0xf8, 0x1b, 0x10, 0x63, 0xc5, 0xc4, 0x88, 0x92, 0x01, 0xfe, 0x0c, 0x74, 0x76, + 0x7e, 0x1c, 0x61, 0x60, 0x81, 0xe9, 0xfc, 0x3e, 0xcf, 0xe3, 0x7b, 0x3f, 0x7e, 0xa5, 0x17, 0xdf, + 0x2c, 0x94, 0x1c, 0x81, 0xa0, 0x22, 0x81, 0x50, 0x50, 0x0e, 0xe1, 0xe8, 0xd8, 0x7e, 0xbb, 0x85, + 0x92, 0x46, 0x12, 0xb2, 0xb2, 0xbb, 0x56, 0x1e, 0x1d, 0x1f, 0x5c, 0x4f, 0xa4, 0xe6, 0x52, 0x87, + 0x5c, 0x67, 0x65, 0x9a, 0xeb, 0xcc, 0x85, 0x0f, 0x6e, 0x38, 0x23, 0xb6, 0x55, 0xe8, 0x8a, 0xb9, + 0xd5, 0xcc, 0x64, 0x26, 0x9d, 0x5e, 0x9e, 0x9c, 0xda, 0xf9, 0x84, 0xf0, 0x76, 0x9f, 0x2a, 0xca, + 0x35, 0xb9, 0x83, 0x09, 0xa7, 0xe3, 0x58, 0x43, 0xc6, 0x41, 0x98, 0x38, 0x07, 0x91, 0x99, 0x73, + 0x1f, 0xb5, 0xd1, 0xe1, 0x6e, 0xd4, 0xe0, 0x74, 0x7c, 0xea, 0x8c, 0x13, 0xab, 0xdb, 0x34, 0x13, + 0xeb, 0xe9, 0x8d, 0x79, 0x9a, 0x89, 0x5f, 0xd3, 0xb7, 0xf0, 0x5e, 0xf9, 0xef, 0x92, 0x3f, 0xce, + 0x61, 0x04, 0xb9, 0xf6, 0x37, 0x6d, 0x74, 0x97, 0xd3, 0xf1, 0x53, 0xca, 0xe1, 0xc4, 0x8a, 0xe4, + 0x01, 0xf6, 0x69, 0x9e, 0xcb, 0x8b, 0x78, 0x28, 0x14, 0x68, 0xa3, 0x58, 0x62, 0x20, 0xb5, 0xd7, + 0xb4, 0xbf, 0xd5, 0x46, 0x87, 0x3b, 0xd1, 0xbe, 0xf5, 0xcf, 0x2a, 0x76, 0x79, 0x5d, 0x77, 0x5e, + 0x23, 0x8c, 0xcb, 0x53, 0x04, 0x89, 0x54, 0x29, 0x21, 0x78, 0xab, 0xbc, 0x65, 0xf1, 0xeb, 0x91, + 0x3d, 0x93, 0x7b, 0xf8, 0x3f, 0x9a, 0xa6, 0x0a, 0xb4, 0xb6, 0x9c, 0xf5, 0x9e, 0xff, 0xe5, 0xe3, + 0x51, 0x73, 0x3e, 0xa4, 0x47, 0xce, 0x39, 0x35, 0x8a, 0x89, 0x2c, 0x5a, 0x04, 0x49, 0x80, 0xf1, + 0xaa, 0x93, 0x65, 0xde, 0x89, 0x2a, 0xca, 0xc3, 0xc6, 0xbb, 0x49, 0xcb, 0x7b, 0xf5, 0xfd, 0xc3, + 0xed, 0xc5, 0x8d, 0xce, 0x7b, 0x84, 0xf7, 0x1f, 0x2b, 0xa0, 0x06, 0x22, 0x29, 0x4d, 0x89, 0xd4, + 0x57, 0xb2, 0x90, 0x9a, 0xe6, 0xa4, 0x89, 0x6b, 0x86, 0x99, 0x7c, 0x41, 0xe5, 0x0a, 0xd2, 0xc6, + 0xff, 0xa7, 0xa0, 0x13, 0xc5, 0x0a, 0xc3, 0xa4, 0x70, 0x68, 0x51, 0x55, 0x5a, 0x3e, 0x66, 0xb3, + 0xf2, 0x98, 0x26, 0xae, 0xc9, 0x0b, 0x01, 0xca, 0x8e, 0xa5, 0x1e, 0xb9, 0x62, 0x0d, 0xb7, 0xf6, + 0x1b, 0xee, 0x95, 0x37, 0x93, 0x96, 0x57, 0x22, 0xff, 0x98, 0xb4, 0xbc, 0xce, 0x73, 0x7c, 0xf5, + 0xc9, 0x08, 0x84, 0x85, 0xec, 0xc9, 0xa1, 0x48, 0x89, 0xbf, 0x1a, 0x91, 0x63, 0x5c, 0x0e, 0x62, + 0xc1, 0xb0, 0x51, 0x61, 0xf8, 0xc3, 0x70, 0x3a, 0x2f, 0x70, 0x63, 0xf9, 0xff, 0x33, 0x31, 0xf8, + 0x07, 0x1d, 0x62, 0xbc, 0xb7, 0xea, 0x50, 0xa4, 0xd4, 0xc0, 0xdf, 0x6d, 0xd0, 0x4b, 0x3e, 0x4f, + 0x03, 0x74, 0x39, 0x0d, 0xd0, 0xb7, 0x69, 0x80, 0xde, 0xce, 0x02, 0xef, 0x72, 0x16, 0x78, 0x5f, + 0x67, 0x81, 0x87, 0xaf, 0x31, 0xbb, 0x43, 0x6b, 0xab, 0xd9, 0x47, 0xcf, 0xee, 0x66, 0xcc, 0x9c, + 0x0f, 0x07, 0xdd, 0x44, 0xf2, 0x70, 0x15, 0x38, 0x62, 0xb2, 0x52, 0x85, 0x63, 0xb7, 0xea, 0xe6, + 0x65, 0x01, 0x7a, 0xb0, 0x6d, 0x77, 0xf1, 0xfe, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xbe, + 0x0f, 0x18, 0x0a, 0x04, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/name/types/tx.pb.go b/x/name/types/tx.pb.go index 6de399b3f2..9bf52afe9b 100644 --- a/x/name/types/tx.pb.go +++ b/x/name/types/tx.pb.go @@ -388,38 +388,38 @@ func init() { func init() { proto.RegisterFile("provenance/name/v1/tx.proto", fileDescriptor_eacf6cd967218635) } var fileDescriptor_eacf6cd967218635 = []byte{ - // 487 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x31, 0x6f, 0xd3, 0x40, - 0x14, 0xf6, 0x51, 0x54, 0xb5, 0x87, 0xd4, 0xe1, 0x48, 0x54, 0xd7, 0x15, 0x0e, 0xf2, 0x00, 0x05, - 0x11, 0x9b, 0x16, 0xa9, 0x03, 0x62, 0xc1, 0xb0, 0x1a, 0x21, 0xb3, 0x81, 0x04, 0x72, 0xed, 0xe3, - 0x6a, 0x09, 0xfb, 0x99, 0xbb, 0x4b, 0xd4, 0xac, 0x4c, 0x8c, 0x6c, 0x48, 0x15, 0x43, 0x7f, 0x02, - 0x03, 0x3f, 0xa2, 0x63, 0xc5, 0xc4, 0x84, 0x50, 0x32, 0xc0, 0xcf, 0x40, 0xf6, 0x19, 0x9c, 0xc4, - 0xb6, 0x48, 0x14, 0x36, 0x9f, 0xbf, 0xef, 0x7b, 0xdf, 0x77, 0xef, 0x3d, 0x1d, 0xde, 0xcd, 0x38, - 0x0c, 0x69, 0x1a, 0xa4, 0x21, 0x75, 0xd2, 0x20, 0xa1, 0xce, 0x70, 0xdf, 0x91, 0x27, 0x76, 0xc6, - 0x41, 0x02, 0x21, 0x15, 0x68, 0xe7, 0xa0, 0x3d, 0xdc, 0x37, 0x3a, 0x0c, 0x18, 0x14, 0xb0, 0x93, - 0x7f, 0x29, 0xa6, 0xb1, 0x1d, 0x82, 0x48, 0x40, 0x38, 0x89, 0x60, 0x79, 0x85, 0x44, 0xb0, 0x12, - 0xd8, 0x51, 0xc0, 0x2b, 0xa5, 0x50, 0x87, 0x12, 0xba, 0xd6, 0x60, 0x5d, 0xb8, 0x14, 0xb0, 0x75, - 0x8a, 0x30, 0xf1, 0x04, 0x73, 0xe3, 0x34, 0x7a, 0x12, 0x24, 0xd4, 0xa7, 0x6f, 0x07, 0x54, 0x48, - 0xf2, 0x00, 0xaf, 0x67, 0x01, 0xa7, 0xa9, 0xd4, 0xd1, 0x75, 0xb4, 0x77, 0xe5, 0xc0, 0xb4, 0xeb, - 0x21, 0x6d, 0x25, 0x08, 0x81, 0x47, 0xee, 0xe5, 0xf3, 0xef, 0x3d, 0xcd, 0x2f, 0x35, 0xb9, 0x9a, - 0x17, 0xff, 0xf5, 0x4b, 0xcb, 0xa8, 0x95, 0xe6, 0xfe, 0xc6, 0xfb, 0xb3, 0x9e, 0xf6, 0xeb, 0xac, - 0xa7, 0x59, 0x5d, 0x7c, 0x75, 0x26, 0x9b, 0xc8, 0x20, 0x15, 0xd4, 0x7a, 0x89, 0x3b, 0x9e, 0x60, - 0x8f, 0xe9, 0x1b, 0x2a, 0xe9, 0x5c, 0xe8, 0xd2, 0x16, 0xad, 0x64, 0xbb, 0x8d, 0xbb, 0x73, 0xf5, - 0x4b, 0xe3, 0x53, 0x84, 0x75, 0x4f, 0xb0, 0x47, 0x9c, 0x06, 0x92, 0xfa, 0x00, 0x72, 0xda, 0xfd, - 0x10, 0x6f, 0x06, 0x03, 0x79, 0x0c, 0x3c, 0x96, 0xa3, 0x22, 0xc0, 0xa6, 0xab, 0x7f, 0xfd, 0xd2, - 0xef, 0x94, 0xd3, 0x78, 0x18, 0x45, 0x9c, 0x0a, 0xf1, 0x4c, 0xf2, 0x38, 0x65, 0x7e, 0x45, 0x25, - 0x87, 0xcb, 0x35, 0xeb, 0x6f, 0xde, 0xad, 0x77, 0x3f, 0x3f, 0xdf, 0xae, 0xea, 0x58, 0xbb, 0x78, - 0xa7, 0x21, 0x5b, 0x99, 0xfc, 0x13, 0x2a, 0x7a, 0xe6, 0x41, 0x14, 0xbf, 0x1e, 0xfd, 0x8f, 0xd4, - 0xab, 0x8d, 0x78, 0x3e, 0xbb, 0xea, 0xf8, 0x74, 0x3a, 0x95, 0xfb, 0xe0, 0xe3, 0x1a, 0x5e, 0xf3, - 0x04, 0x23, 0x2f, 0xf0, 0xc6, 0x9f, 0x35, 0x20, 0x37, 0x9a, 0xac, 0xea, 0x3b, 0x6c, 0xdc, 0xfc, - 0x27, 0x4f, 0x99, 0x90, 0x00, 0xe3, 0x6a, 0xd8, 0x64, 0xaf, 0x45, 0x56, 0xdb, 0x37, 0xe3, 0xd6, - 0x02, 0xcc, 0xca, 0xa2, 0xba, 0x5d, 0xab, 0x45, 0x6d, 0x3c, 0xad, 0x16, 0xf5, 0x56, 0x91, 0x04, - 0x6f, 0xcd, 0x0e, 0x9f, 0xdc, 0x69, 0x11, 0x37, 0xee, 0xaf, 0xd1, 0x5f, 0x90, 0xad, 0xec, 0xdc, - 0xf0, 0x7c, 0x6c, 0xa2, 0x8b, 0xb1, 0x89, 0x7e, 0x8c, 0x4d, 0xf4, 0x61, 0x62, 0x6a, 0x17, 0x13, - 0x53, 0xfb, 0x36, 0x31, 0x35, 0xdc, 0x8d, 0xa1, 0xa1, 0xd4, 0x53, 0xf4, 0xfc, 0x2e, 0x8b, 0xe5, - 0xf1, 0xe0, 0xc8, 0x0e, 0x21, 0x71, 0x2a, 0x42, 0x3f, 0x86, 0xa9, 0x93, 0x73, 0xa2, 0x5e, 0x29, - 0x39, 0xca, 0xa8, 0x38, 0x5a, 0x2f, 0x1e, 0xa9, 0x7b, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x16, - 0xba, 0xe0, 0xa5, 0x40, 0x05, 0x00, 0x00, + // 494 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0x31, 0x6f, 0xd4, 0x30, + 0x14, 0xc7, 0x63, 0x8a, 0x2a, 0x6a, 0xa4, 0x0e, 0xee, 0x9d, 0x7a, 0x4d, 0x45, 0x0e, 0x65, 0x80, + 0x82, 0xb8, 0x84, 0x16, 0xa9, 0x03, 0x62, 0xe1, 0x60, 0x0d, 0x42, 0x61, 0x83, 0x01, 0xa5, 0x89, + 0x71, 0x2d, 0x91, 0xbc, 0x60, 0xfb, 0x4e, 0xbd, 0x95, 0x89, 0x91, 0x0d, 0x09, 0x31, 0x74, 0x61, + 0x67, 0xe0, 0x43, 0x74, 0xac, 0x98, 0x98, 0x10, 0xba, 0x1b, 0xe0, 0x63, 0xa0, 0xc4, 0x86, 0x5c, + 0x2f, 0x89, 0x68, 0xd5, 0x6e, 0xb1, 0xdf, 0xfb, 0xbf, 0xff, 0x2f, 0xef, 0x3d, 0x19, 0x6f, 0xe6, + 0x02, 0xc6, 0x34, 0x8b, 0xb2, 0x98, 0xfa, 0x59, 0x94, 0x52, 0x7f, 0xbc, 0xed, 0xab, 0x03, 0x2f, + 0x17, 0xa0, 0x80, 0x90, 0x2a, 0xe8, 0x15, 0x41, 0x6f, 0xbc, 0x6d, 0x77, 0x18, 0x30, 0x28, 0xc3, + 0x7e, 0xf1, 0xa5, 0x33, 0xed, 0xf5, 0x18, 0x64, 0x0a, 0xd2, 0x4f, 0x25, 0x2b, 0x2a, 0xa4, 0x92, + 0x99, 0xc0, 0x86, 0x0e, 0xbc, 0xd4, 0x0a, 0x7d, 0x30, 0xa1, 0x6b, 0x0d, 0xd6, 0xa5, 0x4b, 0x19, + 0x76, 0x3f, 0x23, 0x4c, 0x02, 0xc9, 0x86, 0x3c, 0x4b, 0x9e, 0x44, 0x29, 0x0d, 0xe9, 0x9b, 0x11, + 0x95, 0x8a, 0x3c, 0xc0, 0xcb, 0x79, 0x24, 0x68, 0xa6, 0x7a, 0xe8, 0x3a, 0xda, 0xba, 0xba, 0xe3, + 0x78, 0x75, 0x48, 0x4f, 0x0b, 0x62, 0x10, 0xc9, 0xf0, 0xf2, 0xd1, 0x8f, 0xbe, 0x15, 0x1a, 0x4d, + 0xa1, 0x16, 0xe5, 0x7d, 0xef, 0xd2, 0x59, 0xd4, 0x5a, 0x73, 0x7f, 0xed, 0xdd, 0x61, 0xdf, 0xfa, + 0x7d, 0xd8, 0xb7, 0xde, 0xfe, 0xfa, 0x72, 0xdb, 0x94, 0x74, 0xbb, 0x78, 0xed, 0x04, 0xa6, 0xcc, + 0x21, 0x93, 0xd4, 0xe5, 0xb8, 0x13, 0x48, 0xf6, 0x98, 0xbe, 0xa6, 0x8a, 0x2e, 0xf0, 0x1b, 0x02, + 0x74, 0x6e, 0x02, 0x7d, 0xe9, 0xae, 0xe3, 0xee, 0x82, 0x95, 0x61, 0xf8, 0x88, 0x70, 0x2f, 0x90, + 0xec, 0x91, 0xa0, 0x91, 0xa2, 0x21, 0x80, 0x9a, 0x07, 0xd9, 0xc5, 0x2b, 0xd1, 0x48, 0xed, 0x83, + 0xe0, 0x6a, 0x52, 0xb2, 0xac, 0x0c, 0x7b, 0xdf, 0xbe, 0x0e, 0x3a, 0x66, 0x46, 0x0f, 0x93, 0x44, + 0x50, 0x29, 0x9f, 0x29, 0xc1, 0x33, 0x16, 0x56, 0xa9, 0x64, 0xf7, 0x6c, 0x2d, 0xfc, 0x87, 0xbe, + 0x5a, 0x20, 0x57, 0x75, 0xdc, 0x4d, 0xbc, 0xd1, 0xc0, 0x66, 0xc8, 0x3f, 0xa1, 0xb2, 0x7d, 0x01, + 0x24, 0xfc, 0xd5, 0xe4, 0x22, 0xa8, 0xcf, 0x37, 0xf8, 0x45, 0x76, 0xdd, 0xf1, 0x79, 0x3a, 0xcd, + 0xbd, 0xf3, 0x61, 0x09, 0x2f, 0x05, 0x92, 0x91, 0x17, 0xf8, 0xca, 0xdf, 0x8d, 0x20, 0x37, 0x9a, + 0xac, 0xea, 0x9b, 0x6d, 0xdf, 0xfc, 0x6f, 0x9e, 0x36, 0x21, 0x11, 0xc6, 0xd5, 0xb0, 0xc9, 0x56, + 0x8b, 0xac, 0xb6, 0x7a, 0xf6, 0xad, 0x53, 0x64, 0x56, 0x16, 0xd5, 0xdf, 0xb5, 0x5a, 0xd4, 0xc6, + 0xd3, 0x6a, 0x51, 0x6f, 0x15, 0x49, 0xf1, 0xea, 0xc9, 0xe1, 0x93, 0x3b, 0x2d, 0xe2, 0xc6, 0xfd, + 0xb5, 0x07, 0xa7, 0xcc, 0xd6, 0x76, 0xc3, 0xf8, 0x68, 0xea, 0xa0, 0xe3, 0xa9, 0x83, 0x7e, 0x4e, + 0x1d, 0xf4, 0x7e, 0xe6, 0x58, 0xc7, 0x33, 0xc7, 0xfa, 0x3e, 0x73, 0x2c, 0xdc, 0xe5, 0xd0, 0x50, + 0xea, 0x29, 0x7a, 0x7e, 0x97, 0x71, 0xb5, 0x3f, 0xda, 0xf3, 0x62, 0x48, 0xfd, 0x2a, 0x61, 0xc0, + 0x61, 0xee, 0xe4, 0x1f, 0xe8, 0xb7, 0x4b, 0x4d, 0x72, 0x2a, 0xf7, 0x96, 0xcb, 0xa7, 0xeb, 0xde, + 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x86, 0xaa, 0xee, 0x56, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/oracle/simulation/operations_test.go b/x/oracle/simulation/operations_test.go index 6ebd8836bd..f8ee1f7173 100644 --- a/x/oracle/simulation/operations_test.go +++ b/x/oracle/simulation/operations_test.go @@ -62,16 +62,13 @@ func (s *SimTestSuite) TestWeightedOperations() { r := rand.New(source) accs := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - expected := []struct { weight int opMsgRoute string opMsgName string }{ - {simappparams.DefaultWeightUpdateOracle, sdk.MsgTypeURL(&types.MsgUpdateOracleRequest{}), sdk.MsgTypeURL(&types.MsgUpdateOracleRequest{})}, - {simappparams.DefaultWeightSendOracleQuery, sdk.MsgTypeURL(&types.MsgSendQueryOracleRequest{}), sdk.MsgTypeURL(&types.MsgSendQueryOracleRequest{})}, + {weight: simappparams.DefaultWeightUpdateOracle, opMsgRoute: types.ModuleName, opMsgName: sdk.MsgTypeURL(&types.MsgUpdateOracleRequest{})}, + {weight: simappparams.DefaultWeightSendOracleQuery, opMsgRoute: types.ModuleName, opMsgName: sdk.MsgTypeURL(&types.MsgSendQueryOracleRequest{})}, } expNames := make([]string, len(expected)) @@ -105,9 +102,6 @@ func (s *SimTestSuite) TestSimulateMsgUpdateOracle() { r := rand.New(source) accounts := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgUpdateOracle(s.app.OracleKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -115,11 +109,11 @@ func (s *SimTestSuite) TestSimulateMsgUpdateOracle() { s.LogOperationMsg(operationMsg, "good") var msg types.MsgUpdateOracleRequest - s.Require().NoError(s.app.AppCodec().UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(s.app.AppCodec().Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.ModuleName, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -129,9 +123,6 @@ func (s *SimTestSuite) TestSimulateMsgSendQueryOracle() { r := rand.New(source) accounts := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgSendQueryOracle(s.app.OracleKeeper, s.app.AccountKeeper, s.app.BankKeeper, s.app.IBCKeeper.ChannelKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -139,11 +130,11 @@ func (s *SimTestSuite) TestSimulateMsgSendQueryOracle() { s.LogOperationMsg(operationMsg, "good") var msg types.MsgUpdateOracleRequest - s.Require().NoError(s.app.AppCodec().UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(s.app.AppCodec().Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.ModuleName, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } diff --git a/x/reward/keeper/rules.go b/x/reward/keeper/rules.go index 1d18c09e64..5c16732baa 100644 --- a/x/reward/keeper/rules.go +++ b/x/reward/keeper/rules.go @@ -19,8 +19,11 @@ import ( func CacheContextWithHistory(ctx sdk.Context) (cc sdk.Context, writeCache func()) { cms := ctx.MultiStore().CacheMultiStore() cc = ctx.WithMultiStore(cms) - // TODO[1760]: event-history: Put this back once the event history stuff is back in the SDK. - // cc = cc.WithEventManager(sdk.NewEventManagerWithHistory(ctx.EventManager().GetABCIEventHistory())) + abciEventHistory, ok := ctx.EventManager().(sdk.EventManagerWithHistoryI) + if !ok { + panic("event manager does not implement EventManagerWithHistoryI") + } + cc = cc.WithEventManager(sdk.NewEventManagerWithHistory(abciEventHistory.GetABCIEventHistory())) writeCache = func() { ctx.EventManager().EmitEvents(cc.EventManager().Events()) @@ -176,45 +179,47 @@ func (k Keeper) RewardShares(ctx sdk.Context, rewardProgram *types.RewardProgram // IterateABCIEvents Iterates through all the ABCIEvents that match the eventCriteria. // Nil criteria means to iterate over everything. func (k Keeper) IterateABCIEvents(ctx sdk.Context, criteria *types.EventCriteria, action func(string, *map[string][]byte) error) error { - // TODO[1760]: event-history: Put this back once the event history stuff is back in the SDK. - /* - for _, event := range ctx.EventManager().GetABCIEventHistory() { - event := event - - // Event type must match the criteria - // nil criteria is considered to match everything - if criteria != nil && !criteria.MatchesEvent(event.Type) { - continue - } + abciEventHistory, ok := ctx.EventManager().(sdk.EventManagerWithHistoryI) + if !ok { + panic("event manager does not implement EventManagerWithHistoryI") + } - // Convert the attributes into a map - attributes := make(map[string][]byte) - for _, attribute := range event.Attributes { - attributes[string(attribute.Key)] = attribute.Value - } + for _, event := range abciEventHistory.GetABCIEventHistory() { + event := event + + // Event type must match the criteria + // nil criteria is considered to match everything + if criteria != nil && !criteria.MatchesEvent(event.Type) { + continue + } + + // Convert the attributes into a map + attributes := make(map[string][]byte) + for _, attribute := range event.Attributes { + attributes[string(attribute.Key)] = []byte(attribute.Value) + } - valid := true - if criteria != nil { - // Ensure each attribute matches the required criteria - // If a single attribute does not match then we don't continue with the event - eventCriteria := criteria.Events[event.Type] - for key := range eventCriteria.Attributes { - valid = eventCriteria.MatchesAttribute(key, attributes[key]) - if !valid { - break - } + valid := true + if criteria != nil { + // Ensure each attribute matches the required criteria + // If a single attribute does not match then we don't continue with the event + eventCriteria := criteria.Events[event.Type] + for key := range eventCriteria.Attributes { + valid = eventCriteria.MatchesAttribute(key, attributes[key]) + if !valid { + break } } - if !valid { - continue - } + } + if !valid { + continue + } - err := action(event.Type, &attributes) - if err != nil { - return err - } + err := action(event.Type, &attributes) + if err != nil { + return err } - */ + } return nil } diff --git a/x/reward/keeper/rules_test.go b/x/reward/keeper/rules_test.go index 4cc389b26e..a4fa5381af 100644 --- a/x/reward/keeper/rules_test.go +++ b/x/reward/keeper/rules_test.go @@ -48,9 +48,8 @@ func setupEventHistory(s *KeeperTestSuite) { } func SetupEventHistory(s *KeeperTestSuite, events sdk.Events) { - // TODO[1760]: event-history: Put this back once the event history stuff is back in the SDK. - // eventManagerStub := sdk.NewEventManagerWithHistory(events.ToABCIEvents()) - // s.ctx = s.ctx.WithEventManager(eventManagerStub) + eventManagerStub := sdk.NewEventManagerWithHistory(events.ToABCIEvents()) + s.ctx = s.ctx.WithEventManager(eventManagerStub) } // with delegate @@ -1173,12 +1172,12 @@ func SetupEventHistoryWithVotes(s *KeeperTestSuite, sender string) { event2, event3, } - // TODO[1760]: event-history: Put this back once the event history stuff is back in the SDK. - _ = loggedEvents - // newEvents := loggedEvents.ToABCIEvents() - // newEvents = append(newEvents, s.ctx.EventManager().GetABCIEventHistory()...) - // eventManagerStub := sdk.NewEventManagerWithHistory(newEvents) - // s.ctx = s.ctx.WithEventManager(eventManagerStub) + newEvents := loggedEvents.ToABCIEvents() + eventManager, _ := s.ctx.EventManager().(sdk.EventManagerWithHistoryI) + + newEvents = append(newEvents, eventManager.GetABCIEventHistory()...) + eventManagerStub := sdk.NewEventManagerWithHistory(newEvents) + s.ctx = s.ctx.WithEventManager(eventManagerStub) } // transfer diff --git a/x/reward/simulation/operations_test.go b/x/reward/simulation/operations_test.go index dce29d5646..92d6f0f495 100644 --- a/x/reward/simulation/operations_test.go +++ b/x/reward/simulation/operations_test.go @@ -41,16 +41,13 @@ func (s *SimTestSuite) TestWeightedOperations() { r := rand.New(source) accs := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - expected := []struct { weight int opMsgRoute string opMsgName string }{ - {simappparams.DefaultWeightSubmitCreateRewards, sdk.MsgTypeURL(&types.MsgCreateRewardProgramRequest{}), sdk.MsgTypeURL(&types.MsgCreateRewardProgramRequest{})}, - {simappparams.DefaultWeightSubmitEndRewards, sdk.MsgTypeURL(&types.MsgEndRewardProgramRequest{}), sdk.MsgTypeURL(&types.MsgEndRewardProgramRequest{})}, + {weight: simappparams.DefaultWeightSubmitCreateRewards, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgCreateRewardProgramRequest{})}, + {weight: simappparams.DefaultWeightSubmitEndRewards, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgEndRewardProgramRequest{})}, } for i, w := range weightedOps { @@ -71,20 +68,17 @@ func (s *SimTestSuite) TestSimulateMsgAddRewards() { r := rand.New(source) accounts := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgCreateRewardsProgram(s.app.RewardKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") s.Require().NoError(err) var msg types.MsgCreateRewardProgramRequest - types.ModuleCdc.UnmarshalJSON(operationMsg.Msg, &msg) + types.ModuleCdc.Unmarshal(operationMsg.Msg, &msg) s.Require().True(operationMsg.OK, operationMsg.String()) s.Require().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name) - s.Require().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route) + s.Require().Equal(types.RouterKey, operationMsg.Route) s.Require().Len(futureOperations, 0) } diff --git a/x/reward/types/action_builder.go b/x/reward/types/action_builder.go index e8cf62f9b0..e1c09407ba 100644 --- a/x/reward/types/action_builder.go +++ b/x/reward/types/action_builder.go @@ -258,7 +258,8 @@ func (v *VoteActionBuilder) AddEvent(_ string, attributes *map[string][]byte) er return err } v.Voter = address - } else if action, ok := (*attributes)[sdk.AttributeKeyAction]; ok { + } + if action, ok := (*attributes)[sdk.AttributeKeyAction]; ok { a := string(action) for _, m := range getGovVoteMsgURLs() { if a == m { diff --git a/x/reward/types/tx.pb.go b/x/reward/types/tx.pb.go index 2be7b6b6ed..0e4287a7c7 100644 --- a/x/reward/types/tx.pb.go +++ b/x/reward/types/tx.pb.go @@ -7,6 +7,7 @@ import ( context "context" fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -653,70 +654,72 @@ func init() { func init() { proto.RegisterFile("provenance/reward/v1/tx.proto", fileDescriptor_6a1c90eb8246d229) } var fileDescriptor_6a1c90eb8246d229 = []byte{ - // 993 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xda, 0x4e, 0x69, 0xc7, 0x49, 0x1d, 0x4f, 0x52, 0xb2, 0x59, 0x1a, 0xdb, 0x75, 0x45, - 0x15, 0x55, 0xed, 0x6e, 0xec, 0x22, 0x0e, 0xe1, 0x94, 0xa4, 0x20, 0x55, 0x28, 0x4a, 0x70, 0xb8, - 0x00, 0x87, 0xd5, 0xd8, 0x3b, 0xd9, 0x8e, 0xba, 0xeb, 0xd9, 0xcc, 0x8c, 0x1d, 0x9b, 0x13, 0x27, - 0xae, 0xf4, 0x08, 0xb7, 0xfe, 0x11, 0xae, 0xa8, 0xc7, 0x1e, 0x39, 0x05, 0x94, 0x70, 0x40, 0x5c, - 0x90, 0xf8, 0x05, 0x68, 0x67, 0x66, 0x9d, 0xb5, 0xbd, 0x0e, 0x0e, 0xb7, 0xec, 0x7b, 0xdf, 0x7b, - 0xef, 0x7b, 0xef, 0x7b, 0xf3, 0x62, 0xb0, 0x19, 0x31, 0xda, 0xc7, 0x5d, 0xd4, 0xed, 0x60, 0x87, - 0xe1, 0x33, 0xc4, 0x3c, 0xa7, 0xdf, 0x70, 0xc4, 0xc0, 0x8e, 0x18, 0x15, 0x14, 0xae, 0x5d, 0xb9, - 0x6d, 0xe5, 0xb6, 0xfb, 0x0d, 0x6b, 0xcd, 0xa7, 0x3e, 0x95, 0x00, 0x27, 0xfe, 0x4b, 0x61, 0xad, - 0xaa, 0x4f, 0xa9, 0x1f, 0x60, 0x47, 0x7e, 0xb5, 0x7b, 0x27, 0x8e, 0x20, 0x21, 0xe6, 0x02, 0x85, - 0x91, 0x06, 0x54, 0x3a, 0x94, 0x87, 0x94, 0x3b, 0x6d, 0xc4, 0xb1, 0xd3, 0x6f, 0xb4, 0xb1, 0x40, - 0x0d, 0xa7, 0x43, 0x49, 0x57, 0xfb, 0x1f, 0x64, 0x72, 0xd1, 0x65, 0x25, 0xa4, 0xfe, 0xf7, 0x22, - 0xd8, 0x3c, 0xe0, 0xfe, 0x3e, 0xc3, 0x48, 0xe0, 0x96, 0xf4, 0x1c, 0x31, 0xea, 0x33, 0x14, 0xb6, - 0xf0, 0x69, 0x0f, 0x73, 0x01, 0xd7, 0xc0, 0xa2, 0x20, 0x22, 0xc0, 0xa6, 0x51, 0x33, 0xb6, 0xee, - 0xb4, 0xd4, 0x07, 0xac, 0x81, 0xa2, 0x87, 0x79, 0x87, 0x91, 0x48, 0x10, 0xda, 0x35, 0x73, 0xd2, - 0x97, 0x36, 0xc1, 0x8f, 0xc1, 0xba, 0x47, 0xb8, 0x60, 0xa4, 0xdd, 0x13, 0xd8, 0x3d, 0x61, 0x34, - 0x74, 0x91, 0xe7, 0x31, 0xcc, 0xb9, 0x99, 0x97, 0xe8, 0x7b, 0x57, 0xee, 0xcf, 0x18, 0x0d, 0x77, - 0x95, 0x13, 0x7e, 0x0e, 0xca, 0x82, 0x0a, 0x14, 0xb8, 0x8a, 0xa7, 0x1b, 0x51, 0x1a, 0x98, 0x85, - 0x9a, 0xb1, 0x55, 0x6c, 0x6e, 0xd8, 0xaa, 0x61, 0x3b, 0x6e, 0xd8, 0xd6, 0x0d, 0xdb, 0xfb, 0x94, - 0x74, 0xf7, 0x0a, 0x6f, 0xcf, 0xab, 0x0b, 0xad, 0x92, 0x8c, 0xd4, 0x6d, 0x50, 0x1a, 0x40, 0x17, - 0xdc, 0x0f, 0xd1, 0x60, 0x94, 0x0a, 0x33, 0xb7, 0x13, 0x20, 0x72, 0xc5, 0x64, 0x71, 0xbe, 0xbc, - 0x66, 0x88, 0x06, 0x3a, 0x2b, 0x66, 0xfb, 0x71, 0x86, 0x84, 0xed, 0x4f, 0x06, 0x80, 0x91, 0x1a, - 0x98, 0xcb, 0x05, 0x62, 0xc2, 0x8d, 0x45, 0x32, 0x6f, 0xc9, 0xbc, 0x96, 0xad, 0x14, 0xb4, 0x13, - 0x05, 0xed, 0x2f, 0x13, 0x05, 0xf7, 0x0e, 0xe3, 0xc4, 0x7f, 0x9d, 0x57, 0xef, 0x4f, 0x47, 0x3f, - 0xa1, 0x21, 0x11, 0x38, 0x8c, 0xc4, 0xf0, 0x9f, 0xf3, 0xea, 0xc3, 0x21, 0x0a, 0x83, 0x9d, 0xfa, - 0x75, 0xa8, 0xfa, 0xeb, 0xdf, 0xaa, 0x46, 0x6b, 0x45, 0x43, 0x8e, 0x63, 0x44, 0x5c, 0x07, 0x3e, - 0x04, 0xcb, 0xaa, 0xdb, 0x08, 0x33, 0x42, 0x3d, 0x6e, 0xbe, 0x57, 0x33, 0xb6, 0x0a, 0xad, 0x25, - 0x69, 0x3c, 0x52, 0x36, 0xf8, 0x18, 0x94, 0xd3, 0x20, 0xd7, 0x43, 0x43, 0x6e, 0xde, 0x96, 0xc0, - 0x52, 0x0a, 0xf8, 0x1c, 0x0d, 0x39, 0xfc, 0x04, 0x58, 0x72, 0x9a, 0x34, 0x08, 0x68, 0x7f, 0x34, - 0xcb, 0x24, 0xfb, 0x1d, 0x19, 0xb4, 0x1e, 0x8f, 0x4a, 0x03, 0xf6, 0xd3, 0x85, 0xaa, 0xa0, 0x88, - 0x07, 0x11, 0x61, 0x58, 0x95, 0x00, 0x12, 0x0d, 0x94, 0x49, 0x66, 0xff, 0x06, 0xc0, 0xd3, 0x1e, - 0x0a, 0xc8, 0xc9, 0x90, 0x74, 0x7d, 0x17, 0x75, 0xe2, 0x2d, 0xe2, 0x66, 0xb1, 0x96, 0xdf, 0x2a, - 0x36, 0x1f, 0xd9, 0x59, 0xef, 0xc6, 0xfe, 0x62, 0x84, 0xdf, 0x95, 0x70, 0x2d, 0x57, 0xf9, 0x74, - 0xc2, 0xce, 0x77, 0x6e, 0xff, 0xf8, 0xa6, 0x6a, 0xfc, 0xf9, 0xa6, 0x6a, 0xd4, 0xb7, 0x41, 0x65, - 0xd6, 0xc2, 0xf3, 0x88, 0x76, 0x39, 0x86, 0x77, 0x41, 0x8e, 0x78, 0x72, 0xdd, 0x0b, 0xad, 0x1c, - 0xf1, 0xea, 0xdf, 0x1b, 0xc0, 0x3a, 0xe0, 0xfe, 0xa7, 0x5d, 0x2f, 0xf3, 0x81, 0x3c, 0x06, 0xe5, - 0x64, 0xbf, 0xb4, 0x48, 0xa3, 0xe8, 0x12, 0x4b, 0x07, 0xbc, 0xf0, 0x60, 0x13, 0xdc, 0x4b, 0x40, - 0xf4, 0xac, 0x8b, 0xd9, 0x68, 0x11, 0xd5, 0x03, 0x5a, 0xd5, 0xce, 0xc3, 0xd8, 0xa7, 0x57, 0x2c, - 0x45, 0x7d, 0x13, 0x7c, 0x90, 0xc9, 0x43, 0xf1, 0xae, 0xbf, 0x02, 0xef, 0xc7, 0x9d, 0xc5, 0x43, - 0x57, 0x00, 0xfe, 0x7f, 0x28, 0x7e, 0x08, 0xee, 0x6a, 0xec, 0x38, 0xb7, 0x65, 0x65, 0xd5, 0xac, - 0xea, 0xdf, 0x82, 0xf5, 0xa9, 0x62, 0x7a, 0x7e, 0x5f, 0x25, 0x7b, 0xe7, 0x61, 0x81, 0x48, 0xc0, - 0x65, 0xa5, 0x62, 0xd3, 0xce, 0xd6, 0x70, 0xac, 0x17, 0x99, 0xef, 0xb9, 0x0c, 0xd3, 0x5a, 0xaa, - 0x6d, 0x55, 0x26, 0xbe, 0x53, 0x90, 0x73, 0xd8, 0x03, 0x1b, 0x49, 0xed, 0xdd, 0x20, 0x98, 0xe8, - 0x75, 0x9a, 0xbf, 0x91, 0xc5, 0xff, 0x17, 0x25, 0xea, 0x54, 0x12, 0xdd, 0xc3, 0x01, 0x80, 0x63, - 0x57, 0x48, 0xb2, 0x30, 0x0d, 0xb9, 0x8c, 0xff, 0x79, 0x2e, 0x56, 0x52, 0x67, 0x48, 0x16, 0x80, - 0xc7, 0x93, 0x23, 0xc9, 0xc9, 0x4c, 0x37, 0x1c, 0x49, 0xe6, 0x30, 0x7e, 0x36, 0xc0, 0x86, 0xc4, - 0x60, 0x6f, 0x74, 0xa2, 0xe2, 0x07, 0x2b, 0x41, 0xf0, 0x11, 0x28, 0x8d, 0x3d, 0xef, 0x91, 0xee, - 0xcb, 0xa9, 0xc7, 0xfd, 0xc2, 0x83, 0x0f, 0xc0, 0x92, 0xea, 0x97, 0xbf, 0x44, 0x0c, 0x2b, 0xcd, - 0x0b, 0xad, 0xa2, 0xb4, 0x1d, 0x4b, 0x13, 0x3c, 0x04, 0xab, 0x63, 0xa9, 0x14, 0x5f, 0x79, 0xcc, - 0xe7, 0x98, 0x49, 0x39, 0x55, 0x4f, 0xf1, 0xd4, 0xfc, 0x7f, 0xc8, 0x01, 0x73, 0x56, 0xc3, 0x37, - 0x5a, 0xdc, 0x6c, 0xc9, 0x72, 0xf3, 0xd1, 0x9b, 0x96, 0x8c, 0x81, 0xcd, 0x8e, 0x1a, 0x6b, 0xea, - 0xdf, 0x87, 0xbc, 0x90, 0x5a, 0xc2, 0xbc, 0x94, 0xd0, 0xc9, 0x96, 0x70, 0xa6, 0x22, 0x2d, 0xab, - 0x33, 0xcb, 0xa5, 0x15, 0x6d, 0xfe, 0x91, 0x07, 0xf9, 0x03, 0xee, 0xc3, 0xef, 0x0c, 0xb0, 0x9a, - 0x71, 0xa7, 0xe0, 0xb3, 0xec, 0x92, 0xd7, 0xfe, 0x1b, 0xb7, 0x3e, 0xba, 0x59, 0x90, 0x7e, 0x06, - 0x67, 0x60, 0x65, 0xf2, 0xdc, 0xc0, 0xed, 0x99, 0x99, 0x66, 0x5c, 0x48, 0xab, 0x71, 0x83, 0x08, - 0x5d, 0xf8, 0x15, 0x58, 0x4a, 0xdf, 0x16, 0xf8, 0x64, 0x36, 0xfd, 0xe9, 0x7b, 0x67, 0x3d, 0x9d, - 0x13, 0xad, 0x8b, 0x09, 0x50, 0x9a, 0xb8, 0x03, 0xd0, 0xb9, 0x3e, 0xc3, 0xd4, 0xd9, 0xb1, 0xb6, - 0xe7, 0x0f, 0x50, 0x55, 0xf7, 0xfc, 0xb7, 0x17, 0x15, 0xe3, 0xdd, 0x45, 0xc5, 0xf8, 0xfd, 0xa2, - 0x62, 0xbc, 0xbe, 0xac, 0x2c, 0xbc, 0xbb, 0xac, 0x2c, 0xfc, 0x7a, 0x59, 0x59, 0x00, 0xeb, 0x84, - 0x66, 0x66, 0x3b, 0x32, 0xbe, 0x6e, 0xfa, 0x44, 0xbc, 0xec, 0xb5, 0xed, 0x0e, 0x0d, 0x9d, 0x2b, - 0xc8, 0x53, 0x42, 0x53, 0x5f, 0xce, 0x20, 0xf9, 0xb5, 0x27, 0x86, 0x11, 0xe6, 0xed, 0x5b, 0xf2, - 0xe7, 0xc7, 0xb3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x65, 0x4a, 0x89, 0xda, 0x9b, 0x0a, 0x00, - 0x00, + // 1026 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0x3a, 0x6e, 0xa0, 0xe3, 0xa4, 0x49, 0x26, 0x29, 0xd9, 0x2c, 0x8d, 0x9d, 0x6e, 0xa1, + 0x8a, 0xa2, 0x76, 0x37, 0x76, 0x11, 0x87, 0x70, 0x4a, 0x52, 0x90, 0x2a, 0x14, 0x25, 0x38, 0x48, + 0x08, 0x38, 0xac, 0xc6, 0xde, 0xc9, 0x76, 0xc4, 0xae, 0x67, 0x33, 0x33, 0x76, 0x6c, 0x4e, 0x15, + 0x57, 0x0e, 0xf4, 0x08, 0xb7, 0x7c, 0x04, 0xbe, 0x00, 0x57, 0xd4, 0x63, 0x8f, 0x9c, 0x02, 0x4a, + 0x90, 0x40, 0x1c, 0xf9, 0x04, 0x68, 0x67, 0x66, 0x9d, 0xb5, 0xbd, 0x0e, 0x4e, 0x6f, 0xf1, 0x7b, + 0xbf, 0xf7, 0x7b, 0x7f, 0xe7, 0x97, 0x05, 0x6b, 0x31, 0xa3, 0x1d, 0xdc, 0x42, 0xad, 0x26, 0x76, + 0x19, 0x3e, 0x45, 0xcc, 0x77, 0x3b, 0x55, 0x57, 0x74, 0x9d, 0x98, 0x51, 0x41, 0xe1, 0xf2, 0x95, + 0xdb, 0x51, 0x6e, 0xa7, 0x53, 0xb5, 0x96, 0x03, 0x1a, 0x50, 0x09, 0x70, 0x93, 0xbf, 0x14, 0xd6, + 0xaa, 0x04, 0x94, 0x06, 0x21, 0x76, 0xe5, 0xaf, 0x46, 0xfb, 0xd8, 0x15, 0x24, 0xc2, 0x5c, 0xa0, + 0x28, 0xd6, 0x80, 0x72, 0x93, 0xf2, 0x88, 0x72, 0xb7, 0x81, 0x38, 0x76, 0x3b, 0xd5, 0x06, 0x16, + 0xa8, 0xea, 0x36, 0x29, 0x69, 0x69, 0xff, 0xfd, 0xdc, 0x5a, 0x74, 0x5a, 0x05, 0x59, 0xd1, 0x14, + 0x11, 0x0f, 0x12, 0x5f, 0xc4, 0x03, 0xe5, 0xb0, 0xbf, 0x9f, 0x01, 0x6b, 0xfb, 0x3c, 0xd8, 0x63, + 0x18, 0x09, 0x5c, 0x97, 0x21, 0x87, 0x8c, 0x06, 0x0c, 0x45, 0x75, 0x7c, 0xd2, 0xc6, 0x5c, 0xc0, + 0x65, 0x70, 0x4b, 0x10, 0x11, 0x62, 0xd3, 0x58, 0x37, 0x36, 0x6e, 0xd7, 0xd5, 0x0f, 0xb8, 0x0e, + 0x4a, 0x3e, 0xe6, 0x4d, 0x46, 0x62, 0x41, 0x68, 0xcb, 0x2c, 0x48, 0x5f, 0xd6, 0x04, 0x3f, 0x04, + 0x2b, 0x3e, 0xe1, 0x82, 0x91, 0x46, 0x5b, 0x60, 0xef, 0x98, 0xd1, 0xc8, 0x43, 0xbe, 0xcf, 0x30, + 0xe7, 0xe6, 0xb4, 0x44, 0xdf, 0xbd, 0x72, 0x7f, 0xc2, 0x68, 0xb4, 0xa3, 0x9c, 0xf0, 0x53, 0xb0, + 0x28, 0xa8, 0x40, 0xa1, 0xa7, 0x1a, 0xf0, 0x62, 0x4a, 0x43, 0xb3, 0xb8, 0x6e, 0x6c, 0x94, 0x6a, + 0xab, 0x8e, 0x6a, 0xc3, 0x49, 0x26, 0xe1, 0xe8, 0x49, 0x38, 0x7b, 0x94, 0xb4, 0x76, 0x8b, 0xaf, + 0xce, 0x2b, 0x53, 0xf5, 0x79, 0x19, 0xa9, 0xdb, 0xa0, 0x34, 0x84, 0x1e, 0xb8, 0x17, 0xa1, 0x6e, + 0x9f, 0x0a, 0x33, 0xaf, 0x19, 0x22, 0x72, 0x55, 0xc9, 0xad, 0xc9, 0x78, 0xcd, 0x08, 0x75, 0x35, + 0x2b, 0x66, 0x7b, 0x09, 0x43, 0x5a, 0xed, 0x4f, 0x06, 0x80, 0xb1, 0x1a, 0x98, 0xc7, 0x05, 0x62, + 0xc2, 0x4b, 0xb6, 0x67, 0xce, 0x48, 0x5e, 0xcb, 0x51, 0xab, 0x75, 0xd2, 0xd5, 0x3a, 0x9f, 0xa7, + 0xab, 0xdd, 0x3d, 0x48, 0x88, 0xff, 0x39, 0xaf, 0xdc, 0x1b, 0x8d, 0x7e, 0x44, 0x23, 0x22, 0x70, + 0x14, 0x8b, 0xde, 0xbf, 0xe7, 0x95, 0x07, 0x3d, 0x14, 0x85, 0xdb, 0xf6, 0x75, 0x28, 0xfb, 0xe5, + 0xef, 0x15, 0xa3, 0xbe, 0xa0, 0x21, 0x47, 0x09, 0x22, 0xc9, 0x03, 0x1f, 0x80, 0x39, 0xd5, 0x6d, + 0x8c, 0x19, 0xa1, 0x3e, 0x37, 0xdf, 0x5a, 0x37, 0x36, 0x8a, 0xf5, 0x59, 0x69, 0x3c, 0x54, 0x36, + 0xb8, 0x09, 0x16, 0xb3, 0x20, 0xcf, 0x47, 0x3d, 0x6e, 0xbe, 0x2d, 0x81, 0xf3, 0x19, 0xe0, 0x53, + 0xd4, 0xe3, 0xf0, 0x23, 0x60, 0xc9, 0x69, 0xd2, 0x30, 0xa4, 0x9d, 0xfe, 0x2c, 0x53, 0xf6, 0xdb, + 0x32, 0x68, 0x25, 0x19, 0x95, 0x06, 0xec, 0x65, 0x13, 0x55, 0x40, 0x09, 0x77, 0x63, 0xc2, 0xb0, + 0x4a, 0x01, 0x24, 0x1a, 0x28, 0x93, 0x64, 0xff, 0x1a, 0xc0, 0x93, 0x36, 0x0a, 0xc9, 0x71, 0x8f, + 0xb4, 0x02, 0x0f, 0x35, 0x93, 0x2b, 0xe2, 0x66, 0x69, 0x7d, 0x7a, 0xa3, 0x54, 0x7b, 0xe8, 0xe4, + 0x3d, 0x28, 0xe7, 0xb3, 0x3e, 0x7e, 0x47, 0xc2, 0xf5, 0xba, 0x16, 0x4f, 0x86, 0xec, 0x7c, 0xfb, + 0xbd, 0x1f, 0xcf, 0x2a, 0xc6, 0xdf, 0x67, 0x15, 0xe3, 0xbb, 0xbf, 0x7e, 0xde, 0x1c, 0x77, 0x98, + 0xf6, 0x16, 0x28, 0x8f, 0x7b, 0x0c, 0x3c, 0xa6, 0x2d, 0x8e, 0xe1, 0x1d, 0x50, 0x20, 0xbe, 0x7c, + 0x0a, 0xc5, 0x7a, 0x81, 0xf8, 0xf6, 0x99, 0x01, 0xac, 0x7d, 0x1e, 0x7c, 0xdc, 0xf2, 0x73, 0x1f, + 0xcf, 0x26, 0x58, 0x4c, 0x6f, 0x4f, 0x2f, 0xb0, 0x1f, 0x3d, 0xcf, 0xb2, 0x01, 0xcf, 0x7c, 0x58, + 0x03, 0x77, 0x53, 0x10, 0x3d, 0x6d, 0x61, 0xd6, 0x3f, 0x52, 0xf5, 0xb8, 0x96, 0xb4, 0xf3, 0x20, + 0xf1, 0xe9, 0xf3, 0xdb, 0xb6, 0xb3, 0x6d, 0xe5, 0x87, 0xdb, 0x6b, 0xe0, 0xdd, 0xdc, 0x0a, 0x55, + 0x47, 0xf6, 0x0b, 0x03, 0xbc, 0x93, 0x34, 0x9d, 0xec, 0x4a, 0x21, 0xf8, 0x9b, 0x54, 0xff, 0x3e, + 0xb8, 0xa3, 0xb1, 0x83, 0x65, 0xcf, 0x29, 0x6b, 0x5a, 0xf0, 0x52, 0x52, 0xe8, 0x10, 0xd2, 0xfe, + 0x16, 0xac, 0x8c, 0x54, 0xa0, 0xe7, 0xfd, 0x65, 0x7a, 0xc3, 0x3e, 0x16, 0x88, 0x84, 0x5c, 0xa6, + 0x2f, 0xd5, 0x9c, 0xfc, 0x7b, 0x18, 0xe8, 0x50, 0xf2, 0x3d, 0x95, 0x61, 0xfa, 0x2e, 0xd4, 0xe5, + 0x2b, 0x13, 0xdf, 0x2e, 0x26, 0x73, 0xb3, 0xbf, 0x00, 0xab, 0x69, 0xee, 0x9d, 0x30, 0x1c, 0x1a, + 0xc0, 0x68, 0x53, 0xc6, 0xc4, 0x4d, 0xfd, 0xaa, 0x2e, 0x63, 0x84, 0x59, 0x37, 0xb6, 0x0f, 0xe0, + 0x80, 0xcc, 0xc9, 0xd2, 0x4c, 0x43, 0x5e, 0xfb, 0xff, 0xea, 0xd1, 0x42, 0x46, 0xe7, 0x64, 0x02, + 0x78, 0x34, 0x3c, 0xa7, 0x82, 0x64, 0xba, 0xe1, 0x9c, 0x72, 0x27, 0xf4, 0x8b, 0x01, 0x56, 0x25, + 0x06, 0xfb, 0x7d, 0x0d, 0x4c, 0x14, 0x41, 0x82, 0xe0, 0x43, 0x30, 0x3f, 0xa0, 0x1f, 0xfd, 0x0b, + 0x99, 0xcb, 0xa8, 0xc7, 0x33, 0x1f, 0xde, 0x07, 0xb3, 0xaa, 0x5f, 0xfe, 0x1c, 0x31, 0xac, 0xae, + 0xa3, 0x58, 0x2f, 0x49, 0xdb, 0x91, 0x34, 0xc1, 0x03, 0xb0, 0x34, 0x40, 0xa5, 0xea, 0x95, 0xff, + 0x2d, 0x26, 0x98, 0xc9, 0x62, 0x26, 0x9f, 0xaa, 0x53, 0xd7, 0xff, 0x43, 0x01, 0x98, 0xe3, 0x1a, + 0xbe, 0xd1, 0x89, 0xe7, 0xaf, 0xac, 0x30, 0x59, 0x79, 0xa3, 0x2b, 0x63, 0x60, 0xad, 0xa9, 0xc6, + 0x9a, 0xf9, 0xff, 0x24, 0x25, 0x58, 0xaf, 0x70, 0x5a, 0xae, 0xd0, 0xcd, 0x5f, 0xe1, 0xd8, 0x8d, + 0xd4, 0xad, 0xe6, 0x38, 0x97, 0xde, 0x68, 0xed, 0xcf, 0x69, 0x30, 0xbd, 0xcf, 0x03, 0xf8, 0xc2, + 0x00, 0x4b, 0x39, 0x62, 0x07, 0x9f, 0xe4, 0xa7, 0xbc, 0xf6, 0x3b, 0xc1, 0xfa, 0xe0, 0x66, 0x41, + 0xfa, 0x19, 0x9c, 0x82, 0x85, 0x61, 0x65, 0x82, 0x5b, 0x63, 0x99, 0xc6, 0xc8, 0xac, 0x55, 0xbd, + 0x41, 0x84, 0x4e, 0xfc, 0x0d, 0x98, 0xcd, 0x0a, 0x0e, 0x7c, 0x34, 0xbe, 0xfc, 0x51, 0x65, 0xb4, + 0x1e, 0x4f, 0x88, 0xd6, 0xc9, 0x04, 0x98, 0x1f, 0xd2, 0x01, 0xe8, 0x5e, 0xcf, 0x30, 0xa2, 0x45, + 0xd6, 0xd6, 0xe4, 0x01, 0x2a, 0xeb, 0x6e, 0xf0, 0xea, 0xa2, 0x6c, 0xbc, 0xbe, 0x28, 0x1b, 0x7f, + 0x5c, 0x94, 0x8d, 0x97, 0x97, 0xe5, 0xa9, 0xd7, 0x97, 0xe5, 0xa9, 0xdf, 0x2e, 0xcb, 0x53, 0x60, + 0x85, 0xd0, 0x5c, 0xb6, 0x43, 0xe3, 0xab, 0x5a, 0x40, 0xc4, 0xf3, 0x76, 0xc3, 0x69, 0xd2, 0xc8, + 0xbd, 0x82, 0x3c, 0x26, 0x34, 0xf3, 0xcb, 0xed, 0xa6, 0xdf, 0x99, 0xa2, 0x17, 0x63, 0xde, 0x98, + 0x91, 0xdf, 0x37, 0x4f, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x37, 0xfb, 0xc1, 0xcf, 0x15, 0x0b, + 0x00, 0x00, } func (this *MsgCreateRewardProgramRequest) Equal(that interface{}) bool { diff --git a/x/trigger/keeper/event_detector.go b/x/trigger/keeper/event_detector.go index f017bdd5cb..9b548436f3 100644 --- a/x/trigger/keeper/event_detector.go +++ b/x/trigger/keeper/event_detector.go @@ -24,26 +24,28 @@ func (k Keeper) DetectBlockEvents(ctx sdk.Context) { // detectTransactionEvents Detects triggers that have been activated by transaction events. func (k Keeper) detectTransactionEvents(ctx sdk.Context) (triggers []types.Trigger) { - // TODO[1760]: event-history: Put this back once the event history stuff is back in the SDK. - /* - detectedTriggers := map[uint64]bool{} - terminator := func(trigger types.Trigger, triggerEvent types.TriggerEventI) bool { - return false - } + detectedTriggers := map[uint64]bool{} + terminator := func(trigger types.Trigger, triggerEvent types.TriggerEventI) bool { + return false + } - for _, event := range ctx.EventManager().GetABCIEventHistory() { - matched := k.getMatchingTriggersUntil(ctx, event.GetType(), func(trigger types.Trigger, triggerEvent types.TriggerEventI) bool { - if _, isDetected := detectedTriggers[trigger.Id]; isDetected { - return false - } - txEvent := triggerEvent.(*types.TransactionEvent) - detected := txEvent.Matches(event) - detectedTriggers[trigger.Id] = detected - return detected - }, terminator) - triggers = append(triggers, matched...) - } - */ + abciEventHistory, ok := ctx.EventManager().(sdk.EventManagerWithHistoryI) + if !ok { + panic("event manager does not implement EventManagerWithHistoryI") + } + + for _, event := range abciEventHistory.GetABCIEventHistory() { + matched := k.getMatchingTriggersUntil(ctx, event.GetType(), func(trigger types.Trigger, triggerEvent types.TriggerEventI) bool { + if _, isDetected := detectedTriggers[trigger.Id]; isDetected { + return false + } + txEvent := triggerEvent.(*types.TransactionEvent) + detected := txEvent.Matches(event) + detectedTriggers[trigger.Id] = detected + return detected + }, terminator) + triggers = append(triggers, matched...) + } return } diff --git a/x/trigger/keeper/event_detector_test.go b/x/trigger/keeper/event_detector_test.go index feb8ccc551..684aaaec1a 100644 --- a/x/trigger/keeper/event_detector_test.go +++ b/x/trigger/keeper/event_detector_test.go @@ -262,8 +262,9 @@ func (s *KeeperTestSuite) TestDetectBlockEvents() { s.ctx.GasMeter().RefundGas(s.ctx.GasMeter().GasConsumed(), "testing") registered = append(registered, trigger) } - // TODO[1760]: event-history: Put this back once the event history stuff is back in the SDK. - // s.ctx = s.ctx.WithEventManager(sdk.NewEventManagerWithHistory(s.ctx.EventManager().GetABCIEventHistory())) + abciEventHistory, ok := s.ctx.EventManager().(sdk.EventManagerWithHistoryI) + s.Require().True(ok, "event manager does not implement EventManagerWithHistoryI") + s.ctx = s.ctx.WithEventManager(sdk.NewEventManagerWithHistory(abciEventHistory.GetABCIEventHistory())) // Action s.app.TriggerKeeper.DetectBlockEvents(s.ctx) diff --git a/x/trigger/keeper/keeper_test.go b/x/trigger/keeper/keeper_test.go index 7a8abeffe2..0b58192224 100644 --- a/x/trigger/keeper/keeper_test.go +++ b/x/trigger/keeper/keeper_test.go @@ -88,10 +88,9 @@ func (s *KeeperTestSuite) SetupEventHistory() { event2, event3, } - // TODO[1760]: event-history: Put this back once the event history stuff is back in the SDK. - _ = loggedEvents - // eventManagerStub := sdk.NewEventManagerWithHistory(loggedEvents.ToABCIEvents()) - // s.ctx = s.ctx.WithEventManager(eventManagerStub) + + eventManagerStub := sdk.NewEventManagerWithHistory(loggedEvents.ToABCIEvents()) + s.ctx = s.ctx.WithEventManager(eventManagerStub) } func (s *KeeperTestSuite) CreateTrigger(id uint64, owner string, event types.TriggerEventI, action sdk.Msg) types.Trigger { diff --git a/x/trigger/simulation/operations_test.go b/x/trigger/simulation/operations_test.go index 4be9de1922..b01f90bc81 100644 --- a/x/trigger/simulation/operations_test.go +++ b/x/trigger/simulation/operations_test.go @@ -65,16 +65,13 @@ func (s *SimTestSuite) TestWeightedOperations() { r := rand.New(source) accs := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - expected := []struct { weight int opMsgRoute string opMsgName string }{ - {simappparams.DefaultWeightSubmitCreateTrigger, sdk.MsgTypeURL(&types.MsgCreateTriggerRequest{}), sdk.MsgTypeURL(&types.MsgCreateTriggerRequest{})}, - {simappparams.DefaultWeightSubmitDestroyTrigger, sdk.MsgTypeURL(&types.MsgDestroyTriggerRequest{}), sdk.MsgTypeURL(&types.MsgDestroyTriggerRequest{})}, + {weight: simappparams.DefaultWeightSubmitCreateTrigger, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgCreateTriggerRequest{})}, + {weight: simappparams.DefaultWeightSubmitDestroyTrigger, opMsgRoute: types.RouterKey, opMsgName: sdk.MsgTypeURL(&types.MsgDestroyTriggerRequest{})}, } expNames := make([]string, len(expected)) @@ -108,9 +105,6 @@ func (s *SimTestSuite) TestSimulateMsgCreateTrigger() { r := rand.New(source) accounts := s.getTestingAccounts(r, 3) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // bad operation op := simulation.SimulateMsgCreateTrigger(s.app.TriggerKeeper, s.app.AccountKeeper, s.app.BankKeeper) expBadOp := simtypes.NoOpMsg(sdk.MsgTypeURL(&types.MsgCreateTriggerRequest{}), sdk.MsgTypeURL(&types.MsgCreateTriggerRequest{}), "cannot choose 2 accounts because there are only 1") @@ -127,11 +121,11 @@ func (s *SimTestSuite) TestSimulateMsgCreateTrigger() { s.LogOperationMsg(operationMsg, "good") var msg types.MsgCreateTriggerRequest - s.Require().NoError(s.app.AppCodec().UnmarshalJSON(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") + s.Require().NoError(s.app.AppCodec().Unmarshal(operationMsg.Msg, &msg), "UnmarshalJSON(operationMsg.Msg)") s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Len(futureOperations, 0, "futureOperations") } @@ -148,9 +142,6 @@ func (s *SimTestSuite) TestSimulateMsgDestroyTrigger() { s.app.TriggerKeeper.SetEventListener(s.ctx, trigger) s.app.TriggerKeeper.SetGasLimit(s.ctx, trigger.GetId(), 1000) - // begin a new block - // s.app.BeginBlock(abci.RequestBeginBlock{Header: cmtproto.Header{Height: s.app.LastBlockHeight() + 1, AppHash: s.app.LastCommitID().Hash}}) // TODO[1760]: finalize-block - // execute operation op := simulation.SimulateMsgDestroyTrigger(s.app.TriggerKeeper, s.app.AccountKeeper, s.app.BankKeeper) operationMsg, futureOperations, err := op(r, s.app.BaseApp, s.ctx, accounts, "") @@ -162,7 +153,7 @@ func (s *SimTestSuite) TestSimulateMsgDestroyTrigger() { s.Assert().True(operationMsg.OK, "operationMsg.OK") s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Name, "operationMsg.Name") - s.Assert().Equal(sdk.MsgTypeURL(&msg), operationMsg.Route, "operationMsg.Route") + s.Assert().Equal(types.RouterKey, operationMsg.Route, "operationMsg.Route") s.Assert().Equal(1000, int(msg.GetId()), "msg.GetId()") s.Assert().Equal(accounts[0].Address.String(), msg.GetAuthority(), "msg.GetAuthority()") s.Assert().Len(futureOperations, 0, "futureOperations") diff --git a/x/trigger/types/tx.pb.go b/x/trigger/types/tx.pb.go index 82a7b50db9..62b2bef5e3 100644 --- a/x/trigger/types/tx.pb.go +++ b/x/trigger/types/tx.pb.go @@ -8,6 +8,7 @@ import ( fmt "fmt" _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -242,35 +243,36 @@ func init() { func init() { proto.RegisterFile("provenance/trigger/v1/tx.proto", fileDescriptor_4f001c93b8aeec1f) } var fileDescriptor_4f001c93b8aeec1f = []byte{ - // 437 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcf, 0x6e, 0xd4, 0x30, - 0x10, 0xc6, 0xd7, 0x1b, 0xfe, 0xd5, 0x55, 0x2b, 0x61, 0x2d, 0x22, 0x1b, 0xa4, 0x34, 0xda, 0xd3, - 0x0a, 0x69, 0x6d, 0xda, 0x4a, 0x1c, 0x2a, 0x71, 0xe8, 0x02, 0x07, 0x0e, 0x95, 0x50, 0xe0, 0xc4, - 0x05, 0x65, 0x13, 0xe3, 0x5a, 0x6a, 0x3d, 0xc1, 0x76, 0xa2, 0xe6, 0x2d, 0x38, 0x72, 0xec, 0x43, - 0xf4, 0x21, 0x10, 0x07, 0x54, 0x71, 0xe2, 0x88, 0x76, 0x2f, 0x1c, 0x78, 0x08, 0xd4, 0x38, 0xcb, - 0x6e, 0xdb, 0xb4, 0xda, 0x5b, 0xc6, 0xf3, 0x9b, 0xf9, 0xbe, 0x99, 0xd8, 0x38, 0xcc, 0x35, 0x94, - 0x5c, 0x25, 0x2a, 0xe5, 0xcc, 0x6a, 0x29, 0x04, 0xd7, 0xac, 0xdc, 0x66, 0xf6, 0x84, 0xe6, 0x1a, - 0x2c, 0x90, 0x47, 0x8b, 0x3c, 0x6d, 0xf2, 0xb4, 0xdc, 0x0e, 0xfa, 0x29, 0x98, 0x63, 0x30, 0x1f, - 0x6b, 0x88, 0xb9, 0xc0, 0x55, 0x04, 0x3d, 0x01, 0x02, 0xdc, 0xf9, 0xc5, 0x57, 0x73, 0xda, 0x17, - 0x00, 0xe2, 0x88, 0xb3, 0x3a, 0x9a, 0x14, 0x9f, 0x58, 0xa2, 0x2a, 0x97, 0x1a, 0xfc, 0x40, 0xf8, - 0xf1, 0x81, 0x11, 0x2f, 0x35, 0x4f, 0x2c, 0x7f, 0xef, 0x34, 0x62, 0xfe, 0xb9, 0xe0, 0xc6, 0x92, - 0x3d, 0xbc, 0x9e, 0x14, 0xf6, 0x10, 0xb4, 0xb4, 0x92, 0x1b, 0x1f, 0x45, 0xde, 0x70, 0x6d, 0xec, - 0xff, 0x3c, 0x1b, 0xf5, 0x1a, 0xcd, 0xfd, 0x2c, 0xd3, 0xdc, 0x98, 0x77, 0x56, 0x4b, 0x25, 0xe2, - 0x65, 0x98, 0xbc, 0xc0, 0x77, 0x79, 0xc9, 0x95, 0xf5, 0xbb, 0x11, 0x1a, 0xae, 0xef, 0xf4, 0xa8, - 0xb3, 0x40, 0xe7, 0x16, 0xe8, 0xbe, 0xaa, 0xc6, 0x0f, 0xbf, 0x9f, 0x8d, 0x36, 0x1a, 0xd1, 0xd7, - 0x17, 0xf4, 0x9b, 0xd8, 0x55, 0x11, 0x8a, 0xef, 0x27, 0xa9, 0x95, 0xa0, 0x8c, 0xef, 0x45, 0xde, - 0x4d, 0x0d, 0xe2, 0x39, 0xb4, 0xf7, 0xe0, 0xeb, 0xe9, 0x16, 0xfa, 0x73, 0xba, 0x85, 0x06, 0x4f, - 0xb1, 0x7f, 0x7d, 0x1e, 0x93, 0x83, 0x32, 0x9c, 0x6c, 0xe2, 0xae, 0xcc, 0x7c, 0x14, 0xa1, 0xe1, - 0x9d, 0xb8, 0x2b, 0xb3, 0xc1, 0x51, 0xcd, 0xbe, 0xe2, 0xc6, 0x6a, 0xa8, 0xae, 0x0c, 0x7f, 0x85, - 0x25, 0xcf, 0xf1, 0xda, 0x7c, 0xbe, 0xaa, 0x1e, 0xea, 0xb6, 0x55, 0x2c, 0xd0, 0x25, 0x67, 0x4f, - 0x70, 0xbf, 0x45, 0xcd, 0x59, 0xdb, 0xf9, 0x8b, 0xb0, 0x77, 0x60, 0x04, 0xc9, 0xf1, 0xc6, 0x25, - 0xef, 0x84, 0xd2, 0xd6, 0x4b, 0x40, 0x6f, 0xf8, 0x69, 0x01, 0x5b, 0x99, 0x6f, 0x96, 0x62, 0xf0, - 0xe6, 0x65, 0x4f, 0xe4, 0x96, 0x16, 0xad, 0xbb, 0x0a, 0x9e, 0xad, 0x5e, 0xe0, 0x44, 0xc7, 0xf2, - 0xdb, 0x34, 0x44, 0xe7, 0xd3, 0x10, 0xfd, 0x9e, 0x86, 0xe8, 0xcb, 0x2c, 0xec, 0x9c, 0xcf, 0xc2, - 0xce, 0xaf, 0x59, 0xd8, 0xc1, 0xbe, 0x84, 0xf6, 0x6e, 0x6f, 0xd1, 0x87, 0x5d, 0x21, 0xed, 0x61, - 0x31, 0xa1, 0x29, 0x1c, 0xb3, 0x05, 0x33, 0x92, 0xb0, 0x14, 0xb1, 0x93, 0xff, 0x4f, 0xc9, 0x56, - 0x39, 0x37, 0x93, 0x7b, 0xf5, 0x8d, 0xd9, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x02, 0x0c, 0x89, - 0xe1, 0x6d, 0x03, 0x00, 0x00, + // 461 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xbf, 0x6e, 0x13, 0x41, + 0x10, 0xc6, 0xbd, 0x36, 0x7f, 0x94, 0x8d, 0x12, 0x89, 0x95, 0x21, 0x1b, 0x23, 0x5d, 0x2c, 0x57, + 0x56, 0x24, 0xef, 0x92, 0x44, 0xa2, 0xb0, 0x44, 0x11, 0x03, 0x05, 0x45, 0x24, 0x74, 0x50, 0xd1, + 0xa0, 0xb3, 0xbd, 0x6c, 0x56, 0xc2, 0x3b, 0xc7, 0xce, 0xda, 0xca, 0x51, 0xf2, 0x04, 0x94, 0x94, + 0x79, 0x04, 0x8a, 0x3c, 0x04, 0xa2, 0x8a, 0xa8, 0xa8, 0x10, 0xb2, 0x0b, 0x28, 0x78, 0x08, 0xe4, + 0xdb, 0x33, 0x76, 0x82, 0x13, 0xb9, 0xbb, 0xd9, 0xf9, 0xcd, 0x7c, 0xdf, 0xcc, 0xed, 0xd2, 0x28, + 0x75, 0x30, 0x52, 0x36, 0xb1, 0x3d, 0x25, 0xbd, 0x33, 0x5a, 0x2b, 0x27, 0x47, 0x7b, 0xd2, 0x9f, + 0x88, 0xd4, 0x81, 0x07, 0x76, 0x77, 0x9e, 0x17, 0x45, 0x5e, 0x8c, 0xf6, 0x6a, 0x5b, 0x3d, 0xc0, + 0x01, 0xa0, 0x1c, 0xa0, 0x9e, 0xe2, 0x03, 0xd4, 0x81, 0xaf, 0x6d, 0x87, 0xc4, 0xeb, 0x3c, 0x92, + 0x21, 0x28, 0x52, 0x55, 0x0d, 0x1a, 0xc2, 0xf9, 0xf4, 0x6b, 0x56, 0xa0, 0x01, 0xf4, 0x5b, 0x25, + 0xf3, 0xa8, 0x3b, 0x7c, 0x23, 0x13, 0x9b, 0x85, 0x54, 0xe3, 0x07, 0xa1, 0x5b, 0x47, 0xa8, 0x1f, + 0x3b, 0x95, 0x78, 0xf5, 0x32, 0x88, 0xc7, 0xea, 0xdd, 0x50, 0xa1, 0x67, 0x6d, 0xba, 0x9e, 0x0c, + 0xfd, 0x31, 0x38, 0xe3, 0x8d, 0x42, 0x4e, 0xea, 0x95, 0xe6, 0x5a, 0x87, 0x7f, 0x3b, 0x6b, 0x55, + 0x0b, 0xcd, 0xc3, 0x7e, 0xdf, 0x29, 0xc4, 0x17, 0xde, 0x19, 0xab, 0xe3, 0x45, 0x98, 0x3d, 0xa2, + 0x37, 0xd5, 0x48, 0x59, 0xcf, 0xcb, 0x75, 0xd2, 0x5c, 0xdf, 0xaf, 0x8a, 0x60, 0x41, 0xcc, 0x2c, + 0x88, 0x43, 0x9b, 0x75, 0xee, 0x7c, 0x3d, 0x6b, 0x6d, 0x14, 0xa2, 0x4f, 0xa7, 0xf4, 0xb3, 0x38, + 0x54, 0x31, 0x41, 0x6f, 0x27, 0x3d, 0x6f, 0xc0, 0x22, 0xaf, 0xd4, 0x2b, 0x57, 0x35, 0x88, 0x67, + 0x50, 0x9b, 0x7f, 0x3a, 0xdd, 0x21, 0xbf, 0x4f, 0x77, 0xc8, 0x87, 0x5f, 0x9f, 0x77, 0x17, 0x8d, + 0x34, 0x76, 0x29, 0xff, 0x7f, 0x3e, 0x4c, 0xc1, 0xa2, 0x62, 0x9b, 0xb4, 0x6c, 0xfa, 0x9c, 0xd4, + 0x49, 0xf3, 0x46, 0x5c, 0x36, 0xfd, 0xc6, 0xfb, 0x9c, 0x7d, 0xa2, 0xd0, 0x3b, 0xc8, 0x2e, 0x2d, + 0xe3, 0x12, 0xcb, 0x1e, 0xd2, 0xb5, 0x99, 0x4c, 0x96, 0x0f, 0x79, 0xdd, 0x6a, 0xe6, 0x68, 0xfb, + 0xde, 0xa2, 0xd3, 0xf9, 0x79, 0xe3, 0x3e, 0xdd, 0x5e, 0xa2, 0x1d, 0x8c, 0xee, 0xff, 0x21, 0xb4, + 0x72, 0x84, 0x9a, 0xa5, 0x74, 0xe3, 0xc2, 0x24, 0x4c, 0x88, 0xa5, 0x77, 0x47, 0x5c, 0xf1, 0x4b, + 0x6b, 0x72, 0x65, 0xbe, 0x58, 0x11, 0xd2, 0xcd, 0x8b, 0x9e, 0xd8, 0x35, 0x2d, 0x96, 0x6e, 0xae, + 0xf6, 0x60, 0xf5, 0x82, 0x20, 0xda, 0x31, 0x5f, 0xc6, 0x11, 0x39, 0x1f, 0x47, 0xe4, 0xe7, 0x38, + 0x22, 0x1f, 0x27, 0x51, 0xe9, 0x7c, 0x12, 0x95, 0xbe, 0x4f, 0xa2, 0x12, 0xe5, 0x06, 0x96, 0x77, + 0x7b, 0x4e, 0x5e, 0x1d, 0x68, 0xe3, 0x8f, 0x87, 0x5d, 0xd1, 0x83, 0x81, 0x9c, 0x33, 0x2d, 0x03, + 0x0b, 0x91, 0x3c, 0xf9, 0xf7, 0x02, 0x7d, 0x96, 0x2a, 0xec, 0xde, 0xca, 0xef, 0xd3, 0xc1, 0xdf, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x51, 0x3f, 0x32, 0x2a, 0xa4, 0x03, 0x00, 0x00, } func (this *MsgCreateTriggerRequest) Equal(that interface{}) bool {