diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index ace6b778f..799771c33 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,7 +3,7 @@ name: Bug report about: Create a report to help us improve title: '' labels: 'kind/bug' -assignees: 'RiccardoM' +assignees: 'MonikaCat' --- Running linter" + @go run $(golangci_lint_cmd) run --timeout=10m lint-fix: - golangci-lint run --fix --out-format=tab --issues-exit-code=0 + @echo "--> Running linter" + @go run $(golangci_lint_cmd) run --fix --out-format=tab --issues-exit-code=0 + .PHONY: lint lint-fix format: - find . -name '*.go' -type f -not -path "*.git*" | xargs gofmt -w -s - find . -name '*.go' -type f -not -path "*.git*" | xargs misspell -w - find . -name '*.go' -type f -not -path "*.git*" | xargs goimports -w -local github.com/forbole/bdjuno + find . -name '*.go' -type f -not -path "*.git*" -not -name '*.pb.go' -not -name '*_mocks.go' | xargs gofmt -w -s + find . -name '*.go' -type f -not -path "*.git*" -not -name '*.pb.go' -not -name '*_mocks.go' | xargs misspell -w + find . -name '*.go' -type f -not -path "*.git*" -not -name '*.pb.go' -not -name '*_mocks.go' | xargs goimports -w -local github.com/forbole/bdjuno .PHONY: format clean: diff --git a/cmd/bdjuno/main.go b/cmd/bdjuno/main.go index 0ef3cda57..9d36c89fe 100644 --- a/cmd/bdjuno/main.go +++ b/cmd/bdjuno/main.go @@ -2,25 +2,25 @@ package main import ( "github.com/cosmos/cosmos-sdk/types/module" - "github.com/forbole/juno/v3/cmd" - initcmd "github.com/forbole/juno/v3/cmd/init" - parsetypes "github.com/forbole/juno/v3/cmd/parse/types" - startcmd "github.com/forbole/juno/v3/cmd/start" - "github.com/forbole/juno/v3/modules/messages" + "github.com/forbole/juno/v5/cmd" + initcmd "github.com/forbole/juno/v5/cmd/init" + parsetypes "github.com/forbole/juno/v5/cmd/parse/types" + startcmd "github.com/forbole/juno/v5/cmd/start" + "github.com/forbole/juno/v5/modules/messages" - migratecmd "github.com/forbole/bdjuno/v3/cmd/migrate" - parsecmd "github.com/forbole/bdjuno/v3/cmd/parse" + migratecmd "github.com/forbole/bdjuno/v4/cmd/migrate" + parsecmd "github.com/forbole/bdjuno/v4/cmd/parse" - "github.com/forbole/bdjuno/v3/types/config" + "github.com/forbole/bdjuno/v4/types/config" - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/bdjuno/v3/modules" - "github.com/forbole/bdjuno/v3/modules/assetft" - "github.com/forbole/bdjuno/v3/modules/assetnft" - "github.com/forbole/bdjuno/v3/modules/nft" - "github.com/forbole/bdjuno/v3/modules/wasm" + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules" + "github.com/forbole/bdjuno/v4/modules/assetft" + "github.com/forbole/bdjuno/v4/modules/assetnft" + "github.com/forbole/bdjuno/v4/modules/nft" + "github.com/forbole/bdjuno/v4/modules/wasm" - coreumapp "github.com/CoreumFoundation/coreum/v2/app" + coreumapp "github.com/CoreumFoundation/coreum/v3/app" ) func main() { diff --git a/cmd/migrate/cmd.go b/cmd/migrate/cmd.go index 0aa4ac6bb..06810e3a6 100644 --- a/cmd/migrate/cmd.go +++ b/cmd/migrate/cmd.go @@ -4,18 +4,16 @@ import ( "fmt" "os" - v2 "github.com/forbole/juno/v3/cmd/migrate/v2" - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" "github.com/spf13/cobra" - v3 "github.com/forbole/bdjuno/v3/cmd/migrate/v3" + v3 "github.com/forbole/bdjuno/v4/cmd/migrate/v3" ) type Migrator func(parseCfg *parsecmdtypes.Config) error var ( migrations = map[string]Migrator{ - "v2": v2.RunMigration, "v3": v3.RunMigration, } ) @@ -34,8 +32,7 @@ func NewMigrateCmd(appName string, parseConfig *parsecmdtypes.Config) *cobra.Com Use: "migrate [to-version]", Short: "Perform the migrations from the current version to the specified one", Long: `Migrates all the necessary things (config file, database, etc) from the current version to the new one. -If you are upgrading from a very old version to the latest one, migrations must be performed in order -(eg. to migrate from v1 to v3 you need to do v1 -> v2 and then v2 -> v3). +Note that migrations must be performed in order: to migrate from vX to vX+2 you need to do vX -> vX+1 and then vX+1 -> vX+2. `, Example: fmt.Sprintf("%s migrate v3", appName), Args: cobra.RangeArgs(0, 1), diff --git a/cmd/migrate/v3/migrate.go b/cmd/migrate/v3/migrate.go index 62d2dcdf1..c32361c39 100644 --- a/cmd/migrate/v3/migrate.go +++ b/cmd/migrate/v3/migrate.go @@ -4,20 +4,20 @@ import ( "fmt" "os" - "github.com/forbole/bdjuno/v3/modules/actions" + "github.com/forbole/bdjuno/v4/modules/actions" - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" "gopkg.in/yaml.v3" - junov3 "github.com/forbole/juno/v3/cmd/migrate/v3" - "github.com/forbole/juno/v3/types/config" + junov4 "github.com/forbole/juno/v5/cmd/migrate/v4" + "github.com/forbole/juno/v5/types/config" ) // RunMigration runs the migrations from v2 to v3 func RunMigration(parseConfig *parsecmdtypes.Config) error { // Run Juno migration - err := junov3.RunMigration(parseConfig) + err := junov4.RunMigration(parseConfig) if err != nil { return err } @@ -59,7 +59,7 @@ func migrateConfig() (Config, error) { } if cfg.Actions == nil { - cfg.Actions = actions.NewConfig(3000, nil) + cfg.Actions = actions.NewConfig("127.0.0.1", 3000, nil) } return cfg, nil diff --git a/cmd/migrate/v3/types.go b/cmd/migrate/v3/types.go index a93e3d1eb..01d44c815 100644 --- a/cmd/migrate/v3/types.go +++ b/cmd/migrate/v3/types.go @@ -1,9 +1,9 @@ package v3 import ( - v3 "github.com/forbole/juno/v3/cmd/migrate/v3" + v3 "github.com/forbole/juno/v5/cmd/migrate/v3" - "github.com/forbole/bdjuno/v3/modules/actions" + "github.com/forbole/bdjuno/v4/modules/actions" ) type Config struct { diff --git a/cmd/migrate/v3/utils.go b/cmd/migrate/v3/utils.go index 9444285d9..37fc66f09 100644 --- a/cmd/migrate/v3/utils.go +++ b/cmd/migrate/v3/utils.go @@ -5,7 +5,7 @@ import ( "os" "path" - "github.com/forbole/juno/v3/types/config" + "github.com/forbole/juno/v5/types/config" "gopkg.in/yaml.v3" ) diff --git a/cmd/parse/auth/cmd.go b/cmd/parse/auth/cmd.go index 4012bb1e2..f91f6ced6 100644 --- a/cmd/parse/auth/cmd.go +++ b/cmd/parse/auth/cmd.go @@ -1,7 +1,7 @@ package auth import ( - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" "github.com/spf13/cobra" ) diff --git a/cmd/parse/auth/vesting.go b/cmd/parse/auth/vesting.go index a35eaad02..a3e6253db 100644 --- a/cmd/parse/auth/vesting.go +++ b/cmd/parse/auth/vesting.go @@ -4,13 +4,13 @@ import ( "encoding/json" "fmt" - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" - "github.com/forbole/juno/v3/types/config" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" "github.com/spf13/cobra" - "github.com/forbole/bdjuno/v3/database" - authutils "github.com/forbole/bdjuno/v3/modules/auth" - "github.com/forbole/bdjuno/v3/utils" + "github.com/forbole/bdjuno/v4/database" + authutils "github.com/forbole/bdjuno/v4/modules/auth" + "github.com/forbole/bdjuno/v4/utils" ) // vestingCmd returns a Cobra command that allows to fix the vesting data for the accounts @@ -38,7 +38,7 @@ func vestingCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { return fmt.Errorf("error unmarshalling genesis doc: %s", err) } - vestingAccounts, err := authutils.GetGenesisVestingAccounts(appState, parseCtx.EncodingConfig.Marshaler) + vestingAccounts, err := authutils.GetGenesisVestingAccounts(appState, parseCtx.EncodingConfig.Codec) if err != nil { return fmt.Errorf("error while gestting vesting accounts: %s", err) } diff --git a/cmd/parse/bank/cmd.go b/cmd/parse/bank/cmd.go new file mode 100644 index 000000000..94d3ae68b --- /dev/null +++ b/cmd/parse/bank/cmd.go @@ -0,0 +1,20 @@ +package bank + +import ( + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/spf13/cobra" +) + +// NewBankCmd returns the Cobra command allowing to fix various things related to the x/bank module +func NewBankCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + cmd := &cobra.Command{ + Use: "bank", + Short: "Fix things related to the x/bank module", + } + + cmd.AddCommand( + supplyCmd(parseConfig), + ) + + return cmd +} diff --git a/cmd/parse/bank/supply.go b/cmd/parse/bank/supply.go new file mode 100644 index 000000000..dab2d8fc9 --- /dev/null +++ b/cmd/parse/bank/supply.go @@ -0,0 +1,46 @@ +package bank + +import ( + "fmt" + + modulestypes "github.com/forbole/bdjuno/v4/modules/types" + + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" + "github.com/spf13/cobra" + + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/bank" +) + +// supplyCmd returns the Cobra command allowing to refresh x/bank total supply +func supplyCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + return &cobra.Command{ + Use: "supply", + Short: "Refresh total supply", + RunE: func(cmd *cobra.Command, args []string) error { + parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parseConfig) + if err != nil { + return err + } + + sources, err := modulestypes.BuildSources(config.Cfg.Node, parseCtx.EncodingConfig) + if err != nil { + return err + } + + // Get the database + db := database.Cast(parseCtx.Database) + + // Build bank module + bankModule := bank.NewModule(nil, sources.BankSource, parseCtx.EncodingConfig.Codec, db) + + err = bankModule.UpdateSupply() + if err != nil { + return fmt.Errorf("error while getting latest bank supply: %s", err) + } + + return nil + }, + } +} diff --git a/cmd/parse/distribution/cmd.go b/cmd/parse/distribution/cmd.go new file mode 100644 index 000000000..086a9fe99 --- /dev/null +++ b/cmd/parse/distribution/cmd.go @@ -0,0 +1,20 @@ +package distribution + +import ( + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/spf13/cobra" +) + +// NewDistributionCmd returns the Cobra command allowing to fix various things related to the x/distribution module +func NewDistributionCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + cmd := &cobra.Command{ + Use: "distribution", + Short: "Fix things related to the x/distribution module", + } + + cmd.AddCommand( + communityPoolCmd(parseConfig), + ) + + return cmd +} diff --git a/cmd/parse/distribution/communitypool.go b/cmd/parse/distribution/communitypool.go new file mode 100644 index 000000000..e898df353 --- /dev/null +++ b/cmd/parse/distribution/communitypool.go @@ -0,0 +1,45 @@ +package distribution + +import ( + "fmt" + + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" + "github.com/spf13/cobra" + + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/distribution" + modulestypes "github.com/forbole/bdjuno/v4/modules/types" +) + +// communityPoolCmd returns the Cobra command allowing to refresh community pool +func communityPoolCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + return &cobra.Command{ + Use: "community-pool", + Short: "Refresh community pool", + RunE: func(cmd *cobra.Command, args []string) error { + parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parseConfig) + if err != nil { + return err + } + + sources, err := modulestypes.BuildSources(config.Cfg.Node, parseCtx.EncodingConfig) + if err != nil { + return err + } + + // Get the database + db := database.Cast(parseCtx.Database) + + // Build distribution module + distrModule := distribution.NewModule(sources.DistrSource, parseCtx.EncodingConfig.Codec, db) + + err = distrModule.GetLatestCommunityPool() + if err != nil { + return fmt.Errorf("error while updating community pool: %s", err) + } + + return nil + }, + } +} diff --git a/cmd/parse/feegrant/allowance.go b/cmd/parse/feegrant/allowance.go index 906fc9845..c2c74dc45 100644 --- a/cmd/parse/feegrant/allowance.go +++ b/cmd/parse/feegrant/allowance.go @@ -3,20 +3,19 @@ package feegrant import ( "encoding/hex" "fmt" + "sort" - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" - "github.com/forbole/juno/v3/types/config" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" - "github.com/forbole/bdjuno/v3/modules/feegrant" - "github.com/forbole/bdjuno/v3/utils" + "github.com/forbole/bdjuno/v4/modules/feegrant" + "github.com/forbole/bdjuno/v4/utils" "github.com/spf13/cobra" - "github.com/forbole/bdjuno/v3/database" - - "sort" + "github.com/forbole/bdjuno/v4/database" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" + tmctypes "github.com/cometbft/cometbft/rpc/core/types" feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant" "github.com/rs/zerolog/log" @@ -37,7 +36,7 @@ func allowanceCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { db := database.Cast(parseCtx.Database) // Build feegrant module - feegrantModule := feegrant.NewModule(parseCtx.EncodingConfig.Marshaler, db) + feegrantModule := feegrant.NewModule(parseCtx.EncodingConfig.Codec, db) // Get the accounts // Collect all the transactions diff --git a/cmd/parse/feegrant/cmd.go b/cmd/parse/feegrant/cmd.go index 40438d3ba..d08909c4f 100644 --- a/cmd/parse/feegrant/cmd.go +++ b/cmd/parse/feegrant/cmd.go @@ -1,7 +1,7 @@ package feegrant import ( - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" "github.com/spf13/cobra" ) diff --git a/cmd/parse/gov/cmd.go b/cmd/parse/gov/cmd.go index 8b9619a1e..f86d8ca1e 100644 --- a/cmd/parse/gov/cmd.go +++ b/cmd/parse/gov/cmd.go @@ -1,7 +1,7 @@ package gov import ( - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" "github.com/spf13/cobra" ) diff --git a/cmd/parse/gov/proposal.go b/cmd/parse/gov/proposal.go index eb633e900..2c0e9f3c7 100644 --- a/cmd/parse/gov/proposal.go +++ b/cmd/parse/gov/proposal.go @@ -3,19 +3,29 @@ package gov import ( "encoding/hex" "fmt" + "strconv" - modulestypes "github.com/forbole/bdjuno/v3/modules/types" + "github.com/forbole/bdjuno/v4/modules/assetft" + "github.com/forbole/bdjuno/v4/modules/assetnft" + "github.com/forbole/bdjuno/v4/modules/customparams" + "github.com/forbole/bdjuno/v4/modules/feemodel" + "github.com/rs/zerolog/log" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" - "github.com/forbole/juno/v3/types/config" - "github.com/spf13/cobra" + modulestypes "github.com/forbole/bdjuno/v4/modules/types" - "github.com/forbole/juno/v3/parser" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/parser" + "github.com/forbole/juno/v5/types/config" + "github.com/spf13/cobra" - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/bdjuno/v3/modules/gov" - "github.com/forbole/bdjuno/v3/utils" + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/distribution" + "github.com/forbole/bdjuno/v4/modules/gov" + "github.com/forbole/bdjuno/v4/modules/mint" + "github.com/forbole/bdjuno/v4/modules/slashing" + "github.com/forbole/bdjuno/v4/modules/staking" + "github.com/forbole/bdjuno/v4/utils" ) // proposalCmd returns the Cobra command allowing to fix all things related to a proposal @@ -24,7 +34,10 @@ func proposalCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { Use: "proposal [id]", Short: "Get the description, votes and everything related to a proposal given its id", RunE: func(cmd *cobra.Command, args []string) error { - proposalID := args[0] + proposalID, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parseConfig) if err != nil { @@ -39,8 +52,30 @@ func proposalCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { // Get the database db := database.Cast(parseCtx.Database) + // Build expected modules of gov modules for handleParamChangeProposal + distrModule := distribution.NewModule(sources.DistrSource, parseCtx.EncodingConfig.Codec, db) + mintModule := mint.NewModule(sources.MintSource, parseCtx.EncodingConfig.Codec, db) + slashingModule := slashing.NewModule(sources.SlashingSource, parseCtx.EncodingConfig.Codec, db) + stakingModule := staking.NewModule(sources.StakingSource, parseCtx.EncodingConfig.Codec, db) + feeModelModule := feemodel.NewModule(sources.FeeModelSource, parseCtx.EncodingConfig.Codec, db) + customParamsModule := customparams.NewModule(sources.CustomParamsSource, parseCtx.EncodingConfig.Codec, db) + assetFTModule := assetft.NewModule(sources.AssetFTSource, parseCtx.EncodingConfig.Codec, db) + assetNFTModule := assetnft.NewModule(sources.AssetNFTSource, parseCtx.EncodingConfig.Codec, db) + // Build the gov module - govModule := gov.NewModule(sources.GovSource, nil, nil, nil, nil, nil, nil, nil, nil, nil, parseCtx.EncodingConfig.Marshaler, db) + govModule := gov.NewModule( + sources.GovSource, + distrModule, + mintModule, + slashingModule, + stakingModule, + feeModelModule, + customParamsModule, + assetFTModule, + assetNFTModule, + parseCtx.EncodingConfig.Codec, + db, + ) err = refreshProposalDetails(parseCtx, proposalID, govModule) if err != nil { @@ -57,14 +92,37 @@ func proposalCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { return err } + // Update the proposal to the latest status + height, err := parseCtx.Node.LatestHeight() + if err != nil { + return fmt.Errorf("error while getting chain latest block height: %s", err) + } + + err = govModule.UpdateProposalStatus(height, proposalID) + if err != nil { + return err + } + + err = govModule.UpdateProposalTallyResult(proposalID, height) + if err != nil { + return err + } + + err = govModule.UpdateProposalStakingPoolSnapshot(height, proposalID) + if err != nil { + return err + } + return nil }, } } -func refreshProposalDetails(parseCtx *parser.Context, proposalID string, govModule *gov.Module) error { +func refreshProposalDetails(parseCtx *parser.Context, proposalID uint64, govModule *gov.Module) error { + log.Debug().Msg("refreshing proposal details") + // Get the tx that created the proposal - txs, err := utils.QueryTxs(parseCtx.Node, fmt.Sprintf("submit_proposal.proposal_id=%s", proposalID)) + txs, err := utils.QueryTxs(parseCtx.Node, fmt.Sprintf("submit_proposal.proposal_id=%d", proposalID)) if err != nil { return err } @@ -73,6 +131,11 @@ func refreshProposalDetails(parseCtx *parser.Context, proposalID string, govModu return fmt.Errorf("expecting only one create proposal transaction, found %d", len(txs)) } + if len(txs) == 0 { + fmt.Printf("error: couldn't find submit proposal tx info") + return nil + } + // Get the tx details tx, err := parseCtx.Node.Tx(hex.EncodeToString(txs[0].Tx.Hash())) if err != nil { @@ -81,7 +144,7 @@ func refreshProposalDetails(parseCtx *parser.Context, proposalID string, govModu // Handle the MsgSubmitProposal messages for index, msg := range tx.GetMsgs() { - if _, ok := msg.(*govtypes.MsgSubmitProposal); !ok { + if _, ok := msg.(*govtypesv1.MsgSubmitProposal); !ok { continue } @@ -94,9 +157,11 @@ func refreshProposalDetails(parseCtx *parser.Context, proposalID string, govModu return nil } -func refreshProposalDeposits(parseCtx *parser.Context, proposalID string, govModule *gov.Module) error { +func refreshProposalDeposits(parseCtx *parser.Context, proposalID uint64, govModule *gov.Module) error { + log.Debug().Msg("refreshing proposal deposits") + // Get the tx that deposited to the proposal - txs, err := utils.QueryTxs(parseCtx.Node, fmt.Sprintf("proposal_deposit.proposal_id=%s", proposalID)) + txs, err := utils.QueryTxs(parseCtx.Node, fmt.Sprintf("proposal_deposit.proposal_id=%d", proposalID)) if err != nil { return err } @@ -110,7 +175,7 @@ func refreshProposalDeposits(parseCtx *parser.Context, proposalID string, govMod // Handle the MsgDeposit messages for index, msg := range junoTx.GetMsgs() { - if _, ok := msg.(*govtypes.MsgDeposit); !ok { + if _, ok := msg.(*govtypesv1.MsgDeposit); !ok { continue } @@ -124,9 +189,11 @@ func refreshProposalDeposits(parseCtx *parser.Context, proposalID string, govMod return nil } -func refreshProposalVotes(parseCtx *parser.Context, proposalID string, govModule *gov.Module) error { +func refreshProposalVotes(parseCtx *parser.Context, proposalID uint64, govModule *gov.Module) error { + log.Debug().Msg("refreshing proposal votes") + // Get the tx that voted the proposal - txs, err := utils.QueryTxs(parseCtx.Node, fmt.Sprintf("proposal_vote.proposal_id=%s", proposalID)) + txs, err := utils.QueryTxs(parseCtx.Node, fmt.Sprintf("proposal_vote.proposal_id=%d", proposalID)) if err != nil { return err } @@ -140,13 +207,23 @@ func refreshProposalVotes(parseCtx *parser.Context, proposalID string, govModule // Handle the MsgVote messages for index, msg := range junoTx.GetMsgs() { - if _, ok := msg.(*govtypes.MsgVote); !ok { + if msgVote, ok := msg.(*govtypesv1.MsgVote); !ok { continue - } - - err = govModule.HandleMsg(index, msg, junoTx) - if err != nil { - return fmt.Errorf("error while handling MsgVote: %s", err) + } else { + // check if requested proposal ID is the same as proposal ID returned + // from the msg as some txs may contain multiple MsgVote msgs + // for different proposals which can cause error if one of the proposals + // info is not stored in database + if proposalID == msgVote.ProposalId { + err = govModule.HandleMsg(index, msg, junoTx) + if err != nil { + return fmt.Errorf("error while handling MsgVote: %s", err) + } + } else { + // skip votes for proposals with IDs + // different than requested in the query + continue + } } } } diff --git a/cmd/parse/mint/cmd.go b/cmd/parse/mint/cmd.go new file mode 100644 index 000000000..5c45f1faf --- /dev/null +++ b/cmd/parse/mint/cmd.go @@ -0,0 +1,20 @@ +package mint + +import ( + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/spf13/cobra" +) + +// NewMintCmd returns the Cobra command allowing to fix various things related to the x/mint module +func NewMintCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + cmd := &cobra.Command{ + Use: "mint", + Short: "Fix things related to the x/mint module", + } + + cmd.AddCommand( + inflationCmd(parseConfig), + ) + + return cmd +} diff --git a/cmd/parse/mint/inflation.go b/cmd/parse/mint/inflation.go new file mode 100644 index 000000000..b2d514fc5 --- /dev/null +++ b/cmd/parse/mint/inflation.go @@ -0,0 +1,45 @@ +package mint + +import ( + "fmt" + + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" + "github.com/spf13/cobra" + + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/mint" + modulestypes "github.com/forbole/bdjuno/v4/modules/types" +) + +// inflationCmd returns the Cobra command allowing to refresh x/mint inflation +func inflationCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + return &cobra.Command{ + Use: "inflation", + Short: "Refresh inflation", + RunE: func(cmd *cobra.Command, args []string) error { + parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parseConfig) + if err != nil { + return err + } + + sources, err := modulestypes.BuildSources(config.Cfg.Node, parseCtx.EncodingConfig) + if err != nil { + return err + } + + // Get the database + db := database.Cast(parseCtx.Database) + + // Build mint module + mintModule := mint.NewModule(sources.MintSource, parseCtx.EncodingConfig.Codec, db) + + err = mintModule.UpdateInflation() + if err != nil { + return fmt.Errorf("error while updating inflation: %s", err) + } + + return nil + }, + } +} diff --git a/cmd/parse/parse.go b/cmd/parse/parse.go index 5d64c551b..ab6425591 100644 --- a/cmd/parse/parse.go +++ b/cmd/parse/parse.go @@ -1,18 +1,23 @@ package parse import ( - parse "github.com/forbole/juno/v3/cmd/parse/types" + parse "github.com/forbole/juno/v5/cmd/parse/types" "github.com/spf13/cobra" - parseblocks "github.com/forbole/juno/v3/cmd/parse/blocks" + parseblocks "github.com/forbole/juno/v5/cmd/parse/blocks" - parsegenesis "github.com/forbole/juno/v3/cmd/parse/genesis" + parsegenesis "github.com/forbole/juno/v5/cmd/parse/genesis" - parseauth "github.com/forbole/bdjuno/v3/cmd/parse/auth" - parsefeegrant "github.com/forbole/bdjuno/v3/cmd/parse/feegrant" - parsegov "github.com/forbole/bdjuno/v3/cmd/parse/gov" - parsestaking "github.com/forbole/bdjuno/v3/cmd/parse/staking" - parsetransaction "github.com/forbole/juno/v3/cmd/parse/transactions" + parsetransaction "github.com/forbole/juno/v5/cmd/parse/transactions" + + parseauth "github.com/forbole/bdjuno/v4/cmd/parse/auth" + parsebank "github.com/forbole/bdjuno/v4/cmd/parse/bank" + parsedistribution "github.com/forbole/bdjuno/v4/cmd/parse/distribution" + parsefeegrant "github.com/forbole/bdjuno/v4/cmd/parse/feegrant" + parsegov "github.com/forbole/bdjuno/v4/cmd/parse/gov" + parsemint "github.com/forbole/bdjuno/v4/cmd/parse/mint" + parsepricefeed "github.com/forbole/bdjuno/v4/cmd/parse/pricefeed" + parsestaking "github.com/forbole/bdjuno/v4/cmd/parse/staking" ) // NewParseCmd returns the Cobra command allowing to parse some chain data without having to re-sync the whole database @@ -25,10 +30,14 @@ func NewParseCmd(parseCfg *parse.Config) *cobra.Command { cmd.AddCommand( parseauth.NewAuthCmd(parseCfg), + parsebank.NewBankCmd(parseCfg), parseblocks.NewBlocksCmd(parseCfg), + parsedistribution.NewDistributionCmd(parseCfg), parsefeegrant.NewFeegrantCmd(parseCfg), parsegenesis.NewGenesisCmd(parseCfg), parsegov.NewGovCmd(parseCfg), + parsemint.NewMintCmd(parseCfg), + parsepricefeed.NewPricefeedCmd(parseCfg), parsestaking.NewStakingCmd(parseCfg), parsetransaction.NewTransactionsCmd(parseCfg), ) diff --git a/cmd/parse/pricefeed/cmd.go b/cmd/parse/pricefeed/cmd.go new file mode 100644 index 000000000..51e705cf7 --- /dev/null +++ b/cmd/parse/pricefeed/cmd.go @@ -0,0 +1,21 @@ +package pricefeed + +import ( + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/spf13/cobra" +) + +// NewPricefeedCmd returns the Cobra command allowing to refresh pricefeed +func NewPricefeedCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + cmd := &cobra.Command{ + Use: "pricefeed", + Short: "Fix things related to the pricefeed module", + } + + cmd.AddCommand( + priceCmd(parseConfig), + priceHistoryCmd(parseConfig), + ) + + return cmd +} diff --git a/cmd/parse/pricefeed/price.go b/cmd/parse/pricefeed/price.go new file mode 100644 index 000000000..209f0fd1e --- /dev/null +++ b/cmd/parse/pricefeed/price.go @@ -0,0 +1,44 @@ +package pricefeed + +import ( + "fmt" + + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" + "github.com/spf13/cobra" + + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/pricefeed" +) + +// priceCmd returns the Cobra command allowing to refresh token price +func priceCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + return &cobra.Command{ + Use: "price", + Short: "Refresh token price", + RunE: func(cmd *cobra.Command, args []string) error { + parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parseConfig) + if err != nil { + return err + } + + // Get the database + db := database.Cast(parseCtx.Database) + + // Build pricefeed module + pricefeedModule := pricefeed.NewModule(config.Cfg, parseCtx.EncodingConfig.Codec, db) + + err = pricefeedModule.RunAdditionalOperations() + if err != nil { + return fmt.Errorf("error while storing tokens: %s", err) + } + + err = pricefeedModule.UpdatePrice() + if err != nil { + return fmt.Errorf("error while updating price: %s", err) + } + + return nil + }, + } +} diff --git a/cmd/parse/pricefeed/pricehistory.go b/cmd/parse/pricefeed/pricehistory.go new file mode 100644 index 000000000..d0b0f57fb --- /dev/null +++ b/cmd/parse/pricefeed/pricehistory.go @@ -0,0 +1,44 @@ +package pricefeed + +import ( + "fmt" + + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" + "github.com/spf13/cobra" + + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/pricefeed" +) + +// priceHistoryCmd returns the Cobra command allowing to store token price history +func priceHistoryCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + return &cobra.Command{ + Use: "history", + Short: "Store token price history", + RunE: func(cmd *cobra.Command, args []string) error { + parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parseConfig) + if err != nil { + return err + } + + // Get the database + db := database.Cast(parseCtx.Database) + + // Build pricefeed module + pricefeedModule := pricefeed.NewModule(config.Cfg, parseCtx.EncodingConfig.Codec, db) + + err = pricefeedModule.RunAdditionalOperations() + if err != nil { + return fmt.Errorf("error while storing tokens: %s", err) + } + + err = pricefeedModule.UpdatePricesHistory() + if err != nil { + return fmt.Errorf("error while updating price history: %s", err) + } + + return nil + }, + } +} diff --git a/cmd/parse/staking/cmd.go b/cmd/parse/staking/cmd.go index f6f34e4cc..7f0792f18 100644 --- a/cmd/parse/staking/cmd.go +++ b/cmd/parse/staking/cmd.go @@ -1,7 +1,7 @@ package staking import ( - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" "github.com/spf13/cobra" ) @@ -13,6 +13,7 @@ func NewStakingCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { } cmd.AddCommand( + poolCmd(parseConfig), validatorsCmd(parseConfig), ) diff --git a/cmd/parse/staking/staking.go b/cmd/parse/staking/staking.go new file mode 100644 index 000000000..1a89d208e --- /dev/null +++ b/cmd/parse/staking/staking.go @@ -0,0 +1,45 @@ +package staking + +import ( + "fmt" + + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" + "github.com/spf13/cobra" + + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/staking" + modulestypes "github.com/forbole/bdjuno/v4/modules/types" +) + +// poolCmd returns the Cobra command allowing to refresh x/staking pool +func poolCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { + return &cobra.Command{ + Use: "pool", + Short: "Refresh staking pool", + RunE: func(cmd *cobra.Command, args []string) error { + parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parseConfig) + if err != nil { + return err + } + + sources, err := modulestypes.BuildSources(config.Cfg.Node, parseCtx.EncodingConfig) + if err != nil { + return err + } + + // Get the database + db := database.Cast(parseCtx.Database) + + // Build staking module + stakingModule := staking.NewModule(sources.StakingSource, parseCtx.EncodingConfig.Codec, db) + + err = stakingModule.UpdateStakingPool() + if err != nil { + return fmt.Errorf("error while updating staking pool: %s", err) + } + + return nil + }, + } +} diff --git a/cmd/parse/staking/validators.go b/cmd/parse/staking/validators.go index d885c0571..eb5560cf3 100644 --- a/cmd/parse/staking/validators.go +++ b/cmd/parse/staking/validators.go @@ -3,14 +3,14 @@ package staking import ( "fmt" - modulestypes "github.com/forbole/bdjuno/v3/modules/types" + modulestypes "github.com/forbole/bdjuno/v4/modules/types" - parsecmdtypes "github.com/forbole/juno/v3/cmd/parse/types" - "github.com/forbole/juno/v3/types/config" + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" + "github.com/forbole/juno/v5/types/config" "github.com/spf13/cobra" - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/bdjuno/v3/modules/staking" + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/staking" ) // validatorsCmd returns a Cobra command that allows to fix the validator infos for all validators. @@ -33,7 +33,7 @@ func validatorsCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { db := database.Cast(parseCtx.Database) // Build the staking module - stakingModule := staking.NewModule(sources.StakingSource, nil, parseCtx.EncodingConfig.Marshaler, db) + stakingModule := staking.NewModule(sources.StakingSource, parseCtx.EncodingConfig.Codec, db) // Get latest height height, err := parseCtx.Node.LatestHeight() @@ -41,18 +41,9 @@ func validatorsCmd(parseConfig *parsecmdtypes.Config) *cobra.Command { return fmt.Errorf("error while getting latest block height: %s", err) } - // Get all validators - validators, err := sources.StakingSource.GetValidatorsWithStatus(height, "") + err = stakingModule.RefreshAllValidatorInfos(height) if err != nil { - return fmt.Errorf("error while getting validators: %s", err) - } - - // Refresh each validator - for _, validator := range validators { - err = stakingModule.RefreshValidatorInfos(height, validator.OperatorAddress) - if err != nil { - return fmt.Errorf("error while refreshing validator: %s", err) - } + return fmt.Errorf("error while refreshing all validators infos: %s", err) } return nil diff --git a/database/assetft_params.go b/database/assetft_params.go index 036c574fd..0e451b864 100644 --- a/database/assetft_params.go +++ b/database/assetft_params.go @@ -4,9 +4,10 @@ import ( "encoding/json" "fmt" - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" + + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" ) // SaveAssetFTParams allows to store the given params into the database. @@ -24,7 +25,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE assetft_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(paramsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing assetft params: %s", err) } diff --git a/database/assetft_params_test.go b/database/assetft_params_test.go index 4a4041dd3..1621d1329 100644 --- a/database/assetft_params_test.go +++ b/database/assetft_params_test.go @@ -3,9 +3,10 @@ package database_test import ( "encoding/json" - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" + + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" ) func (suite *DbTestSuite) TestSaveAssetFTParams() { @@ -31,7 +32,7 @@ func (suite *DbTestSuite) TestGetAssetFTParams() { paramsBz, err := json.Marshal(&assetFTParams) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec( + _, err = suite.database.SQL.Exec( `INSERT INTO assetft_params (params, height) VALUES ($1, $2)`, string(paramsBz), 10, ) diff --git a/database/assetnft_params.go b/database/assetnft_params.go index 83094f8ec..26ec27024 100644 --- a/database/assetnft_params.go +++ b/database/assetnft_params.go @@ -4,9 +4,10 @@ import ( "encoding/json" "fmt" - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" + + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" ) // SaveAssetNFTParams allows to store the given params into the database. @@ -24,7 +25,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE assetnft_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(paramsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing assetnft params: %s", err) } diff --git a/database/assetnft_params_test.go b/database/assetnft_params_test.go index d8fa9ae0f..b6bd2d388 100644 --- a/database/assetnft_params_test.go +++ b/database/assetnft_params_test.go @@ -3,9 +3,10 @@ package database_test import ( "encoding/json" - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" + + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" ) func (suite *DbTestSuite) TestSaveAssetNFTParams() { @@ -31,7 +32,7 @@ func (suite *DbTestSuite) TestGetAssetNFTParams() { paramsBz, err := json.Marshal(&assetNFTParams) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec( + _, err = suite.database.SQL.Exec( `INSERT INTO assetnft_params (params, height) VALUES ($1, $2)`, string(paramsBz), 10, ) diff --git a/database/auth.go b/database/auth.go index 80fdeb4b1..4b406ddd9 100644 --- a/database/auth.go +++ b/database/auth.go @@ -6,13 +6,13 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/vesting/exported" vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/gogo/protobuf/proto" + "github.com/cosmos/gogoproto/proto" "github.com/lib/pq" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - dbutils "github.com/forbole/bdjuno/v3/database/utils" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + dbutils "github.com/forbole/bdjuno/v4/database/utils" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // SaveAccounts saves the given accounts inside the database @@ -51,7 +51,7 @@ func (db *Db) saveAccounts(paramsNumber int, accounts []types.Account) error { stmt = stmt[:len(stmt)-1] stmt += " ON CONFLICT DO NOTHING" - _, err := db.Sql.Exec(stmt, params...) + _, err := db.SQL.Exec(stmt, params...) if err != nil { return fmt.Errorf("error while storing accounts: %s", err) } @@ -98,8 +98,14 @@ func (db *Db) storeVestingAccount(account exported.VestingAccount) (int, error) start_time = excluded.start_time RETURNING id ` + // Store the vesting account + err := db.SaveAccounts([]types.Account{types.NewAccount(account.GetAddress().String())}) + if err != nil { + return 0, fmt.Errorf("error while storing vesting account address: %s", err) + } + var vestingAccountRowID int - err := db.Sql.QueryRow(stmt, + err = db.SQL.QueryRow(stmt, proto.MessageName(account), account.GetAddress().String(), pq.Array(dbtypes.NewDbCoins(account.GetOriginalVesting())), @@ -124,7 +130,13 @@ func (db *Db) StoreBaseVestingAccountFromMsg(bva *vestingtypes.BaseVestingAccoun start_time = excluded.start_time, end_time = excluded.end_time` - _, err := db.Sql.Exec(stmt, + // Store the vesting account + err := db.SaveAccounts([]types.Account{types.NewAccount(bva.GetAddress().String())}) + if err != nil { + return fmt.Errorf("error while storing vesting account address: %s", err) + } + + _, err = db.SQL.Exec(stmt, proto.MessageName(bva), bva.GetAddress().String(), pq.Array(dbtypes.NewDbCoins(bva.OriginalVesting)), @@ -140,7 +152,7 @@ func (db *Db) StoreBaseVestingAccountFromMsg(bva *vestingtypes.BaseVestingAccoun func (db *Db) storeVestingPeriods(id int, vestingPeriods []vestingtypes.Period) error { // Delete already existing periods stmt := `DELETE FROM vesting_period WHERE vesting_account_id = $1` - _, err := db.Sql.Exec(stmt, id) + _, err := db.SQL.Exec(stmt, id) if err != nil { return fmt.Errorf("error while deleting vesting period: %s", err) } @@ -161,7 +173,7 @@ VALUES ` } stmt = stmt[:len(stmt)-1] - _, err = db.Sql.Exec(stmt, params...) + _, err = db.SQL.Exec(stmt, params...) if err != nil { return fmt.Errorf("error while saving vesting periods: %s", err) } diff --git a/database/auth_test.go b/database/auth_test.go index 1651664a4..e4ad0ee2b 100644 --- a/database/auth_test.go +++ b/database/auth_test.go @@ -4,9 +4,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authttypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) TestSaveAccount() { @@ -50,7 +50,7 @@ func (suite *DbTestSuite) TestBigDipperDb_GetAccounts() { } for _, query := range queries { - _, err := suite.database.Sql.Exec(query) + _, err := suite.database.SQL.Exec(query) suite.Require().NoError(err) } diff --git a/database/bank.go b/database/bank.go index 719ff5d5b..fc1e9519d 100644 --- a/database/bank.go +++ b/database/bank.go @@ -3,7 +3,7 @@ package database import ( "fmt" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/lib/pq" @@ -19,7 +19,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE supply.height <= excluded.height` - _, err := db.Sql.Exec(query, pq.Array(dbtypes.NewDbCoins(coins)), height) + _, err := db.SQL.Exec(query, pq.Array(dbtypes.NewDbCoins(coins)), height) if err != nil { return fmt.Errorf("error while storing supply: %s", err) } diff --git a/database/bank_test.go b/database/bank_test.go index 2687fa2d4..28edd87eb 100644 --- a/database/bank_test.go +++ b/database/bank_test.go @@ -3,9 +3,9 @@ package database_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" - bddbtypes "github.com/forbole/bdjuno/v3/database/types" + bddbtypes "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) TestBigDipperDb_SaveSupply() { diff --git a/database/consensus.go b/database/consensus.go index af9fa010e..d1b41055d 100644 --- a/database/consensus.go +++ b/database/consensus.go @@ -4,9 +4,9 @@ import ( "fmt" "time" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) // GetLastBlock returns the last block stored inside the database based on the heights @@ -25,16 +25,20 @@ func (db *Db) GetLastBlock() (*dbtypes.BlockRow, error) { return &blocks[0], nil } -// GetLastBlockHeight returns the last block height stored inside the database -func (db *Db) GetLastBlockHeight() (int64, error) { - block, err := db.GetLastBlock() - if err != nil { - return 0, err +// GetLastBlockHeight returns the last block height and timestamp stored inside the database +func (db *Db) GetLastBlockHeightAndTimestamp() (dbtypes.BlockHeightAndTimestamp, error) { + stmt := `SELECT height, timestamp FROM block ORDER BY height DESC LIMIT 1` + + var blockHeightAndTimestamp []dbtypes.BlockHeightAndTimestamp + if err := db.Sqlx.Select(&blockHeightAndTimestamp, stmt); err != nil { + return dbtypes.BlockHeightAndTimestamp{}, fmt.Errorf("cannot get last block height and timestamp from db: %s", err) } - if block == nil { - return 0, fmt.Errorf("block table is empty") + + if len(blockHeightAndTimestamp) == 0 { + return dbtypes.BlockHeightAndTimestamp{}, nil } - return block.Height, nil + + return blockHeightAndTimestamp[0], nil } // ------------------------------------------------------------------------------------------------------------------- diff --git a/database/consensus_test.go b/database/consensus_test.go index 716389ad4..0169e61d8 100644 --- a/database/consensus_test.go +++ b/database/consensus_test.go @@ -1,10 +1,10 @@ package database_test import ( - time "time" + "time" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" ) func (suite *DbTestSuite) TestSaveConsensus_GetBlockHeightTimeMinuteAgo() { @@ -13,11 +13,11 @@ func (suite *DbTestSuite) TestSaveConsensus_GetBlockHeightTimeMinuteAgo() { var height int64 = 1000 - _, err = suite.database.Sql.Exec(`INSERT INTO validator (consensus_address, consensus_pubkey) + _, err = suite.database.SQL.Exec(`INSERT INTO validator (consensus_address, consensus_pubkey) VALUES ('desmosvalcons1mxrd5cyjgpx5vfgltrdufq9wq4ynwc799ndrg8', 'cosmosvalconspub1zcjduepq7mft6gfls57a0a42d7uhx656cckhfvtrlmw744jv4q0mvlv0dypskehfk8')`) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec(`INSERT INTO block(height, hash, num_txs, total_gas, proposer_address, timestamp) + _, err = suite.database.SQL.Exec(`INSERT INTO block(height, hash, num_txs, total_gas, proposer_address, timestamp) VALUES ($1, '5EF85F2251F656BA0FBFED9AEFCBC44A9CCBCFD8B96897E74426E07229D2ADE0', '0', '0', 'desmosvalcons1mxrd5cyjgpx5vfgltrdufq9wq4ynwc799ndrg8', $2)`, height, timeAgo) suite.Require().NoError(err) @@ -34,11 +34,11 @@ func (suite *DbTestSuite) TestSaveConsensus_GetBlockHeightTimeHourAgo() { suite.Require().NoError(err) var height int64 = 1000 - _, err = suite.database.Sql.Exec(`INSERT INTO validator (consensus_address, consensus_pubkey) + _, err = suite.database.SQL.Exec(`INSERT INTO validator (consensus_address, consensus_pubkey) VALUES ('desmosvalcons1mxrd5cyjgpx5vfgltrdufq9wq4ynwc799ndrg8', 'cosmosvalconspub1zcjduepq7mft6gfls57a0a42d7uhx656cckhfvtrlmw744jv4q0mvlv0dypskehfk8')`) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec(`INSERT INTO block(height, hash, num_txs, total_gas, proposer_address, timestamp) + _, err = suite.database.SQL.Exec(`INSERT INTO block(height, hash, num_txs, total_gas, proposer_address, timestamp) VALUES ($1, '5EF85F2251F656BA0FBFED9AEFCBC44A9CCBCFD8B96897E74426E07229D2ADE0', '0', '0', 'desmosvalcons1mxrd5cyjgpx5vfgltrdufq9wq4ynwc799ndrg8', $2)`, height, timeAgo) suite.Require().NoError(err) @@ -56,11 +56,11 @@ func (suite *DbTestSuite) TestSaveConsensus_GetBlockHeightTimeDayAgo() { var height int64 = 1000 - _, err = suite.database.Sql.Exec(`INSERT INTO validator (consensus_address, consensus_pubkey) + _, err = suite.database.SQL.Exec(`INSERT INTO validator (consensus_address, consensus_pubkey) VALUES ('desmosvalcons1mxrd5cyjgpx5vfgltrdufq9wq4ynwc799ndrg8', 'cosmosvalconspub1zcjduepq7mft6gfls57a0a42d7uhx656cckhfvtrlmw744jv4q0mvlv0dypskehfk8')`) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec(`INSERT INTO block(height, hash, num_txs, total_gas, proposer_address, timestamp) + _, err = suite.database.SQL.Exec(`INSERT INTO block(height, hash, num_txs, total_gas, proposer_address, timestamp) VALUES ($1, '5EF85F2251F656BA0FBFED9AEFCBC44A9CCBCFD8B96897E74426E07229D2ADE0', '0', '0', 'desmosvalcons1mxrd5cyjgpx5vfgltrdufq9wq4ynwc799ndrg8', $2)`, height, timeAgo) suite.Require().NoError(err) diff --git a/database/customparams_params.go b/database/customparams_params.go index 08048a934..34e19012c 100644 --- a/database/customparams_params.go +++ b/database/customparams_params.go @@ -4,9 +4,9 @@ import ( "encoding/json" "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) // SaveCustomParamsParams saves the given x/customparams parameters inside the database @@ -23,7 +23,7 @@ ON CONFLICT (one_row_id) DO UPDATE SET staking_params = excluded.staking_params, height = excluded.height WHERE customparams_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(stakingParamsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(stakingParamsBz), params.Height) if err != nil { return fmt.Errorf("error while storing customparams params: %s", err) } diff --git a/database/customparams_params_test.go b/database/customparams_params_test.go index db54a0af2..dcd2070b0 100644 --- a/database/customparams_params_test.go +++ b/database/customparams_params_test.go @@ -3,9 +3,10 @@ package database_test import ( "encoding/json" - customparamstypes "github.com/CoreumFoundation/coreum/v2/x/customparams/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" + + customparamstypes "github.com/CoreumFoundation/coreum/v3/x/customparams/types" ) func (suite *DbTestSuite) TestSaveCustomParamsParams() { @@ -33,7 +34,7 @@ func (suite *DbTestSuite) TestGetCustomParamsParams() { paramsBz, err := json.Marshal(&customparamsParams) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec( + _, err = suite.database.SQL.Exec( `INSERT INTO customparams_params (staking_params, height) VALUES ($1, $2)`, string(paramsBz), 10, ) diff --git a/database/daily_refetch.go b/database/daily_refetch.go new file mode 100644 index 000000000..7c146936a --- /dev/null +++ b/database/daily_refetch.go @@ -0,0 +1,17 @@ +package database + +// GetMissingBlocks returns an array of missing blocks from one day ago +func (db *Db) GetMissingBlocks(startHeight, endHeight int64) []int64 { + var result []int64 + stmt := `SELECT generate_series($1::int,$2::int) EXCEPT SELECT height FROM block ORDER BY 1;` + err := db.Sqlx.Select(&result, stmt, startHeight, endHeight) + if err != nil { + return nil + } + + if len(result) == 0 { + return nil + } + + return result +} diff --git a/database/database.go b/database/database.go index eed2ecc51..da5d4bc10 100644 --- a/database/database.go +++ b/database/database.go @@ -3,8 +3,8 @@ package database import ( "fmt" - db "github.com/forbole/juno/v3/database" - "github.com/forbole/juno/v3/database/postgresql" + db "github.com/forbole/juno/v5/database" + "github.com/forbole/juno/v5/database/postgresql" "github.com/jmoiron/sqlx" ) @@ -31,7 +31,7 @@ func Builder(ctx *db.Context) (db.Database, error) { return &Db{ Database: psqlDb, - Sqlx: sqlx.NewDb(psqlDb.Sql, "postgresql"), + Sqlx: sqlx.NewDb(psqlDb.SQL.DB, "postgresql"), }, nil } diff --git a/database/database_test.go b/database/database_test.go index 0efbf856f..90dfa9da7 100644 --- a/database/database_test.go +++ b/database/database_test.go @@ -1,7 +1,7 @@ package database_test import ( - "io/ioutil" + "os" "path" "path/filepath" "regexp" @@ -9,22 +9,22 @@ import ( "testing" "time" - dbconfig "github.com/forbole/juno/v3/database/config" - "github.com/forbole/juno/v3/logging" + dbconfig "github.com/forbole/juno/v5/database/config" + "github.com/forbole/juno/v5/logging" - junodb "github.com/forbole/juno/v3/database" + junodb "github.com/forbole/juno/v5/database" - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/types" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + tmctypes "github.com/cometbft/cometbft/rpc/core/types" + tmtypes "github.com/cometbft/cometbft/types" sdk "github.com/cosmos/cosmos-sdk/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" - tmtypes "github.com/tendermint/tendermint/types" - "github.com/cosmos/cosmos-sdk/simapp" + simappparams "cosmossdk.io/simapp/params" "github.com/stretchr/testify/suite" _ "github.com/proullon/ramsql/driver" @@ -42,17 +42,15 @@ type DbTestSuite struct { func (suite *DbTestSuite) SetupTest() { // Create the codec - codec := simapp.MakeTestEncodingConfig() + codec := simappparams.MakeTestEncodingConfig() // Build the database dbCfg := dbconfig.NewDatabaseConfig( - "bdjuno", - "localhost", - 6433, - "bdjuno", - "password", + "postgresql://bdjuno:password@localhost:6433/bdjuno?sslmode=disable&search_path=public", + "", + "", + "", "", - "public", -1, -1, 100000, @@ -65,25 +63,25 @@ func (suite *DbTestSuite) SetupTest() { suite.Require().True(ok) // Delete the public schema - _, err = bigDipperDb.Sql.Exec(`DROP SCHEMA public CASCADE;`) + _, err = bigDipperDb.SQL.Exec(`DROP SCHEMA public CASCADE;`) suite.Require().NoError(err) // Re-create the schema - _, err = bigDipperDb.Sql.Exec(`CREATE SCHEMA public;`) + _, err = bigDipperDb.SQL.Exec(`CREATE SCHEMA public;`) suite.Require().NoError(err) dirPath := path.Join(".", "schema") - dir, err := ioutil.ReadDir(dirPath) + dir, err := os.ReadDir(dirPath) suite.Require().NoError(err) for _, fileInfo := range dir { - file, err := ioutil.ReadFile(filepath.Join(dirPath, fileInfo.Name())) + file, err := os.ReadFile(filepath.Join(dirPath, fileInfo.Name())) suite.Require().NoError(err) commentsRegExp := regexp.MustCompile(`/\*.*\*/`) requests := strings.Split(string(file), ";") for _, request := range requests { - _, err := bigDipperDb.Sql.Exec(commentsRegExp.ReplaceAllString(request, "")) + _, err := bigDipperDb.SQL.Exec(commentsRegExp.ReplaceAllString(request, "")) suite.Require().NoError(err) } } @@ -166,7 +164,7 @@ func (suite *DbTestSuite) getAccount(addr string) sdk.AccAddress { delegator, err := sdk.AccAddressFromBech32(addr) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec(`INSERT INTO account (address) VALUES ($1) ON CONFLICT DO NOTHING`, delegator.String()) + _, err = suite.database.SQL.Exec(`INSERT INTO account (address) VALUES ($1) ON CONFLICT DO NOTHING`, delegator.String()) suite.Require().NoError(err) return delegator diff --git a/database/distribution.go b/database/distribution.go index 894a369eb..750f503a0 100644 --- a/database/distribution.go +++ b/database/distribution.go @@ -4,9 +4,9 @@ import ( "encoding/json" "fmt" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/lib/pq" @@ -21,7 +21,7 @@ ON CONFLICT (one_row_id) DO UPDATE SET coins = excluded.coins, height = excluded.height WHERE community_pool.height <= excluded.height` - _, err := db.Sql.Exec(query, pq.Array(dbtypes.NewDbDecCoins(coin)), height) + _, err := db.SQL.Exec(query, pq.Array(dbtypes.NewDbDecCoins(coin)), height) if err != nil { return fmt.Errorf("error while storing community pool: %s", err) } @@ -45,7 +45,7 @@ ON CONFLICT (one_row_id) DO UPDATE SET params = excluded.params, height = excluded.height WHERE distribution_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(paramsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing distribution params: %s", err) } diff --git a/database/distribution_test.go b/database/distribution_test.go index 29eeef135..6aa4f7bab 100644 --- a/database/distribution_test.go +++ b/database/distribution_test.go @@ -5,12 +5,12 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - bddbtypes "github.com/forbole/bdjuno/v3/database/types" + bddbtypes "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) TestBigDipperDb_SaveCommunityPool() { diff --git a/database/feegrant.go b/database/feegrant.go index 07d347b6b..9ffaf4286 100644 --- a/database/feegrant.go +++ b/database/feegrant.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // SaveFeeGrantAllowance allows to store the fee grant allowances for the given block height @@ -31,7 +31,7 @@ WHERE fee_grant_allowance.height <= excluded.height` return fmt.Errorf("error while marshaling grant allowance: %s", err) } - _, err = db.Sql.Exec(stmt, allowance.Grantee, allowance.Granter, allowanceJSON, allowance.Height) + _, err = db.SQL.Exec(stmt, allowance.Grantee, allowance.Granter, allowanceJSON, allowance.Height) if err != nil { return fmt.Errorf("error while saving fee grant allowance: %s", err) } @@ -42,7 +42,7 @@ WHERE fee_grant_allowance.height <= excluded.height` // DeleteFeeGrantAllowance removes the fee grant allowance data from the database func (db *Db) DeleteFeeGrantAllowance(allowance types.GrantRemoval) error { stmt := `DELETE FROM fee_grant_allowance WHERE grantee_address = $1 AND granter_address = $2 AND height <= $3` - _, err := db.Sql.Exec(stmt, allowance.Grantee, allowance.Granter, allowance.Height) + _, err := db.SQL.Exec(stmt, allowance.Grantee, allowance.Granter, allowance.Height) if err != nil { return fmt.Errorf("error while deleting grant allowance: %s", err) diff --git a/database/feegrant_test.go b/database/feegrant_test.go index 78c2b958c..eec74e308 100644 --- a/database/feegrant_test.go +++ b/database/feegrant_test.go @@ -4,8 +4,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" ) func (suite *DbTestSuite) TestBigDipperDb_SaveFeeGrantAllowance() { @@ -36,10 +36,6 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveFeeGrantAllowance() { suite.Require().Equal(rows[0].Grantee, grantee.String()) suite.Require().Equal(rows[0].Height, int64(121622)) - var stored feegranttypes.FeeAllowanceI - err = suite.database.EncodingConfig.Marshaler.UnmarshalInterfaceJSON([]byte(rows[0].Allowance), &stored) - suite.Require().NoError(err) - suite.Require().Equal(allowance, stored) } func (suite *DbTestSuite) TestBigDipperDb_RemoveFeeGrantAllowance() { @@ -66,7 +62,7 @@ func (suite *DbTestSuite) TestBigDipperDb_RemoveFeeGrantAllowance() { // verify the data var count int - err = suite.database.Sql.QueryRow(`SELECT COUNT(*) FROM fee_grant_allowance`).Scan(&count) + err = suite.database.SQL.QueryRow(`SELECT COUNT(*) FROM fee_grant_allowance`).Scan(&count) suite.Require().NoError(err) suite.Require().Equal(0, count) } diff --git a/database/feemodel_params.go b/database/feemodel_params.go index 749279726..aebc06679 100644 --- a/database/feemodel_params.go +++ b/database/feemodel_params.go @@ -4,9 +4,10 @@ import ( "encoding/json" "fmt" - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" + + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" ) // SaveFeeModelParams allows to store the given params into the database. @@ -24,7 +25,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE feemodel_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(paramsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing feemodel params: %s", err) } diff --git a/database/feemodel_params_test.go b/database/feemodel_params_test.go index 2ff90e1b9..e05d426cb 100644 --- a/database/feemodel_params_test.go +++ b/database/feemodel_params_test.go @@ -3,9 +3,10 @@ package database_test import ( "encoding/json" - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" + + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" ) func (suite *DbTestSuite) TestSaveFeeModelParams() { @@ -31,7 +32,7 @@ func (suite *DbTestSuite) TestGetFeeModelParams() { paramsBz, err := json.Marshal(&feemodelParams) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec( + _, err = suite.database.SQL.Exec( `INSERT INTO feemodel_params (params, height) VALUES ($1, $2)`, string(paramsBz), 10, ) diff --git a/database/gov.go b/database/gov.go index f63de9e77..96af2ac87 100644 --- a/database/gov.go +++ b/database/gov.go @@ -3,46 +3,34 @@ package database import ( "encoding/json" "fmt" + "strings" + "time" + "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/gogo/protobuf/proto" - - "github.com/forbole/bdjuno/v3/types" - - dbtypes "github.com/forbole/bdjuno/v3/database/types" - + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/lib/pq" + + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" ) // SaveGovParams saves the given x/gov parameters inside the database func (db *Db) SaveGovParams(params *types.GovParams) error { - - depositParamsBz, err := json.Marshal(¶ms.DepositParams) - if err != nil { - return fmt.Errorf("error while marshaling deposit params: %s", err) - } - - votingParamsBz, err := json.Marshal(¶ms.VotingParams) - if err != nil { - return fmt.Errorf("error while marshaling voting params: %s", err) - } - - tallyingParams, err := json.Marshal(¶ms.TallyParams) + paramsBz, err := json.Marshal(¶ms.Params) if err != nil { - return fmt.Errorf("error while marshaling tally params: %s", err) + return fmt.Errorf("error while marshalling gov params: %s", err) } stmt := ` -INSERT INTO gov_params(deposit_params, voting_params, tally_params, height) -VALUES ($1, $2, $3, $4) -ON CONFLICT (one_row_id) DO UPDATE - SET deposit_params = excluded.deposit_params, - voting_params = excluded.voting_params, - tally_params = excluded.tally_params, +INSERT INTO gov_params(params, height) +VALUES ($1, $2) +ON CONFLICT (one_row_id) DO UPDATE + SET params = excluded.params, height = excluded.height WHERE gov_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(depositParamsBz), string(votingParamsBz), string(tallyingParams), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing gov params: %s", err) } @@ -64,28 +52,13 @@ func (db *Db) GetGovParams() (*types.GovParams, error) { row := rows[0] - var depositParams types.DepositParams - err = json.Unmarshal([]byte(row.DepositParams), &depositParams) - if err != nil { - return nil, err - } - - var votingParams types.VotingParams - err = json.Unmarshal([]byte(row.VotingParams), &votingParams) + var params govtypesv1.Params + err = json.Unmarshal([]byte(row.Params), ¶ms) if err != nil { return nil, err } - var tallyParams types.TallyParams - err = json.Unmarshal([]byte(row.TallyParams), &tallyParams) - if err != nil { - return nil, err - } - - return types.NewGovParams( - votingParams, depositParams, tallyParams, - row.Height, - ), nil + return types.NewGovParams(¶ms, row.Height), nil } // -------------------------------------------------------------------------------------------------------------------- @@ -100,7 +73,7 @@ func (db *Db) SaveProposals(proposals []types.Proposal) error { proposalsQuery := ` INSERT INTO proposal( - id, title, description, content, proposer_address, proposal_route, proposal_type, status, + id, title, description, metadata, content, proposer_address, status, submit_time, deposit_end_time, voting_start_time, voting_end_time ) VALUES` var proposalsParams []interface{} @@ -110,34 +83,27 @@ INSERT INTO proposal( accounts = append(accounts, types.NewAccount(proposal.Proposer)) // Prepare the proposal query - vi := i * 12 - proposalsQuery += fmt.Sprintf("($%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d),", - vi+1, vi+2, vi+3, vi+4, vi+5, vi+6, vi+7, vi+8, vi+9, vi+10, vi+11, vi+12) - - // Encode the content properly - protoContent, ok := proposal.Content.(proto.Message) - if !ok { - return fmt.Errorf("invalid proposal content types: %T", proposal.Content) - } - - anyContent, err := codectypes.NewAnyWithValue(protoContent) - if err != nil { - return fmt.Errorf("error while wrapping proposal proto content: %s", err) - } - - contentBz, err := db.EncodingConfig.Marshaler.MarshalJSON(anyContent) - if err != nil { - return fmt.Errorf("error while marshaling proposal content: %s", err) + vi := i * 11 + proposalsQuery += fmt.Sprintf("($%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d,$%d),", + vi+1, vi+2, vi+3, vi+4, vi+5, vi+6, vi+7, vi+8, vi+9, vi+10, vi+11) + + var jsonMessages []string + var protoCodec codec.ProtoCodec + for _, msg := range proposal.Messages { + contentBz, err := protoCodec.MarshalJSON(msg) + if err != nil { + return fmt.Errorf("error while marshalling proposal msg: %s", err) + } + jsonMessages = append(jsonMessages, string(contentBz)) } proposalsParams = append(proposalsParams, - proposal.ProposalID, - proposal.Content.GetTitle(), - proposal.Content.GetDescription(), - string(contentBz), + proposal.ID, + proposal.Title, + proposal.Summary, + proposal.Metadata, + fmt.Sprintf("[%s]", strings.Join(jsonMessages, ",")), proposal.Proposer, - proposal.ProposalRoute, - proposal.ProposalType, proposal.Status, proposal.SubmitTime, proposal.DepositEndTime, @@ -146,7 +112,7 @@ INSERT INTO proposal( ) } - // Store the accounts + // Store the proposers accounts err := db.SaveAccounts(accounts) if err != nil { return fmt.Errorf("error while storing proposers accounts: %s", err) @@ -154,8 +120,18 @@ INSERT INTO proposal( // Store the proposals proposalsQuery = proposalsQuery[:len(proposalsQuery)-1] // Remove trailing "," - proposalsQuery += " ON CONFLICT DO NOTHING" - _, err = db.Sql.Exec(proposalsQuery, proposalsParams...) + proposalsQuery += ` +ON CONFLICT (id) DO UPDATE + SET title = excluded.title, + description = excluded.description, + content = excluded.content, + proposer_address = excluded.proposer_address, + status = excluded.status, + submit_time = excluded.submit_time, + deposit_end_time = excluded.deposit_end_time, + voting_start_time = excluded.voting_start_time, + voting_end_time = excluded.voting_end_time` + _, err = db.SQL.Exec(proposalsQuery, proposalsParams...) if err != nil { return fmt.Errorf("error while storing proposals: %s", err) } @@ -164,51 +140,64 @@ INSERT INTO proposal( } // GetProposal returns the proposal with the given id, or nil if not found -func (db *Db) GetProposal(id uint64) (*types.Proposal, error) { +func (db *Db) GetProposal(id uint64) (types.Proposal, error) { var rows []*dbtypes.ProposalRow - err := db.Sqlx.Select(&rows, `SELECT * FROM proposal WHERE id = $1`, id) + err := db.SQL.Select(&rows, `SELECT * FROM proposal WHERE id = $1`, id) if err != nil { - return nil, err + return types.Proposal{}, fmt.Errorf("error while getting proposal %d: %s", id, err) } if len(rows) == 0 { - return nil, nil + return types.Proposal{}, nil } row := rows[0] - var contentAny codectypes.Any - err = db.EncodingConfig.Marshaler.UnmarshalJSON([]byte(row.Content), &contentAny) - if err != nil { - return nil, err - } + trimContent := strings.TrimPrefix(row.Content, "{") + trimContent = strings.TrimPrefix(trimContent, "}") + jsonMessages := strings.Split(trimContent, ",") - var content govtypes.Content - err = db.EncodingConfig.Marshaler.UnpackAny(&contentAny, &content) - if err != nil { - return nil, err + var messages []*codectypes.Any + for _, jsonMessage := range jsonMessages { + var msg codectypes.Any + err = db.Cdc.UnmarshalJSON([]byte(jsonMessage), &msg) + if err != nil { + return types.Proposal{}, err + } + messages = append(messages, &msg) } proposal := types.NewProposal( row.ProposalID, - row.ProposalRoute, - row.ProposalType, - content, + row.Title, + row.Description, + row.Metadata, + messages, row.Status, row.SubmitTime, row.DepositEndTime, - row.VotingStartTime, - row.VotingEndTime, + dbtypes.NullTimeToTime(row.VotingStartTime), + dbtypes.NullTimeToTime(row.VotingEndTime), row.Proposer, ) - return &proposal, nil + return proposal, nil } -// GetOpenProposalsIds returns all the ids of the proposals that are currently in deposit or voting period -func (db *Db) GetOpenProposalsIds() ([]uint64, error) { +// GetOpenProposalsIds returns all the ids of the proposals that are in deposit or voting period at the given block time +func (db *Db) GetOpenProposalsIds(blockTime time.Time) ([]uint64, error) { var ids []uint64 stmt := `SELECT id FROM proposal WHERE status = $1 OR status = $2` - err := db.Sqlx.Select(&ids, stmt, govtypes.StatusDepositPeriod.String(), govtypes.StatusVotingPeriod.String()) + err := db.Sqlx.Select(&ids, stmt, govtypesv1.StatusDepositPeriod.String(), govtypesv1.StatusVotingPeriod.String()) + if err != nil { + return ids, err + } + + // Get also the invalid status proposals due to gRPC failure but still are in deposit period or voting period + var idsInvalid []uint64 + stmt = `SELECT id FROM proposal WHERE status = $1 AND (voting_end_time > $2 OR deposit_end_time > $2)` + err = db.Sqlx.Select(&idsInvalid, stmt, types.ProposalStatusInvalid, blockTime) + ids = append(ids, idsInvalid...) + return ids, err } @@ -217,14 +206,14 @@ func (db *Db) GetOpenProposalsIds() ([]uint64, error) { // UpdateProposal updates a proposal stored inside the database func (db *Db) UpdateProposal(update types.ProposalUpdate) error { query := `UPDATE proposal SET status = $1, voting_start_time = $2, voting_end_time = $3 where id = $4` - _, err := db.Sql.Exec(query, + _, err := db.SQL.Exec(query, update.Status, update.VotingStartTime, update.VotingEndTime, update.ProposalID, ) if err != nil { - return fmt.Errorf("error while updating proposal: %s", err) + return fmt.Errorf("error while updating proposal %d: %s", update.ProposalID, err) } return nil @@ -236,25 +225,39 @@ func (db *Db) SaveDeposits(deposits []types.Deposit) error { return nil } - query := `INSERT INTO proposal_deposit (proposal_id, depositor_address, amount, height) VALUES ` + query := `INSERT INTO proposal_deposit (proposal_id, depositor_address, + amount, timestamp, transaction_hash, height) VALUES ` var param []interface{} - + var accounts []types.Account for i, deposit := range deposits { - vi := i * 4 - query += fmt.Sprintf("($%d,$%d,$%d,$%d),", vi+1, vi+2, vi+3, vi+4) + vi := i * 6 + + accounts = append(accounts, types.NewAccount(deposit.Depositor)) + + query += fmt.Sprintf("($%d,$%d,$%d,$%d,$%d,$%d),", vi+1, vi+2, vi+3, vi+4, vi+5, vi+6) param = append(param, deposit.ProposalID, deposit.Depositor, pq.Array(dbtypes.NewDbCoins(deposit.Amount)), + deposit.Timestamp, + deposit.TransactionHash, deposit.Height, ) } + + // Store depositors accounts + err := db.SaveAccounts(accounts) + if err != nil { + return fmt.Errorf("error while storing depositors accounts: %s", err) + } + query = query[:len(query)-1] // Remove trailing "," query += ` ON CONFLICT ON CONSTRAINT unique_deposit DO UPDATE SET amount = excluded.amount, + timestamp = excluded.timestamp, height = excluded.height WHERE proposal_deposit.height <= excluded.height` - _, err := db.Sql.Exec(query, param...) + _, err = db.SQL.Exec(query, param...) if err != nil { return fmt.Errorf("error while storing deposits: %s", err) } @@ -267,10 +270,11 @@ WHERE proposal_deposit.height <= excluded.height` // SaveVote allows to save for the given height and the message vote func (db *Db) SaveVote(vote types.Vote) error { query := ` -INSERT INTO proposal_vote (proposal_id, voter_address, option, height) -VALUES ($1, $2, $3, $4) +INSERT INTO proposal_vote (proposal_id, voter_address, option, weight, timestamp, height) +VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT ON CONSTRAINT unique_vote DO UPDATE - SET option = excluded.option, + SET weight = excluded.weight, + timestamp = excluded.timestamp, height = excluded.height WHERE proposal_vote.height <= excluded.height` @@ -280,9 +284,9 @@ WHERE proposal_vote.height <= excluded.height` return fmt.Errorf("error while storing voter account: %s", err) } - _, err = db.Sql.Exec(query, vote.ProposalID, vote.Voter, vote.Option.String(), vote.Height) + _, err = db.SQL.Exec(query, vote.ProposalID, vote.Voter, vote.Option.String(), vote.Weight, vote.Timestamp, vote.Height) if err != nil { - return fmt.Errorf("error while storing vote: %s", err) + return fmt.Errorf("error while storing vote for proposal %d: %s", vote.ProposalID, err) } return nil @@ -311,14 +315,14 @@ func (db *Db) SaveTallyResults(tallys []types.TallyResult) error { query = query[:len(query)-1] // Remove trailing "," query += ` -ON CONFLICT ON CONSTRAINT unique_tally_result DO UPDATE - SET yes = excluded.yes, - abstain = excluded.abstain, - no = excluded.no, +ON CONFLICT ON CONSTRAINT unique_tally_result DO UPDATE + SET yes = excluded.yes, + abstain = excluded.abstain, + no = excluded.no, no_with_veto = excluded.no_with_veto, height = excluded.height WHERE proposal_tally_result.height <= excluded.height` - _, err := db.Sql.Exec(query, param...) + _, err := db.SQL.Exec(query, param...) if err != nil { return fmt.Errorf("error while storing tally result: %s", err) } @@ -333,17 +337,19 @@ func (db *Db) SaveProposalStakingPoolSnapshot(snapshot types.ProposalStakingPool stmt := ` INSERT INTO proposal_staking_pool_snapshot (proposal_id, bonded_tokens, not_bonded_tokens, height) VALUES ($1, $2, $3, $4) -ON CONFLICT ON CONSTRAINT unique_staking_pool_snapshot DO UPDATE SET - proposal_id = excluded.proposal_id, - bonded_tokens = excluded.bonded_tokens, +ON CONFLICT ON CONSTRAINT unique_staking_pool_snapshot DO UPDATE + SET bonded_tokens = excluded.bonded_tokens, not_bonded_tokens = excluded.not_bonded_tokens, height = excluded.height WHERE proposal_staking_pool_snapshot.height <= excluded.height` - _, err := db.Sql.Exec(stmt, - snapshot.ProposalID, snapshot.Pool.BondedTokens.String(), snapshot.Pool.NotBondedTokens.String(), snapshot.Pool.Height) + _, err := db.SQL.Exec(stmt, + snapshot.ProposalID, snapshot.Pool.BondedTokens.String(), + snapshot.Pool.NotBondedTokens.String(), snapshot.Pool.Height) + if err != nil { - return fmt.Errorf("error while storing proposal staking pool snapshot: %s", err) + return fmt.Errorf("error while storing proposal staking pool snapshot for proposal %d: %s", + snapshot.ProposalID, err) } return nil @@ -356,7 +362,7 @@ func (db *Db) SaveProposalValidatorsStatusesSnapshots(snapshots []types.Proposal } stmt := ` -INSERT INTO proposal_validator_status_snapshot(proposal_id, validator_address, voting_power, status, jailed, height) +INSERT INTO proposal_validator_status_snapshot (proposal_id, validator_address, voting_power, status, jailed, height) VALUES ` var args []interface{} @@ -372,16 +378,73 @@ VALUES ` stmt = stmt[:len(stmt)-1] stmt += ` ON CONFLICT ON CONSTRAINT unique_validator_status_snapshot DO UPDATE - SET proposal_id = excluded.proposal_id, - validator_address = excluded.validator_address, - voting_power = excluded.voting_power, + SET voting_power = excluded.voting_power, status = excluded.status, jailed = excluded.jailed, height = excluded.height WHERE proposal_validator_status_snapshot.height <= excluded.height` - _, err := db.Sql.Exec(stmt, args...) + _, err := db.SQL.Exec(stmt, args...) + if err != nil { + return fmt.Errorf("error while storing proposal validator statuses snapshots: %s", err) + } + + return nil +} + +// SaveSoftwareUpgradePlan allows to save the given software upgrade plan with its proposal id +func (db *Db) SaveSoftwareUpgradePlan(proposalID uint64, plan upgradetypes.Plan, height int64) error { + + stmt := ` +INSERT INTO software_upgrade_plan(proposal_id, plan_name, upgrade_height, info, height) +VALUES ($1, $2, $3, $4, $5) +ON CONFLICT (proposal_id) DO UPDATE SET + plan_name = excluded.plan_name, + upgrade_height = excluded.upgrade_height, + info = excluded.info, + height = excluded.height +WHERE software_upgrade_plan.height <= excluded.height` + + _, err := db.SQL.Exec(stmt, + proposalID, plan.Name, plan.Height, plan.Info, height) + if err != nil { + return fmt.Errorf("error while storing software upgrade plan for proposal %d: %s", proposalID, err) + } + + return nil +} + +// DeleteSoftwareUpgradePlan allows to delete a SoftwareUpgradePlan with proposal ID +func (db *Db) DeleteSoftwareUpgradePlan(proposalID uint64) error { + stmt := `DELETE FROM software_upgrade_plan WHERE proposal_id = $1` + + _, err := db.SQL.Exec(stmt, proposalID) + if err != nil { + return fmt.Errorf("error while deleting software upgrade plan for proposal %d: %s", proposalID, err) + } + + return nil +} + +// CheckSoftwareUpgradePlan returns true if an upgrade is scheduled at the given height +func (db *Db) CheckSoftwareUpgradePlan(upgradeHeight int64) (bool, error) { + var exist bool + + stmt := `SELECT EXISTS (SELECT 1 FROM software_upgrade_plan WHERE upgrade_height=$1)` + err := db.SQL.QueryRow(stmt, upgradeHeight).Scan(&exist) + if err != nil { + return exist, fmt.Errorf("error while checking software upgrade plan existence: %s", err) + } + + return exist, nil +} + +// TruncateSoftwareUpgradePlan delete software upgrade plans once the upgrade height passed +func (db *Db) TruncateSoftwareUpgradePlan(height int64) error { + stmt := `DELETE FROM software_upgrade_plan WHERE upgrade_height <= $1` + + _, err := db.SQL.Exec(stmt, height) if err != nil { - return fmt.Errorf("error while storing proposal validator statuses snapshot: %s", err) + return fmt.Errorf("error while deleting software upgrade plan: %s", err) } return nil diff --git a/database/gov_test.go b/database/gov_test.go index 6050bfaa3..f5e4aa6ab 100644 --- a/database/gov_test.go +++ b/database/gov_test.go @@ -4,24 +4,37 @@ import ( "fmt" "time" + gov "github.com/cosmos/cosmos-sdk/x/gov/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/gogo/protobuf/proto" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/testutils" + "github.com/forbole/bdjuno/v4/types" sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) TestBigDipperDb_SaveGovParams() { - votingParams := govtypes.NewVotingParams(time.Second * 10) - tallyParams := govtypes.NewTallyParams(sdk.NewDec(10), sdk.NewDec(10), sdk.NewDec(10)) - depositParams := govtypes.NewDepositParams(sdk.NewCoins(sdk.NewCoin("uatom", sdk.NewInt(10))), time.Minute*5) - original := types.NewGovParams(types.NewVotingParams(votingParams), types.NewDepositParam(depositParams), types.NewTallyParams(tallyParams), 10) + params := govtypesv1.Params{ + MinDeposit: []sdk.Coin{sdk.NewCoin("uatom", sdk.NewInt(1000))}, + MaxDepositPeriod: testutils.NewDurationPointer(time.Duration(int64(300000000000))), + VotingPeriod: testutils.NewDurationPointer(time.Duration(int64(300000))), + Quorum: "0.5", + Threshold: "0.3", + VetoThreshold: "0.15", + MinInitialDepositRatio: "0", + BurnVoteQuorum: false, + BurnProposalDepositPrevote: false, + BurnVoteVeto: false, + } + + original := types.NewGovParams(¶ms, 10) err := suite.database.SaveGovParams(original) suite.Require().NoError(err) @@ -32,8 +45,8 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveGovParams() { // ---------------------------------------------------------------------------------------------------------------- // Try updating with a lower height - depositParams = govtypes.NewDepositParams(sdk.NewCoins(sdk.NewCoin("uatom", sdk.NewInt(1000))), time.Minute*5) - updated := types.NewGovParams(types.NewVotingParams(votingParams), types.NewDepositParam(depositParams), types.NewTallyParams(tallyParams), 9) + params.BurnVoteQuorum = false + updated := types.NewGovParams(¶ms, 9) err = suite.database.SaveGovParams(updated) suite.Require().NoError(err) @@ -43,8 +56,9 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveGovParams() { suite.Require().Equal(original, stored) // ---------------------------------------------------------------------------------------------------------------- - // Try updating with the same height depositParams = govtypes.NewDepositParams(sdk.NewCoins(sdk.NewCoin("uatom", sdk.NewInt(1000))), time.Minute*5) - updated = types.NewGovParams(types.NewVotingParams(votingParams), types.NewDepositParam(depositParams), types.NewTallyParams(tallyParams), 10) + // Try updating with the same height + params.BurnProposalDepositPrevote = true + updated = types.NewGovParams(¶ms, 10) err = suite.database.SaveGovParams(updated) suite.Require().NoError(err) @@ -55,9 +69,8 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveGovParams() { // ---------------------------------------------------------------------------------------------------------------- // Try updating with a higher height - tallyParams = govtypes.NewTallyParams(sdk.NewDec(100), sdk.NewDec(100), sdk.NewDec(100)) - depositParams = govtypes.NewDepositParams(sdk.NewCoins(sdk.NewCoin("udesmos", sdk.NewInt(10000))), time.Minute*5) - updated = types.NewGovParams(types.NewVotingParams(votingParams), types.NewDepositParam(depositParams), types.NewTallyParams(tallyParams), 11) + params.BurnVoteVeto = true + updated = types.NewGovParams(¶ms, 11) err = suite.database.SaveGovParams(updated) suite.Require().NoError(err) @@ -72,77 +85,94 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveGovParams() { func (suite *DbTestSuite) getProposalRow(id int) types.Proposal { proposer := suite.getAccount("cosmos1z4hfrxvlgl4s8u4n5ngjcw8kdqrcv43599amxs") - title := fmt.Sprintf("title%d", id) - description := fmt.Sprintf("description%d", id) - proposalRoute := fmt.Sprintf("proposalRoute%d", id) - proposalType := fmt.Sprintf("proposalType%d", id) + msgAny, err := codectypes.NewAnyWithValue(&govtypesv1.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(gov.ModuleName).String(), + Params: govtypesv1.Params{ + MinDeposit: []sdk.Coin{sdk.NewCoin("uatom", sdk.NewInt(1000))}, + MaxDepositPeriod: testutils.NewDurationPointer(time.Duration(int64(300000000000))), + VotingPeriod: testutils.NewDurationPointer(time.Duration(int64(300000))), + Quorum: "0.5", + Threshold: "0.3", + VetoThreshold: "0.15", + MinInitialDepositRatio: "0", + BurnVoteQuorum: false, + BurnProposalDepositPrevote: false, + BurnVoteVeto: false, + }, + }) + suite.Require().NoError(err) proposal := types.NewProposal( uint64(id), - proposalRoute, - proposalType, - govtypes.NewTextProposal(title, description), - govtypes.StatusPassed.String(), + fmt.Sprintf("Proposal %d", id), + fmt.Sprintf("Description of proposal %d", id), + fmt.Sprintf("Metadata of proposal %d", id), + []*codectypes.Any{msgAny}, + govtypesv1.StatusVotingPeriod.String(), time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC)), proposer.String(), ) - err := suite.database.SaveProposals([]types.Proposal{proposal}) + err = suite.database.SaveProposals([]types.Proposal{proposal}) suite.Require().NoError(err) return proposal } -func (suite *DbTestSuite) encodeProposalContent(content govtypes.Content) string { - protoContent, ok := content.(proto.Message) - suite.Require().True(ok) - - anyContent, err := codectypes.NewAnyWithValue(protoContent) - suite.Require().NoError(err) - - contentBz, err := suite.database.EncodingConfig.Marshaler.MarshalJSON(anyContent) - suite.Require().NoError(err) - - return string(contentBz) -} - func (suite *DbTestSuite) TestBigDipperDb_SaveProposals() { proposer1 := suite.getAccount("cosmos1z4hfrxvlgl4s8u4n5ngjcw8kdqrcv43599amxs") + msgAny, err := codectypes.NewAnyWithValue(&govtypesv1.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(gov.ModuleName).String(), + Params: govtypesv1.Params{ + MinDeposit: []sdk.Coin{sdk.NewCoin("uatom", sdk.NewInt(1000))}, + MaxDepositPeriod: testutils.NewDurationPointer(time.Duration(int64(300000000000))), + VotingPeriod: testutils.NewDurationPointer(time.Duration(int64(300000))), + Quorum: "0.5", + Threshold: "0.3", + VetoThreshold: "0.15", + MinInitialDepositRatio: "0", + BurnVoteQuorum: false, + BurnProposalDepositPrevote: false, + BurnVoteVeto: false, + }, + }) + suite.Require().NoError(err) + proposer2 := suite.getAccount("cosmos184ma3twcfjqef6k95ne8w2hk80x2kah7vcwy4a") - content1 := govtypes.NewTextProposal("title", "description") - content2 := govtypes.NewTextProposal("title1", "description1") input := []types.Proposal{ types.NewProposal( 1, - "proposalRoute", - "proposalType", - content1, - govtypes.StatusDepositPeriod.String(), + "Proposal Title 1", + "Proposal Description 1", + "Proposal Metadata 1", + []*codectypes.Any{msgAny}, + govtypesv1.StatusDepositPeriod.String(), time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC)), proposer1.String(), ), types.NewProposal( 2, - "proposalRoute1", - "proposalType1", - content2, - govtypes.StatusPassed.String(), + "Proposal Title 2", + "Proposal Description 2", + "Proposal Metadata 2", + nil, + govtypesv1.StatusPassed.String(), time.Date(2020, 1, 2, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 2, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC)), proposer2.String(), ), } - err := suite.database.SaveProposals(input) + err = suite.database.SaveProposals(input) suite.Require().NoError(err) var proposalRow []dbtypes.ProposalRow @@ -152,31 +182,29 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposals() { expected := []dbtypes.ProposalRow{ dbtypes.NewProposalRow( 1, - "proposalRoute", - "proposalType", - "title", - "description", - suite.encodeProposalContent(content1), + "Proposal Title 1", + "Proposal Description 1", + "Proposal Metadata 1", + "[{\"@type\": \"/cosmos.gov.v1.MsgUpdateParams\", \"params\": {\"quorum\": \"0.5\", \"threshold\": \"0.3\", \"min_deposit\": [{\"denom\": \"uatom\", \"amount\": \"1000\"}], \"voting_period\": \"0.000300s\", \"burn_vote_veto\": false, \"veto_threshold\": \"0.15\", \"burn_vote_quorum\": false, \"max_deposit_period\": \"300s\", \"min_initial_deposit_ratio\": \"0\", \"burn_proposal_deposit_prevote\": false}, \"authority\": \"cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn\"}]", time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC)), proposer1.String(), - govtypes.StatusDepositPeriod.String(), + govtypesv1.StatusDepositPeriod.String(), ), dbtypes.NewProposalRow( 2, - "proposalRoute1", - "proposalType1", - "title1", - "description1", - suite.encodeProposalContent(content2), + "Proposal Title 2", + "Proposal Description 2", + "Proposal Metadata 2", + "[]", time.Date(2020, 1, 2, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 2, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC)), proposer2.String(), - govtypes.StatusPassed.String(), + govtypesv1.StatusPassed.String(), ), } for i, expect := range expected { @@ -185,93 +213,128 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposals() { } func (suite *DbTestSuite) TestBigDipperDb_GetProposal() { - content := govtypes.NewTextProposal("title", "description") proposer := suite.getAccount("cosmos1z4hfrxvlgl4s8u4n5ngjcw8kdqrcv43599amxs") + msgAny, err := codectypes.NewAnyWithValue(&govtypesv1.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(gov.ModuleName).String(), + Params: govtypesv1.Params{ + MinDeposit: []sdk.Coin{sdk.NewCoin("uatom", sdk.NewInt(1000))}, + MaxDepositPeriod: testutils.NewDurationPointer(time.Duration(int64(300000000000))), + VotingPeriod: testutils.NewDurationPointer(time.Duration(int64(300000))), + Quorum: "0.5", + Threshold: "0.3", + VetoThreshold: "0.15", + MinInitialDepositRatio: "0", + BurnVoteQuorum: false, + BurnProposalDepositPrevote: false, + BurnVoteVeto: false, + }, + }) + suite.Require().NoError(err) proposal := types.NewProposal( 1, - "proposalRoute", - "proposalType", - content, - govtypes.StatusDepositPeriod.String(), + "Proposal Title 1", + "Proposal Description 1", + "Proposal Metadata 1", + []*codectypes.Any{msgAny}, + govtypesv1.StatusDepositPeriod.String(), time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC)), proposer.String(), ) input := []types.Proposal{proposal} - err := suite.database.SaveProposals(input) + err = suite.database.SaveProposals(input) suite.Require().NoError(err) - stored, err := suite.database.GetProposal(1) + var rows []dbtypes.ProposalRow + err = suite.database.Sqlx.Select(&rows, `SELECT * FROM proposal`) suite.Require().NoError(err) - suite.Require().True(proposal.Equal(*stored)) + suite.Require().Len(rows, 1) } func (suite *DbTestSuite) TestBigDipperDb_GetOpenProposalsIds() { proposer1 := suite.getAccount("cosmos1z4hfrxvlgl4s8u4n5ngjcw8kdqrcv43599amxs") proposer2 := suite.getAccount("cosmos184ma3twcfjqef6k95ne8w2hk80x2kah7vcwy4a") - content1 := govtypes.NewTextProposal("title", "description") - content2 := govtypes.NewTextProposal("title1", "description1") + invalidProposal := types.NewProposal( + 6, + "Proposal Title 6", + "Proposal Description 6", + "Proposal Metadata 6", + nil, + types.ProposalStatusInvalid, + time.Date(2020, 1, 2, 00, 00, 00, 000, time.UTC), + time.Date(2020, 1, 2, 01, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC)), + proposer2.String(), + ) + input := []types.Proposal{ types.NewProposal( 1, - "proposalRoute", - "proposalType", - content1, - govtypes.StatusVotingPeriod.String(), + "Proposal Title 2", + "Proposal Description 2", + "Proposal Metadata 2", + nil, + govtypesv1.StatusVotingPeriod.String(), time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC)), proposer1.String(), ), types.NewProposal( 2, - "proposalRoute", - "proposalType", - content1, - govtypes.StatusDepositPeriod.String(), + "Proposal Title 2", + "Proposal Description 2", + "Proposal Metadata 2", + nil, + govtypesv1.StatusDepositPeriod.String(), time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 1, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 1, 03, 00, 00, 000, time.UTC)), proposer1.String(), ), types.NewProposal( 3, - "proposalRoute1", - "proposalType1", - content2, - govtypes.StatusPassed.String(), + "Proposal Title 3", + "Proposal Description 3", + "Proposal Metadata 3", + nil, + govtypesv1.StatusPassed.String(), time.Date(2020, 1, 2, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 2, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC)), proposer2.String(), ), types.NewProposal( 5, - "proposalRoute1", - "proposalType1", - content2, - govtypes.StatusRejected.String(), + "Proposal Title 5", + "Proposal Description 5", + "Proposal Metadata 5", + nil, + govtypesv1.StatusRejected.String(), time.Date(2020, 1, 2, 00, 00, 00, 000, time.UTC), time.Date(2020, 1, 2, 01, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC), - time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC), + testutils.NewTimePointer(time.Date(2020, 1, 2, 02, 00, 00, 000, time.UTC)), + testutils.NewTimePointer(time.Date(2020, 1, 2, 03, 00, 00, 000, time.UTC)), proposer2.String(), ), + invalidProposal, } err := suite.database.SaveProposals(input) suite.Require().NoError(err) - ids, err := suite.database.GetOpenProposalsIds() + timeBeforeDepositEnd := invalidProposal.DepositEndTime.Add(-1 * time.Hour) + ids, err := suite.database.GetOpenProposalsIds(timeBeforeDepositEnd) suite.Require().NoError(err) - suite.Require().Equal([]uint64{1, 2}, ids) + suite.Require().Equal([]uint64{1, 2, 6}, ids) } func (suite *DbTestSuite) TestBigDipperDb_UpdateProposal() { @@ -279,38 +342,37 @@ func (suite *DbTestSuite) TestBigDipperDb_UpdateProposal() { proposer, err := sdk.AccAddressFromBech32(proposal.Proposer) suite.Require().NoError(err) + timestamp1 := testutils.NewTimePointer(time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC)) + timestamp2 := testutils.NewTimePointer(time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC)) + update := types.NewProposalUpdate( - proposal.ProposalID, - govtypes.StatusPassed.String(), - time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), + proposal.ID, + govtypesv1.StatusPassed.String(), + timestamp1, + timestamp2, ) err = suite.database.UpdateProposal(update) suite.Require().NoError(err) expected := dbtypes.NewProposalRow( - proposal.ProposalID, - proposal.ProposalRoute, - proposal.ProposalType, - proposal.Content.GetTitle(), - proposal.Content.GetDescription(), - suite.encodeProposalContent(proposal.Content), + proposal.ID, + "Proposal 1", + "Description of proposal 1", + "Metadata of proposal 1", + "[{\"@type\": \"/cosmos.gov.v1.MsgUpdateParams\", \"params\": {\"quorum\": \"0.5\", \"threshold\": \"0.3\", \"min_deposit\": [{\"denom\": \"uatom\", \"amount\": \"1000\"}], \"voting_period\": \"0.000300s\", \"burn_vote_veto\": false, \"veto_threshold\": \"0.15\", \"burn_vote_quorum\": false, \"max_deposit_period\": \"300s\", \"min_initial_deposit_ratio\": \"0\", \"burn_proposal_deposit_prevote\": false}, \"authority\": \"cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn\"}]", proposal.SubmitTime, proposal.DepositEndTime, - time.Date(2020, 1, 1, 00, 00, 00, 000, time.UTC), - time.Date(2020, 1, 1, 01, 00, 00, 000, time.UTC), + timestamp1, + timestamp2, proposer.String(), - govtypes.StatusPassed.String(), + govtypesv1.StatusPassed.String(), ) - var result []dbtypes.ProposalRow - err = suite.database.Sqlx.Select(&result, `SELECT * FROM proposal`) + var stored dbtypes.ProposalRow + err = suite.database.SQL.Get(&stored, `SELECT * FROM proposal LIMIT 1`) suite.Require().NoError(err) - suite.Require().Len(result, 1) - for _, r := range result { - suite.Require().True(expected.Equals(r)) - } + suite.Require().True(expected.Equals(stored)) } // ------------------------------------------------------------------------------------------------------------------- @@ -324,26 +386,33 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveDeposits() { depositor := suite.getAccount("cosmos1z4hfrxvlgl4s8u4n5ngjcw8kdqrcv43599amxs") amount := sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(10000))) + txHash := "D40FE0C386FA85677FFB9B3C4CECD54CF2CD7ABECE4EF15FAEF328FCCBF4C3A8" depositor2 := suite.getAccount("cosmos184ma3twcfjqef6k95ne8w2hk80x2kah7vcwy4a") amount2 := sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(30000))) + txHash2 := "40A9812A137256E88593E19428E006C01D87DB35F60F8D14739B4A46AC3C67A5" depositor3 := suite.getAccount("cosmos1gyds87lg3m52hex9yqta2mtwzw89pfukx3jl7g") amount3 := sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(50000))) + txHash3 := "086CFE10741EF3800DB7F72B1666DE298DD40913BBB84C5530C87AF5EDE8027A" + + timestamp1 := time.Date(2020, 1, 1, 15, 00, 00, 000, time.UTC) + timestamp2 := time.Date(2020, 1, 1, 16, 00, 00, 000, time.UTC) + timestamp3 := time.Date(2020, 1, 1, 17, 00, 00, 000, time.UTC) deposit := []types.Deposit{ - types.NewDeposit(proposal.ProposalID, depositor.String(), amount, 10), - types.NewDeposit(proposal.ProposalID, depositor2.String(), amount2, 10), - types.NewDeposit(proposal.ProposalID, depositor3.String(), amount3, 10), + types.NewDeposit(proposal.ID, depositor.String(), amount, timestamp1, txHash, 10), + types.NewDeposit(proposal.ID, depositor2.String(), amount2, timestamp2, txHash2, 10), + types.NewDeposit(proposal.ID, depositor3.String(), amount3, timestamp3, txHash3, 10), } err := suite.database.SaveDeposits(deposit) suite.Require().NoError(err) expected := []dbtypes.DepositRow{ - dbtypes.NewDepositRow(1, depositor.String(), dbtypes.NewDbCoins(amount), 10), - dbtypes.NewDepositRow(1, depositor2.String(), dbtypes.NewDbCoins(amount2), 10), - dbtypes.NewDepositRow(1, depositor3.String(), dbtypes.NewDbCoins(amount3), 10), + dbtypes.NewDepositRow(1, depositor.String(), dbtypes.NewDbCoins(amount), timestamp1, txHash, 10), + dbtypes.NewDepositRow(1, depositor2.String(), dbtypes.NewDbCoins(amount2), timestamp2, txHash2, 10), + dbtypes.NewDepositRow(1, depositor3.String(), dbtypes.NewDbCoins(amount3), timestamp3, txHash3, 10), } var result []dbtypes.DepositRow err = suite.database.Sqlx.Select(&result, `SELECT * FROM proposal_deposit`) @@ -355,28 +424,24 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveDeposits() { // ---------------------------------------------------------------------------------------------------------------- // Update values - amount = sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(10))) - amount2 = sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(20))) - amount3 = sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(30))) - deposit = []types.Deposit{ - types.NewDeposit(proposal.ProposalID, depositor.String(), amount, 9), - types.NewDeposit(proposal.ProposalID, depositor2.String(), amount2, 10), - types.NewDeposit(proposal.ProposalID, depositor3.String(), amount3, 11), + types.NewDeposit(proposal.ID, depositor.String(), amount, timestamp1, "8E6EA32C656A6EED84132425533E897D458F1B877080DF842B068C4AS92WP01A", 9), + types.NewDeposit(proposal.ID, depositor2.String(), amount2, timestamp2, txHash2, 11), + types.NewDeposit(proposal.ID, depositor3.String(), sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(30))), timestamp3, txHash3, 11), } err = suite.database.SaveDeposits(deposit) suite.Require().NoError(err) expected = []dbtypes.DepositRow{ - dbtypes.NewDepositRow(1, depositor.String(), dbtypes.NewDbCoins( - sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(10000)))), 10), - dbtypes.NewDepositRow(1, depositor2.String(), dbtypes.NewDbCoins(amount2), 10), - dbtypes.NewDepositRow(1, depositor3.String(), dbtypes.NewDbCoins(amount3), 11), + dbtypes.NewDepositRow(1, depositor.String(), dbtypes.NewDbCoins(amount), timestamp1, txHash, 10), + dbtypes.NewDepositRow(1, depositor.String(), dbtypes.NewDbCoins(amount), timestamp1, "8E6EA32C656A6EED84132425533E897D458F1B877080DF842B068C4AS92WP01A", 9), + dbtypes.NewDepositRow(1, depositor2.String(), dbtypes.NewDbCoins(amount2), timestamp2, txHash2, 11), + dbtypes.NewDepositRow(1, depositor3.String(), dbtypes.NewDbCoins(sdk.NewCoins(sdk.NewCoin("desmos", sdk.NewInt(30)))), timestamp3, txHash3, 11), } result = []dbtypes.DepositRow{} - err = suite.database.Sqlx.Select(&result, `SELECT * FROM proposal_deposit`) + err = suite.database.SQL.Select(&result, `SELECT * FROM proposal_deposit`) suite.Require().NoError(err) for i, r := range result { suite.Require().True(expected[i].Equals(r)) @@ -393,54 +458,88 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveVote() { proposal := suite.getProposalRow(1) voter := suite.getAccount("cosmos1z4hfrxvlgl4s8u4n5ngjcw8kdqrcv43599amxs") - vote := types.NewVote(1, voter.String(), govtypes.OptionYes, 1) + timestamp := time.Date(2020, 1, 1, 15, 00, 00, 000, time.UTC) + + vote := types.NewVote(1, voter.String(), govtypesv1.OptionYes, "0.5", timestamp, 1) err := suite.database.SaveVote(vote) suite.Require().NoError(err) - expected := dbtypes.NewVoteRow(int64(proposal.ProposalID), voter.String(), govtypes.OptionYes.String(), 1) + vote2 := types.NewVote(1, voter.String(), govtypesv1.OptionNo, "0.5", timestamp, 1) + err = suite.database.SaveVote(vote2) + suite.Require().NoError(err) + + expected := []dbtypes.VoteRow{ + dbtypes.NewVoteRow(int64(proposal.ID), voter.String(), govtypesv1.OptionYes.String(), "0.5", timestamp, 1), + dbtypes.NewVoteRow(int64(proposal.ID), voter.String(), govtypesv1.OptionNo.String(), "0.5", timestamp, 1), + } var result []dbtypes.VoteRow - err = suite.database.Sqlx.Select(&result, `SELECT * FROM proposal_vote`) + err = suite.database.SQL.Select(&result, `SELECT * FROM proposal_vote`) suite.Require().NoError(err) - suite.Require().Len(result, 1) - suite.Require().True(expected.Equals(result[0])) + suite.Require().Len(result, 2) + for i, r := range result { + suite.Require().True(expected[i].Equals(r)) + } // Update with lower height should not change option - vote = types.NewVote(1, voter.String(), govtypes.OptionNo, 0) + vote = types.NewVote(1, voter.String(), govtypesv1.OptionYes, "0.7", timestamp, 0) err = suite.database.SaveVote(vote) suite.Require().NoError(err) + vote2 = types.NewVote(1, voter.String(), govtypesv1.OptionNo, "0.3", timestamp, 0) + err = suite.database.SaveVote(vote2) + suite.Require().NoError(err) + result = []dbtypes.VoteRow{} - err = suite.database.Sqlx.Select(&result, `SELECT * FROM proposal_vote`) + err = suite.database.SQL.Select(&result, `SELECT * FROM proposal_vote`) suite.Require().NoError(err) - suite.Require().Len(result, 1) - suite.Require().True(expected.Equals(result[0])) + suite.Require().Len(result, 2) + for i, r := range result { + suite.Require().True(expected[i].Equals(r)) + } // Update with same height should change option - vote = types.NewVote(1, voter.String(), govtypes.OptionAbstain, 1) + vote = types.NewVote(1, voter.String(), govtypesv1.OptionYes, "0.6", timestamp, 1) err = suite.database.SaveVote(vote) suite.Require().NoError(err) - expected = dbtypes.NewVoteRow(int64(proposal.ProposalID), voter.String(), govtypes.OptionAbstain.String(), 1) + vote2 = types.NewVote(1, voter.String(), govtypesv1.OptionNo, "0.4", timestamp, 1) + err = suite.database.SaveVote(vote2) + suite.Require().NoError(err) + + expected = []dbtypes.VoteRow{ + dbtypes.NewVoteRow(int64(proposal.ID), voter.String(), govtypesv1.OptionYes.String(), "0.6", timestamp, 1), + dbtypes.NewVoteRow(int64(proposal.ID), voter.String(), govtypesv1.OptionNo.String(), "0.4", timestamp, 1), + } result = []dbtypes.VoteRow{} err = suite.database.Sqlx.Select(&result, `SELECT * FROM proposal_vote`) suite.Require().NoError(err) - suite.Require().Len(result, 1) - suite.Require().True(expected.Equals(result[0])) + suite.Require().Len(result, 2) + for i, r := range result { + suite.Require().True(expected[i].Equals(r)) + } // Update with higher height should change option - vote = types.NewVote(1, voter.String(), govtypes.OptionNoWithVeto, 2) + vote = types.NewVote(1, voter.String(), govtypesv1.OptionYes, "0.6", timestamp, 3) err = suite.database.SaveVote(vote) suite.Require().NoError(err) - expected = dbtypes.NewVoteRow(int64(proposal.ProposalID), voter.String(), govtypes.OptionNoWithVeto.String(), 2) + vote2 = types.NewVote(1, voter.String(), govtypesv1.OptionNo, "0.4", timestamp, 3) + err = suite.database.SaveVote(vote2) + suite.Require().NoError(err) + expected = []dbtypes.VoteRow{ + dbtypes.NewVoteRow(int64(proposal.ID), voter.String(), govtypesv1.OptionYes.String(), "0.6", timestamp, 3), + dbtypes.NewVoteRow(int64(proposal.ID), voter.String(), govtypesv1.OptionNo.String(), "0.4", timestamp, 3), + } result = []dbtypes.VoteRow{} err = suite.database.Sqlx.Select(&result, `SELECT * FROM proposal_vote`) suite.Require().NoError(err) - suite.Require().Len(result, 1) - suite.Require().True(expected.Equals(result[0])) + suite.Require().Len(result, 2) + for i, r := range result { + suite.Require().True(expected[i].Equals(r)) + } } func (suite *DbTestSuite) TestBigDipperDb_SaveTallyResults() { @@ -505,7 +604,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalStakingPoolSnapshot() { // ---------------------------------------------------------------------------------------------------------------- // Save snapshot - snapshot := types.NewProposalStakingPoolSnapshot(1, types.NewPool( + snapshot := types.NewProposalStakingPoolSnapshot(1, types.NewPoolSnapshot( sdk.NewInt(100), sdk.NewInt(200), 10, @@ -527,7 +626,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalStakingPoolSnapshot() { // ---------------------------------------------------------------------------------------------------------------- // Update with lower height - err = suite.database.SaveProposalStakingPoolSnapshot(types.NewProposalStakingPoolSnapshot(1, types.NewPool( + err = suite.database.SaveProposalStakingPoolSnapshot(types.NewProposalStakingPoolSnapshot(1, types.NewPoolSnapshot( sdk.NewInt(200), sdk.NewInt(500), 9, @@ -548,7 +647,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalStakingPoolSnapshot() { // ---------------------------------------------------------------------------------------------------------------- // Update with same height - err = suite.database.SaveProposalStakingPoolSnapshot(types.NewProposalStakingPoolSnapshot(1, types.NewPool( + err = suite.database.SaveProposalStakingPoolSnapshot(types.NewProposalStakingPoolSnapshot(1, types.NewPoolSnapshot( sdk.NewInt(500), sdk.NewInt(1000), 10, @@ -569,7 +668,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalStakingPoolSnapshot() { // ---------------------------------------------------------------------------------------------------------------- // Update with higher height - err = suite.database.SaveProposalStakingPoolSnapshot(types.NewProposalStakingPoolSnapshot(1, types.NewPool( + err = suite.database.SaveProposalStakingPoolSnapshot(types.NewProposalStakingPoolSnapshot(1, types.NewPoolSnapshot( sdk.NewInt(1000), sdk.NewInt(2000), 11, @@ -613,7 +712,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator1.GetConsAddr(), 100, - int(stakingtypes.Bonded), + stakingtypes.Bonded, false, 10, ), @@ -621,7 +720,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator2.GetConsAddr(), 100, - int(stakingtypes.Unbonding), + stakingtypes.Unbonding, true, 10, ), @@ -662,7 +761,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator1.GetConsAddr(), 10, - int(stakingtypes.Bonded), + stakingtypes.Bonded, true, 9, ), @@ -670,7 +769,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator2.GetConsAddr(), 700, - int(stakingtypes.Unbonding), + stakingtypes.Unbonding, true, 9, ), @@ -711,7 +810,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator1.GetConsAddr(), 10, - int(stakingtypes.Bonded), + stakingtypes.Bonded, true, 10, ), @@ -719,7 +818,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator2.GetConsAddr(), 700, - int(stakingtypes.Unbonding), + stakingtypes.Unbonding, true, 10, ), @@ -760,7 +859,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator1.GetConsAddr(), 100000, - int(stakingtypes.Unspecified), + stakingtypes.Unspecified, false, 11, ), @@ -768,7 +867,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot 1, validator2.GetConsAddr(), 700000, - int(stakingtypes.Unbonded), + stakingtypes.Unbonded, false, 11, ), @@ -801,3 +900,132 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveProposalValidatorsStatusesSnapshot ), }) } + +func (suite *DbTestSuite) TestBigDipperDb_SaveSoftwareUpgradePlan() { + _ = suite.getProposalRow(1) + + // ---------------------------------------------------------------------------------------------------------------- + // Save software upgrade plan at height 10 with upgrade height at 100 + var plan = upgradetypes.Plan{ + Name: "name", + Height: 100, + Info: "info", + } + + err := suite.database.SaveSoftwareUpgradePlan(1, plan, 10) + suite.Require().NoError(err) + + var rows []dbtypes.SoftwareUpgradePlanRow + err = suite.database.Sqlx.Select(&rows, `SELECT * FROM software_upgrade_plan`) + suite.Require().NoError(err) + suite.Require().Len(rows, 1) + suite.Require().Equal(rows, []dbtypes.SoftwareUpgradePlanRow{ + dbtypes.NewSoftwareUpgradePlanRow(1, plan.Name, plan.Height, plan.Info, 10), + }) + + // ---------------------------------------------------------------------------------------------------------------- + // Update software upgrade plan with lower height + planEdit1 := upgradetypes.Plan{ + Name: "name_edit_1", + Height: 101, + Info: "info_edit_1", + } + + err = suite.database.SaveSoftwareUpgradePlan(1, planEdit1, 9) + suite.Require().NoError(err) + + rows = []dbtypes.SoftwareUpgradePlanRow{} + err = suite.database.Sqlx.Select(&rows, `SELECT * FROM software_upgrade_plan`) + suite.Require().NoError(err) + suite.Require().Len(rows, 1) + suite.Require().Equal(rows, []dbtypes.SoftwareUpgradePlanRow{ + dbtypes.NewSoftwareUpgradePlanRow(1, plan.Name, plan.Height, plan.Info, 10), + }) + + // ---------------------------------------------------------------------------------------------------------------- + // Update software upgrade plan with same height + planEdit2 := upgradetypes.Plan{ + Name: "name_edit_2", + Height: 102, + Info: "info_edit_2", + } + + err = suite.database.SaveSoftwareUpgradePlan(1, planEdit2, 10) + suite.Require().NoError(err) + + rows = []dbtypes.SoftwareUpgradePlanRow{} + err = suite.database.Sqlx.Select(&rows, `SELECT * FROM software_upgrade_plan`) + suite.Require().NoError(err) + suite.Require().Len(rows, 1) + suite.Require().Equal(rows, []dbtypes.SoftwareUpgradePlanRow{ + dbtypes.NewSoftwareUpgradePlanRow(1, planEdit2.Name, planEdit2.Height, planEdit2.Info, 10), + }) + + // ---------------------------------------------------------------------------------------------------------------- + // Update software upgrade plan with higher height + planEdit3 := upgradetypes.Plan{ + Name: "name_edit_3", + Height: 103, + Info: "info_edit_3", + } + + err = suite.database.SaveSoftwareUpgradePlan(1, planEdit3, 11) + suite.Require().NoError(err) + + rows = []dbtypes.SoftwareUpgradePlanRow{} + err = suite.database.Sqlx.Select(&rows, `SELECT * FROM software_upgrade_plan`) + suite.Require().NoError(err) + suite.Require().Len(rows, 1) + suite.Require().Equal(rows, []dbtypes.SoftwareUpgradePlanRow{ + dbtypes.NewSoftwareUpgradePlanRow(1, planEdit3.Name, planEdit3.Height, planEdit3.Info, 11), + }) +} + +func (suite *DbTestSuite) TestBigDipperDb_DeleteSoftwareUpgradePlan() { + _ = suite.getProposalRow(1) + + // Save software upgrade plan at height 10 with upgrade height at 100 + var plan = upgradetypes.Plan{ + Name: "name", + Height: 100, + Info: "info", + } + + err := suite.database.SaveSoftwareUpgradePlan(1, plan, 10) + suite.Require().NoError(err) + + // Delete software upgrade plan + err = suite.database.DeleteSoftwareUpgradePlan(1) + suite.Require().NoError(err) + + var rows []dbtypes.SoftwareUpgradePlanRow + err = suite.database.Sqlx.Select(&rows, `SELECT * FROM software_upgrade_plan`) + suite.Require().NoError(err) + suite.Require().Len(rows, 0) + +} + +func (suite *DbTestSuite) TestBigDipperDb_CheckSoftwareUpgradePlan() { + _ = suite.getProposalRow(1) + + // Save software upgrade plan at height 10 with upgrade height at 100 + var plan = upgradetypes.Plan{ + Name: "name", + // the Height here is the upgrade height + Height: 100, + Info: "info", + } + + err := suite.database.SaveSoftwareUpgradePlan(1, plan, 10) + suite.Require().NoError(err) + + // Check software upgrade plan at existing height + exist, err := suite.database.CheckSoftwareUpgradePlan(100) + suite.Require().NoError(err) + suite.Require().Equal(true, exist) + + // Check software upgrade plan at non-existing height + exist, err = suite.database.CheckSoftwareUpgradePlan(11) + suite.Require().NoError(err) + suite.Require().Equal(false, exist) +} diff --git a/database/mint.go b/database/mint.go index a3472f8a2..ef080eef1 100644 --- a/database/mint.go +++ b/database/mint.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // SaveInflation allows to store the inflation for the given block height as well as timestamp @@ -19,7 +19,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE inflation.height <= excluded.height` - _, err := db.Sql.Exec(stmt, inflation.String(), height) + _, err := db.SQL.Exec(stmt, inflation.String(), height) if err != nil { return fmt.Errorf("error while storing inflation: %s", err) } @@ -42,7 +42,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE mint_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(paramsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing mint params: %s", err) } diff --git a/database/mint_test.go b/database/mint_test.go index b3fc44f09..d55d2a556 100644 --- a/database/mint_test.go +++ b/database/mint_test.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) TestBigDipperDb_SaveInflation() { diff --git a/database/pricefeed.go b/database/pricefeed.go index ab42256de..aca814382 100644 --- a/database/pricefeed.go +++ b/database/pricefeed.go @@ -3,9 +3,9 @@ package database import ( "fmt" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" "github.com/lib/pq" ) @@ -35,7 +35,7 @@ func (db *Db) GetTokensPriceID() ([]string, error) { // SaveToken allows to save the given token details func (db *Db) SaveToken(token types.Token) error { query := `INSERT INTO token (name) VALUES ($1) ON CONFLICT DO NOTHING` - _, err := db.Sql.Exec(query, token.Name) + _, err := db.SQL.Exec(query, token.Name) if err != nil { return err } @@ -52,7 +52,7 @@ func (db *Db) SaveToken(token types.Token) error { query = query[:len(query)-1] // Remove trailing "," query += " ON CONFLICT DO NOTHING" - _, err = db.Sql.Exec(query, params...) + _, err = db.SQL.Exec(query, params...) if err != nil { return fmt.Errorf("error while saving token: %s", err) } @@ -85,7 +85,7 @@ ON CONFLICT (unit_name) DO UPDATE timestamp = excluded.timestamp WHERE token_price.timestamp <= excluded.timestamp` - _, err := db.Sql.Exec(query, param...) + _, err := db.SQL.Exec(query, param...) if err != nil { return fmt.Errorf("error while saving tokens prices: %s", err) } @@ -114,7 +114,7 @@ ON CONFLICT ON CONSTRAINT unique_price_for_timestamp DO UPDATE SET price = excluded.price, market_cap = excluded.market_cap` - _, err := db.Sql.Exec(query, param...) + _, err := db.SQL.Exec(query, param...) if err != nil { return fmt.Errorf("error while storing tokens price history: %s", err) } diff --git a/database/pricefeed_test.go b/database/pricefeed_test.go index 50a732a34..a246df41c 100644 --- a/database/pricefeed_test.go +++ b/database/pricefeed_test.go @@ -4,21 +4,21 @@ import ( "fmt" "time" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) insertToken(name string) { query := fmt.Sprintf( `INSERT INTO token (name) VALUES ('%s')`, name) - _, err := suite.database.Sql.Query(query) + _, err := suite.database.SQL.Query(query) suite.Require().NoError(err) query = fmt.Sprintf( `INSERT INTO token_unit (token_name, denom, exponent, price_id) VALUES ('%[1]s', 'u%[1]s', 0, 'u%[1]s'), ('%[1]s', 'm%[1]s', 3, 'm%[1]s'), ('%[1]s', '%[1]s', 6, '%[1]s')`, name) - _, err = suite.database.Sql.Query(query) + _, err = suite.database.SQL.Query(query) suite.Require().NoError(err) } diff --git a/database/pruning.go b/database/pruning.go index 7c8c610f6..774c5ac87 100644 --- a/database/pruning.go +++ b/database/pruning.go @@ -40,7 +40,7 @@ func (db *Db) Prune(height int64) error { } func (db *Db) pruneBank(height int64) error { - _, err := db.Sql.Exec(`DELETE FROM supply WHERE height = $1`, height) + _, err := db.SQL.Exec(`DELETE FROM supply WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning supply: %s", err) } @@ -48,32 +48,32 @@ func (db *Db) pruneBank(height int64) error { } func (db *Db) pruneStaking(height int64) error { - _, err := db.Sql.Exec(`DELETE FROM staking_pool WHERE height = $1`, height) + _, err := db.SQL.Exec(`DELETE FROM staking_pool WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning staking pool: %s", err) } - _, err = db.Sql.Exec(`DELETE FROM validator_commission WHERE height = $1`, height) + _, err = db.SQL.Exec(`DELETE FROM validator_commission WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning validator commission: %s", err) } - _, err = db.Sql.Exec(`DELETE FROM validator_voting_power WHERE height = $1`, height) + _, err = db.SQL.Exec(`DELETE FROM validator_voting_power WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning validator voting power: %s", err) } - _, err = db.Sql.Exec(`DELETE FROM validator_status WHERE height = $1`, height) + _, err = db.SQL.Exec(`DELETE FROM validator_status WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning validator status: %s", err) } - _, err = db.Sql.Exec(`DELETE FROM double_sign_vote WHERE height = $1`, height) + _, err = db.SQL.Exec(`DELETE FROM double_sign_vote WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning double sign votes: %s", err) } - _, err = db.Sql.Exec(`DELETE FROM double_sign_evidence WHERE height = $1`, height) + _, err = db.SQL.Exec(`DELETE FROM double_sign_evidence WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning double sign evidence: %s", err) } @@ -82,12 +82,12 @@ func (db *Db) pruneStaking(height int64) error { } func (db *Db) pruneMint(height int64) error { - _, err := db.Sql.Exec(`DELETE FROM inflation WHERE height = $1`, height) + _, err := db.SQL.Exec(`DELETE FROM inflation WHERE height = $1`, height) return fmt.Errorf("error while pruning inflation: %s", err) } func (db *Db) pruneDistribution(height int64) error { - _, err := db.Sql.Exec(`DELETE FROM community_pool WHERE height = $1`, height) + _, err := db.SQL.Exec(`DELETE FROM community_pool WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning community pool: %s", err) } @@ -96,12 +96,12 @@ func (db *Db) pruneDistribution(height int64) error { } func (db *Db) pruneSlashing(height int64) error { - _, err := db.Sql.Exec(`DELETE FROM validator_signing_info WHERE height = $1`, height) + _, err := db.SQL.Exec(`DELETE FROM validator_signing_info WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning validator signing info: %s", err) } - _, err = db.Sql.Exec(`DELETE FROM slashing_params WHERE height = $1`, height) + _, err = db.SQL.Exec(`DELETE FROM slashing_params WHERE height = $1`, height) if err != nil { return fmt.Errorf("error while pruning slashing params: %s", err) } diff --git a/database/schema/00-cosmos.sql b/database/schema/00-cosmos.sql index 890008f31..993d59b7c 100644 --- a/database/schema/00-cosmos.sql +++ b/database/schema/00-cosmos.sql @@ -30,11 +30,11 @@ CREATE INDEX block_hash_index ON block (hash); CREATE INDEX block_proposer_address_index ON block (proposer_address); ALTER TABLE block SET ( - autovacuum_vacuum_scale_factor = 0, - autovacuum_analyze_scale_factor = 0, - autovacuum_vacuum_threshold = 10000, - autovacuum_analyze_threshold = 10000 - ); + autovacuum_vacuum_scale_factor = 0, + autovacuum_analyze_scale_factor = 0, + autovacuum_vacuum_threshold = 10000, + autovacuum_analyze_threshold = 10000 + ); CREATE TABLE transaction ( @@ -99,9 +99,9 @@ SELECT * FROM message WHERE (cardinality(types) = 0 OR type = ANY (types)) AND addresses && involved_accounts_addresses ORDER BY height DESC LIMIT "limit" OFFSET "offset" -$$ LANGUAGE sql STABLE; + $$ LANGUAGE sql STABLE; CREATE TABLE pruning ( last_pruned_height BIGINT NOT NULL -); \ No newline at end of file +); diff --git a/database/schema/01-auth.sql b/database/schema/01-auth.sql index 16f9689ba..e50d5b99d 100644 --- a/database/schema/01-auth.sql +++ b/database/schema/01-auth.sql @@ -5,10 +5,10 @@ CREATE TABLE account /* ---- Moved from bank.sql for vesting account usage ---- */ CREATE TYPE COIN AS -( + ( denom TEXT, amount TEXT -); + ); /* ---- AUTH/ VESTING ACCOUNT ---- */ CREATE TABLE vesting_account @@ -31,4 +31,4 @@ CREATE TABLE vesting_period period_order BIGINT NOT NULL, length BIGINT NOT NULL, amount COIN[] NOT NULL DEFAULT '{}' -); \ No newline at end of file +); diff --git a/database/schema/02-bank.sql b/database/schema/02-bank.sql index 5df120c12..23523fca5 100644 --- a/database/schema/02-bank.sql +++ b/database/schema/02-bank.sql @@ -1,10 +1,110 @@ -/* ---- SUPPLY ---- */ +/* ---- PARAMS ---- */ -CREATE TABLE supply +CREATE TABLE staking_params ( one_row_id BOOLEAN NOT NULL DEFAULT TRUE PRIMARY KEY, - coins COIN[] NOT NULL, + params JSONB NOT NULL, height BIGINT NOT NULL, CHECK (one_row_id) ); -CREATE INDEX supply_height_index ON supply (height); \ No newline at end of file +CREATE INDEX staking_params_height_index ON staking_params (height); + +/* ---- POOL ---- */ + +CREATE TABLE staking_pool +( + one_row_id BOOLEAN NOT NULL DEFAULT TRUE PRIMARY KEY, + bonded_tokens TEXT NOT NULL, + not_bonded_tokens TEXT NOT NULL, + unbonding_tokens TEXT NOT NULL, + staked_not_bonded_tokens TEXT NOT NULL, + height BIGINT NOT NULL, + CHECK (one_row_id) +); +CREATE INDEX staking_pool_height_index ON staking_pool (height); + +/* ---- VALIDATORS INFO ---- */ + +CREATE TABLE validator_info +( + consensus_address TEXT NOT NULL UNIQUE PRIMARY KEY REFERENCES validator (consensus_address), + operator_address TEXT NOT NULL UNIQUE, + self_delegate_address TEXT REFERENCES account (address), + max_change_rate TEXT NOT NULL, + max_rate TEXT NOT NULL, + height BIGINT NOT NULL +); +CREATE INDEX validator_info_operator_address_index ON validator_info (operator_address); +CREATE INDEX validator_info_self_delegate_address_index ON validator_info (self_delegate_address); + +CREATE TABLE validator_description +( + validator_address TEXT NOT NULL REFERENCES validator (consensus_address) PRIMARY KEY, + moniker TEXT, + identity TEXT, + avatar_url TEXT, + website TEXT, + security_contact TEXT, + details TEXT, + height BIGINT NOT NULL +); +CREATE INDEX validator_description_height_index ON validator_description (height); + +CREATE TABLE validator_commission +( + validator_address TEXT NOT NULL REFERENCES validator (consensus_address) PRIMARY KEY, + commission DECIMAL NOT NULL, + min_self_delegation BIGINT NOT NULL, + height BIGINT NOT NULL +); +CREATE INDEX validator_commission_height_index ON validator_commission (height); + +CREATE TABLE validator_voting_power +( + validator_address TEXT NOT NULL REFERENCES validator (consensus_address) PRIMARY KEY, + voting_power BIGINT NOT NULL, + height BIGINT NOT NULL REFERENCES block (height) +); +CREATE INDEX validator_voting_power_height_index ON validator_voting_power (height); + +CREATE TABLE validator_status +( + validator_address TEXT NOT NULL REFERENCES validator (consensus_address) PRIMARY KEY, + status INT NOT NULL, + jailed BOOLEAN NOT NULL, + height BIGINT NOT NULL +); +CREATE INDEX validator_status_height_index ON validator_status (height); + +/* ---- DOUBLE SIGN EVIDENCE ---- */ + +/* + * This holds the votes that is the evidence of a double sign. + * It should be updated on a BLOCK basis when a double sign occurs. + */ +CREATE TABLE double_sign_vote +( + id SERIAL PRIMARY KEY, + type SMALLINT NOT NULL, + height BIGINT NOT NULL, + round INT NOT NULL, + block_id TEXT NOT NULL, + validator_address TEXT NOT NULL REFERENCES validator (consensus_address), + validator_index INT NOT NULL, + signature TEXT NOT NULL, + UNIQUE (block_id, validator_address) +); +CREATE INDEX double_sign_vote_validator_address_index ON double_sign_vote (validator_address); +CREATE INDEX double_sign_vote_height_index ON double_sign_vote (height); + +/* + * This holds the double sign evidences. + * It should be updated on a on BLOCK basis. + */ +CREATE TABLE double_sign_evidence +( + height BIGINT NOT NULL, + vote_a_id BIGINT NOT NULL REFERENCES double_sign_vote (id), + vote_b_id BIGINT NOT NULL REFERENCES double_sign_vote (id) +); +CREATE INDEX double_sign_evidence_height_index ON double_sign_evidence (height); diff --git a/database/schema/03-staking.sql b/database/schema/03-staking.sql index eff864331..f2f1eb491 100644 --- a/database/schema/03-staking.sql +++ b/database/schema/03-staking.sql @@ -13,10 +13,12 @@ CREATE INDEX staking_params_height_index ON staking_params (height); CREATE TABLE staking_pool ( - one_row_id BOOLEAN NOT NULL DEFAULT TRUE PRIMARY KEY, - bonded_tokens TEXT NOT NULL, - not_bonded_tokens TEXT NOT NULL, - height BIGINT NOT NULL, + one_row_id BOOLEAN NOT NULL DEFAULT TRUE PRIMARY KEY, + bonded_tokens TEXT NOT NULL, + not_bonded_tokens TEXT NOT NULL, + unbonding_tokens TEXT NOT NULL, + staked_not_bonded_tokens TEXT NOT NULL, + height BIGINT NOT NULL, CHECK (one_row_id) ); CREATE INDEX staking_pool_height_index ON staking_pool (height); @@ -70,7 +72,6 @@ CREATE TABLE validator_status validator_address TEXT NOT NULL REFERENCES validator (consensus_address) PRIMARY KEY, status INT NOT NULL, jailed BOOLEAN NOT NULL, - tombstoned BOOLEAN NOT NULL DEFAULT FALSE, height BIGINT NOT NULL ); CREATE INDEX validator_status_height_index ON validator_status (height); diff --git a/database/schema/06-distribution.sql b/database/schema/06-distribution.sql index 47c43f702..f568f27de 100644 --- a/database/schema/06-distribution.sql +++ b/database/schema/06-distribution.sql @@ -1,8 +1,8 @@ CREATE TYPE DEC_COIN AS -( + ( denom TEXT, amount TEXT -); + ); /* ---- PARAMS ---- */ diff --git a/database/schema/08-gov.sql b/database/schema/08-gov.sql index df2ce5c2b..9fd83ba1f 100644 --- a/database/schema/08-gov.sql +++ b/database/schema/08-gov.sql @@ -1,10 +1,8 @@ CREATE TABLE gov_params ( - one_row_id BOOLEAN NOT NULL DEFAULT TRUE PRIMARY KEY, - deposit_params JSONB NOT NULL, - voting_params JSONB NOT NULL, - tally_params JSONB NOT NULL, - height BIGINT NOT NULL, + one_row_id BOOLEAN NOT NULL DEFAULT TRUE PRIMARY KEY, + params JSONB NOT NULL, + height BIGINT NOT NULL, CHECK (one_row_id) ); @@ -13,9 +11,8 @@ CREATE TABLE proposal id INTEGER NOT NULL PRIMARY KEY, title TEXT NOT NULL, description TEXT NOT NULL, - content JSONB NOT NULL, - proposal_route TEXT NOT NULL, - proposal_type TEXT NOT NULL, + metadata TEXT NOT NULL, + content JSONB NOT NULL DEFAULT '[]'::JSONB, submit_time TIMESTAMP NOT NULL, deposit_end_time TIMESTAMP, voting_start_time TIMESTAMP, @@ -28,10 +25,12 @@ CREATE INDEX proposal_proposer_address_index ON proposal (proposer_address); CREATE TABLE proposal_deposit ( proposal_id INTEGER NOT NULL REFERENCES proposal (id), - depositor_address TEXT REFERENCES account (address), + depositor_address TEXT REFERENCES account (address), amount COIN[], - height BIGINT NOT NULL REFERENCES block (height), - CONSTRAINT unique_deposit UNIQUE (proposal_id, depositor_address) + timestamp TIMESTAMP, + transaction_hash TEXT NOT NULL, + height BIGINT NOT NULL, + CONSTRAINT unique_deposit UNIQUE (proposal_id, depositor_address, transaction_hash) ); CREATE INDEX proposal_deposit_proposal_id_index ON proposal_deposit (proposal_id); CREATE INDEX proposal_deposit_depositor_address_index ON proposal_deposit (depositor_address); @@ -42,8 +41,10 @@ CREATE TABLE proposal_vote proposal_id INTEGER NOT NULL REFERENCES proposal (id), voter_address TEXT NOT NULL REFERENCES account (address), option TEXT NOT NULL, - height BIGINT NOT NULL REFERENCES block (height), - CONSTRAINT unique_vote UNIQUE (proposal_id, voter_address) + weight TEXT NOT NULL, + timestamp TIMESTAMP, + height BIGINT NOT NULL, + CONSTRAINT unique_vote UNIQUE (proposal_id, voter_address, option) ); CREATE INDEX proposal_vote_proposal_id_index ON proposal_vote (proposal_id); CREATE INDEX proposal_vote_voter_address_index ON proposal_vote (voter_address); @@ -52,10 +53,10 @@ CREATE INDEX proposal_vote_height_index ON proposal_vote (height); CREATE TABLE proposal_tally_result ( proposal_id INTEGER REFERENCES proposal (id) PRIMARY KEY, - yes TEXT NOT NULL, - abstain TEXT NOT NULL, - no TEXT NOT NULL, - no_with_veto TEXT NOT NULL, + yes TEXT NOT NULL, + abstain TEXT NOT NULL, + no TEXT NOT NULL, + no_with_veto TEXT NOT NULL, height BIGINT NOT NULL, CONSTRAINT unique_tally_result UNIQUE (proposal_id) ); @@ -74,13 +75,13 @@ CREATE INDEX proposal_staking_pool_snapshot_proposal_id_index ON proposal_stakin CREATE TABLE proposal_validator_status_snapshot ( - id SERIAL PRIMARY KEY NOT NULL, + id SERIAL PRIMARY KEY NOT NULL, proposal_id INTEGER REFERENCES proposal (id), - validator_address TEXT NOT NULL REFERENCES validator (consensus_address), - voting_power BIGINT NOT NULL, - status INT NOT NULL, - jailed BOOLEAN NOT NULL, - height BIGINT NOT NULL, + validator_address TEXT NOT NULL REFERENCES validator (consensus_address), + voting_power BIGINT NOT NULL, + status INT NOT NULL, + jailed BOOLEAN NOT NULL, + height BIGINT NOT NULL, CONSTRAINT unique_validator_status_snapshot UNIQUE (proposal_id, validator_address) ); CREATE INDEX proposal_validator_status_snapshot_proposal_id_index ON proposal_validator_status_snapshot (proposal_id); diff --git a/database/schema/11-feegrant.sql b/database/schema/11-feegrant.sql index af1145034..7589cc73a 100644 --- a/database/schema/11-feegrant.sql +++ b/database/schema/11-feegrant.sql @@ -5,6 +5,6 @@ CREATE TABLE fee_grant_allowance granter_address TEXT NOT NULL REFERENCES account (address), allowance JSONB NOT NULL DEFAULT '{}'::JSONB, height BIGINT NOT NULL, - CONSTRAINT unique_fee_grant_allowance UNIQUE(grantee_address, granter_address) + CONSTRAINT unique_fee_grant_allowance UNIQUE(grantee_address, granter_address) ); CREATE INDEX fee_grant_allowance_height_index ON fee_grant_allowance (height); diff --git a/database/schema/12-upgrade.sql b/database/schema/12-upgrade.sql new file mode 100644 index 000000000..982be6a2f --- /dev/null +++ b/database/schema/12-upgrade.sql @@ -0,0 +1,10 @@ +CREATE TABLE software_upgrade_plan +( + proposal_id INTEGER REFERENCES proposal (id) UNIQUE, + plan_name TEXT NOT NULL, + upgrade_height BIGINT NOT NULL, + info TEXT NOT NULL, + height BIGINT NOT NULL +); +CREATE INDEX software_upgrade_plan_proposal_id_index ON software_upgrade_plan (proposal_id); +CREATE INDEX software_upgrade_plan_height_index ON software_upgrade_plan (height); diff --git a/database/schema/12-feemodel.sql b/database/schema/14-feemodel.sql similarity index 100% rename from database/schema/12-feemodel.sql rename to database/schema/14-feemodel.sql diff --git a/database/schema/14-assetftparams.sql b/database/schema/15-assetftparams.sql similarity index 100% rename from database/schema/14-assetftparams.sql rename to database/schema/15-assetftparams.sql diff --git a/database/schema/14-assetnftparams.sql b/database/schema/16-assetnftparams.sql similarity index 100% rename from database/schema/14-assetnftparams.sql rename to database/schema/16-assetnftparams.sql diff --git a/database/slashing.go b/database/slashing.go index 7d9e27551..55a4bbeda 100644 --- a/database/slashing.go +++ b/database/slashing.go @@ -4,7 +4,7 @@ import ( "encoding/json" "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // SaveValidatorsSigningInfos saves the given infos inside the database @@ -41,7 +41,7 @@ ON CONFLICT (validator_address) DO UPDATE height = excluded.height WHERE validator_signing_info.height <= excluded.height` - _, err := db.Sql.Exec(stmt, args...) + _, err := db.SQL.Exec(stmt, args...) if err != nil { return fmt.Errorf("error while storing validators signing infos: %s", err) } @@ -64,7 +64,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE slashing_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(paramsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing slashing params: %s", err) } diff --git a/database/slashing_test.go b/database/slashing_test.go index 895d1db3c..ed0e85c85 100644 --- a/database/slashing_test.go +++ b/database/slashing_test.go @@ -4,12 +4,12 @@ import ( "encoding/json" "time" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" sdk "github.com/cosmos/cosmos-sdk/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) TestBigDipperDb_ValidatorSigningInfo() { diff --git a/database/staking_params.go b/database/staking_params.go index 737aa5c3e..f6e5924a0 100644 --- a/database/staking_params.go +++ b/database/staking_params.go @@ -6,8 +6,8 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" ) // SaveStakingParams allows to store the given params into the database @@ -25,7 +25,7 @@ ON CONFLICT (one_row_id) DO UPDATE height = excluded.height WHERE staking_params.height <= excluded.height` - _, err = db.Sql.Exec(stmt, string(paramsBz), params.Height) + _, err = db.SQL.Exec(stmt, string(paramsBz), params.Height) if err != nil { return fmt.Errorf("error while storing staking params: %s", err) } diff --git a/database/staking_params_test.go b/database/staking_params_test.go index 23af916b7..68253ec8f 100644 --- a/database/staking_params_test.go +++ b/database/staking_params_test.go @@ -6,8 +6,10 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + sdk "github.com/cosmos/cosmos-sdk/types" + + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" ) func (suite *DbTestSuite) TestSaveStakingParams() { @@ -17,6 +19,7 @@ func (suite *DbTestSuite) TestSaveStakingParams() { 7, 10000, "uatom", + sdk.NewDec(1), ) err := suite.database.SaveStakingParams(types.NewStakingParams(stakingParams, 10)) suite.Require().NoError(err) @@ -40,12 +43,13 @@ func (suite *DbTestSuite) TestGetStakingParams() { 7, 10000, "uatom", + sdk.NewDec(1), ) paramsBz, err := json.Marshal(&stakingParams) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec( + _, err = suite.database.SQL.Exec( `INSERT INTO staking_params (params, height) VALUES ($1, $2)`, string(paramsBz), 10, ) diff --git a/database/staking_pool.go b/database/staking_pool.go index 4e2e6eae2..0e2d83bf9 100644 --- a/database/staking_pool.go +++ b/database/staking_pool.go @@ -3,21 +3,28 @@ package database import ( "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // SaveStakingPool allows to save for the given height the given stakingtypes pool func (db *Db) SaveStakingPool(pool *types.Pool) error { stmt := ` -INSERT INTO staking_pool (bonded_tokens, not_bonded_tokens, height) -VALUES ($1, $2, $3) +INSERT INTO staking_pool (bonded_tokens, not_bonded_tokens, unbonding_tokens, staked_not_bonded_tokens, height) +VALUES ($1, $2, $3, $4, $5) ON CONFLICT (one_row_id) DO UPDATE SET bonded_tokens = excluded.bonded_tokens, not_bonded_tokens = excluded.not_bonded_tokens, + unbonding_tokens = excluded.unbonding_tokens, + staked_not_bonded_tokens = excluded.staked_not_bonded_tokens, height = excluded.height WHERE staking_pool.height <= excluded.height` - _, err := db.Sql.Exec(stmt, pool.BondedTokens.String(), pool.NotBondedTokens.String(), pool.Height) + _, err := db.SQL.Exec(stmt, + pool.BondedTokens.String(), + pool.NotBondedTokens.String(), + pool.UnbondingTokens.String(), + pool.StakedNotBondedTokens.String(), + pool.Height) if err != nil { return fmt.Errorf("error while storing staking pool: %s", err) } diff --git a/database/staking_pool_test.go b/database/staking_pool_test.go index 290bd66cf..ceaeecd55 100644 --- a/database/staking_pool_test.go +++ b/database/staking_pool_test.go @@ -3,18 +3,18 @@ package database_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" - "github.com/forbole/bdjuno/v3/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" + "github.com/forbole/bdjuno/v4/types" ) func (suite *DbTestSuite) TestBigDipperDb_SaveStakingPool() { // Save the data - original := types.NewPool(sdk.NewInt(50), sdk.NewInt(100), 10) + original := types.NewPool(sdk.NewInt(50), sdk.NewInt(100), sdk.NewInt(5), sdk.NewInt(1), 10) err := suite.database.SaveStakingPool(original) suite.Require().NoError(err) // Verify the data - expected := dbtypes.NewStakingPoolRow(50, 100, 10) + expected := dbtypes.NewStakingPoolRow(50, 100, 5, 1, 10) var rows []dbtypes.StakingPoolRow err = suite.database.Sqlx.Select(&rows, `SELECT * FROM staking_pool`) @@ -25,7 +25,7 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveStakingPool() { // ---------------------------------------------------------------------------------------------------------------- // Try updating using a lower height - pool := types.NewPool(sdk.NewInt(1), sdk.NewInt(1), 8) + pool := types.NewPool(sdk.NewInt(1), sdk.NewInt(1), sdk.NewInt(1), sdk.NewInt(1), 8) err = suite.database.SaveStakingPool(pool) suite.Require().NoError(err) @@ -39,12 +39,12 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveStakingPool() { // ---------------------------------------------------------------------------------------------------------------- // Try updating with the same height - pool = types.NewPool(sdk.NewInt(1), sdk.NewInt(1), 10) + pool = types.NewPool(sdk.NewInt(1), sdk.NewInt(1), sdk.NewInt(1), sdk.NewInt(1), 10) err = suite.database.SaveStakingPool(pool) suite.Require().NoError(err) // Verify the data - expected = dbtypes.NewStakingPoolRow(1, 1, 10) + expected = dbtypes.NewStakingPoolRow(1, 1, 1, 1, 10) rows = []dbtypes.StakingPoolRow{} err = suite.database.Sqlx.Select(&rows, `SELECT * FROM staking_pool`) @@ -55,12 +55,12 @@ func (suite *DbTestSuite) TestBigDipperDb_SaveStakingPool() { // ---------------------------------------------------------------------------------------------------------------- // Try updating with a higher height - pool = types.NewPool(sdk.NewInt(1000000), sdk.NewInt(1000000), 20) + pool = types.NewPool(sdk.NewInt(1000000), sdk.NewInt(1000000), sdk.NewInt(20), sdk.NewInt(15), 20) err = suite.database.SaveStakingPool(pool) suite.Require().NoError(err) // Verify the data - expected = dbtypes.NewStakingPoolRow(1000000, 1000000, 20) + expected = dbtypes.NewStakingPoolRow(1000000, 1000000, 20, 15, 20) rows = []dbtypes.StakingPoolRow{} err = suite.database.Sqlx.Select(&rows, `SELECT * FROM staking_pool`) diff --git a/database/staking_validators.go b/database/staking_validators.go index f911247de..54d7d551a 100644 --- a/database/staking_validators.go +++ b/database/staking_validators.go @@ -3,9 +3,9 @@ package database import ( "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -56,14 +56,14 @@ VALUES ` selfDelegationAccQuery = selfDelegationAccQuery[:len(selfDelegationAccQuery)-1] // Remove trailing "," selfDelegationAccQuery += " ON CONFLICT DO NOTHING" - _, err := db.Sql.Exec(selfDelegationAccQuery, selfDelegationParam...) + _, err := db.SQL.Exec(selfDelegationAccQuery, selfDelegationParam...) if err != nil { return fmt.Errorf("error while storing accounts: %s", err) } validatorQuery = validatorQuery[:len(validatorQuery)-1] // Remove trailing "," validatorQuery += " ON CONFLICT DO NOTHING" - _, err = db.Sql.Exec(validatorQuery, validatorParams...) + _, err = db.SQL.Exec(validatorQuery, validatorParams...) if err != nil { return fmt.Errorf("error while storing valdiators: %s", err) } @@ -78,7 +78,7 @@ ON CONFLICT (consensus_address) DO UPDATE max_rate = excluded.max_rate, height = excluded.height WHERE validator_info.height <= excluded.height` - _, err = db.Sql.Exec(validatorInfoQuery, validatorInfoParams...) + _, err = db.SQL.Exec(validatorInfoQuery, validatorInfoParams...) if err != nil { return fmt.Errorf("error while storing validator infos: %s", err) } @@ -247,7 +247,7 @@ ON CONFLICT (validator_address) DO UPDATE height = excluded.height WHERE validator_description.height <= excluded.height` - _, err = db.Sql.Exec(stmt, + _, err = db.SQL.Exec(stmt, dbtypes.ToNullString(consAddr.String()), dbtypes.ToNullString(des.Moniker), dbtypes.ToNullString(des.Identity), @@ -340,7 +340,7 @@ ON CONFLICT (validator_address) DO UPDATE min_self_delegation = excluded.min_self_delegation, height = excluded.height WHERE validator_commission.height <= excluded.height` - _, err = db.Sql.Exec(stmt, consAddr.String(), commission, minSelfDelegation, data.Height) + _, err = db.SQL.Exec(stmt, consAddr.String(), commission, minSelfDelegation, data.Height) if err != nil { return fmt.Errorf("error while storing validator commission: %s", err) } @@ -388,7 +388,7 @@ ON CONFLICT (validator_address) DO UPDATE height = excluded.height WHERE validator_voting_power.height <= excluded.height` - _, err := db.Sql.Exec(stmt, params...) + _, err := db.SQL.Exec(stmt, params...) if err != nil { return fmt.Errorf("error while storing validators voting power: %s", err) } @@ -407,7 +407,7 @@ func (db *Db) SaveValidatorsStatuses(statuses []types.ValidatorStatus) error { validatorStmt := `INSERT INTO validator (consensus_address, consensus_pubkey) VALUES` var valParams []interface{} - statusStmt := `INSERT INTO validator_status (validator_address, status, jailed, tombstoned, height) VALUES ` + statusStmt := `INSERT INTO validator_status (validator_address, status, jailed, height) VALUES ` var statusParams []interface{} for i, status := range statuses { @@ -415,14 +415,14 @@ func (db *Db) SaveValidatorsStatuses(statuses []types.ValidatorStatus) error { validatorStmt += fmt.Sprintf("($%d, $%d),", vi+1, vi+2) valParams = append(valParams, status.ConsensusAddress, status.ConsensusPubKey) - si := i * 5 - statusStmt += fmt.Sprintf("($%d,$%d,$%d,$%d,$%d),", si+1, si+2, si+3, si+4, si+5) - statusParams = append(statusParams, status.ConsensusAddress, status.Status, status.Jailed, status.Tombstoned, status.Height) + si := i * 4 + statusStmt += fmt.Sprintf("($%d,$%d,$%d,$%d),", si+1, si+2, si+3, si+4) + statusParams = append(statusParams, status.ConsensusAddress, status.Status, status.Jailed, status.Height) } validatorStmt = validatorStmt[:len(validatorStmt)-1] validatorStmt += "ON CONFLICT DO NOTHING" - _, err := db.Sql.Exec(validatorStmt, valParams...) + _, err := db.SQL.Exec(validatorStmt, valParams...) if err != nil { return fmt.Errorf("error while storing validators: %s", err) } @@ -432,10 +432,9 @@ func (db *Db) SaveValidatorsStatuses(statuses []types.ValidatorStatus) error { ON CONFLICT (validator_address) DO UPDATE SET status = excluded.status, jailed = excluded.jailed, - tombstoned = excluded.tombstoned, height = excluded.height WHERE validator_status.height <= excluded.height` - _, err = db.Sql.Exec(statusStmt, statusParams...) + _, err = db.SQL.Exec(statusStmt, statusParams...) if err != nil { return fmt.Errorf("error while stroring validators statuses: %s", err) } @@ -451,30 +450,46 @@ INSERT INTO double_sign_vote VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT DO NOTHING RETURNING id` var id int64 - err := db.Sql.QueryRow(stmt, + err := db.SQL.QueryRow(stmt, vote.Type, vote.Height, vote.Round, vote.BlockID, vote.ValidatorAddress, vote.ValidatorIndex, vote.Signature, ).Scan(&id) return id, err } -// SaveDoubleSignEvidence saves the given double sign evidence inside the proper tables -func (db *Db) SaveDoubleSignEvidence(evidence types.DoubleSignEvidence) error { - voteA, err := db.saveDoubleSignVote(evidence.VoteA) - if err != nil { - return fmt.Errorf("error while storing double sign vote: %s", err) - } - - voteB, err := db.saveDoubleSignVote(evidence.VoteB) - if err != nil { - return fmt.Errorf("error while storing double sign vote: %s", err) +// SaveDoubleSignEvidences saves the given double sign evidences inside the database +func (db *Db) SaveDoubleSignEvidences(evidence []types.DoubleSignEvidence) error { + if len(evidence) == 0 { + return nil } stmt := ` INSERT INTO double_sign_evidence (height, vote_a_id, vote_b_id) -VALUES ($1, $2, $3) ON CONFLICT DO NOTHING` - _, err = db.Sql.Exec(stmt, evidence.Height, voteA, voteB) +VALUES ` + + var doubleSignEvidence []interface{} + + for i, ev := range evidence { + voteA, err := db.saveDoubleSignVote(ev.VoteA) + if err != nil { + return fmt.Errorf("error while storing double sign vote: %s", err) + } + + voteB, err := db.saveDoubleSignVote(ev.VoteB) + if err != nil { + return fmt.Errorf("error while storing double sign vote: %s", err) + } + + si := i * 3 + stmt += fmt.Sprintf("($%d,$%d,$%d),", si+1, si+2, si+3) + doubleSignEvidence = append(doubleSignEvidence, ev.Height, voteA, voteB) + + } + + stmt = stmt[:len(stmt)-1] // remove tailing "," + stmt += " ON CONFLICT DO NOTHING" + _, err := db.SQL.Exec(stmt, doubleSignEvidence...) if err != nil { - return fmt.Errorf("error while storing double sign evidence: %s", err) + return fmt.Errorf("error while storing double sign evidences: %s", err) } return nil diff --git a/database/staking_validators_test.go b/database/staking_validators_test.go index c3e85c47e..e75b59dc9 100644 --- a/database/staking_validators_test.go +++ b/database/staking_validators_test.go @@ -1,14 +1,14 @@ package database_test import ( - tmtypes "github.com/tendermint/tendermint/proto/tendermint/types" + tmtypes "github.com/cometbft/cometbft/proto/tendermint/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - dbtypes "github.com/forbole/bdjuno/v3/database/types" + dbtypes "github.com/forbole/bdjuno/v4/database/types" ) func newDecPts(value int64, prec int64) *sdk.Dec { @@ -207,13 +207,13 @@ func (suite *DbTestSuite) TestGetValidator() { maxChangeRate := sdk.NewDec(ii) suite.getAccount("cosmos184ma3twcfjqef6k95ne8w2hk80x2kah7vcwy4a") // Insert test data - _, err := suite.database.Sql.Exec(` + _, err := suite.database.SQL.Exec(` INSERT INTO validator (consensus_address, consensus_pubkey) VALUES ('cosmosvalcons1qqqqrezrl53hujmpdch6d805ac75n220ku09rl', 'cosmosvalconspub1zcjduepq7mft6gfls57a0a42d7uhx656cckhfvtrlmw744jv4q0mvlv0dypskehfk8')`) suite.Require().NoError(err) - _, err = suite.database.Sql.Exec(` + _, err = suite.database.SQL.Exec(` INSERT INTO validator_info (consensus_address, operator_address,self_delegate_address,max_change_rate,max_rate,height) VALUES ('cosmosvalcons1qqqqrezrl53hujmpdch6d805ac75n220ku09rl', 'cosmosvaloper1rcp29q3hpd246n6qak7jluqep4v006cdsc2kkl', @@ -255,7 +255,7 @@ func (suite *DbTestSuite) TestGetValidators() { } for _, query := range queries { - _, err := suite.database.Sql.Exec(query) + _, err := suite.database.SQL.Exec(query) suite.Require().NoError(err) } @@ -633,7 +633,6 @@ func (suite *DbTestSuite) TestSaveValidatorStatus() { validator1.GetConsPubKey(), 1, false, - false, 10, ), types.NewValidatorStatus( @@ -641,7 +640,6 @@ func (suite *DbTestSuite) TestSaveValidatorStatus() { validator2.GetConsPubKey(), 2, true, - true, 10, ), }) @@ -656,14 +654,12 @@ func (suite *DbTestSuite) TestSaveValidatorStatus() { dbtypes.NewValidatorStatusRow( 1, false, - false, validator1.GetConsAddr(), 10, ), dbtypes.NewValidatorStatusRow( 2, true, - true, validator2.GetConsAddr(), 10, ), @@ -680,7 +676,6 @@ func (suite *DbTestSuite) TestSaveValidatorStatus() { validator1.GetConsPubKey(), 3, true, - true, 9, ), types.NewValidatorStatus( @@ -688,7 +683,6 @@ func (suite *DbTestSuite) TestSaveValidatorStatus() { validator2.GetConsPubKey(), 3, true, - true, 11, ), }) @@ -703,14 +697,12 @@ func (suite *DbTestSuite) TestSaveValidatorStatus() { dbtypes.NewValidatorStatusRow( 1, false, - false, validator1.GetConsAddr(), 10, ), dbtypes.NewValidatorStatusRow( 3, true, - true, validator2.GetConsAddr(), 11, ), @@ -730,9 +722,9 @@ func (suite *DbTestSuite) TestSaveDoubleVoteEvidence() { "cosmosvaloper1rcp29q3hpd246n6qak7jluqep4v006cdsc2kkl", "cosmosvalconspub1zcjduepq7mft6gfls57a0a42d7uhx656cckhfvtrlmw744jv4q0mvlv0dypskehfk8", ) - + var evidences []types.DoubleSignEvidence // Insert data - evidence := types.NewDoubleSignEvidence( + evidences = append(evidences, types.NewDoubleSignEvidence( 10, types.NewDoubleSignVote( int(tmtypes.PrevoteType), @@ -752,8 +744,9 @@ func (suite *DbTestSuite) TestSaveDoubleVoteEvidence() { 1, "A5m7SVuvZ8YNXcUfBKLgkeV+Vy5ea+7rPfzlbkEvHOPPce6B7A2CwOIbCmPSVMKUarUdta+HiyTV+IELaOYyDA==", ), + ), ) - err := suite.database.SaveDoubleSignEvidence(evidence) + err := suite.database.SaveDoubleSignEvidences(evidences) suite.Require().NoError(err) // Verify insertion diff --git a/database/types/consensus.go b/database/types/consensus.go index f16356a0a..4852979d0 100644 --- a/database/types/consensus.go +++ b/database/types/consensus.go @@ -87,3 +87,11 @@ type BlockRow struct { PreCommitsNum int64 `db:"pre_commits"` Timestamp time.Time `db:"timestamp"` } + +// ------------------------------------------------------------------------------------------------------------------- + +// BlockHeightAndTimestamp represents last block height and timestamp stored inside the database +type BlockHeightAndTimestamp struct { + Height int64 `db:"height"` + BlockTimestamp time.Time `db:"timestamp"` +} diff --git a/database/types/gov.go b/database/types/gov.go index 9d9a2753c..004d42bcb 100644 --- a/database/types/gov.go +++ b/database/types/gov.go @@ -1,64 +1,60 @@ package types import ( + "database/sql" "time" ) // GovParamsRow represents a single row of the "gov_params" table type GovParamsRow struct { - OneRowID bool `db:"one_row_id"` - DepositParams string `db:"deposit_params"` - VotingParams string `db:"voting_params"` - TallyParams string `db:"tally_params"` - Height int64 `db:"height"` + OneRowID bool `db:"one_row_id"` + Params string `db:"params"` + Height int64 `db:"height"` } // -------------------------------------------------------------------------------------------------------------------- // ProposalRow represents a single row inside the proposal table type ProposalRow struct { - Title string `db:"title"` - Description string `db:"description"` - Content string `db:"content"` - ProposalRoute string `db:"proposal_route"` - ProposalType string `db:"proposal_type"` - ProposalID uint64 `db:"id"` - SubmitTime time.Time `db:"submit_time"` - DepositEndTime time.Time `db:"deposit_end_time"` - VotingStartTime time.Time `db:"voting_start_time"` - VotingEndTime time.Time `db:"voting_end_time"` - Proposer string `db:"proposer_address"` - Status string `db:"status"` + Title string `db:"title"` + Description string `db:"description"` + Metadata string `db:"metadata"` + Content string `db:"content"` + ProposalID uint64 `db:"id"` + SubmitTime time.Time `db:"submit_time"` + DepositEndTime time.Time `db:"deposit_end_time"` + VotingStartTime sql.NullTime `db:"voting_start_time"` + VotingEndTime sql.NullTime `db:"voting_end_time"` + Proposer string `db:"proposer_address"` + Status string `db:"status"` } // NewProposalRow allows to easily create a new ProposalRow func NewProposalRow( proposalID uint64, - proposalRoute string, - proposalType string, title string, description string, + metadata string, content string, submitTime time.Time, depositEndTime time.Time, - votingStartTime time.Time, - votingEndTime time.Time, + votingStartTime *time.Time, + votingEndTime *time.Time, proposer string, status string, ) ProposalRow { return ProposalRow{ + ProposalID: proposalID, Title: title, Description: description, + Metadata: metadata, Content: content, - ProposalRoute: proposalRoute, - ProposalType: proposalType, - ProposalID: proposalID, + Status: status, SubmitTime: submitTime, DepositEndTime: depositEndTime, - VotingStartTime: votingStartTime, - VotingEndTime: votingEndTime, + VotingStartTime: TimeToNullTime(votingStartTime), + VotingEndTime: TimeToNullTime(votingEndTime), Proposer: proposer, - Status: status, } } @@ -66,13 +62,13 @@ func NewProposalRow( func (w ProposalRow) Equals(v ProposalRow) bool { return w.Title == v.Title && w.Description == v.Description && - w.ProposalRoute == v.ProposalRoute && - w.ProposalType == v.ProposalType && + w.Metadata == v.Metadata && + w.Content == v.Content && w.ProposalID == v.ProposalID && w.SubmitTime.Equal(v.SubmitTime) && w.DepositEndTime.Equal(v.DepositEndTime) && - w.VotingStartTime.Equal(v.VotingStartTime) && - w.VotingEndTime.Equal(v.VotingEndTime) && + AreNullTimesEqual(w.VotingStartTime, v.VotingStartTime) && + AreNullTimesEqual(w.VotingEndTime, v.VotingEndTime) && w.Proposer == v.Proposer && w.Status == v.Status } @@ -118,10 +114,12 @@ func (w TallyResultRow) Equals(v TallyResultRow) bool { // VoteRow represents a single row inside the vote table type VoteRow struct { - ProposalID int64 `db:"proposal_id"` - Voter string `db:"voter_address"` - Option string `db:"option"` - Height int64 `db:"height"` + ProposalID int64 `db:"proposal_id"` + Voter string `db:"voter_address"` + Option string `db:"option"` + Weight string `db:"weight"` + Timestamp time.Time `db:"timestamp"` + Height int64 `db:"height"` } // NewVoteRow allows to easily create a new VoteRow @@ -129,12 +127,16 @@ func NewVoteRow( proposalID int64, voter string, option string, + weight string, + timestamp time.Time, height int64, ) VoteRow { return VoteRow{ ProposalID: proposalID, Voter: voter, Option: option, + Weight: weight, + Timestamp: timestamp, Height: height, } } @@ -144,15 +146,19 @@ func (w VoteRow) Equals(v VoteRow) bool { return w.ProposalID == v.ProposalID && w.Voter == v.Voter && w.Option == v.Option && + w.Weight == v.Weight && + w.Timestamp.Equal(v.Timestamp) && w.Height == v.Height } // DepositRow represents a single row inside the deposit table type DepositRow struct { - ProposalID int64 `db:"proposal_id"` - Depositor string `db:"depositor_address"` - Amount DbCoins `db:"amount"` - Height int64 `db:"height"` + ProposalID int64 `db:"proposal_id"` + Depositor string `db:"depositor_address"` + Amount DbCoins `db:"amount"` + Timestamp time.Time `db:"timestamp"` + TransactionHash string `db:"transaction_hash"` + Height int64 `db:"height"` } // NewDepositRow allows to easily create a new NewDepositRow @@ -160,13 +166,17 @@ func NewDepositRow( proposalID int64, depositor string, amount DbCoins, + timestamp time.Time, + transactionHash string, height int64, ) DepositRow { return DepositRow{ - ProposalID: proposalID, - Depositor: depositor, - Amount: amount, - Height: height, + ProposalID: proposalID, + Depositor: depositor, + Amount: amount, + Timestamp: timestamp, + TransactionHash: transactionHash, + Height: height, } } @@ -175,6 +185,8 @@ func (w DepositRow) Equals(v DepositRow) bool { return w.ProposalID == v.ProposalID && w.Depositor == v.Depositor && w.Amount.Equal(&v.Amount) && + w.Timestamp.Equal(v.Timestamp) && + w.TransactionHash == v.TransactionHash && w.Height == v.Height } diff --git a/database/types/staking_pool.go b/database/types/staking_pool.go index 0fae3620a..b97b96a0c 100644 --- a/database/types/staking_pool.go +++ b/database/types/staking_pool.go @@ -2,19 +2,23 @@ package types // StakingPoolRow represents a single row inside the staking_pool table type StakingPoolRow struct { - OneRowID bool `db:"one_row_id"` - BondedTokens int64 `db:"bonded_tokens"` - NotBondedTokens int64 `db:"not_bonded_tokens"` - Height int64 `db:"height"` + OneRowID bool `db:"one_row_id"` + BondedTokens int64 `db:"bonded_tokens"` + NotBondedTokens int64 `db:"not_bonded_tokens"` + UnbondingTokens int64 `db:"unbonding_tokens"` + StakedNotBondedTokens int64 `db:"staked_not_bonded_tokens"` + Height int64 `db:"height"` } // NewStakingPoolRow allows to easily create a new StakingPoolRow -func NewStakingPoolRow(bondedTokens, notBondedTokens int64, height int64) StakingPoolRow { +func NewStakingPoolRow(bondedTokens, notBondedTokens, unbondingTokens, stakedNotBondedTokens int64, height int64) StakingPoolRow { return StakingPoolRow{ - OneRowID: true, - BondedTokens: bondedTokens, - NotBondedTokens: notBondedTokens, - Height: height, + OneRowID: true, + BondedTokens: bondedTokens, + NotBondedTokens: notBondedTokens, + UnbondingTokens: unbondingTokens, + StakedNotBondedTokens: stakedNotBondedTokens, + Height: height, } } @@ -22,5 +26,7 @@ func NewStakingPoolRow(bondedTokens, notBondedTokens int64, height int64) Stakin func (r StakingPoolRow) Equal(s StakingPoolRow) bool { return r.BondedTokens == s.BondedTokens && r.NotBondedTokens == s.NotBondedTokens && + r.UnbondingTokens == s.UnbondingTokens && + r.StakedNotBondedTokens == s.StakedNotBondedTokens && r.Height == s.Height } diff --git a/database/types/staking_validators.go b/database/types/staking_validators.go index 4eb5755ef..8db6c9e50 100644 --- a/database/types/staking_validators.go +++ b/database/types/staking_validators.go @@ -239,17 +239,15 @@ func (v ValidatorVotingPowerRow) Equal(w ValidatorVotingPowerRow) bool { type ValidatorStatusRow struct { Status int `db:"status"` Jailed bool `db:"jailed"` - Tombstoned bool `db:"tombstoned"` ConsAddress string `db:"validator_address"` Height int64 `db:"height"` } // NewValidatorStatusRow builds a new ValidatorStatusRow -func NewValidatorStatusRow(status int, jailed bool, tombstoned bool, consAddess string, height int64) ValidatorStatusRow { +func NewValidatorStatusRow(status int, jailed bool, consAddess string, height int64) ValidatorStatusRow { return ValidatorStatusRow{ Status: status, Jailed: jailed, - Tombstoned: tombstoned, ConsAddress: consAddess, Height: height, } @@ -259,7 +257,6 @@ func NewValidatorStatusRow(status int, jailed bool, tombstoned bool, consAddess func (v ValidatorStatusRow) Equal(w ValidatorStatusRow) bool { return v.Status == w.Status && v.Jailed == w.Jailed && - v.Tombstoned == w.Tombstoned && v.ConsAddress == w.ConsAddress && v.Height == w.Height } diff --git a/database/types/upgrade.go b/database/types/upgrade.go new file mode 100644 index 000000000..c3abc7407 --- /dev/null +++ b/database/types/upgrade.go @@ -0,0 +1,21 @@ +package types + +type SoftwareUpgradePlanRow struct { + ProposalID uint64 `db:"proposal_id"` + PlanName string `db:"plan_name"` + UpgradeHeight int64 `db:"upgrade_height"` + Info string `db:"info"` + Height int64 `db:"height"` +} + +func NewSoftwareUpgradePlanRow( + proposalID uint64, planName string, upgradeHeight int64, info string, height int64, +) SoftwareUpgradePlanRow { + return SoftwareUpgradePlanRow{ + ProposalID: proposalID, + PlanName: planName, + UpgradeHeight: upgradeHeight, + Info: info, + Height: height, + } +} diff --git a/database/types/utils.go b/database/types/utils.go index be8d7783d..5be6926f1 100644 --- a/database/types/utils.go +++ b/database/types/utils.go @@ -1,5 +1,10 @@ package types +import ( + "database/sql" + "time" +) + // ModuleRow represents a single row inside the modules table type ModuleRow struct { Module string `db:"module_name"` @@ -39,3 +44,24 @@ func (v ModuleRows) Equal(w *ModuleRows) bool { } return true } + +func TimeToNullTime(t *time.Time) sql.NullTime { + if t == nil { + return sql.NullTime{} + } + return sql.NullTime{ + Time: *t, + Valid: true, + } +} + +func NullTimeToTime(t sql.NullTime) *time.Time { + if !t.Valid { + return nil + } + return &t.Time +} + +func AreNullTimesEqual(first sql.NullTime, second sql.NullTime) bool { + return first.Valid == second.Valid && first.Time.Equal(second.Time) +} diff --git a/database/utils.go b/database/utils.go index 6821c713c..be2da9c76 100644 --- a/database/utils.go +++ b/database/utils.go @@ -12,7 +12,7 @@ func (db *Db) InsertEnableModules(modules []string) error { // Remove existing modules stmt := "DELETE FROM modules WHERE TRUE" - _, err := db.Sql.Exec(stmt) + _, err := db.SQL.Exec(stmt) if err != nil { return fmt.Errorf("error while deleting modules: %s", err) } @@ -29,7 +29,7 @@ func (db *Db) InsertEnableModules(modules []string) error { } stmt = stmt[:len(stmt)-1] // remove tailing "," stmt += " ON CONFLICT DO NOTHING" - _, err = db.Sql.Exec(stmt, values...) + _, err = db.SQL.Exec(stmt, values...) if err != nil { return fmt.Errorf("error while storing modules: %s", err) } diff --git a/database/utils/bank.go b/database/utils/bank.go index 470fedac8..5a0af8bb7 100644 --- a/database/utils/bank.go +++ b/database/utils/bank.go @@ -1,6 +1,6 @@ package utils -import "github.com/forbole/bdjuno/v3/types" +import "github.com/forbole/bdjuno/v4/types" const ( maxPostgreSQLParams = 65535 diff --git a/database/utils_test.go b/database/utils_test.go index 599d0dfa8..99600801c 100644 --- a/database/utils_test.go +++ b/database/utils_test.go @@ -1,7 +1,7 @@ package database_test import ( - "github.com/forbole/bdjuno/v3/database/types" + "github.com/forbole/bdjuno/v4/database/types" ) func (suite *DbTestSuite) TestBigDipperDb_InsertEnableModules() { diff --git a/go.mod b/go.mod index 49a7cc966..753b91788 100644 --- a/go.mod +++ b/go.mod @@ -1,165 +1,333 @@ -module github.com/forbole/bdjuno/v3 +module github.com/forbole/bdjuno/v4 -go 1.18 +go 1.20 + +replace github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.47.2 require ( - github.com/CoreumFoundation/coreum/v2 v2.0.0 - github.com/cosmos/cosmos-sdk v0.45.16 - github.com/forbole/juno/v3 v3.4.1-0.20220912104021-a2cfbab251bc - github.com/go-co-op/gocron v1.13.0 - github.com/gogo/protobuf v1.3.3 + cosmossdk.io/math v1.1.2 + cosmossdk.io/simapp v0.0.0-20230224204036-a6adb0821462 + github.com/CoreumFoundation/coreum/v3 v3.0.0-20231102084816-3f621c7b16c0 + github.com/CosmWasm/wasmd v0.41.0 + github.com/cometbft/cometbft v0.37.2 + github.com/cosmos/cosmos-sdk v0.47.5 + github.com/cosmos/gogoproto v1.4.10 + github.com/forbole/juno/v5 v5.2.0 + github.com/go-co-op/gocron v1.35.0 + github.com/gogo/protobuf v1.3.2 + github.com/golangci/golangci-lint v1.54.2 github.com/jmoiron/sqlx v1.3.5 - github.com/lib/pq v1.10.6 + github.com/lib/pq v1.10.9 github.com/pelletier/go-toml v1.9.5 - github.com/prometheus/client_golang v1.14.0 - github.com/proullon/ramsql v0.0.0-20181213202341-817cee58a244 - github.com/rs/zerolog v1.27.0 - github.com/spf13/cobra v1.6.1 - github.com/stretchr/testify v1.8.1 - github.com/tendermint/tendermint v0.34.27 - google.golang.org/grpc v1.55.0 + github.com/prometheus/client_golang v1.17.0 + github.com/proullon/ramsql v0.1.2 + github.com/rs/zerolog v1.31.0 + github.com/samber/lo v1.38.1 + github.com/spf13/cobra v1.7.0 + github.com/stretchr/testify v1.8.4 + google.golang.org/grpc v1.58.0 gopkg.in/yaml.v3 v3.0.1 ) require ( - cosmossdk.io/api v0.2.6 // indirect - cosmossdk.io/core v0.5.1 // indirect - cosmossdk.io/depinject v1.0.0-alpha.3 // indirect - filippo.io/edwards25519 v1.0.0-rc.1 // indirect + 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect + 4d63.com/gochecknoglobals v0.2.1 // indirect + cloud.google.com/go v0.110.4 // indirect + cloud.google.com/go/compute v1.21.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.1 // indirect + cloud.google.com/go/storage v1.30.1 // indirect + cosmossdk.io/api v0.3.1 // indirect + cosmossdk.io/core v0.6.1 // indirect + cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/errors v1.0.0 // indirect + cosmossdk.io/tools/rosetta v0.2.1 // indirect + filippo.io/edwards25519 v1.0.0 // indirect + github.com/4meepo/tagalign v1.3.2 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/99designs/keyring v1.2.1 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/Abirdcfly/dupword v0.0.12 // indirect + github.com/Antonboom/errname v0.1.12 // indirect + github.com/Antonboom/nilnil v0.1.7 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/CosmWasm/wasmd v0.30.0 // indirect - github.com/CosmWasm/wasmvm v1.1.2 // indirect - github.com/DataDog/zstd v1.5.0 // indirect - github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect - github.com/Workiva/go-datastructures v1.0.53 // indirect + github.com/CosmWasm/wasmvm v1.3.0 // indirect + github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.1.0 // indirect + github.com/alexkohler/nakedret/v2 v2.0.2 // indirect + github.com/alexkohler/prealloc v1.0.0 // indirect + github.com/alingse/asasalint v0.0.11 // indirect github.com/armon/go-metrics v0.4.1 // indirect + github.com/ashanbrown/forbidigo v1.6.0 // indirect + github.com/ashanbrown/makezero v1.1.1 // indirect + github.com/aws/aws-sdk-go v1.44.203 // indirect + github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/bkielbasa/cyclop v1.2.1 // indirect + github.com/blizzy78/varnamelen v0.8.0 // indirect + github.com/bombsimon/wsl/v3 v3.4.0 // indirect + github.com/breml/bidichk v0.2.4 // indirect + github.com/breml/errchkjson v0.3.1 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/butuzov/ireturn v0.2.0 // indirect + github.com/butuzov/mirror v1.1.0 // indirect + github.com/ccojocar/zxcvbn-go v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/cockroachdb/errors v1.9.1 // indirect + github.com/charithe/durationcheck v0.0.10 // indirect + github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/cockroachdb/errors v1.10.0 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677 // indirect - github.com/cockroachdb/redact v1.1.3 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect - github.com/cometbft/cometbft-db v0.7.0 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect + github.com/cometbft/cometbft-db v0.8.0 // indirect github.com/confio/ics23/go v0.9.0 // indirect - github.com/cosmos/btcutil v1.0.4 // indirect - github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gogoproto v1.4.3 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.5 // indirect - github.com/cosmos/ibc-go/v4 v4.3.1 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/iavl v0.20.0 // indirect + github.com/cosmos/ibc-go/v7 v7.2.0 // indirect + github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect - github.com/creachadair/taskgroup v0.3.2 // indirect + github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect + github.com/creachadair/taskgroup v0.4.2 // indirect + github.com/curioswitch/go-reassign v0.2.0 // indirect + github.com/daixiang0/gci v0.11.0 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/denis-tingaikin/go-header v0.4.3 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect - github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/docker/distribution v2.8.2-beta.1+incompatible // indirect - github.com/dustin/go-humanize v1.0.1-0.20200219035652-afde56e7acac // indirect + github.com/docker/distribution v2.8.2+incompatible // indirect + github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect + github.com/esimonov/ifshort v1.0.4 // indirect + github.com/ettle/strcase v0.1.1 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/fatih/structtag v1.2.0 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect + github.com/firefart/nonamedreturns v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/getsentry/sentry-go v0.17.0 // indirect + github.com/fzipp/gocyclo v0.6.0 // indirect + github.com/getsentry/sentry-go v0.23.0 // indirect + github.com/go-critic/go-critic v0.9.0 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-toolsmith/astcast v1.1.0 // indirect + github.com/go-toolsmith/astcopy v1.1.0 // indirect + github.com/go-toolsmith/astequal v1.1.0 // indirect + github.com/go-toolsmith/astfmt v1.1.0 // indirect + github.com/go-toolsmith/astp v1.1.0 // indirect + github.com/go-toolsmith/strparse v1.1.0 // indirect + github.com/go-toolsmith/typep v1.1.0 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect + github.com/gobwas/glob v0.2.3 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect + github.com/gofrs/flock v0.8.1 // indirect + github.com/gogo/googleapis v1.4.1 // indirect github.com/golang/glog v1.1.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect + github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect + github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect + github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect + github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect + github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect + github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect + github.com/golangci/misspell v0.4.1 // indirect + github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect + github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/orderedcode v0.0.1 // indirect + github.com/google/s2a-go v0.1.4 // indirect + github.com/google/uuid v1.3.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.11.0 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 // indirect github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect + github.com/gostaticanalysis/analysisutil v0.7.1 // indirect + github.com/gostaticanalysis/comment v1.4.2 // indirect + github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.1 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/hdevalence/ed25519consensus v0.1.0 // indirect + github.com/hexops/gotextdiff v1.0.3 // indirect + github.com/huandu/skiplist v1.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jgautheron/goconst v1.5.1 // indirect + github.com/jingyugao/rowserrcheck v1.1.1 // indirect + github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.15.11 // indirect + github.com/julz/importas v0.1.0 // indirect + github.com/kisielk/errcheck v1.6.3 // indirect + github.com/kisielk/gotool v1.0.0 // indirect + github.com/kkHAIKE/contextcheck v1.1.4 // indirect + github.com/klauspost/compress v1.16.3 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/kulti/thelper v0.6.3 // indirect + github.com/kunwardeep/paralleltest v1.0.8 // indirect + github.com/kyoh86/exportloopref v0.1.11 // indirect + github.com/ldez/gomoddirectives v0.2.3 // indirect + github.com/ldez/tagliatelle v0.5.0 // indirect + github.com/leonklingele/grouper v1.1.1 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/linxGnu/grocksdb v1.7.10 // indirect - github.com/magiconair/properties v1.8.6 // indirect + github.com/linxGnu/grocksdb v1.7.16 // indirect + github.com/lufeee/execinquery v1.2.1 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/maratori/testableexamples v1.0.0 // indirect + github.com/maratori/testpackage v1.1.1 // indirect + github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mbilski/exhaustivestruct v1.2.0 // indirect + github.com/mgechev/revive v1.3.2 // indirect github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/highwayhash v1.0.2 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moricho/tparallel v0.3.1 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/nxadm/tail v1.4.8 // indirect + github.com/nakabonne/nestif v0.3.1 // indirect + github.com/nishanths/exhaustive v0.11.0 // indirect + github.com/nishanths/predeclared v0.2.2 // indirect + github.com/nunnatsa/ginkgolinter v0.13.5 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/pelletier/go-toml/v2 v2.0.5 // indirect - github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.37.0 // indirect - github.com/prometheus/procfs v0.8.0 // indirect + github.com/polyfloyd/go-errorlint v1.4.4 // indirect + github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/quasilyte/go-ruleguard v0.4.0 // indirect + github.com/quasilyte/gogrep v0.5.0 // indirect + github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect + github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/regen-network/cosmos-proto v0.3.1 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/rs/cors v1.8.2 // indirect - github.com/samber/lo v1.35.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rs/cors v1.8.3 // indirect + github.com/ryancurrah/gomodguard v1.3.0 // indirect + github.com/ryanrolds/sqlclosecheck v0.4.0 // indirect + github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spf13/afero v1.9.2 // indirect - github.com/spf13/cast v1.5.0 // indirect + github.com/sashamelentyev/interfacebloat v1.1.0 // indirect + github.com/sashamelentyev/usestdlibvars v1.24.0 // indirect + github.com/securego/gosec/v2 v2.17.0 // indirect + github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/sivchari/containedctx v1.0.3 // indirect + github.com/sivchari/nosnakecase v1.7.0 // indirect + github.com/sivchari/tenv v1.7.1 // indirect + github.com/sonatard/noctx v0.0.2 // indirect + github.com/sourcegraph/go-diff v0.7.0 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.14.0 // indirect - github.com/subosito/gotenv v1.4.1 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect + github.com/spf13/viper v1.16.0 // indirect + github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect + github.com/stretchr/objx v0.5.0 // indirect + github.com/subosito/gotenv v1.4.2 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect + github.com/tdakkota/asciicheck v0.2.0 // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tendermint/tm-db v0.6.7 // indirect - github.com/tidwall/btree v1.5.0 // indirect + github.com/tetafro/godot v1.4.14 // indirect + github.com/tidwall/btree v1.6.0 // indirect + github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect + github.com/timonwong/loggercheck v0.9.4 // indirect + github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect + github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect + github.com/ultraware/funlen v0.1.0 // indirect + github.com/ultraware/whitespace v0.0.5 // indirect + github.com/uudashr/gocognit v1.0.7 // indirect + github.com/xen0n/gosmopolitan v1.2.1 // indirect + github.com/yagipy/maintidx v1.0.0 // indirect + github.com/yeya24/promlinter v0.2.0 // indirect + github.com/ykadowak/zerologlint v0.1.3 // indirect github.com/zondax/hid v0.9.1 // indirect github.com/zondax/ledger-go v0.14.1 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/exp v0.0.0-20221019170559-20944726eadf // indirect - golang.org/x/net v0.10.0 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect - google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/protobuf v1.30.0 // indirect + gitlab.com/bosi/decorder v0.4.0 // indirect + go.etcd.io/bbolt v1.3.7 // indirect + go.opencensus.io v0.24.0 // indirect + go.tmz.dev/musttag v0.7.2 // indirect + go.uber.org/atomic v1.10.0 // indirect + go.uber.org/multierr v1.8.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 // indirect + golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/oauth2 v0.10.0 // indirect + golang.org/x/sync v0.3.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect + golang.org/x/tools v0.12.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.126.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - nhooyr.io/websocket v1.8.6 // indirect + honnef.co/go/tools v0.4.5 // indirect + mvdan.cc/gofumpt v0.5.0 // indirect + mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect + mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect + mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect + nhooyr.io/websocket v1.8.7 // indirect + pgregory.net/rapid v0.5.5 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) -replace ( - github.com/forbole/juno/v3 => github.com/CoreumFoundation/juno/v3 v3.0.0-20230713125944-2bfed6c54096 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.27 - google.golang.org/grpc => google.golang.org/grpc v1.33.2 -) +// This is to avoid warnings while running the binary +// See here: https://github.com/desmos-labs/desmos/pull/1131#discussion_r1194090419 +replace github.com/cosmos/gogoproto => github.com/cosmos/gogoproto v1.4.8 diff --git a/go.sum b/go.sum index 7dfde43c6..cc9852705 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,16 @@ +4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= +4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= +4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= +4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -18,102 +21,457 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk= +cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.21.0 h1:JNBsyXVoOoNJtTQcnEY5uYpZIbeCTYIeDe0Xh1bySMk= +cloud.google.com/go/compute v1.21.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -cosmossdk.io/api v0.2.6 h1:AoNwaLLapcLsphhMK6+o0kZl+D6MMUaHVqSdwinASGU= -cosmossdk.io/api v0.2.6/go.mod h1:u/d+GAxil0nWpl1XnQL8nkziQDIWuBDhv8VnDm/s6dI= -cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI= -cosmossdk.io/core v0.5.1/go.mod h1:KZtwHCLjcFuo0nmDc24Xy6CRNEL9Vl/MeimQ2aC7NLE= -cosmossdk.io/depinject v1.0.0-alpha.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= -cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE= +cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw= +cosmossdk.io/core v0.6.1 h1:OBy7TI2W+/gyn2z40vVvruK3di+cAluinA6cybFbE7s= +cosmossdk.io/core v0.6.1/go.mod h1:g3MMBCBXtxbDWBURDVnJE7XML4BG5qENhs0gzkcpuFA= +cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= +cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +cosmossdk.io/errors v1.0.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= +cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= +cosmossdk.io/math v1.1.2 h1:ORZetZCTyWkI5GlZ6CZS28fMHi83ZYf+A2vVnHNzZBM= +cosmossdk.io/math v1.1.2/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= +cosmossdk.io/simapp v0.0.0-20230224204036-a6adb0821462 h1:g8muUHnXL8vhld2Sjilyhb1UQObc+x9GVuDK43TYZns= +cosmossdk.io/simapp v0.0.0-20230224204036-a6adb0821462/go.mod h1:4Dd3NLoLYoN90kZ0uyHoTHzVVk9+J0v4HhZRBNTAq2c= +cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= +cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= -git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= +filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/4meepo/tagalign v1.3.2 h1:1idD3yxlRGV18VjqtDbqYvQ5pXqQS0wO2dn6M3XstvI= +github.com/4meepo/tagalign v1.3.2/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= -github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/Abirdcfly/dupword v0.0.12 h1:56NnOyrXzChj07BDFjeRA+IUzSz01jmzEq+G4kEgFhc= +github.com/Abirdcfly/dupword v0.0.12/go.mod h1:+us/TGct/nI9Ndcbcp3rgNcQzctTj68pq7TcgNpLfdI= +github.com/Antonboom/errname v0.1.12 h1:oh9ak2zUtsLp5oaEd/erjB4GPu9w19NyoIskZClDcQY= +github.com/Antonboom/errname v0.1.12/go.mod h1:bK7todrzvlaZoQagP1orKzWXv59X/x0W0Io2XT1Ssro= +github.com/Antonboom/nilnil v0.1.7 h1:ofgL+BA7vlA1K2wNQOsHzLJ2Pw5B5DpWRLdDAVvvTow= +github.com/Antonboom/nilnil v0.1.7/go.mod h1:TP+ScQWVEq0eSIxqU8CbdT5DFWoHp0MbP+KMUO1BKYQ= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/CoreumFoundation/coreum-tools v0.4.1-0.20230627094203-821c6a4eebab h1:XPcSzlQ06tor/py1LkEM9FX70LIeDWB++vLuAO6eAYI= -github.com/CoreumFoundation/coreum/v2 v2.0.0 h1:0CZk5olLsOowc0s5C3ab5LzVrKRg9bjmNN8BsHZVGGw= -github.com/CoreumFoundation/coreum/v2 v2.0.0/go.mod h1:RQEqopi/udeg5GuvzwKQCm4WCuX6JkPqFgrCRYsR5ws= -github.com/CoreumFoundation/juno/v3 v3.0.0-20230713125944-2bfed6c54096 h1:OsSHcGodRrobiaiKoAr90XQ+DG5JdJYeyDBiEBMh2kk= -github.com/CoreumFoundation/juno/v3 v3.0.0-20230713125944-2bfed6c54096/go.mod h1:knE0Thxr8OZriCorKOiQSFu2H0pOoJzH7omm9RO5w5k= -github.com/CosmWasm/wasmd v0.30.0 h1:oUVz3TgO/+24JZQdoTOlOv+IK7N9hEa/s3M4eR9i4FQ= -github.com/CosmWasm/wasmd v0.30.0/go.mod h1:umLGeYyowAMMEdOYfDOf8jsDrQ75Qkm1+ogBXT/w01c= -github.com/CosmWasm/wasmvm v1.1.2 h1:uvMk0iIJcFFUvdElmV9KQeeqRx7ESspxUrPjfCGki3M= -github.com/CosmWasm/wasmvm v1.1.2/go.mod h1:ei0xpvomwSdONsxDuONzV7bL1jSET1M8brEx0FCXc+A= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/CoreumFoundation/coreum-tools v0.4.0 h1:ATmoiaDdcoGx1TqheTekkNEYb3u0fpp1H4+Qnxz3dmg= +github.com/CoreumFoundation/coreum/v3 v3.0.0-20231102084816-3f621c7b16c0 h1:sdGWjXOq6U7VgM/4D/Ni9VdEAfp5+OxJqQFvoLFCrps= +github.com/CoreumFoundation/coreum/v3 v3.0.0-20231102084816-3f621c7b16c0/go.mod h1:JD6ogmhLUI+v9QJfuLT/Qyyrfugo7Cg76Pys/KehbwY= +github.com/CosmWasm/wasmd v0.41.0 h1:fmwxSbwb50zZDcBaayYFRLIaSFca+EFld1WOaQi49jg= +github.com/CosmWasm/wasmd v0.41.0/go.mod h1:0Sds1q2IsPaTN1gHa3BNOYcUFgtGvxH7CXEXPgoihns= +github.com/CosmWasm/wasmvm v1.3.0 h1:x12X4bKlUPS7TT9QQP45+fJo2sp30GEbiSSgb9jsec8= +github.com/CosmWasm/wasmvm v1.3.0/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= -github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0 h1:3ZBs7LAezy8gh0uECsA6CGU43FF3zsx5f4eah5FxTMA= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.1.0/go.mod h1:rZLTje5A9kFBe0pzhpe2TdhRniBF++PRHQuRpR8esVc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0 h1:aQl70G173h/GZYhWf36aE5H0KaujXfVMnn/f1kSDVYY= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0/go.mod h1:PUBgk35fX4i7JDmwzlJwJ+GMe6NfO1723wmJMgPThNQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alecthomas/participle/v2 v2.0.0-alpha7 h1:cK4vjj0VSgb3lN1nuKA5F7dw+1s1pWBe5bx7nNCnN+c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/alexkohler/nakedret/v2 v2.0.2 h1:qnXuZNvv3/AxkAb22q/sEsEpcA99YxLFACDtEw9TPxE= +github.com/alexkohler/nakedret/v2 v2.0.2/go.mod h1:2b8Gkk0GsOrqQv/gPWjNLDSKwG8I5moSXG1K4VIBcTQ= +github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= +github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= +github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -123,271 +481,257 @@ github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJ github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= +github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= +github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= +github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.203 h1:pcsP805b9acL3wUqa4JR2vg1k2wnItkDYNvfmcy6F+U= +github.com/aws/aws-sdk-go v1.44.203/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= -github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= -github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= -github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= -github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= -github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= -github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd v0.22.2 h1:vBZ+lGGd1XubpOWO67ITJpAEsICWhA0YzqkcpkgNBfo= -github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY= +github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM= +github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= +github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= +github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU= +github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= +github.com/breml/bidichk v0.2.4 h1:i3yedFWWQ7YzjdZJHnPo9d/xURinSq3OM+gyM43K4/8= +github.com/breml/bidichk v0.2.4/go.mod h1:7Zk0kRFt1LIZxtQdl9W9JwGAcLTTkOs+tN7wuEYGJ3s= +github.com/breml/errchkjson v0.3.1 h1:hlIeXuspTyt8Y/UmP5qy1JocGNR00KQHgfaNtRAjoxQ= +github.com/breml/errchkjson v0.3.1/go.mod h1:XroxrzKjdiutFyW3nWhw34VGg7kiMsDQox73yWCGI2U= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/butuzov/ireturn v0.2.0 h1:kCHi+YzC150GE98WFuZQu9yrTn6GEydO2AuPLbTgnO4= +github.com/butuzov/ireturn v0.2.0/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= +github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/ccojocar/zxcvbn-go v1.0.1 h1:+sxrANSCj6CdadkcMnvde/GWU1vZiiXRbqYSCalV4/4= +github.com/ccojocar/zxcvbn-go v1.0.1/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= +github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= +github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 h1:W9o46d2kbNL06lq7UNDPV0zYLzkrde/bjIqO02eoll0= +github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8/go.mod h1:gakxgyXaaPkxvLw1XQxNGK4I37ys9iBRzNUx/B7pUCo= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= -github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= -github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= -github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= -github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= +github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677 h1:qbb/AE938DFhOajUYh9+OXELpSF9KZw2ZivtmW6eX1Q= -github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677/go.mod h1:890yq1fUb9b6dGNwssgeUO5vQV9qfXnCPxAJhBQfXw0= -github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= -github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= -github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= -github.com/cometbft/cometbft v0.34.27 h1:ri6BvmwjWR0gurYjywcBqRe4bbwc3QVs9KRcCzgh/J0= -github.com/cometbft/cometbft v0.34.27/go.mod h1:BcCbhKv7ieM0KEddnYXvQZR+pZykTKReJJYf7YC7qhw= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= +github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= +github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= +github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= +github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= -github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= -github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= -github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= -github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= -github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32 h1:zlCp9n3uwQieELltZWHRmwPmPaZ8+XoL2Sj+A2YJlr8= -github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32/go.mod h1:kwMlEC4wWvB48zAShGKVqboJL6w4zCLesaNQ3YLU2BQ= -github.com/cosmos/cosmos-proto v1.0.0-beta.1 h1:iDL5qh++NoXxG8hSy93FdYJut4XfgbShIocllGaXx/0= -github.com/cosmos/cosmos-proto v1.0.0-beta.1/go.mod h1:8k2GNZghi5sDRFw/scPL8gMSowT1vDA+5ouxL8GjaUE= -github.com/cosmos/cosmos-sdk v0.45.16 h1:5ba/Bh5/LE55IwHQuCU4fiG4eXeDKtSWzehXRpaKDcw= -github.com/cosmos/cosmos-sdk v0.45.16/go.mod h1:bScuNwWAP0TZJpUf+SHXRU3xGoUPp+X9nAzfeIXts40= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= +github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= +github.com/cosmos/cosmos-sdk v0.47.2 h1:9rSriCoiJD+4F+tEDobyM8V7HF5BtY5Ef4VYNig96s0= +github.com/cosmos/cosmos-sdk v0.47.2/go.mod h1:zYzgI8w8hhotXTSoGbbSOAKfpJTx4wOy4XgbaKhtRtc= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gogoproto v1.4.3 h1:RP3yyVREh9snv/lsOvmsAPQt8f44LgL281X0IOIhhcI= -github.com/cosmos/gogoproto v1.4.3/go.mod h1:0hLIG5TR7IvV1fme1HCFKjfzW9X2x0Mo+RooWXCnOWU= -github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= -github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.5 h1:rGA3hOrgNxgRM5wYcSCxgQBap7fW82WZgY78V9po/iY= -github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-go/v4 v4.3.1 h1:xbg0CaCdxK3lvgGvSaI91ROOLd7s30UqEcexH6Ba4Ys= -github.com/cosmos/ibc-go/v4 v4.3.1/go.mod h1:89E+K9CxpkS/etLEcG026jPM/RSnVMcfesvRYp/0aKI= -github.com/cosmos/interchain-accounts v0.2.4 h1:7UrroFQsCRSp17980mk6anx4YteveIJVkU+a0wlsHQI= +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.8 h1:BrHKc6WFZt8+jRV71vKSQE+JrfF+JAnzrKo2VP7wIZ4= +github.com/cosmos/gogoproto v1.4.8/go.mod h1:hnb0DIEWTv+wdNzNcqus5xCQXq5+CXauq1FJuurRfVY= +github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= +github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= +github.com/cosmos/ibc-go/v7 v7.2.0 h1:dx0DLUl7rxdyZ8NiT6UsrbzKOJx/w7s+BOaewFRH6cg= +github.com/cosmos/ibc-go/v7 v7.2.0/go.mod h1:OOcjKIRku/j1Xs1RgKK0yvKRrJ5iFuZYMetR1n3yMlc= +github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= +github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= +github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= +github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= -github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= +github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= -github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= +github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= +github.com/daixiang0/gci v0.11.0 h1:XeQbFKkCRxvVyn06EOuNY6LPGBLVuB/W130c8FrnX6A= +github.com/daixiang0/gci v0.11.0/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU= +github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= -github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/distribution v2.8.2-beta.1+incompatible h1:gILO60VLD2v28ozemv4aAwDb8ds5U2O/vD/sBXbd7Rw= -github.com/docker/distribution v2.8.2-beta.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.1-0.20200219035652-afde56e7acac h1:opbrjaN/L8gg6Xh5D04Tem+8xVcz6ajZlGCs49mQgyg= -github.com/dustin/go-humanize v1.0.1-0.20200219035652-afde56e7acac/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= +github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= +github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= +github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= +github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/forbole/juno/v5 v5.2.0 h1:NEaUReU723OfArHpcDjTofsgxAiAMtwsa6ZPvQYUiVc= +github.com/forbole/juno/v5 v5.2.0/go.mod h1:wl9jxyKnDx6rElBkc6Zn8i9DInBpMwMeoX6Kxkp71KM= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= -github.com/getsentry/sentry-go v0.17.0 h1:UustVWnOoDFHBS7IJUB2QK/nB5pap748ZEp0swnQJak= -github.com/getsentry/sentry-go v0.17.0/go.mod h1:B82dxtBvxG0KaPD8/hfSV+VcHD+Lg/xUS4JuQn1P4cM= -github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= +github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= +github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= +github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-co-op/gocron v1.13.0 h1:BjkuNImPy5NuIPEifhWItFG7pYyr27cyjS6BN9w/D4c= -github.com/go-co-op/gocron v1.13.0/go.mod h1:GD5EIEly1YNW+LovFVx5dzbYVcIc8544K99D8UVRpGo= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-co-op/gocron v1.35.0 h1:niC91OHiSEimXgPPay02AI1gLGL4JGBgDzmWtgZ8n5A= +github.com/go-co-op/gocron v1.35.0/go.mod h1:NLi+bkm4rRSy1F8U7iacZOz0xPseMoIOnvabGoSe/no= +github.com/go-critic/go-critic v0.9.0 h1:Pmys9qvU3pSML/3GEQ2Xd9RZ/ip+aXHKILuxczKGV/U= +github.com/go-critic/go-critic v0.9.0/go.mod h1:5P8tdXL7m/6qnyG6oRAlYLORvoXH0WDypYgAEmagT40= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gorp/gorp v2.0.0+incompatible h1:dIQPsBtl6/H1MjVseWuWPXa7ET4p6Dve4j3Hg+UjqYw= -github.com/go-gorp/gorp v2.0.0+incompatible/go.mod h1:7IfkAQnO7jfT/9IQ3R9wL1dFhukN6aQxzKTHnkxzA/E= +github.com/go-gorp/gorp v2.2.0+incompatible h1:xAUh4QgEeqPPhK3vxZN+bzrim1z5Av6q837gtjUlshc= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= @@ -395,12 +739,33 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= +github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= +github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= +github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= +github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw= +github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= +github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= +github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= +github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= +github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= +github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= +github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= +github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= +github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= +github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= @@ -411,31 +776,38 @@ github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v4.3.0+incompatible h1:CaSVZxm5B+7o45rtab4jC2G37WGYX1zQfuU2i6DSvnc= -github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= -github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -452,6 +824,7 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= @@ -459,13 +832,30 @@ github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8l github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= +github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= +github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= +github.com/golangci/golangci-lint v1.54.2 h1:oR9zxfWYxt7hFqk6+fw6Enr+E7F0SN2nqHhJYyIb0yo= +github.com/golangci/golangci-lint v1.54.2/go.mod h1:vnsaCTPKCI2wreL9tv7RkHDwUrz3htLjed6+6UsvcwU= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.4.1 h1:+y73iSicVy2PqyX7kmUefHusENlrP9YwuHZHPLGQj/g= +github.com/golangci/misspell v0.4.1/go.mod h1:9mAN1quEo3DlpbaIKKyEvRxK1pwqR9s/Sea1bJCtlNI= +github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ= +github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -474,18 +864,24 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -498,16 +894,43 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 h1:mrEEilTAUmaAORhssPPkxj84TsHrPMLBGW2Z4SoTxm8= +github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= @@ -516,21 +939,30 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= +github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= +github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= +github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= +github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= +github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= +github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= @@ -541,22 +973,33 @@ github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIv github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= +github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -569,49 +1012,41 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= -github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= +github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= +github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= -github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= -github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= -github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= -github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c h1:XImQJfpJLmGEEd8ll5yPVyL/aEvmgGHW4WYTyNseLOM= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= +github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM= +github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= +github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= +github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= @@ -619,7 +1054,6 @@ github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -630,42 +1064,26 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= +github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/errcheck v1.6.3 h1:dEKh+GLHcWm2oN34nMvDzn1sqI0i0WxPvrgiJA5JuM8= +github.com/kisielk/errcheck v1.6.3/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8= +github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= -github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -679,64 +1097,69 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= +github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kunwardeep/paralleltest v1.0.8 h1:Ul2KsqtzFxTlSU7IP0JusWlLiNqQaloB9vguyjbE558= +github.com/kunwardeep/paralleltest v1.0.8/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= +github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= +github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= +github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= +github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= +github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= +github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.7.10 h1:dz7RY7GnFUA+GJO6jodyxgkUeGMEkPp3ikt9hAcNGEw= -github.com/linxGnu/grocksdb v1.7.10/go.mod h1:0hTf+iA+GOr0jDX4CgIYyJZxqOH9XlBh6KVj8+zmF34= -github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= +github.com/linxGnu/grocksdb v1.7.16 h1:Q2co1xrpdkr5Hx3Fp+f+f7fRGhQFQhvi/+226dtLmA8= +github.com/linxGnu/grocksdb v1.7.16/go.mod h1:JkS7pl5qWpGpuVb3bPqTz8nC12X3YtPZT+Xq7+QfQo4= +github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= +github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= +github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= +github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= +github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= +github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.9 h1:10HX2Td0ocZpYEjhilsuo6WWtUqttj2Kb0KtD86/KYA= -github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= +github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= -github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= +github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= +github.com/mgechev/revive v1.3.2 h1:Wb8NQKBaALBJ3xrrj4zpwJwqwNA6nDpyJSEQWcCka6U= +github.com/mgechev/revive v1.3.2/go.mod h1:UCLtc7o5vg5aXCwdUTU1kEBQ1v+YXPAkYDIDXbrs5I0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= @@ -745,17 +1168,17 @@ github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -763,96 +1186,101 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= +github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= +github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nishanths/exhaustive v0.11.0 h1:T3I8nUGhl/Cwu5Z2hfc92l0e04D2GEW6e0l8pzda2l0= +github.com/nishanths/exhaustive v0.11.0/go.mod h1:RqwDsZ1xY0dNdqHho2z6X+bgzizwbLYOWnZbbl2wLB4= +github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= +github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= +github.com/nunnatsa/ginkgolinter v0.13.5 h1:fOsPB4CEZOPkyMqF4B9hoqOpooFWU7vWSVkCSscVpgU= +github.com/nunnatsa/ginkgolinter v0.13.5/go.mod h1:OBHy4536xtuX3102NM63XRtOyxqZOO02chsaeDWXVO8= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= -github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= +github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= -github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.4.4 h1:A9gytp+p6TYqeALTYRoxJESYP8wJRETRX2xzGWFsEBU= +github.com/polyfloyd/go-errorlint v1.4.4/go.mod h1:ry5NqF7l9Q77V+XqAfUg1zfryrEtyac3G5+WVpIK0xU= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -862,28 +1290,26 @@ github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3O github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= +github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -892,23 +1318,23 @@ 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.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/proullon/ramsql v0.0.0-20181213202341-817cee58a244 h1:fdX2U+a2Rmc4BjRYcOKzjYXtYTE4ga1B2lb8i7BlefU= -github.com/proullon/ramsql v0.0.0-20181213202341-817cee58a244/go.mod h1:jG8oAQG0ZPHPyxg5QlMERS31airDC+ZuqiAe8DUvFVo= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/proullon/ramsql v0.1.2 h1:PTtsy2iml/CW3Lsopyr86dlIs7JyYEmfLrfYvQVXD2U= +github.com/proullon/ramsql v0.1.2/go.mod h1:CFGqeQHQpdRfWqYmWD3yXqPTEaHkF4zgXy1C6qDWc9E= +github.com/quasilyte/go-ruleguard v0.4.0 h1:DyM6r+TKL+xbKB4Nm7Afd1IQh9kEUKQs2pboWGKtvQo= +github.com/quasilyte/go-ruleguard v0.4.0/go.mod h1:Eu76Z/R8IXtViWUIHkE3p8gdH3/PKk1eh3YGfaEof10= +github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= +github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= +github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= -github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= -github.com/regen-network/gocuke v0.6.2 h1:pHviZ0kKAq2U2hN2q3smKNxct6hS0mGByFMHGnWA97M= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -916,56 +1342,78 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= -github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= -github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= +github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= +github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= +github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI= +github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samber/lo v1.35.0 h1:GlT8CV1GE+v97Y7MLF1wXvX6mjoxZ+hi61tj/ZcQwY0= -github.com/samber/lo v1.35.0/go.mod h1:HLeWcJRRyLKp3+/XBJvOrerCQn9mhdKMHyd7IRlgeQ8= +github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= +github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= +github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= +github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= +github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= +github.com/sashamelentyev/usestdlibvars v1.24.0 h1:MKNzmXtGh5N0y74Z/CIaJh4GlB364l0K1RUT08WSWAc= +github.com/sashamelentyev/usestdlibvars v1.24.0/go.mod h1:9cYkq+gYJ+a5W2RPdhfaSCnTVUC1OQP/bSiiBhq3OZE= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/securego/gosec/v2 v2.17.0 h1:ZpAStTDKY39insEG9OH6kV3IkhQZPTq9a9eGOLOjcdI= +github.com/securego/gosec/v2 v2.17.0/go.mod h1:lt+mgC91VSmriVoJLentrMkRCYs+HLTBnUFUBuhV2hc= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= +github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= +github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= +github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= +github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= +github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= +github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= +github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -974,9 +1422,12 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= -github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= +github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= +github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= +github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -985,7 +1436,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -993,77 +1443,84 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= +github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= +github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= +github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= -github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= -github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= -github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= -github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= -github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= -github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= +github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/tetafro/godot v1.4.14 h1:ScO641OHpf9UpHPk8fCknSuXNMpi4iFlwuWoBs3L+1s= +github.com/tetafro/godot v1.4.14/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= +github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= +github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= +github.com/tomarrell/wrapcheck/v2 v2.8.1 h1:HxSqDSN0sAt0yJYsrcYVoEeyM4aI9yAm3KQpIXDJRhQ= +github.com/tomarrell/wrapcheck/v2 v2.8.1/go.mod h1:/n2Q3NZ4XFT50ho6Hbxg+RV1uyo2Uow/Vdm9NQcl5SE= +github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= +github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI= +github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4= +github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI= +github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/uudashr/gocognit v1.0.7 h1:e9aFXgKgUJrQ5+bs61zBigmj7bFJ/5cC6HmMahVzuDo= +github.com/uudashr/gocognit v1.0.7/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= +github.com/xen0n/gosmopolitan v1.2.1 h1:3pttnTuFumELBRSh+KQs1zcz4fN6Zy7aB0xlnQSn1Iw= +github.com/xen0n/gosmopolitan v1.2.1/go.mod h1:JsHq/Brs1o050OOdmzHeOr0N7OtlnKRAGAsElF8xBQA= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= +github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= +github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= +github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= +github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +github.com/ykadowak/zerologlint v0.1.3 h1:TLy1dTW3Nuc+YE3bYRPToG1Q9Ej78b5UUN6bjbGdxPE= +github.com/ykadowak/zerologlint v0.1.3/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zondax/hid v0.9.1 h1:gQe66rtmyZ8VeGFcOpbuH3r7erYtNEAezCAYu8LdkJo= github.com/zondax/hid v0.9.1/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c= github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= +gitlab.com/bosi/decorder v0.4.0 h1:HWuxAhSxIvsITcXeP+iIRg9d1cVfvVkmlF7M68GaoDY= +gitlab.com/bosi/decorder v0.4.0/go.mod h1:xarnteyUoJiOTEldDysquWKTVDCKo2TOIOIibSuWqOg= +go-simpler.org/assert v0.6.0 h1:QxSrXa4oRuo/1eHMXSBFHKvJIpWABayzKldqZyugG7E= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1073,45 +1530,51 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.tmz.dev/musttag v0.7.2 h1:1J6S9ipDbalBSODNT5jCep8dhZyMr4ttnjQagmGYR5s= +go.tmz.dev/musttag v0.7.2/go.mod h1:m6q5NiiSKMnQYokefa2xGoyoXnrswCbJ0AWYzf4Zs28= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= @@ -1122,12 +1585,16 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20221019170559-20944726eadf h1:nFVjjKDgNY37+ZSYCJmtYf7tOlfQswHqplG2eosjOMg= -golang.org/x/exp v0.0.0-20221019170559-20944726eadf/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/exp v0.0.0-20230131160201-f062dba9d201/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 h1:MGwJjxBy0HJshjDNfLsYO8xppfqWlA5ZT9OhtUUhTNw= +golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 h1:jWGQJV4niP+CCmFW9ekjA9Zx8vYORzOUH2/Nl5WPuLQ= +golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -1150,9 +1617,17 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1162,7 +1637,6 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1172,7 +1646,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1188,26 +1661,43 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1217,8 +1707,26 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1230,9 +1738,14 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1242,7 +1755,6 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1252,7 +1764,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1263,7 +1774,6 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1277,52 +1787,82 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210909193231-528a39cd75f3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1332,23 +1872,30 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1357,10 +1904,12 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1369,7 +1918,6 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1380,39 +1928,56 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1433,14 +1998,49 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.126.0 h1:q4GJq+cAdMAC7XP7njvQ4tvohGLiSlytuL4BQxbIZ+o= +google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1448,7 +2048,6 @@ google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1456,7 +2055,6 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= @@ -1465,7 +2063,6 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1484,16 +2081,136 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e h1:Ao9GzfUMPH3zjVfzXG5rlWlk+Q8MXWKwWpwVQE1MXfw= -google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 h1:Z0hjGZePRE0ZBWotvtrwxFNrNE9CUAGtplaDK5NNI/g= +google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= +google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e h1:z3vDksarJxsAKM5dmEGv0GHwE2hKJ096wZra71Vs4sw= +google.golang.org/genproto/googleapis/api v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e h1:S83+ibolgyZ0bqz7KEsUOPErxcv4VzlszxY+31OfB/E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= +google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1506,32 +2223,29 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1543,14 +2257,15 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0= +gorm.io/gorm v1.25.2 h1:gs1o6Vsa+oVKG/a9ElL3XgyGfghFfkKA2SInQaCyMho= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= +gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1558,14 +2273,25 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +honnef.co/go/tools v0.4.5 h1:YGD4H+SuIOOqsyoLOpZDWcieM28W47/zRO7f+9V3nvo= +honnef.co/go/tools v0.4.5/go.mod h1:GUV+uIBCLpdf0/v6UhHHG/yzI/z6qPskBeQCjcNB96k= +mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E= +mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w= +mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v0.5.3 h1:163N50IHFqr1phZens4FQOdPgfJscR7a562mjQqeo4M= +nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= +pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/hasura/metadata/databases/bdjuno/tables/public_account.yaml b/hasura/metadata/databases/bdjuno/tables/public_account.yaml index f3954d25c..a4ccc1e35 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_account.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_account.yaml @@ -49,8 +49,9 @@ array_relationships: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - address filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_from_genesis.yaml b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_from_genesis.yaml index ba555d57b..8624aa1fe 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_from_genesis.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_from_genesis.yaml @@ -3,9 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - average_time - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_day.yaml b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_day.yaml index 26fe01b50..c3c9ccbcf 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_day.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_day.yaml @@ -3,9 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - average_time - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_hour.yaml b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_hour.yaml index 75a957db9..640c64115 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_hour.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_hour.yaml @@ -3,9 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - average_time - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_minute.yaml b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_minute.yaml index 465f6454a..cdb7dae58 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_minute.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_average_block_time_per_minute.yaml @@ -3,9 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - average_time - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_block.yaml b/hasura/metadata/databases/bdjuno/tables/public_block.yaml index 5c3f15fc2..cfcf1258a 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_block.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_block.yaml @@ -51,7 +51,7 @@ array_relationships: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - num_txs - height @@ -60,4 +60,5 @@ select_permissions: - proposer_address - timestamp filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_community_pool.yaml b/hasura/metadata/databases/bdjuno/tables/public_community_pool.yaml index 21006960d..ca90c6278 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_community_pool.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_community_pool.yaml @@ -3,9 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - coins - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_distribution_params.yaml b/hasura/metadata/databases/bdjuno/tables/public_distribution_params.yaml index ca0ecf723..fda0c9ca6 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_distribution_params.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_distribution_params.yaml @@ -3,10 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - one_row_id - params - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_double_sign_evidence.yaml b/hasura/metadata/databases/bdjuno/tables/public_double_sign_evidence.yaml index 009da39c3..5bf4acf75 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_double_sign_evidence.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_double_sign_evidence.yaml @@ -10,18 +10,11 @@ object_relationships: foreign_key_constraint_on: vote_b_id select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - height - vote_a_id - vote_b_id filter: {} + limit: 100 role: anonymous -- permission: - allow_aggregations: true - columns: - - height - - vote_a_id - - vote_b_id - filter: {} - role: client diff --git a/hasura/metadata/databases/bdjuno/tables/public_double_sign_vote.yaml b/hasura/metadata/databases/bdjuno/tables/public_double_sign_vote.yaml index 03f6217a7..658055f11 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_double_sign_vote.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_double_sign_vote.yaml @@ -22,9 +22,8 @@ array_relationships: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - id - type - height - round @@ -33,17 +32,5 @@ select_permissions: - validator_index - signature filter: {} + limit: 100 role: anonymous -- permission: - allow_aggregations: true - columns: - - id - - type - - height - - round - - block_id - - validator_address - - validator_index - - signature - filter: {} - role: client diff --git a/hasura/metadata/databases/bdjuno/tables/public_fee_grant_allowance.yaml b/hasura/metadata/databases/bdjuno/tables/public_fee_grant_allowance.yaml index dc3ef472c..8b5359bc8 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_fee_grant_allowance.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_fee_grant_allowance.yaml @@ -10,12 +10,12 @@ object_relationships: foreign_key_constraint_on: granter_address select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - id - grantee_address - granter_address - allowance - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_genesis.yaml b/hasura/metadata/databases/bdjuno/tables/public_genesis.yaml index c51e829af..73b0c7014 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_genesis.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_genesis.yaml @@ -3,18 +3,11 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - chain_id - initial_height - time filter: {} - role: anonymous -- permission: - allow_aggregations: true - columns: - - chain_id - - one_row_id - - time - filter: {} - role: client + limit: 1 + role: anonymous \ No newline at end of file diff --git a/hasura/metadata/databases/bdjuno/tables/public_gov_params.yaml b/hasura/metadata/databases/bdjuno/tables/public_gov_params.yaml index 358c3e92d..00078ded3 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_gov_params.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_gov_params.yaml @@ -3,12 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - one_row_id - - deposit_params - - voting_params - - tally_params + - params - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_inflation.yaml b/hasura/metadata/databases/bdjuno/tables/public_inflation.yaml index 2a348c863..b83e4f86d 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_inflation.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_inflation.yaml @@ -3,15 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - value - height filter: {} + limit: 1 role: anonymous -- permission: - allow_aggregations: true - columns: - - height - filter: {} - role: client diff --git a/hasura/metadata/databases/bdjuno/tables/public_message.yaml b/hasura/metadata/databases/bdjuno/tables/public_message.yaml index aa572e712..fe6a4c31a 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_message.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_message.yaml @@ -13,14 +13,14 @@ object_relationships: transaction_hash: hash select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - transaction_hash - index - type - value - involved_accounts_addresses - - partition_id - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_mint_params.yaml b/hasura/metadata/databases/bdjuno/tables/public_mint_params.yaml index 948bcdc19..ee302f719 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_mint_params.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_mint_params.yaml @@ -3,10 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - one_row_id - params - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_modules.yaml b/hasura/metadata/databases/bdjuno/tables/public_modules.yaml index 6ebde2ec2..1f5ec1e24 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_modules.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_modules.yaml @@ -3,8 +3,9 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - module_name filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_pre_commit.yaml b/hasura/metadata/databases/bdjuno/tables/public_pre_commit.yaml index e97a6db73..886d56e38 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_pre_commit.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_pre_commit.yaml @@ -15,14 +15,5 @@ select_permissions: - voting_power - proposer_priority filter: {} - role: anonymous -- permission: - allow_aggregations: true - columns: - - validator_address - - height - - timestamp - - voting_power - - proposer_priority - filter: {} - role: client + limit: 100 + role: anonymous \ No newline at end of file diff --git a/hasura/metadata/databases/bdjuno/tables/public_proposal.yaml b/hasura/metadata/databases/bdjuno/tables/public_proposal.yaml index aeaa47b29..d7e13dbad 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_proposal.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_proposal.yaml @@ -58,8 +58,6 @@ select_permissions: columns: - title - description - - proposal_route - - proposal_type - id - submit_time - deposit_end_time @@ -67,6 +65,8 @@ select_permissions: - voting_end_time - proposer_address - status + - metadata - content filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_proposal_deposit.yaml b/hasura/metadata/databases/bdjuno/tables/public_proposal_deposit.yaml index 7c480ff89..01e208c16 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_proposal_deposit.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_proposal_deposit.yaml @@ -19,11 +19,13 @@ object_relationships: foreign_key_constraint_on: proposal_id select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - proposal_id - depositor_address - amount + - timestamp - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_proposal_staking_pool_snapshot.yaml b/hasura/metadata/databases/bdjuno/tables/public_proposal_staking_pool_snapshot.yaml index 3f03cced1..6c9fe014f 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_proposal_staking_pool_snapshot.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_proposal_staking_pool_snapshot.yaml @@ -7,11 +7,12 @@ object_relationships: foreign_key_constraint_on: proposal_id select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - proposal_id - bonded_tokens - not_bonded_tokens - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_proposal_tally_result.yaml b/hasura/metadata/databases/bdjuno/tables/public_proposal_tally_result.yaml index e2e21c5f0..451d91e07 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_proposal_tally_result.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_proposal_tally_result.yaml @@ -7,7 +7,7 @@ object_relationships: foreign_key_constraint_on: proposal_id select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - proposal_id - yes @@ -16,4 +16,5 @@ select_permissions: - no_with_veto - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_proposal_validator_status_snapshot.yaml b/hasura/metadata/databases/bdjuno/tables/public_proposal_validator_status_snapshot.yaml index 769e27f3f..6869f9a36 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_proposal_validator_status_snapshot.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_proposal_validator_status_snapshot.yaml @@ -10,9 +10,8 @@ object_relationships: foreign_key_constraint_on: validator_address select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - id - proposal_id - validator_address - voting_power @@ -20,4 +19,5 @@ select_permissions: - jailed - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_proposal_vote.yaml b/hasura/metadata/databases/bdjuno/tables/public_proposal_vote.yaml index 30b70e033..7b889106d 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_proposal_vote.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_proposal_vote.yaml @@ -7,17 +7,26 @@ object_relationships: foreign_key_constraint_on: voter_address - name: block using: - foreign_key_constraint_on: height + manual_configuration: + column_mapping: + height: height + insertion_order: null + remote_table: + name: block + schema: public - name: proposal using: foreign_key_constraint_on: proposal_id select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - proposal_id - voter_address - option + - weight + - timestamp - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_slashing_params.yaml b/hasura/metadata/databases/bdjuno/tables/public_slashing_params.yaml index 4969d9e28..912e8fc66 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_slashing_params.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_slashing_params.yaml @@ -3,10 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - one_row_id - params - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_software_upgrade_plan.yaml b/hasura/metadata/databases/bdjuno/tables/public_software_upgrade_plan.yaml new file mode 100644 index 000000000..d7ab38f50 --- /dev/null +++ b/hasura/metadata/databases/bdjuno/tables/public_software_upgrade_plan.yaml @@ -0,0 +1,18 @@ +table: + name: software_upgrade_plan + schema: public +object_relationships: +- name: proposal + using: + foreign_key_constraint_on: proposal_id +select_permissions: +- permission: + allow_aggregations: true + columns: + - proposal_id + - plan_name + - upgrade_height + - info + - height + filter: {} + role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_staking_params.yaml b/hasura/metadata/databases/bdjuno/tables/public_staking_params.yaml index be4455520..2cb4e10c7 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_staking_params.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_staking_params.yaml @@ -3,10 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - one_row_id - params - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_staking_pool.yaml b/hasura/metadata/databases/bdjuno/tables/public_staking_pool.yaml index b2dfa5e66..2c4ef61e5 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_staking_pool.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_staking_pool.yaml @@ -3,10 +3,13 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - height - bonded_tokens - not_bonded_tokens + - unbonding_tokens + - staked_not_bonded_tokens filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_supply.yaml b/hasura/metadata/databases/bdjuno/tables/public_supply.yaml index 7e748d713..8f278c980 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_supply.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_supply.yaml @@ -3,9 +3,10 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - coins - height filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_token.yaml b/hasura/metadata/databases/bdjuno/tables/public_token.yaml index efb055e4f..e1b4a746a 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_token.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_token.yaml @@ -11,8 +11,9 @@ array_relationships: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - name filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_token_price.yaml b/hasura/metadata/databases/bdjuno/tables/public_token_price.yaml index e28c7abbe..7c2a1fa0b 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_token_price.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_token_price.yaml @@ -7,12 +7,12 @@ object_relationships: foreign_key_constraint_on: unit_name select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - id - unit_name - price - market_cap - timestamp filter: {} + limit: 1 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_token_price_history.yaml b/hasura/metadata/databases/bdjuno/tables/public_token_price_history.yaml index 45a771365..809f0a170 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_token_price_history.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_token_price_history.yaml @@ -7,11 +7,12 @@ object_relationships: foreign_key_constraint_on: unit_name select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - market_cap - price - timestamp - unit_name filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_token_unit.yaml b/hasura/metadata/databases/bdjuno/tables/public_token_unit.yaml index 6b11f8186..cd30c03f4 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_token_unit.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_token_unit.yaml @@ -31,7 +31,7 @@ array_relationships: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - aliases - denom @@ -39,4 +39,5 @@ select_permissions: - price_id - token_name filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_transaction.yaml b/hasura/metadata/databases/bdjuno/tables/public_transaction.yaml index 8cd83c738..df1e20fe1 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_transaction.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_transaction.yaml @@ -7,7 +7,7 @@ object_relationships: foreign_key_constraint_on: height select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - hash - height @@ -21,6 +21,6 @@ select_permissions: - gas_used - raw_log - logs - - partition_id filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_validator.yaml b/hasura/metadata/databases/bdjuno/tables/public_validator.yaml index a2fbf8116..b4eac1c63 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_validator.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_validator.yaml @@ -95,9 +95,10 @@ array_relationships: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - consensus_address - consensus_pubkey filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_validator_commission.yaml b/hasura/metadata/databases/bdjuno/tables/public_validator_commission.yaml index bbe8d3a6c..17a916133 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_validator_commission.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_validator_commission.yaml @@ -7,11 +7,12 @@ object_relationships: foreign_key_constraint_on: validator_address select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - validator_address - commission - min_self_delegation - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_validator_description.yaml b/hasura/metadata/databases/bdjuno/tables/public_validator_description.yaml index 3edb4f67c..ca95d9400 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_validator_description.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_validator_description.yaml @@ -7,7 +7,7 @@ object_relationships: foreign_key_constraint_on: validator_address select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - validator_address - moniker @@ -18,4 +18,5 @@ select_permissions: - height - avatar_url filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_validator_info.yaml b/hasura/metadata/databases/bdjuno/tables/public_validator_info.yaml index fb8d8b4e2..0979040eb 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_validator_info.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_validator_info.yaml @@ -10,7 +10,7 @@ object_relationships: foreign_key_constraint_on: consensus_address select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - consensus_address - operator_address @@ -18,4 +18,5 @@ select_permissions: - max_change_rate - max_rate filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_validator_signing_info.yaml b/hasura/metadata/databases/bdjuno/tables/public_validator_signing_info.yaml index dba8155f3..8040e8a26 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_validator_signing_info.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_validator_signing_info.yaml @@ -3,7 +3,7 @@ table: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - validator_address - start_height @@ -13,4 +13,5 @@ select_permissions: - missed_blocks_counter - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_validator_status.yaml b/hasura/metadata/databases/bdjuno/tables/public_validator_status.yaml index 1e983d9a7..32f212d54 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_validator_status.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_validator_status.yaml @@ -12,7 +12,7 @@ select_permissions: - validator_address - status - jailed - - tombstoned - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_validator_voting_power.yaml b/hasura/metadata/databases/bdjuno/tables/public_validator_voting_power.yaml index 6710ad5c4..fc5f76302 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_validator_voting_power.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_validator_voting_power.yaml @@ -16,4 +16,5 @@ select_permissions: - voting_power - height filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_vesting_account.yaml b/hasura/metadata/databases/bdjuno/tables/public_vesting_account.yaml index 1b095315f..aba91ce74 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_vesting_account.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_vesting_account.yaml @@ -15,13 +15,13 @@ array_relationships: schema: public select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - id - type - address - original_vesting - end_time - start_time filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/public_vesting_period.yaml b/hasura/metadata/databases/bdjuno/tables/public_vesting_period.yaml index dc4de32cf..f56da44ac 100644 --- a/hasura/metadata/databases/bdjuno/tables/public_vesting_period.yaml +++ b/hasura/metadata/databases/bdjuno/tables/public_vesting_period.yaml @@ -7,11 +7,11 @@ object_relationships: foreign_key_constraint_on: vesting_account_id select_permissions: - permission: - allow_aggregations: true + allow_aggregations: false columns: - - vesting_account_id - period_order - length - amount filter: {} + limit: 100 role: anonymous diff --git a/hasura/metadata/databases/bdjuno/tables/tables.yaml b/hasura/metadata/databases/bdjuno/tables/tables.yaml index b26f5a7d9..8b6ec5005 100644 --- a/hasura/metadata/databases/bdjuno/tables/tables.yaml +++ b/hasura/metadata/databases/bdjuno/tables/tables.yaml @@ -23,6 +23,7 @@ - "!include public_proposal_validator_status_snapshot.yaml" - "!include public_proposal_vote.yaml" - "!include public_slashing_params.yaml" +- "!include public_software_upgrade_plan.yaml" - "!include public_staking_params.yaml" - "!include public_staking_pool.yaml" - "!include public_supply.yaml" diff --git a/modules/actions/config.go b/modules/actions/config.go index 928876c94..1ba56a2a0 100644 --- a/modules/actions/config.go +++ b/modules/actions/config.go @@ -1,27 +1,30 @@ package actions import ( - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" "gopkg.in/yaml.v3" ) // Config contains the configuration about the actions module type Config struct { + Host string `yaml:"host"` Port uint `yaml:"port"` Node *remote.Details `yaml:"node,omitempty"` } // NewConfig returns a new Config instance -func NewConfig(port uint, remoteDetails *remote.Details) *Config { +func NewConfig(host string, port uint, remoteDetails *remote.Details) *Config { return &Config{ + Host: host, Port: port, Node: remoteDetails, } } // DefaultConfig returns the default configuration -func DefaultConfig() Config { - return Config{ +func DefaultConfig() *Config { + return &Config{ + Host: "127.0.0.1", Port: 3000, Node: nil, } @@ -33,5 +36,10 @@ func ParseConfig(bz []byte) (*Config, error) { } var cfg T err := yaml.Unmarshal(bz, &cfg) + + if cfg.Config == nil { + return DefaultConfig(), nil + } + return cfg.Config, err } diff --git a/modules/actions/handle_additional_operations.go b/modules/actions/handle_additional_operations.go index 4b5327888..e555de208 100644 --- a/modules/actions/handle_additional_operations.go +++ b/modules/actions/handle_additional_operations.go @@ -6,8 +6,8 @@ import ( "sync" "syscall" - "github.com/forbole/bdjuno/v3/modules/actions/handlers" - actionstypes "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/handlers" + actionstypes "github.com/forbole/bdjuno/v4/modules/actions/types" ) var ( @@ -46,7 +46,7 @@ func (m *Module) RunAdditionalOperations() error { // Start the worker waitGroup.Add(1) - go worker.Start(m.cfg.Port) + go worker.Start(m.cfg.Host, m.cfg.Port) // Block main process (signal capture will call WaitGroup's Done) waitGroup.Wait() diff --git a/modules/actions/handlers/account_balance.go b/modules/actions/handlers/account_balance.go index ed572a748..8aa693ad4 100644 --- a/modules/actions/handlers/account_balance.go +++ b/modules/actions/handlers/account_balance.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "github.com/rs/zerolog/log" ) diff --git a/modules/actions/handlers/delegation.go b/modules/actions/handlers/delegation.go index 20513a012..c0f7d98f9 100644 --- a/modules/actions/handlers/delegation.go +++ b/modules/actions/handlers/delegation.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "google.golang.org/grpc/codes" diff --git a/modules/actions/handlers/delegation_total.go b/modules/actions/handlers/delegation_total.go index 091c5fad4..b6d81083b 100644 --- a/modules/actions/handlers/delegation_total.go +++ b/modules/actions/handlers/delegation_total.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/rs/zerolog/log" diff --git a/modules/actions/handlers/delegator_reward.go b/modules/actions/handlers/delegator_reward.go index 7039e0882..0eb29f16e 100644 --- a/modules/actions/handlers/delegator_reward.go +++ b/modules/actions/handlers/delegator_reward.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "github.com/rs/zerolog/log" ) diff --git a/modules/actions/handlers/delegator_withdraw_address.go b/modules/actions/handlers/delegator_withdraw_address.go index 516cff0d3..92debf01e 100644 --- a/modules/actions/handlers/delegator_withdraw_address.go +++ b/modules/actions/handlers/delegator_withdraw_address.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "github.com/rs/zerolog/log" ) diff --git a/modules/actions/handlers/redelegation.go b/modules/actions/handlers/redelegation.go index 891d9f562..5334ca3a5 100644 --- a/modules/actions/handlers/redelegation.go +++ b/modules/actions/handlers/redelegation.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/rs/zerolog/log" diff --git a/modules/actions/handlers/unbonding_delegation_total.go b/modules/actions/handlers/unbonding_delegation_total.go index d61f3bca4..6f79fdd32 100644 --- a/modules/actions/handlers/unbonding_delegation_total.go +++ b/modules/actions/handlers/unbonding_delegation_total.go @@ -4,7 +4,7 @@ import ( "fmt" "math/big" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "github.com/rs/zerolog/log" ) diff --git a/modules/actions/handlers/unbonding_delegations.go b/modules/actions/handlers/unbonding_delegations.go index 1764759a6..bdd227609 100644 --- a/modules/actions/handlers/unbonding_delegations.go +++ b/modules/actions/handlers/unbonding_delegations.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "github.com/rs/zerolog/log" ) diff --git a/modules/actions/handlers/validator_commission.go b/modules/actions/handlers/validator_commission.go index 86340bf30..7a1ece22b 100644 --- a/modules/actions/handlers/validator_commission.go +++ b/modules/actions/handlers/validator_commission.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "github.com/rs/zerolog/log" ) diff --git a/modules/actions/handlers/validator_delegation.go b/modules/actions/handlers/validator_delegation.go index 344826588..bb3598c88 100644 --- a/modules/actions/handlers/validator_delegation.go +++ b/modules/actions/handlers/validator_delegation.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/rs/zerolog/log" diff --git a/modules/actions/handlers/validator_redelegations_from.go b/modules/actions/handlers/validator_redelegations_from.go index c51708230..d04f8608e 100644 --- a/modules/actions/handlers/validator_redelegations_from.go +++ b/modules/actions/handlers/validator_redelegations_from.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/rs/zerolog/log" diff --git a/modules/actions/handlers/validator_unbonding_delegations.go b/modules/actions/handlers/validator_unbonding_delegations.go index 161afc4d6..be6258655 100644 --- a/modules/actions/handlers/validator_unbonding_delegations.go +++ b/modules/actions/handlers/validator_unbonding_delegations.go @@ -3,7 +3,7 @@ package handlers import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/types" + "github.com/forbole/bdjuno/v4/modules/actions/types" "github.com/rs/zerolog/log" ) diff --git a/modules/actions/module.go b/modules/actions/module.go index a7c40ee02..b6e446938 100644 --- a/modules/actions/module.go +++ b/modules/actions/module.go @@ -1,14 +1,14 @@ package actions import ( - "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/forbole/juno/v3/modules" - "github.com/forbole/juno/v3/node" - "github.com/forbole/juno/v3/node/builder" - nodeconfig "github.com/forbole/juno/v3/node/config" - "github.com/forbole/juno/v3/types/config" + "cosmossdk.io/simapp/params" + "github.com/forbole/juno/v5/modules" + "github.com/forbole/juno/v5/node" + "github.com/forbole/juno/v5/node/builder" + nodeconfig "github.com/forbole/juno/v5/node/config" + "github.com/forbole/juno/v5/types/config" - modulestypes "github.com/forbole/bdjuno/v3/modules/types" + modulestypes "github.com/forbole/bdjuno/v4/modules/types" ) const ( diff --git a/modules/actions/types/handler.go b/modules/actions/types/handler.go index f233a2d4c..a57c8d332 100644 --- a/modules/actions/types/handler.go +++ b/modules/actions/types/handler.go @@ -3,9 +3,9 @@ package types import ( "fmt" - "github.com/forbole/juno/v3/node" + "github.com/forbole/juno/v5/node" - modulestypes "github.com/forbole/bdjuno/v3/modules/types" + modulestypes "github.com/forbole/bdjuno/v4/modules/types" ) // Context contains the data about a Hasura actions worker execution diff --git a/modules/actions/types/response.go b/modules/actions/types/response.go index a675ac0a4..f1764ca3d 100644 --- a/modules/actions/types/response.go +++ b/modules/actions/types/response.go @@ -3,6 +3,7 @@ package types import ( "time" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" stakingtype "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -95,6 +96,6 @@ type Redelegation struct { } type RedelegationEntry struct { - CompletionTime time.Time `json:"completion_time"` - Balance sdk.Int `json:"balance"` + CompletionTime time.Time `json:"completion_time"` + Balance sdkmath.Int `json:"balance"` } diff --git a/modules/actions/types/worker.go b/modules/actions/types/worker.go index 168e73765..64bc28d49 100644 --- a/modules/actions/types/worker.go +++ b/modules/actions/types/worker.go @@ -7,7 +7,7 @@ import ( "net/http" "time" - "github.com/forbole/bdjuno/v3/modules/actions/logging" + "github.com/forbole/bdjuno/v4/modules/actions/logging" "github.com/rs/zerolog/log" ) @@ -94,8 +94,15 @@ func (w *ActionsWorker) handleError(writer http.ResponseWriter, path string, err } // Start starts the worker -func (w *ActionsWorker) Start(port uint) { - err := http.ListenAndServe(fmt.Sprintf(":%d", port), w.mux) //nolint:gosec //cosmos style +func (w *ActionsWorker) Start(host string, port uint) { + server := &http.Server{ + Addr: fmt.Sprintf("%s:%d", host, port), + Handler: w.mux, + ReadHeaderTimeout: 3 * time.Second, + } + + err := server.ListenAndServe() + if err != nil { panic(err) } diff --git a/modules/assetft/account_parser.go b/modules/assetft/account_parser.go index 65ede037f..edeaafe1d 100644 --- a/modules/assetft/account_parser.go +++ b/modules/assetft/account_parser.go @@ -1,9 +1,10 @@ package assetft import ( - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" ) // MessagesParser returns the list of all the accounts involved in the given diff --git a/modules/assetft/handle_genesis.go b/modules/assetft/handle_genesis.go index 02d0d7bd9..4dc9aa33a 100644 --- a/modules/assetft/handle_genesis.go +++ b/modules/assetft/handle_genesis.go @@ -4,10 +4,11 @@ import ( "encoding/json" "fmt" - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" - "github.com/forbole/bdjuno/v3/types" + tmtypes "github.com/cometbft/cometbft/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" - tmtypes "github.com/tendermint/tendermint/types" + + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" ) // HandleGenesis implements GenesisModule diff --git a/modules/assetft/module.go b/modules/assetft/module.go index f3df0fd07..5dabf32d8 100644 --- a/modules/assetft/module.go +++ b/modules/assetft/module.go @@ -2,9 +2,9 @@ package assetft import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" - assetftsource "github.com/forbole/bdjuno/v3/modules/assetft/source" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/bdjuno/v4/database" + assetftsource "github.com/forbole/bdjuno/v4/modules/assetft/source" + "github.com/forbole/juno/v5/modules" ) var ( diff --git a/modules/assetft/source/remote/source.go b/modules/assetft/source/remote/source.go index 193083f6d..ac550d790 100644 --- a/modules/assetft/source/remote/source.go +++ b/modules/assetft/source/remote/source.go @@ -1,9 +1,10 @@ package remote import ( - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" - assetftsource "github.com/forbole/bdjuno/v3/modules/assetft/source" - "github.com/forbole/juno/v3/node/remote" + assetftsource "github.com/forbole/bdjuno/v4/modules/assetft/source" + "github.com/forbole/juno/v5/node/remote" + + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" ) var ( diff --git a/modules/assetft/source/source.go b/modules/assetft/source/source.go index f06b08292..3acc4d8db 100644 --- a/modules/assetft/source/source.go +++ b/modules/assetft/source/source.go @@ -1,7 +1,7 @@ package source import ( - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" ) type Source interface { diff --git a/modules/assetft/utils_params.go b/modules/assetft/utils_params.go index 7b3e89c08..023f3325e 100644 --- a/modules/assetft/utils_params.go +++ b/modules/assetft/utils_params.go @@ -3,7 +3,7 @@ package assetft import ( "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" ) diff --git a/modules/assetnft/account_parser.go b/modules/assetnft/account_parser.go index fa69421c3..bbce57cb2 100644 --- a/modules/assetnft/account_parser.go +++ b/modules/assetnft/account_parser.go @@ -1,9 +1,10 @@ package assetnft import ( - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" ) // MessagesParser returns the list of all the accounts involved in the given diff --git a/modules/assetnft/handle_genesis.go b/modules/assetnft/handle_genesis.go index 62867269a..2ad675771 100644 --- a/modules/assetnft/handle_genesis.go +++ b/modules/assetnft/handle_genesis.go @@ -4,10 +4,11 @@ import ( "encoding/json" "fmt" - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" - "github.com/forbole/bdjuno/v3/types" + tmtypes "github.com/cometbft/cometbft/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" - tmtypes "github.com/tendermint/tendermint/types" + + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" ) // HandleGenesis implements GenesisModule diff --git a/modules/assetnft/module.go b/modules/assetnft/module.go index d358215ec..1b5749dbe 100644 --- a/modules/assetnft/module.go +++ b/modules/assetnft/module.go @@ -2,9 +2,9 @@ package assetnft import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" - assetnftsource "github.com/forbole/bdjuno/v3/modules/assetnft/source" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/bdjuno/v4/database" + assetnftsource "github.com/forbole/bdjuno/v4/modules/assetnft/source" + "github.com/forbole/juno/v5/modules" ) var ( diff --git a/modules/assetnft/source/remote/source.go b/modules/assetnft/source/remote/source.go index 66246b921..4879ae8b5 100644 --- a/modules/assetnft/source/remote/source.go +++ b/modules/assetnft/source/remote/source.go @@ -1,9 +1,10 @@ package remote import ( - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" - assetnftsource "github.com/forbole/bdjuno/v3/modules/assetnft/source" - "github.com/forbole/juno/v3/node/remote" + assetnftsource "github.com/forbole/bdjuno/v4/modules/assetnft/source" + "github.com/forbole/juno/v5/node/remote" + + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" ) var ( diff --git a/modules/assetnft/source/source.go b/modules/assetnft/source/source.go index 2af60f412..abb6ec40d 100644 --- a/modules/assetnft/source/source.go +++ b/modules/assetnft/source/source.go @@ -1,7 +1,7 @@ package source import ( - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" ) type Source interface { diff --git a/modules/assetnft/utils_params.go b/modules/assetnft/utils_params.go index aea95003f..b9813416f 100644 --- a/modules/assetnft/utils_params.go +++ b/modules/assetnft/utils_params.go @@ -3,7 +3,7 @@ package assetnft import ( "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" ) diff --git a/modules/auth/auth_accounts.go b/modules/auth/auth_accounts.go index e7fad5d43..4ad7e7244 100644 --- a/modules/auth/auth_accounts.go +++ b/modules/auth/auth_accounts.go @@ -7,7 +7,7 @@ import ( authttypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // GetGenesisAccounts parses the given appState and returns the genesis accounts @@ -50,6 +50,9 @@ func GetAccounts(height int64, addresses []string) []types.Account { // RefreshAccounts takes the given addresses and for each one queries the chain // retrieving the account data and stores it inside the database. func (m *Module) RefreshAccounts(height int64, addresses []string) error { + if len(addresses) == 0 { + return nil + } accounts := GetAccounts(height, addresses) return m.db.SaveAccounts(accounts) } diff --git a/modules/auth/handle_genesis.go b/modules/auth/handle_genesis.go index 78368217f..75346d050 100644 --- a/modules/auth/handle_genesis.go +++ b/modules/auth/handle_genesis.go @@ -4,7 +4,7 @@ import ( "encoding/json" "fmt" - tmtypes "github.com/tendermint/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" "github.com/rs/zerolog/log" ) diff --git a/modules/auth/handle_msg.go b/modules/auth/handle_msg.go index 20b0d7fc4..a3605c990 100644 --- a/modules/auth/handle_msg.go +++ b/modules/auth/handle_msg.go @@ -5,17 +5,23 @@ import ( "time" sdk "github.com/cosmos/cosmos-sdk/types" - juno "github.com/forbole/juno/v3/types" - "github.com/gogo/protobuf/proto" + "github.com/cosmos/cosmos-sdk/x/authz" + "github.com/cosmos/gogoproto/proto" + juno "github.com/forbole/juno/v5/types" "github.com/rs/zerolog/log" authttypes "github.com/cosmos/cosmos-sdk/x/auth/types" vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/forbole/bdjuno/v3/modules/utils" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/modules/utils" + "github.com/forbole/bdjuno/v4/types" ) +// HandleMsgExec implements modules.AuthzMessageModule +func (m *Module) HandleMsgExec(index int, _ *authz.MsgExec, _ int, executedMsg sdk.Msg, tx *juno.Tx) error { + return m.HandleMsg(index, executedMsg, tx) +} + // HandleMsg implements modules.MessageModule func (m *Module) HandleMsg(_ int, msg sdk.Msg, tx *juno.Tx) error { addresses, err := m.messagesParser(m.cdc, msg) diff --git a/modules/auth/module.go b/modules/auth/module.go index 2d725cb2a..32bb89a99 100644 --- a/modules/auth/module.go +++ b/modules/auth/module.go @@ -3,10 +3,10 @@ package auth import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" + "github.com/forbole/bdjuno/v4/database" - "github.com/forbole/juno/v3/modules" - "github.com/forbole/juno/v3/modules/messages" + "github.com/forbole/juno/v5/modules" + "github.com/forbole/juno/v5/modules/messages" ) var ( diff --git a/modules/bank/handle_periodic_operations.go b/modules/bank/handle_periodic_operations.go index b8a26dc39..1435aab3d 100644 --- a/modules/bank/handle_periodic_operations.go +++ b/modules/bank/handle_periodic_operations.go @@ -6,7 +6,7 @@ import ( "github.com/go-co-op/gocron" "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/modules/utils" + "github.com/forbole/bdjuno/v4/modules/utils" ) // RegisterPeriodicOperations implements modules.Module @@ -14,7 +14,7 @@ func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { log.Debug().Str("module", "bank").Msg("setting up periodic tasks") if _, err := scheduler.Every(10).Minutes().Do(func() { - utils.WatchMethod(m.updateSupply) + utils.WatchMethod(m.UpdateSupply) }); err != nil { return fmt.Errorf("error while setting up bank periodic operation: %s", err) } @@ -22,14 +22,14 @@ func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { return nil } -// updateSupply updates the supply of all the tokens -func (m *Module) updateSupply() error { +// UpdateSupply updates the supply of all the tokens +func (m *Module) UpdateSupply() error { log.Trace().Str("module", "bank").Str("operation", "total supply"). Msg("updating total supply") - block, err := m.db.GetLastBlock() + block, err := m.db.GetLastBlockHeightAndTimestamp() if err != nil { - return fmt.Errorf("error while getting last block: %s", err) + return fmt.Errorf("error while getting latest block height: %s", err) } supply, err := m.keeper.GetSupply(block.Height) diff --git a/modules/bank/module.go b/modules/bank/module.go index 4f8fe26d6..bf1e6c148 100644 --- a/modules/bank/module.go +++ b/modules/bank/module.go @@ -3,12 +3,12 @@ package bank import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/bdjuno/v3/modules/bank/source" + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/bank/source" - junomessages "github.com/forbole/juno/v3/modules/messages" + junomessages "github.com/forbole/juno/v5/modules/messages" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" ) var ( diff --git a/modules/bank/source/local/source.go b/modules/bank/source/local/source.go index 688b7b716..25c346a7d 100644 --- a/modules/bank/source/local/source.go +++ b/modules/bank/source/local/source.go @@ -3,13 +3,14 @@ package local import ( "fmt" + "github.com/cosmos/cosmos-sdk/types/query" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/forbole/juno/v3/node/local" + "github.com/forbole/juno/v5/node/local" - "github.com/forbole/bdjuno/v3/modules/bank/source" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/modules/bank/source" + "github.com/forbole/bdjuno/v4/types" ) var ( @@ -50,19 +51,35 @@ func (s Source) GetBalances(addresses []string, height int64) ([]types.AccountBa return balances, nil } -// GetSupply implements keeper.Source +// GetSupply implements bankkeeper.Source func (s Source) GetSupply(height int64) (sdk.Coins, error) { ctx, err := s.LoadHeight(height) if err != nil { return nil, fmt.Errorf("error while loading height: %s", err) } - res, err := s.q.TotalSupply(sdk.WrapSDKContext(ctx), &banktypes.QueryTotalSupplyRequest{}) - if err != nil { - return nil, err + var coins []sdk.Coin + var nextKey []byte + var stop = false + for !stop { + res, err := s.q.TotalSupply( + sdk.WrapSDKContext(ctx), + &banktypes.QueryTotalSupplyRequest{ + Pagination: &query.PageRequest{ + Key: nextKey, + Limit: 100, // Query 100 supplies at time + }, + }) + if err != nil { + return nil, fmt.Errorf("error while getting total supply: %s", err) + } + + nextKey = res.Pagination.NextKey + stop = len(res.Pagination.NextKey) == 0 + coins = append(coins, res.Supply...) } - return res.Supply, nil + return coins, nil } // GetAccountBalances implements bankkeeper.Source diff --git a/modules/bank/source/remote/source.go b/modules/bank/source/remote/source.go index 28769328f..c2ede4d67 100644 --- a/modules/bank/source/remote/source.go +++ b/modules/bank/source/remote/source.go @@ -6,10 +6,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" - bankkeeper "github.com/forbole/bdjuno/v3/modules/bank/source" - "github.com/forbole/bdjuno/v3/types" + bankkeeper "github.com/forbole/bdjuno/v4/modules/bank/source" + "github.com/forbole/bdjuno/v4/types" ) var ( @@ -52,12 +52,28 @@ func (s Source) GetBalances(addresses []string, height int64) ([]types.AccountBa // GetSupply implements bankkeeper.Source func (s Source) GetSupply(height int64) (sdk.Coins, error) { - res, err := s.bankClient.TotalSupply(remote.GetHeightRequestContext(s.Ctx, height), &banktypes.QueryTotalSupplyRequest{ - Pagination: &query.PageRequest{Limit: query.MaxLimit}, - }) - if err != nil { - return nil, fmt.Errorf("error while getting total supply: %s", err) + ctx := remote.GetHeightRequestContext(s.Ctx, height) + + var coins []sdk.Coin + var nextKey []byte + var stop = false + for !stop { + res, err := s.bankClient.TotalSupply( + ctx, + &banktypes.QueryTotalSupplyRequest{ + Pagination: &query.PageRequest{ + Key: nextKey, + Limit: 100, // Query 100 supplies at time + }, + }) + if err != nil { + return nil, fmt.Errorf("error while getting total supply: %s", err) + } + + nextKey = res.Pagination.NextKey + stop = len(res.Pagination.NextKey) == 0 + coins = append(coins, res.Supply...) } - return res.Supply, nil + return coins, nil } diff --git a/modules/bank/source/remote/source_actions.go b/modules/bank/source/remote/source_actions.go index 343e1838a..f2a0efae7 100644 --- a/modules/bank/source/remote/source_actions.go +++ b/modules/bank/source/remote/source_actions.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/forbole/bdjuno/v3/utils" + "github.com/forbole/bdjuno/v4/utils" ) // GetAccountBalances implements bankkeeper.Source diff --git a/modules/bank/source/source.go b/modules/bank/source/source.go index 905d32448..a1a2ac9a4 100644 --- a/modules/bank/source/source.go +++ b/modules/bank/source/source.go @@ -3,7 +3,7 @@ package source import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) type Source interface { diff --git a/modules/consensus/handle_block.go b/modules/consensus/handle_block.go index da2149e5e..040da07af 100644 --- a/modules/consensus/handle_block.go +++ b/modules/consensus/handle_block.go @@ -5,18 +5,21 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/forbole/bdjuno/v3/modules/actions/logging" - "github.com/forbole/juno/v3/types" + "github.com/forbole/bdjuno/v4/modules/actions/logging" + "github.com/forbole/juno/v5/types" + "github.com/rs/zerolog/log" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" - tmtypes "github.com/tendermint/tendermint/types" + + tmctypes "github.com/cometbft/cometbft/rpc/core/types" + tmtypes "github.com/cometbft/cometbft/types" ) // HandleBlock implements modules.Module func (m *Module) HandleBlock( b *tmctypes.ResultBlock, _ *tmctypes.ResultBlockResults, _ []*types.Tx, vals *tmctypes.ResultValidators, ) error { - if err := m.updateBlockTimeFromGenesis(b); err != nil { + err := m.updateBlockTimeFromGenesis(b) + if err != nil { log.Error().Str("module", "consensus").Int64("height", b.Block.Height). Err(err).Msg("error while updating block time from genesis") } diff --git a/modules/consensus/handle_genesis.go b/modules/consensus/handle_genesis.go index 0dd28cf60..c2e8d1cb2 100644 --- a/modules/consensus/handle_genesis.go +++ b/modules/consensus/handle_genesis.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" + tmtypes "github.com/cometbft/cometbft/types" "github.com/rs/zerolog/log" - tmtypes "github.com/tendermint/tendermint/types" ) // HandleGenesis implements modules.Module diff --git a/modules/consensus/handle_periodic_operations.go b/modules/consensus/handle_periodic_operations.go index ca0641f85..54a48b3a8 100644 --- a/modules/consensus/handle_periodic_operations.go +++ b/modules/consensus/handle_periodic_operations.go @@ -3,11 +3,11 @@ package consensus import ( "fmt" - "github.com/forbole/bdjuno/v3/modules/actions/logging" + "github.com/forbole/bdjuno/v4/modules/actions/logging" "github.com/go-co-op/gocron" "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/modules/utils" + "github.com/forbole/bdjuno/v4/modules/utils" ) // RegisterPeriodicOperations implements modules.Module diff --git a/modules/consensus/module.go b/modules/consensus/module.go index 0a0598c1f..bb0893fdc 100644 --- a/modules/consensus/module.go +++ b/modules/consensus/module.go @@ -3,9 +3,9 @@ package consensus import ( "sync" - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/juno/v3/modules" - tmtypes "github.com/tendermint/tendermint/types" + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/juno/v5/modules" + tmtypes "github.com/cometbft/cometbft/types" ) var ( diff --git a/modules/customparams/handle_genesis.go b/modules/customparams/handle_genesis.go index 47989f698..761bdbe4d 100644 --- a/modules/customparams/handle_genesis.go +++ b/modules/customparams/handle_genesis.go @@ -4,10 +4,11 @@ import ( "encoding/json" "fmt" - customparamstypes "github.com/CoreumFoundation/coreum/v2/x/customparams/types" - "github.com/forbole/bdjuno/v3/types" + tmtypes "github.com/cometbft/cometbft/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" - tmtypes "github.com/tendermint/tendermint/types" + + customparamstypes "github.com/CoreumFoundation/coreum/v3/x/customparams/types" ) // HandleGenesis implements GenesisModule diff --git a/modules/customparams/module.go b/modules/customparams/module.go index 6194a6d2c..783912aac 100644 --- a/modules/customparams/module.go +++ b/modules/customparams/module.go @@ -2,9 +2,9 @@ package customparams import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" - customparamssource "github.com/forbole/bdjuno/v3/modules/customparams/source" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/bdjuno/v4/database" + customparamssource "github.com/forbole/bdjuno/v4/modules/customparams/source" + "github.com/forbole/juno/v5/modules" ) var ( diff --git a/modules/customparams/source/remote/source.go b/modules/customparams/source/remote/source.go index a71998e19..e7456a9ee 100644 --- a/modules/customparams/source/remote/source.go +++ b/modules/customparams/source/remote/source.go @@ -1,9 +1,10 @@ package remote import ( - customparamstypes "github.com/CoreumFoundation/coreum/v2/x/customparams/types" - customparamssource "github.com/forbole/bdjuno/v3/modules/customparams/source" - "github.com/forbole/juno/v3/node/remote" + customparamssource "github.com/forbole/bdjuno/v4/modules/customparams/source" + "github.com/forbole/juno/v5/node/remote" + + customparamstypes "github.com/CoreumFoundation/coreum/v3/x/customparams/types" ) var ( diff --git a/modules/customparams/source/source.go b/modules/customparams/source/source.go index 649dfb243..36a284041 100644 --- a/modules/customparams/source/source.go +++ b/modules/customparams/source/source.go @@ -1,7 +1,7 @@ package source import ( - customparamstypes "github.com/CoreumFoundation/coreum/v2/x/customparams/types" + customparamstypes "github.com/CoreumFoundation/coreum/v3/x/customparams/types" ) type Source interface { diff --git a/modules/customparams/utils_params.go b/modules/customparams/utils_params.go index 35ceb6330..0777aa860 100644 --- a/modules/customparams/utils_params.go +++ b/modules/customparams/utils_params.go @@ -3,7 +3,7 @@ package customparams import ( "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" ) diff --git a/modules/daily_refetch/handle_periodic_operations.go b/modules/daily_refetch/handle_periodic_operations.go new file mode 100644 index 000000000..ae8f5c307 --- /dev/null +++ b/modules/daily_refetch/handle_periodic_operations.go @@ -0,0 +1,71 @@ +package daily_refetch + +import ( + "fmt" + "time" + + "github.com/forbole/juno/v5/parser" + "github.com/forbole/juno/v5/types/config" + + "github.com/go-co-op/gocron" + "github.com/rs/zerolog/log" + + parsecmdtypes "github.com/forbole/juno/v5/cmd/parse/types" +) + +func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { + log.Debug().Str("module", "daily refetch").Msg("setting up periodic tasks") + + // Setup a cron job to run every midnight + if _, err := scheduler.Every(1).Day().At("00:00").Do(func() { + m.refetchMissingBlocks() + }); err != nil { + return fmt.Errorf("error while setting up daily refetch periodic operation: %s", err) + } + + return nil +} + +// refetchMissingBlocks checks for missing blocks from one day ago and refetches them +func (m *Module) refetchMissingBlocks() error { + log.Trace().Str("module", "daily refetch").Str("refetching", "blocks"). + Msg("refetching missing blocks") + + latestBlock, err := m.node.LatestHeight() + if err != nil { + return fmt.Errorf("error while getting latest block: %s", err) + } + + blockHeightDayAgo, err := m.database.GetBlockHeightTimeDayAgo(time.Now()) + if err != nil { + return fmt.Errorf("error while getting block height from a day ago: %s", err) + } + var startHeight = blockHeightDayAgo.Height + + missingBlocks := m.database.GetMissingBlocks(startHeight, latestBlock) + + // return if no blocks are missing + if len(missingBlocks) == 0 { + return nil + } + + parseCtx, err := parsecmdtypes.GetParserContext(config.Cfg, parsecmdtypes.NewConfig()) + if err != nil { + return err + } + + workerCtx := parser.NewContext(parseCtx.EncodingConfig, parseCtx.Node, parseCtx.Database, parseCtx.Logger, parseCtx.Modules) + worker := parser.NewWorker(workerCtx, nil, 0) + + log.Info().Int64("start height", startHeight).Int64("end height", latestBlock). + Msg("getting missing blocks and transactions from a day ago") + for _, block := range missingBlocks { + err = worker.Process(block) + if err != nil { + return fmt.Errorf("error while re-fetching block %d: %s", block, err) + } + } + + return nil + +} diff --git a/modules/daily_refetch/module.go b/modules/daily_refetch/module.go new file mode 100644 index 000000000..a9673f431 --- /dev/null +++ b/modules/daily_refetch/module.go @@ -0,0 +1,35 @@ +package daily_refetch + +import ( + "github.com/forbole/juno/v5/node" + + bdjunodb "github.com/forbole/bdjuno/v4/database" + + "github.com/forbole/juno/v5/modules" +) + +var ( + _ modules.Module = &Module{} + _ modules.PeriodicOperationsModule = &Module{} +) + +type Module struct { + node node.Node + database *bdjunodb.Db +} + +// NewModule builds a new Module instance +func NewModule( + node node.Node, + database *bdjunodb.Db, +) *Module { + return &Module{ + node: node, + database: database, + } +} + +// Name implements modules.Module +func (m *Module) Name() string { + return "daily refetch" +} diff --git a/modules/distribution/handle_genesis.go b/modules/distribution/handle_genesis.go index 34915d71a..623fa9345 100644 --- a/modules/distribution/handle_genesis.go +++ b/modules/distribution/handle_genesis.go @@ -4,9 +4,9 @@ import ( "encoding/json" "fmt" - tmtypes "github.com/tendermint/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/rs/zerolog/log" diff --git a/modules/distribution/handle_msg.go b/modules/distribution/handle_msg.go index 79a01f3da..5503b7e83 100644 --- a/modules/distribution/handle_msg.go +++ b/modules/distribution/handle_msg.go @@ -2,11 +2,17 @@ package distribution import ( sdk "github.com/cosmos/cosmos-sdk/types" - juno "github.com/forbole/juno/v3/types" + "github.com/cosmos/cosmos-sdk/x/authz" + juno "github.com/forbole/juno/v5/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" ) +// HandleMsgExec implements modules.AuthzMessageModule +func (m *Module) HandleMsgExec(index int, _ *authz.MsgExec, _ int, executedMsg sdk.Msg, tx *juno.Tx) error { + return m.HandleMsg(index, executedMsg, tx) +} + // HandleMsg implements modules.MessageModule func (m *Module) HandleMsg(_ int, msg sdk.Msg, tx *juno.Tx) error { if len(tx.Logs) == 0 { diff --git a/modules/distribution/handle_periodic_operations.go b/modules/distribution/handle_periodic_operations.go index 00f0bb2b5..3866d7444 100644 --- a/modules/distribution/handle_periodic_operations.go +++ b/modules/distribution/handle_periodic_operations.go @@ -6,7 +6,7 @@ import ( "github.com/go-co-op/gocron" "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/modules/utils" + "github.com/forbole/bdjuno/v4/modules/utils" ) // RegisterPeriodicOperations implements modules.PeriodicOperationsModule @@ -15,7 +15,7 @@ func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { // Update the community pool every 1 hour if _, err := scheduler.Every(1).Hour().Do(func() { - utils.WatchMethod(m.getLatestCommunityPool) + utils.WatchMethod(m.GetLatestCommunityPool) }); err != nil { return fmt.Errorf("error while scheduling distribution peridic operation: %s", err) } @@ -23,12 +23,12 @@ func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { return nil } -// getLatestCommunityPool gets the latest community pool from the chain and stores inside the database -func (m *Module) getLatestCommunityPool() error { - height, err := m.db.GetLastBlockHeight() +// GetLatestCommunityPool gets the latest community pool from the chain and stores inside the database +func (m *Module) GetLatestCommunityPool() error { + block, err := m.db.GetLastBlockHeightAndTimestamp() if err != nil { return fmt.Errorf("error while getting latest block height: %s", err) } - return m.updateCommunityPool(height) + return m.updateCommunityPool(block.Height) } diff --git a/modules/distribution/module.go b/modules/distribution/module.go index 14faa75da..88ec8ef1a 100644 --- a/modules/distribution/module.go +++ b/modules/distribution/module.go @@ -3,11 +3,11 @@ package distribution import ( "github.com/cosmos/cosmos-sdk/codec" - distrsource "github.com/forbole/bdjuno/v3/modules/distribution/source" + distrsource "github.com/forbole/bdjuno/v4/modules/distribution/source" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" - "github.com/forbole/bdjuno/v3/database" + "github.com/forbole/bdjuno/v4/database" ) var ( diff --git a/modules/distribution/source/local/source.go b/modules/distribution/source/local/source.go index ade7f3c38..42ccd311b 100644 --- a/modules/distribution/source/local/source.go +++ b/modules/distribution/source/local/source.go @@ -5,9 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/forbole/juno/v3/node/local" + "github.com/forbole/juno/v5/node/local" - distrsource "github.com/forbole/bdjuno/v3/modules/distribution/source" + distrsource "github.com/forbole/bdjuno/v4/modules/distribution/source" ) var ( diff --git a/modules/distribution/source/remote/source.go b/modules/distribution/source/remote/source.go index 24287f4cc..697e11b85 100644 --- a/modules/distribution/source/remote/source.go +++ b/modules/distribution/source/remote/source.go @@ -3,9 +3,9 @@ package remote import ( sdk "github.com/cosmos/cosmos-sdk/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" - distrsource "github.com/forbole/bdjuno/v3/modules/distribution/source" + distrsource "github.com/forbole/bdjuno/v4/modules/distribution/source" ) var ( diff --git a/modules/distribution/source/remote/source_actions.go b/modules/distribution/source/remote/source_actions.go index aaca6160b..120440407 100644 --- a/modules/distribution/source/remote/source_actions.go +++ b/modules/distribution/source/remote/source_actions.go @@ -5,9 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" - "github.com/forbole/bdjuno/v3/utils" + "github.com/forbole/bdjuno/v4/utils" ) // DelegatorTotalRewards implements distrsource.Source diff --git a/modules/distribution/utils_params.go b/modules/distribution/utils_params.go index 4350d6860..fbbf53213 100644 --- a/modules/distribution/utils_params.go +++ b/modules/distribution/utils_params.go @@ -5,7 +5,7 @@ import ( "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // UpdateParams gets the updated params and stores them inside the database diff --git a/modules/feegrant/handle_block.go b/modules/feegrant/handle_block.go index 247e9a31e..97808f89b 100644 --- a/modules/feegrant/handle_block.go +++ b/modules/feegrant/handle_block.go @@ -3,15 +3,15 @@ package feegrant import ( "fmt" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" + tmctypes "github.com/cometbft/cometbft/rpc/core/types" "github.com/rs/zerolog/log" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // HandleBlock implements BlockModule @@ -43,7 +43,7 @@ func (m *Module) removeExpiredFeeGrantAllowances(height int64, events []abci.Eve if err != nil { return fmt.Errorf("error while getting fee grant grantee address: %s", err) } - err = m.db.DeleteFeeGrantAllowance(types.NewGrantRemoval(string(granteeAddress.Value), string(granterAddress.Value), height)) + err = m.db.DeleteFeeGrantAllowance(types.NewGrantRemoval(granteeAddress.Value, granterAddress.Value, height)) if err != nil { return fmt.Errorf("error while deleting fee grant allowance: %s", err) diff --git a/modules/feegrant/handle_msg.go b/modules/feegrant/handle_msg.go index 9e9ca3232..bfddf22d9 100644 --- a/modules/feegrant/handle_msg.go +++ b/modules/feegrant/handle_msg.go @@ -4,12 +4,18 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/authz" feegranttypes "github.com/cosmos/cosmos-sdk/x/feegrant" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) +// HandleMsgExec implements modules.AuthzMessageModule +func (m *Module) HandleMsgExec(index int, _ *authz.MsgExec, _ int, executedMsg sdk.Msg, tx *juno.Tx) error { + return m.HandleMsg(index, executedMsg, tx) +} + // HandleMsg implements modules.MessageModule func (m *Module) HandleMsg(_ int, msg sdk.Msg, tx *juno.Tx) error { if len(tx.Logs) == 0 { diff --git a/modules/feegrant/module.go b/modules/feegrant/module.go index 479e000c2..deeae8609 100644 --- a/modules/feegrant/module.go +++ b/modules/feegrant/module.go @@ -3,9 +3,9 @@ package feegrant import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" + "github.com/forbole/bdjuno/v4/database" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" ) var ( diff --git a/modules/feemodel/handle_genesis.go b/modules/feemodel/handle_genesis.go index 8fb42870b..80415bd48 100644 --- a/modules/feemodel/handle_genesis.go +++ b/modules/feemodel/handle_genesis.go @@ -4,10 +4,11 @@ import ( "encoding/json" "fmt" - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" - "github.com/forbole/bdjuno/v3/types" + tmtypes "github.com/cometbft/cometbft/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" - tmtypes "github.com/tendermint/tendermint/types" + + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" ) // HandleGenesis implements GenesisModule diff --git a/modules/feemodel/module.go b/modules/feemodel/module.go index 56890a239..ee134ac00 100644 --- a/modules/feemodel/module.go +++ b/modules/feemodel/module.go @@ -2,9 +2,9 @@ package feemodel import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" - feemodelsource "github.com/forbole/bdjuno/v3/modules/feemodel/source" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/bdjuno/v4/database" + feemodelsource "github.com/forbole/bdjuno/v4/modules/feemodel/source" + "github.com/forbole/juno/v5/modules" ) var ( diff --git a/modules/feemodel/source/remote/source.go b/modules/feemodel/source/remote/source.go index 0c8a328fc..dffd991d7 100644 --- a/modules/feemodel/source/remote/source.go +++ b/modules/feemodel/source/remote/source.go @@ -1,9 +1,10 @@ package remote import ( - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" - feemodelsource "github.com/forbole/bdjuno/v3/modules/feemodel/source" - "github.com/forbole/juno/v3/node/remote" + feemodelsource "github.com/forbole/bdjuno/v4/modules/feemodel/source" + "github.com/forbole/juno/v5/node/remote" + + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" ) var ( diff --git a/modules/feemodel/source/source.go b/modules/feemodel/source/source.go index 8ad795f99..ffc228158 100644 --- a/modules/feemodel/source/source.go +++ b/modules/feemodel/source/source.go @@ -1,7 +1,7 @@ package source import ( - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" ) type Source interface { diff --git a/modules/feemodel/utils_params.go b/modules/feemodel/utils_params.go index 86f6d5625..3307f8106 100644 --- a/modules/feemodel/utils_params.go +++ b/modules/feemodel/utils_params.go @@ -3,7 +3,7 @@ package feemodel import ( "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" ) diff --git a/modules/gov/expected_modules.go b/modules/gov/expected_modules.go index 2e10d80d6..8d8683583 100644 --- a/modules/gov/expected_modules.go +++ b/modules/gov/expected_modules.go @@ -1,22 +1,16 @@ package gov import ( - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" - - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) -type AuthModule interface { - RefreshAccounts(height int64, addresses []string) error -} - type DistrModule interface { UpdateParams(height int64) error } type MintModule interface { UpdateParams(height int64) error + UpdateInflation() error } type SlashingModule interface { @@ -24,10 +18,7 @@ type SlashingModule interface { } type StakingModule interface { - GetStakingPool(height int64) (*types.Pool, error) - GetValidatorsWithStatus(height int64, status string) ([]stakingtypes.Validator, []types.Validator, error) - GetValidatorsVotingPowers(height int64, vals *tmctypes.ResultValidators) ([]types.ValidatorVotingPower, error) - GetValidatorsStatuses(height int64, validators []stakingtypes.Validator) ([]types.ValidatorStatus, error) + GetStakingPoolSnapshot(height int64) (*types.PoolSnapshot, error) UpdateParams(height int64) error } diff --git a/modules/gov/handle_block.go b/modules/gov/handle_block.go index fd9d865ba..e16e34164 100644 --- a/modules/gov/handle_block.go +++ b/modules/gov/handle_block.go @@ -2,38 +2,69 @@ package gov import ( "fmt" + "strconv" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" + tmctypes "github.com/cometbft/cometbft/rpc/core/types" + + abci "github.com/cometbft/cometbft/abci/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/rs/zerolog/log" ) // HandleBlock implements modules.BlockModule func (m *Module) HandleBlock( - b *tmctypes.ResultBlock, _ *tmctypes.ResultBlockResults, _ []*juno.Tx, vals *tmctypes.ResultValidators, + b *tmctypes.ResultBlock, blockResults *tmctypes.ResultBlockResults, _ []*juno.Tx, _ *tmctypes.ResultValidators, ) error { - err := m.updateProposals(b.Block.Height, vals) + + err := m.updateProposalsStatus(b.Block.Height, blockResults.EndBlockEvents) if err != nil { log.Error().Str("module", "gov").Int64("height", b.Block.Height). Err(err).Msg("error while updating proposals") } + return nil } -// updateProposals updates the proposals -func (m *Module) updateProposals(height int64, blockVals *tmctypes.ResultValidators) error { - ids, err := m.db.GetOpenProposalsIds() - if err != nil { - log.Error().Err(err).Str("module", "gov").Msg("error while getting open ids") +// updateProposalsStatus updates the status of proposals if they have been included in the EndBlockEvents +func (m *Module) updateProposalsStatus(height int64, events []abci.Event) error { + if len(events) == 0 { + return nil } + var ids []uint64 + // check if EndBlockEvents contains active_proposal event + eventsList := juno.FindEventsByType(events, govtypes.EventTypeActiveProposal) + if len(eventsList) == 0 { + return nil + } + + for _, event := range eventsList { + // find proposal ID + proposalID, err := juno.FindAttributeByKey(event, govtypes.AttributeKeyProposalID) + if err != nil { + return fmt.Errorf("error while getting proposal ID from block events: %s", err) + } + + // parse proposal ID from []byte to unit64 + id, err := strconv.ParseUint(proposalID.Value, 10, 64) + if err != nil { + return fmt.Errorf("error while parsing proposal id: %s", err) + } + + // add proposal ID to ids array + ids = append(ids, id) + } + + // update status for proposals IDs stored in ids array for _, id := range ids { - err = m.UpdateProposal(height, blockVals, id) + err := m.UpdateProposalStatus(height, id) if err != nil { - return fmt.Errorf("error while updating proposal: %s", err) + return fmt.Errorf("error while updating proposal %d status: %s", id, err) } } + return nil } diff --git a/modules/gov/handle_genesis.go b/modules/gov/handle_genesis.go index a299ee25f..44a1c8d2d 100644 --- a/modules/gov/handle_genesis.go +++ b/modules/gov/handle_genesis.go @@ -4,11 +4,12 @@ import ( "encoding/json" "fmt" - tmtypes "github.com/tendermint/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + gov "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" "github.com/rs/zerolog/log" ) @@ -17,25 +18,20 @@ func (m *Module) HandleGenesis(doc *tmtypes.GenesisDoc, appState map[string]json log.Debug().Str("module", "gov").Msg("parsing genesis") // Read the genesis state - var genState govtypes.GenesisState - err := m.cdc.UnmarshalJSON(appState[govtypes.ModuleName], &genState) + var genStatev1beta1 govtypesv1.GenesisState + err := m.cdc.UnmarshalJSON(appState[gov.ModuleName], &genStatev1beta1) if err != nil { return fmt.Errorf("error while reading gov genesis data: %s", err) } // Save the proposals - err = m.saveProposals(genState.Proposals) + err = m.saveGenesisProposals(genStatev1beta1.Proposals, doc) if err != nil { return fmt.Errorf("error while storing genesis governance proposals: %s", err) } // Save the params - err = m.db.SaveGovParams(types.NewGovParams( - types.NewVotingParams(genState.VotingParams), - types.NewDepositParam(genState.DepositParams), - types.NewTallyParams(genState.TallyParams), - doc.InitialHeight, - )) + err = m.db.SaveGovParams(types.NewGovParams(genStatev1beta1.Params, doc.InitialHeight)) if err != nil { return fmt.Errorf("error while storing genesis governance params: %s", err) } @@ -43,8 +39,8 @@ func (m *Module) HandleGenesis(doc *tmtypes.GenesisDoc, appState map[string]json return nil } -// saveProposals save proposals from genesis file -func (m *Module) saveProposals(slice govtypes.Proposals) error { +// saveGenesisProposals save proposals from genesis file +func (m *Module) saveGenesisProposals(slice govtypesv1.Proposals, genDoc *tmtypes.GenesisDoc) error { proposals := make([]types.Proposal, len(slice)) tallyResults := make([]types.TallyResult, len(slice)) deposits := make([]types.Deposit, len(slice)) @@ -52,32 +48,35 @@ func (m *Module) saveProposals(slice govtypes.Proposals) error { for index, proposal := range slice { // Since it's not possible to get the proposer, set it to nil proposals[index] = types.NewProposal( - proposal.ProposalId, - proposal.ProposalRoute(), - proposal.ProposalType(), - proposal.GetContent(), + proposal.Id, + proposal.Title, + proposal.Summary, + proposal.Metadata, + proposal.Messages, proposal.Status.String(), - proposal.SubmitTime, - proposal.DepositEndTime, + *proposal.SubmitTime, + *proposal.DepositEndTime, proposal.VotingStartTime, proposal.VotingEndTime, "", ) tallyResults[index] = types.NewTallyResult( - proposal.ProposalId, - proposal.FinalTallyResult.Yes.String(), - proposal.FinalTallyResult.Abstain.String(), - proposal.FinalTallyResult.No.String(), - proposal.FinalTallyResult.NoWithVeto.String(), - 1, + proposal.Id, + proposal.FinalTallyResult.YesCount, + proposal.FinalTallyResult.AbstainCount, + proposal.FinalTallyResult.NoCount, + proposal.FinalTallyResult.NoWithVetoCount, + genDoc.InitialHeight, ) deposits[index] = types.NewDeposit( - proposal.ProposalId, + proposal.Id, "", proposal.TotalDeposit, - 1, + genDoc.GenesisTime, + "", + genDoc.InitialHeight, ) } diff --git a/modules/gov/handle_msg.go b/modules/gov/handle_msg.go index 3f2d920bd..1232c8082 100644 --- a/modules/gov/handle_msg.go +++ b/modules/gov/handle_msg.go @@ -2,16 +2,28 @@ package gov import ( "fmt" - "strconv" + "strings" + "time" + + "github.com/cosmos/cosmos-sdk/x/authz" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" + "google.golang.org/grpc/codes" sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - juno "github.com/forbole/juno/v3/types" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + + gov "github.com/cosmos/cosmos-sdk/x/gov/types" + juno "github.com/forbole/juno/v5/types" ) +// HandleMsgExec implements modules.AuthzMessageModule +func (m *Module) HandleMsgExec(index int, _ *authz.MsgExec, _ int, executedMsg sdk.Msg, tx *juno.Tx) error { + return m.HandleMsg(index, executedMsg, tx) +} + // HandleMsg implements modules.MessageModule func (m *Module) HandleMsg(index int, msg sdk.Msg, tx *juno.Tx) error { if len(tx.Logs) == 0 { @@ -19,28 +31,31 @@ func (m *Module) HandleMsg(index int, msg sdk.Msg, tx *juno.Tx) error { } switch cosmosMsg := msg.(type) { - case *govtypes.MsgSubmitProposal: + case *govtypesv1.MsgSubmitProposal: return m.handleMsgSubmitProposal(tx, index, cosmosMsg) - case *govtypes.MsgDeposit: + case *govtypesv1.MsgDeposit: return m.handleMsgDeposit(tx, cosmosMsg) - case *govtypes.MsgVote: + case *govtypesv1.MsgVote: return m.handleMsgVote(tx, cosmosMsg) + + case *govtypesv1.MsgVoteWeighted: + return m.handleMsgVoteWeighted(tx, cosmosMsg) } return nil } -// handleMsgSubmitProposal allows to properly handle a handleMsgSubmitProposal -func (m *Module) handleMsgSubmitProposal(tx *juno.Tx, index int, msg *govtypes.MsgSubmitProposal) error { +// handleMsgSubmitProposal allows to properly handle a MsgSubmitProposal +func (m *Module) handleMsgSubmitProposal(tx *juno.Tx, index int, msg *govtypesv1.MsgSubmitProposal) error { // Get the proposal id - event, err := tx.FindEventByType(index, govtypes.EventTypeSubmitProposal) + event, err := tx.FindEventByType(index, gov.EventTypeSubmitProposal) if err != nil { return fmt.Errorf("error while searching for EventTypeSubmitProposal: %s", err) } - id, err := tx.FindAttributeByKey(event, govtypes.AttributeKeyProposalID) + id, err := tx.FindAttributeByKey(event, gov.AttributeKeyProposalID) if err != nil { return fmt.Errorf("error while searching for AttributeKeyProposalID: %s", err) } @@ -53,53 +68,125 @@ func (m *Module) handleMsgSubmitProposal(tx *juno.Tx, index int, msg *govtypes.M // Get the proposal proposal, err := m.source.Proposal(tx.Height, proposalID) if err != nil { - return fmt.Errorf("error while getting proposal: %s", err) + if strings.Contains(err.Error(), codes.NotFound.String()) { + // query the proposal details using the latest height stored in db + // to fix the rpc error returning code = NotFound desc = proposal x doesn't exist + block, err := m.db.GetLastBlockHeightAndTimestamp() + if err != nil { + return fmt.Errorf("error while getting latest block height: %s", err) + } + proposal, err = m.source.Proposal(block.Height, proposalID) + if err != nil { + return fmt.Errorf("error while getting proposal: %s", err) + } + } else { + return fmt.Errorf("error while getting proposal: %s", err) + } + } + + var addresses []types.Account + for _, msg := range proposal.Messages { + var sdkMsg sdk.Msg + err := m.cdc.UnpackAny(msg, &sdkMsg) + if err != nil { + return fmt.Errorf("error while unpacking proposal message: %s", err) + } + + switch msg := sdkMsg.(type) { + case *distrtypes.MsgCommunityPoolSpend: + addresses = append(addresses, types.NewAccount(msg.Recipient)) + case *govtypesv1.MsgExecLegacyContent: + content, ok := msg.Content.GetCachedValue().(*distrtypes.CommunityPoolSpendProposal) + if ok { + addresses = append(addresses, types.NewAccount(content.Recipient)) + } + } } - // Unpack the content - var content govtypes.Content - err = m.cdc.UnpackAny(proposal.Content, &content) + err = m.db.SaveAccounts(addresses) if err != nil { - return fmt.Errorf("error while unpacking proposal content: %s", err) + return fmt.Errorf("error while storing proposal recipient: %s", err) } // Store the proposal proposalObj := types.NewProposal( - proposal.ProposalId, - proposal.ProposalRoute(), - proposal.ProposalType(), - proposal.GetContent(), + proposal.Id, + proposal.Title, + proposal.Summary, + proposal.Metadata, + msg.Messages, proposal.Status.String(), - proposal.SubmitTime, - proposal.DepositEndTime, + *proposal.SubmitTime, + *proposal.DepositEndTime, proposal.VotingStartTime, proposal.VotingEndTime, msg.Proposer, ) + err = m.db.SaveProposals([]types.Proposal{proposalObj}) if err != nil { return err } + txTimestamp, err := time.Parse(time.RFC3339, tx.Timestamp) + if err != nil { + return fmt.Errorf("error while parsing time: %s", err) + } + // Store the deposit - deposit := types.NewDeposit(proposal.ProposalId, msg.Proposer, msg.InitialDeposit, tx.Height) + deposit := types.NewDeposit(proposal.Id, msg.Proposer, msg.InitialDeposit, txTimestamp, tx.TxHash, tx.Height) return m.db.SaveDeposits([]types.Deposit{deposit}) } -// handleMsgDeposit allows to properly handle a handleMsgDeposit -func (m *Module) handleMsgDeposit(tx *juno.Tx, msg *govtypes.MsgDeposit) error { +// handleMsgDeposit allows to properly handle a MsgDeposit +func (m *Module) handleMsgDeposit(tx *juno.Tx, msg *govtypesv1.MsgDeposit) error { deposit, err := m.source.ProposalDeposit(tx.Height, msg.ProposalId, msg.Depositor) if err != nil { return fmt.Errorf("error while getting proposal deposit: %s", err) } + txTimestamp, err := time.Parse(time.RFC3339, tx.Timestamp) + if err != nil { + return fmt.Errorf("error while parsing time: %s", err) + } return m.db.SaveDeposits([]types.Deposit{ - types.NewDeposit(msg.ProposalId, msg.Depositor, deposit.Amount, tx.Height), + types.NewDeposit(msg.ProposalId, msg.Depositor, deposit.Amount, txTimestamp, tx.TxHash, tx.Height), }) } -// handleMsgVote allows to properly handle a handleMsgVote -func (m *Module) handleMsgVote(tx *juno.Tx, msg *govtypes.MsgVote) error { - vote := types.NewVote(msg.ProposalId, msg.Voter, msg.Option, tx.Height) - return m.db.SaveVote(vote) +// handleMsgVote allows to properly handle a MsgVote +func (m *Module) handleMsgVote(tx *juno.Tx, msg *govtypesv1.MsgVote) error { + txTimestamp, err := time.Parse(time.RFC3339, tx.Timestamp) + if err != nil { + return fmt.Errorf("error while parsing time: %s", err) + } + + vote := types.NewVote(msg.ProposalId, msg.Voter, msg.Option, "1.0", txTimestamp, tx.Height) + + err = m.db.SaveVote(vote) + if err != nil { + return fmt.Errorf("error while saving vote: %s", err) + } + + // update tally result for given proposal + return m.UpdateProposalTallyResult(msg.ProposalId, tx.Height) +} + +// handleMsgVoteWeighted allows to properly handle a MsgVoteWeighted +func (m *Module) handleMsgVoteWeighted(tx *juno.Tx, msg *govtypesv1.MsgVoteWeighted) error { + txTimestamp, err := time.Parse(time.RFC3339, tx.Timestamp) + if err != nil { + return fmt.Errorf("error while parsing time: %s", err) + } + + for _, option := range msg.Options { + vote := types.NewVote(msg.ProposalId, msg.Voter, option.Option, option.Weight, txTimestamp, tx.Height) + err = m.db.SaveVote(vote) + if err != nil { + return fmt.Errorf("error while saving weighted vote for address %s: %s", msg.Voter, err) + } + } + + // update tally result for given proposal + return m.UpdateProposalTallyResult(msg.ProposalId, tx.Height) } diff --git a/modules/gov/handle_periodic_operations.go b/modules/gov/handle_periodic_operations.go new file mode 100644 index 000000000..874d3ba42 --- /dev/null +++ b/modules/gov/handle_periodic_operations.go @@ -0,0 +1,32 @@ +package gov + +import ( + "fmt" + + "github.com/go-co-op/gocron" + "github.com/rs/zerolog/log" + + "github.com/forbole/bdjuno/v4/modules/utils" +) + +// RegisterPeriodicOperations implements modules.PeriodicOperationsModule +func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { + log.Debug().Str("module", "gov").Msg("setting up periodic tasks") + + // refresh proposal staking pool snapshots every 5 mins + // (set the same interval as staking pool periodic ops) + if _, err := scheduler.Every(5).Minutes().Do(func() { + utils.WatchMethod(m.UpdateProposalsStakingPoolSnapshot) + }); err != nil { + return fmt.Errorf("error while setting up gov period operations: %s", err) + } + + // refresh proposal tally results every 5 mins + if _, err := scheduler.Every(5).Minutes().Do(func() { + utils.WatchMethod(m.UpdateProposalsTallyResults) + }); err != nil { + return fmt.Errorf("error while setting up gov period operations: %s", err) + } + + return nil +} diff --git a/modules/gov/module.go b/modules/gov/module.go index 2023a39f8..adea0bab1 100644 --- a/modules/gov/module.go +++ b/modules/gov/module.go @@ -3,11 +3,11 @@ package gov import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" + "github.com/forbole/bdjuno/v4/database" - govsource "github.com/forbole/bdjuno/v3/modules/gov/source" + govsource "github.com/forbole/bdjuno/v4/modules/gov/source" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" ) var ( @@ -19,14 +19,13 @@ var ( // Module represent x/gov module type Module struct { - cdc codec.Codec - db *database.Db - source govsource.Source - authModule AuthModule - distrModule DistrModule - mintModule MintModule - slashingModule SlashingModule - stakingModule StakingModule + cdc codec.Codec + db *database.Db + source govsource.Source + distrModule DistrModule + mintModule MintModule + slashingModule SlashingModule + stakingModule StakingModule feeModelModule FeeModelModule customParamsModule CustomParamsModule assetFTModule AssetFTModule @@ -36,7 +35,6 @@ type Module struct { // NewModule returns a new Module instance func NewModule( source govsource.Source, - authModule AuthModule, distrModule DistrModule, mintModule MintModule, slashingModule SlashingModule, @@ -49,18 +47,17 @@ func NewModule( db *database.Db, ) *Module { return &Module{ - cdc: cdc, - source: source, - authModule: authModule, - distrModule: distrModule, - mintModule: mintModule, - slashingModule: slashingModule, - stakingModule: stakingModule, + cdc: cdc, + source: source, + distrModule: distrModule, + mintModule: mintModule, + slashingModule: slashingModule, + stakingModule: stakingModule, feeModelModule: feeModelModule, customParamsModule: customParamsModule, assetFTModule: assetFTModule, assetNFTModule: assetNFTModule, - db: db, + db: db, } } diff --git a/modules/gov/source/local/source.go b/modules/gov/source/local/source.go index 4964923a6..cf04babba 100644 --- a/modules/gov/source/local/source.go +++ b/modules/gov/source/local/source.go @@ -4,10 +4,10 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/forbole/juno/v3/node/local" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + "github.com/forbole/juno/v5/node/local" - govsource "github.com/forbole/bdjuno/v3/modules/gov/source" + govsource "github.com/forbole/bdjuno/v4/modules/gov/source" ) var ( @@ -17,103 +17,73 @@ var ( // Source implements govsource.Source by using a local node type Source struct { *local.Source - q govtypes.QueryServer + queryClient govtypesv1.QueryServer } // NewSource returns a new Source instance -func NewSource(source *local.Source, govKeeper govtypes.QueryServer) *Source { +func NewSource(source *local.Source, govKeeper govtypesv1.QueryServer) *Source { return &Source{ - Source: source, - q: govKeeper, + Source: source, + queryClient: govKeeper, } } // Proposal implements govsource.Source -func (s Source) Proposal(height int64, id uint64) (govtypes.Proposal, error) { +func (s Source) Proposal(height int64, id uint64) (*govtypesv1.Proposal, error) { ctx, err := s.LoadHeight(height) if err != nil { - return govtypes.Proposal{}, fmt.Errorf("error while loading height: %s", err) + return nil, fmt.Errorf("error while loading height: %s", err) } - res, err := s.q.Proposal(sdk.WrapSDKContext(ctx), &govtypes.QueryProposalRequest{ProposalId: id}) + res, err := s.queryClient.Proposal(sdk.WrapSDKContext(ctx), &govtypesv1.QueryProposalRequest{ProposalId: id}) if err != nil { - return govtypes.Proposal{}, err + return nil, err } return res.Proposal, nil } // ProposalDeposit implements govsource.Source -func (s Source) ProposalDeposit(height int64, id uint64, depositor string) (govtypes.Deposit, error) { +func (s Source) ProposalDeposit(height int64, id uint64, depositor string) (*govtypesv1.Deposit, error) { ctx, err := s.LoadHeight(height) if err != nil { - return govtypes.Deposit{}, fmt.Errorf("error while loading height: %s", err) + return nil, fmt.Errorf("error while loading height: %s", err) } - res, err := s.q.Deposit(sdk.WrapSDKContext(ctx), &govtypes.QueryDepositRequest{ProposalId: id, Depositor: depositor}) + res, err := s.queryClient.Deposit(sdk.WrapSDKContext(ctx), &govtypesv1.QueryDepositRequest{ProposalId: id, Depositor: depositor}) if err != nil { - return govtypes.Deposit{}, err + return nil, err } return res.Deposit, nil } // TallyResult implements govsource.Source -func (s Source) TallyResult(height int64, proposalID uint64) (govtypes.TallyResult, error) { +func (s Source) TallyResult(height int64, proposalID uint64) (*govtypesv1.TallyResult, error) { ctx, err := s.LoadHeight(height) if err != nil { - return govtypes.TallyResult{}, fmt.Errorf("error while loading height: %s", err) + return nil, fmt.Errorf("error while loading height: %s", err) } - res, err := s.q.TallyResult(sdk.WrapSDKContext(ctx), &govtypes.QueryTallyResultRequest{ProposalId: proposalID}) + res, err := s.queryClient.TallyResult(sdk.WrapSDKContext(ctx), &govtypesv1.QueryTallyResultRequest{ProposalId: proposalID}) if err != nil { - return govtypes.TallyResult{}, err + return nil, err } return res.Tally, nil } -// DepositParams implements govsource.Source -func (s Source) DepositParams(height int64) (govtypes.DepositParams, error) { +// Params implements govsource.Source +func (s Source) Params(height int64) (*govtypesv1.Params, error) { ctx, err := s.LoadHeight(height) if err != nil { - return govtypes.DepositParams{}, fmt.Errorf("error while loading height: %s", err) + return nil, fmt.Errorf("error while loading height: %s", err) } - res, err := s.q.Params(sdk.WrapSDKContext(ctx), &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamDeposit}) + res, err := s.queryClient.Params(sdk.WrapSDKContext(ctx), &govtypesv1.QueryParamsRequest{ParamsType: govtypesv1.ParamDeposit}) if err != nil { - return govtypes.DepositParams{}, err + return nil, err } - return res.DepositParams, nil -} - -// VotingParams implements govsource.Source -func (s Source) VotingParams(height int64) (govtypes.VotingParams, error) { - ctx, err := s.LoadHeight(height) - if err != nil { - return govtypes.VotingParams{}, fmt.Errorf("error while loading height: %s", err) - } - - res, err := s.q.Params(sdk.WrapSDKContext(ctx), &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamVoting}) - if err != nil { - return govtypes.VotingParams{}, err - } - - return res.VotingParams, nil -} - -// TallyParams implements govsource.Source -func (s Source) TallyParams(height int64) (govtypes.TallyParams, error) { - ctx, err := s.LoadHeight(height) - if err != nil { - return govtypes.TallyParams{}, fmt.Errorf("error while loading height: %s", err) - } - - res, err := s.q.Params(sdk.WrapSDKContext(ctx), &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamTallying}) - if err != nil { - return govtypes.TallyParams{}, err - } - - return res.TallyParams, nil + return res.Params, nil } diff --git a/modules/gov/source/remote/source.go b/modules/gov/source/remote/source.go index e943ac20a..17b836b5f 100644 --- a/modules/gov/source/remote/source.go +++ b/modules/gov/source/remote/source.go @@ -1,10 +1,10 @@ package remote import ( - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/forbole/juno/v3/node/remote" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + "github.com/forbole/juno/v5/node/remote" - govsource "github.com/forbole/bdjuno/v3/modules/gov/source" + govsource "github.com/forbole/bdjuno/v4/modules/gov/source" ) var ( @@ -14,91 +14,65 @@ var ( // Source implements govsource.Source using a remote node type Source struct { *remote.Source - govClient govtypes.QueryClient + queryClient govtypesv1.QueryClient } // NewSource returns a new Source implementation -func NewSource(source *remote.Source, govClient govtypes.QueryClient) *Source { +func NewSource(source *remote.Source, queryClient govtypesv1.QueryClient) *Source { return &Source{ - Source: source, - govClient: govClient, + Source: source, + queryClient: queryClient, } } // Proposal implements govsource.Source -func (s Source) Proposal(height int64, id uint64) (govtypes.Proposal, error) { - res, err := s.govClient.Proposal( +func (s Source) Proposal(height int64, id uint64) (*govtypesv1.Proposal, error) { + res, err := s.queryClient.Proposal( remote.GetHeightRequestContext(s.Ctx, height), - &govtypes.QueryProposalRequest{ProposalId: id}, + &govtypesv1.QueryProposalRequest{ProposalId: id}, ) if err != nil { - return govtypes.Proposal{}, err + return nil, err } return res.Proposal, err } // ProposalDeposit implements govsource.Source -func (s Source) ProposalDeposit(height int64, id uint64, depositor string) (govtypes.Deposit, error) { - res, err := s.govClient.Deposit( +func (s Source) ProposalDeposit(height int64, id uint64, depositor string) (*govtypesv1.Deposit, error) { + res, err := s.queryClient.Deposit( remote.GetHeightRequestContext(s.Ctx, height), - &govtypes.QueryDepositRequest{ProposalId: id, Depositor: depositor}, + &govtypesv1.QueryDepositRequest{ProposalId: id, Depositor: depositor}, ) if err != nil { - return govtypes.Deposit{}, err + return nil, err } return res.Deposit, nil } // TallyResult implements govsource.Source -func (s Source) TallyResult(height int64, proposalID uint64) (govtypes.TallyResult, error) { - res, err := s.govClient.TallyResult( +func (s Source) TallyResult(height int64, proposalID uint64) (*govtypesv1.TallyResult, error) { + res, err := s.queryClient.TallyResult( remote.GetHeightRequestContext(s.Ctx, height), - &govtypes.QueryTallyResultRequest{ProposalId: proposalID}, + &govtypesv1.QueryTallyResultRequest{ProposalId: proposalID}, ) if err != nil { - return govtypes.TallyResult{}, err + return nil, err } return res.Tally, nil } -// DepositParams implements govsource.Source -func (s Source) DepositParams(height int64) (govtypes.DepositParams, error) { - res, err := s.govClient.Params( +// Params implements govsource.Source +func (s Source) Params(height int64) (*govtypesv1.Params, error) { + res, err := s.queryClient.Params( remote.GetHeightRequestContext(s.Ctx, height), - &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamDeposit}, + &govtypesv1.QueryParamsRequest{ParamsType: govtypesv1.ParamDeposit}, ) if err != nil { - return govtypes.DepositParams{}, err + return nil, err } - return res.DepositParams, nil -} - -// VotingParams implements govsource.Source -func (s Source) VotingParams(height int64) (govtypes.VotingParams, error) { - res, err := s.govClient.Params( - remote.GetHeightRequestContext(s.Ctx, height), - &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamVoting}, - ) - if err != nil { - return govtypes.VotingParams{}, err - } - - return res.VotingParams, nil -} - -// TallyParams implements govsource.Source -func (s Source) TallyParams(height int64) (govtypes.TallyParams, error) { - res, err := s.govClient.Params( - remote.GetHeightRequestContext(s.Ctx, height), - &govtypes.QueryParamsRequest{ParamsType: govtypes.ParamTallying}, - ) - if err != nil { - return govtypes.TallyParams{}, err - } - - return res.TallyParams, nil + return res.Params, nil } diff --git a/modules/gov/source/source.go b/modules/gov/source/source.go index 3acdea56e..b499e6d32 100644 --- a/modules/gov/source/source.go +++ b/modules/gov/source/source.go @@ -1,12 +1,12 @@ package source -import govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" +import ( + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" +) type Source interface { - Proposal(height int64, id uint64) (govtypes.Proposal, error) - ProposalDeposit(height int64, id uint64, depositor string) (govtypes.Deposit, error) - TallyResult(height int64, proposalID uint64) (govtypes.TallyResult, error) - DepositParams(height int64) (govtypes.DepositParams, error) - VotingParams(height int64) (govtypes.VotingParams, error) - TallyParams(height int64) (govtypes.TallyParams, error) + Proposal(height int64, id uint64) (*govtypesv1.Proposal, error) + ProposalDeposit(height int64, id uint64, depositor string) (*govtypesv1.Deposit, error) + TallyResult(height int64, proposalID uint64) (*govtypesv1.TallyResult, error) + Params(height int64) (*govtypesv1.Params, error) } diff --git a/modules/gov/utils_params.go b/modules/gov/utils_params.go index 4ef633857..03422b61f 100644 --- a/modules/gov/utils_params.go +++ b/modules/gov/utils_params.go @@ -5,7 +5,7 @@ import ( "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // UpdateParams updates the governance parameters for the given height @@ -13,25 +13,10 @@ func (m *Module) UpdateParams(height int64) error { log.Debug().Str("module", "gov").Int64("height", height). Msg("updating params") - depositParams, err := m.source.DepositParams(height) + params, err := m.source.Params(height) if err != nil { - return fmt.Errorf("error while getting gov deposit params: %s", err) + return fmt.Errorf("error while getting gov params: %s", err) } - votingParams, err := m.source.VotingParams(height) - if err != nil { - return fmt.Errorf("error while getting gov voting params: %s", err) - } - - tallyParams, err := m.source.TallyParams(height) - if err != nil { - return fmt.Errorf("error while getting gov tally params: %s", err) - } - - return m.db.SaveGovParams(types.NewGovParams( - types.NewVotingParams(votingParams), - types.NewDepositParam(depositParams), - types.NewTallyParams(tallyParams), - height, - )) + return m.db.SaveGovParams(types.NewGovParams(params, height)) } diff --git a/modules/gov/utils_proposal.go b/modules/gov/utils_proposal.go index 4b838569d..422cc5864 100644 --- a/modules/gov/utils_proposal.go +++ b/modules/gov/utils_proposal.go @@ -4,30 +4,39 @@ import ( "fmt" "strings" - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" - customparamstypes "github.com/CoreumFoundation/coreum/v2/x/customparams/types" - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + "github.com/rs/zerolog/log" + + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" + customparamstypes "github.com/CoreumFoundation/coreum/v3/x/customparams/types" + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" + + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" proposaltypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "google.golang.org/grpc/codes" - "github.com/forbole/bdjuno/v3/types" - - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + "github.com/forbole/bdjuno/v4/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + gov "github.com/cosmos/cosmos-sdk/x/gov/types" ) -func (m *Module) UpdateProposal(height int64, blockVals *tmctypes.ResultValidators, id uint64) error { +// UpdateProposalStatus queries the latest details of given proposal ID, updates it's status +// in database and handles changes if the proposal has been passed. +func (m *Module) UpdateProposalStatus(height int64, id uint64) error { // Get the proposal proposal, err := m.source.Proposal(height, id) if err != nil { - if strings.Contains(err.Error(), codes.NotFound.String()) { + // Check if proposal exist on the chain + if strings.Contains(err.Error(), codes.NotFound.String()) && strings.Contains(err.Error(), "doesn't exist") { // Handle case when a proposal is deleted from the chain (did not pass deposit period) return m.updateDeletedProposalStatus(id) } @@ -35,39 +44,68 @@ func (m *Module) UpdateProposal(height int64, blockVals *tmctypes.ResultValidato return fmt.Errorf("error while getting proposal: %s", err) } - err = m.handleParamChangeProposal(height, proposal) - if err != nil { - return fmt.Errorf("error while updating params from ParamChangeProposal: %s", err) - } - err = m.updateProposalStatus(proposal) if err != nil { return fmt.Errorf("error while updating proposal status: %s", err) } - err = m.updateProposalTallyResult(proposal) + err = m.handlePassedProposal(proposal, height) if err != nil { - return fmt.Errorf("error while updating proposal tally result: %s", err) + return fmt.Errorf("error while handling passed proposals: %s", err) } - err = m.updateAccounts(proposal) + return nil +} + +// updateProposalStatus updates given proposal status +func (m *Module) updateProposalStatus(proposal *govtypesv1.Proposal) error { + return m.db.UpdateProposal( + types.NewProposalUpdate( + proposal.Id, + proposal.Status.String(), + proposal.VotingStartTime, + proposal.VotingEndTime, + ), + ) +} + +// UpdateProposalsStakingPoolSnapshot updates +// staking pool snapshots for active proposals +func (m *Module) UpdateProposalsStakingPoolSnapshot() error { + log.Debug().Str("module", "gov").Msg("refreshing proposal staking pool snapshots") + block, err := m.db.GetLastBlockHeightAndTimestamp() if err != nil { - return fmt.Errorf("error while updating account: %s", err) + return err } - err = m.updateProposalStakingPoolSnapshot(height, id) + ids, err := m.db.GetOpenProposalsIds(block.BlockTimestamp) if err != nil { - return fmt.Errorf("error while updating proposal staking pool snapshot: %s", err) + log.Error().Err(err).Str("module", "gov").Msg("error while getting open proposals ids") } - err = m.updateProposalValidatorStatusesSnapshot(height, id, blockVals) - if err != nil { - return fmt.Errorf("error while updating proposal validator statuses snapshot: %s", err) + for _, proposalID := range ids { + err = m.UpdateProposalStakingPoolSnapshot(block.Height, proposalID) + if err != nil { + return fmt.Errorf("error while updating proposal %d staking pool snapshots: %s", proposalID, err) + } } return nil } +// UpdateProposalStakingPoolSnapshot updates the staking pool snapshot associated with the gov +// proposal having the provided id +func (m *Module) UpdateProposalStakingPoolSnapshot(height int64, proposalID uint64) error { + pool, err := m.stakingModule.GetStakingPoolSnapshot(height) + if err != nil { + return fmt.Errorf("error while getting staking pool: %s", err) + } + + return m.db.SaveProposalStakingPoolSnapshot( + types.NewProposalStakingPoolSnapshot(proposalID, pool), + ) +} + // updateDeletedProposalStatus updates the proposal having the given id by setting its status // to the one that represents a deleted proposal func (m *Module) updateDeletedProposalStatus(id uint64) error { @@ -78,7 +116,7 @@ func (m *Module) updateDeletedProposalStatus(id uint64) error { return m.db.UpdateProposal( types.NewProposalUpdate( - stored.ProposalID, + stored.ID, types.ProposalStatusInvalid, stored.VotingStartTime, stored.VotingEndTime, @@ -87,209 +125,220 @@ func (m *Module) updateDeletedProposalStatus(id uint64) error { } // handleParamChangeProposal updates params to the corresponding modules if a ParamChangeProposal has passed -func (m *Module) handleParamChangeProposal(height int64, proposal govtypes.Proposal) error { - if proposal.Status.String() != types.ProposalStatusPassed { - // If the status of ParamChangeProposal is not passed, do nothing - return nil +func (m *Module) handleParamChangeProposal(height int64, moduleName string) (err error) { + switch moduleName { + case distrtypes.ModuleName: + err = m.distrModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", distrtypes.ModuleName, err) + } + case gov.ModuleName: + err = m.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", gov.ModuleName, err) + } + case minttypes.ModuleName: + err = m.mintModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", minttypes.ModuleName, err) + } + + // Update the inflation + err = m.mintModule.UpdateInflation() + if err != nil { + return fmt.Errorf("error while updating inflation with ParamChangeProposal: %s", err) + } + case slashingtypes.ModuleName: + err = m.slashingModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", slashingtypes.ModuleName, err) + } + case stakingtypes.ModuleName: + err = m.stakingModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", stakingtypes.ModuleName, err) + } + case feemodeltypes.ModuleName: + err = m.feeModelModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", feemodeltypes.ModuleName, err) + } + case customparamstypes.CustomParamsStaking: + err = m.customParamsModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", customparamstypes.ModuleName, err) + } + case assetfttypes.ModuleName: + err = m.assetFTModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", assetfttypes.ModuleName, err) + } + case assetnfttypes.ModuleName: + err = m.assetNFTModule.UpdateParams(height) + if err != nil { + return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", assetnfttypes.ModuleName, err) + } } - var content govtypes.Content - err := m.db.EncodingConfig.Marshaler.UnpackAny(proposal.Content, &content) + return nil +} + +// UpdateProposalsTallyResults updates the tally for active proposals +func (m *Module) UpdateProposalsTallyResults() error { + log.Debug().Str("module", "gov").Msg("refreshing proposal tally results") + block, err := m.db.GetLastBlockHeightAndTimestamp() if err != nil { - return fmt.Errorf("error while handling ParamChangeProposal: %s", err) + return err } - paramChangeProposal, ok := content.(*proposaltypes.ParameterChangeProposal) - if !ok { - return nil + ids, err := m.db.GetOpenProposalsIds(block.BlockTimestamp) + if err != nil { + log.Error().Err(err).Str("module", "gov").Msg("error while getting open proposals ids") } - for _, change := range paramChangeProposal.Changes { - // Update the params for corresponding modules - switch change.Subspace { - case distrtypes.ModuleName: - err = m.distrModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", distrtypes.ModuleName, err) - } - case govtypes.ModuleName: - err = m.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", govtypes.ModuleName, err) - } - case minttypes.ModuleName: - err = m.mintModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", minttypes.ModuleName, err) - } - case slashingtypes.ModuleName: - err = m.slashingModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", slashingtypes.ModuleName, err) - } - case stakingtypes.ModuleName: - err = m.stakingModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", stakingtypes.ModuleName, err) - } - case feemodeltypes.ModuleName: - err = m.feeModelModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", feemodeltypes.ModuleName, err) - } - case customparamstypes.CustomParamsStaking: - err = m.customParamsModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", customparamstypes.ModuleName, err) - } - case assetfttypes.ModuleName: - err = m.assetFTModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", assetfttypes.ModuleName, err) - } - case assetnfttypes.ModuleName: - err = m.assetNFTModule.UpdateParams(height) - if err != nil { - return fmt.Errorf("error while updating ParamChangeProposal %s params : %s", assetnfttypes.ModuleName, err) - } + + for _, proposalID := range ids { + err = m.UpdateProposalTallyResult(proposalID, block.Height) + if err != nil { + return fmt.Errorf("error while updating proposal %d tally result : %s", proposalID, err) } } - return nil -} -// updateProposalStatus updates the given proposal status -func (m *Module) updateProposalStatus(proposal govtypes.Proposal) error { - return m.db.UpdateProposal( - types.NewProposalUpdate( - proposal.ProposalId, - proposal.Status.String(), - proposal.VotingStartTime, - proposal.VotingEndTime, - ), - ) + return nil } -// updateProposalTallyResult updates the tally result associated with the given proposal -func (m *Module) updateProposalTallyResult(proposal govtypes.Proposal) error { - height, err := m.db.GetLastBlockHeight() - if err != nil { - return err - } - - result, err := m.source.TallyResult(height, proposal.ProposalId) +// UpdateProposalTallyResult updates the tally result associated with the given proposal ID +func (m *Module) UpdateProposalTallyResult(proposalID uint64, height int64) error { + result, err := m.source.TallyResult(height, proposalID) if err != nil { return fmt.Errorf("error while getting tally result: %s", err) } return m.db.SaveTallyResults([]types.TallyResult{ types.NewTallyResult( - proposal.ProposalId, - result.Yes.String(), - result.Abstain.String(), - result.No.String(), - result.NoWithVeto.String(), + proposalID, + result.YesCount, + result.AbstainCount, + result.NoCount, + result.NoWithVetoCount, height, ), }) } -// updateAccounts updates any account that might be involved in the proposal (eg. fund community recipient) -func (m *Module) updateAccounts(proposal govtypes.Proposal) error { - content, ok := proposal.Content.GetCachedValue().(*distrtypes.CommunityPoolSpendProposal) - if ok { - height, err := m.db.GetLastBlockHeight() - if err != nil { - return fmt.Errorf("error while getting last block height: %s", err) - } - - addresses := []string{content.Recipient} +func (m *Module) handlePassedProposal(proposal *govtypesv1.Proposal, height int64) error { + if proposal.Status != govtypesv1.StatusPassed { + // If proposal status is not passed, do nothing + return nil + } - err = m.authModule.RefreshAccounts(height, addresses) + for _, msg := range proposal.Messages { + var sdkMsg sdk.Msg + err := m.cdc.UnpackAny(msg, &sdkMsg) if err != nil { - return err + return fmt.Errorf("error while unpacking proposal message: %s", err) } - return nil - } - return nil -} + switch msg := sdkMsg.(type) { + case *govtypesv1.MsgExecLegacyContent: + err := m.handlePassedV1Beta1Proposal(proposal, msg, height) + if err != nil { + return err + } -// updateProposalStakingPoolSnapshot updates the staking pool snapshot associated with the gov -// proposal having the provided id -func (m *Module) updateProposalStakingPoolSnapshot(height int64, proposalID uint64) error { - pool, err := m.stakingModule.GetStakingPool(height) - if err != nil { - return fmt.Errorf("error while getting staking pool: %s", err) + default: + err := m.handlePassedV1Proposal(proposal, msg, height) + if err != nil { + return err + } + } } - return m.db.SaveProposalStakingPoolSnapshot( - types.NewProposalStakingPoolSnapshot(proposalID, pool), - ) + return nil } -// updateProposalValidatorStatusesSnapshot updates the snapshots of the various validators for -// the proposal having the given id -func (m *Module) updateProposalValidatorStatusesSnapshot( - height int64, proposalID uint64, blockVals *tmctypes.ResultValidators, -) error { - validators, _, err := m.stakingModule.GetValidatorsWithStatus(height, stakingtypes.Bonded.String()) - if err != nil { - return fmt.Errorf("error while getting validators with bonded status: %s", err) - } - - votingPowers, err := m.stakingModule.GetValidatorsVotingPowers(height, blockVals) - if err != nil { - return fmt.Errorf("error while getting validators voting powers: %s", err) - } - - statuses, err := m.stakingModule.GetValidatorsStatuses(height, validators) - if err != nil { - return fmt.Errorf("error while getting validator statuses: %s", err) - } - - var snapshots = make([]types.ProposalValidatorStatusSnapshot, len(validators)) - for index, validator := range validators { - consAddr, err := validator.GetConsAddr() +// handlePassedV1Proposal handles a passed proposal that contains a v1 message (new version) +func (m *Module) handlePassedV1Proposal(proposal *govtypesv1.Proposal, msg sdk.Msg, height int64) error { + switch msg := msg.(type) { + case *upgradetypes.MsgSoftwareUpgrade: + // Store software upgrade plan while SoftwareUpgradeProposal passed + err := m.db.SaveSoftwareUpgradePlan(proposal.Id, msg.Plan, height) if err != nil { - return err + return fmt.Errorf("error while storing software upgrade plan: %s", err) } - status, err := findStatus(consAddr.String(), statuses) + case *upgradetypes.MsgCancelUpgrade: + // Delete software upgrade plan while CancelSoftwareUpgradeProposal passed + err := m.db.DeleteSoftwareUpgradePlan(proposal.Id) if err != nil { - return fmt.Errorf("error while searching for status: %s", err) + return fmt.Errorf("error while deleting software upgrade plan: %s", err) } - votingPower, err := findVotingPower(consAddr.String(), votingPowers) - if err != nil { - return fmt.Errorf("error while searching for voting power: %s", err) + default: + // Try to see if it's a param change proposal. This should be handled as last case + // because it's the most generic one + subspace, ok := getParamChangeSubspace(msg) + if ok { + err := m.handleParamChangeProposal(height, subspace) + if err != nil { + return err + } } - - snapshots[index] = types.NewProposalValidatorStatusSnapshot( - proposalID, - consAddr.String(), - votingPower.VotingPower, - status.Status, - status.Jailed, - height, - ) } - return m.db.SaveProposalValidatorsStatusesSnapshots(snapshots) + return nil } -func findVotingPower(consAddr string, powers []types.ValidatorVotingPower) (types.ValidatorVotingPower, error) { - for _, votingPower := range powers { - if votingPower.ConsensusAddress == consAddr { - return votingPower, nil - } +// getParamChangeSubspace returns the subspace of the param change proposal, if any. +// If the message is not a param change proposal, it returns false +func getParamChangeSubspace(msg sdk.Msg) (string, bool) { + switch msg.(type) { + case *distrtypes.MsgUpdateParams: + return distrtypes.ModuleName, true + case *govtypesv1.MsgUpdateParams: + return gov.ModuleName, true + case *minttypes.MsgUpdateParams: + return minttypes.ModuleName, true + case *slashingtypes.MsgUpdateParams: + return slashingtypes.ModuleName, true + case *stakingtypes.MsgUpdateParams: + return stakingtypes.ModuleName, true + + default: + return "", false } - return types.ValidatorVotingPower{}, fmt.Errorf("voting power not found for validator with consensus address %s", consAddr) } -func findStatus(consAddr string, statuses []types.ValidatorStatus) (types.ValidatorStatus, error) { - for _, status := range statuses { - if status.ConsensusAddress == consAddr { - return status, nil +// handlePassedV1Beta1Proposal handles a passed proposal with a v1beta1 message (legacy) +func (m *Module) handlePassedV1Beta1Proposal(proposal *govtypesv1.Proposal, msg *govtypesv1.MsgExecLegacyContent, height int64) error { + // Unpack proposal + var content govtypesv1beta1.Content + var protoCodec codec.ProtoCodec + err := protoCodec.UnpackAny(msg.Content, &content) + if err != nil { + return fmt.Errorf("error while handling ParamChangeProposal: %s", err) + } + + switch p := content.(type) { + case *proposaltypes.ParameterChangeProposal: + // Update params while ParameterChangeProposal passed + for _, change := range p.Changes { + err = m.handleParamChangeProposal(height, change.Subspace) + if err != nil { + return fmt.Errorf("error while updating params from ParamChangeProposal: %s", err) + } + } + case *upgradetypes.SoftwareUpgradeProposal: + // Store software upgrade plan while SoftwareUpgradeProposal passed + err = m.db.SaveSoftwareUpgradePlan(proposal.Id, p.Plan, height) + if err != nil { + return fmt.Errorf("error while storing software upgrade plan: %s", err) + } + case *upgradetypes.CancelSoftwareUpgradeProposal: + // Delete software upgrade plan while CancelSoftwareUpgradeProposal passed + err = m.db.DeleteSoftwareUpgradePlan(proposal.Id) + if err != nil { + return fmt.Errorf("error while deleting software upgrade plan: %s", err) } } - return types.ValidatorStatus{}, fmt.Errorf("cannot find status for validator with consensus address %s", consAddr) + return nil } diff --git a/modules/mint/handle_genesis.go b/modules/mint/handle_genesis.go index 67d54f6f6..a48c55ee1 100644 --- a/modules/mint/handle_genesis.go +++ b/modules/mint/handle_genesis.go @@ -4,9 +4,9 @@ import ( "encoding/json" "fmt" - tmtypes "github.com/tendermint/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/rs/zerolog/log" diff --git a/modules/mint/handle_periodic_operations.go b/modules/mint/handle_periodic_operations.go index c6f51555a..0a926f8bf 100644 --- a/modules/mint/handle_periodic_operations.go +++ b/modules/mint/handle_periodic_operations.go @@ -1,7 +1,7 @@ package mint import ( - "github.com/forbole/bdjuno/v3/modules/utils" + "github.com/forbole/bdjuno/v4/modules/utils" "github.com/go-co-op/gocron" "github.com/rs/zerolog/log" @@ -12,8 +12,8 @@ func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { log.Debug().Str("module", "mint").Msg("setting up periodic tasks") // Setup a cron job to run every midnight - if _, err := scheduler.Every(1).Hour().Do(func() { - utils.WatchMethod(m.updateInflation) + if _, err := scheduler.Every(1).Day().At("00:00").Do(func() { + utils.WatchMethod(m.UpdateInflation) }); err != nil { return err } @@ -23,22 +23,22 @@ func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { // updateInflation fetches from the REST APIs the latest value for the // inflation, and saves it inside the database. -func (m *Module) updateInflation() error { +func (m *Module) UpdateInflation() error { log.Debug(). Str("module", "mint"). Str("operation", "inflation"). Msg("getting inflation data") - height, err := m.db.GetLastBlockHeight() + block, err := m.db.GetLastBlockHeightAndTimestamp() if err != nil { return err } // Get the inflation - inflation, err := m.source.GetInflation(height) + inflation, err := m.source.GetInflation(block.Height) if err != nil { return err } - return m.db.SaveInflation(inflation, height) + return m.db.SaveInflation(inflation, block.Height) } diff --git a/modules/mint/module.go b/modules/mint/module.go index e0b7fb834..1462dde5b 100644 --- a/modules/mint/module.go +++ b/modules/mint/module.go @@ -2,10 +2,10 @@ package mint import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" - "github.com/forbole/bdjuno/v3/database" - mintsource "github.com/forbole/bdjuno/v3/modules/mint/source" + "github.com/forbole/bdjuno/v4/database" + mintsource "github.com/forbole/bdjuno/v4/modules/mint/source" ) var ( diff --git a/modules/mint/source/local/source.go b/modules/mint/source/local/source.go index 7b997d02c..b9ec18f79 100644 --- a/modules/mint/source/local/source.go +++ b/modules/mint/source/local/source.go @@ -5,9 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - "github.com/forbole/juno/v3/node/local" + "github.com/forbole/juno/v5/node/local" - mintsource "github.com/forbole/bdjuno/v3/modules/mint/source" + mintsource "github.com/forbole/bdjuno/v4/modules/mint/source" ) var ( diff --git a/modules/mint/source/remote/source.go b/modules/mint/source/remote/source.go index dbe41bc2b..8471e6c59 100644 --- a/modules/mint/source/remote/source.go +++ b/modules/mint/source/remote/source.go @@ -3,9 +3,9 @@ package remote import ( sdk "github.com/cosmos/cosmos-sdk/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" - mintsource "github.com/forbole/bdjuno/v3/modules/mint/source" + mintsource "github.com/forbole/bdjuno/v4/modules/mint/source" ) var ( diff --git a/modules/mint/utils_params.go b/modules/mint/utils_params.go index dbc1b6e43..af4805702 100644 --- a/modules/mint/utils_params.go +++ b/modules/mint/utils_params.go @@ -5,7 +5,7 @@ import ( "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // UpdateParams gets the updated params and stores them inside the database diff --git a/modules/modules/module.go b/modules/modules/module.go index 79801ec8f..ae22fb7c6 100644 --- a/modules/modules/module.go +++ b/modules/modules/module.go @@ -1,10 +1,10 @@ package modules import ( - "github.com/forbole/juno/v3/modules" - "github.com/forbole/juno/v3/types/config" + "github.com/forbole/juno/v5/modules" + "github.com/forbole/juno/v5/types/config" - "github.com/forbole/bdjuno/v3/database" + "github.com/forbole/bdjuno/v4/database" ) var ( diff --git a/modules/nft/account_parser.go b/modules/nft/account_parser.go index 89fbdb1a3..7194d4948 100644 --- a/modules/nft/account_parser.go +++ b/modules/nft/account_parser.go @@ -1,9 +1,10 @@ package nft import ( - "github.com/CoreumFoundation/coreum/v2/x/nft" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/CoreumFoundation/coreum/v3/x/nft" ) // MessagesParser returns the list of all the accounts involved in the given diff --git a/modules/pricefeed/coingecko/apis.go b/modules/pricefeed/coingecko/apis.go index 784dfa742..eedd0f68a 100644 --- a/modules/pricefeed/coingecko/apis.go +++ b/modules/pricefeed/coingecko/apis.go @@ -8,7 +8,7 @@ import ( "net/http" "strings" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // GetCoinsList allows to fetch from the remote APIs the list of all the supported tokens diff --git a/modules/pricefeed/coingecko/apis_test.go b/modules/pricefeed/coingecko/apis_test.go index 6f738a554..5164f6f5a 100644 --- a/modules/pricefeed/coingecko/apis_test.go +++ b/modules/pricefeed/coingecko/apis_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/forbole/bdjuno/v3/modules/pricefeed/coingecko" + "github.com/forbole/bdjuno/v4/modules/pricefeed/coingecko" ) func TestConvertCoingeckoPrices(t *testing.T) { diff --git a/modules/pricefeed/config.go b/modules/pricefeed/config.go index 24c5f5ce2..db3819e86 100644 --- a/modules/pricefeed/config.go +++ b/modules/pricefeed/config.go @@ -3,7 +3,7 @@ package pricefeed import ( "gopkg.in/yaml.v3" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // Config contains the configuration about the pricefeed module diff --git a/modules/pricefeed/handle_additional_operations.go b/modules/pricefeed/handle_additional_operations.go index eaa76c0c2..944a2cbb1 100644 --- a/modules/pricefeed/handle_additional_operations.go +++ b/modules/pricefeed/handle_additional_operations.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" ) diff --git a/modules/pricefeed/handle_periodic_operations.go b/modules/pricefeed/handle_periodic_operations.go index 1bd1f876d..0b893ffa8 100644 --- a/modules/pricefeed/handle_periodic_operations.go +++ b/modules/pricefeed/handle_periodic_operations.go @@ -7,10 +7,10 @@ import ( "github.com/go-co-op/gocron" "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - "github.com/forbole/bdjuno/v3/modules/pricefeed/coingecko" - "github.com/forbole/bdjuno/v3/modules/utils" + "github.com/forbole/bdjuno/v4/modules/pricefeed/coingecko" + "github.com/forbole/bdjuno/v4/modules/utils" ) // RegisterPeriodicOperations implements modules.PeriodicOperationsModule @@ -19,14 +19,14 @@ func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { // Fetch the token prices every 2 mins if _, err := scheduler.Every(2).Minutes().Do(func() { - utils.WatchMethod(m.updatePrice) + utils.WatchMethod(m.UpdatePrice) }); err != nil { return fmt.Errorf("error while setting up pricefeed period operations: %s", err) } // Update the historical token prices every 1 hour if _, err := scheduler.Every(1).Hour().Do(func() { - utils.WatchMethod(m.updatePricesHistory) + utils.WatchMethod(m.UpdatePricesHistory) }); err != nil { return fmt.Errorf("error while setting up history period operations: %s", err) } @@ -56,8 +56,8 @@ func (m *Module) getTokenPrices() ([]types.TokenPrice, error) { return prices, nil } -// updatePrice fetch total amount of coins in the system from RPC and store it into database -func (m *Module) updatePrice() error { +// UpdatePrice fetches the total amount of coins in the system from RPC and stores it in database +func (m *Module) UpdatePrice() error { log.Debug(). Str("module", "pricefeed"). Str("operation", "pricefeed"). @@ -78,9 +78,9 @@ func (m *Module) updatePrice() error { } -// updatePricesHistory fetches total amount of coins in the system from RPC +// UpdatePricesHistory fetches total amount of coins in the system from RPC // and stores historical perice data inside the database -func (m *Module) updatePricesHistory() error { +func (m *Module) UpdatePricesHistory() error { log.Debug(). Str("module", "pricefeed"). Str("operation", "pricefeed"). diff --git a/modules/pricefeed/module.go b/modules/pricefeed/module.go index 58d2f01ae..21b42634c 100644 --- a/modules/pricefeed/module.go +++ b/modules/pricefeed/module.go @@ -2,11 +2,11 @@ package pricefeed import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/juno/v3/types/config" + "github.com/forbole/juno/v5/types/config" - "github.com/forbole/bdjuno/v3/database" + "github.com/forbole/bdjuno/v4/database" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" ) var ( diff --git a/modules/registrar.go b/modules/registrar.go index 6c86b77a9..d433727c5 100644 --- a/modules/registrar.go +++ b/modules/registrar.go @@ -1,38 +1,40 @@ package modules import ( - "github.com/forbole/bdjuno/v3/modules/actions" - "github.com/forbole/bdjuno/v3/modules/types" + "github.com/forbole/bdjuno/v4/modules/actions" + "github.com/forbole/bdjuno/v4/modules/types" - "github.com/forbole/juno/v3/modules/pruning" - "github.com/forbole/juno/v3/modules/telemetry" + "github.com/forbole/juno/v5/modules/pruning" + "github.com/forbole/juno/v5/modules/telemetry" - "github.com/forbole/bdjuno/v3/modules/slashing" + "github.com/forbole/bdjuno/v4/modules/slashing" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - jmodules "github.com/forbole/juno/v3/modules" - "github.com/forbole/juno/v3/modules/messages" - "github.com/forbole/juno/v3/modules/registrar" - - "github.com/forbole/bdjuno/v3/utils" - - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/bdjuno/v3/modules/assetft" - "github.com/forbole/bdjuno/v3/modules/assetnft" - "github.com/forbole/bdjuno/v3/modules/auth" - "github.com/forbole/bdjuno/v3/modules/bank" - "github.com/forbole/bdjuno/v3/modules/consensus" - "github.com/forbole/bdjuno/v3/modules/customparams" - "github.com/forbole/bdjuno/v3/modules/distribution" - "github.com/forbole/bdjuno/v3/modules/feegrant" - "github.com/forbole/bdjuno/v3/modules/feemodel" - "github.com/forbole/bdjuno/v3/modules/gov" - "github.com/forbole/bdjuno/v3/modules/mint" - "github.com/forbole/bdjuno/v3/modules/modules" - "github.com/forbole/bdjuno/v3/modules/pricefeed" - "github.com/forbole/bdjuno/v3/modules/staking" - "github.com/forbole/bdjuno/v3/modules/wasm" + jmodules "github.com/forbole/juno/v5/modules" + "github.com/forbole/juno/v5/modules/messages" + "github.com/forbole/juno/v5/modules/registrar" + + "github.com/forbole/bdjuno/v4/utils" + + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/bdjuno/v4/modules/assetft" + "github.com/forbole/bdjuno/v4/modules/assetnft" + "github.com/forbole/bdjuno/v4/modules/auth" + "github.com/forbole/bdjuno/v4/modules/bank" + "github.com/forbole/bdjuno/v4/modules/consensus" + "github.com/forbole/bdjuno/v4/modules/customparams" + dailyrefetch "github.com/forbole/bdjuno/v4/modules/daily_refetch" + "github.com/forbole/bdjuno/v4/modules/distribution" + "github.com/forbole/bdjuno/v4/modules/feegrant" + "github.com/forbole/bdjuno/v4/modules/feemodel" + "github.com/forbole/bdjuno/v4/modules/gov" + "github.com/forbole/bdjuno/v4/modules/mint" + "github.com/forbole/bdjuno/v4/modules/modules" + "github.com/forbole/bdjuno/v4/modules/pricefeed" + "github.com/forbole/bdjuno/v4/modules/staking" + "github.com/forbole/bdjuno/v4/modules/upgrade" + "github.com/forbole/bdjuno/v4/modules/wasm" ) // UniqueAddressesParser returns a wrapper around the given parser that removes all duplicated addresses @@ -67,7 +69,7 @@ func NewRegistrar(parser messages.MessageAddressesParser) *Registrar { // BuildModules implements modules.Registrar func (r *Registrar) BuildModules(ctx registrar.Context) jmodules.Modules { - cdc := ctx.EncodingConfig.Marshaler + cdc := ctx.EncodingConfig.Codec db := database.Cast(ctx.Database) sources, err := types.BuildSources(ctx.JunoConfig.Node, ctx.EncodingConfig) @@ -79,20 +81,19 @@ func (r *Registrar) BuildModules(ctx registrar.Context) jmodules.Modules { authModule := auth.NewModule(r.parser, cdc, db) bankModule := bank.NewModule(r.parser, sources.BankSource, cdc, db) consensusModule := consensus.NewModule(db) + dailyRefetchModule := dailyrefetch.NewModule(ctx.Proxy, db) distrModule := distribution.NewModule(sources.DistrSource, cdc, db) feegrantModule := feegrant.NewModule(cdc, db) mintModule := mint.NewModule(sources.MintSource, cdc, db) slashingModule := slashing.NewModule(sources.SlashingSource, cdc, db) - stakingModule := staking.NewModule(sources.StakingSource, slashingModule, cdc, db) + stakingModule := staking.NewModule(sources.StakingSource, cdc, db) feeModelModule := feemodel.NewModule(sources.FeeModelSource, cdc, db) customParamsModule := customparams.NewModule(sources.CustomParamsSource, cdc, db) assetFTModule := assetft.NewModule(sources.AssetFTSource, cdc, db) assetNFTModule := assetnft.NewModule(sources.AssetNFTSource, cdc, db) wasmModule := wasm.NewModule(r.parser, cdc, db) - govModule := gov.NewModule( sources.GovSource, - authModule, distrModule, mintModule, slashingModule, @@ -104,6 +105,7 @@ func (r *Registrar) BuildModules(ctx registrar.Context) jmodules.Modules { cdc, db, ) + upgradeModule := upgrade.NewModule(db, stakingModule) return []jmodules.Module{ messages.NewModule(r.parser, cdc, ctx.Database), @@ -114,6 +116,7 @@ func (r *Registrar) BuildModules(ctx registrar.Context) jmodules.Modules { authModule, bankModule, consensusModule, + dailyRefetchModule, distrModule, feegrantModule, govModule, @@ -122,6 +125,7 @@ func (r *Registrar) BuildModules(ctx registrar.Context) jmodules.Modules { pricefeed.NewModule(ctx.JunoConfig, cdc, db), slashingModule, stakingModule, + upgradeModule, feeModelModule, customParamsModule, assetFTModule, diff --git a/modules/slashing/handle_block.go b/modules/slashing/handle_block.go index 2b7f68384..928f83774 100644 --- a/modules/slashing/handle_block.go +++ b/modules/slashing/handle_block.go @@ -3,10 +3,10 @@ package slashing import ( "fmt" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" + tmctypes "github.com/cometbft/cometbft/rpc/core/types" "github.com/rs/zerolog/log" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" ) // HandleBlock implements BlockModule diff --git a/modules/slashing/handle_genesis.go b/modules/slashing/handle_genesis.go index a828f16a2..b5ee5e685 100644 --- a/modules/slashing/handle_genesis.go +++ b/modules/slashing/handle_genesis.go @@ -4,9 +4,9 @@ import ( "encoding/json" "fmt" - tmtypes "github.com/tendermint/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" "github.com/rs/zerolog/log" diff --git a/modules/slashing/module.go b/modules/slashing/module.go index 481670127..70ada3ee8 100644 --- a/modules/slashing/module.go +++ b/modules/slashing/module.go @@ -2,10 +2,10 @@ package slashing import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" - "github.com/forbole/bdjuno/v3/database" - slashingsource "github.com/forbole/bdjuno/v3/modules/slashing/source" + "github.com/forbole/bdjuno/v4/database" + slashingsource "github.com/forbole/bdjuno/v4/modules/slashing/source" ) var ( diff --git a/modules/slashing/source/local/source.go b/modules/slashing/source/local/source.go index e2cf4e179..95271bead 100644 --- a/modules/slashing/source/local/source.go +++ b/modules/slashing/source/local/source.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - "github.com/forbole/juno/v3/node/local" + "github.com/forbole/juno/v5/node/local" - slashingsource "github.com/forbole/bdjuno/v3/modules/slashing/source" + slashingsource "github.com/forbole/bdjuno/v4/modules/slashing/source" ) var ( diff --git a/modules/slashing/source/remote/source.go b/modules/slashing/source/remote/source.go index e85c272ef..89722d2ab 100644 --- a/modules/slashing/source/remote/source.go +++ b/modules/slashing/source/remote/source.go @@ -5,9 +5,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/query" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" - slashingsource "github.com/forbole/bdjuno/v3/modules/slashing/source" + slashingsource "github.com/forbole/bdjuno/v4/modules/slashing/source" ) var ( diff --git a/modules/slashing/utils_params.go b/modules/slashing/utils_params.go index d0103cd2c..1e4c468be 100644 --- a/modules/slashing/utils_params.go +++ b/modules/slashing/utils_params.go @@ -5,7 +5,7 @@ import ( "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // UpdateParams gets the slashing params for the given height, and stores them inside the database diff --git a/modules/slashing/utils_signing_info.go b/modules/slashing/utils_signing_info.go index 39e549e3a..fe07c3154 100644 --- a/modules/slashing/utils_signing_info.go +++ b/modules/slashing/utils_signing_info.go @@ -3,7 +3,7 @@ package slashing import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) func (m *Module) getSigningInfos(height int64) ([]types.ValidatorSigningInfo, error) { diff --git a/modules/staking/expected_modules.go b/modules/staking/expected_modules.go deleted file mode 100644 index 4df6fc484..000000000 --- a/modules/staking/expected_modules.go +++ /dev/null @@ -1,11 +0,0 @@ -package staking - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/forbole/bdjuno/v3/types" -) - -type SlashingModule interface { - GetSigningInfo(height int64, consAddr sdk.ConsAddress) (types.ValidatorSigningInfo, error) -} diff --git a/modules/staking/handle_block.go b/modules/staking/handle_block.go index b6dbcc6a0..741e16b53 100644 --- a/modules/staking/handle_block.go +++ b/modules/staking/handle_block.go @@ -4,14 +4,13 @@ import ( "encoding/hex" "fmt" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" + tmctypes "github.com/cometbft/cometbft/rpc/core/types" + tmtypes "github.com/cometbft/cometbft/types" "github.com/rs/zerolog/log" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" - tmtypes "github.com/tendermint/tendermint/types" ) // HandleBlock implements BlockModule @@ -19,80 +18,30 @@ func (m *Module) HandleBlock( block *tmctypes.ResultBlock, res *tmctypes.ResultBlockResults, _ []*juno.Tx, vals *tmctypes.ResultValidators, ) error { // Update the validators - validators, err := m.updateValidators(block.Block.Height) + _, err := m.updateValidators(block.Block.Height) if err != nil { return fmt.Errorf("error while updating validators: %s", err) } - // Update the voting powers - go m.updateValidatorVotingPower(block.Block.Height, vals) - - // Update the validators statuses - go m.updateValidatorsStatus(block.Block.Height, validators) - // Updated the double sign evidences go m.updateDoubleSignEvidence(block.Block.Height, block.Block.Evidence.Evidence) - // Update the staking pool - go m.updateStakingPool(block.Block.Height) - return nil } -// updateValidatorsStatus updates all validators' statuses -func (m *Module) updateValidatorsStatus(height int64, validators []stakingtypes.Validator) { - log.Debug().Str("module", "staking").Int64("height", height). - Msg("updating validators statuses") - - statuses, err := m.GetValidatorsStatuses(height, validators) - if err != nil { - log.Error().Str("module", "staking").Err(err). - Int64("height", height). - Send() - return - } - - err = m.db.SaveValidatorsStatuses(statuses) - if err != nil { - log.Error().Str("module", "staking").Err(err). - Int64("height", height). - Msg("error while saving validators statuses") - } -} - -// updateValidatorVotingPower fetches and stores into the database all the current validators' voting powers -func (m *Module) updateValidatorVotingPower(height int64, vals *tmctypes.ResultValidators) { - log.Debug().Str("module", "staking").Int64("height", height). - Msg("updating validators voting powers") - - // Get the voting powers - votingPowers, err := m.GetValidatorsVotingPowers(height, vals) - if err != nil { - log.Error().Str("module", "staking").Err(err).Int64("height", height). - Msg("error while getting validators voting powers") - return - } - - // Save all the voting powers - err = m.db.SaveValidatorsVotingPowers(votingPowers) - if err != nil { - log.Error().Str("module", "staking").Err(err).Int64("height", height). - Msg("error while saving validators voting powers") - } -} - // updateDoubleSignEvidence updates the double sign evidence of all validators func (m *Module) updateDoubleSignEvidence(height int64, evidenceList tmtypes.EvidenceList) { log.Debug().Str("module", "staking").Int64("height", height). Msg("updating double sign evidence") + var evidences []types.DoubleSignEvidence for _, ev := range evidenceList { dve, ok := ev.(*tmtypes.DuplicateVoteEvidence) if !ok { continue } - evidence := types.NewDoubleSignEvidence( + evidences = append(evidences, types.NewDoubleSignEvidence( height, types.NewDoubleSignVote( int(dve.VoteA.Type), @@ -112,34 +61,15 @@ func (m *Module) updateDoubleSignEvidence(height int64, evidenceList tmtypes.Evi dve.VoteB.ValidatorIndex, hex.EncodeToString(dve.VoteB.Signature), ), + ), ) - - err := m.db.SaveDoubleSignEvidence(evidence) - if err != nil { - log.Error().Str("module", "staking").Err(err).Int64("height", height). - Msg("error while saving double sign evidence") - return - } - } -} - -// updateStakingPool reads from the LCD the current staking pool and stores its value inside the database -func (m *Module) updateStakingPool(height int64) { - log.Debug().Str("module", "staking").Int64("height", height). - Msg("updating staking pool") - pool, err := m.GetStakingPool(height) + err := m.db.SaveDoubleSignEvidences(evidences) if err != nil { log.Error().Str("module", "staking").Err(err).Int64("height", height). - Msg("error while getting staking pool") + Msg("error while saving double sign evidence") return } - err = m.db.SaveStakingPool(pool) - if err != nil { - log.Error().Str("module", "staking").Err(err).Int64("height", height). - Msg("error while saving staking pool") - return - } } diff --git a/modules/staking/handle_genesis.go b/modules/staking/handle_genesis.go index aef97e9c9..c01f28954 100644 --- a/modules/staking/handle_genesis.go +++ b/modules/staking/handle_genesis.go @@ -6,9 +6,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" - tmtypes "github.com/tendermint/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -132,10 +132,12 @@ func (m *Module) saveValidatorDescription(doc *tmtypes.GenesisDoc, validators st // saveValidatorsCommissions save the initial commission for each validator func (m *Module) saveValidatorsCommissions(height int64, validators stakingtypes.Validators) error { for _, account := range validators { + commissionRate := account.Commission.Rate + minSelfDelegation := account.MinSelfDelegation err := m.db.SaveValidatorCommission(types.NewValidatorCommission( account.OperatorAddress, - &account.Commission.Rate, - &account.MinSelfDelegation, + &commissionRate, + &minSelfDelegation, height, )) if err != nil { diff --git a/modules/staking/handle_msg.go b/modules/staking/handle_msg.go index ffd606bf7..d463a0d17 100644 --- a/modules/staking/handle_msg.go +++ b/modules/staking/handle_msg.go @@ -3,14 +3,20 @@ package staking import ( "fmt" + "github.com/cosmos/cosmos-sdk/x/authz" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" sdk "github.com/cosmos/cosmos-sdk/types" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" ) +// HandleMsgExec implements modules.AuthzMessageModule +func (m *Module) HandleMsgExec(index int, _ *authz.MsgExec, _ int, executedMsg sdk.Msg, tx *juno.Tx) error { + return m.HandleMsg(index, executedMsg, tx) +} + // HandleMsg implements MessageModule -func (m *Module) HandleMsg(index int, msg sdk.Msg, tx *juno.Tx) error { +func (m *Module) HandleMsg(_ int, msg sdk.Msg, tx *juno.Tx) error { if len(tx.Logs) == 0 { return nil } @@ -21,6 +27,19 @@ func (m *Module) HandleMsg(index int, msg sdk.Msg, tx *juno.Tx) error { case *stakingtypes.MsgEditValidator: return m.handleEditValidator(tx.Height, cosmosMsg) + + // update validators statuses, voting power + // and proposals validators satatus snapshots + // when there is a voting power change + case *stakingtypes.MsgDelegate: + return m.UpdateValidatorStatuses() + + case *stakingtypes.MsgBeginRedelegate: + return m.UpdateValidatorStatuses() + + case *stakingtypes.MsgUndelegate: + return m.UpdateValidatorStatuses() + } return nil diff --git a/modules/staking/handle_periodic_operations.go b/modules/staking/handle_periodic_operations.go new file mode 100644 index 000000000..646ca2d2b --- /dev/null +++ b/modules/staking/handle_periodic_operations.go @@ -0,0 +1,55 @@ +package staking + +import ( + "fmt" + + "github.com/go-co-op/gocron" + "github.com/rs/zerolog/log" + + "github.com/forbole/bdjuno/v4/modules/utils" +) + +// RegisterPeriodicOperations implements modules.PeriodicOperationsModule +func (m *Module) RegisterPeriodicOperations(scheduler *gocron.Scheduler) error { + log.Debug().Str("module", "staking").Msg("setting up periodic tasks") + + // Update the staking pool every 5 mins + if _, err := scheduler.Every(5).Minutes().Do(func() { + utils.WatchMethod(m.UpdateStakingPool) + }); err != nil { + return fmt.Errorf("error while scheduling staking pool periodic operation: %s", err) + } + + // refresh proposal validators status snapshots every 5 mins + if _, err := scheduler.Every(5).Minutes().Do(func() { + utils.WatchMethod(m.UpdateValidatorStatuses) + }); err != nil { + return fmt.Errorf("error while setting up gov period operations: %s", err) + } + + return nil +} + +// UpdateStakingPool reads from the LCD the current staking pool and stores its value inside the database +func (m *Module) UpdateStakingPool() error { + block, err := m.db.GetLastBlockHeightAndTimestamp() + if err != nil { + return fmt.Errorf("error while getting latest block height: %s", err) + } + log.Debug().Str("module", "staking").Int64("height", block.Height). + Msg("updating staking pool") + + pool, err := m.GetStakingPool(block.Height) + if err != nil { + return fmt.Errorf("error while getting staking pool: %s", err) + + } + + err = m.db.SaveStakingPool(pool) + if err != nil { + return fmt.Errorf("error while saving staking pool: %s", err) + + } + + return nil +} diff --git a/modules/staking/module.go b/modules/staking/module.go index 9dfb5a926..c92c67350 100644 --- a/modules/staking/module.go +++ b/modules/staking/module.go @@ -2,37 +2,35 @@ package staking import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/juno/v3/modules" + "github.com/forbole/juno/v5/modules" - "github.com/forbole/bdjuno/v3/database" - stakingsource "github.com/forbole/bdjuno/v3/modules/staking/source" + "github.com/forbole/bdjuno/v4/database" + stakingsource "github.com/forbole/bdjuno/v4/modules/staking/source" ) var ( - _ modules.Module = &Module{} - _ modules.GenesisModule = &Module{} - _ modules.BlockModule = &Module{} - _ modules.MessageModule = &Module{} + _ modules.Module = &Module{} + _ modules.GenesisModule = &Module{} + _ modules.BlockModule = &Module{} + _ modules.MessageModule = &Module{} + _ modules.PeriodicOperationsModule = &Module{} ) // Module represents the x/staking module type Module struct { - cdc codec.Codec - db *database.Db - source stakingsource.Source - slashingModule SlashingModule + cdc codec.Codec + db *database.Db + source stakingsource.Source } // NewModule returns a new Module instance func NewModule( - source stakingsource.Source, slashingModule SlashingModule, - cdc codec.Codec, db *database.Db, + source stakingsource.Source, cdc codec.Codec, db *database.Db, ) *Module { return &Module{ - cdc: cdc, - db: db, - source: source, - slashingModule: slashingModule, + cdc: cdc, + db: db, + source: source, } } diff --git a/modules/staking/source/local/source.go b/modules/staking/source/local/source.go index 7b630b1d7..d1d1825fb 100644 --- a/modules/staking/source/local/source.go +++ b/modules/staking/source/local/source.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/forbole/juno/v3/node/local" + "github.com/forbole/juno/v5/node/local" - stakingsource "github.com/forbole/bdjuno/v3/modules/staking/source" + stakingsource "github.com/forbole/bdjuno/v4/modules/staking/source" ) var ( diff --git a/modules/staking/source/remote/source.go b/modules/staking/source/remote/source.go index 7089620c2..dd1d51fa7 100644 --- a/modules/staking/source/remote/source.go +++ b/modules/staking/source/remote/source.go @@ -5,9 +5,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/query" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" - stakingsource "github.com/forbole/bdjuno/v3/modules/staking/source" + stakingsource "github.com/forbole/bdjuno/v4/modules/staking/source" ) var ( diff --git a/modules/staking/source/remote/source_actions.go b/modules/staking/source/remote/source_actions.go index 8fa9ad817..3af79ff51 100644 --- a/modules/staking/source/remote/source_actions.go +++ b/modules/staking/source/remote/source_actions.go @@ -3,9 +3,9 @@ package remote import ( "github.com/cosmos/cosmos-sdk/types/query" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/forbole/juno/v3/node/remote" + "github.com/forbole/juno/v5/node/remote" - "github.com/forbole/bdjuno/v3/utils" + "github.com/forbole/bdjuno/v4/utils" ) // GetDelegationsWithPagination implements stakingsource.Source diff --git a/modules/staking/utils_gentx.go b/modules/staking/utils_gentx.go index 9b2200e4c..42726c63b 100644 --- a/modules/staking/utils_gentx.go +++ b/modules/staking/utils_gentx.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/forbole/bdjuno/v3/modules/staking/keybase" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/modules/staking/keybase" + "github.com/forbole/bdjuno/v4/types" ) // StoreValidatorFromMsgCreateValidator handles properly a MsgCreateValidator instance by diff --git a/modules/staking/utils_params.go b/modules/staking/utils_params.go index 1558597c8..eff89883c 100644 --- a/modules/staking/utils_params.go +++ b/modules/staking/utils_params.go @@ -5,7 +5,7 @@ import ( "github.com/rs/zerolog/log" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/types" ) // UpdateParams gets the updated params and stores them inside the database diff --git a/modules/staking/utils_staking_pool.go b/modules/staking/utils_staking_pool.go index 21991fce9..3cc64cbbf 100644 --- a/modules/staking/utils_staking_pool.go +++ b/modules/staking/utils_staking_pool.go @@ -3,7 +3,11 @@ package staking import ( "fmt" - "github.com/forbole/bdjuno/v3/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + "github.com/forbole/bdjuno/v4/types" ) func (m *Module) GetStakingPool(height int64) (*types.Pool, error) { @@ -12,5 +16,58 @@ func (m *Module) GetStakingPool(height int64) (*types.Pool, error) { return nil, fmt.Errorf("error while getting staking pool: %s", err) } - return types.NewPool(pool.BondedTokens, pool.NotBondedTokens, height), nil + validatorsList, err := m.db.GetValidators() + if err != nil { + return nil, fmt.Errorf("error while getting validators list: %s", err) + } + + var unbondingTokens = sdk.NewInt(0) + + for _, validator := range validatorsList { + // get list of all unbonding delegations for each validator + unbondingDelegations := m.getTotalUnbondingDelegationsFromValidator(height, validator.GetOperator()) + if len(unbondingDelegations) > 0 { + // calculate total value of unbonding tokens + for _, unbonding := range unbondingDelegations { + for _, entry := range unbonding.Entries { + unbondingTokens = unbondingTokens.Add(entry.Balance) + } + } + } + + } + + // calculate total value of staked tokens that are not bonded + stakedNotBondedTokens := pool.NotBondedTokens.Sub(unbondingTokens) + + return types.NewPool(pool.BondedTokens, pool.NotBondedTokens, unbondingTokens, stakedNotBondedTokens, height), nil +} + +func (m *Module) GetStakingPoolSnapshot(height int64) (*types.PoolSnapshot, error) { + pool, err := m.source.GetPool(height) + if err != nil { + return nil, fmt.Errorf("error while getting staking pool snapshot: %s", err) + } + + return types.NewPoolSnapshot(pool.BondedTokens, pool.NotBondedTokens, height), nil +} + +func (m *Module) getTotalUnbondingDelegationsFromValidator(height int64, valOperatorAddress string) []stakingtypes.UnbondingDelegation { + var unbondingDelegations []stakingtypes.UnbondingDelegation + var nextKey []byte + var stop = false + for !stop { + res, err := m.source.GetUnbondingDelegationsFromValidator(height, + valOperatorAddress, + &query.PageRequest{Key: nextKey}, + ) + if err != nil { + return []stakingtypes.UnbondingDelegation{} + } + + nextKey = res.Pagination.NextKey + stop = len(res.Pagination.NextKey) == 0 + unbondingDelegations = append(unbondingDelegations, res.UnbondingResponses...) + } + return unbondingDelegations } diff --git a/modules/staking/utils_validators.go b/modules/staking/utils_validators.go index 575bed236..30ae17f40 100644 --- a/modules/staking/utils_validators.go +++ b/modules/staking/utils_validators.go @@ -2,15 +2,9 @@ package staking import ( "fmt" - "strings" - "google.golang.org/grpc/codes" - - juno "github.com/forbole/juno/v3/types" - tmctypes "github.com/tendermint/tendermint/rpc/core/types" - - "github.com/forbole/bdjuno/v3/modules/staking/keybase" - "github.com/forbole/bdjuno/v3/types" + "github.com/forbole/bdjuno/v4/modules/staking/keybase" + "github.com/forbole/bdjuno/v4/types" "github.com/rs/zerolog/log" @@ -83,6 +77,25 @@ func (m *Module) convertValidatorDescription( // -------------------------------------------------------------------------------------------------------------------- +// RefreshAllValidatorInfos refreshes the info of all the validators at the given height +func (m *Module) RefreshAllValidatorInfos(height int64) error { + // Get all validators + validators, err := m.source.GetValidatorsWithStatus(height, "") + if err != nil { + return fmt.Errorf("error while getting validators: %s", err) + } + + // Refresh each validator + for _, validator := range validators { + err = m.RefreshValidatorInfos(height, validator.OperatorAddress) + if err != nil { + return fmt.Errorf("error while refreshing validator: %s", err) + } + } + + return nil +} + // RefreshValidatorInfos refreshes the info for the validator with the given operator address at the provided height func (m *Module) RefreshValidatorInfos(height int64, valOper string) error { stakingValidator, err := m.source.GetValidator(height, valOper) @@ -176,17 +189,11 @@ func (m *Module) GetValidatorsStatuses(height int64, validators []stakingtypes.V return nil, fmt.Errorf("error while getting validator consensus public key: %s", err) } - valSigningInfo, err := m.slashingModule.GetSigningInfo(height, consAddr) - if err != nil && !strings.Contains(err.Error(), codes.NotFound.String()) { - return nil, fmt.Errorf("error while getting validator signing info: %s", err) - } - statuses[index] = types.NewValidatorStatus( consAddr.String(), consPubKey.String(), int(validator.GetStatus()), validator.IsJailed(), - valSigningInfo.Tombstoned, height, ) } @@ -194,35 +201,120 @@ func (m *Module) GetValidatorsStatuses(height int64, validators []stakingtypes.V return statuses, nil } -func (m *Module) GetValidatorsVotingPowers(height int64, vals *tmctypes.ResultValidators) ([]types.ValidatorVotingPower, error) { - stakingVals, _, err := m.getValidators(height) +// UpdateValidatorStatuses allows to update validators status, voting power +// and active proposals validator status snapshots +func (m *Module) UpdateValidatorStatuses() error { + // get the latest block height from db + block, err := m.db.GetLastBlockHeightAndTimestamp() if err != nil { - return nil, err + return fmt.Errorf("error while getting latest block height from db: %s", err) } - votingPowers := make([]types.ValidatorVotingPower, len(stakingVals)) - for index, validator := range stakingVals { - // Get the validator consensus address + validators, _, err := m.GetValidatorsWithStatus(block.Height, stakingtypes.Bonded.String()) + if err != nil { + return fmt.Errorf("error while getting validators with bonded status: %s", err) + } + + // update validators status and voting power in database + err = m.updateValidatorStatusAndVP(block.Height, validators) + if err != nil { + return fmt.Errorf("error while updating validators status and voting power: %s", err) + } + + // get all active proposals IDs from db + ids, err := m.db.GetOpenProposalsIds(block.BlockTimestamp) + if err != nil { + return fmt.Errorf("error while getting open proposals ids: %s", err) + } + + // update validator status snapshots for all proposals IDs + // returned from database + for _, id := range ids { + // update validator status snapshot for given height and proposal ID + err = m.updateProposalValidatorStatusSnapshot(block.Height, id, validators) + if err != nil { + return fmt.Errorf("error while updating proposal validator status snapshots: %s", err) + } + } + + return nil +} + +// updateProposalValidatorStatusSnapshot updates validators snapshot for +// the proposal having the given id +func (m *Module) updateProposalValidatorStatusSnapshot( + height int64, proposalID uint64, validators []stakingtypes.Validator) error { + snapshots := make([]types.ProposalValidatorStatusSnapshot, len(validators)) + + for index, validator := range validators { consAddr, err := validator.GetConsAddr() if err != nil { - return nil, err + return err } - // Find the voting power of this validator - var votingPower int64 = 0 - for _, blockVal := range vals.Validators { - blockValConsAddr := juno.ConvertValidatorAddressToBech32String(blockVal.Address) - if blockValConsAddr == consAddr.String() { - votingPower = blockVal.VotingPower - } + snapshots[index] = types.NewProposalValidatorStatusSnapshot( + proposalID, + consAddr.String(), + validator.Tokens.Int64(), + validator.Status, + validator.Jailed, + height, + ) + } + + log.Debug().Str("module", "staking").Msg("refreshing proposal validator statuses snapshots") + + return m.db.SaveProposalValidatorsStatusesSnapshots(snapshots) +} + +// updateValidatorStatusAndVP updates validators status +// and validators voting power +func (m *Module) updateValidatorStatusAndVP(height int64, validators []stakingtypes.Validator) error { + votingPowers := make([]types.ValidatorVotingPower, len(validators)) + statuses := make([]types.ValidatorStatus, len(validators)) + + for index, validator := range validators { + consAddr, err := validator.GetConsAddr() + if err != nil { + return err } if found, _ := m.db.HasValidator(consAddr.String()); !found { continue } - votingPowers[index] = types.NewValidatorVotingPower(consAddr.String(), votingPower, height) + consPubKey, err := m.getValidatorConsPubKey(validator) + if err != nil { + return err + } + + votingPowers[index] = types.NewValidatorVotingPower(consAddr.String(), validator.Tokens.Int64(), height) + + statuses[index] = types.NewValidatorStatus( + consAddr.String(), + consPubKey.String(), + int(validator.GetStatus()), + validator.IsJailed(), + height, + ) + } + + log.Debug().Str("module", "staking").Msg("refreshing validator voting power") + // Save validators voting powers in db + err := m.db.SaveValidatorsVotingPowers(votingPowers) + if err != nil { + log.Error().Str("module", "staking").Err(err).Int64("height", height). + Msg("error while saving validators voting powers") + } + + log.Debug().Str("module", "staking").Msg("refreshing validator statuses") + // Save validators statuses in db + err = m.db.SaveValidatorsStatuses(statuses) + if err != nil { + log.Error().Str("module", "staking").Err(err). + Int64("height", height). + Msg("error while saving validators statuses") } - return votingPowers, nil + return nil } diff --git a/modules/types/sources.go b/modules/types/sources.go index 3c943e0a6..106a53e9b 100644 --- a/modules/types/sources.go +++ b/modules/types/sources.go @@ -4,53 +4,52 @@ import ( "fmt" "os" - "github.com/cosmos/cosmos-sdk/simapp" - "github.com/tendermint/tendermint/libs/log" + "cosmossdk.io/simapp" + "cosmossdk.io/simapp/params" + "github.com/cometbft/cometbft/libs/log" + "github.com/forbole/juno/v5/node/remote" - "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/forbole/juno/v3/node/remote" - - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" - customparamstypes "github.com/CoreumFoundation/coreum/v2/x/customparams/types" - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - assetftsource "github.com/forbole/bdjuno/v3/modules/assetft/source" - assetnftsource "github.com/forbole/bdjuno/v3/modules/assetnft/source" - "github.com/forbole/juno/v3/node/local" - - nodeconfig "github.com/forbole/juno/v3/node/config" - - remoteassetftsource "github.com/forbole/bdjuno/v3/modules/assetft/source/remote" - remoteassetnftsource "github.com/forbole/bdjuno/v3/modules/assetnft/source/remote" - banksource "github.com/forbole/bdjuno/v3/modules/bank/source" - localbanksource "github.com/forbole/bdjuno/v3/modules/bank/source/local" - remotebanksource "github.com/forbole/bdjuno/v3/modules/bank/source/remote" - customparamssource "github.com/forbole/bdjuno/v3/modules/customparams/source" - remotecustomparamssource "github.com/forbole/bdjuno/v3/modules/customparams/source/remote" - distrsource "github.com/forbole/bdjuno/v3/modules/distribution/source" - localdistrsource "github.com/forbole/bdjuno/v3/modules/distribution/source/local" - remotedistrsource "github.com/forbole/bdjuno/v3/modules/distribution/source/remote" - feemodelsource "github.com/forbole/bdjuno/v3/modules/feemodel/source" - remotefeemodelsource "github.com/forbole/bdjuno/v3/modules/feemodel/source/remote" - govsource "github.com/forbole/bdjuno/v3/modules/gov/source" - localgovsource "github.com/forbole/bdjuno/v3/modules/gov/source/local" - remotegovsource "github.com/forbole/bdjuno/v3/modules/gov/source/remote" - mintsource "github.com/forbole/bdjuno/v3/modules/mint/source" - localmintsource "github.com/forbole/bdjuno/v3/modules/mint/source/local" - remotemintsource "github.com/forbole/bdjuno/v3/modules/mint/source/remote" - slashingsource "github.com/forbole/bdjuno/v3/modules/slashing/source" - localslashingsource "github.com/forbole/bdjuno/v3/modules/slashing/source/local" - remoteslashingsource "github.com/forbole/bdjuno/v3/modules/slashing/source/remote" - stakingsource "github.com/forbole/bdjuno/v3/modules/staking/source" - localstakingsource "github.com/forbole/bdjuno/v3/modules/staking/source/local" - remotestakingsource "github.com/forbole/bdjuno/v3/modules/staking/source/remote" + assetftsource "github.com/forbole/bdjuno/v4/modules/assetft/source" + assetnftsource "github.com/forbole/bdjuno/v4/modules/assetnft/source" + "github.com/forbole/juno/v5/node/local" + + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" + customparamstypes "github.com/CoreumFoundation/coreum/v3/x/customparams/types" + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" + + nodeconfig "github.com/forbole/juno/v5/node/config" + + remoteassetftsource "github.com/forbole/bdjuno/v4/modules/assetft/source/remote" + remoteassetnftsource "github.com/forbole/bdjuno/v4/modules/assetnft/source/remote" + banksource "github.com/forbole/bdjuno/v4/modules/bank/source" + localbanksource "github.com/forbole/bdjuno/v4/modules/bank/source/local" + remotebanksource "github.com/forbole/bdjuno/v4/modules/bank/source/remote" + customparamssource "github.com/forbole/bdjuno/v4/modules/customparams/source" + remotecustomparamssource "github.com/forbole/bdjuno/v4/modules/customparams/source/remote" + distrsource "github.com/forbole/bdjuno/v4/modules/distribution/source" + remotedistrsource "github.com/forbole/bdjuno/v4/modules/distribution/source/remote" + feemodelsource "github.com/forbole/bdjuno/v4/modules/feemodel/source" + remotefeemodelsource "github.com/forbole/bdjuno/v4/modules/feemodel/source/remote" + govsource "github.com/forbole/bdjuno/v4/modules/gov/source" + localgovsource "github.com/forbole/bdjuno/v4/modules/gov/source/local" + remotegovsource "github.com/forbole/bdjuno/v4/modules/gov/source/remote" + mintsource "github.com/forbole/bdjuno/v4/modules/mint/source" + localmintsource "github.com/forbole/bdjuno/v4/modules/mint/source/local" + remotemintsource "github.com/forbole/bdjuno/v4/modules/mint/source/remote" + slashingsource "github.com/forbole/bdjuno/v4/modules/slashing/source" + localslashingsource "github.com/forbole/bdjuno/v4/modules/slashing/source/local" + remoteslashingsource "github.com/forbole/bdjuno/v4/modules/slashing/source/remote" + stakingsource "github.com/forbole/bdjuno/v4/modules/staking/source" + localstakingsource "github.com/forbole/bdjuno/v4/modules/staking/source/local" + remotestakingsource "github.com/forbole/bdjuno/v4/modules/staking/source/remote" ) type Sources struct { @@ -85,14 +84,13 @@ func buildLocalSources(cfg *local.Details, encodingConfig *params.EncodingConfig } app := simapp.NewSimApp( - log.NewTMLogger(log.NewSyncWriter(os.Stdout)), source.StoreDB, nil, true, map[int64]bool{}, - cfg.Home, 0, simapp.MakeTestEncodingConfig(), simapp.EmptyAppOptions{}, + log.NewTMLogger(log.NewSyncWriter(os.Stdout)), source.StoreDB, nil, true, nil, nil, ) sources := &Sources{ - BankSource: localbanksource.NewSource(source, banktypes.QueryServer(app.BankKeeper)), - DistrSource: localdistrsource.NewSource(source, distrtypes.QueryServer(app.DistrKeeper)), - GovSource: localgovsource.NewSource(source, govtypes.QueryServer(app.GovKeeper)), + BankSource: localbanksource.NewSource(source, banktypes.QueryServer(app.BankKeeper)), + // DistrSource: localdistrsource.NewSource(source, distrtypes.QueryServer(app.DistrKeeper)), + GovSource: localgovsource.NewSource(source, govtypesv1.QueryServer(app.GovKeeper)), MintSource: localmintsource.NewSource(source, minttypes.QueryServer(app.MintKeeper)), SlashingSource: localslashingsource.NewSource(source, slashingtypes.QueryServer(app.SlashingKeeper)), StakingSource: localstakingsource.NewSource(source, stakingkeeper.Querier{Keeper: app.StakingKeeper}), @@ -131,7 +129,7 @@ func buildRemoteSources(cfg *remote.Details) (*Sources, error) { return &Sources{ BankSource: remotebanksource.NewSource(source, banktypes.NewQueryClient(source.GrpcConn)), DistrSource: remotedistrsource.NewSource(source, distrtypes.NewQueryClient(source.GrpcConn)), - GovSource: remotegovsource.NewSource(source, govtypes.NewQueryClient(source.GrpcConn)), + GovSource: remotegovsource.NewSource(source, govtypesv1.NewQueryClient(source.GrpcConn)), MintSource: remotemintsource.NewSource(source, minttypes.NewQueryClient(source.GrpcConn)), SlashingSource: remoteslashingsource.NewSource(source, slashingtypes.NewQueryClient(source.GrpcConn)), StakingSource: remotestakingsource.NewSource(source, stakingtypes.NewQueryClient(source.GrpcConn)), diff --git a/modules/upgrade/expected_modules.go b/modules/upgrade/expected_modules.go new file mode 100644 index 000000000..1ee349204 --- /dev/null +++ b/modules/upgrade/expected_modules.go @@ -0,0 +1,5 @@ +package upgrade + +type StakingModule interface { + RefreshAllValidatorInfos(height int64) error +} diff --git a/modules/upgrade/handle_block.go b/modules/upgrade/handle_block.go new file mode 100644 index 000000000..c5ca62fd8 --- /dev/null +++ b/modules/upgrade/handle_block.go @@ -0,0 +1,45 @@ +package upgrade + +import ( + "fmt" + + "github.com/forbole/juno/v5/types" + + tmctypes "github.com/cometbft/cometbft/rpc/core/types" +) + +// HandleBlock implements modules.Module +func (m *Module) HandleBlock( + b *tmctypes.ResultBlock, _ *tmctypes.ResultBlockResults, _ []*types.Tx, _ *tmctypes.ResultValidators, +) error { + err := m.refreshDataUponSoftwareUpgrade(b.Block.Height) + if err != nil { + return fmt.Errorf("error while refreshing data upon software upgrade: %s", err) + } + + return nil +} + +func (m *Module) refreshDataUponSoftwareUpgrade(height int64) error { + exist, err := m.db.CheckSoftwareUpgradePlan(height) + if err != nil { + return fmt.Errorf("error while checking software upgrade plan existence: %s", err) + } + if !exist { + return nil + } + + // Refresh validator infos + err = m.stakingModule.RefreshAllValidatorInfos(height) + if err != nil { + return fmt.Errorf("error while refreshing validator infos upon software upgrade: %s", err) + } + + // Delete plan after refreshing data + err = m.db.TruncateSoftwareUpgradePlan(height) + if err != nil { + return fmt.Errorf("error while truncating software upgrade plan: %s", err) + } + + return nil +} diff --git a/modules/upgrade/module.go b/modules/upgrade/module.go new file mode 100644 index 000000000..463c3fa18 --- /dev/null +++ b/modules/upgrade/module.go @@ -0,0 +1,31 @@ +package upgrade + +import ( + "github.com/forbole/bdjuno/v4/database" + + "github.com/forbole/juno/v5/modules" +) + +var ( + _ modules.Module = &Module{} + _ modules.BlockModule = &Module{} +) + +// Module represents the x/upgrade module +type Module struct { + db *database.Db + stakingModule StakingModule +} + +// NewModule builds a new Module instance +func NewModule(db *database.Db, stakingModule StakingModule) *Module { + return &Module{ + stakingModule: stakingModule, + db: db, + } +} + +// Name implements modules.Module +func (m *Module) Name() string { + return "upgrade" +} diff --git a/modules/utils/addresses_test.go b/modules/utils/addresses_test.go index 0c3ac8ec5..303f78141 100644 --- a/modules/utils/addresses_test.go +++ b/modules/utils/addresses_test.go @@ -3,7 +3,7 @@ package utils_test import ( "testing" - "github.com/forbole/bdjuno/v3/modules/utils" + "github.com/forbole/bdjuno/v4/modules/utils" "github.com/stretchr/testify/require" ) diff --git a/modules/utils/time.go b/modules/utils/time.go new file mode 100644 index 000000000..e52cfedcd --- /dev/null +++ b/modules/utils/time.go @@ -0,0 +1,17 @@ +package utils + +import ( + "time" +) + +func AreTimesEqual(first *time.Time, second *time.Time) bool { + if first == nil && second == nil { + return true + } + + if first == nil || second == nil { + return false + } + + return first.Equal(*second) +} diff --git a/modules/wasm/handle_msg.go b/modules/wasm/handle_msg.go index 684015e35..1b368f64f 100644 --- a/modules/wasm/handle_msg.go +++ b/modules/wasm/handle_msg.go @@ -4,11 +4,11 @@ import ( "strings" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" + tmtypes "github.com/cometbft/cometbft/abci/types" sdk "github.com/cosmos/cosmos-sdk/types" - juno "github.com/forbole/juno/v3/types" + juno "github.com/forbole/juno/v5/types" "github.com/gogo/protobuf/proto" "github.com/samber/lo" - tmtypes "github.com/tendermint/tendermint/abci/types" ) // HandleMsg implements MessageModule diff --git a/modules/wasm/module.go b/modules/wasm/module.go index 6a528e49f..46c12e231 100644 --- a/modules/wasm/module.go +++ b/modules/wasm/module.go @@ -2,9 +2,9 @@ package wasm import ( "github.com/cosmos/cosmos-sdk/codec" - "github.com/forbole/bdjuno/v3/database" - "github.com/forbole/juno/v3/modules" - junomessages "github.com/forbole/juno/v3/modules/messages" + "github.com/forbole/bdjuno/v4/database" + "github.com/forbole/juno/v5/modules" + junomessages "github.com/forbole/juno/v5/modules/messages" ) var ( diff --git a/testutils/time.go b/testutils/time.go new file mode 100644 index 000000000..64bd9d401 --- /dev/null +++ b/testutils/time.go @@ -0,0 +1,13 @@ +package testutils + +import ( + "time" +) + +func NewDurationPointer(duration time.Duration) *time.Duration { + return &duration +} + +func NewTimePointer(time time.Time) *time.Time { + return &time +} diff --git a/tools/tools.go b/tools/tools.go new file mode 100644 index 000000000..939aaabba --- /dev/null +++ b/tools/tools.go @@ -0,0 +1,12 @@ +//go:build tools +// +build tools + +// This file uses the recommended method for tracking developer tools in a Go +// module. +// +// REF: https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module +package tools + +import ( + _ "github.com/golangci/golangci-lint/cmd/golangci-lint" +) diff --git a/types/assetft.go b/types/assetft.go index 61c5c5ef2..28bb6e838 100644 --- a/types/assetft.go +++ b/types/assetft.go @@ -1,7 +1,7 @@ package types import ( - assetfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/ft/types" + assetfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/ft/types" ) // AssetFTParams represents the parameters of the x/asset/ft module diff --git a/types/assetnft.go b/types/assetnft.go index 34932b918..937ebf563 100644 --- a/types/assetnft.go +++ b/types/assetnft.go @@ -1,7 +1,7 @@ package types import ( - assetnfttypes "github.com/CoreumFoundation/coreum/v2/x/asset/nft/types" + assetnfttypes "github.com/CoreumFoundation/coreum/v3/x/asset/nft/types" ) // AssetNFTParams represents the parameters of the x/asset/nft module diff --git a/types/config/config.go b/types/config/config.go index 187c22269..d7dcb24b6 100644 --- a/types/config/config.go +++ b/types/config/config.go @@ -1,22 +1,22 @@ package config import ( - initcmd "github.com/forbole/juno/v3/cmd/init" - junoconfig "github.com/forbole/juno/v3/types/config" + initcmd "github.com/forbole/juno/v5/cmd/init" + junoconfig "github.com/forbole/juno/v5/types/config" "github.com/spf13/cobra" "gopkg.in/yaml.v3" - "github.com/forbole/bdjuno/v3/modules/actions" + "github.com/forbole/bdjuno/v4/modules/actions" ) // Config represents the BDJuno configuration type Config struct { JunoConfig junoconfig.Config `yaml:"-,inline"` - ActionsConfig actions.Config `yaml:"actions"` + ActionsConfig *actions.Config `yaml:"actions"` } // NewConfig returns a new Config instance -func NewConfig(junoCfg junoconfig.Config, actionsCfg actions.Config) Config { +func NewConfig(junoCfg junoconfig.Config, actionsCfg *actions.Config) Config { return Config{ JunoConfig: junoCfg, ActionsConfig: actionsCfg, diff --git a/types/config/encoding.go b/types/config/encoding.go index 76b393743..7549bb29a 100644 --- a/types/config/encoding.go +++ b/types/config/encoding.go @@ -1,7 +1,7 @@ package config import ( - "github.com/cosmos/cosmos-sdk/simapp/params" + "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/std" "github.com/cosmos/cosmos-sdk/types/module" ) diff --git a/types/feemodel.go b/types/feemodel.go index 6de2d3b13..fa40e20ff 100644 --- a/types/feemodel.go +++ b/types/feemodel.go @@ -1,7 +1,7 @@ package types import ( - feemodeltypes "github.com/CoreumFoundation/coreum/v2/x/feemodel/types" + feemodeltypes "github.com/CoreumFoundation/coreum/v3/x/feemodel/types" ) // FeeModelParams represents the parameters of the x/feemodel module diff --git a/types/gov.go b/types/gov.go index af186687f..7836d2136 100644 --- a/types/gov.go +++ b/types/gov.go @@ -3,73 +3,27 @@ package types import ( "time" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) const ( ProposalStatusInvalid = "PROPOSAL_STATUS_INVALID" - ProposalStatusPassed = "PROPOSAL_STATUS_PASSED" ) -// DepositParams contains the data of the deposit parameters of the x/gov module -type DepositParams struct { - MinDeposit sdk.Coins `json:"min_deposit,omitempty" yaml:"min_deposit"` - MaxDepositPeriod int64 `json:"max_deposit_period,omitempty" yaml:"max_deposit_period"` -} - -// NewDepositParam allows to build a new DepositParams -func NewDepositParam(d govtypes.DepositParams) DepositParams { - return DepositParams{ - MinDeposit: d.MinDeposit, - MaxDepositPeriod: d.MaxDepositPeriod.Nanoseconds(), - } -} - -// VotingParams contains the voting parameters of the x/gov module -type VotingParams struct { - VotingPeriod int64 `json:"voting_period,omitempty" yaml:"voting_period"` -} - -// NewVotingParams allows to build a new VotingParams instance -func NewVotingParams(v govtypes.VotingParams) VotingParams { - return VotingParams{ - VotingPeriod: v.VotingPeriod.Nanoseconds(), - } -} - // GovParams contains the data of the x/gov module parameters type GovParams struct { - DepositParams DepositParams `json:"deposit_params" yaml:"deposit_params"` - VotingParams VotingParams `json:"voting_params" yaml:"voting_params"` - TallyParams TallyParams `json:"tally_params" yaml:"tally_params"` - Height int64 `json:"height" ymal:"height"` + *govtypesv1.Params + Height int64 `json:"height" ymal:"height"` } -// TallyParams contains the tally parameters of the x/gov module -type TallyParams struct { - Quorum sdk.Dec `json:"quorum,omitempty"` - Threshold sdk.Dec `json:"threshold,omitempty"` - VetoThreshold sdk.Dec `json:"veto_threshold,omitempty" yaml:"veto_threshold"` -} - -// NewTallyParams allows to build a new TallyParams instance -func NewTallyParams(t govtypes.TallyParams) TallyParams { - return TallyParams{ - Quorum: t.Quorum, - Threshold: t.Threshold, - VetoThreshold: t.VetoThreshold, - } -} - -// NewGovParams allows to build a new GovParams instance -func NewGovParams(votingParams VotingParams, depositParams DepositParams, tallyParams TallyParams, height int64) *GovParams { +func NewGovParams(params *govtypesv1.Params, height int64) *GovParams { return &GovParams{ - DepositParams: depositParams, - VotingParams: votingParams, - TallyParams: tallyParams, - Height: height, + Params: params, + Height: height, } } @@ -77,36 +31,39 @@ func NewGovParams(votingParams VotingParams, depositParams DepositParams, tallyP // Proposal represents a single governance proposal type Proposal struct { - ProposalRoute string - ProposalType string - ProposalID uint64 - Content govtypes.Content + ID uint64 + Title string + Summary string + Metadata string + Messages []*codectypes.Any Status string SubmitTime time.Time DepositEndTime time.Time - VotingStartTime time.Time - VotingEndTime time.Time + VotingStartTime *time.Time + VotingEndTime *time.Time Proposer string } // NewProposal return a new Proposal instance func NewProposal( proposalID uint64, - proposalRoute string, - proposalType string, - content govtypes.Content, + title string, + summary string, + metadata string, + messages []*codectypes.Any, status string, submitTime time.Time, depositEndTime time.Time, - votingStartTime time.Time, - votingEndTime time.Time, + votingStartTime *time.Time, + votingEndTime *time.Time, proposer string, ) Proposal { return Proposal{ - Content: content, - ProposalRoute: proposalRoute, - ProposalType: proposalType, - ProposalID: proposalID, + ID: proposalID, + Title: title, + Summary: summary, + Metadata: metadata, + Messages: messages, Status: status, SubmitTime: submitTime, DepositEndTime: depositEndTime, @@ -116,32 +73,16 @@ func NewProposal( } } -// Equal tells whether p and other contain the same data -func (p Proposal) Equal(other Proposal) bool { - return p.ProposalRoute == other.ProposalRoute && - p.ProposalType == other.ProposalType && - p.ProposalID == other.ProposalID && - p.Content.String() == other.Content.String() && - p.Status == other.Status && - p.SubmitTime.Equal(other.SubmitTime) && - p.DepositEndTime.Equal(other.DepositEndTime) && - p.VotingStartTime.Equal(other.VotingStartTime) && - p.VotingEndTime.Equal(other.VotingEndTime) && - p.Proposer == other.Proposer -} - // ProposalUpdate contains the data that should be used when updating a governance proposal type ProposalUpdate struct { ProposalID uint64 Status string - VotingStartTime time.Time - VotingEndTime time.Time + VotingStartTime *time.Time + VotingEndTime *time.Time } // NewProposalUpdate allows to build a new ProposalUpdate instance -func NewProposalUpdate( - proposalID uint64, status string, votingStartTime, votingEndTime time.Time, -) ProposalUpdate { +func NewProposalUpdate(proposalID uint64, status string, votingStartTime, votingEndTime *time.Time) ProposalUpdate { return ProposalUpdate{ ProposalID: proposalID, Status: status, @@ -154,10 +95,12 @@ func NewProposalUpdate( // Deposit contains the data of a single deposit made towards a proposal type Deposit struct { - ProposalID uint64 - Depositor string - Amount sdk.Coins - Height int64 + ProposalID uint64 + Depositor string + Amount sdk.Coins + Timestamp time.Time + TransactionHash string + Height int64 } // NewDeposit return a new Deposit instance @@ -165,13 +108,17 @@ func NewDeposit( proposalID uint64, depositor string, amount sdk.Coins, + timestamp time.Time, + transactionHash string, height int64, ) Deposit { return Deposit{ - ProposalID: proposalID, - Depositor: depositor, - Amount: amount, - Height: height, + ProposalID: proposalID, + Depositor: depositor, + Amount: amount, + Timestamp: timestamp, + TransactionHash: transactionHash, + Height: height, } } @@ -181,7 +128,9 @@ func NewDeposit( type Vote struct { ProposalID uint64 Voter string - Option govtypes.VoteOption + Option govtypesv1.VoteOption + Weight string + Timestamp time.Time Height int64 } @@ -189,13 +138,17 @@ type Vote struct { func NewVote( proposalID uint64, voter string, - option govtypes.VoteOption, + option govtypesv1.VoteOption, + weight string, + timestamp time.Time, height int64, ) Vote { return Vote{ ProposalID: proposalID, Voter: voter, Option: option, + Weight: weight, + Timestamp: timestamp, Height: height, } } @@ -236,11 +189,11 @@ func NewTallyResult( // ProposalStakingPoolSnapshot contains the data about a single staking pool snapshot to be associated with a proposal type ProposalStakingPoolSnapshot struct { ProposalID uint64 - Pool *Pool + Pool *PoolSnapshot } // NewProposalStakingPoolSnapshot returns a new ProposalStakingPoolSnapshot instance -func NewProposalStakingPoolSnapshot(proposalID uint64, pool *Pool) ProposalStakingPoolSnapshot { +func NewProposalStakingPoolSnapshot(proposalID uint64, pool *PoolSnapshot) ProposalStakingPoolSnapshot { return ProposalStakingPoolSnapshot{ ProposalID: proposalID, Pool: pool, @@ -255,7 +208,7 @@ type ProposalValidatorStatusSnapshot struct { ProposalID uint64 ValidatorConsAddress string ValidatorVotingPower int64 - ValidatorStatus int + ValidatorStatus stakingtypes.BondStatus ValidatorJailed bool Height int64 } @@ -265,7 +218,7 @@ func NewProposalValidatorStatusSnapshot( proposalID uint64, validatorConsAddr string, validatorVotingPower int64, - validatorStatus int, + validatorStatus stakingtypes.BondStatus, validatorJailed bool, height int64, ) ProposalValidatorStatusSnapshot { diff --git a/types/staking_pool_params.go b/types/staking_pool_params.go index ced553090..ca6e5cab7 100644 --- a/types/staking_pool_params.go +++ b/types/staking_pool_params.go @@ -1,20 +1,40 @@ package types import ( - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) // Pool contains the data of the staking pool at the given height type Pool struct { - BondedTokens sdk.Int - NotBondedTokens sdk.Int - Height int64 + BondedTokens sdkmath.Int + NotBondedTokens sdkmath.Int + UnbondingTokens sdkmath.Int + StakedNotBondedTokens sdkmath.Int + Height int64 } // NewPool allows to build a new Pool instance -func NewPool(bondedTokens, notBondedTokens sdk.Int, height int64) *Pool { +func NewPool(bondedTokens, notBondedTokens, unbondingTokens, stakedNotBondedTokens sdkmath.Int, height int64) *Pool { return &Pool{ + BondedTokens: bondedTokens, + NotBondedTokens: notBondedTokens, + UnbondingTokens: unbondingTokens, + StakedNotBondedTokens: stakedNotBondedTokens, + Height: height, + } +} + +// PoolSnapshot contains the data of the staking pool snapshot at the given height +type PoolSnapshot struct { + BondedTokens sdkmath.Int + NotBondedTokens sdkmath.Int + Height int64 +} + +// NewPoolSnapshot allows to build a new PoolSnapshot instance +func NewPoolSnapshot(bondedTokens, notBondedTokens sdkmath.Int, height int64) *PoolSnapshot { + return &PoolSnapshot{ BondedTokens: bondedTokens, NotBondedTokens: notBondedTokens, Height: height, diff --git a/types/staking_validator.go b/types/staking_validator.go index 2c03e7338..b90498543 100644 --- a/types/staking_validator.go +++ b/types/staking_validator.go @@ -147,18 +147,16 @@ type ValidatorStatus struct { ConsensusPubKey string Status int Jailed bool - Tombstoned bool Height int64 } // NewValidatorStatus creates a new ValidatorVotingPower -func NewValidatorStatus(valConsAddr, pubKey string, status int, jailed bool, tombstoned bool, height int64) ValidatorStatus { +func NewValidatorStatus(valConsAddr, pubKey string, status int, jailed bool, height int64) ValidatorStatus { return ValidatorStatus{ ConsensusAddress: valConsAddr, ConsensusPubKey: pubKey, Status: status, Jailed: jailed, - Tombstoned: tombstoned, Height: height, } } diff --git a/utils/genesis.go b/utils/genesis.go index 326591f04..5023f0c0a 100644 --- a/utils/genesis.go +++ b/utils/genesis.go @@ -3,11 +3,11 @@ package utils import ( "fmt" - "github.com/forbole/juno/v3/node" - "github.com/forbole/juno/v3/types/config" - tmjson "github.com/tendermint/tendermint/libs/json" - tmos "github.com/tendermint/tendermint/libs/os" - tmtypes "github.com/tendermint/tendermint/types" + tmjson "github.com/cometbft/cometbft/libs/json" + tmos "github.com/cometbft/cometbft/libs/os" + tmtypes "github.com/cometbft/cometbft/types" + "github.com/forbole/juno/v5/node" + "github.com/forbole/juno/v5/types/config" ) // ReadGenesis reads the genesis data based on the given config diff --git a/utils/node.go b/utils/node.go index e4de56247..2c56a1354 100644 --- a/utils/node.go +++ b/utils/node.go @@ -3,8 +3,8 @@ package utils import ( "fmt" - "github.com/forbole/juno/v3/node" - coretypes "github.com/tendermint/tendermint/rpc/core/types" + coretypes "github.com/cometbft/cometbft/rpc/core/types" + "github.com/forbole/juno/v5/node" ) // QueryTxs queries all the transactions from the given node corresponding to the given query